2017-07-06 81 views
0

我已經通讀了答案並更新了我的表達式,並且在預算爲0的行中繼續出現#Error。SSRS 2012除以零誤差

所有的百分比正在計算正確。 (Fields!CM_Budget.Value,「Name」)= 0,0,SUM(Fields!MTD_Actual.Value,「Name」)/ SUM(Fields!CM_Budget.Value,「Name」))

回答

2

這是因爲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")) 

我通常喜歡做的第二種方式,使我的表情更具可讀性