![]() |
Datenbank: FB • Version: 1.5 • Zugriff über: BDE
Query: Parameter nicht gefunden
Hallo,
jaja BDE, immer noch, bin ja schon beim Umstellen ;) Aber nun zur Frage
Delphi-Quellcode:
Hier kommt beim 1. und 2. ParamByName ein Fehler ?
Query: TQuery
with Query do begin SQL.Clear; SQL.Add('Select * From ResPersonGroup_Person'); SQL.Add('Where ((PersonalId=:PersonalId)'); SQL.Add('And (Not ((:TheEndDate<StartDate) Or (:TheStartDate>EndDate))))'); ParamByName('TheEndDate').AsDateTime := theEndDate; <<-- hier kommt der Fehler ParamByName('TheStartDate').AsDateTime := theStartDate; ParamByName('PersonalId').AsInteger := thePersonalId; ParamByName('PersonalId') klappt noch (wenn ich die Zeilen mal umdrehe) Ein Params[x] klappt auch (so habe ich das jetzt erst mal "notgelöst") Was ist den hier kaputt ??? Das hatte ich ja noch nie. Hat das vielleicht damit zu tun, dass die BDE damit überfordert ist, weil der Parameter vor dem Wert steht ?. Ein verwunderter Heiko OK: Lösung
Delphi-Quellcode:
Hm, die BDE hat sich wohl doch daran gestört, dass der Parameter vor dem Vergleich stand.
SQL.Clear;
SQL.Add('Select * From ResPersonGroup_Person'); SQL.Add('Where (PersonalId=:PersonalId)'); SQL.Add('And (Not ((StartDate>=:TheEndDate) Or (EndDate<=:TheStartDate)))'); ParamByName('PersonalId').AsInteger := thePersonalId; ParamByName('TheEndDate').AsDateTime := theStartDate; ParamByName('TheStartDate').AsDateTime := theEndDate; |
Re: Query: Parameter nicht gefunden
Was für ein Fehler kommt?
Zitat:
BTW. Statt .Clear + .Add besser .Text Zu viele Klammern erschweren die Übersicht. |
Re: Query: Parameter nicht gefunden
Vorab : komme nicht auf die Idee in Zukunft ein TFIBQuery zu verwenden. Immer Datasets ! :zwinker:
Die Frage ist allerdings logisch nicht nachzuvollziehen. Da wird lediglich ein String zusammengesetzt. Der wird an die DB geschickt und das sollte es sein. Das dürfte sogar die BDE können. Aber wer weiß ? :mrgreen: |
Re: Query: Parameter nicht gefunden
Hi,
IMHO sollte vor der Benutzung von Parametern ein Prepare erfolgen. Bei Zuweisung von SQL im Code würde ich auch vorher ein UnPrepare aufrufen. [EDIT] also
Delphi-Quellcode:
Cu, Frank
if Prepared then
UnPrepare; SQL.Clear; SQL.Add('Select *...'); Prepare; ParamByName('PersonalId').AsInteger := thePersonalId; ... |
Re: Query: Parameter nicht gefunden
Ist zwar normalerweise völlig überflüssig, aber bei der BDE könnte er damit Recht haben.
|
Re: Query: Parameter nicht gefunden
Hallo,
mit dem FBDataSet kann ich mich nicht soanfreunden .. ;) Zumal ich noch zu tun habe, ein paar olle TTable zu entfernen ... ;( zum Prepare: Wozu soll das gut sein ? Die BDE, FIBPlus, Zeos usw. preparen automatisch. Die Query wird nur einmal aufgerufen, keine Schleife usw. Zu Bde: die Bde prüft bei ParamCheck=True, ob der Parameter überhaupt in der Query existiert. Der SQL-Monitor hat auch gezeigt. Egal, ich habe den Parameter jetzt hinter dem Operator, da geht es. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:53 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