佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 829|回复: 8

delete不到database records(参考www.asp101.com的sample做的)

[复制链接]
发表于 6-5-2007 10:36 PM | 显示全部楼层 |阅读模式

<%@ Page Language="VB" %>
<%@ Import Namespace="System.Data.OleDb" %>
<%@ Import Namespace="System.Data" %>
<HTML>
    <script language="VB" runat="server">

    Sub Page_Load(Sender As Object, E As EventArgs)
        Dim objConn As New oleDbConnection
objConn.C
        objConn.ConnectionString+= "Data Source= " & Server.MapPath("Account.mdb"
        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 * 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 No=" & OP.DataKeys(E.Item.ItemIndex) & ";"

        objCommand = New OleDbCommand(strSQLQuery, objConn)
        objConn.Open()
        objCommand.ExecuteNonQuery()
        objConn.Close()
        ShowDataGrid()

    End Sub

   
    </script>
    <body>
        <form runat="server" ID="Form1">
            <aspataGrid id="OP" runat="server"  DataKeyField="No">
                <Columns>
                    <asp:ButtonColumn Text="Delete" CommandName="Delete"></asp:ButtonColumn>
                </Columns>
            </aspataGrid>
        </form>
        <p>
        </p>
    </body>
</HTML>

[ 本帖最后由 wcchyau 于 7-5-2007 12:29 AM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 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 | 显示全部楼层
原帖由 goatstudio 于 7-5-2007 02:58 PM 发表
有没有错误讯息?可以的话把你的 strSQLQuery  打印出来最好。


完全没有错误讯息,按了delete后什么都没发生。
打印strSQLQuery是指这个吗?


还是table?
回复

使用道具 举报

发表于 8-5-2007 12:27 AM | 显示全部楼层
你用 1.1 还是 2.0 ?

对不起
我用C#习惯了
非常不习惯 VB

主要还是看error message

  1.     protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)        Dim objCommand As oleDbCommand
  2.         Dim strSQLQuery As String
  3. connstring = "Data Source= " & Server.MapPath("Account.mdb"

  4.         Dim objConn As New oleDbConnection(connstring)
  5. objConn.Open()

  6.         strSQLQuery = "DELETE FROM ordered WHERE No=?"

  7.         objCommand = New OleDbCommand()
  8. objCommand.CommandText = strSQLQuery
  9. objCommand.Connection = objConn

  10. objCommand.Parameters.Add("?ID",Oledbtype.int)
  11. objCommand.Parameters["?ID"].value = OP.DataKeys[e.RowIndex].Value


  12.         objConn.Open()
  13.         objCommand.ExecuteNonQuery()
  14.         objConn.Close()
  15.         ShowDataGrid()

  16.     End Sub

  17.    
  18.     </script>
  19.     <body>
  20.         <form runat="server" ID="Form1">
  21.             <aspataGrid id="OP" runat="server"  DataKeyNames="No" OnRowDeleting="GridView1_RowDeleting">
  22.                 <Columns>
  23.         <aspommandField  ShowDeleteButton="True"/>
  24.                     <asp:ButtonColumn Text="Delete" CommandName="Delete"></asp:ButtonColumn>
  25.                 </Columns>
  26.             </aspataGrid>
  27.         </form>
  28.         <p>
  29.         </p>
  30.     </body>
  31. </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 编辑 ]
回复

使用道具 举报

Follow Us
发表于 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 的吧!


  1. Sub Delete(source As Object, E As DataGridCommandEventArgs)
  2. Dim objCommand As oleDbCommand
  3. Dim strSQLQuery As String
  4. Dim objConn As New oleDbConnection
  5. objConn.C
  6. objConn.ConnectionString+= "Data Source= " & Server.MapPath("Account.mdb")

  7. objConn.Open()
  8. strSQLQuery = "DELETE FROM ordered WHERE No=@ID"
  9. objCommand = New OleDbCommand()
  10. objCommand.CommandText = strSQLQuery
  11. objCommand.Connection = objConn
  12. objCommand.Parameters.Add("@ID",Oledbtype.integer)
  13. objCommand.Parameters["@ID"].value = OP.DataKeys[e.RowIndex].Value
  14. objConn.Open()
  15. objCommand.ExecuteNonQuery()
  16. objConn.Close()
  17. ShowDataGrid()
  18. End Sub


复制代码

[ 本帖最后由 quantum^_^ 于 8-5-2007 11:07 AM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 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">
            <aspataGrid id="OP" runat="server"  DataKeyField="ID">
                <Columns>
                    <asp:ButtonColumn Text="Delete" CommandName="Delete"></asp:ButtonColumn>
                </Columns>
            </aspataGrid>
        </form>
        <p>
        </p>
    </body>

只将database里ordered table的datatype autonumber 的 fieldname "No"改成"ID",然后就行了。
谢谢大家的帮忙,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 9-7-2025 08:39 PM , Processed in 0.132929 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表