使用以下过滤器获取SSRS报告。
表达:
= If((参数!GroupA.Value()在Fields!Related_GroupA.Value中)或(参数!GroupB.Value()在Fields!Related_GroupB.Value中)或(参数!GroupA.Value()In Fields!GroupA.Value)或(参数!GroupB.Value()在Fields!GroupB.Value))
运营商:
=
价值:
真
相信“If语句”的语法并使用“in”和“Or”可能不正确。如果在report参数中选择的值出现在两个位置之一中,则需要返回结果。 (例如,如果参数!GroupA位于Fields!Related_GroupA或Fields!GroupA中)
当前错误:
'如果'运算符需要两个或三个操作数。
答案 0 :(得分:0)
'如果'运算符需要两个或三个操作数。
您的声明中有“if”部分,但如果返回true或false,则不指定要执行的操作。另外,使用“iif”而不是“if。”
=iif(
(Parameters!GroupA.Value In Fields!Related_GroupA.Value) Or
(Parameters!GroupB.Value In Fields!Related_GroupB.Value) Or
(Parameters!GroupA.Value In Fields!GroupA.Value) Or
(Parameters!GroupB.Value In Fields!GroupB.Value), <Value if true>, <Value if false>)
如果你只想返回true或false,那么你不需要使用iif运算符,因为“=”运算符返回一个布尔值(True / False)。
如果是这种情况,那么您只需使用:
=(Parameters!GroupA.Value = Fields!Related_GroupA.Value) Or
(Parameters!GroupB.Value = Fields!Related_GroupB.Value) Or
(Parameters!GroupA.Value = Fields!GroupA.Value) Or
(Parameters!GroupB.Value = Fields!GroupB.Value)
请注意,我将“In”更改为“=”,因为您没有可以在ssrs表达式中使用的IN运算符,但有一些解决方法。请参阅here和here。