Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Werteliste als Parameter für TQuery (https://www.delphipraxis.net/44872-werteliste-als-parameter-fuer-tquery.html)

MPirnstill 26. Apr 2005 09:55

Datenbank: MS-SQL • Version: 2000 • Zugriff über: BDE

Werteliste als Parameter für TQuery
 
Hallo Leute,

ich möchte gerne eine SQL mit einer "in"-Bedingung absetzen, weiß aber nicht welchen Parametertyp ich hier bei TQuery benötige.
Die SQL-Anweisung funktioniert, wenn ich die in einem SQL-Abfrageprog eingebe und lautet wie folgt

Delphi-Quellcode:
SELECT * FROM MyTabelle WHERE MyIntWert in (3, 4, 23)
Jetzt möchte ich diese Werteliste "(3, 4, 23)" gern als Parameter übergeben, da nicht nur der Wert, sondern auch die Anzahl und der Werte in dieser Liste auch variieren kann. Eigentlich bräuchte man da als Parametertyp so etwas wie ein dynamisches Array, kann ich aber nicht finden.
Ich nutze Delphi 2.0, da dies eine Alt-Anwendung ist. War die erste Version mit der ich gearbeitet habe. Die lief wenigstens noch stabil.

Wäre für ein paar gute Tips offen. Danke.

Micha

Igotcha 26. Apr 2005 10:12

Re: Werteliste als Parameter für TQuery
 
Ich hatte gestern die gleiche Frage gestellt, nur bei mir waren es Strings in der Werteliste.

Resultat soweit: Es geht nicht per Parameter

Lösung: Werteliste als String dynamisch erstellen und per Verkettung in den SQL-String einbauen.

Gruß Igotcha

MPirnstill 26. Apr 2005 10:17

Re: Werteliste als Parameter für TQuery
 
Hey, danke erstmal für deine schnelle Antwort.

Ich habe deinen Thread gelesen, jedoch wurde das irgendwie etwas zerredet, deshalb hab ich's einfach noch mal mit meinen Worten versucht.

Micha

Igotcha 26. Apr 2005 10:26

Re: Werteliste als Parameter für TQuery
 
Na du mußt Dir die Werteliste "per Hand" basteln.

So in der Art:

- in einer Schleife bildest Du den String (ich weiss jetzt nicht, woher Du die Werte bekommst)

Delphi-Quellcode:
StrWerte:=strWerte+IntToStr(Wert)+', ';
- danach schneidest Du die letzten beiden Zeichen ab (StrUtils einbinden und dann mit LeftStr)

Delphi-Quellcode:
strWerte:=LeftStr(strWerte, Length(strWerte)-2);
- dann im SQL-String verketten

Delphi-Quellcode:
... WHERE MyIntWert in ('+strWerte+')...
Gruß Igotcha

Robert_G 26. Apr 2005 10:56

Re: Werteliste als Parameter für TQuery
 
Wenn die Wahrscheinkichkeit hoch ist, dass du das gleiche Statement wieder absetzt (auch mit anderen Werten) solltest du auch hier mit Parametern arbeiten.

Also die in-Clause mit Parametern statt Werten füllen und diesen dann die Werte zuweisen.
Wobei deratige Optimierungen auf einer Antiquität wie der BDE irgendwie lustig wirken. ;)

MPirnstill 26. Apr 2005 11:04

Re: Werteliste als Parameter für TQuery
 
Zitat:

Zitat von Robert_G
Wenn die Wahrscheinkichkeit hoch ist, dass du das gleiche Statement wieder absetzt (auch mit anderen Werten) solltest du auch hier mit Parametern arbeiten.

Also die in-Clause mit Parametern statt Werten füllen und diesen dann die Werte zuweisen.
Wobei deratige Optimierungen auf einer Antiquität wie der BDE irgendwie lustig wirken. ;)

Das ist ja genau das was ich will, jedoch gibt es bei TQuery keinen Parametertyp für Wertelisten/Arrays. Und jeden Wert der Liste als einzelnen Parameter übergeben ist in diesem Fall auch unsinnig, da ich mal einen Wert in der Liste, mal 3 oder auch 4 Werte in der Liste haben kann.

Micha


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:30 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 by Thomas Breitkreuz