Thema: Delphi 2 Datenbänke abgleichen

Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: 2 Datenbänke abgleichen

  Alt 9. Nov 2005, 10:10
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:
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;
Grüße vom marabu
  Mit Zitat antworten Zitat