2016-08-23 5 views
0

私は私のレポートでこの表現を持っているに#エラーとはNaNを避ける方法:比率を計算するために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

試してください:あなたは、ゼロまたはnothing(SSRSヌル)によって、任意の数を分割することはできませんので

=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") 
) 

これが原因で発生し

また、あなたは安全部門を実行するためにthis great answerで提供されるこのカスタムコードを使用することができます。

次に、あなたのTablixの中だけ引数として、分子と分母との関数を呼び出す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