![]() |
Datenbank: dBase • Zugriff über: BDE + TQuery
Parameter not set in Query String
Delphi-Quellcode:
Ich möchte, dass Daten ausgelesen werden, wo sich datum_hw zwischen VON und BIS befindet.
Query5.Close;
Query5.SQL.Text := 'SELECT * FROM "AB'+sj+'"'; Query5.SQL.Add('WHERE :datum_hw BETWEEN VON AND BIS'); Query5.SQL.Add('ORDER BY NAME ASC, STUNDEN ASC'); Query5.ParamByName('datum_hw').Value := IntToStr(DateTimeToUnix(today)); Query5.Open; Allerdings bekomme ich dann die oben genannte Fehlermeldung. Was mache ich falsch? |
Re: Parameter not set in Query String
Sorry hab nicht ganz verstanden was du haben möchtest: einen Datumswert (Param) innerhalb von zwei Datumswerten (Feldern) oder einen Datumswert (Feld) über zwei Datumswerte ermitteln?
Bei deinem Beispiel muss der Wert vor 'between' das Feld sein und nach 'between' sollte der Abfragebereich stehen. Hmm, ich bin aber nicht sicher, ob die BDE die Syntax über dBase-Tabellen zulässt.
Delphi-Quellcode:
[...]
Query.SQL.Add('Select * from ...'); Query.SQL.Add(' where (Von <= :Wert) and (Bis >= :Wert)'); Query.ParamByName('Wert').AsInteger := DateTimeToUnix...
Delphi-Quellcode:
[...]
Query.SQL.Add('Select * from ...'); Query.SQL.Add(' where (Feld >= :Von) and (Feld <= :Bis)'); Query.ParamByName('Von').AsInteger := DateTimeToUnix... Query.ParamByName('Bis').AsInteger := DateTimeToUnix... // bzw. [...] Query.SQL.Add('Select * from ...'); Query.SQL.Add(' where (Feld between :Von and :Bis)'); Query.ParamByName('Von').AsInteger := DateTimeToUnix... Query.ParamByName('Bis').AsInteger := DateTimeToUnix... |
Re: Parameter not set in Query String
Ja, ich war mir da auch nicht so wirklich sicher, wie ich das machen soll.
Er soll nämlich Daten abrufen, bei dem das jeweiligen Datum zwischen VON und BIS liegt. |
Re: Parameter not set in Query String
Dein Ansatz hätte aber das Feld parametrisiert
|
Re: Parameter not set in Query String
Parametri..was? oO
|
Re: Parameter not set in Query String
Zitat:
|
Re: Parameter not set in Query String
Ich probiers mal eben aus. ;)
|
Re: Parameter not set in Query String
Type mismatch in expression :/
|
Re: Parameter not set in Query String
Zeig mal den aktuellen Code und wo der Fehler auftritt.
|
Re: Parameter not set in Query String
Delphi-Quellcode:
Query5.Close;
Query5.SQL.Text := 'SELECT * FROM "AB'+sj+'"'; Query5.SQL.Add('WHERE (:datum_hw >= VON AND :datum_hw <= BIS)'); Query5.SQL.Add('ORDER BY NAME ASC, STUNDEN ASC'); Query5.ParamByName('datum_hw').AsInteger := DateTimeToUnix(today); Query5.Open; <~~~ dort tritt der Fehler dann auf |
Re: Parameter not set in Query String
Du mußt den(die) Wert(e) als Parameter nehme und nicht das Feld.
|
Re: Parameter not set in Query String
Delphi-Quellcode:
VON und BIS sind DATE-Werte. Also habe ich mein Datum nun dahingehend formatiert.
Query5.Close;
Query5.SQL.Text := 'SELECT * FROM "AB'+sj+'"'; Query5.SQL.Add('WHERE (:datum_hw = :von) AND (:datum_hw <= :bis)'); Query5.SQL.Add('ORDER BY NAME ASC, STUNDEN ASC'); Query5.ParamByName('datum_hw').AsString := FormatDateTime('YYYYMMDD',today); Query5.ParamByName('von').AsString := Query5.FieldByName('VON').AsString; Query5.ParamByName('bis').AsString := Query5.FieldByName('BIS').AsString; Query5.Open; Allerdings bekomm ich immer noch keine Ergebnisse daraus. :( |
Re: Parameter not set in Query String
Wenn mnan dir sagt das Feld nicht als parameter, dann meint man das normalerweise auh, insbesondere wenn man dies wiederholt anmahnt.
Delphi-Quellcode:
Auch das setzen dieser Parameter zeigt dein fehlendes Verständis der Materie.
Query5.SQL.Text := 'SELECT * FROM "AB'+sj+'"';
Query5.SQL.Add('WHERE <feld> between :von AND :bis'); ...
Delphi-Quellcode:
Query5.ParamByName('von').Value <Startdatum>;
Query5.ParamByName('bis').Value := <Enddatum>; |
Re: Parameter not set in Query String
Ja aber ich will doch nicht rausfinden, ob sich ein Feldwert zwischen 2 anderen Werten befindet, sondern ein Wert zwischen den Werten aus 2 Feldern.
VON und BIS sind die beiden Felder aus der Datenbank. datum_hw ist das heutige Datum. |
Re: Parameter not set in Query String
Delphi-Quellcode:
Query5.SQL.Add('WHERE von <= CURRENT_DATE and bis >= CURRENT_DATE ');
|
Re: Parameter not set in Query String
Mhm..CURRENT_DATE ist doch eigtl feststehend in MySQL implementiert, oder nicht?
Auf jeden Fall funktioniert es damit auch nicht (invalid Fieldname). |
Re: Parameter not set in Query String
Ist m.W. eigentlich Teil des SQL-Standards. Welche Version
![]() |
Re: Parameter not set in Query String
Aus diesem Grund wundert es mich ja auch, dass die BDE nichts damit anfangen kann.
Ich habe es auch mal probiert mit CURDATE, allerdings kennt er das genauso wenig. Wo liegt denn das Problem, wenn man das Datum als String-Parameter übergibt? |
Re: Parameter not set in Query String
Zitat:
|
Re: Parameter not set in Query String
Es wird ja eh immer auf eine lokale Datei zugegriffen.
Also von daher wird es dort nie zu irgendwelchen Abweichungen kommen. Nur leider ist mir auch aufgefallen, selbst wenn ich das Datum richtig umforme und über den Stringparameter übergebe, bekomme ich keinerlei Ergebnisse. Ich bin hier grad echt langsam am Verzweifeln, weil ich auf keinerlei Weise auch nur irgendwie an richtige Ergebnisse komme. :wall: |
Re: Parameter not set in Query String
Entsorge doch den Klotz (BDE) und versuche eine andere Zugriffsmethode
|
Re: Parameter not set in Query String
Was könntest du mir denn da empfehlen?
|
Re: Parameter not set in Query String
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:59 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