![]() |
Datenbank: dBase • Zugriff über: Table
2 Datenbänke abgleichen
Hallo zusammen, :-D
ich möchte 2 Table Datenbänke vergleichen, die gleiche Felder und den gleichen Index haben. Sollte beim vergleichen ein Feld einen anderen wert haben so soll er den wert der 1. Table Datenbank annehmen. Hier habe ich mein Code. :gruebel:
Delphi-Quellcode:
Der aber verändert nichts
while not table3.Eof do
begin table2.append; for cop := 0 to Table3.fieldcount -1 do try table2.fields[i].assign(table3.fields[i]) except end; table2.post; table3.next; end; Ich hoffe dass jemand einen Tipp für mich hat. Mit freundlichen Grüßen Robby :-D :-D :-D :-D |
Re: 2 Datenbänke abgleichen
Hallo Robby,
du hast zwei identisch aufgebaute dBase-Tabellen, die du über die Table-Komponenten Table3 und Table2 ansprichst. In dem von dir gezeigten Code fehlt eventuell das Positionieren auf den ersten Satz von Table3, bevor die Schleife abgearbeitet wird. Du schreibst von einem Vergleich, aber dein Code enthält keinen Vergleich. Wenn ich deine Frage richtig verstehe, dann möchtest du anhand eines Schlüssels prüfen, ob jeder Datensatz aus Table3 auch in Table2 vorkommt. Existiert der Datensatz nicht, dann soll er erstellt werden, andernfalls sollen seine Nicht-Schlüsselfelder die Werte aus der Table3 annehmen. Habe ich das richtig verstanden? Den Code könnte ich mir dann etwa so vorstellen:
Delphi-Quellcode:
Grüße vom marabu
procedure CopyValues(Source, Target: TDataSet);
var i: integer; begin for i := 0 to Pred(Source.Fields.Count) do Target.Fields[i].Value := Source.Fields[i].Value; end; procedure TForm1.Button1Click(Sender: TObject); begin // ... with Table3 do begin First; while not Eof do begin if Table2.Locate('YourKeyName', 'YourKeyValue', []) then Table2.Edit else Table2.Append; CopyValues(Table3, Table2); Table2.Post; Next; end; end; end; |
Re: 2 Datenbänke abgleichen
Mein Problem habe ich mit Batchmove gelöst.
Ich Danke alle für eure Hilfe. Robby :-D
Delphi-Quellcode:
:bounce2:
with Batchmove1 do
begin Source := Table3 ; Destination := Table2; Mode := batAppendUpdate; execute; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:00 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