【问题标题】:Why isn't my iif statement evaluating true when the condition is correct?当条件正确时,为什么我的 iif 语句不评估为真?
【发布时间】:2010-05-12 19:44:57
【问题描述】:

这是我的声明:

iif(sum(Fields!myfield1.Value) = 0, 0, sum(Fields!myField2.Value)/sum(Fields!myField1.Value))

有什么建议吗?

【问题讨论】:

  • 你把这个 IIF 声明放在哪里?
  • @Raj More:可能是 SSRS 文本字段或表格单元格。 SSRS 使用 VBA 作为其编程语言。
  • @OMB 小马:为含糊而道歉。我的意思是找出这是在 SubTotal 行还是在 Detail 行中使用的。
  • 它在小计行中。我找到了一个非常不雅的解决方法,但仍然会感谢更好的解决方案。
  • VBA 的 IIf 会评估它的两个条件,而不管它返回哪个条件,因此它在您的示例中同时评估 0 和除以零。我不知道 SSRS,但这可能是相关的。

标签: sql vba reporting-services iif


【解决方案1】:

可能 评估为 True。正如在其他 cmets 中所提到的,无论如何您都会收到错误消息,因为 Iif() 会计算所有参数表达式,而不管测试结果如何。

可以通过在除数中添加另一个 Iif() 来避免该错误。

iif(
    sum(Fields!myfield1.Value) = 0,
    0,
    sum(Fields!myField2.Value) / iif(
                                     sum(Fields!myfield1.Value) = 0,
                                     1,
                                     sum(Fields!myField1.Value)
                                 )
)

现在,如果 myfield1 为零且未引发错误,您将得到零。

(不过,当除数为零时,您可能应该显示“N/A”或只显示一个空字符串。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多