2011-08-16 7 views
2
=IIf(Sum(Fields!CUSTOMER_PROFIT.Value) <= 0 Or Sum(Fields!REVENUE.Value) <= 0, 
"N/A",Round(Sum(Fields!CUSTOMER_PROFIT.Value)/Sum(Fields!REVENUE.Value)*100,2)) 

出力例は以下の通りである:SSRS式が#Errorをスローする - 考えられる理由は?

customer profit  revenue  customerprofitability 
105003.73   227912.88 46.07  
-8560.57    0.00   #Error  
610.53    -1306.0  N/A 

理由ゼロで割ったときには、#エラーを与えるが負の値で割ったときにN/Aを与えることがありますか?私はcustomerprofitabilityの列に#errorをかけることは望ましくありません。助けをよろしく!

答えて

3

SSRSは、iffステートメントの '真の'部分の後で停止させたいとしても、式を完全に評価します。

したがって、iffステートメントの '失敗'部分をすべての行に対して数学的に鳴らす必要があります(現在は2行目で0で割れていない場合)。

これはあなたの望ましい結果を与える必要があります

=IIf(
Sum(Fields!CUSTOMER_PROFIT.Value) <= 0 
    Or Sum(Fields!REVENUE.Value) <= 0, 
    "N/A", 
    Round(Sum(Fields!CUSTOMER_PROFIT.Value)/IIF(Sum(Fields!REVENUE.Value)= 0, 1,Sum(Fields!REVENUE.Value))*100,2 
    ) 
) 
関連する問題