DataTable.Merge(), setzt DataRows zurück!

25/10/2008 - 17:07 von Attila Krick | Report spam
Hi NG,

ich habe folgende Aufgabenstellung. Ein User kann einen DS in einer Form
öffnen und bearbeiten. Ist die Bearbeitung abgeschlossen wird der DS wieder
in der DB geupdatet.

Anschließend wird der gleiche DS wieder aus der DB ausgelesen und in das
DataTable ge-merge-t. (Dies ist nötigt um die Zellen zu aktualisieren,
deren Basis komplexe berechnende Felder in der DB sind.)

Der Programmfluß schaut grob so aus:

1. DataSet erzeugen
2. TableAdapter.Fill(DataTable)
3. Form zur Bearbeitung zeigen
4. Abschluß der Bearbeitung durch Form Close()
5. TableAdapter.Update(DataRow)
6. DataSet.DataTable.Merge(TableAdapter.GetDataById(DataRow.Id), true)
7. Fertig.

Der Benutzer hat die Möglichkeit gleichzeitig unterschiedliche DS aus der
gleichen Tabelle zu öffnen, z.B.

Bearbeite KundeA.Bemerkung = "Text 1"
und
Bearbeite KundeB.Bemerkung = "Bla Bla"

Jetzt schließt er das erste Fenster KundeA. Nach dem 6. abgeschlossen ist
ist die Bemerkung von KundeB wieder zurückgesetzt wurden, bzw. in den
vorherigen Zustand versetzt wurden.

Bei Fenster nutzen das gleiche DataSet und somit die gleiche Tabelle.

DataTabe führt wohl eine Art RejectChanges durch. der 2. Parameter 'true'
hat keine Auswirkung.

Kann ich das irgendwie unterbinden so das die Änderungen in den anderen
DataRows erhalten bleiben auch wenn diese DataRows und deren Bearbeitung
nocht nicht abgeschlossen ist?

Grüße

Attila
 

Lesen sie die antworten

#1 Peter Fleischer
25/10/2008 - 21:22 | Warnen spam
"Attila Krick" schrieb im Newsbeitrag
news:s108710wyy9m.1i4jasm04bpnq$

Kann ich das irgendwie unterbinden so das die Änderungen in den anderen
DataRows erhalten bleiben auch wenn diese DataRows und deren Bearbeitung
nocht nicht abgeschlossen ist?



Hi Attila,
wenn du nur die OriginalVersions mischst, dürfte dein Problem nicht
auftreten. Wenn du jecht die aktuelle Version (Current Version)
überschreibst, gehen Verànderungen verloren.

Viele Grüsse
Peter

Ähnliche fragen