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