Parametre virker ikke sådan; de har ingen idé om, at det, du prøver at give, er en kommasepareret liste over værdier. Hvis du indstiller ParamByName('WhatEver').AsString
eller Value
, tror den, at du mener en citeret streng, der indeholder alt, hvad der hører til i den parameter. Så den gør præcis, hvad den ser ud til - den sender IN ('1, 2, 3')
, i stedet for den tilsigtede IN (1, 2, 3)
.
Du skal enten gå tilbage til at analysere det selv og bruge en midlertidig tabel eller bygge WHERE
klausul dynamisk og sammenkæde den, før forespørgslen udføres. (Faktisk kan du bygge forespørgslen dynamisk ved at oprette en ny parameter for hvert af elementerne i IN
klausul, og derefter gå igennem og tildele værdier til hver af disse dynamisk oprettede parametre, men det bliver meget grimt meget hurtigt.)