是否IIF函数计算在SSRS两条路径或者是短路?(Does the iif function com

2019-06-17 19:30发布

我试图评估基于销售产品的每公斤($ / kg)的价格。 如果产品在规定的期限实际上可以出售这工作得很好。 然而,如果产品未售出的千克(分母)最终被0(零)和一个错误的结果。 - 零错误鸿沟。

我想这

=iif(KgSold=0,0,Revenue/KgSold)

看来, iif函数计算两者的结果true和false。 如何解决这个问题。

我应该使用switch功能呢?

=switch(KgSold=0,0
        KgSold<>0,Revenue/KgSold)

Answer 1:

你说得对,它不是做短路。 这吮吸。

你必须做这样的事情:

= Iif(KgSold = 0, 0, Revenue) / Iif(KgSold = 0, 1, KgSold )

开关功能也应该工作。



Answer 2:

这是因为在VBScript中的IIF内的所有条件,将首先任何功能发生之前评估。



Answer 3:

以下添加到您的代码:

Public Function SafeDiv(byval num as double, byval den as double) as object

    If den = nothing then return nothing
    If den = 0 then return nothing

    return num / den

End Function

然后调用

=Code.SafeDiv(Revenue,KgSold) 

在文本框中epression



文章来源: Does the iif function compute both paths in SSRS or is it short-circuited?