Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Mehrere Werte in einen Query-Parameter reinkriegen (https://www.delphipraxis.net/20249-mehrere-werte-einen-query-parameter-reinkriegen.html)

pistazie 15. Apr 2004 09:17


Mehrere Werte in einen Query-Parameter reinkriegen
 
Hallo Leute,

ich hab ein ganz blödes Problem, und zwar soll ein Query-Parameter vor dem Ausführen mehrere Werte annehmen und dann ausführen. Die Werte holt er sich von einer Stringliste, welche in einer Schleife über den Index i alle Werte an den Queryparameter übergibt. Mein Code sieht folgendermaßen aus:

For i:= 0 to (RLSDetailNr.Count-1) do
begin
Query1.Close;
Query1.ParamByName('Tabellenname').Value := Tabellenname; //nur 1 Wert
Query1.ParamByName('Feldbezeichnung').Value := Feldbezeichnung; //nur 1 Wert
Query1.Params.ParamByName('IDNummer').Value := StrToInt(RLSDetailNr.Stringsi]); //Hier i Werte
Query1.Open;
end;


Aber es funzt so nicht, es wird immer der erste i Wert ausgeführt oder der letzte, je nachdem ob ich das Query1.Close innerhalb oder außerhalb der Schleife plaziere. Wie kann ich das ändern, so dass mir die Query mit allen 3 Werten ausgeführt wird?

Danke im Voraus!

Leuselator 16. Apr 2004 11:49

Re: Mehrere Werte in einen Query-Parameter reinkriegen
 
je nach dem, welche DB Du verwendest (welche verwendest Du?), kannst Du "IN" benutzen und in etwa folgendes tun:

abfrage um Bedingung erweitern:
SQL-Code:
WHERE idFeld in (:IdListe)
im Code dann:
Delphi-Quellcode:
var
  ParaString : String;
begin
  Query1.Close;
  Query1.ParamByName('Tabellenname').Value := Tabellenname; //nur 1 Wert
  Query1.ParamByName('Feldbezeichnung').Value := Feldbezeichnung; //nur 1 Wert
  ParaString := '';
  For i:= 0 to (RLSDetailNr.Count-1) do begin
    ParaString := ParaString+RLSDetailNr.Strings[i];
    if i < RLSDetailNr.Count-1 
      then ParaString := ParaString+','
  end;
  Query1.ParamByName('IdListe').AsString := ParaString;
  Query1.Open;
end;
Das ganze soll ein Ansatz sein (nicht getestet)
Gruß

Robert_G 16. Apr 2004 11:53

Re: Mehrere Werte in einen Query-Parameter reinkriegen
 
@Leuselator

Dieses
SQL-Code:
WHERE Feld in :Parameter
ist durchaus möglich. Aber nicht mit einem String, sondern als eie Collection oder Array (denn genau das macht der IN-Operator ja, er vergleicht einen Wert mit einem Array).


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:21 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