SSRS 2008 - работа с делением по нулевым сценариям
40131 просмотра
4 ответа
У нас проблема с одним из наших отчетов. В одном из наших табликсов текстовое поле имеет следующее выражение:
=Iif(Fields!SomeField.Value = 0, 0, Fields!SomeOtherField.Value / Fields!SomeField.Value)
Что должно быть довольно очевидным. Если значение SomeField равно нулю, установите значение текстового поля равным нулю, в противном случае установите значение «SomeOtherValue / SomeValue».
Что нас озадачило, так это то, что в отчете по-прежнему выдается исключение времени выполнения «попытка делить на ноль», хотя вышеприведенное выражение должно предотвратить это.
Мы немного поиграли с выражением, чтобы убедиться, что проверка нуля работает, и
=Iif(Fields!SomeField.Value = 0, "Yes", "No")
работает прекрасно. Случаи, когда данные фактически равны нулю, приводят к тому, что в текстовом поле отображается «Да», и наоборот. Так что проверка работает нормально.
Мне кажется, что механизм рендеринга отчетов генерирует исключение во время выполнения, потому что он «выглядит» так, как будто мы собираемся делить на ноль, но на самом деле это не так.
Кто-нибудь сталкивался с такой же проблемой раньше? Если так, что ты сделал, чтобы заставить это работать?
Автор: tobias86 Источник Размещён: 13.11.2019 11:36Ответы (4)
66 плюса
IIf всегда будет оценивать оба результата, прежде чем решить, какой из них на самом деле вернуть.
Пытаться
=IIf(Fields!SomeField.Value = 0, 0, Fields!SomeOtherField.Value / IIf(Fields!SomeField.Value = 0, 1, Fields!SomeField.Value))
Это будет использовать 1 в качестве делителя, если SomeOtherField.Value = 0, что не вызывает ошибку. Родительский IIf вернет правильный 0 для общего выражения.
Автор: MartW Размещён: 29.03.2011 11:4422 плюса
Простой способ избежать ошибки деления на ноль - использовать область кода отчета.
В меню выберите «Отчет»> «Свойства отчета»> «Код» и вставьте приведенный ниже код.
Public Function Quotient(ByVal numerator As Decimal, denominator As Decimal) As Decimal
If denominator = 0 Then
Return 0
Else
Return numerator / denominator
End If
End Function
Для вызова функции перейдите к выражению Textbox и введите:
=Code.Quotient(SUM(fields!FieldName.Value),SUM(Fields!FieldName2.Value))
В этом случае я выставляю формулу на уровне группы, поэтому использую сумму. В противном случае это будет:
=Code.Quotient(fields!FieldName.Value,Fields!FieldName2.Value)
От: http://williameduardo.com/development/ssrs/ssrs-divide-by-zero-error/
Автор: william mendoza Размещён: 01.08.2013 04:1116 плюса
Подумав, я думаю, лучшая идея - умножить на значение до степени -1, что является делением:
=IIf
(
Fields!SomeField.Value = 0
, 0
, Fields!SomeOtherField.Value * Fields!SomeField.Value ^ -1
)
Это не запускает проверки перед рендерингом, так как val * 0 ^ -1 приводит к бесконечности, а не к ошибке
Автор: SkyDkn Размещён: 28.12.2011 03:322 плюса
IIF оценивает оба выражения, даже если значение Fields! SomeField.Value равно 0. Использование IF вместо IIF решит проблему.
Автор: user1689669 Размещён: 12.01.2016 09:16Вопросы из категории :
- ssrs-2008 Как показать заголовки столбцов основного отчета на каждой странице, когда subreport отображает более чем на одну страницу
- ssrs-2008 Как я могу получить другой отчет, чтобы быть последней страницей в службах отчетов?
- ssrs-2008 SSRS - невозможно определить, имеет ли владелец задания доступ к серверу [SQLSTATE 42000] (ошибка 15404))
- ssrs-2008 Как получить последний день месяца с помощью служб отчетов SQL
- ssrs-2008 Службы отчетности 2008: ReportExecution2005.asmx не существует
- ssrs-2008 Прямые зависимости недействительны в SSRS
- ssrs-2008 Пустые строки в конце SSRS CSV Export
- ssrs-2008 SSRS DataSourceCredentials и аутентификация Windows
- ssrs-2008 Получите 2-е значение в наборе данных в службах Reporting Services
- ssrs-2008 Как перестать запрашивать учетные данные при развертывании отчетов в ssrs 2008
- ssrs-2008 SSRS 2008 - работа с делением по нулевым сценариям
- ssrs-2008 Отображение всплывающего предупреждения для проверки параметров SSRS
- ssrs-2008 полный путь должен быть менее 260 символов?
- ssrs-2008 Цвет строки и цвет альтернативной строки для таблицы в отчете RDLC
- ssrs-2008 Скрытые столбцы SSRS 2008 не должны экспортироваться в CSV
- ssrs-2008 как открыть мастер отчетов ssrs
- ssrs-2008 Ошибка повторного развертывания обновленных параметров по умолчанию в отчете SSRS.
- ssrs-2008 Можно ли использовать одну функцию замены для замены нескольких строк в одном поле?
- ssrs-2008 Как установить 20 записей на страницу при рендеринге отчетов в SSRS 2008?
- ssrs-2008 Как определить значение MaxHttpCollectionKeys для отчета SSRS 2008?