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)
我在我的 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)