AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi 2 Datenbänke abgleichen
Thema durchsuchen
Ansicht
Themen-Optionen

2 Datenbänke abgleichen

Ein Thema von robby3 · begonnen am 8. Nov 2005 · letzter Beitrag vom 9. Nov 2005
Antwort Antwort
robby3

Registriert seit: 30. Okt 2005
23 Beiträge
 
#1

2 Datenbänke abgleichen

  Alt 8. Nov 2005, 17:47
Datenbank: dBase • Zugriff über: Table
Hallo zusammen,
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.
Delphi-Quellcode:
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;
Der aber verändert nichts

Ich hoffe dass jemand einen Tipp für mich hat.
Mit freundlichen Grüßen
Robby
Es gibt keine Dummen Fragen
nur Dumme Antworten
  Mit Zitat antworten Zitat
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
robby3

Registriert seit: 30. Okt 2005
23 Beiträge
 
#3

Re: 2 Datenbänke abgleichen

  Alt 9. Nov 2005, 16:56
Mein Problem habe ich mit Batchmove gelöst.
Ich Danke alle für eure Hilfe.
Robby

Delphi-Quellcode:
with Batchmove1 do
begin
 Source := Table3 ;
 Destination := Table2;
 Mode := batAppendUpdate;
 execute;
end;
Es gibt keine Dummen Fragen
nur Dumme Antworten
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz