【发布时间】:2011-03-29 11:32:18
【问题描述】:
我们的一份报告遇到了问题。在我们的其中一个 tablixes 中,文本框具有以下表达式:
=Iif(Fields!SomeField.Value = 0, 0, Fields!SomeOtherField.Value / Fields!SomeField.Value)
这应该是不言自明的。如果“SomeField”为零,则将文本框值设置为零,否则将其设置为“SomeOtherValue / SomeValue”。
让我们感到困惑的是,报告仍然抛出运行时异常“试图除以零”,尽管上面的表达式应该阻止这种情况的发生。
我们对表达式做了一些改动,以确保零校验正常工作,并且
=Iif(Fields!SomeField.Value = 0, "Yes", "No")
效果很好。数据实际上为零的情况会导致文本框显示“是”,反之亦然。所以检查工作正常。
我的直觉是报表渲染引擎在运行时抛出异常,因为它“看起来”好像我们要除以零,但实际上并非如此。
以前有人遇到过同样的问题吗?如果是这样,你做了什么让它工作?
【问题讨论】:
-
太棒了!我用这个建议回答了我的问题:stackoverflow.com/questions/43662727/…
-
从不、从不、从不、从不NEVER在 IIF 语句中计算值或调用函数是一种很好的做法。顺便说一句,我留下了一些从来没有,以防它变得有点不堪重负。
标签: ssrs-2008