2016-05-11 7 views
1

У меня есть отчет SSRS, который бросает и # ERROR # в поле.IIF в SSRS, возвращающем ошибку

Я сравниваю Down Time to Total time ... DownTime/TotalTime, чтобы получить процент простоя за все время.

Исходный код был:

=Sum(Fields!PrevYear_Total_Down_Time.Value) 
/
Sum(Fields!PrevYear_Total_Time.Value) 

Это бросило # ERROR #, который я предполагал, должен был «Сумма (Fields PrevYear_Total_Time.Value!)» Быть ноль или нуль, поэтому я скорректировал кода в IIF заявление:

=IIF(Sum (Fields!PrevYear_Total_Time.Value)=0,0, 
    IIF(Sum(Fields!PrevYear_Total_Down_Time.Value)=0,0, 
     Sum(Fields!PrevYear_Total_Down_Time.Value)/Sum(Fields!PrevYear_Total_Time.Value) 
     ) 
    ) 

Если я заменить второй вложенный оператор IIF с номером, он работает и ставит любой номер я обозначаю, Но это не то, что я хотел. Я хочу проверить нуль или нуль, а если общее время простоя равно нулю или 0, верните 0.

+0

Возможный дубликат [Как справиться с IIF или свитч деление на ноль дает #ERROR] (http://stackoverflow.com/questions/15750896/how-to-handle-iif-or-switch-divide-by-zero-giving-error) –

ответ

0

Решил его, написав фрагмент кода, который передает два значения, затем возвращает форматированное значение.

0

Другой способ поставить другой IIF в знаменателю для учета нулевой:

=IIF(Sum(Fields!PrevYear_Total_Time.Value) = 0, 0, Sum(Fields!PrevYear_Total_Down_Time.Value)) 
/
IIF(Sum(Fields!PrevYear_Total_Time.Value) = 0, 1, Sum(Fields!PrevYear_Total_Time.Value))