Выражение SSRS выдает #Error - Возможные причины? - PullRequest
2 голосов
/ 16 августа 2011
=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))  

Пример вывода следующий:

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

почему при делении на ноль получается #error, а при делении на отрицательное значение - N / A? Я не хочу, чтобы произошла ошибка в столбце «Прибыль клиента». Цени любую помощь!

1 Ответ

3 голосов
/ 16 августа 2011

SSRS полностью оценит ваше выражение, даже если вы хотите, чтобы оно прекратилось после «истинной» части вашего заявления iff.

Поэтому вам нужно, чтобы часть 'fail' в выражении iff математически звучала для всех строк (в настоящее время, если происходит сбой с делением на ноль во второй строке).

Это должно дать вам желаемый результат

=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
   )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...