Полезный функционал при разработке отчетов в SQL Server Reporting Services (SSRS)

Продолжаем рассматривать службы Reporting Services, в частности процесс разработки отчетов. И сейчас, как и обещал, мы будем рассматривать создание более сложных отчетов в среде Business Intelligence Development Studio.

Напомню, ранее мы уже говорили о том, что такое SQL Server Reporting Services, установили и настроили SSRS, а также рассмотрели процесс разработки простого отчета в среде BIDS. Поэтому подразумевается, что у Вас уже развернуты службы Reporting Services и Вы можете создать простой отчет среде Business Intelligence Development Studio, т.е. добавить источник данных, набор данных, знаете, как добавлять элементы на макет, в общем, основы.

Сегодня мы приступим к рассмотрению функционала, без которого, при разработке отчетов, просто не обойтись или он будет полезен и удобен пользователям. Конечно, рассмотреть все мы не сможем, но основные возможности узнаем. Предлагаю построить статью следующим образом, я буду просто перечислять возможности, которые будут Вам полезны, все, конечно же, буду сопровождать примерами и скриншотами для более лучшего понимания.

Исходные данные

В качестве источника данных, как и в предыдущей статье, предлагаю использовать тестовую таблицу в тестовой базе данных, которая будет располагаться на MS SQL Server 2008 R2.

В качестве конструктора, как Вы, наверное, уже поняли, я буду использовать среду SQL Server Business Intelligence Development Studio.

Напомню, таблица у нас содержит следующие данные:

Скриншот 1

Параметры

Без использования параметров при разработке отчетов, наверное, не обойтись, поэтому давайте начнем именно с параметров.

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

Если вспомнить наш пример из предыдущего материала, то мы там просто выводили все данные, используя вот такой запрос

 
   SELECT * FROM dbo.ProductsTable

Теперь, допустим, пользователю не нужны все данные, он хочет сам их фильтровать. Для этого мы просто создаем параметр и используем его в наборе данных в качестве значения для условия. Параметр можно создать несколькими способами, в нашем случае мы можем сразу указать название параметра в запросе, и он автоматически создастся в отчете, например:

 
   SELECT * FROM dbo.ProductsTable WHERE price >=@price

т.е. как Вы понимаете, параметр здесь @price, а сам запрос мы вставляем в свойства набора данных в текст запроса

Скриншот 2

И если мы нажмём «ОК», то у нас в окне «Данные отчета» в параметрах отобразится параметр @price.

Скриншот 3

Параметр также можно было создать, используя правую кнопку по пункту «Параметры» или через меню «Создать параметр».

Скриншот 4

Теперь давайте проверим работу отчета с параметром, для этого переходим на вкладку «Просмотр», вводим значение параметра и нажимаем кнопку «Просмотреть отчет»

Скриншот 5

Как видите, у нас вывелись все строки, у которых цена товаров больше или равна 200.

Но теперь допустим, что пользователь не хочет вводить сумму вручную, он хочет только кликать мышкой, например, у него всего три возможных варианта значение параметра и вводить каждый раз вручную ему не хочется, мы это можем устроить путем создания выпадающего списка.

Список возможных значений мы можем создать двух типов: это статический и динамический. Иными словами, если у нас всегда будет 3 значения параметра, то мы можем перечислить их вручную, а если они будут меняться, то можно использовать в качестве списка запрос к базе, т.е. набор данных (который предварительно должен быть создан). В нашем случае давайте, просто перечислим их вручную, для этого открываем свойства параметра в окне «Данные отчета» путем правой кнопки мыши.

Скриншот 6

Сначала давайте зададим текст, который отображается перед параметром, так как согласитесь, что такое price, некоторые пользователи могут не понять, и тип данных параметра, допустим, это будет целое число.

Скриншот 7

Затем перейдем на пункт «Допустимые значения», в нашем случае выбираем «Указать значения» и, соответственно, вводим их, используя кнопку «Добавить».

Скриншот 8

Еще для примера давайте зададим значение по умолчанию, допустим 0. Для этого перейдем на пункт «Значение по умолчанию» и через кнопку «Добавить» вводим значение.

Скриншот 9

Все, жмем «ОК» и проверяем работу.

Скриншот 10

Как видите, все работает.

Интерактивная сортировка

Такая сортировка позволяет уже в сформированном отчете, самим пользователем осуществлять сортировку данных. На самом деле очень полезная и удобная вещь.

Для того чтобы включить такую сортировку мы открываем «Свойства текстового поля» заголовка столбца, это можно сделать путем его выделения и нажатия правой кнопки, а затем перейдя в пункт «Интерактивная сортировка».

Скриншот 11

Или также выделением заголовка и в окне свойств нажать «UserSort» тем самым сразу перейдя в нужный пункт.

Скриншот 12

Затем мы просто включаем интерактивную сортировку, в нашем случае для строк детализации, и выбираем поле, по которому сортировать.

Скриншот 13

Жмем «ОК» и проверяем работу

Скриншот 14

Мы видим, что появился некий элемент управления, при использовании которого будет происходить сортировка по полю price.

Группировка

Это также очень полезная возможность и она нужна для того чтобы группировать данные с использованием агрегатных функций.

Допустим, пользователь хочет, чтобы в его отчете выводились сводные данные по городам, для этого мы немного переконструируем наш макет и добавим группировку по полу city. Выведем поле price и даже просуммируем его и отобразим в заголовке группы.

Для этого в качестве примера давайте добавим на макет еще один элемент «Таблица», свяжем его с нашим набором данных, т.е. вызываем меню «Свойства табликса» правой кнопкой.

Скриншот 15

И в пункте «Имя набора данных» выбираем необходимый набор и жмем «ОК».

Скриншот 16

Примечание! В предыдущем материале мы не связывали таблицу с набором данных, так как мы просто перетягивали поля с окна «Набор данных» на нашу таблицу и тем самым привязка выполнилась автоматически.

Теперь наша таблица связана с набором данных, и мы можем добавить группировку, для этого в области «Группы строк» кликаем по указанному ниже значку и добавляем родительскую группу.

Скриншот 17

Группируем по полю city и добавляем верхний колонтитул группы и жмем «ОК».

Скриншот 18

Нам осталось только выбрать поля для отображения и удалить крайние столбцы, так как в нашем случае они не нужны.

Скриншот 19

Еще можно выделить сумму группы или изменить ее шрифт, для того чтобы было наглядней. Проверяем работу.

Скриншот 20

Вот такой вот результат.

Детализация данных

В предыдущем примере мы сразу выводили сумму группы и ее детализацию, но допустим, пользователю сразу не нужны подробные данные, ему сначала нужны только сводные, а в случае необходимости он мог быстро получить детализацию этих данных. Это можно сделать путем управления видимостью элементов, и в нашем случае мы можем при открытии отчета просто скрыть детализацию (сведения) и назначить элемент управления для переключения.

Что мы делаем, в области «Группы строк» вызываем меню «Свойства группы» для элемента (Группы), в моем случае это «Сведения1».

Скриншот 21

Затем переходим в пункт «Видимость» и говорим, что при первом запуске данную область скрыть, а также, что отобразить ее может тот или иной элемент, в моем случае price2, это название поля, в котором отображается сумма группы.

Скриншот 22

Жмем «ОК» и проверяем.

Скриншот 23

Видим, что сначала у нас отображены только сводные данные, но если нажать на плюсик.

Скриншот 24

Отобразится детализация группы.

Элемент матрица

До этого для отображения данных мы использовали только элемент таблица, но есть еще такой полезный элемент как «Матрица», который в отличие от таблицы, может отображать данные по двум осям.

Чтобы было понятней, давайте на макет добавим элемент «Матрица».

Скриншот 25

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

Скриншот 26

Проверяем

Скриншот 27

Видим, что у нас в название колонок отображены города, т.е. количество колонок сформировано динамически на основе данных, на пересечение сумма цен. Этот элемент незаменим тогда, когда необходимо отображать сгруппированные данные, как по строкам, так и по столбцам.

На этом давайте заканчивать, надеюсь, все было понятно, в следующих материалах мы продолжим разговор о службах Reporting Services. Удачи!

Понравилась статья? Поделиться с друзьями:
Заметки IT специалиста
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:
Нажимая на кнопку «Отправить комментарий», я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.