![]() |
Übergabe Daten aus MDB an SQL ADOQuery
Hallo Leute,
bräuchte mal etwas Hilfe :-D wie bekommt man das hin, das man Daten von einem Query an ein anderes übergibt? Ich denke das Thema gab es sicher schon oft. Oder besser die Frage der DatenSyncronisierung. Will jetzt auch keinen damit langweilen oder nerven. Nur konnte ich keine Lösungsmöglichkeit finden. Zur Zeit habe ich für beide Datenbanken eine Anbindung über jeweils einen ADOQuery. Diese nutze ich für das anlegen und Löschen von Spalten. Nun suche ich eine Möglichkeit die Daten in eine Richtung abzugleichen. Vielleicht ist die Idee für den Weg auch Mist!? Vielleicht gibt es eine einfachere Lösung?!?! ... HILFEEee - arbeite mit Delphi 2005 - VCL - und ich bin Neuling Gruß Micha [edit=Phoenix]Das ist mit Sicherheit kein Delphi für .NET. Geändert. Mfg, Phoenix[/edit] |
Re: Übergabe Daten aus MDB an SQL ADOQuery
Du hast zwei Datenbanken (A und B) und möchtest nun den Inhalt einer Tabelle in A
mit der strukturgleichen Tabelle in Datenbank B synchronisieren, so dass TabB den Inhalt von TabA bekommt? Die einfachste Lösung ist den Inhalt der Tabelle in B zu löschen und alle Daten aus A neu einzukopieren. Es gibt noch komplizierte Verfahren: 1.) alle Datensätze in TabB löschen, die es in TabA nicht gibt 2.) alle Datensätze von TabA durchlaufen und prüfen, ob es den Datensatz in TabB gibt Falls Datensatz nicht vorhanden: Datensatz einfügen; falls Datensatz verschieden: Datensatz in TabB updaten Man braucht dazu zwingend einen Primärschlüssel. Aber ein Anfänger dürfte mit der Aufgabe überfordert sein. |
Re: Übergabe Daten aus MDB an SQL ADOQuery
Hallo "sx2008"
danke erst mal für deine Antwort !!! die Tabelle in der DB-B löschen ( falls vorhanden ) und neu anlegen, würde zunächst mal reichen letzteres war eher das was ich nicht hören wollte! auch wenn es sicher berechtigt ist .... :| könnte man es über Textboxen lösen? in dem man aus der DB-A die Daten in das jeweilige Feld übernimmt und sie dann in ein "SQL UPDATE "Tabellen_Name" SET Spalte1 = [Wert1], Spalte2 = [Wert2]" übernimmt und in die DB-B schreibt ??? |
Re: Übergabe Daten aus MDB an SQL ADOQuery
Um alle Datensätze einer ADO Tabelle zu löschen:
Delphi-Quellcode:
Um einen Datensatz zu kopieren:
procedure DeleteADOTable(con:TADOConnection; const tablename:string);
begin Assert(Assigned(con)); con.execute('DELETE FROM '+tablename); end;
Delphi-Quellcode:
Um ALLE Datensätze zu kopieren:
procedure CopyRecord(a,b:TDataset);
var i : integer; f : TField; begin for i:=0 to a.fields.Count-1 do begin f := b.FindField(a.Fields[i].FieldName); if Assigned(f) then f.Value := a.Fields[i].Value; end; end;
Delphi-Quellcode:
Und jetzt noch das Ganze zusammenbauen.
procedure CopyAllRecords(a,b:TDataset);
begin while not a.Eof do begin b.Append; // neuen, leeren Datensatz anhängen CopyRecord(a,b); b.Post; // abschicken a.Next; end; end; Du brauchst jeweils eine ADOConnection für jede Datenbank. 1.) alte Daten löschen
Delphi-Quellcode:
2.) zwei ADOQuerys erstellen
DeleteADOTable(ADOConnectionA, 'MeineTabelle');
Delphi-Quellcode:
Das Gleiche für ADOQueryB und jeweils das Property Connection zuweisen.
ADOQueryA.SQL.Text := 'SELECT * FROM MeineTabelle';
ADOQueryA.Open; 3.) Daten kopieren
Delphi-Quellcode:
Das wäre so ganz grob das "Kochbuch".
CopyAllRecords(ADOQueryA, ADOQueryB);
|
Re: Übergabe Daten aus MDB an SQL ADOQuery
Hi sx2008
danke erst mal für deine Mühe und die vielen Infos!!! mal schaun ob ich damit umgehen kann ... werde es in Teilen mal testen Gruß Micha |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:47 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