How can I eliminate #error on SSRS expression when

2019-01-28 08:32发布

问题:

I am trying to eliminate #error when dividing by zero on my SSRS report. I have the following expression which still gives #error

=IIf(IsNothing(Lookup(Fields!id.Value, Fields!id2.Value, Fields!Stock.Value, "Models")),
88 , Fields!QTY_AVL.Value * 100 / 
Lookup(Fields!id.Value, Fields!id2.Value, Fields!Stock.Value, "Models"))

However if switch the / to * , as below, I correctly get the value 88

=IIf(IsNothing(Lookup(Fields!id.Value, Fields!id2.Value, Fields!Stock.Value, "Models")), 
88 , Fields!QTY_AVL.Value * 100 * 
Lookup(Fields!id.Value, Fields!id2.Value, Fields!Stock.Value, "Models"))

In both instances I get the correct value is the lookup value > 0

(Fields!QTY_AVL and Fields!Stock come from different sources)

Am I missing something obvious? Any insight into this much appreciated.

回答1:

You can add a safe divide function if you go to Report Properties and then click Code, then reference this in your expression as CODE.SafeDivide(Value1, Value2), adding the parameters as necessary.

This function will return 0 instead of displaying the #error message.

Public Function SafeDivide(ByVal Numerator As Decimal, ByVal Denominator As Decimal) As Decimal
    If Denominator = 0 Then
        Return 0
    End If
    Return (Numerator / Denominator)
End Function