討論區快速選單
知識庫快速選單
軟體開發過程中有哪些資安漏洞? 傑米的攝影旅遊筆記 網路投保旅行平安險
[ 回上頁 ] [ 討論區發言規則 ]
按下刪除沒有反應
更改我的閱讀文章字型大小
作者 : beautyjoe1234(藍眼喵)
[ 貼文 10 | 人氣 1518 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/4/21 下午 10:57:34
請問一下
我這段 刪除 的語法是哪裡有錯誤呢?
因為按下刪除後,資料沒有被刪除, 依然還是在原來的位置上!!!
(以下是使用 ms access + vb.net 1.1 )
(這隻程式是拿來做 新增刪修 目前只有"刪除"不能正常運作! 其餘運作正常! )

以下這段是刪除的程式碼

   Sub DeleteData(sender As Object, e As DataGridCommandEventArgs)
     Dim Conn2 As OleDbConnection
     Dim Cmd2 As OleDbCommand
     Dim SQL2 As String

     Dim Provider = "Provider=Microsoft.Jet.OLEDB.4.0"
     Dim Database = "Data Source=" & Server.MapPath( "Sample.mdb" )
     Conn2 = New OleDbConnection( Provider & ";" & DataBase )
     Conn2.Open()
    
     SQL2 = "delete 成績單 Set 學號=@學號, 姓名=@姓名 Where 學號=@Key"
     Cmd2 = New OleDbCommand( SQL2, Conn2 )

     Cmd2.Parameters.Add( New OleDbParameter("@學號", OleDbType.Integer))
     Cmd2.Parameters.Add( New OleDbParameter("@姓名", OleDbType.Char, 10))
     Cmd2.Parameters.Add( New OleDbParameter("@Key", OleDbType.Integer))

     Dim TB(5) As TextBox
     TB(1) = e.Item.Cells(1).Controls(0) ' 學號 TextBox
     TB(2) = e.Item.Cells(2).Controls(0) ' 姓名 TextBox


     Cmd2.Parameters("@Key").Value = MyGrid.DataKeys(e.Item.ItemIndex)
     Cmd2.Parameters("@學號").Value = Val(TB(1).Text)
     Cmd2.Parameters("@姓名").Value = TB(2).Text
     Cmd2.ExecuteNonQuery()
 
     Conn2.Close()

     MyGrid.EditItemIndex = -1
     OpenDataBase_And_BindToDataGrid()

     End Sub




<<< 其他字因為這頁塞不下 所以我自己先回一篇! >>>
作者 : beautyjoe1234(藍眼喵)
[ 貼文 10 | 人氣 1518 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/4/21 下午 11:10:15
以下這是全部的程式碼
< 以下程式碼請存成 xx.aspx >
<%@ Import Namespace="System.Data.OleDb" %>
<%@ Import Namespace="System.Data" %>
<%@ Page %>
<HTML>
<script Language="VB" runat="server">

   Sub OpenDataBase_And_BindToDataGrid()
     Dim Conn As OleDbConnection
     Dim Adpt As OleDbDataAdapter
     Dim Ds As DataSet
     Dim Provider = "Provider=Microsoft.Jet.OLEDB.4.0"
     Dim Database = "Data Source=" & Server.MapPath( "Sample.mdb" )
     Conn = New OleDbConnection( Provider & ";" & DataBase )
     Conn.Open()
     Dim SQL = "Select * From 成績單"
     Adpt = New OleDbDataAdapter( SQL, Conn )
     Ds = New Dataset()
     Adpt.Fill(Ds, "成績單")
     MyGrid.DataSource = Ds.Tables("成績單").DefaultView
     MyGrid.DataBind()
     Conn.Close()
   End Sub

   Sub Page_Load(sender As Object, e As EventArgs)
     If Not IsPostBack Then
     OpenDataBase_And_BindToDataGrid()
     End If
   End Sub

   Sub EditData(sender As Object, e As DataGridCommandEventArgs)
     MyGrid.EditItemIndex = e.Item.ItemIndex
     OpenDataBase_And_BindToDataGrid()
   End Sub

   Sub CancelEdit(sender As Object, e As DataGridCommandEventArgs)
     MyGrid.EditItemIndex = -1
     OpenDataBase_And_BindToDataGrid()
   End Sub

  

<<< 未完 但因超過字數限制所以只好再發一篇 >>>
作者 : beautyjoe1234(藍眼喵)
[ 貼文 10 | 人氣 1518 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/4/21 下午 11:12:15
<<<接上篇未完的源碼>>>>

Sub UpdateData(sender As Object, e As DataGridCommandEventArgs)
     Dim Conn As OleDbConnection
     Dim Cmd As OleDbCommand
     Dim SQL As String
     Dim Provider = "Provider=Microsoft.Jet.OLEDB.4.0"
     Dim Database = "Data Source=" & Server.MapPath( "Sample.mdb" )
     Conn = New OleDbConnection( Provider & ";" & DataBase )
     Conn.Open()
    
     SQL = "Update 成績單 Set 學號=@學號, 姓名=@姓名, 國文=@國文, 英文=@英文, 數學=@數學 Where 學號=@Key"
     Cmd = New OleDbCommand( SQL, Conn )

     Cmd.Parameters.Add( New OleDbParameter("@學號", OleDbType.Integer))
     Cmd.Parameters.Add( New OleDbParameter("@姓名", OleDbType.Char, 10))
     Cmd.Parameters.Add( New OleDbParameter("@國文", OleDbType.SmallInt))
     Cmd.Parameters.Add( New OleDbParameter("@英文", OleDbType.SmallInt))
     Cmd.Parameters.Add( New OleDbParameter("@數學", OleDbType.SmallInt))
     Cmd.Parameters.Add( New OleDbParameter("@Key", OleDbType.Integer))

     Dim TB(5) As TextBox
     TB(1) = e.Item.Cells(1).Controls(0) ' 學號 TextBox
     TB(2) = e.Item.Cells(2).Controls(0) ' 姓名 TextBox
     TB(3) = e.Item.Cells(3).Controls(0) ' 國文 TextBox
     TB(4) = e.Item.Cells(4).Controls(0) ' 英文 TextBox
     TB(5) = e.Item.Cells(5).Controls(0) ' 數學 TextBox
     Cmd.Parameters("@Key").Value = MyGrid.DataKeys(e.Item.ItemIndex)
     Cmd.Parameters("@學號").Value = Val(TB(1).Text)
     Cmd.Parameters("@姓名").Value = TB(2).Text
     Cmd.Parameters("@國文").Value = Val(TB(3).Text)
     Cmd.Parameters("@英文").Value = Val(TB(4).Text)
     Cmd.Parameters("@數學").Value = Val(TB(5).Text)
     Cmd.ExecuteNonQuery()
     Conn.Close()
     MyGrid.EditItemIndex = -1
     OpenDataBase_And_BindToDataGrid()
   End Sub

  <<<字數限制 所以只好再發一篇 未完待續>>>
作者 : beautyjoe1234(藍眼喵)
[ 貼文 10 | 人氣 1518 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/4/21 下午 11:13:24
<<<接上篇未完的源碼>>>>
 Sub DeleteData(sender As Object, e As DataGridCommandEventArgs)
     Dim Conn2 As OleDbConnection
     Dim Cmd2 As OleDbCommand
     Dim SQL2 As String
     Dim Provider = "Provider=Microsoft.Jet.OLEDB.4.0"
     Dim Database = "Data Source=" & Server.MapPath( "Sample.mdb" )
     Conn2 = New OleDbConnection( Provider & ";" & DataBase )
     Conn2.Open()
     SQL2 = "delete 成績單 Set 學號=@學號, 姓名=@姓名 Where 學號=@Key"
     Cmd2 = New OleDbCommand( SQL2, Conn2 )
     Cmd2.Parameters.Add( New OleDbParameter("@學號", OleDbType.Integer))
     Cmd2.Parameters.Add( New OleDbParameter("@姓名", OleDbType.Char, 10))
     Cmd2.Parameters.Add( New OleDbParameter("@Key", OleDbType.Integer))
     Dim TB(5) As TextBox
     TB(1) = e.Item.Cells(1).Controls(0) ' 學號 TextBox
     TB(2) = e.Item.Cells(2).Controls(0) ' 姓名 TextBox
     Cmd2.Parameters("@Key").Value = MyGrid.DataKeys(e.Item.ItemIndex)
     Cmd2.Parameters("@學號").Value = Val(TB(1).Text)
     Cmd2.Parameters("@姓名").Value = TB(2).Text
     Cmd2.ExecuteNonQuery()
     Conn2.Close()
     MyGrid.EditItemIndex = -1
     OpenDataBase_And_BindToDataGrid()
     End Sub
</script><Body BgColor="white"><H3>Update02.aspx -- 基本架構, 加入修改 刪除 功能<HR</H3><Center><Form runat="server">
<asp:DataGrid runat="server" id="MyGrid" HeaderStyle-BackColor="#AAAADD" AlternatingItemStyle-BackColor="#FFFFC0" BorderColor="Black" CellPadding="2" OnEditCommand="EditData" OnUpdateCommand="UpdateData"
OnCancelCommand="CancelEdit" DataKeyField="學號" Width="331px">
<HeaderStyle BackColor="#AAAADD"></HeaderStyle><Columns>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" HeaderText="修改" CancelText="取消" EditText="編輯"><ItemStyle Wrap="False"></ItemStyle></asp:EditCommandColumn><asp:ButtonColumn Text="刪除" HeaderText="刪除" CommandName="Delete"></asp:ButtonColumn>
</Columns></asp:DataGrid></Form><p><Center><HR></Center></Center></Body></HTML>
作者 : regionbbs(小朱)技術副站長 VB.Net曠世奇才SQL Server 7/2K卓越專家.Net Framework優秀好手C#曠世奇才ASP.Net一代宗師ADO.Net卓越專家貼文超過6000則人氣指數超過70000點
[ 貼文 6372 | 人氣 82299 | 評價 36440 | 評價/貼文 5.72 | 送出評價 59 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/4/21 下午 11:45:10
這種語法可以過我隨便你。

delete 成績單 Set 學號=@學號, 姓名=@姓名 Where 學號=@Key
作者 : beautyjoe1234(藍眼喵)
[ 貼文 10 | 人氣 1518 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/4/22 上午 11:11:53

>delete 成績單 Set 學號=@學號, 姓名=@姓名 Where 學號=@Key

可是如果改成
delete 成績單 Where 學號=@Key
或是
delete * from 成績單 Where 學號=@Key

也還是一樣沒有反應!

作者 : regionbbs(小朱)技術副站長 VB.Net曠世奇才SQL Server 7/2K卓越專家.Net Framework優秀好手C#曠世奇才ASP.Net一代宗師ADO.Net卓越專家貼文超過6000則人氣指數超過70000點
[ 貼文 6372 | 人氣 82299 | 評價 36440 | 評價/貼文 5.72 | 送出評價 59 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/4/22 下午 12:12:10
用這樣呢:

DELETE FROM ... WHERE ...
作者 : beautyjoe1234(藍眼喵)
[ 貼文 10 | 人氣 1518 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/4/22 下午 12:22:23
你說的這個 我剛剛也有試了
結果還是不行 >.<
作者 : regionbbs(小朱)技術副站長 VB.Net曠世奇才SQL Server 7/2K卓越專家.Net Framework優秀好手C#曠世奇才ASP.Net一代宗師ADO.Net卓越專家貼文超過6000則人氣指數超過70000點
[ 貼文 6372 | 人氣 82299 | 評價 36440 | 評價/貼文 5.72 | 送出評價 59 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/4/22 下午 01:11:02
你把 SQL 拿到 Access 上跑可以過嗎?
把你的 DELETE SQL 輸出來看看(要帶實際的參數值)。
作者 : beautyjoe1234(藍眼喵)
[ 貼文 10 | 人氣 1518 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/4/22 下午 01:27:18

>你把 SQL 拿到 Access 上跑可以過嗎?
>把你的 DELETE SQL 輸出來看看(要帶實際的參數值)。

那個 DELETE SQL 拿到 Access上跑可以過!
作者 : beautyjoe1234(藍眼喵)
[ 貼文 10 | 人氣 1518 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/4/22 下午 01:36:39
to regionbbs(小朱)

抱歉問這種超基本蠢問題!
但是我自己找了好多本書,辜狗了好多天還是找不出答案!
嗚嗚嗚~~

拜託您指導ㄧ下!
作者 : regionbbs(小朱)技術副站長 VB.Net曠世奇才SQL Server 7/2K卓越專家.Net Framework優秀好手C#曠世奇才ASP.Net一代宗師ADO.Net卓越專家貼文超過6000則人氣指數超過70000點
[ 貼文 6372 | 人氣 82299 | 評價 36440 | 評價/貼文 5.72 | 送出評價 59 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人beautyjoe1234註記此篇回應為最佳解答 2008/4/22 下午 03:09:55
可以過就是你程式的問題啦。
像是參數沒套進去。

我還碰過一種就是不知道連到哪個資料庫(資料庫結構和內容相同),刪了 A 資料庫的資料,然後說為什麼 B 資料庫的資料沒被刪掉。
作者 : beautyjoe1234(藍眼喵)
[ 貼文 10 | 人氣 1518 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/4/22 下午 07:23:25
那我再踹一下好了
謝謝您的解答
作者 : lichun(薄荷)
[ 貼文 19 | 人氣 727 | 評價 140 | 評價/貼文 7.37 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/6/12 上午 10:46:22
現在回應該是太晚了,不過我想回覆一下讓大家分享
你的DataGrid如下:

<asp:DataGrid runat="server" id="MyGrid" HeaderStyle-BackColor="#AAAADD" AlternatingItemStyle-BackColor="#FFFFC0" BorderColor="Black" CellPadding="2" OnEditCommand="EditData" OnUpdateCommand="UpdateData"
OnCancelCommand="CancelEdit" DataKeyField="學號" Width="331px">

裡面只有OnEditCommand、OnUpdateCommand、OnCancelCommand,沒有OnDeleteCommand,按下去當然就沒反應囉。

以上
 板主 : 小朱
 > ADO.NET - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - ADO.NET - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
ADO.NET
1 小朱 1520 
2 識丁 280 
3 吳馨琳 270 
4 小台 180 
5 Snaking 140 
6 mark 140 
7 好說 120 
8 ammon 100 
9 toyboy 70 
10 再見男人 50 
ADO.NET
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
7.763672E-02