我想您尚未在子报表中将参数设置为“多选”。如果您已将子报表中的参数设置为多选,则可以直接将其从主报表发送到子报表。在here中查看更多信息>
当前有三个子报表,一个主报表。
主报告具有两个参数-SELECTDATE
和EMP_ID
。主报表将Order_Nbr发送到所有子报表。
当我仅选择1个Employee和1个日期时,所有子报表都可以正常工作,但是如果我选择多个值,它会爆炸。
SQL将列作为INT。我在主报表和子报表中都具有参数,SELECTDATE设置为具有多个值的文本,EMP_ID设置为具有多个值的整数。我的查询包含日期IN(@SELECTDATE)和emp_id IN(@EMP_ID)。
显然,它可以将正确的信息发送到子报表,因为它可以工作,但是我希望它与更多的值一起使用。喜欢当前检查和取消检查雇员以及月底日期的功能,就像当前使用查询中的IN函数设置它一样。
将子报表上的参数设置为非多值,删除所有“可用值”设置。使用连接方法将父报告中的多值参数作为字符串传递给您]
=Join(Parameters!Emp_ID,",")
EMP_ID参数将设置为逗号分隔的列表,这是多值参数发送给查询的内容
我不确定这在文本查询中如何工作,但是在存储过程中工作。
如果子报告还用作独立报告,则需要添加一个新参数,以允许用户将参数值从用户可以设置的参数发送到@Emp_Id。>
我想您尚未在子报表中将参数设置为“多选”。如果您已将子报表中的参数设置为多选,则可以直接将其从主报表发送到子报表。在here中查看更多信息>
我使用了以下解决方案,该解决方案在SSRS2016中有效。这也适用于文本参数。
Join(Parameters!EmpID, ",")
string_split
函数返回值表并将其简单地连接到主查询中。因此,基本上,如果您的参数名为“ EmpID_Multi”,请执行... JOIN (SELECT value FROM string_split ( @EmpID_Multi, ",")) mv ON mv.value= ...
注意:您可能会考虑将值放入临时表中以进行SQL优化(有时优化器会做一些有趣的事情……)。
我想您尚未在子报表中将参数设置为“多选”。如果您已将子报表中的参数设置为多选,则可以直接将其从主报表发送到子报表。在here中查看更多信息>
我使用了以下解决方案,该解决方案在SSRS2016中有效。这也适用于文本参数。