Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADO-Problem mit IN-Klausel und Wertliste (https://www.delphipraxis.net/13706-ado-problem-mit-klausel-und-wertliste.html)

CF_Freak21 24. Dez 2003 17:33


ADO-Problem mit IN-Klausel und Wertliste
 
Frohe Weihnachten erstmal..
Ich habe momentan folgendes Problem
Ich möchte in eine ADO-Dataset in einer IN-Klausel im SQL eine Wertliste übergeben...
Sieht im CommandText so aus:

WHERE Kategorie_ID IN (:Kategorie_ID)

Steht im Parameter :Kategorie_ID nur ein einziger Wert, so haut das auch hin.
Wenn aber der Parameter :Kategorie_ID folgendermassen beschrieben wird erhalte ich keine Suchergebnise:

Delphi-Quellcode:
Params.ParamByName('Kategorie_ID'):='1,5,6,7';
Dies ist aber in SQL erlaubt und haut auch im Access hin!
Was mache ich falsch?

Kann das daran liegen, dass Kategorie_ID ein Integer-Feld ist?

mikhal 25. Dez 2003 09:07

Re: ADO-Problem mit IN-Klausel und Wertliste
 
Du übergibst einen String, und der wird entsprechend eingetragen. Aber leider wird daraus nicht das erwartete Statement.

Ich umgehe dieses Problem immer dadurch, daß ich das SQL-Statement einfach komplett neu baue ohne Parameter-Übergabe, da ich in der Vergangenheit häufiger Ungereimtheiten bei der Verwendung von Parametern bei ADO feststellen mußte. Ich speichere mir dazu den SELECT-Teil, den FROM-Teil, den WHERE-Teil ohne die entsprechende Zeile mit dem Parameter sowie den Order-Teil in eigene Konstanten, und füge Sie dann in der Eigenschaft SQL zusammen, nachdem ich die Parameterliste zusammengestellt habe. Etwa so:

Delphi-Quellcode:
const
  cSELECT = 'SELECT *'; // SELECT-Teil
  cFROM = 'FROM Artikel'; // FROM-Teil
  cWHERE = 'WHERE Bezeichnung = ''Artikel'''; // WHERE-Teil ohne Parameter-Liste
  cORDERBY = 'ORDER BY Artikelnr'; // ORDER-Teil
  cCR =#13#10;
begin
...
AdoDataSet1.CommandText := cSELECT + cCR + cFROM + cCR + cWHERE + cCR + 'AND Kategorie_Id IN (1,2,3,4,5)' + cCR + cORDERBY;
AdoDataSet1.Open;
...
end;
Grüße
Mikhal

CF_Freak21 25. Dez 2003 20:15

Re: ADO-Problem mit IN-Klausel und Wertliste
 
jau danke...
ist wohl auch eine Idee.
Ich habs jetzt einfach so gemacht das ich das Feld mit LIKE Abfrage....
geht in dem Fall auch.
Aber trotzdem thx für den Tip...
Diese Parameter in ADO sind wohl eh eine Sache für sich... das ganze funkt in der Praxis öfter ned so super...


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