![]() |
Datenbank
Hi leute,
da ihr mir schon sehr gut weitergholfen habt, wende ich mich mit diesem problem voller hoffnung wieder einmal an euch. ich möchte einen INSERT aus einer DBF-Datei in eine Firebird Datenbank machen. ich hab es erstmal ohne die DBF versucht und es hat wunderbar geklappt. dach jetz(mit der DBF) bekomme ich folgende fehlermeldung wenn ich den insert ausführen will. databse connection component is not assigned kann mir da jemand weiterhelfen? |
Re: Datenbank
Zeig mal den Code/Abfrage
Btw. welche FB-Version? |
DP-Maintenance
Dieses Thema wurde von "mkinzler" von "Windows API / MS.NET Framework API" nach "Datenbanken" verschoben.
Geht um DBF/FireBird -> Datenbanken |
Re: Datenbank
firebird 1.5
Delphi-Quellcode:
[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]
ZQuery2.SQL.Clear;
ZQuery2.SQL.Text := ('SELECT * FROM DEPOT_C') ZQuery2.Open; while not 2Query2.Eof do begin ZQuery1.Connection := ZConnection1; ZQuery1.Open; ZQuery1.Append; ZQuery1['BEDIENER'] := ZQuery2['BEDIENER']; ZQuery1.Post; ZQuery2.Next; ZQuery1.Close; end; |
Re: Datenbank
Hallo,
Zitat:
PS: schreibe doch die DS gleich per SQL nach FB. Jetzt schreibst du in die Query und die Query setzt dann SQL ab. mit Cached Updates und ApplyUpdates kann es manchmal Sinn machen Änderungen an der Query später abzusetzen oder Veränderungen komplett zu verwerfen. :hi: |
Re: Datenbank
danke, ich hab den fehler gefunden...ich musste für die dbf- datei einfach nur ne normale tquery nehmen und nicht die ztquery...wird aber bestimmt nicht meine letzte frage zu diesem thema gewesen sein also haltet euch bereit---lol
|
Re: Datenbank
und da bin ich schon wieder.
normaler weise mach ich nen COMIT wnn ich was in eine DB eintrage. deshalb mach ich das hier mit dem Befehl COMMITUPDATES. aber irgendwie funzt das nicht.
Delphi-Quellcode:
[edit=mkinzler]Delphi-Tag eingefügt. Das nächste Mal bitte selber machen! Mfg, mkinzler[/edit]
procedure TForm2.Button2Click(Sender: TObject);
var ID,AKT_SES : integer; begin Query1.SQL.Clear; Query1.SQL.Add('SELECT * FROM DEPOT_C'); Query1.Open; ZQuery1.Connection := ZConnection1; while not Query1.Eof do begin ZQuery1.Open; ZQuery1.Last; if ZQuery1.FieldByName('ID').IsNull then begin ID := 0; AKT_SES := 0; end else begin ID := ZQuery1['ID']; AKT_SES := ZQuery1['AKTSESSION']; end; ZQuery1.Append; ZQuery1['ID'] := ID + 1; ZQuery1['AKTSESSION'] := AKT_SES + 1; ZQuery1['BEDIENER'] := Query1['BEDIENER']; ZQuery1.Post; Query1.Next; end; ZQuery1.CommitUpdates; end; |
Re: Datenbank
Hallo,
Zitat:
normalerweise brauchst du nicht "Commiten". Das erledigt die TZQuery in diesem Fall mit. Wenn du in der Query das Property CachedUpdates auf False stehen hast werden alle Änderungen an der Query direkt in die DB geschrieben und committed. Steht CachedUpdates auf True werden die Änderungen erst mit ApplyUpdates geschrieben oder mit CancelUpdates verworfen. :hi: |
Re: Datenbank
also cachedupdates steht auf false und das commitupdates hab ich auch mal rausgenommen, hat beides nicht geklappt.
|
Re: Datenbank
Zitat:
|
Re: Datenbank
ich weis auch nicht weiter...so ein sch...
|
Re: Datenbank
Zitat:
- 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:
Edit: Fehlerkorrektur
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; 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 |
Re: Datenbank
@TE: also ein paar Dinge:
Gruß Thomas |
Re: Datenbank
@ TBx sorry wenn mir noch der ien oder andere kleine fehler unterläuft, aber ich bin erst seit kurzem hier und noch nicht so vertraut mit allen umgangsformen des forums...aber danke für die hinweise.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:10 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