Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbanken abgleichen (https://www.delphipraxis.net/160894-datenbanken-abgleichen.html)

BBoy 6. Jun 2011 17:12

Datenbank: BDE • Version: 5 • Zugriff über: TurboDB

Datenbanken abgleichen
 
Ich habe 2 identische Datenbanken mit je 3 Tabellen. 1x Mastertabelle und 2x Detailtabelle

Nun möchte ich die Datensätze aus DB1 in DB2 kopieren incl. der dazugehörigen Detailtabellen. Außerdem möchte ich vorher anhand eines Feldes prüfen ob der Datensatz bereits in der ziel Tabelle vorhanden ist. Ist er vorhanden soll ich gefragt werden ob ich überschreiben will, andernfalls wird er übersprungen und das kopieren wird fortgesetzt mit den restlichen Datensätzen. Und ein Feld in jedem Datensatz soll geleert werden.

BatchMove kenne ich, da kann man aber nicht mit einer Frage reagieren wenn ein Datensatz vorhanden ist.

Wie könnte ich das verwirklichen?
Danke!!
mfg

joachimd 7. Jun 2011 08:43

AW: Datenbanken abgleichen
 
quick'n'dirty Methode:
Delphi-Quellcode:
table1.open;
table2.open;
table1.first;
while not table1.eof do
begin
  if table2.locate('id','table2.fieldbyname('id').value,[])
    then table2.edit
    else table2.append;
  //Felder füllen
  table2.post;
  table1.next;
end;
manche DB unterstützen auch den SQL MERGE Befehl:
SQL-Code:
MERGE TableA AS ta
USING TableB AS tb
  ON (ta.ID = tb.ID)
  WHEN MATCHED THEN UPDATE SET ta.value = tb.value
  WHEN NOT MATCHED THEN INSERT(ID, value) VALUES (tb.ID, tb.value)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz