Выражение отчетами, в результате ошибки #
У меня есть два десятичных поля: прибыль и доход. Они отображаются в элементе управления табликса, каждый из которых имеет свой собственный столбец. В третьей колонке я хочу разделить прибыль на выручку. Результатом, когда любое из этих полей равно нулю, является #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 ответа:
Очень похоже на: выражение 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".