2012-11-12 40 views
3

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

我是否缺少明显的东西?任何洞察到这一点非常感谢。

回答

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 
+0

辉煌 - 完美的作品谢谢@ msmucker0527 – Debs