Access-Tabelle im DataGridView laden, verändern, speichern!

friedemannhw

Grünschnabel
Hallo zusammen

mit folgendem Code möchte ich eine Tabelle aus einer Access-Datenbank in mein DGV laden, sodass ich die Daten dort bearbeiten(edit), ergänzen(add), löschen(delete) kann.

Das Laden und bearbeiten funktioniert.
Wenn ich die Form jedoch schließe und die Frage "Änderungen speichern" mit ok beantworte, erhalte ich folgenden Fehler:
Code:
Imports System.Data.OleDb
 
 
 
Public Class SABearbeitung
    Private dt As New DataTable
    Private da As OleDbDataAdapter
    Private ds As New DataSet
    Private bs As New BindingSource
 
    Private Sub SABearbeitung_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
        Dim ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data" & _
        "Source=Y:\Sonderauftragsbearbeitung.mdb;"
        Dim Con As New OleDbConnection(ConStr)
 
        ds.Tables.Add(dt)
 
        da = New OleDbDataAdapter("SELECT * FROM Sonderauftraege", Con)
 
        da.Fill(dt)
 
        Dim cb As New OleDbCommandBuilder(da)
 
        bs.DataSource = dt
 
        Me.DataGridView1.DataSource = bs
 
    End Sub
 
    Private Sub SABearbeitung_FormClosing(ByVal sender As Object, ByVal e As _
      System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If ds.HasChanges Then
            If MsgBox("Änderungen speichern?", MsgBoxStyle.Question Or _
              MsgBoxStyle.YesNo) Then
                bs.EndEdit()
                da.Update(ds.Tables(0))
            End If
        End If
    End Sub
 
End Class

OleDbException wurde nicht behandelt!
Syntaxfehler in der INSERT INTO-Anweisung.

Das passiert laut Debugger an folgender Stelle: -->

Code:
da.Update(ds.Tables(0))

Was mache ich falsch?
Wär schön, wenn ihr mir helfen könntet!
Dank im Voraus
 
Überprüfe mal, ob dein DataAdapter auch die richtigen INSERT- und DELETE-Statements gesetzt hat, möglicherweise steht dort sogar gar nichts drin.

PS: Du kannst den Connect-String auch direkt als Parameter in deinem DataAdapter-Konstruktor übergeben, dann brauchst du kein eigenes Connection-Objekt.
 
Zurück