![]() |
Invalid use of keyword. Token .....
Hallo zusammen
Habe folgenden Code in meinem Programm (Delphi 7):
Delphi-Quellcode:
Wenn ich das Programm laufen lasse und auf den Button klicke erscheint die Fehelermeldung:
procedure TForm1.Button3Click(Sender: TObject);
begin DBGrid1.DataSource := DataSource4; Query1.Close; Query1.SQL.Clear; Query1.SQL.Add ('Select * from Kunde.DB'); Query1.SQL.Add('where Request_Formular='+DateToStr(DateTimePicker3.Date)); Query1.RequestLive := true; Query1.Open; end; Invalide use of keyword. Token = Request_Formular=23.08 Hier noch die Erklärung, was alles vorher abläuft, bevor das Programm zur Ausführung kommt: Bevor man auf diesen Button klickt muss man ein Datum aus einer DateTimePicker Komponente auswählen. Danach klickt man auf den "Suchen"-Button und nun soll die obige SQL-Abfrage im Datenbank-Feld "Request_Formular" das ausgewählte Datum suchen und mir alle Datensätze anzeigen, welche das gesuchte Datum enthalten. Leider geht's nit. Was ist falsch an diesem Code?? Vielen Dank für die Hilfe. |
Re: Invalid use of keyword. Token .....
Hallo Gelson62,
du solltest beim einbinden von Datumsangaben in SQL-Statements mit Parmetern arbeiten. Stichwort TQuery.ParamsByName.... Gruß ConstantGardener ps. vor dem WHERE fehlt auch noch ein Leerzeichen !! |
Re: Invalid use of keyword. Token .....
Herzlich willkommen in der Delphi-PRAXiS, Gelson62.
Die Fehlermeldung rührt daher, dass du dein Datum nicht als String-Literal in das Statement eingefügt hast - QuotedStr(DateToStr(DateTimePicker3.Date)) wäre richtig gewesen. Da du aber oft erst Handbücher wälzen musst um heraus zu finden, welches Format beim Datum erwartet wird, ist es wirklich besser, wenn du mit Parameterübergabe arbeitest:
Delphi-Quellcode:
Freundliche Grüße vom marabu
procedure TForm1.Button3Click(Sender: TObject);
begin DBGrid1.DataSource := DataSource4; with Query1 do begin SQL.Text := 'Select * from Kunde.DB where Request_Formular = :datum'; Params.ParamByName.AsDateTime := Trunc(DateTimePicker3.Date); // RequestLive := True; // besser im Object Inspector setzen Open; end; end; |
Re: Invalid use of keyword. Token .....
Danke marabu für die Hilfe
Ich glaube aber, dass da nicht genügend Parameter vorhanden sind. Wenn ich das Script solaufen lasse wie Du es ^schreibst meldet der Compiler das nicht genügend Parameter da sind bei "Params.ParamByName.AsDateTime". |
Re: Invalid use of keyword. Token .....
Er meinte
Delphi-Quellcode:
Params.ParamByName('datum').AsDateTime
|
Re: Invalid use of keyword. Token .....
Geht leider immer noch nicht. Compilieren kann er es jetzt, doch zur Laufzeit gibt es den Fehler:
Query1: Parameter 'datum' not found. Bin vielleicht zu blöd um den Fehler zu sehen. |
Re: Invalid use of keyword. Token .....
Wie sieht der Source denn jetzt aus?
|
Re: Invalid use of keyword. Token .....
Delphi-Quellcode:
Der sieht so aus
procedure TForm1.Button3Click(Sender: TObject);
begin DBGrid1.DataSource := DataSource4; with Query1 do begin SQL.Text := 'Select * from Kunde.DB where Request_Formular = :datum'; Params.ParamByName('datum').AsDateTime := Trunc(DateTimePicker3.Date); Open; end; end; |
Re: Invalid use of keyword. Token .....
Hi,
soweit ich mich erinnern kann, musst Du davor .UseParam(s) (oder ähnlich) auf true stellen:
Delphi-Quellcode:
DBGrid1.DataSource := DataSource4;
with Query1 do begin UseParams := true; SQL.Text := 'Select * from Kunde.DB where Request_Formular = :datum'; Params.ParamByName('datum').AsDateTime := Trunc(DateTimePicker3.Date); Open; end; end; |
Re: Invalid use of keyword. Token .....
Das wäre mir neu. Aber evtl. hilft ein Close vor dem Neubelegen des SQL.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:22 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