首页 > 解决方案 > 如何防止来自 ssrs 报告中自定义代码的 NaN 结果

问题描述

我想在预览报告(ssrs)时阻止 NaN 值。我使用了自定义代码。

Public Dim TotalAmount As Double = 0
Public Dim ThisValue As Double = 0
Public Dim SValue As Double = 0
Public Dim TValue As Double = 0
Public Function CalculateTotal(FirstValue as Double,SecondValue as Double,
ThirdValue as Double)   as Double
    ThisValue=ThisValue+FirstValue
               SValue=Svalue+SecondValue
               TValue=TValue+ThirdValue
        TotalAmount=SValue/(ThisValue+TValue)*100
    Return TotalAmount
    End Function

在我的表达中:

=Code.CalculateTotal(Fields!N_ANSWERED.Value,Fields!SLA.Value,Fields!N_ABANDONED.Value)

我尝试防止除以零:

IIF((ThisValue+TValue)*100=0,1,(ThisValue+TValue)*100)

,但没有任何改变。

我期望零值。

标签: reporting-servicesreport

解决方案


我只需添加一个 If 来检查您的 TOTAL 计算中的零分母。

Public Dim TotalAmount As Double = 0
Public Dim ThisValue As Double = 0
Public Dim SValue As Double = 0
Public Dim TValue As Double = 0

Public Function CalculateTotal(FirstValue as Double, SecondValue as Double, ThirdValue as Double)   as Double

    ThisValue = ThisValue + FirstValue 
    SValue = Svalue + SecondValue 
    TValue = TValue + ThirdValue

    If ThisValue + TValue <> 0 Then TotalAmount = SValue / (ThisValue + TValue) * 100

    Return TotalAmount

    End Function

这样,如果您的总金额为 0,则不会执行总金额计算。

您拥有的 IIF 是 SSRS 表达式语法而不是 VBA 语法,它可能会给出不同的错误。


推荐阅读