Hallo Forum.
So langsam bin ich am verzweifeln. Seit gestern suche ich in diversen Foren nach einer Lösung für folgendes Problem:
Ich habe 2 Tabellen in Master-Detail Relation (verknüpft über die id der Master - Tabelle in der Detail - Tabelle).
Im Programm selbst sind die Tabellen jeweils über Bindingsources an 2 DataGridViews gebunden. Die Selektion über das Grid (master_tabelle) zeigt im Grid (detail_tabelle) die jeweils gefilterten Datensätze korrekt an. Auch das Hinzufügen von Datensätzen in der master_tabelle funktioniert problemlos.
Füge ich in der detail_tabelle einen Datensatz mit BindingSource_detail.AddNew() und abschließendem BindingSource_detail.EndEdit() hinzu, scheint das anfangs auch wie erwartet zu funktionieren. Navigiere ich jetzt aber durch die Master - Tabelle, bekomme ich nach max. 3 - 4 "Zeilenwechsel" eine DataGridView - Ausnahme. Der genaue Fehlertext:
Hier noch der try - Block, der neue Einträge (eigentlich korrekt) ins Dataset schreiben sollte.
und der Code, der beim Navigieren in der master_tabelle beim CurrentChanged - Event aufgerufen wird.
tbldetailBS und tbldetailTA sind die BindingSource und der TableAdapter für die Detail - Tabelle, tblmasterBS die BindingSource für die Master - Tabelle.
Die Daten, die beim Hinzufügen eines neuen Datensatzes in der Detail - Tabelle eingegeben werden, werden auch komplett und korrekt in die Datenbank (mysql) geschrieben. Nur das DataSet/BindingSource mag irgend etwas nicht.
Ich hoffe, jemand hat da einen Tipp parat. Habe mittlerweile schon soviel herumprobiert, tausend MessageBox'en an diversen Stellen eingefügt, um Werte während des Programmablaufes zu überprüfen... aber nirgendwo etwas verdächtiges gefunden.
Gruß, HSMuren
So langsam bin ich am verzweifeln. Seit gestern suche ich in diversen Foren nach einer Lösung für folgendes Problem:
Ich habe 2 Tabellen in Master-Detail Relation (verknüpft über die id der Master - Tabelle in der Detail - Tabelle).
Im Programm selbst sind die Tabellen jeweils über Bindingsources an 2 DataGridViews gebunden. Die Selektion über das Grid (master_tabelle) zeigt im Grid (detail_tabelle) die jeweils gefilterten Datensätze korrekt an. Auch das Hinzufügen von Datensätzen in der master_tabelle funktioniert problemlos.
Füge ich in der detail_tabelle einen Datensatz mit BindingSource_detail.AddNew() und abschließendem BindingSource_detail.EndEdit() hinzu, scheint das anfangs auch wie erwartet zu funktionieren. Navigiere ich jetzt aber durch die Master - Tabelle, bekomme ich nach max. 3 - 4 "Zeilenwechsel" eine DataGridView - Ausnahme. Der genaue Fehlertext:
Code:
System.IndexOutOfRangeException: Der Index 0 hat keinen Wert. bei System.Windows.Forms.CurrencyManager.get_Item(Int32 index) bei System.Windows.Forms.DataGridView.DataGridViewDataConnection.GetError(Int32 rowIndex)
Code:
try { this.Validate(); this.tbldetailBS.EndEdit(); this.tbldetailTA.Update(this.bsDataSet.tbldetail); } catch (Exception ex) { MessageBox.Show("Fehler beim Speichern!\n(Fehler: " + ex.Message + ")", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error); this.tbldetailBS.CancelEdit(); } //End: try-catch
Code:
this.tbldetailBS.Filter = "master_id = " + ((DataRowView)this.tblmasterBS.Current).Row["id"].ToString();
Die Daten, die beim Hinzufügen eines neuen Datensatzes in der Detail - Tabelle eingegeben werden, werden auch komplett und korrekt in die Datenbank (mysql) geschrieben. Nur das DataSet/BindingSource mag irgend etwas nicht.
Ich hoffe, jemand hat da einen Tipp parat. Habe mittlerweile schon soviel herumprobiert, tausend MessageBox'en an diversen Stellen eingefügt, um Werte während des Programmablaufes zu überprüfen... aber nirgendwo etwas verdächtiges gefunden.
Gruß, HSMuren
Comment