Reporting services SSRS除以零误差

Reporting services SSRS除以零误差,reporting-services,ssrs-2012,Reporting Services,Ssrs 2012,“我的表格”包含两列数字: ORIGINAL_QTY FINAL_QTY 120 115 1 0 1 1 0 0 3 1 4 5 我需要提取这两个数字之间的差值作为一个百分比,所以我创建了以下表达式,考虑到最终数量的增加或减少,交换分子和分母或分母中的0用0.00001改变0将完成这项工作,因为我四舍五

“我的表格”包含两列数字:

ORIGINAL_QTY    FINAL_QTY
120               115
1                 0
1                 1
0                 0
3                 1
4                 5
我需要提取这两个数字之间的差值作为一个百分比,所以我创建了以下表达式,考虑到最终数量的增加或减少,交换分子和分母或分母中的0用0.00001改变0将完成这项工作,因为我四舍五入到2位小数:

=IIf(Fields!ORIGINAL_QTY.Value=0, (Fields!FINAL_QTY.Value/0.00001)*100, IIf(Fields!ORIGINAL_QTY.Value>=Fields!FINAL_QTY.Value, (Fields!FINAL_QTY.Value/Fields!ORIGINAL_QTY.Value)*100, (Fields!ORIGINAL_QTY.Value/Fields!FINAL_QTY.Value)*100))
但仍然抛出错误:第2行和第4行被零除:

第2行:它只是0/1=0,没有什么特别的,不应该抛出错误。 第4行:原始数量=0,但我在表达式中处理了它,所以


我错过了什么?选中所有内容,它应该可以工作…

或者,您可以在报表中使用以下自定义代码,然后在报表中调用它右键单击报表,报表属性->代码

Public Shared Function VarPercent(ByVal Standard As Decimal, ByVal Actual As Decimal) As Decimal
If Actual = 0 Then
Return 0
End If
If Standard = 0 Then
Return 0
End If
Return (Standard / Actual )
End Function
然后你可以在你的报告中这样称呼它

Code.VarPercent (Fields!numerator.Value, Fields!denominator.Value)

如果分母中有0,则除以0。在数学中,你不能除以0。这就是它不起作用的原因。如果您希望0可能在分母中,那么您必须处理该问题,并且在这种情况下不进行除法。可能存在0的重复项,但0永远不会在分母中。。。这就是为什么我使用表达式,不允许那个操作…@活塞SSRS没有短路,所以它仍然在尝试评估1/0。上帝。。。我花了几个小时试图弄明白这一点,但它的设计很糟糕。非常感谢。