Các tham số không hoạt động như vậy; họ không biết rằng những gì bạn đang cố gắng cung cấp là một danh sách các giá trị được phân tách bằng dấu phẩy. Nếu bạn đặt ParamByName('WhatEver').AsString
hoặc Value
, nó cho rằng bạn có nghĩa là một chuỗi được trích dẫn chứa mọi thứ thuộc về tham số đó. Vì vậy, nó đang làm chính xác những gì nó xuất hiện - nó đang truyền IN ('1, 2, 3')
, thay vì IN (1, 2, 3)
dự định .
Bạn sẽ cần quay lại tự phân tích cú pháp và sử dụng bảng tạm thời hoặc xây dựng WHERE
động và nối mệnh đề trước khi thực hiện truy vấn. (Trên thực tế, bạn có thể tạo truy vấn động, tạo một tham số mới cho từng mục trong IN
, sau đó lặp lại và gán giá trị cho từng tham số được tạo động đó, nhưng điều đó rất nhanh chóng trở nên xấu xí.)