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

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

Параметризованный отчет по продажам

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ПримечаниеПримечание

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

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

Системные требования

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

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

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

ПримечаниеПримечание

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

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

  1. Нажмите кнопку Пуск, укажите пункты Все программы и Построитель отчетов Microsoft SQL Server 2008 R2 3.0 и выберите Построитель отчетов 3.0.

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

    ПримечаниеПримечание

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

  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
    

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

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

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

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

  12. Нажмите кнопку Далее.

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

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

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

  1. На странице Расположение полей перетащите поле Subcategory в область Группы строк.

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

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

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

  4. Нажмите кнопку Далее.

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

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

  6. Нажмите кнопку Далее.

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

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

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

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

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

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

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

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

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

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

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

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

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

    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-SQLWHERE в последней строке запроса:

    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. Нажмите кнопку Сохранить.

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

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

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