Zitat:
ich möchte einen INSERT aus einer DBF-Datei in eine Firebird Datenbank machen.
versuch mal das:
- CachedUpdates = False
- Query1 zum Lesen der Daten
- ZQuery2 zum Schreiben
- TABELLE_IN_FB FirebirdTabelle wo die Daten hin sollen, Die Felder ID,AKTSESSION,BEDIENER sollten vorhanden sein
Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
var
ID,AKT_SES : integer;
begin
ZConnection1.User:= '
SYSDBA';
ZConnection1.Password:= '
masterkey';
ZConnection1.Database:= Ordner_zur_Datenbank;
// der lokale Ordner incl. Dateiname zur FB DB
ZConnection1.HostName:= '
';
// '' bei Embedded Hostname bei Server
ZConnection1.Connect;
ZQuery2.Connection := ZConnection1;
Query1.SQL.Text:='
SELECT * FROM DEPOT_C';
Query1.Open;
while not Query1.Eof
do
begin
if Query1.FieldByName('
ID').IsNull
then
begin
ID := 0;
AKT_SES := 0;
end
else
begin
ID := Query1.FieldValues['
ID'];
AKT_SES := Query1.FieldValues['
AKTSESSION'];
end;
ZQuery2.SQL.Text:= '
insert into TABELLE_IN_FB (ID,AKTSESSION,BEDIENER) values (:ID,:AKTSESSION,:BEDIENER);
ZQuery2.ParamByName['ID'
]:= ID + 1;
ZQuery2.ParamByName['AKTSESSION'
]:= AKT_SES + 1;
ZQuery2.ParamByName['BEDIENER'
]:= Query1.FieldValues['BEDIENER'
];
ZQuery2.ExexSQL;
Query1.Next;
end;
ZQuery2.Commit;
ZConnection1.Disconnect;
end;
Edit: Fehlerkorrektur
PS: mit deiner Variante die ID zu generieren kann es vorkommen, daß gleiche ID´s vergeben werden. Besser die ID von
FB erzeugen lassen über einen Generator. Aber das ist ein anderes Thema und nicht die Frage