AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi IN-String als Parameter?
Thema durchsuchen
Ansicht
Themen-Optionen

IN-String als Parameter?

Ein Thema von Igotcha · begonnen am 25. Apr 2005 · letzter Beitrag vom 25. Apr 2005
Antwort Antwort
Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#1

IN-String als Parameter?

  Alt 25. Apr 2005, 12:44
Datenbank: mySQL • Zugriff über: Zeos
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):

'WERT1', 'WERT2', 'WERT3' als Parameter in die IN-Bedingung eines SQL-Statements bekomme:

Delphi-Quellcode:
'... WHERE i.PAGID IN (:WERT) ...';
ZQuery.ParamByName('WERT').AsString:=strWERTE;
Aussehen muss es ja später so:

... IN ('WERT1', 'WERT2', 'WERT3') Gruß Igotcha
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

Re: IN-String als Parameter?

  Alt 25. Apr 2005, 13:40
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:
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;
Leider unterstützen die Zeos-Komponenten diese Art der Parameter im Moment (noch) nicht.

Eine Möglichkeit ohne das - wie ich finde - von der Optik unschöne Verketten von Strings wäre:
ZQuery.SQL.Text := Format('SELECT * FROM Werte WHERE Wert IN (%s)', [Wert]); MfG
Stevie
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#3

Re: IN-String als Parameter?

  Alt 25. Apr 2005, 13:54
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
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

Re: IN-String als Parameter?

  Alt 25. Apr 2005, 14:24
Zitat:
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?
Ähm? Ist das jetzt ein Wert, oder sind das mehrere?

SELECT ... IN ('Wert1', 'Wert2', 'Wert3') ist ja demnach nix anderes, als
SELECT ... (Wert = 'Wert1) OR (Wert = 'Wert2') OR (Wert = 'Wert3')
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Waldteufel
(Gast)

n/a Beiträge
 
#5

Re: IN-String als Parameter?

  Alt 25. Apr 2005, 14:26
Hi.

Zitat von Stevie:
SELECT ... IN ('Wert1', 'Wert2', 'Wert3') ist ja demnach nix anderes, als
SELECT ... (Wert = 'Wert1) OR (Wert = 'Wert2') OR (Wert = 'Wert3')
Genau.

mfg, Waldteufel
  Mit Zitat antworten Zitat
Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#6

Re: IN-String als Parameter?

  Alt 25. Apr 2005, 14:45
Zitat von Stevie:
Zitat:
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?
Ähm? Ist das jetzt ein Wert, oder sind das mehrere?
Das ist ein Wert, in einem VARCHAR-Feld in der DB abgelegt.

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.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

Re: IN-String als Parameter?

  Alt 25. Apr 2005, 14:58
Nee, da wird's dann erstmal keine Param-Lösung für geben fürchte ich.
Das musste, wie gesagt über Verkettung machen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:15 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