3

在我的 SSRS 报告中除以零时,我试图消除 #error。我有以下表达式,它仍然给出#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"))

但是,如果将 / 切换到 * ,如下所示,我正确地得到了值 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"))

在这两种情况下,我得到的正确值是查找值 > 0

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

我错过了一些明显的东西吗?对此的任何见解都非常感谢。

4

1 回答 1

8

如果您转到报告属性然后单击代码,则可以添加安全分割函数,然后在您的表达式中将其引用为CODE.SafeDivide(Value1, Value2),并根据需要添加参数。

此函数将返回 0 而不是显示 #error 消息。

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
于 2012-11-12T15:25:20.170 回答