2016-12-28 4 views
0

Bitte helfen Sie mir. Ich fügte eine Löschmethode in das Prüfdrucksystem, das ich erstelle, hinzu, bevor es gut funktionierte, aber als ich den Datentyp des Feldes von text zu number von ihren jeweiligen Tabellen änderte, löscht es nicht mehr die Datenreihe das wähle ich aus. Ich kann mich nicht erinnern, irgendeinen Code aus dem Löschbereich geändert zu haben. Haben Sie eine Idee, wie Sie das lösen können? Vielen Dank im Voraus. Mehr Macht!Datensatz aus einer Datagrid-Ansicht löschen

Die verschiedenen Bank_ [Bankname] die ff Felder und Datentypen:

ID - AutoNumber 
Check_Number - Number 
Company_ID - Text 

Meine VN_ZAM Tabelle hat die ff Felder und Datentypen:

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

Mein SS Tabelle sind die ff Felder hat und Datentypen (hier werden auch die Daten in der Datagrid-Ansicht verwendet):

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 

My Datagridview, um wie folgt aussieht:

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

Ich bin nicht vertraut mit "Löschen *" Syntax. Können Sie eine Referenz dafür angeben? – Strawberry

+0

Ich bin nicht sicher, was Sie mit Ihnen gemeint haben sind nicht vertraut mit "Löschen" -Syntax, aber es ist eine Abfrage, die ich verwenden, um einen Datensatz dauerhaft aus der Datenbank zu löschen. https://www.tutorialspoint.com/mysql/mysql-delete-query.htm Vielen Dank. @ Strawberry – Louie

+1

Das ist '" DELETE "', nicht '" DELETE * "' – Strawberry

Antwort

0

Wie Erdbeere spielt auf, ich kann keine Beispiele für DELETE * FROM gültig Syntax finden (ich bin nicht sicher, dass Sie es wie SELECT * FROM verwenden können?). Auch wenn die in den Bank-Tabellen zu number geändert hat, bin ich nicht sicher, dass Sie die einfachen Anführungszeichen um die Werte benötigen. Hilft es, wenn Sie Ihre vier SQL-Anweisungen wie folgt ändern?

  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()
Verwandte Themen