SSRS 除以零误差
SSRS Divided by zero error
我的 table 包含 2 列数字:
ORIGINAL_QTY FINAL_QTY
120 115
1 0
1 1
0 0
3 1
4 5
而且我需要提取两个数字之间的差异作为百分比,所以我创建了以下表达式,考虑到最终数量的增加或减少(交换分子和分母)或分母为 0(将 0 更改为 0.00001会完成这项工作,因为我四舍五入到小数点后两位):
=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))
但我仍然 "error: divided by zero" 在第 2 行和第 4 行:
第 2 行:它只是 0/1=0,没什么特别的,不应该抛出错误。
第 4 行:ORIGINAL_QTY = 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)
我的 table 包含 2 列数字:
ORIGINAL_QTY FINAL_QTY
120 115
1 0
1 1
0 0
3 1
4 5
而且我需要提取两个数字之间的差异作为百分比,所以我创建了以下表达式,考虑到最终数量的增加或减少(交换分子和分母)或分母为 0(将 0 更改为 0.00001会完成这项工作,因为我四舍五入到小数点后两位):
=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))
但我仍然 "error: divided by zero" 在第 2 行和第 4 行:
第 2 行:它只是 0/1=0,没什么特别的,不应该抛出错误。 第 4 行:ORIGINAL_QTY = 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)