Parameter tidak bekerja seperti itu; mereka tidak tahu bahwa apa yang Anda coba berikan adalah daftar nilai yang dipisahkan koma. Jika Anda menyetel ParamByName('WhatEver').AsString atau Value , yang Anda maksud adalah string yang dikutip yang berisi semua yang termasuk dalam parameter itu. Jadi ia melakukan persis seperti yang terlihat - ia meneruskan IN ('1, 2, 3') , alih-alih IN (1, 2, 3) yang dimaksudkan .
Anda harus kembali menguraikannya sendiri dan menggunakan tabel temp, atau membuat WHERE klausa secara dinamis dan menggabungkannya sebelum mengeksekusi kueri. (Sebenarnya, Anda dapat membuat kueri secara dinamis, membuat parameter baru untuk setiap item di IN klausa, lalu mengulang dan menetapkan nilai ke masing-masing parameter yang dibuat secara dinamis, tetapi itu menjadi sangat jelek dengan sangat cepat.)