AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Mehrere Werte in einen Query-Parameter reinkriegen
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Werte in einen Query-Parameter reinkriegen

Ein Thema von pistazie · begonnen am 15. Apr 2004 · letzter Beitrag vom 16. Apr 2004
Antwort Antwort
pistazie

Registriert seit: 12. Nov 2003
Ort: Augsburg
18 Beiträge
 
#1

Mehrere Werte in einen Query-Parameter reinkriegen

  Alt 15. Apr 2004, 10:17
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!
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#2

Re: Mehrere Werte in einen Query-Parameter reinkriegen

  Alt 16. Apr 2004, 12:49
je nach dem, welche DB Du verwendest (welche verwendest Du?), kannst Du "IN" benutzen und in etwa folgendes tun:

abfrage um Bedingung erweitern:
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ß
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#3

Re: Mehrere Werte in einen Query-Parameter reinkriegen

  Alt 16. Apr 2004, 12:53
@Leuselator

Dieses
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).
  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 05:40 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