Выражение отчетами, в результате ошибки #


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

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

Это выражение по-прежнему приводит к ошибке#. Я сделал некоторые тесты и убрал ложную часть выражения. Выражение лица выглядело вот так:

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

При выполнении этого выражения исходные пятна, которые имели #error, теперь показывают "No". Это говорит мне, что выражение работает так, как я ожидал, но почему оно выбрасывает #error, когда я добавляю деление в ложном условии. Это не должно быть попаданием в эту часть выражения. Любая помощь ценится. Я также попробовал оператор switch, но результаты были те же. Он бросал ошибку #всякий раз, когда у меня было разделение в выражении.

2 3

2 ответа:

Очень похоже на: выражение 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, который удерживает любой аргумент от деления на ноль. (Я отредактировал код непосредственно в браузере: возможно, потребуются незначительные изменения. Кроме того, вы действительно следует использовать свойства ячейки или заполнителя для форматирования в виде процента, а не выражения.)

Берегись,

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

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

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

Когда "MyNotSoComplexObject" был null, все работало, когда он был назначен на что-то, у меня была #error.

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

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