Вам когда-нибудь приходилось создавать выражение Reporting Services, которое эмулирует оператор CASE WHEN из T-SQL? Если да, то функция SWITCH в SQL Server Reporting Services может быть решением, которое вы ищете.
Допустим, у вас есть параметр в отчете, который позволяет пользователям выбрать конкретный отчет для просмотра. Вы хотите динамически установить значение “Перейти к отчету” текстового поля на основе выбранного значения параметра. Например, если пользователь выбирает “Отчет1” из параметра, значение “Перейти к отчету” должно быть установлено на “Отчет1”.
Есть несколько методов выражений, которые вы можете использовать для решения этой проблемы, таких как метод IIF. Однако функция SWITCH предлагает наибольшую гибкость в этом сценарии.
Одно небольшое ограничение использования функции SWITCH заключается в том, что значение обновляется только при обновлении отчета. Если пользователь изменяет значение параметра, ему нужно нажать кнопку “Просмотреть отчет”, чтобы обновить значение.
Как использовать функцию SWITCH в SQL Server Reporting Services? Вот пошаговое руководство:
- Перетащите текстовое поле на отчет и щелкните правой кнопкой мыши.
- Выберите “Свойства текстового поля” в контекстном меню.
- В диалоговом окне “Свойства текстового поля” выберите “Действие” из списка доступных в правой панели.
- Убедитесь, что выбрано радиокнопка “Перейти к отчету”.
- Нажмите кнопку “Выражения” рядом со списком “Указать отчет”.
- В текстовом поле “Установить выражение для ReportName” введите выражение, подобное следующему:
=SWITCH ( Parameters!WhichReport.Value="Отчет2", "Отчет2", Parameters!WhichReport.Value="Отчет3", "Отчет3", Parameters!WhichReport.Value="Отчет4", "Отчет4" )
Функцию SWITCH следует использовать, когда у вас есть три или более условий для проверки. Когда условие оценивается как true, функция возвращает первое значение в серии доступных условий.
Что вы думаете об этом подходе? Как бы вы решили эту проблему? Я приветствую любые комментарии, критику или предложения относительно этого поста.
Не стесняйтесь писать мне на адрес pleblanc@pragmaticworks.com, если у вас возникнут вопросы или потребуется дополнительная помощь.
Скачайте пример проекта отчета, который имитирует этот подход: example_report_project.zip
Спасибо за чтение!
Patrick LeBlanc
Основатель, www.SQLLunch.com и www.TSQLScripts.com
Посетите www.BIDN.com, чтобы привнести бизнес-аналитику в вашу компанию.