Forum: ADO.NET |
Thema:
Probleme beim Updaten der Datenbank (RowState bleibt stur auf 'Unchanged')! |
Von:
Chris Nöther (
23.11.2006 13:54) |
Hallo,
ich habe ein Dataset (ds), und wenn ich dort Daten ändern will, dann erzeuge ich ein weiteres Fenster, binde die Komponenten und kann dann prima die Daten ändern. Aber er schreibt diese geänderten Daten nicht in die Tabelle zurück, und zwar, weil ds.HasChanges immer false anzeigt. Ich habe absolut keine Erklärung dafür. Der Code:
If CType(sender, ToolStripMenuItem).Name = "ZimmerBearbeitenToolStripMenuItem" Then
frmZimmerAusstBem.Text = "Zimmer bearbeiten für " + Name1Label1.Text
'frmZimmerAusstBem.cobZimmerbezeichnung.Enabled = False
frmZimmerAusstBem.cobZimmerbezeichnung.DataBindings.Add(New Binding("Text", bsZ, "Bezeichnung"))
frmZimmerAusstBem.txtAusstattung.DataBindings.Add(New Binding("Text", bsZ, "Ausstattung"))
frmZimmerAusstBem.txtBemerkungen.DataBindings.Add(New Binding("Text", bsZ, "Bemerkungen"))
If CType(frmZimmerAusstBem.ShowDialog(), DialogResult) <> Windows.Forms.DialogResult.OK Then
ds.RejectChanges()
End If
End If
m neuen Fenster selbst gibt's lediglich eine Codezeile von mir, und die lautet: Hide(). Woran liegt das? Wenn ich dieses neue Fenster mit Abbrechen verlasse, sodass ds.RejectChanges() aufgerufen wird, nimmt er tatsächlich alle bis dahin gemachten Änderungen zurück. Obwohl auch dort vorher ds.HasChanges() False ergibt. Ich kapier das nicht.
Oder, um es noch deutlicher zu machen:
MsgBox(ds.HasChanges.ToString) ' ergibt False
Dim r As DataRow = ds.Tables("dbZimmer").Rows.Find(tvZimmer.SelectedNode.Name.Substring(1))
r("Bezeichnung") = "Hallo"
MsgBox(ds.HasChanges.ToString) ' ergibt auch False
Wo liegt mein Fehler? Was mache ich falsch? Die Daten im Dataset werden korrekt geändert und angezeigt, dort ist die DataTable völlig in Ordnung. Allein der RowState wird nicht geändert und so kriege ich die Daten nicht gespeichert. Woran kann das nur liegen?
Hat jemand eine Idee? Bin für jeden Tip dankbar ...
Chris
PS: Übrigens habe ich zwei weitere Funktionen zum Löschen und Einfügen, beide arbeiten wunderbar. Nur geänderte Rows machen Ärger.
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!