Выражение значения отчета SSRS (rdlc) и проверка нуля - PullRequest
1 голос
/ 26 марта 2012

Просто интересно, эквивалентны ли следующие выражения, используемые для значения (столбец "Contrib" в наборе данных "MyDataSet" обнуляемый):

вариант 1:

=Format(First(Fields!Contrib.Value, "MyDataSet"), "C2")

вариант 2:

=IIF(First(Fields!Contrib.Value, "MyDataSet") Is Nothing, "", Format(First(Fields!Contrib.Value, "MyDataSet"), "C2"))

т.е. имеет ли SSRS специальную обработку, так что в варианте 1 он внутренне проверяет нулевое значение и фактически завершает работу, аналогично варианту 2. По методу проб и ошибок они, похоже, дают одинаковые результаты (когда «Contrib» равен нулю) / не нуль), но просто хотел быть уверен.

1 Ответ

2 голосов
/ 26 марта 2012

В моем опыте Reporting Services по умолчанию выведет пустое значение, если значение равно Null.

Поскольку вы используете IIF для изменения результатов, я думаю, что ваша проблема может быть аналогична проблеме, с которой я столкнулсяошибки деления на ноль в вычисляемых столбцах.

IIF оценит все свои операнды, поэтому произойдет ошибка, даже если деление на ноль произойдет в «ложной» части.Я фиксирую деление на ноль, показывая «-» в отчете, и использую вложенную ИИФ для замены делителя значением 1, но этот результат никогда не отображается в отчете.

=IIf(Fields!LastYearMonthToDateSales.Value = 0, "-", (Fields!ThisYearMonthToDateSales.Value - Fields!LastYearMonthToDateSales.Value) / Abs(IIf(Fields!LastYearMonthToDateSales.Value = 0, 1, Fields!LastYearMonthToDateSales.Value)))
...