Вы когда-нибудь сталкивались с проблемой создания вкладок для отчета в SQL Server Reporting Services? Если да, то вы, скорее всего, знаете, что SQL Server Reporting Services не предоставляет встроенных средств для выполнения этой задачи. Поиск подходящего решения может быть очень сложным. Как же мы можем создать вкладочный отчет в SSRS?
В этой статье мы рассмотрим пошаговое руководство по созданию вкладочного отчета в SSRS с использованием образца базы данных AdventureworksDW2008R2 для SQL Server и SQL Server 2012 Reporting Service.
Шаг 1: Создание нового отчета SSRS
Давайте начнем с создания образца отчета для демонстрационных целей. Измените имя отчета на “SSRS_TABBED_REPORT”.
Шаг 2: Создание источника данных и набора данных SSRS
Создайте подключение к источнику данных для образца базы данных AdventureworksDW2008R2. Затем создайте набор данных для образца отчета. Основной набор данных будет иметь два параметра запроса: @Year и @Quarter. Этот набор данных будет возвращать три поля данных: CalendarYear, CalendarQuarter и SalesAmount.
Шаг 3: Конфигурация параметров отчета SSRS
Внесите следующие изменения для обоих параметров отчета Year и Quarter:
- Скрыть параметры: Поскольку мы хотим реализовать вкладочную структуру навигации в SSRS, нам нужно скрыть эти два параметра. Мы создадим вкладки для каждого параметра и его значения, и каждая вкладка будет иметь присвоенное значение параметра. Когда пользователь щелкает по определенной вкладке, соответствующее значение параметра будет передано в запрос.
- Установить значения по умолчанию: Установите значения по умолчанию для обоих параметров отчета. Эти значения по умолчанию будут переданы в запрос при предварительном просмотре отчета в первый раз.
Шаг 4: Добавление Tablix
Добавьте Tablix для просмотра данных. Перенесите все три поля данных из основного набора данных в Tablix.
Шаг 5: Реализация вкладочного отчета в SSRS
Шаг 5.1: Добавление текстовых полей в качестве вкладок
Добавьте текстовые поля, которые будут рассматриваться как вкладки в отчете. Эти текстовые поля могут отображать значение параметра или любое другое значимое значение. Например, вы можете добавить текстовые поля для отображения разных лет и кварталов в качестве вкладок.
Шаг 5.2: Настройка логики при щелчке мыши
Щелкните правой кнопкой мыши по текстовому полю и перейдите к свойствам текстового поля. Перейдите на вкладку Действие и реализуйте логику при щелчке мыши. Когда пользователь щелкает по вкладке, событие при щелчке мыши вызывает тот же отчет и передает соответствующие значения параметров.
Шаг 5.3: Выделение выбранной вкладки
Для события при щелчке мыши мы хотим выделить выбранную вкладку. Измените цвет фона текстового поля при щелчке по вкладке. Используйте выражение для проверки значения параметра и установки соответствующего цвета фона.
Шаг 5.4: Настройка вкладок для кварталов
Настройте вкладки для кварталов аналогичным образом, как и для вкладок года. Установите значения параметров и реализуйте логику при щелчке мыши для передачи значений параметров.
Шаг 5.5: Выделение текущей выбранной вкладки
Аналогично вкладкам года, измените цвет фона текстовых полей для вкладок кварталов, чтобы выделить текущую выбранную вкладку.
Шаг 6: Повторение заголовка Tablix для вкладочного отчета в SSRS
Если отчет имеет более одной страницы, заголовок Tablix будет отсутствовать на второй странице. Чтобы показать заголовок Tablix на каждой странице отчета, перейдите в режим расширенного редактирования и внесите необходимые изменения в свойства статической строки.
Шаг 7: Предварительный просмотр вкладочного отчета в SSRS
После внесения всех необходимых изменений предварительно просмотрите отчет, чтобы увидеть вкладки в действии. Значения параметров по умолчанию будут переданы в запрос, и вы сможете переключаться между разными вкладками для просмотра соответствующих данных.
Создание вкладочного отчета в SQL Server Reporting Services может показаться сложной задачей, но следуя этим шагам, вы легко сможете реализовать эту функцию в своих отчетах. Вкладки обеспечивают удобную навигационную структуру и улучшают общий пользовательский опыт.