Parameter funktionieren nicht so; Sie haben keine Ahnung, dass Sie eine durch Kommas getrennte Liste von Werten bereitstellen möchten. Wenn Sie ParamByName('WhatEver').AsString
festlegen oder Value
, es denkt, Sie meinen eine Zeichenfolge in Anführungszeichen, die alles enthält, was in diesen Parameter gehört. Es tut also genau das, was es zu tun scheint – es übergibt IN ('1, 2, 3')
, anstelle des beabsichtigten IN (1, 2, 3)
.
Sie müssen entweder zurückgehen, um es selbst zu parsen und eine temporäre Tabelle verwenden, oder das WHERE
erstellen -Klausel dynamisch und verkettet sie, bevor die Abfrage ausgeführt wird. (Tatsächlich könnten Sie die Abfrage dynamisch erstellen und einen neuen Parameter für jedes der Elemente in IN
erstellen -Klausel, und dann durchlaufen und jedem dieser dynamisch erstellten Parameter Werte zuweisen, aber das wird sehr schnell sehr hässlich.)