Ошибка деления SSRS на 0 даже при использовании iif () isnothing () и = 0 или = none - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть простая формула% изменения, которую я хочу внедрить в отчет ... формула (ab) /b.

Проблема иногда в том, что значение b, входящее в набор данных, пустое /null ... и, более того, SSRS, похоже, не может точно понять это с помощью оператора iif(), который я использую.Вместо этого всякий раз, когда отчет отображается, для любой позиции, в которой отсутствуют данные для b в формуле, я получаю страшное «ОШИБКА», отображаемое в этой ячейке.Формула в ячейке я использую ниже.В чем здесь проблема?Почему SSRS не может видеть, что sum(b) = nothing или isnothing(sum(b)) оценивается как true?Как будто он обходит эту часть формулы и идет вперед и делает математику, делится на 0 и выбрасывает с ошибкой?

=iif( 
    isnothing(sum(Fields!BR_Quantity.Value))=true or sum(Fields!BR_Quantity.Value)=0 or sum(Fields!BR_Quantity.Value)=nothing,
    nothing,
    (sum(Fields!Full_Case_Quantity.Value)-sum(Fields!BR_Quantity.Value)) / sum(Fields!BR_Quantity.Value)
)

1 Ответ

0 голосов
/ 21 февраля 2019

Функция IIF оценивает как ИСТИННЫЕ, так и ЛОЖНЫЕ части выражения.

Используйте отдельный ИИФ как для числителя, так и для знаменателя:

=IIF(ISNOTHING(SUM(Fields!BR_Quantity.Value)) OR SUM(Fields!BR_Quantity.Value) = 0, 0, SUM(Fields!Full_Case_Quantity.Value) - SUM(Fields!BR_Quantity.Value)
/
 IIF(ISNOTHING(SUM(Fields!BR_Quantity.Value)) OR SUM(Fields!BR_Quantity.Value) = 0, 1, SUM(Fields!BR_Quantity.Value) )

Таким образом, когда ваш знаменатель равен 0или NULL, результирующее выражение будет 0 / 1.

Какая-то неудача, но Microsoft не исправит это.

...