Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Parameter not set in Query String (https://www.delphipraxis.net/92638-parameter-not-set-query-string.html)

Svenkan 23. Mai 2007 17:58

Datenbank: dBase • Zugriff über: BDE + TQuery

Parameter not set in Query String
 
Delphi-Quellcode:
  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;
Ich möchte, dass Daten ausgelesen werden, wo sich datum_hw zwischen VON und BIS befindet.
Allerdings bekomme ich dann die oben genannte Fehlermeldung.
Was mache ich falsch?

Gremlin 23. Mai 2007 19:38

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...

Svenkan 23. Mai 2007 19:45

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.

mkinzler 23. Mai 2007 19:47

Re: Parameter not set in Query String
 
Dein Ansatz hätte aber das Feld parametrisiert

Svenkan 23. Mai 2007 19:49

Re: Parameter not set in Query String
 
Parametri..was? oO

mkinzler 23. Mai 2007 19:56

Re: Parameter not set in Query String
 
Zitat:

:datum_hw

Svenkan 27. Mai 2007 12:57

Re: Parameter not set in Query String
 
Ich probiers mal eben aus. ;)

Svenkan 27. Mai 2007 13:44

Re: Parameter not set in Query String
 
Type mismatch in expression :/

mkinzler 27. Mai 2007 13:49

Re: Parameter not set in Query String
 
Zeig mal den aktuellen Code und wo der Fehler auftritt.

Svenkan 27. Mai 2007 13:57

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

mkinzler 27. Mai 2007 14:05

Re: Parameter not set in Query String
 
Du mußt den(die) Wert(e) als Parameter nehme und nicht das Feld.

Svenkan 28. Mai 2007 12:55

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').AsString := FormatDateTime('YYYYMMDD',today);
  Query5.ParamByName('von').AsString := Query5.FieldByName('VON').AsString;
  Query5.ParamByName('bis').AsString := Query5.FieldByName('BIS').AsString;
  Query5.Open;
VON und BIS sind DATE-Werte. Also habe ich mein Datum nun dahingehend formatiert.
Allerdings bekomm ich immer noch keine Ergebnisse daraus. :(

mkinzler 28. Mai 2007 19:14

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:
Query5.SQL.Text := 'SELECT * FROM "AB'+sj+'"';
Query5.SQL.Add('WHERE <feld> between :von AND :bis');
...
Auch das setzen dieser Parameter zeigt dein fehlendes Verständis der Materie.
Delphi-Quellcode:
Query5.ParamByName('von').Value <Startdatum>;
Query5.ParamByName('bis').Value := <Enddatum>;

Svenkan 28. Mai 2007 19:22

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.

mkinzler 28. Mai 2007 19:27

Re: Parameter not set in Query String
 
Delphi-Quellcode:
Query5.SQL.Add('WHERE von <= CURRENT_DATE and bis >= CURRENT_DATE ');

Svenkan 29. Mai 2007 12:32

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).

mkinzler 29. Mai 2007 12:37

Re: Parameter not set in Query String
 
Ist m.W. eigentlich Teil des SQL-Standards. Welche Version
http://dev.mysql.com/doc/refman/5.0/...functions.html

Svenkan 29. Mai 2007 12:52

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?

mkinzler 29. Mai 2007 12:57

Re: Parameter not set in Query String
 
Zitat:

Wo liegt denn das Problem, wenn man das Datum als String-Parameter übergibt?
Dann müssen die datumseinstellungen des Systems mit denen des Servers übereinstimmen

Svenkan 29. Mai 2007 13:05

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:

mkinzler 29. Mai 2007 13:08

Re: Parameter not set in Query String
 
Entsorge doch den Klotz (BDE) und versuche eine andere Zugriffsmethode

Svenkan 29. Mai 2007 13:15

Re: Parameter not set in Query String
 
Was könntest du mir denn da empfehlen?

mkinzler 29. Mai 2007 13:18

Re: Parameter not set in Query String
 
AnyDAC, http://zeosforum.net.ms/, http://crlab.com/mydac/, ...


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