Выражение RDLC, приводящее к #error - PullRequest
3 голосов
/ 07 июня 2011

У меня есть два десятичных поля, прибыль и выручка.Они отображаются в элементе управления tablix, каждый из которых имеет свой собственный столбец.В третьем столбце я хочу разделить прибыль на доход.Результат, когда любое из этих полей равно нулю, равен #error, это, я думаю, связано с делением на ноль.Я придумал следующее выражение для решения этой проблемы:

=iif(Cint(Fields!revenue.Value) = 0 orelse cint(Fields!profit.Value) = 0 ,"",FormatPercent(Fields!profit.Value / Fields!revenue.Value,2))

Это выражение все еще приводит к #error.Я провел некоторое тестирование и вынул ложную часть выражения.Выражение выглядело так:

=iif(Cint(Fields!revenue.Value) = 0 orelse cint(Fields!profit.Value) = 0 ,"No","Divide")

При запуске этого выражения на исходных точках с #error теперь показывалось «Нет».Это говорит мне о том, что выражение работает так, как я ожидал, но почему оно выдает ошибку #, когда я добавляю деление в ложное условие.Это не должно быть удар по этой части выражения.Любая помощь приветствуется.Я также попробовал оператор switch, но результаты были такими же.Каждый раз, когда у меня возникало разделение в выражении, оно вызывало ошибку # 1007 *

Ответы [ 2 ]

10 голосов
/ 07 июня 2011

Очень похоже на: В некоторых случаях выражение служб Reporting Services выдает ошибку.

IIF оценивает все аргументы.Если какой-либо аргумент генерирует ошибку, то вся функция выдаст ошибку, независимо от того, какой из трех аргументов должен был быть возвращен.

Попробуйте этот код:

=iif(Cint(Fields!revenue.Value) = 0,"",FormatPercent(Fields!profit.Value / iif(Cint(Fields!revenue.Value) = 0, Fields!revenue.Value, 1 ),2))

Этот код имеетвторой iif, который предотвращает деление любого аргумента на ноль.(Я отредактировал код прямо в браузере: он может нуждаться в незначительных изменениях. Кроме того, вам действительно следует использовать свойства ячейки или заполнителя для форматирования в процентах, а не в выражении.)

1 голос
/ 10 июля 2012

Берегись,

Похоже, вы не можете использовать неподдерживаемый тип данных в выражении iif отчета.

вот что у меня было:

=IIf(Fields!MyNotSoComplexObject.Value is nothing, "No object", Fields!MyOtherField.Value )

Когда «MyNotSoComplexObject» был нулевым, все работало, когда он был назначен на что-то, у меня была ошибка #.

Я обнаружил это, пытаясь отобразить непосредственно «MyNotSoComplexObject» в отчете.

Моя работа заключалась в том, чтобы поместить значение bool в мой набор данных, который проверяет, имеет ли значение «MyNotSoComplexObject».

...