Thema: Delphi Datenbank

Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.358 Beiträge
 
Delphi 12 Athens
 
#12

Re: Datenbank

  Alt 16. Jul 2009, 17:16
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
  Mit Zitat antworten Zitat