Поделиться через


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

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

rs_tut_Parameter rs_tut_Parameter

Обзор учебника

В этом учебнике рассматриваются следующие темы:

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

  2. Организация данных, выбор макета и стиля в мастере таблицы или матрицы

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

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

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

    2. Задание доступных значений для создания раскрывающегося списка значений

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

    4. Поиск значения в наборе данных, содержащем пары имя-значение

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

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

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

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

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

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

Примечание

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

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

Требования

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

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

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

Примечание

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

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

  1. Нажмите кнопку Пуск, выберите Пункты Программы, Microsoft SQL Server 2014Report Builder, а затем щелкните Report Builder.

    Откроется диалоговое окно Приступая к работе .

    Примечание

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

  2. Убедитесь, что на панели слева выбран пункт Отчет .

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

  4. Нажмите кнопку Создать.

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

  6. Щелкните Далее.

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

  8. Щелкните Далее.

  9. На странице Проектирование запроса нажмите кнопку Изменить как текст.

  10. На панель запроса вставьте следующий запрос:

    ;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  
    

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

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

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

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

  12. Щелкните Далее.

2. Организация данных, выбор макета и стиля в мастере таблицы или матрицы

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

Организация данных в группы

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

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

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

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

  4. Щелкните Далее.

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

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

  6. Щелкните Далее.

  7. На странице Выбор стиля в области Стили выберите стиль.

  8. Нажмите кнопку Готово.

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

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

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

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

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

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

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

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

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

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

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

    WHERE StoreID = (@StoreID)  
    

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  6. Просмотрите отчет. Средство просмотра отчетов предлагает ввести значение параметра @StoreID.

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

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

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

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

  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. На панели выражения удалите весь текст, кроме начального equals (=).

  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. Щелкните правой кнопкой мыши первое выражение и выберите команду Выражение. Откроется диалоговое окно Выражение . Замените текст Value текстом Label.

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

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

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

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

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

Задание параметра в фильтре матрицы

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

  2. Щелкните правой кнопкой мыши маркер заголовка строки или столбца матрицы и выберите пункт Свойства табликса.

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

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

  5. Убедитесь, что equals в поле Оператор выбрано значение (=).

  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. Измените equals (=) на 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. Просмотрите отчет.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Next Steps

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

См. также:

Учебники (построитель отчетов)
Построитель отчетов в SQL Server 2014