查看: 829|回复: 8
|
delete不到database records(参考www.asp101.com的sample做的)
[复制链接]
|
|

楼主 |
发表于 6-5-2007 10:38 PM
|
显示全部楼层
database是显示出来了,但按delete时却不能像sample般把record delete掉
strSQLQuery = "DELETE FROM ordered WHERE No=" & OP.DataKeys(E.Item.ItemIndex) & ";"
感觉上是这行code的问题,但却不知为什么。
能否给些指教呢?谢谢 |
|
|
|
|
|
|
|
发表于 7-5-2007 02:58 PM
|
显示全部楼层
有没有错误讯息?可以的话把你的 strSQLQuery 打印出来最好。 |
|
|
|
|
|
|
|

楼主 |
发表于 7-5-2007 06:20 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 8-5-2007 12:27 AM
|
显示全部楼层
你用 1.1 还是 2.0 ?
对不起
我用C#习惯了
非常不习惯 VB
主要还是看error message
- protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) Dim objCommand As oleDbCommand
- Dim strSQLQuery As String
- connstring = "Data Source= " & Server.MapPath("Account.mdb"
- Dim objConn As New oleDbConnection(connstring)
- objConn.Open()
- strSQLQuery = "DELETE FROM ordered WHERE No=?"
- objCommand = New OleDbCommand()
- objCommand.CommandText = strSQLQuery
- objCommand.Connection = objConn
- objCommand.Parameters.Add("?ID",Oledbtype.int)
- objCommand.Parameters["?ID"].value = OP.DataKeys[e.RowIndex].Value
- objConn.Open()
- objCommand.ExecuteNonQuery()
- objConn.Close()
- ShowDataGrid()
- End Sub
-
- </script>
- <body>
- <form runat="server" ID="Form1">
- <aspataGrid id="OP" runat="server" DataKeyNames="No" OnRowDeleting="GridView1_RowDeleting">
- <Columns>
- <aspommandField ShowDeleteButton="True"/>
- <asp:ButtonColumn Text="Delete" CommandName="Delete"></asp:ButtonColumn>
- </Columns>
- </aspataGrid>
- </form>
- <p>
- </p>
- </body>
- </HTML>
复制代码 |
|
|
|
|
|
|
|

楼主 |
发表于 8-5-2007 01:27 AM
|
显示全部楼层
Sub Delete(source As Object, E As DataGridCommandEventArgs)
Dim objCommand As oleDbCommand
Dim strSQLQuery As String
Dim objConn As New oleDbConnection
objConn.C
objConn.ConnectionString+= "Data Source= " & Server.MapPath("Account.mdb")
objConn.Open()
strSQLQuery = "DELETE FROM ordered WHERE No=?"
objCommand = New OleDbCommand()
objCommand.CommandText = strSQLQuery
objCommand.Connection = objConn
objCommand.Parameters.Add("?ID",Oledbtype.integer)
objCommand.Parameters["?ID"].value = OP.DataKeys[e.RowIndex].Value
objConn.Open()
objCommand.ExecuteNonQuery()
objConn.Close()
ShowDataGrid()
End Sub
Compiler Error Message: BC30545: Property access must assign to the property or use its value.
以楼上方式做得话出现以下error message....不知我有没有改错
[ 本帖最后由 wcchyau 于 8-5-2007 01:29 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 8-5-2007 09:16 AM
|
显示全部楼层
原帖由 wcchyau 于 7-5-2007 06:20 PM 发表
完全没有错误讯息,按了delete后什么都没发生。
打印strSQLQuery是指这个吗?
不是,我的意思是这行:
strSQLQuery = "DELETE FROM ordered WHERE No=" & OP.DataKeys(E.Item.ItemIndex) & ";"
在执行的时候显示 strSQLQuery 的 value, 好让我们知道执行了怎么样的 sql. |
|
|
|
|
|
|
|
发表于 8-5-2007 11:04 AM
|
显示全部楼层
感觉你的 syntac 跟我不一样
你用 asp.net 1.1 的吧!
- Sub Delete(source As Object, E As DataGridCommandEventArgs)
- Dim objCommand As oleDbCommand
- Dim strSQLQuery As String
- Dim objConn As New oleDbConnection
- objConn.C
- objConn.ConnectionString+= "Data Source= " & Server.MapPath("Account.mdb")
- objConn.Open()
- strSQLQuery = "DELETE FROM ordered WHERE No=@ID"
- objCommand = New OleDbCommand()
- objCommand.CommandText = strSQLQuery
- objCommand.Connection = objConn
- objCommand.Parameters.Add("@ID",Oledbtype.integer)
- objCommand.Parameters["@ID"].value = OP.DataKeys[e.RowIndex].Value
- objConn.Open()
- objCommand.ExecuteNonQuery()
- objConn.Close()
- ShowDataGrid()
- End Sub
-
复制代码
[ 本帖最后由 quantum^_^ 于 8-5-2007 11:07 AM 编辑 ] |
|
|
|
|
|
|
|

楼主 |
发表于 8-5-2007 12:16 PM
|
显示全部楼层
没问题了,没问题了,
这是最后发现的error message
DataBinding: 'System.Data.Common.DbDataRecord' does not contain a property with the name 'No'.
Exception Details: System.Web.HttpException: DataBinding: 'System.Data.Common.DbDataRecord' does not contain a property with the name 'No'.
然后将coding改成这样就能执行了。有点误打误撞的感觉。
Sub Page_Load(Sender As Object, E As EventArgs)
ShowDataGrid()
End Sub
Sub ShowDataGrid()
Dim objCommand As oleDbCommand
Dim strSQLQuery As String
Dim objConn As New oleDbConnection
objConn.C
objConn.ConnectionString+= "Data Source= " & Server.MapPath("Account.mdb"
strSQLQuery = "SELECT ID, MID, Product1, Quantity1,Product2,Quantity2,Product3,Quantity3,Payment,CCnumber " & _ "FROM ordered"
objCommand = New OleDbCommand(strSQLQuery, objConn)
objConn.Open() OP.DataSource = objCommand.ExecuteReader(CommandBehavior.CloseConnection)
OP.DataBind()
objConn.Close()
End Sub
Sub Delete(source As Object, E As DataGridCommandEventArgs)
Dim objCommand As oleDbCommand
Dim strSQLQuery As String
Dim objConn As New oleDbConnection
objConn.C
objConn.ConnectionString+= "Data Source= " & Server.MapPath("Account.mdb"
strSQLQuery = "DELETE FROM ordered WHERE ID =" & OP.DataKeys(E.Item.ItemIndex) & ";"
objCommand = New OleDbCommand(strSQLQuery, objConn)
objConn.Open()
objCommand.ExecuteNonQuery()
objConn.Close()
ShowDataGrid()
End Sub
<body>
<form runat="server" ID="Form1">
<asp ataGrid id="OP" runat="server" DataKeyField="ID">
<Columns>
<asp:ButtonColumn Text="Delete" CommandName="Delete"></asp:ButtonColumn>
</Columns>
</asp ataGrid>
</form>
<p>
</p>
</body>
只将database里ordered table的datatype autonumber 的 fieldname "No"改成"ID",然后就行了。
谢谢大家的帮忙,谢谢! |
|
|
|
|
|
|
| |
本周最热论坛帖子
|