![]() |
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:
Dies ist aber in SQL erlaubt und haut auch im Access hin!
Params.ParamByName('Kategorie_ID'):='1,5,6,7';
Was mache ich falsch? Kann das daran liegen, dass Kategorie_ID ein Integer-Feld ist? |
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:
Grüße
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; Mikhal |
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 10:08 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