Einzelnen Beitrag anzeigen

Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

Generierter Insert-Befehl erzeugt Fehler

  Alt 25. Jul 2007, 07:56
Datenbank: Firebird • Version: 2.0 • Zugriff über: Zeoslib
Hallo zusammen,

ich erzeuge mit der folgenden Procedure einen INSERT-Befehl und einen UPDATE-Befehl.
Delphi-Quellcode:
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;
In der Datei Buchungen.txt erhalte ich folgenden INSERT-Befehl:
SQL-Code:
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', '');
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.

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.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat