Tôi có một báo cáo SSRS có 3 bộ dữ liệu cung cấp một nguồn dữ liệu. Tập dữ liệu chính là một thủ tục được lưu trữ đang tổng hợp một số dữ liệu dựa trên một tập các tham số được cung cấp bởi hai bộ dữ liệu khác.
Thủ tục lưu trữ chính cung cấp năng lượng cho báo cáo này có 4 tham số. Một là ID cho loại dữ liệu, hai là cho ngày bắt đầu và ngày kết thúc và thứ ba chỉ là một tham số cờ. Tham số cờ là tham số đa giá trị nơi tôi muốn chuyển nhiều giá trị cờ cũng là giá trị VARCHAR.
Trong thủ tục lưu trữ của tôi cho tham số @Flag của tôi, tôi có điểm chung:
WHERE [Flag] IN (@Flag)
Sau đó, tất nhiên, tham số @Flag trên báo cáo SSRS được đặt để cho phép 'Nhiều giá trị' cũng được điền từ truy vấn đang kéo các giá trị @Flag đó từ bảng thứ nguyên.
Vấn đề của tôi
Trong hầu hết các trường hợp khi xử lý các giá trị INT, sử dụng cùng một kỹ thuật hoạt động. Tuy nhiên, khi tôi xử lý các giá trị nhân vật, nó thất bại. Nếu tôi chọn một cờ, báo cáo sẽ hoạt động một cách kỳ diệu. Nếu tôi chọn nhiều cờ, nó dường như không chuyển các cờ chính xác cho quy trình được lưu trữ và không có kết quả nào trả về.
Khi kiểm tra cờ đa giá trị trực tiếp trong quy trình được lưu trữ:
WHERE [Flag] IN ('A', 'B', 'C')
Các thủ tục lưu trữ hoạt động chính xác. Vì vậy, vấn đề không phải là thủ tục được lưu trữ, mà là cách SSRS truyền các giá trị đa giá trị cho tham số @Flag.
Giải pháp đã thử
Tôi đã thử thực hiện các điều chỉnh sau đây cho bộ dữ liệu SSRS cho tham số @Flag này:
=join(Parameters!<your param name>.Value,",")
Va cai nay cung vay:
=SPLIT(JOIN(Parameters!<your param name>.Value,","),",")
Tất cả đều hoạt động trên các giá trị đơn lẻ, nhưng không bao giờ đa giá trị.
Tôi đang thiếu gì ở đây?
=join(Parameters!<your param name>.Value,",")
) có thể được thêm vào tập dữ liệu đang đọc tham số, trong tab "Tham số": có nút "fx" để thêm biểu thức, ở bên phải thả "Giá trị tham số" -xuống.