![]() |
Datenbank: mySQL • Zugriff über: Zeos
IN-String als Parameter?
Hallo zusammen,
als Verfechter von "ParamByName" habe ich leider momentan eine Blockade, wie ich einen String in der Form (so liegt er in der DB und eingelesen wird er in der Variablen strWERTE):
Delphi-Quellcode:
als Parameter in die IN-Bedingung eines SQL-Statements bekomme:
'WERT1', 'WERT2', 'WERT3'
Delphi-Quellcode:
Aussehen muss es ja später so:
'... WHERE i.PAGID IN (:WERT) ...';
ZQuery.ParamByName('WERT').AsString:=strWERTE;
Delphi-Quellcode:
Gruß Igotcha
... IN ('WERT1', 'WERT2', 'WERT3')
|
Re: IN-String als Parameter?
Hi Igotcha,
hierbei handelt es sich um sogenannte Substitution-Parameter oder -Variablen, die du benötigst, das heißt, der Wert, den du in den Parameter einträgst, wird im SQL ersetzt. Damit wäre zum Beispiel dann Folgendes theoretisch möglich (wenn die Datenbank geschachtelte SELECTs unterstützt):
Delphi-Quellcode:
Leider unterstützen die Zeos-Komponenten diese Art der Parameter im Moment (noch) nicht.
ZQuery.SQL.Text := 'SELECT * FROM Werte WHERE Wert IN (:Wert)';
with ZQuery.ParamByName('Wert') do begin Value := 'SELECT Wert FROM AndereWerte WHERE Wert > 0'; ParamType := ptSubst; // gibt's (noch) nicht... end; Eine Möglichkeit ohne das - wie ich finde - von der Optik ;-) unschöne Verketten von Strings wäre:
Delphi-Quellcode:
MfG
ZQuery.SQL.Text := Format('SELECT * FROM Werte WHERE Wert IN (%s)', [Wert]);
Stevie |
Re: IN-String als Parameter?
Danke Dir, aber mit Verkettung kann ich es auch hinbekommen ;-)
Meine Frage bezog sich ja mehr darauf, warum ein in der DB abgelegter String der Form (so steht er in der DB) 'WERT', 'WERT2', 'WERT3' offensichtlich so nicht als Parameter übergeben werden kann? Und hier war die Frage nicht, wie ich diesen auslese, sondern eher in Bezug auf die ''. Wenn ich diesen String aus der DB in eine Variable auslese, was steht dann in der Variablen? '\'WERT1\', \'WERT2\', \'WERT3\'' Gebe ich direkte ein "... IN ('WERT', 'WERT2', 'WERT3')" funktioniert die Abfrage. Gruß Igotcha P.S. Wobei das von Dir aufgeführte Beispiel auch sehr nett wäre, wenn es möglich wäre ;-) |
Re: IN-String als Parameter?
Zitat:
SQL-Code:
ist ja demnach nix anderes, als
SELECT ... IN ('Wert1', 'Wert2', 'Wert3')
SQL-Code:
SELECT ... (Wert = 'Wert1) OR (Wert = 'Wert2') OR (Wert = 'Wert3')
|
Re: IN-String als Parameter?
Hi.
Zitat:
mfg, Waldteufel |
Re: IN-String als Parameter?
Zitat:
Hintergrund ist, dass man in der DB bestimmte Selektions-Sichten hinterlegen kann. Ich möchte in einem Feld die Selektionskriterien für das IN bereits so hinterlegen und dann nur noch per ParamByName übergeben, da die Anzahl der "Werte" variieren kann. |
Re: IN-String als Parameter?
Nee, da wird's dann erstmal keine Param-Lösung für geben fürchte ich.
Das musste, wie gesagt über Verkettung machen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:25 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