Reporting services 为什么在SSRS表达式中返回布尔值时需要IIF?

Reporting services 为什么在SSRS表达式中返回布尔值时需要IIF?,reporting-services,boolean,iif,ssrs-expression,Reporting Services,Boolean,Iif,Ssrs Expression,基本上,我的问题是,为什么我不能编写一个期望类似布尔值的表达式 =Parameters!.Param1.Value = 3 相反,您必须显式地返回true或false,如 =IIF(Parameters!Param1.Value = 3, True, False) 表达式是否包含参数!。值=3计算为整数(即1或0)?这是怎么回事?实际上可以在表达式中进行布尔比较。你在哪里发现你不能使用它?您收到的错误消息是什么 此外,问题中的两个表达式都无效,因为它们缺少参数名称。它应该看起来更像: =Pa

基本上,我的问题是,为什么我不能编写一个期望类似布尔值的表达式

=Parameters!.Param1.Value = 3
相反,您必须显式地返回true或false,如

=IIF(Parameters!Param1.Value = 3, True, False)

表达式是否包含
参数!。值=3
计算为整数(即1或0)?这是怎么回事?

实际上可以在表达式中进行布尔比较。你在哪里发现你不能使用它?您收到的错误消息是什么

此外,问题中的两个表达式都无效,因为它们缺少参数名称。它应该看起来更像:

=Parameters!MyBoolParameter.Value = 3

可能这就是您所遇到的错误的原因?

这就是语法。如果您发现表达式很复杂,可以在报表代码中实现自定义函数,然后从报表中调用它。

缺少的参数名称只是示例中的一个错误。看来你对这两项工作都是正确的。我可以发誓非IIF语句在可见性表达式上对我来说是失败的,但我无法在测试报告中复制它。正如@BrianPressler所指出的,这两个表达式都有效。我见过的所有例子都使用IIF,甚至把它们连在一起变成丑陋的怪物。我可以发誓非IIF方式在过去对我来说是失败的,但我猜它可能是一个合法的bug。