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

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

Снимок экрана, показывающий, что в отчет с разбивкой на страницы можно добавить параметр.

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

Примечание

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

На изучение этого руководства потребуется примерно 25 минут.

Требования

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

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. В ячейках второй строки содержатся выражения, представляющие подкатегорию, число продаж для каждого магазина, а также итог по каждой из подкатегорий для всех магазинов. В ячейках последней строки отображаются общие итоги для каждого магазина.

    ssRB_ParamTut_Design

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

    ssRB_ParamTut_Drag

  9. Нажмите кнопку Выполнить для предварительного просмотра отчета.

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

ssRB_ParamTut__Preview1

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

3. Добавьте параметр запроса, чтобы создать параметр отчета

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

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

  1. Щелкните Конструктор для переключения обратно в режим конструктора.

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

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

    WHERE StoreID = (@StoreID)  
    

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

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

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

  6. Нажмите кнопку ОК.

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

  7. Нажмите кнопку ОК.

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

Обратите внимание, что теперь доступен параметр отчета с именем @StoreID и область "Параметры", в которой можно разместить параметры отчета.

ssRB_ParamPane

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

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

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

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

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

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

  2. В поле Запрос введите Идентификатор магазина: Этот текст появится на панели инструментов средства просмотра отчетов при выполнении отчета.

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

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

  5. Нажмите кнопку ОК.

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

  7. На панели инструментов средства просмотра отчетов введите для параметра Store ID значение 200 и нажмите Просмотреть отчет.

SSRB_ParamTutStoreID

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

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

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

  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.

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

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

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

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

  2. Нажмите кнопку Допустимые значения , а затем Получать значения из запроса.

  3. Из раскрывающегося списка Набор данных выберите Stores.

  4. Из раскрывающегося списка Поле значения выберите StoreID.

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

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

  7. В поле Запрос измените текст Идентификатор магазина: на Название магазина:

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

  8. Нажмите кнопку ОК.

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

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

  10. Выберите в этом списке значение "Contoso Catalog Store" и нажмите кнопку Просмотреть отчет.

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

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

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

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

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

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

  3. Нажмите кнопку Значения по умолчанию , а затем Получать значения из запроса.

  4. Из раскрывающегося списка Набор данных выберите Stores.

  5. Из раскрывающегося списка Поле значения выберите StoreID.

  6. Нажмите кнопку ОК.

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

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

Задание пользовательского значения по умолчанию

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

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

  3. Щелкните Значения по умолчанию > Указать значения > Добавить. Добавляется строка нового значения.

  4. В поле Значение введите 200.

  5. Нажмите кнопку ОК.

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

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

4г. Поиск пары "имя-значение"

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

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

  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. Щелкните правой кнопкой мыши маркер заголовка строки или столбца матрицы и выберите пункт Свойства табликса.

  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. Щелкните правой кнопкой мыши маркер заголовка строки или столбца матрицы и выберите пункт Свойства табликса.

  9. Перейдите на вкладку Фильтры.

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

  11. Нажмите кнопку ОК.

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

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

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

  14. Нажмите кнопку ОК.

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

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

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

  17. Щелкните раскрывающийся список рядом с параметром «Имя магазина:».

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

  18. Установите флажок Выбрать все и нажмите кнопку Просмотр отчета.

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

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

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

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

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

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

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

  3. В поле Запрос введите «Показать выбранные?»

  4. В поле Тип данных выберите Boolean.

  5. Нажмите кнопку Значения по умолчанию.

  6. Щелкните Задать значение затем Добавить.

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

  8. Нажмите кнопку ОК.

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

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

  2. Щелкните Видимость.

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

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

    Параметр «Видимость» текстового поля управляется свойством Hidden. Примените оператор Not , чтобы при выборе параметра свойство Hidden имело значение FALSE, а текстовое поле отображалось.

  5. Нажмите кнопку ОК.

  6. Нажмите кнопку ОК.

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

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

  8. На панели инструментов средства просмотра отчетов рядом с полем Показать выбранные щелкните True > Просмотр отчета.

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

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

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

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

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

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

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

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

  1. Нажмите кнопку Построитель отчетов и выберите Сохранить как.

  2. Нажмите кнопку Последние сайты и серверы.

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

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

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

  5. Выберите команду Сохранить.

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

Next Steps

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

См. также: