![]() |
Datenbank: Firebird • Version: 2.0 • Zugriff über: Zeoslib
Generierter Insert-Befehl erzeugt Fehler
Hallo zusammen,
ich erzeuge mit der folgenden Procedure einen INSERT-Befehl und einen UPDATE-Befehl.
Delphi-Quellcode:
In der Datei Buchungen.txt erhalte ich folgenden INSERT-Befehl:
procedure TMainPostForm.BBtn_PostClick(Sender: TObject);
var s_fullname: string; sqltext1, sqltext2: string; begin with MainDataModule.ZQueryTemp do begin SQL.Clear; SQL.Text := 'SELECT count(*) from buchungen where serialnumber = ''' + LEdt_Serialnumber.Text + ''';'; Open; Active := true; if (not RBtn_Lager.Checked) and (not RBtn_Schrott.Checked) then if Fields[0].AsInteger = 1 then s_fullname := LEdt_Fullname.Text else s_fullname := LEdt_Fullname.Text else begin if RBtn_Lager.Checked then s_fullname := rsLagerStg; if RBtn_Schrott.Checked then s_fullname := rsSchrott; end; if Fields[0].AsInteger = 1 then begin sqltext1 := Format(s_toolexists, [s_fullname, LEdt_UserID.Text, CB_Department.Text, LEdt_Room.Text, CB_Company.Text, LEdt_CostCentre.Text, DateToStr(now), GetCurrUserName, M_Comment.Lines.Text, LEdt_SerialNumber.Text]); end else begin sqltext1 := s_toolcreate1 + #13#10 + Format(s_toolcreate2, [s_fullname, LEdt_UserID.Text, CB_Department.Text, LEdt_Room.Text, CB_Company.Text, CB_Department.Text, copy(LEdt_UserID.Text, 1, 2)]); sqltext2 := Format(s_toolcreate3, [LEdt_ProductID.Text, LEdt_ProductID.Text, LEdt_SerialNumber.Text, DateToStr(now), GetCurrUserName, M_Comment.Lines.Text]); end; Active := false; end; with MainDataModule.ZQuery do begin SQL.Clear; SQL.Add(sqltext1); SQL.Add(sqltext2); SQL.SaveToFile('D:\Buchungen.txt'); ExecSQL; end; close; end;
SQL-Code:
Wenn ich den Befehl nun mit der ZQuery ausführe, sagt er mit in Zeile 3 Spalte 104 ein unbekanntes Token. Wenn ich aber nun den Inhalt der Buchungen.txt in ein SQL-Editor (IBExpert) kopiere und dann ausführe, wird der Datensatz eingefügt.
INSERT INTO Buchungen(FULLNAME, USERID, DEPARTMENT, ROOM, COMPANY, COSTCENTRE, TOOLTYPE, PRODUCTID, SERIALNUMBER, UNSETTLED, FINISHED, CREATEDATE, CREATEUSERID, BEMERKUNGEN)
VALUES ('Mustermann,Max', 'gummu', 'IN41', '', 'Musterfirma', (SELECT * FROM proc_costcentre('IN41', 'gu')), (SELECT * FROM proc_tooltype('DSGAVIIDDRHPLSJT1320')), 'DSGAVIIDDRHPLSJT1320', 'CNMJP09920', 1, 0, '24.07.2007', 'Administrator', ''); Warum funktioniert das ganze über den SQL-Editor und nicht über die ZQuery ? Selbst dann, wenn ich den Inhalt manuell ins ZQuery.SQL schreibe und es dann per ZQuery.ExecSQl ausführe funktioniert es. |
Re: Generierter Insert-Befehl erzeugt Fehler
Erst ein mal ein Hinweis:
Da wo Du ''' benutzt, solltest Du mit der Funktion QuotedStr arbeiten. Einfach die Hilfe konsultieren. Die Fehlermeldung könnte von dem #13#10 kommen. Das wird eh nicht von SQL benötigt. Das txt-file machst Du sicher im Windows-Editor auf. Der korrigiert den falschen Zeilenumbruch. Beim rauskopieren des Textes und reinkopieren in den SQL-Editor stimmt dann alles. |
Re: Generierter Insert-Befehl erzeugt Fehler
Zitat:
Hat zwar nichts mit dem Problem zu tun, war mir aber aufgefallen. |
Re: Generierter Insert-Befehl erzeugt Fehler
Ich würde meinen in den SubSelects kommen mehrere Zeilen zurück. Das mag Insert IMHO nicht.
|
Re: Generierter Insert-Befehl erzeugt Fehler
Hallo Rolf,
du hast sicher schon nachgesehen, was an Stelle 104 in deinem beanstandeten SQL-Statement steht. Wenn ich an der richtigen Stelle hingeschaut habe, dann wird das nicht standardkonforme Datumsliteral bemängelt. ZEOS und IBExpert parsen das SQL-Statement und verwenden mit Sicherheit nicht den gleichen Parser. Mich irritiert ein wenig, dass du stored procedures aufrufst - und die dann auch noch mit "SELECT *". Grüße vom marabu |
Re: Generierter Insert-Befehl erzeugt Fehler
Zitat:
Zitat:
Zitat:
|
Re: Generierter Insert-Befehl erzeugt Fehler
Zitat:
|
Re: Generierter Insert-Befehl erzeugt Fehler
Hallo Rolf,
Zitat:
Freundliche Grüße |
Re: Generierter Insert-Befehl erzeugt Fehler
Die beiden Proceduren aus dem INSERT-Befehl geben eigentlich immer nur einen Wert zurück. Deshalb kann man sich jetzt drüber streiten, ob man es mit dem Sternchen schreibt oder nicht. So sehe ich das ganze.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 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