请帮助我。在运行良好之前,我正在创建的检查打印系统中添加了删除方法,但是当我将字段的数据类型从text
从CC_2更改为number
从其各自的表中,它不再删除数据行我选择了。我不记得从删除部分更改任何代码。你们知道如何解决这个问题吗?先感谢您。更多功率!
不同的银行_ [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:UsersPcDocumentsVisual Studio 2010ProjectsbankCheckSystemdbcheckprintsystem.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
作为草莓所暗示,我找不到DELETE * FROM
有效语法的任何示例(我不确定您可以像SELECT * FROM
一样使用它吗?)。另外,如果银行表中的Check_Number
已更改为number
,我不确定您需要围绕这些值的单引号。如果将四个SQL语句更改为以下内容,它会有所帮助吗?
-
Check_Number
0 -
sql1 = "DELETE FROM VN_ZAM WHERE Company_ID = '" & dgvSSCheckRecords.SelectedRows(0).Cells(4).Value.ToString() & "_" & dgvSSCheckRecords.SelectedRows(0).Cells(0).Value.ToString() & "' "
-
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()
-
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()