SSRS 报告给出多值参数错误

SSRS report giving error for multivalue parameter

我在我的 SSRS 报告中声明了一个多值参数。参数是 "Team",它有多个值,例如:"All"、"HY"、"DFI"、"CRS" 等。 现在我使用这个参数来显示或隐藏我报告中的各个列。

例如,或列之一,可见性工作如下:

=IIF(Parameters!Team.Value = "HY", True,False) Or IIF(Parameters!Team.Value = "EQ", True,False) Or IIF(Parameters!Team.Value = "GL", True,False) Or IIF(Parameters!Team.Value = "CRS", True,False)

只要我 select 从参数下拉列表中选择一个值,报告就可以正常工作。但是我想要 select 多个值,所以我在参数属性下单击了 "Allow multiple values"。这样做和 运行 报告后,我收到以下错误:

The Hidden expression for the tablix ‘Tablix2’ contains an error: Overload resolution failed because no Public '=' can be called with these arguments: 'Public Shared Operator =(a As String, b As String) As Boolean': Argument matching parameter 'a' cannot convert from 'Object()' to 'String'. (rsRuntimeErrorInExpression)

我该如何解决这个错误?

更新:错误现已解决。但是组合列的显示,这是在参数中添加多个值的目的仍然没有解决,当我在下拉列表中 select 多个团队时,例如。 "DFI" 和“HY”,那么报告会隐藏两个团队的列,而不是显示两者的列。

提前致谢。

记住 "hidden" 属性 在列隐藏时为 True,在显示时为 False。可以使用Array.IndexOf函数在多值参数中查找具体选择的值,然后像这样设置每个队的列(这里是队HY):

=IIF(Array.IndexOf(Parameters!Team.Value, "HY") > -1, False, True)

英文:"If you find HY as a selected parameter value, do not hide this column, otherwise hide it."

因为你的团队参数允许选择多个值,所以Parameters!Team.Value变成了一个数组对象。这意味着您无法进行比较 Parameters!Team.Value = "aString" 因为它们是无法比较的类型。

为了达到您想要的结果,您必须将 Parameters!Team.Value = "aString" 调用更改为 Join(Parameters!Team.Value,",").contains("aString")

Join 函数 return 是一个由指定字符串分隔的对象数组。

示例:Join(Parameters!Team.Value,",") 可以 return "HY,EQ,GL"

对于每组列,您需要将每个团队的可见性设置为 False,您不想隐藏这些列。

对于您选择了 "DF" 或 "All" 的列:

=IIF(Join(Parameters!Team.Value,",").Contains("DF") OR Join(Parameters!Team.Value,",").Contains("ALL"), False,True)

对于选择了 "HY" 或 "All" 的列:

=IIF(Join(Parameters!Team.Value,",").Contains("HY") OR Join(Parameters!Team.Value,",").Contains("ALL"), False,True)

对于选择了 "EQ" 或 "All" 的列:

 =IIF(Join(Parameters!Team.Value,",").Contains("EQ") OR Join(Parameters!Team.Value,",").Contains("ALL"), False,True)