gelöschte Datensätze mit Dataset synchronisieren

25/11/2008 - 13:59 von Henry Schirmer | Report spam
Hallo NG

ich stehe wieder mal vor einem Ràtsel.
Ich arbeite mit einer Access-DB und einem Dataset in einer
Multiuserumgebung, welche natürlich gegenseitig abgeglichen werden. Jeweils
aktualisiert wird per OleDbDataAdapter.fill().
Alles klappt auch. Nur wenn Datensàtze an einem Client gelöscht werden und
dann das Dataset am anderen Client aktualisiert wird, werden die in der DB
gelöschten Datensàtze (die sind auch wirklich in der DB raus) nicht aus den
lokalen Dataset entfernt. Hinzufügen und Ändern in beide Richtungen
funktioniert prima. Warum nicht löschen? Gibt es noch irgendwelche Schalter,
die ich übersehen habe, dass auch die gelöschten Datensàtze synchronisiert
werden??
Es funktioniert nur, wenn ich die Table vorher mit clear() leere und dann
neu fülle.
Dabei bekomme ich aber Probleme mit in der Zeit evtl. schon laufenden
Zugriffen auf das Dataset.

Ich benutze für die Commands einen CommandBuilder, damit alles recht
universell ist und wie gesagt, in richtung DB alles ok. Umgekehrt auch, außer
löschen. Hat jemand einen Tipp?

...
OleDbDataAdapter ODA = new OleDbDataAdapter();
ODA.MissingSchemaAction = MissingSchemaAction.AddWithKey;
ODA.FillLoadOption = LoadOption.OverwriteChanges;
string SQL = "SELECT * FROM " + Tabellenname;

OleDbCommandBuilder CommBuild = new OleDbCommandBuilder(ODA);
ODA.SelectCommand = new OleDbCommand(SQL, conn);
DataTable DT = new DataTable(Tabellenname);
ODA.Fill(DT);
DS.Tables.Add(DT);
...

Vielen Dank für jeden Hinweis
Henry
 

Lesen sie die antworten

#1 Peter Fleischer
25/11/2008 - 18:40 | Warnen spam
"Henry Schirmer" schrieb im
Newsbeitrag news:

Ich arbeite mit einer Access-DB und einem Dataset in einer
Multiuserumgebung, welche natürlich gegenseitig abgeglichen werden.
Jeweils
aktualisiert wird per OleDbDataAdapter.fill().
Alles klappt auch. Nur wenn Datensàtze an einem Client gelöscht werden und
dann das Dataset am anderen Client aktualisiert wird, werden die in der DB
gelöschten Datensàtze (die sind auch wirklich in der DB raus) nicht aus
den
lokalen Dataset entfernt. Hinzufügen und Ändern in beide Richtungen
funktioniert prima. Warum nicht löschen?



Hi Henry,
stell dir vor, vor deinem Haus steht ein Auto und es fàhrt weg. Wie willst
du am nàchsten Tag ermitteln, wie die Nummer des Autos war? Wenn Datensàtze
in der Datenbank gelöscht wurden, dann gibt es keinen Status mehr, der es
ermöglicht, jemanden über nicht vorhandene Datensàtze zu informieren.

Gibt es noch irgendwelche Schalter,
die ich übersehen habe, dass auch die gelöschten Datensàtze synchronisiert
werden??



Da gibt es keine Schalter. Das geht mit der von dir implementierten
technologie nicht.

Es funktioniert nur, wenn ich die Table vorher mit clear() leere und dann
neu fülle.



Logisch, denn dann löschst du ja im Client die auch in der Datenbank nicht
mehr vorhandenen Datensàtze.

Dabei bekomme ich aber Probleme mit in der Zeit evtl. schon laufenden
Zugriffen auf das Dataset.



Da hast du die geforderte Zieltechnologie falsch implementiert.

Wenn du weißt, wie du das Problem mit dem Auto lösen würdest, dann hast du
auch die Lösung für dein Programm.

Viele Grüsse
Peter

Ähnliche fragen