SSRS 2012 除以零错误
SSRS 2012 Divide By Zero Error
我已经通读了答案并更新了我的表达方式,但我仍然在预算为 0 的行中收到#Error。
所有百分比计算正确。
=IIF(SUM(字段!CM_Budget.Value,"Name")=0,0,SUM(字段!MTD_Actual.Value,"Name")/SUM(字段! CM_Budget.Value,"Name"))
这是因为 SSRS 总是对两个表达式求值。
你必须把你的表达分成两部分。
=IIF(SUM(Fields!CM_Budget.Value,"Name")=0,0,SUM(Fields!MTD_Actual.Value,"Name"))
/
IIF(SUM(Fields!CM_Budget.Value,"Name")=0,1,SUM(Fields!CM_Budget.Value,"Name"))
另一种方法是使用如下自定义代码
Public Function Divider (ByVal Dividend As Double, ByVal Divisor As Double)
If IsNothing(Divisor) Or Divisor = 0
Return Nothing
Else
Return Dividend/Divisor
End If
End Function
然后你可以这样写你的表达式:
=Code.Divider(SUM(Fields!MTD_Actual.Value,"Name"),SUM(Fields!CM_Budget.Value,"Name"))
我通常更喜欢第二种方式,让我的表达式更易读
我已经通读了答案并更新了我的表达方式,但我仍然在预算为 0 的行中收到#Error。
所有百分比计算正确。
=IIF(SUM(字段!CM_Budget.Value,"Name")=0,0,SUM(字段!MTD_Actual.Value,"Name")/SUM(字段! CM_Budget.Value,"Name"))
这是因为 SSRS 总是对两个表达式求值。 你必须把你的表达分成两部分。
=IIF(SUM(Fields!CM_Budget.Value,"Name")=0,0,SUM(Fields!MTD_Actual.Value,"Name"))
/
IIF(SUM(Fields!CM_Budget.Value,"Name")=0,1,SUM(Fields!CM_Budget.Value,"Name"))
另一种方法是使用如下自定义代码
Public Function Divider (ByVal Dividend As Double, ByVal Divisor As Double)
If IsNothing(Divisor) Or Divisor = 0
Return Nothing
Else
Return Dividend/Divisor
End If
End Function
然后你可以这样写你的表达式:
=Code.Divider(SUM(Fields!MTD_Actual.Value,"Name"),SUM(Fields!CM_Budget.Value,"Name"))
我通常更喜欢第二种方式,让我的表达式更易读