Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Token unknown (https://www.delphipraxis.net/76898-token-unknown.html)

rbertus2000 11. Sep 2006 19:41

Datenbank: Interbase • Version: 6 • Zugriff über: dbexpress

Token unknown
 
Hallo,
ich habe ein kleines Problem mit einer Interbase Datenbank. Wenn ich über Tsqlquery per Insert einen neuen Datensatz einfügen will, sagt er mir immer "Datenbank-Server-Fehler: Token unknown - line 1, char 15 aufgetreten". Was mache ich falsch?
Hier ist mein Quellcode:
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
var
  q: WideString;
begin
q:= 'Insert into aeg.Schueler (id, Firstname, Lastname, Birthdate, Klasse) Values('+edit1.Text+','+edit2.Text+','+edit3.Text+','+edit4.Text+','+edit5.Text+')';
form1.SQLQuery1.SQL.Clear;
form1.SQLQuery1.SQL.Add(q);
form1.SQLQuery1.ExecSQL;
end;
Ich hoffe, das mir jemand helfen kann.

marabu 11. Sep 2006 20:02

Re: Token unknown
 
Hallo.

Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
begin
  with Form1.SQLQuery1 do
  begin
    SQL.Text := 'Insert into Schueler (id, Firstname, Lastname, Birthdate, Klasse) '
              + 'Values(:id, :firstname, :lastname, :birthdate, :klasse)'
              ;
    Params.ParamByName('id').AsInteger := StrToInt(Edit1.Text);
    Params.ParamByName('schueler').AsString := Edit2.Text;
    // ...
    ExecSQL;
  end;
end;
Der direkte Zugriff von Form3 auf Form1.SQLQuery1 ist nicht die beste Lösung. Deine Komponenten tragen alle noch die von der IDE vorgeschlagenen Namen. Die Komposition des INSERT-Statements durch String concatenation ist nicht sicher - bisweilen fehlen dann Quotes. Die property SQL hat eine Eigenschaft Text, was oft ein SQL.Clear überflüssig macht. Eventuell solltest du dir mal die Komponente SQLDataset anschauen. Fehlerbehandlung ist noch keine sichtbar. Das reicht erstmal.

Gute Nacht

marabu

rbertus2000 11. Sep 2006 21:33

Re: Token unknown
 
Danke für die Antwort. Bei deiner Lösung erhalte ich aber trotzdem den gleichen Fehler. Na egal. Ich hab es jetzt mittels SqlDataset gemacht und es funktioniert super. Danke für den Tipp.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz