Also ein Prob das mir nicht so recht in Schädel will:
Ich habe in einer Form ein DataSet und eine DataView. Die Steuerelemente sind an die DataView gebunden. Dann habe ich einen Button der ein Dataview.AddNew macht.
So weit so gut: Dann gibt es da noch einen Speichern Button der die Prozeduren UpdateDataset und UpdateDataSource vom DataFormAssistent nutzt.
Das Problem: Ändere ich einen Datensatz und speichere dann werden die Änderungen in die DB übernommen. Füge ich aber einen Datensatz hinzu dann wird dieser nicht in der DB gespeichert. Wo liegt hier das Problem?
Die Prozeduren:
'******************************************************************************
' ******
'********** SPEICHERN BUTTON
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles btnSave_changes.Click
Try
'Versuch, die Datenquelle zu aktualisieren.
Me.UpdateDataSet()
Catch eUpdate As System.Exception
'Fehlerbehandlungscode hier hinzufügen.
'Fehlermeldung anzeigen, falls verfügbar.
System.Windows.Forms.MessageBox.Show(eUpdate.Message)
End Try
End Sub
Public Sub UpdateDataSet()
'Ein neues DataSet erstellen, das die Änderungen enthält, die im
' Haupt-DataSet vorgenommen wurden
Dim objDataSetChanges As Capture_It.DS_navtest = New _
Capture_It.DS_navtest()
'Alle aktuellen Bearbeitungen anhalten.
Me.BindingContext(DS_navtest1, "artikelstamm").EndCurrentEdit()
'Änderungen abrufen, die am Haupt-DataSet vorgenommen wurden.
objDataSetChanges = CType(DS_navtest1.GetChanges, Capture_It.DS_navtest)
'Prüfen, ob Änderungen durchgeführt wurden.
If (Not (objDataSetChanges) Is Nothing) Then
Try
'Es müssen Änderungen vorgenommen werden. Versuchen Sie, die
' Datenbank durch
'Aufrufen der Update-Methode mit Übergabe des DataSet und
' anderer Parameter zu aktualisieren.
Me.UpdateDataSource(objDataSetChanges)
DS_navtest1.Merge(objDataSetChanges)
DS_navtest1.AcceptChanges()
Catch eUpdate As System.Exception
'Fehlerbehandlungscode hier hinzufügen.
Throw eUpdate
End Try
'Code hinzufügen, um das zurückgegebenen DataSet auf Fehler zu
' überprüfen,
'die möglicherweise in die Error-Eigenschaft des Row-Objekts
' gespeichert wurden.
End If
End Sub
Public Sub UpdateDataSource(ByVal ChangedRows As Capture_It.DS_navtest)
Try
'Die Datenquelle muss nur dann aktualisiert werden, wenn Änderungen
' ausstehen.
If (Not (ChangedRows) Is Nothing) Then
'Verbindung öffnen.
Me.OleDbConnection1.Open()
'Versuch, die Datenquelle zu aktualisieren.
OleDbDataAdapter1.Update(ChangedRows)
End If
Catch updateException As System.Exception
'Fehlerbehandlungscode hier hinzufügen.
Throw updateException
Finally
'Verbindung schließen, egal ob die Ausnahme ausgelöst wurde oder
' nicht.
Me.OleDbConnection1.Close()
End Try
End Sub Es wär echt schön wenn mir jemand einen Tipp geben könnte warum das nicht funktioniert. Ich habe mich schon vergewissert, dass der neue Datensatz auch im DataSet auftaucht, da die Steuerelemente ja an das DataView gebunden sind.
Vielleicht fehlt mir hier etwas Grundverständnis?
Danke im Voraus Spassmann |