【问题标题】:Delete record from a datagrid view从数据网格视图中删除记录
【发布时间】:2017-05-12 11:31:54
【问题描述】:

请帮助我。我在创建的支票打印系统中添加了一个删除方法,在它运行良好之前,但是当我从各自的表中将字段 Check_Number 的数据类型从 text 更改为 number 时,它是不再删除我选择的数据行。我不记得从删除部分更改任何代码。你们知道如何解决这个问题吗?先感谢您。更强大!

不同的 Bank_[BankName] 有 ff 字段和数据类型:

ID - AutoNumber 
Check_Number - Number
Company_ID - Text

我的VN_ZAM 表有 ff 字段和数据类型:

ID - AutoNumber
Voucher_Number - Number
Check_Number - Text
Bank_Type - Text
Company_ID - Text   

我的SS 表有 ff 字段和数据类型(这也是数据网格视图中数据的来源):

ID - AutoNumber
Check_No - Text
Voucher_No - Text
Issue_Date - Date/Time
Company_Name - Text
Bank_Type - Text 
Amount_in_Figure - Number
Amount_in_Words - Text
Payee - Text

我的 datagridview 订单如下所示:

ID | Check_No | Voucher_No | Issue_Date | Company_Name |Bank_Type | Amount_in_Figure | Amount_in_Words | Payee

.

Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click
    Dim provider As String
    Dim dataFile As String
    Dim connString As String
    Dim myConnection As OleDbConnection = New OleDbConnection
    Dim sql As String
    Dim sql1 As String
    Dim sql2 As String
    Dim answer As Integer

    answer = MsgBox("Are you sure you want to delete this record?", vbYesNo + vbDefaultButton1, "Information")
    'If answer = vbYes Then
    provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source ="
    dataFile = "C:\Users\Pc\Documents\Visual Studio 2010\Projects\bankCheckSystem\dbcheckprintsystem.accdb"
    connString = provider & dataFile
    myConnection.ConnectionString = connString
    myConnection.Open()
    sql = "DELETE * FROM SS WHERE ID =" & dgvSSCheckRecords.SelectedRows(0).Cells(0).Value.ToString()

    If dgvSSCheckRecords.SelectedRows(0).Cells(12).Value.ToString() = "ZAM" Then
        sql1 = "DELETE * FROM VN_ZAM WHERE Company_ID = '" & dgvSSCheckRecords.SelectedRows(0).Cells(4).Value.ToString() & "_" & dgvSSCheckRecords.SelectedRows(0).Cells(0).Value.ToString() & "' "
        Dim cmd As OleDbCommand = New OleDbCommand(sql, myConnection)
        Dim cmd1 As OleDbCommand = New OleDbCommand(sql1, myConnection)

        'cmd.ExecuteNonQuery()
        'cmd1.ExecuteNonQuery()

        If dgvSSCheckRecords.SelectedRows(0).Cells(5).Value.ToString() = "BDO" Then
            sql2 = "DELETE * FROM Bank_BDO WHERE Company_ID = '" & dgvSSCheckRecords.SelectedRows(0).Cells(4).Value.ToString() & "_" & dgvSSCheckRecords.SelectedRows(0).Cells(0).Value.ToString() & "' AND Check_Number ='" & dgvSSCheckRecords.SelectedRows(0).Cells(1).Value.ToString() & "'"
            Dim cmd2 As OleDbCommand = New OleDbCommand(sql2, myConnection)

            cmd.ExecuteNonQuery()
            cmd1.ExecuteNonQuery()
            cmd2.ExecuteNonQuery()
        ElseIf dgvSSCheckRecords.SelectedRows(0).Cells(5).Value.ToString() = "BPI" Then
            sql2 = "DELETE * FROM Bank_BPI WHERE Company_ID = '" & dgvSSCheckRecords.SelectedRows(0).Cells(4).Value.ToString() & "_" & dgvSSCheckRecords.SelectedRows(0).Cells(0).Value.ToString() & "' AND Check_Number ='" & dgvSSCheckRecords.SelectedRows(0).Cells(1).Value.ToString() & "'"
            Dim cmd2 As OleDbCommand = New OleDbCommand(sql2, myConnection)
            cmd.ExecuteNonQuery()
            cmd1.ExecuteNonQuery()
            cmd2.ExecuteNonQuery()
        End if

End Sub

【问题讨论】:

  • 我不熟悉“删除 *”语法。你能提供一个参考吗?
  • 我不确定你不熟悉“删除”语法是什么意思,但这是我用来从数据库中永久删除记录的查询。 tutorialspoint.com/mysql/mysql-delete-query.htm 谢谢。 @草莓
  • 那是"DELETE",不是"DELETE *"

标签: mysql sql visual-studio visual-studio-2010 datagridview


【解决方案1】:

正如草莓所暗示的那样,我找不到任何 DELETE * FROM 是有效语法的例子(我不确定你是否可以像 SELECT * FROM 一样使用它?)。此外,如果 Bank 表中的 Check_Number 已更改为 number,我不确定您是否需要在值周围加上单引号。如果将四个 SQL 语句更改为以下内容是否有帮助?

  1. sql = "DELETE FROM SS WHERE ID = " & dgvSSCheckRecords.SelectedRows(0).Cells(0).Value.ToString()
  2. sql1 = "DELETE FROM VN_ZAM WHERE Company_ID = '" & dgvSSCheckRecords.SelectedRows(0).Cells(4).Value.ToString() & "_" & dgvSSCheckRecords.SelectedRows(0).Cells(0).Value.ToString() & "' "
  3. sql2 = "DELETE FROM Bank_BDO WHERE Company_ID = '" & dgvSSCheckRecords.SelectedRows(0).Cells(4).Value.ToString() & "_" & dgvSSCheckRecords.SelectedRows(0).Cells(0).Value.ToString() & "' AND Check_Number = " & dgvSSCheckRecords.SelectedRows(0).Cells(1).Value.ToString()
  4. sql2 = "DELETE FROM Bank_BPI WHERE Company_ID = '" & dgvSSCheckRecords.SelectedRows(0).Cells(4).Value.ToString() & "_" & dgvSSCheckRecords.SelectedRows(0).Cells(0).Value.ToString() & "' AND Check_Number = " & dgvSSCheckRecords.SelectedRows(0).Cells(1).Value.ToString()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    相关资源
    最近更新 更多