Datenabgleich

13/01/2009 - 23:36 von Ulrich Korndoerfer | Report spam
Hallo NG,

ich stehe vor der Aufgabe, den Inhalt zweier Datenbankdateien
abzugleichen, genauer: Änderungen festzustellen.

Das Format der DB ist Jet4.0. Die Datenstandsausgangsversion A wird
bearbeitet: Datensàtze eingefügt, gelöscht, geàndert etc. Die daraus
entstehende Datenstandsversion B soll nun abgeglichen werden:

Im ersten Schritt möchte ich pro Tabelle wissen: welche Datensàtze
wurden hinzugefügt, welche gelöscht und welche geàndert. Bei einigen
Tabellen sind die PKs "immutable", können also nicht geàndert werden,
Datensàtze also nur geàndert (ohne PK Änderung), gelöscht oder neu
hinzugefügt (mit neuen PKs) werden. Bei anderen Tabellen können die PKs
"at will" vergeben werden, die PKs bestehender Records können also auch
geàndert werden.

Sollten DS gelöscht oder hinzugefügt worden sein, kann ich das durch
einen Abgleich der PKs ermitteln. Probleme bereiten mir die DS, bei
denen nur Felder (außer dem PK) geàndert wurden.

Frage: gibt es eine interne Änderungs-"Buchführung", die Jet durchführt?
Mir reicht hier eine Buchführung auf Datensatzebene, ob und welches Feld
geàndert wurde, kann ich dann durch einfachen Vergleich der Feldinhalte
durchführen.

Und wenn ja, wie komme ich an diese Information (mittels DAO oder ADO).

Die "Buchführung" könnte zB ein zum DS gehörender Timestamp sein, der
bei jeder Änderung neu gesetzt wird. Oder ein Flag (das dann rücksetzbar
sein müßte).

Wenn ja, könnte ich für einzelne DS die Timestamps der
Datenstandsversionen A und B vergleichen und daraus auf eine Änderung
schließen (Timestamp von Tabelle X/DS Y in Datenstandsversion B neuer
als der Timestamp von Tabelle X/DS Y in Datenstandsversion A). Oder ein
Änderungsflag direkt auswerten und danach zurücksetzen.

Ulrich Korndoerfer

VB tips, helpers, solutions -> http://www.proSource.de/Downloads/
 

Lesen sie die antworten

#1 Stefan Dase
14/01/2009 - 08:42 | Warnen spam
Hallo Ulrich!

Frage: gibt es eine interne Änderungs-"Buchführung", die Jet durchführt?
Mir reicht hier eine Buchführung auf Datensatzebene, ob und welches Feld
geàndert wurde, kann ich dann durch einfachen Vergleich der Feldinhalte
durchführen.



Jet führt normalerweise keine Änderungskennzeichnung durch, auch ein
Timestamp wie beim SQL-Server kennt es nicht. Es verfügt allerdings über
einen optional aktivierbaren Replikationsmechanismus, der für jedes
Objekt alle Struktur- und Datenànderungen speichert und somit über
mehrere verteilte Dateien nachvollziehbar macht.

Da das Anwenden der Replikation aber Änderungen an den Tabellen
durchführt und zur Verwendung auch viele Dinge beachtet werden müssen,
verweise ich dich mal an die Einstiegsseite zum Thema bei Michael
Kaplan: http://www.trigeminal.com/.

Wenn du den Daumen auf sàmtliche Aspekte der Synchronisierung haben
willst, wirst du um eine eigene Implementation nicht umhin kommen.

Viele Grüße aus Bremen,
Stefan

Ähnliche fragen