Руководство. Добавление параметра в отчет (построитель отчетов)

В этом учебнике вы узнаете, как добавить параметр к отчету Reporting Services с разбивкой на страницы, чтобы его читатели могли фильтровать данные по одному или нескольким значениям.

Screenshot that shows you can add a parameter to a paginated report.

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

Примечание.

В этом учебнике шаги работы с мастером объединены в одну процедуру. Пошаговые инструкции по переходу к серверу отчетов, выбору источника данных и созданию набора данных см. в первом руководстве из этой серии: руководство. Создание базового отчета таблицы (построитель отчетов).

Предполагаемое время для выполнения заданий данного учебника: 25 минут.

Requirements

Дополнительные сведения о требованиях см. в статьях "Предварительные требования" для учебников (построитель отчетов).

1. Создание матрицного отчета и набора данных в мастере таблиц или матриц

Создайте матричный отчет, источник данных и набор данных.

Примечание.

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

Создание нового матрицного отчета

  1. Запустите построитель отчетов на компьютере, веб-портале Служб Reporting Services или в режиме интеграции с SharePoint.

    Откроется диалоговое окно Создать отчет или набор данных .

    Если диалоговое окно Новый отчет или набор данных не появилось, в меню Файл выберите команду >Создать.

  2. Убедитесь в том, что на левой панели выбран Новый отчет .

  3. На панели справа выберите Мастер таблицы или матрицы.

  4. На странице Выбор набора данных выберите Создать набор данных>Далее.

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

  6. Выберите Далее.

    Возможно, вам потребуется ввести свои учетные данные.

  7. На странице "Конструктор запроса" выберите "Изменить как текст".

  8. В пустой области вверху вставьте следующий запрос:

    ;WITH CTE (StoreID, Subcategory, Quantity)   
    AS (  
    SELECT 200 AS StoreID, 'Digital SLR Cameras' AS Subcategory, 2002 AS Quantity  
    UNION SELECT  200 AS StoreID, 'Camcorders' AS Subcategory, 1954 AS Quantity  
    UNION SELECT  200 AS StoreID, 'Accessories' AS Subcategory, 1895 AS Quantity  
    UNION SELECT  199 AS StoreID, 'Digital Cameras' AS Subcategory, 1849 AS Quantity  
    UNION SELECT  306 AS StoreID, 'Digital SLR Cameras' AS Subcategory, 1579 AS Quantity  
    UNION SELECT  306 AS StoreID, 'Camcorders' AS Subcategory, 1561 AS Quantity  
    UNION SELECT  306 AS StoreID, 'Digital Cameras' AS Subcategory, 1553 AS Quantity  
    UNION SELECT  306 AS StoreID, 'Accessories' AS Subcategory, 1534 AS Quantity  
    UNION SELECT 307 AS StoreID, 'Accessories' AS Subcategory, 1755 AS Quantity  
    UNION SELECT 307 AS StoreID, 'Camcorders' AS Subcategory, 1631 AS Quantity  
    UNION SELECT 307 AS StoreID, 'Digital SLR Cameras' AS Subcategory, 1772 AS Quantity)  
    SELECT StoreID, Subcategory, Quantity  
    FROM CTE  
    

    Этот запрос сочетает результаты нескольких инструкций SELECT языка Transact-SQL внутри обобщенного табличного выражения, определяя значения, в основе которых лежат упрощенные данные по продажам фотоаппаратов из образца базы данных Contoso. Подкатегории представляют цифровые фотоаппараты, цифровые однообъективные зеркальные фотоаппараты, видеокамеры и аксессуары.

  9. На панели инструментов конструктора запросов нажмите кнопку "Выполнить " (!), чтобы просмотреть данные.

    Результирующий набор состоит из 11 строк данных, которые показывают количество элементов, проданных для каждого подкатегории для четырех магазинов, в следующих столбцах: StoreID, Subcategory, Quantity. Имя хранилища не входит в результирующий набор. Далее в этом руководстве вы узнаете имя хранилища, соответствующего идентификатору хранилища из отдельного набора данных.

    Этот запрос не содержит параметров запроса. Далее в этом руководстве вы добавите параметры запроса.

  10. Выберите Далее.

2. Упорядочение данных и выбор макета в мастере

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

Упорядочение данных в группы

  1. На странице Размещение полей перетащите поле "Субкатегория" в область Группы строк.

  2. Перетащите поле "StoreID" в область Группы столбцов.

  3. Перетащите поле "Количество" в область Значения.

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

  4. Выберите Далее.

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

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

  6. Выберите Далее.

  7. Выберите Готово.

    Матрица добавляется в область конструктора. Она содержит три столбца и три строки. В ячейках первой строки содержатся поля Subcategory, [StoreID] и Total. В ячейках второй строки содержатся выражения, представляющие подкатегорию, число продаж для каждого магазина, а также итог по каждой из подкатегорий для всех магазинов. В ячейках последней строки отображаются общие итоги для каждого магазина.

    Screenshot of the matrix with the three columns and three rows.

  8. Выберите в матрице, наведите указатель мыши на край первого столбца, захватите дескриптор и разверните ширину столбца.

    Screenshot of the matrix while expanding the column width.

  9. Выберите "Запустить ", чтобы просмотреть отчет.

Отчет будет запущен на сервере отчетов; также будет отображен заголовок и время обработки отчета.

Screenshot of the report preview run on the report server.

Пока в заголовках столбцов отображается идентификатор магазина, а не его имя. Позже вы добавите выражение для поиска имени хранилища в наборе данных, который содержит пары имен идентификаторов и имен хранилища.

3. Добавление параметра запроса для создания параметра отчета

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

Добавление параметра запроса

  1. Выберите "Конструктор", чтобы вернуться к представлению конструктора.

  2. В области данных отчета разверните папку наборов данных, щелкните правой кнопкой мыши DataSet1 и выберите "Запрос".

  3. Добавьте в последней строке запроса следующее предложение Transact-SQL WHERE:

    WHERE StoreID = (@StoreID)  
    

    Предложение WHERE ограничивает запрашиваемые данные идентификатором магазина, указанном в параметре запроса @StoreID.

  4. На панели инструментов конструктора запросов нажмите кнопку "Выполнить " (!). Откроется диалоговое окно Определение параметров запроса и предложит ввести значение параметра запроса @StoreID.

  5. В поле "Значение параметра" введите 200.

  6. Нажмите ОК.

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

  7. Нажмите ОК.

  8. В области данных отчета разверните папку Параметры .

Теперь есть параметр отчета с именем @StoreID и область параметров, в которой можно выложить параметры отчета.

Screenshot of the StodeID field in the Report Data pane.

Не отображается область "Параметры"? В меню Вид выберите пункт Параметры.

4. Изменение типа данных по умолчанию и других свойств для параметра отчета

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

Изменение типа данных по умолчанию для параметра отчета

По умолчанию созданный параметр имеет тип данных Text. Так как идентификатор магазина является целым числом, тип данных можно изменить на Integer.

  1. В области "Данные отчета" в узле "Параметры " щелкните правой кнопкой мыши @StoreID, а затем выберите "Свойства параметров".

  2. В командной строке введите идентификатор Магазина? Этот текст отображается на панели инструментов средства просмотра отчетов при запуске отчета.

  3. В раскрывающемся списке Тип данныхвыберите Integer.

  4. Примите для оставшихся параметров в диалоговом окне значения по умолчанию.

  5. Нажмите ОК.

  6. Выберите "Запустить ", чтобы просмотреть отчет. Средство просмотра отчетов выводит запрос Идентификатор магазина: для параметра @StoreID.

  7. На панели инструментов средства просмотра отчетов рядом с идентификатором Магазина введите 200 и выберите "Просмотреть отчет".

Screenshot of the report preview for Store ID 200.

4a. Добавление набора данных для предоставления доступных значений и отображаемых имен

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

Создание набора данных для допустимых значений для параметра

  1. Выберите "Конструктор", чтобы перейти в режим конструктора.

  2. В области "Данные отчета" щелкните правой кнопкой мыши папку наборов данных и выберите " Добавить набор данных".

  3. В поле "Имя" введите "Магазины".

  4. Установите флажок Использовать набор данных, внедренный в отчет.

  5. В раскрывающемся списке Источник данныхвыберите источник данных, который использовался в первой процедуре.

  6. Убедитесь, что в списке Тип запросавыбран тип Текст .

  7. В поле Запросвставьте следующий текст:

    SELECT 200 AS StoreID, 'Contoso Catalog Store' as StoreName  
    UNION SELECT 199 AS StoreID, 'Contoso North America Online Store' as StoreName  
    UNION SELECT 307 AS StoreID, 'Contoso Asia Online Store' as StoreName  
    UNION SELECT 306 AS StoreID, 'Contoso Europe Online Store' as StoreName  
    
  8. Нажмите ОК.

    В области данных отчета в узле Stores набора данных отображаются поля StoreID и StoreName.

4b. Указание доступных значений для отображения в списке

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

Предоставление доступных значений для параметра из набора данных

  1. В области данных отчета щелкните правой кнопкой мыши параметр @StoreID, а затем выберите свойства параметра.

  2. Выберите "Доступные значения", а затем выберите " Получить значения" из запроса.

  3. В наборе данных в раскрывающемся списке выберите "Магазины".

  4. В поле "Значение" в раскрывающемся списке выберите StoreID.

  5. В поле "Метка" в раскрывающемся списке выберите StoreName. Поле метки указывает отображаемое имя для значения.

  6. Выберите Общие.

  7. В командной строке измените идентификатор хранилища наимя магазина?

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

  8. Нажмите ОК.

  9. Просмотрите отчет.

    На панели инструментов средства просмотра отчетов текстовое поле параметра преобразовалось в раскрывающийся список с текстом Выберите значение.

  10. В раскрывающемся списке выберите Магазин каталога Contoso, а затем выберите "Просмотреть отчет".

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

4в. Указание значения по умолчанию

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

Указание значения по умолчанию из набора данных

  1. Переключитесь в режим конструктора.

  2. В области данных отчета щелкните правой кнопкой мыши @StoreID, а затем выберите "Свойства параметра".

  3. Выберите значения по умолчанию, а затем выберите "Получить значения" из запроса.

  4. В наборе данных в раскрывающемся списке выберите "Магазины".

  5. В поле "Значение" в раскрывающемся списке выберите StoreID.

  6. Нажмите ОК.

  7. Просмотрите отчет.

Для параметра @StoreIDв средстве просмотра отчетов отображается значение "Contoso North America Online Store", так как это первое значение в результирующем наборе для набора данных Stores. Отчет отображает число продаж цифровых фотоаппаратов в магазине с идентификатором 199.

Указание настраиваемого значения по умолчанию

  1. Переключитесь в режим конструктора.

  2. В области данных отчета щелкните правой кнопкой мыши @StoreID и выберите пункт "Свойства параметров".

  3. Выберите значения>по умолчанию, указывающие значения.> Добавляется строка нового значения.

  4. В поле Value введите 200.

  5. Нажмите ОК.

  6. Просмотрите отчет.

Для параметра @StoreIDв средстве просмотра отчетов отображается значение "Contoso Catalog Store", так как это отображаемое имя, связанное с идентификатором магазина 200. Отчет отображает число продаж для аксессуаров, видеокамер и цифровых однообъективных зеркальных фотоаппаратов в магазине с идентификатором 200.

4г. Поиск пары name/value

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

Поиск значения из набора данных

  1. Переключитесь в режим конструктора.

  2. В области конструктора в матрице в первом заголовке столбца строки щелкните правой кнопкой мыши [StoreID] и выберите выражение.

  3. В области выражения удалите весь текст, кроме начального знака равенства (=).

  4. В категории разверните общие функции и выберите "Другие". На панели «Элемент» отображается набор функций.

  5. На панели "Элемент" дважды щелкните Lookup. На панели выражений появится =Lookup(. На панели примеров отображается пример синтаксиса функции Lookup.

  6. Введите следующее выражение:

    =Lookup(Fields!StoreID.Value,Fields!StoreID.Value,Fields!StoreName.Value,"Stores")      
    

    Функция Lookup принимает значение StoreID, ищет его в наборе данных «Stores» и возвращает значение StoreName.

  7. Нажмите ОК.

    Заголовок столбца магазина содержит отображаемый текст для сложного выражения Expr.

  8. Просмотрите отчет.

В заголовке вверху каждого столбца отображается название магазина, а не его идентификатор.

5. Отображение выбранного значения параметра в отчете

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

  1. Переключитесь в режим конструктора.

  2. Щелкните правой кнопкой мыши нижний колонтитул страницы и выберите пункт >Вставить>Текстовое поле. Перетащите это текстовое поле к текстовому полю с отметкой времени. С помощью маркера текстового поля раздвиньте его в ширину.

  3. Перетащите параметр @StoreID из области данных отчета в текстовое поле. В текстовом поле отображается [@StoreID].

  4. Чтобы отобразить метку параметра, выберите в текстовом поле, пока курсор вставки не появится после существующего выражения. Введите пробел и перетащите другую копию параметра из области данных отчета в текстовое поле. В текстовом поле отображается [@StoreID] [@StoreID].

  5. Щелкните правой кнопкой мыши первый [@StoreID] и выберите выражение. Откроется диалоговое окно Выражение . Замените текст Value текстом Label.

  6. Нажмите ОК.

    Теперь текст содержит: [@StoreID.Label] [@StoreID].

  7. Просмотрите отчет.

6. Использование параметра отчета в фильтре

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

Указание параметра в фильтре матрицы

  1. Переключитесь в режим конструктора.

  2. Щелкните правой кнопкой мыши дескриптор заголовка строки или столбца в матрице, а затем выберите tablix Properties.

  3. Выберите фильтры и нажмите кнопку "Добавить". Появится строка нового фильтра.

  4. В раскрывающемся списке Выражениевыберите поле набора данных StoreID. Оно имеет тип данных Integer. Если значением выражения является поле набора данных, то тип данных устанавливается автоматически.

  5. В списке Операторвыберите знак равенства (=).

  6. В поле "Значение" введите [@StoreID].

    [@StoreID] — это простой синтаксис выражения, представляющего =Parameters!StoreID.Value.

  7. Нажмите ОК.

  8. Просмотрите отчет.

    В матрице будут отображены данные только о магазине «Contoso Catalog Store».

  9. На панели инструментов средства просмотра отчетов для имени Магазина? выберите Contoso Asia Online Store и выберите "Просмотреть отчет".

В матрице будут отображены данные, соответствующие выбранному магазину.

7. Измените параметр отчета, чтобы принять несколько значений.

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

Изменение параметра с одного на многозначный

  1. Переключитесь в режим конструктора.

  2. В области данных отчета щелкните правой кнопкой мыши @StoreID и выберите пункт "Свойства параметров".

  3. Выберите Разрешить несколько значений.

  4. Нажмите ОК.

  5. В области данных отчета разверните папку наборов данных, щелкните правой кнопкой мыши DataSet1 и выберите "Запрос".

  6. Измените знак равенства (=) на IN в предложении Transact-SQL WHERE в последней строке запроса:

    WHERE StoreID IN (@StoreID)  
    

    Оператор IN выполняет проверку того, входит ли значение в набор значений.

  7. Нажмите ОК.

  8. Щелкните правой кнопкой мыши дескриптор заголовка строки или столбца в матрице, а затем выберите tablix Properties.

  9. Выберите фильтры.

  10. В списке Операторвыберите In.

  11. Нажмите ОК.

  12. В текстовом поле, отображающем параметр (в нижнем колонтитуле страницы), удалите весь текст.

  13. Щелкните правой кнопкой мыши текстовое поле и выберите выражение. Введите следующее выражение: =Join(Parameters!StoreID.Label, ", ")

    Это выражение объединяет все названия магазинов, выбранные пользователем, через запятую с пробелом.

  14. Нажмите ОК.

  15. Выберите в текстовом поле перед созданным выражением и введите следующий текст:

    Выбранные значения параметров:

  16. Просмотрите отчет.

  17. Выберите раскрывающийся список рядом с именем магазина?

    Каждое допустимое значение будет отображено рядом с флажком.

  18. Выберите " Выбрать все" и выберите "Просмотреть отчет".

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

  19. В раскрывающемся списке выберите "Выбрать все ", чтобы очистить список, выберите "Магазин каталога Contoso" и "Contoso Asia Online Store", а затем выберите "Просмотреть отчет".

    Screenshot that shows you can multi-select parameters to add to a report.

8. Добавление логического параметра для условной видимости

Добавление логического параметра

  1. В области конструктора в области "Данные отчета" щелкните правой кнопкой мыши параметры и выберите " Добавить параметр".

  2. В поле "Имя" введите ShowSelections.

  3. В командной строке введите "Показать выделения"?

  4. В типе данных выберите логическое значение.

  5. Выберите значения по умолчанию.

  6. Выберите " Указать значение" и нажмите кнопку "Добавить".

  7. В поле "Значение" введите False.

  8. Нажмите ОК.

Настройка видимости на основе логического параметра

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

  2. Выберите "Видимость".

  3. Выберите параметр Показать или скрыть на основе выражения, а затем нажмите кнопку выражения Fx.

  4. Введите следующее выражение: =Not Parameters!ShowSelections.Value

    Свойство Hidden управляет параметром видимости текстового поля. Примените оператор Not, чтобы при выборе параметра свойство Hidden было false, а текстовое поле отображается.

  5. Нажмите ОК.

  6. Нажмите ОК.

  7. Просмотрите отчет.

    Текстовое поле, отображающее варианты параметров в нижнем колонтитуле, не отображается.

  8. На панели инструментов средства просмотра отчетов рядом с выбранными элементами выберите "True>View Report".

    В нижнем колонтитуле страницы появится текстовое поле, в котором отображаются все выбранные названия магазинов.

9. Добавление заголовка отчета

Добавление заголовка отчета

  1. Переключитесь в режим конструктора.

  2. В области конструктора выберите "Щелкните", чтобы добавить название.

  3. Введите параметризованные продажи продуктов и выберите вне текстового поля.

10. Сохранение отчета

Сохранение отчета на сервере отчетов

  1. В построитель отчетов нажмите кнопку "Сохранить как".

  2. Выберите последние сайты и серверы.

  3. Выберите или введите имя сервера отчетов, в котором у вас есть разрешение на сохранение отчетов.

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

  4. В поле Имязамените имя по умолчанию на «Параметризованный отчет о продажах».

  5. Выберите Сохранить.

Отчет будет сохранен на сервере отчетов. Сервер отчетов, к которому вы подключены, отображается в строке состояния в нижней части окна.

Следующий шаг

Вы завершили руководство по добавлению параметра в отчет. Дополнительные сведения о параметрах см. в разделе "Параметры отчета с разбивкой на страницы" (построитель отчетов).