Daten in zwei verknüpften Tabellen anzeigen und speichern
-
Ich habe in einem Form die Eingabefelder für zwei Tabellen, wobei die eine Tabelle in einer 1:n Relation zur Anderen Tabelle steht (1 Worker, n tools).
Tabelle eins verfügt innerhalb von diesem Form noch über einen Binding Navigator.
Jetzt wollte ich die Tabellen so verknüpfen, dass der Binding Navigator für beide Tabellen ausreicht, zumindest erstmal was das Speichern eines Neueintarges anbelangt. Ich habe im Code, der hinter dem Speichern Symbol erzeugt wird nun folgendes geschrieben:
this.Validate(); this.tbl_ToolsBindingSource.EndEdit(); this.tbl_WorkersBindingSource.EndEdit(); _ACMDataSet_.tbl_ToolsDataTable newTools = (_ACMDataSet_.tbl_ToolsDataTable) _ACMDataSet_.tbl_Tools.GetChanges(DataRowState.Added); this.tbl_WorkersTableAdapter.Update(this._ACMDataSet_.tbl_Workers); if (newTools != null) { tbl_ToolsTableAdapter.Update(newTools); } _ACMDataSet_.AcceptChanges(); // usw.
Nur scheinen die neu angelegten Tools Datensätze trotzdem nicht in die Tabelle gelangen. Fehlt da noch etwas?
-
Zu AcceptChanges steht folgendes in der MSDN
*Beim Aufruf von AcceptChanges werden alle Bearbeitungsvorgänge von DataRow-Objekten, die sich noch im Bearbeitungsmodus befinden, erfolgreich beendet. Der DataRowState ändert sich ebenfalls: Alle Zeilen mit Added und Modified werden Unchanged; Zeilen mit Deleted werden entfernt.
*Da steht nichts das es durch den Aufruf auch an die DB weitergereicht wird.
Ich würde meine es läuft so ab
1. Der Nutzer hat Datsätze (DataRow-Objekte) manipuliert
2. Jetzt macht man die Änderungen gültig (durch Aufruf von AcceptChanges)
3. jetzt muss man die Änderungen zur DB weiterreichen (Aufruf von Update)so müsste es gehen
Du machst ein Update und hinterher das AcceptChanges also eigentlich reichst Du keine Veränderungen zur DB weiter sondern das was Du zuvor durch das Fill schon bekommen hast. Der DatenBankprovieder merkt jedoch das reingarnichts geändert wurde und nervt die DB auch ncht mit unnützer Arbeit.
-
Leider bringt das ebenfalls nichts, die Tabelle bleibt weiterhin leer.