|
| |

VB.NET - FortgeschritteneDringend: Änderungen aus DS in DB schreiben  | |  | | Autor: Spassmann | | Datum: 01.04.04 09:51 |
| 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 |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
Neu! sevEingabe 3.0 
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
| |
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|