Ich kann mir zwei Gründe vorstellen, wieso man soetwas machen will:
1. Ich möchte Alle Informationen zu einer ID in einer eigenen Datei zentral ablegen. Das könnte z.B. ein elektronisches Datenblatt sein. Zu einem Produkt sind alle Informationen gespeichert. Ich extrahiere aus der Zentraldanenbank die Informationen zu diesem Produkt und lege sie in einer
Access-
DB ab. Dann dazu noch einen Reportgenerator und -wupps- habe ich eine 'gebrandete' Anwendung. Gar nicht so doof.
2. Die Anwendung wird zu lahm, weil eben sehr viele Datensätze schon in der Datenbank sind. Ich extrahiere die aktuellen (oder alten) Sätze, um die
DB schlank und performant zu halten. Möööp Möööp Möööp! Blödsinnsalarm!
Es gibt bestimmt noch mehr Gründe, aber die würde
imho alle in die letzte Kategorie fallen.
Unabhängig davon, ob es nun sinnvoll ist, oder nicht:
ADO bietet Dir die Möglichkeiten um dein Problem zu lösen, und zwar auch dann, wenn sich die Tabellenstruktur ändert oder neue Tabellen hinzukommen.
Mit einer TADOConnection bekommst du eine Liste aller Tabellen deiner Quelldatenbank.
Dann gehst Du alle Tabellen durch und kopierst alle Datensätze mit der entsprechenden ID:
Delphi-Quellcode:
Procedure CopyRecords (aSrcConnection, aDstConnection : TADOConnect; aTableName : String; aID : Integer);
Var
qSource, qDest : TADOQuery;
i : Integer;
Begin
qSource := TADOQuery.Create;
qSource.Connection := aSrcConnection;
qDest := TADOQuery.Create;
qDest.Connection := aDstConnection;
Try
qSource.SQL.Text := Format ('select * from [%s] where ID = :ID',[aTableName]);
qDest.SQL.text := qSource.SQL.text;
qSource.Parameters.ParamValues['ID'] := ID;
qSource.Open;
While not qSource.Eof do Begin
qDest.Append;
For i:=0 to qSource.FieldCount - 1 do
qDest[qSource.Fields[i].FieldName] := qSource.Fields[i}.Value;
qDest.Post;
qSource.Next;
End;
Finally
qSource.Free;
qDest.Free;
End;
End;
Getippt und nicht getestet. Funktioniert aber im Prinzip.
Du musst nur noch den kleinen Code schreiben, der dir alle Tabellennamen auflistet und dann für jede Tabelle o.g. Routine aufrufen. Fertig.