![]() |
Datenbank: Firebird • Version: 2.1 • Zugriff über: IBDAC neueste Version
Bekomme kein INSERT mit FB und IBDAC hin!?!
Hallo,
ich werd' noch verrückt. Folgende Anweisung wird mit einem Fehler abgewiesen (Token unknown). Hab auch schon TIBCSQL durch TIBCQuery ersetzt, gleiches Problem... Exakt die gleiche Abfrage funktioniert unter einer Firebird-GUI einwandfrei. Die Schleife (to 31) sowie das entsprechende Datum habe ich zu Demonstrationszwecken in einen festen Wert geändert.
Delphi-Quellcode:
Meine Tabelle sieht so aus:
procedure TPlanner.PCreateMonthInDB(Month: Byte; Year: Integer);
VAR TMPSQL : TIBCSQL; i : Integer; begin (* Kalender in Datenbank erstellen *) TMPSQL := TIBCSQL.Create(nil); for I := 1 to 31 do begin TMPSQL.SQL.Add('INSERT INTO TBLCALENDAR(ISHOLIDAY,DATUM) VALUES(0,''13.07.2010'');'); end; TMPSQL.AutoCommit := True; TMPSQL.Execute; (* Abfrage freigeben *) TMPSQL.Free; end;
SQL-Code:
Ich greife über Firebird embedded darauf zu, Verbindung und auch Abfragen funktionieren tadellos :(
CREATE TABLE TBLCALENDAR (
ID INTEGER NOT NULL, DATUM DATE NOT NULL, ANWESEND SMALLINT, BEREITSCHAFT SMALLINT, NOTARZT SMALLINT, ISHOLIDAY SMALLINT DEFAULT 0 NOT NULL); ALTER TABLE TBLCALENDAR ADD PRIMARY KEY (ID); SET TERM ^ ; CREATE TRIGGER BI_TBLCALENDAR_ID FOR TBLCALENDAR ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(TBLCALENDAR_ID_GEN, 1); END^ SET TERM ; ^ Danke für Eure Hilfe! SCRaT |
Re: Bekomme kein INSERT mit FB und IBDAC hin!?!
Ich würde es mit einer parametrisierten Abfrage veruchen.
|
Re: Bekomme kein INSERT mit FB und IBDAC hin!?!
Probiere es mal so :
Delphi-Quellcode:
procedure TPlanner.PCreateMonthInDB(Month: Byte; Year: Integer);
VAR TMPSQL : TIBCSQL; i : Integer; begin (* Kalender in Datenbank erstellen *) TMPSQL := TIBCSQL.Create(nil); for I := 1 to 31 do begin TMPSQL.SQL.Add('INSERT INTO TBLCALENDAR(ISHOLIDAY,DATUM) VALUES(:Holiday, :Holidaydatum);'); TMPSQL.ParamByName('Holiday').AsInteger := 0; TMPSQL.ParamByName('Holidaydatum').AsDateTime := StrToDateTime('13.07.2010'); end; TMPSQL.AutoCommit := True; TMPSQL.Execute; (* Abfrage freigeben *) TMPSQL.Free; end; |
Re: Bekomme kein INSERT mit FB und IBDAC hin!?!
Delphi-Quellcode:
Leider dasselbe Problem...
[...]
for I := 1 to 31 do begin TMPSQL.SQL.Add('INSERT INTO TBLCALENDAR(ISHOLIDAY,DATUM) VALUES(:Test1,:Test2);'); end; TMPSQL.ParamByName('Test1').AsInteger := 0; TMPSQL.ParamByName('Test2').AsDate := Now; [...] |
Re: Bekomme kein INSERT mit FB und IBDAC hin!?!
Noch besser:
Delphi-Quellcode:
TMPSQL.SQL.Text := 'INSERT INTO TBLCALENDAR(ISHOLIDAY,DATUM) VALUES(:Holiday, :Holidaydatum);';
TMPSQL.AutoCommit := True; for I := 1 to 31 do begin TMPSQL.ParamByName('Holiday').AsInteger := 0; TMPSQL.ParamByName('Holidaydatum').AsDateTime := StrToDateTime('13.07.2010'); TMPSQL.Execute; end; |
Re: Bekomme kein INSERT mit FB und IBDAC hin!?!
Vielen Dank für Eure Hilfe, es hat geklappt!! :cheers:
Aber warum MUSS(?) man parametisierte Abfragen benutzen? WARUM funktioniert mein 1. Vorschlag nicht, rein formal ist er doch ok, oder? |
Re: Bekomme kein INSERT mit FB und IBDAC hin!?!
Um ein Skript auszuführen musst du temporär das Termsymbol (SET TERM) ändern, so dass das Ende eines Befehls und das Ende des Skriptes unterschieden werden kann
|
Re: Bekomme kein INSERT mit FB und IBDAC hin!?!
Werd ich mir mal anschauen...
Gab noch eine kurze Schrecksekunde, die Tabelle war trotz erfolgrechem Insert leer, ein XXXConnection.Commit; hat aber geholfen. Warum muss ich denn das nochmals committen, wenn ich AutoCommit auf True stehen habe? (Ja, bei der Connection steht es auf False...) |
Re: Bekomme kein INSERT mit FB und IBDAC hin!?!
Zu deiner Tabellenstruktur:
Du solltest das Feld ID ganz weglassen und stattdessen das Feld DATUM zum Primärschlüssel machen. Dann sparst du dir den Trigger, gewinnst mehr Leistung und ausserdem darf es ja pro Datum nur einen Datensatz geben. |
Re: Bekomme kein INSERT mit FB und IBDAC hin!?!
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:05 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