Master-Detail Update Probleme
Dank Visual Studio und Microsoft .NET in der Version 2 ist es ein leichtes, eine Master-Detail-Beziehung zwischen zwei Tabellen in einem Dataset nachzubilden und auch im Formular zu bearbeiten. Die Erstellung des Datasets übernimmt ein Assistent. Die Controls im Formular werden per Drag&Drop platziert. Dabei wird im Code auch automatisch Code zur Aktualisierung der Datenbank angelegt:
myMasterTableBindingSource.EndEdit(); myDetailTableBindingSource.EndEdit(); tableAdapterManager.UpdateAll(dataSetmyTables); |
Soweit, so gut. Leider kann sich für den Anwender dadurch Datenverlust ergeben. Wir ein Detail-Datensatz bearbeitet und dann der Master-Datensatz gewechselt, so bleibt der Detail-Datensatz im Edit-Modus! Mit
myDetailTableBindingSource.EndEdit(); |
ist dieser Datensatz nicht mehr zu erreichen und wird auch nicht beim UpdateAll berücksichtigt. Eine Abhilfe schafft hier:
for (int i = 0; i < dataSetmyTables.myMasterTable.Count; i++) { dataSetmyTables.myMasterTable[i].EndEdit(); } for (int i = 0; i < dataSetmyTables.myDetailTable.Count; i++) { dataSetmyTables.myDetailTable[i].EndEdit(); } tableAdapterManager.UpdateAll(dataSetmyTables); |
KategorienDatenbank, Microsoft .NET