2016-12-28 6 views
0

Пожалуйста, помогите мне. Я добавил метод удаления в систему проверки чеков, которую я создаю, прежде чем он работал хорошо, но когда я изменил тип данных поля Check_Number от text до number из их соответствующих таблиц, он больше не удаляет строку данных что я выбираю. Я не помню, как менял код из раздела удаления. у вас, ребята, есть идеи, как это решить? заранее спасибо. Больше силы!Удалить запись из представления datagrid

Различная Bank_ [BankName] имеет Ф.Ф. поля и типы данных:

ID - AutoNumber 
Check_Number - Number 
Company_ID - Text 

Мой VN_ZAM Таблица имеет Ф.Ф. полей и типов данных:

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

Моя SS таблица имеет поля Ff и datatypes (это также относится к данным в представлении данных с данными):

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 
+0

Я не знаком с "Удалить" * синтаксисом. Можете ли вы предоставить ссылку для этого? – Strawberry

+0

Я не уверен, что вы имели в виду, что вы не знакомы с синтаксисом «Удалить», но это запрос, который я использую для постоянного удаления записи из базы данных. https://www.tutorialspoint.com/mysql/mysql-delete-query.htm Спасибо. @Strawberry – Louie

+1

Это '' DELETE "', а не '' DELETE * "' – Strawberry

ответ

0

Как клубника намекает, что я не могу найти примеры DELETE * FROM будучи допустимый синтаксис (я не уверен, что вы можете использовать его как SELECT * FROM?). Также, если 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()