AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL Select IN Abfrage mit Parameter ?
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Select IN Abfrage mit Parameter ?

Ein Thema von user0815 · begonnen am 30. Okt 2012 · letzter Beitrag vom 31. Okt 2012
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#1

SQL Select IN Abfrage mit Parameter ?

  Alt 30. Okt 2012, 13:41
Datenbank: Firebird • Version: 2.5.1 • Zugriff über: UniDAC
Delphi-Quellcode:
  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);
Frage: Kann man für die FELD1 IN Abfrage auch mit Parametern arbeiten, & wenn ja wie ?

Grüße
user0815
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: SQL Select IN Abfrage mit Parameter ?

  Alt 30. Okt 2012, 13:42
"...IN (:p00, :p01, :p02, :p03, ...)" geht bei MySQL zumindest prima.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: SQL Select IN Abfrage mit Parameter ?

  Alt 30. Okt 2012, 14:00
Ich vermute mal er meint aber ein Parameter für die Liste. Und das geht bei den mir bekannten DBMS nicht.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#4

AW: SQL Select IN Abfrage mit Parameter ?

  Alt 30. Okt 2012, 14:06
Schade + Danke !

Also ne Parameter Schleife für die Werte 'bauen', ....
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: SQL Select IN Abfrage mit Parameter ?

  Alt 30. Okt 2012, 14:11
Geht denn sowas?
Delphi-Quellcode:
  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:= ...;
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
Ohne das Makro hatte ich sowas mal verwendet.
$2B or not $2B
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#6

AW: SQL Select IN Abfrage mit Parameter ?

  Alt 30. Okt 2012, 14:12
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.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#7

AW: SQL Select IN Abfrage mit Parameter ?

  Alt 30. Okt 2012, 14:28
ich mach das mit einer SP

Parameterliste für where .. IN (..)

alex
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: SQL Select IN Abfrage mit Parameter ?

  Alt 30. Okt 2012, 15:31
Du könntest auch eine temporäre Tabelle verwenden:
Code:
WHERE FELD1 IN (SELECT FELD1 FROM #Temp)
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: SQL Select IN Abfrage mit Parameter ?

  Alt 31. Okt 2012, 11:29
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
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#10

AW: SQL Select IN Abfrage mit Parameter ?

  Alt 31. Okt 2012, 11:53
DANKE !
In der Hilfe gefunden, ausprobiert, funktioniert.

Zitat:
Working with Macros
Macros help you to change SQL statements dynamically. They allow partial replacement of the query statement by user-defined text. Macros are identified by their names which are then referred from SQL statement to replace their occurrences for associated values.
First step is to assign macros with their names and values to a dataset object.
Then modify SQL statement to include macro names into desired insertion points. Prefix each name with & ("at") sign to let UniDAC discriminate them at parse time. Resolved SQL statement will hold macro values instead of their names but at the right places of their occurrences. For example, having the following statement with the TableName macro name:

SELECT * FROM &TableName

You may later assign any actual table name to the macro value property leaving your SQL statement intact.

Query1.SQL.Text := 'SELECT * FROM &TableName';
Query1.MacroByName('TableName').Value := 'Dept';
Query1.Open;

UniDAC replaces all macro names with their values and sends SQL statement to the server when SQL execution is requested.
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';
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:49 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