字符串数组作为SSRS 2012中多值参数的值?
问题描述:
是否可以将多值参数的值分配给数组?我希望能够将值(字符串数组)传递给我的查询,这样我可以过滤像这样:字符串数组作为SSRS 2012中多值参数的值?
INNER JOIN blah E
ON E.EventKey = F.EventKey
AND E.EventCd in (@ParameterArray)
在我的参数我想要做这样的事情:
Label | Value
1 | ('12323467', '12398723')
2 | ('12938412', '12343211', '91TS1231')
etc.
这里的目标是让我的报告的用户不必单独选择每个代码,他们可以选择它在多值下拉菜单中的一部分,并且查询/报告将完成其余部分。我试图以不同的方式使用split/join,但还没有找到解决方案。
此外,如果用户从下拉列表中选择多个值,我想追加数组。我不确定这是否可以在SSRS 2012中使用。
答
由于您的参数值中有多个值,因此您无法使用简单的IN
语句逃脱。但你仍然可以得到这个工作。
首先,Join
的值使它们全部传递给查询。因此,在数据集属性>参数选项卡中的表达会是这样的:
=Join(Parameters!EventCodes.Value, ",")
注意,没有“(0)”字“值”之后。如果您双击参数名称,它会为您添加该参数,但这只会返回第一个选定的值。
接下来,更新查询中的条件以使用这串逗号分隔值。
AND ',' + @ParameterArray + ',' like '%,' + E.EventCd + ',%'
额外的逗号确保您永远不会有部分匹配。
此外,只是为了澄清,参数值不应该有任何引号,括号或空格。你只需要用逗号分隔字符串。例如,值表达式可以是:
="12323467,12398723"