![]() |
Datenbank: Firebird • Version: 2.5.1 • Zugriff über: UniDAC
SQL Select IN Abfrage mit Parameter ?
Delphi-Quellcode:
Frage: Kann man für die FELD1 IN Abfrage auch mit Parametern arbeiten, & wenn ja wie ?
SQL.Clear;
SQL.Add('SELECT'); SQL.Add(' FELD1, FELD2, DATUM'); SQL.Add('WHERE'); SQL.Add(' FELD1 IN (1,2,3,4,5,6,7,8,9) AND'); SQL.Add(' DATUM >= :DATE1'); SQL.Add('ORDER BY'); SQL.Add(' FELD1 DESC'); ParamCheck := true; ParamByName('DATE1').AsDateTime:= StartOfTheDay(DateTimePicker1.Date); Grüße user0815 |
AW: SQL Select IN Abfrage mit Parameter ?
"...IN (:p00, :p01, :p02, :p03, ...)" geht bei MySQL zumindest prima.
|
AW: SQL Select IN Abfrage mit Parameter ?
Ich vermute mal er meint aber ein Parameter für die Liste. Und das geht bei den mir bekannten DBMS nicht.
|
AW: SQL Select IN Abfrage mit Parameter ?
Schade + Danke !
Also ne Parameter Schleife für die Werte 'bauen', .... |
AW: SQL Select IN Abfrage mit Parameter ?
Geht denn sowas?
Delphi-Quellcode:
Den String für das Makro müßte man berechnen lassen, oder, wenn's mit Makro nicht geht, dann StringReplace oder so, direkt ins SQL.Text
SQL.Clear;
SQL.Add('SELECT'); SQL.Add(' FELD1, FELD2, DATUM'); SQL.Add('WHERE'); SQL.Add(' FELD1 IN (&liste) AND'); SQL.Add(' DATUM >= :DATE1'); SQL.Add('ORDER BY'); SQL.Add(' FELD1 DESC'); ParamCheck := true; ParamByName('DATE1').AsDateTime:= StartOfTheDay(DateTimePicker1.Date); MakroByName('DATE1').Value:= ':p0,:p1,:p2,:p3'; ParamByName('p0').AsIrgendwas:= ...; ParamByName('p1').AsIrgendwas:= ...; Ohne das Makro hatte ich sowas mal verwendet. :oops: |
AW: SQL Select IN Abfrage mit Parameter ?
Die Frage war nach Parametern. Ich kenne auch kein DBMS, dass einen Listentypen in dieser Weise unterstützen würde. Man könnte sich ansonsten noch ggf. über eine temporäre Tabelle helfen, die man dann joined. Dann müsste man diese befüllen statt String-Gewurschtel, klingt üppiger, gefiele mir aber grad bei variabler Anzahl der Listenitems irgendwie besser.
|
AW: SQL Select IN Abfrage mit Parameter ?
|
AW: SQL Select IN Abfrage mit Parameter ?
Du könntest auch eine temporäre Tabelle verwenden:
Code:
WHERE FELD1 IN (SELECT FELD1 FROM #Temp)
|
AW: SQL Select IN Abfrage mit Parameter ?
Bei den UniDACs gibt es die Möglichkeit Macros in deinem Statement unterzubringen. Damit kann man auch eine Parameterliste sauber übergeben. Ist in der Hilfe gut beschrieben.
Grüße Mikhal |
AW: SQL Select IN Abfrage mit Parameter ?
DANKE !
In der Hilfe gefunden, ausprobiert, funktioniert. Zitat:
Delphi-Quellcode:
SQL.Clear;
SQL.Add('SELECT'); SQL.Add(' FELD1, FELD2, DATUM'); SQL.Add('WHERE'); SQL.Add(' FELD1 IN (&Feldwerte) AND'); SQL.Add(' DATUM >= :DATE1'); SQL.Add('ORDER BY'); SQL.Add(' FELD1 DESC'); ParamCheck := true; ParamByName('DATE1').AsDateTime:= StartOfTheDay(DateTimePicker1.Date); MacroByName('Feldwerte').Value := '1,2,3,4,5,6,7,8,9'; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:56 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