Zo werken parameters niet; ze hebben geen idee dat wat u probeert te bieden een door komma's gescheiden lijst met waarden is. Als u ParamByName('WhatEver').AsString
. instelt of Value
, denkt hij dat je een string tussen aanhalingstekens bedoelt die alles bevat wat in die parameter thuishoort. Het doet dus precies wat het lijkt te doen - het geeft IN ('1, 2, 3')
door , in plaats van de bedoelde IN (1, 2, 3)
.
Je moet ofwel teruggaan naar het zelf ontleden en een tijdelijke tabel gebruiken, of de WHERE
bouwen clausule dynamisch en aaneengeschakeld voordat de query wordt uitgevoerd. (Eigenlijk zou u de query dynamisch kunnen bouwen, door een nieuwe parameter te maken voor elk van de items in de IN
clausule, en loop dan door en wijs waarden toe aan elk van die dynamisch gecreëerde parameters, maar dat wordt erg snel erg lelijk.)