# Ужасно даже после использования IIF, чтобы избежать деления на нуль в выражении

Иди в эту проблему в SSRS, и я надеюсь на некоторую помощь.

Просто хотите вернуть 0 или 0,00 в текстовом поле «Всего», когда в текстовом поле 167 или 168. У меня есть нуль в ядре ISNULL для обоих полей. Текстовое поле форматируется в отчете «Валюта в отчете». Я получаю результаты, если 167 и 168 оба не равны 0, но #Error, если они есть. Есть предположения?

=IIF((ReportItems!Textbox167.Value > 0) AND (ReportItems!Textbox168.Value > 0) ,CDEC(ReportItems!Textbox173.Value / ReportItems!Textbox167.Value) - CDEC(ReportItems!Textbox176.Value / ReportItems!Textbox168.Value), 0) 

Благодаря!

IIF оценивает обе возможности, даже если это не нужно – в результате ваша ошибка.

Теория состоит в том, что вы хотите, чтобы выражение нормально оценивалось, если знаменатель не равен нулю, но используйте 0/1, если знаменатель равен нулю.

Ваше выражение будет выглядеть так:

 =IIF(ReportItems!Textbox167.Value = 0, 0, CDEC(ReportItems!Textbox173.Value)) / IIF(ReportItems!Textbox167.Value = 0, 1, CDEC(ReportItems!Textbox167.Value)) - IIF(ReportItems!Textbox168.Value = 0, 0, CDEC(ReportItems!Textbox176.Value)) / IIF(ReportItems!Textbox168.Value = 0, 1, CDEC(ReportItems!Textbox168.Value)) 

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

Другими словами, это:

 =IIF(a, b, c) 

Сначала оценим a , b и c , пока не будет оценен IIF . Урон уже сделан к тому времени, когда IIF получает возможность посмотреть на значения.

Вместо этого вы должны испечь дивиденд в выражении IIF чтобы убедиться, что вы никогда не получите 0 в выражении деления вообще, вместо того, чтобы избегать использования выражения.

  • Создайте набор данных SSRS, который запрашивает данные, зависящие от результатов из хранимой процедуры, которая создает таблицу Temp для хранения результатов?
  • Отображение HTML-контента в отчете SSRS
  • sp_send_dbmail вставить файл mhtml в тело
  • Записи SSRS не отображаются, когда используется (выберите все), но при выборе особого значения
  • Динамические параметры SSRS, прошедшие через заголовок страницы
  • Преобразовать MonthName в месяц Номер SSRS
  • Почему мои диаграммы не отображаются в SSRS 2012?
  • Как перемещать столбцы деталей между родительскими группами в SSRS
  • Как добавить параметры для нескольких агентов для исключения из отчета статистики SSRS
  • Определение отчета имеет недопустимое целевое пространство имен rsInvalidReportDefinition
  • Как удалить URL веб-службы сервера отчетов из диспетчера конфигурации Reporting Service Configuration Manager
  • Interesting Posts

    SQL Server 2016: создание учетных данных и добавление прокси-сервера агента SQL Server для него

    vb.net искать базу данных sql для проверки номера учетной записи клиента

    выберите строки из таблицы и проверьте, не находится ли условие в столбце в sql

    Как изменить отображаемый текст в представлении?

    Можно ли скрыть столбцы на диаграмме базы данных SQL Server Management Studio?

    Обновить таблицу из двух параметров, разделенных запятыми, в качестве входных данных

    объединение двух таблиц с различными условиями разного столбца

    Мне нужно найти способ удалить все после третьего .bak-файла в резервной папке SQL Server

    SQL Server: сериализуемый уровень не работает

    Как изменить имя приложения в Entity Framework

    Подсчет активных элементов за периоды времени в зависимости от начала и продолжительности активности

    C #, LINQ, SQL: составные столбцы

    datetime Cast или Convert?

    Получение конверсии не удалось при преобразовании значения varchar '->' в тип данных int. Как я могу это решить?

    Как использовать параметр Where в Exec Stored Procdure

    Давайте будем гением компьютера.