AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Query: Parameter nicht gefunden
Thema durchsuchen
Ansicht
Themen-Optionen

Query: Parameter nicht gefunden

Ein Thema von hoika · begonnen am 5. Okt 2007 · letzter Beitrag vom 5. Okt 2007
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#1

Query: Parameter nicht gefunden

  Alt 5. Okt 2007, 09:51
Datenbank: FB • Version: 1.5 • Zugriff über: BDE
Hallo,

jaja BDE, immer noch, bin ja schon beim Umstellen

Aber nun zur Frage

Delphi-Quellcode:
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;
Hier kommt beim 1. und 2. ParamByName ein Fehler ?
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:
      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;
Hm, die BDE hat sich wohl doch daran gestört, dass der Parameter vor dem Vergleich stand.
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Query: Parameter nicht gefunden

  Alt 5. Okt 2007, 09:59
Was für ein Fehler kommt?
Zitat:
weil der Parameter vor dem Wert steht ?.
Dann dreh die Bedingung doch mal um.

BTW.
Statt .Clear + .Add besser .Text
Zu viele Klammern erschweren die Übersicht.
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: Query: Parameter nicht gefunden

  Alt 5. Okt 2007, 10:13
Vorab : komme nicht auf die Idee in Zukunft ein TFIBQuery zu verwenden. Immer Datasets !

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ß ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Query: Parameter nicht gefunden

  Alt 5. Okt 2007, 10:41
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:
if Prepared then
  UnPrepare;
SQL.Clear;
SQL.Add('Select *...');
Prepare;
ParamByName('PersonalId').AsInteger := thePersonalId;
...
Cu, Frank
Frank Reim
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: Query: Parameter nicht gefunden

  Alt 5. Okt 2007, 10:46
Ist zwar normalerweise völlig überflüssig, aber bei der BDE könnte er damit Recht haben.
Gruß
Hansa
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Query: Parameter nicht gefunden

  Alt 5. Okt 2007, 14:47
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
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:56 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