字符串数组作为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"