SQL = "Delete * From NEWS Where NEWS_ID=@Key"===============================>SQL = "Delete * From NEWS Where NEWS_ID=?"

解决方案 »

  1.   

    为什么要自己写调用删除的过程而不用系统自动生成的呢?跟踪的sql语句对吗?
      

  2.   

    SQL = "Delete * From NEWS Where NEWS_ID=@Key"===============================>SQL = "Delete * From NEWS Where NEWS_ID=?"
    这里没看懂,王兄能讲讲吗?多谢!
      

  3.   

    SQL = "Delete * From NEWS Where NEWS_ID=" + MyGrid.DataKeys(E.Item.ItemIndex);
      

  4.   

    如果 CommandType 设置为 Text,OLE DB .NET 提供程序不支持将参数传递给 OleDbCommand 调用的 SQL 语句或存储过程的命名参数。在这种情况下,必须使用问号 (?) 占位符。例如:SELECT * FROM Customers WHERE CustomerID = ?因此,OleDbParameter 对象添加到 OleDbParameterCollection 的顺序必须直接对应于该参数的问号占位符的位置。
      

  5.   

    好象你的delete语句写错了吧??
    Delete * from ......////"Delete from Customers where CustomerID=@CustomerID"
      

  6.   

    你把CommandName="DeleteData" 改成CommandName="Delete"试一下!
      

  7.   

    Sub DeleteData(sender As Object, E As DataGridCommandEventArgs)
    Dim Conn As OleDbConnection
    Dim connstr As String

    Dim Cmd As OleDbCommand
    Dim SQL As String connstr=ConfigurationSettings.AppSettings("connstring")
    Conn=New OleDbConnection(connstr)
    Conn.Open() SQL = "Delete * From NEWS Where NEWS_ID=@Key"
    Cmd = New OleDbCommand( SQL, Conn ) Cmd.Parameters.Add(New OleDbParameter("@Key", OleDbType.Integer))
    Cmd.Parameters("@Key").Value = MyGrid.DataKeys(E.Item.ItemIndex) Cmd.ExecuteNonQuery()
    Conn.Close()
    End Sub
    /////////////////////////////////////////////////////////////SQL = "Delete  From NEWS Where NEWS_ID=@Key"你这个sub在哪里用的呀????
      

  8.   

    Sub DeleteData(sender As Object, E As DataGridCommandEventArgs)
    有问题没有句柄啊
    把 里面的程序写道DataGrid的ItemCommand事件中
      

  9.   

    你的方法应该没问题,重要的是你的sub放在哪里.你的"删除"按钮在哪里.先设置断点在
    Cmd.Parameters("@Key").Value = MyGrid.DataKeys(E.Item.ItemIndex)
    看E.Item.ItemIndex是什么值.
    一般是在datagrid加一列编辑列
    在datagrid的ItemCommand事件里调用你的sub.
    想找该行的第几列的值就设置i(i是从0开始的)
     CStr(e.Item.Cells(i).Text)