我试图在我的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)
我错过了一些明显的东西吗?对此的任何见解都非常赞赏。
答案 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