【问题标题】:SSRS Reporting SyntaxSSRS 报告语法
【发布时间】:2017-08-21 17:58:06
【问题描述】:
对 SSRS 报告使用以下过滤器。
表达式:
=If((Parameters!GroupA.Value() In Fields!Related_GroupA.Value) 或 (Parameters!GroupB.Value() In Fields!Related_GroupB.Value) 或 (Parameters!GroupA.Value() In Fields!GroupA.Value) 或 (Parameters!GroupB.Value() In Fields!GroupB.Value))
操作员:
=
价值:
是的
相信“If 语句”的语法以及“in”和“Or”的使用可能不正确。如果报表参数中选择的值出现在两个位置之一,则需要返回结果。 (例如,如果 Parameters!GroupA 在 Fields!Related_GroupA 或 Fields!GroupA 中)
当前错误:
'If' 运算符需要两个或三个操作数。
【问题讨论】:
标签:
reporting-services
ssrs-2008
ssrs-2012
【解决方案1】:
'If' 运算符需要两个或三个操作数。
您的语句中有“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>)
如果您只想返回真或假,则不需要使用 iif 运算符,因为“=”运算符返回布尔值(真/假)。
如果是这种情况,那么您可以简单地使用:
=(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。