DataRow löschen?

18/03/2008 - 16:01 von Frank Boehland | Report spam
Ein freundliches Hallo,

vielleicht sehe ich den Wald vor Bàumen nicht, aber - Wie lösche ich eine
DataRow in einer DataTable und der Datenquelle, wenn dem ein DataAdapter
zugrunde liegt?
Eine einfache Abfrage auf eine Tabelle, so dass die Commands mit dem
CommandBuilder erzeugt werden.

Einige Fragmente ...

rowProjektBlatt via PrimarKey gefunden

For Each r As DataRow In dtProjektBlatt.Rows
If r Is rowProjektBlatt Then
r.Delete()
End If
Next

Wann genau dtProjektBlatt.AcceptChanges()?

Dim betroffen As Integer = adapterProjektBlatt.Update(dtProjektBlatt)

Kann ich erkennen, ob DeleteCommand überhaupt ausgeführt wird. Offenbar hier
nicht, da die Rückgabe betroffener Zeilen 0 ist.

Helft mir auf die Sprünge. Vielen Dank
Frank
 

Lesen sie die antworten

#1 Elmar Boye
18/03/2008 - 16:37 | Warnen spam
Hallo Frank,

Frank Boehland schrieb:
vielleicht sehe ich den Wald vor Bàumen nicht, aber - Wie lösche ich eine
DataRow in einer DataTable und der Datenquelle, wenn dem ein DataAdapter
zugrunde liegt?
Eine einfache Abfrage auf eine Tabelle, so dass die Commands mit dem
CommandBuilder erzeugt werden.



Wenn ich Dich richtig verstehe, möchtest Du dass der DataAdapter
die zur DataRow gehörende Zeile in der Datenbank löscht
(und nicht etwa die DataRow aus der DataTable selbst löschen).

Dann ist die DataRow.Delete Methode genau die richtige.
Sie markiert die Zeile zum Löschen (RowState = DataRowState.Deleted).

Das führt beim Aufruf des DataAdapter.Update (für die einzelne
DataRow oder die gesamte DataTable) dazu, dass dieser das
DeleteCommand für die DataRow ausführt - im Zusammenspiel mit
dem CommandBuilder erzeugt dieser das dynamisch.


Wann genau dtProjektBlatt.AcceptChanges()?



Ein AcceptChanges brauchst (solltest) Du in dem Szenario
gar nicht ausführen.

Das erledigt der DataAdapter automatisch, wenn das Ausführen
des DeleteCommand erfolgreich war, zumindest solange wie
AcceptChangesDuringUpdate = true ist (Standard).

Führst Du AcceptChanges selbst vorher aus so wird die
Zeile aus der DataTable gelöscht und der DataAdapter
kriegt sie gar nicht mehr zu sehen.

Dim betroffen As Integer = adapterProjektBlatt.Update(dtProjektBlatt)

Kann ich erkennen, ob DeleteCommand überhaupt ausgeführt wird.
Offenbar hier nicht, da die Rückgabe betroffener Zeilen 0 ist.



Wenn Du AcceptChanges aufgerufen hast, wàre das die Erklàrung.

Gruß Elmar

Ähnliche fragen