如何在除以零时消除SSRS表达式上的#error?

时间:2012-11-12 14:55:18

标签: reporting-services ssrs-2008

我试图在我的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)

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

1 个答案:

答案 0 :(得分: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