![]() |
AW: 2 Datenbanken abgleichen
Also, man ist sehr gut beraten, wenn die Datenbankstruktur ihren eigenen Versionsstand kennt, bzw. diesen irgendwie dort ablegt.
Für die Update-Orgie stellt man nun Skripts zusammen, die die Datenbankstruktur von Version X auf Version Y bringen können. Jetzt wird auf einmal alles einfach:
|
AW: 2 Datenbanken abgleichen
Hallo himitsu,
bei dem Beispiel Code handelst es sich um eine Tabelle mit nur einen Datensatz. Das Problem ist das die Quell-Struktur unter Umständen anders ist wie die Ziel-Struktur, d.h. Felder können an anderer Position sein und dann funktioniert meine Schleife nicht.
Delphi-Quellcode:
Feld 10 könnte in Ziel an Position 11 sein und unterschiedliche Feldwerte wie Boolean und Integer sein.
for i := 0 to Query_Quelle.fieldcount -1 do
begin Query_Ziel.Fields[i].asvariant := Query_Quelle.Fields[i].asvariant; // hier ist das Problem. end; Query_Ziel.post; Das ist mein Problem. |
AW: 2 Datenbanken abgleichen
Gehe doch lieber über den Feldnamen, die Reihenfolge der Felder innerhalb einer Tabelle ist dann egal.
|
AW: 2 Datenbanken abgleichen
Hallo baumina,
hast Du mal ein Beispiel? |
AW: 2 Datenbanken abgleichen
Mach dir doch nicht so einen Stress und benutze
![]() |
AW: 2 Datenbanken abgleichen
Delphi-Quellcode:
for i := 0 to Query_Quelle.fieldcount -1 do
begin ZielFeld := Query_Ziel.FieldByName(Query_Quelle.Fields[i].FieldName); If Assigned(ZielFeld) then begin ZielFeld.asvariant := Query_Quelle.Fields[i].asvariant; end; end; |
AW: 2 Datenbanken abgleichen
Hallo Uwe,
CopyFields funktioniert bei mir nicht so richtig.
Delphi-Quellcode:
was mache ich denn falsch. Irgendwie erkennt mein Code nicht die Feldreihenfolge.
procedure TfrmUebernahme.Optionen;
//procedure CopyRecord(dsSource, dsTarget: TDataSet); var varCopyData: Variant; i: Integer; begin Query_Quelle.Close; Query_Quelle.SQL.Clear; Query_Quelle.SQL.Add('select * from TBL_OPTIONEN'); Query_Quelle.Open; Query_Ziel.Close; Query_Ziel.SQL.Clear; Query_Ziel.SQL.Add('select * from TBL_OPTIONEN'); Query_Ziel.Open; Query_Ziel.Edit; with Query_Quelle do begin varCopyData := VarArrayCreate([0, FieldCount-1], varVariant); for i := 0 to FieldCount-1 do varCopyData[i] := Fields[i].Value; end; with Query_Ziel do begin // Insert; for i := 0 to FieldCount-1 do Fields[i].Value := varCopyData[i]; // Hier Knalls bei Feld 90. end; Query_Ziel.Post; end; Und was ist wenn das Ziel neue Felder hat. Es sollen natürlich nur die alten Einträge übernommen werden. |
AW: 2 Datenbanken abgleichen
Was genau funktioniert bei
Delphi-Quellcode:
nicht?
AnzFelderKopiert := Query_Ziel.CopyFields(Query_Quelle);
|
AW: 2 Datenbanken abgleichen
Zitat:
Delphi-Quellcode:
procedure TfrmUebernahme.Optionen;
begin Query_Quelle.Close; Query_Quelle.SQL.Clear; Query_Quelle.SQL.Add('select * from TBL_OPTIONEN'); Query_Quelle.Open; Query_Ziel.Close; Query_Ziel.SQL.Clear; Query_Ziel.SQL.Add('select * from TBL_OPTIONEN'); Query_Ziel.Open; Query_Ziel.Edit; // oder Append/Insert, wenn noch kein Datensatz da ist Query_Ziel.CopyFields(Query_Quelle); Query_Ziel.Post; end; |
AW: 2 Datenbanken abgleichen
OK zunächst mal Danke für Eure Antworten, muss jetzt leider bis Sonntag außer Haus. Melde mich dann am Sonntag wieder und berichte über das Ergebnis.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:46 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