2016-08-23 49 views
0

我在我的報告中表示,以計算比例:如何避免#錯誤和楠SSRS

= 
SUM(Fields!PaidLosses.Value)/
Lookup(Fields!YearNum.Value & Fields!MonthNum.Value, Fields!YearStartRisk.Value & Fields!MonthNum.Value, Fields!EarnedPremium.Value, "EarnedAllCoverages") 

當我選擇一個參數沒有足夠的數據我得到#錯誤和NaN的。 NaN的結果是「 - 」和「 - 」值之間的分割。 #Error的結果是0值上的「 - 」的分割。 enter image description here

+0

您是否嘗試過使用IIF來繞過無效值。 – FLICKER

回答

1

嘗試:

=SUM(Fields!PaidLosses.Value)/
IIF(
ISNOTHING(
    Lookup(Fields!YearNum.Value & Fields!MonthNum.Value, 
    Fields!YearStartRisk.Value & Fields!MonthNum.Value, 
    Fields!EarnedPremium.Value, "EarnedAllCoverages") 
) OR 
Lookup(Fields!YearNum.Value & Fields!MonthNum.Value, 
Fields!YearStartRisk.Value & Fields!MonthNum.Value, 
Fields!EarnedPremium.Value, "EarnedAllCoverages") = 0,1, 
Lookup(Fields!YearNum.Value & Fields!MonthNum.Value, 
Fields!YearStartRisk.Value & Fields!MonthNum.Value, 
Fields!EarnedPremium.Value, "EarnedAllCoverages") 
) 

這是因爲你不能分割任意數量的零個或nothing(SSRS空)

您也可以使用this great answer提供這種定製代碼安全地進行分裂造成的。

添加自定義代碼的textarea下面的代碼在Report菜單/ Report Properties.../Code標籤

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 

然後在你的表矩陣只需要調用與分子和分母爲自變量的函數:

=Code.SafeDivide(
    SUM(Fields!PaidLosses.Value), 
    Lookup(
    Fields!YearNum.Value & Fields!MonthNum.Value, 
    Fields!YearStartRisk.Value & Fields!MonthNum.Value, 
    Fields!EarnedPremium.Value, "EarnedAllCoverages" 
    ) 
) 

讓我知道這是否有幫助。

+0

自定義代碼正是我所需要的!非常感謝Alejandro! – Oleg