Использование параметров для управления данными отчета
Параметры отчета обычно фильтруют данные отчета, полученные из источника данных. Фильтрация данных в источнике данных может улучшить производительность обработки и просмотра отчета. Если возможность фильтрации данных в источнике отсутствует, можно воспользоваться параметрами отчета для фильтрации его данных после того, как они будут получены. На основе параметров отчета данные можно также сортировать и группировать.
Фильтрация данных в источнике данных
Параметры запроса применяются для выполнения фильтрации в источнике данных. Для каждого параметра запроса службы Reporting Services создают соответствующий параметр отчета. Когда пользователь выбирает значения для параметров отчета, эти значения передаются в запрос. Если запрос выполняется в источнике данных, для отчета получаются только указанные пользователем значения. Такие свойства, как пользовательская подсказка и значения по умолчанию, применяются к параметрам отчета.
Параметры запроса
Параметры отчета автоматически создаются из параметров запроса. В построителе отчетов параметры отчета создаются автоматически, когда задается запрос для предложения фильтра.
При определении набора данных указывается конкретный тип источника данных, например MicrosoftSQL Server. Конструктор отчетов открывает конструктор запросов, предназначенный для работы с соответствующим типом источника данных. При определении запроса для каждого источника данных конструктор запросов идентифицирует переменные внутри текста команд запроса и для каждой создает параметр запроса. Не все сочетания источников и поставщиков данных поддерживают запросы с переменными. Дополнительные сведения о синтаксисе запросов, ожидаемом источником данных, см. в разделе Использование параметров запросов с конкретными источниками данных (службы Reporting Services).
Для источника данных SQL Server запросы обычно содержат переменные в предложении WHERE инструкции языка Transact-SQL для ограничения диапазона данных, возвращаемых при выполнении запроса. Аналогичным образом запросы к источнику данных служб Analysis Services обычно включают переменные многомерных выражений, содержащиеся в предложении FILTER. Запросы могут также включать переменные, переданные как входные параметры хранимой процедуры или пользовательской функции.
Каждый раз, когда изменяется запрос для набора данных, этот запрос заново обрабатывается. Если изменить запрос, удалив или переименовав переменную, параметры запроса отразят эти изменения.
Можно создать дополнительные параметры набора данных на странице Параметры диалогового окна Свойства набора данных. Созданные параметры не меняются при изменении запроса.
Значение по умолчанию для каждого параметра запроса устанавливается в выражение, вычисление которого формирует соответствующий параметр отчета. Для изменения значения по умолчанию используется вкладка Параметры диалогового окна Свойства набора данных. Например, пусть для источника данных SQL Server параметром запроса является @MyParameter, тогда параметром отчета будет MyParameter, а значение параметра запроса @MyParameter устанавливается в выражение [@MyParameter]. Дополнительные сведения см. в разделе Диалоговое окно «Свойства набора данных» — «Параметры». Можно вручную изменять параметры запроса и устанавливать их значения по умолчанию. Дополнительные сведения см. в разделе Как связать параметр запроса с параметром отчета.
В автоматически создаваемых параметрах отчета используются следующие значения по умолчанию:
Однозначный
Тип данных Text
Подсказкой является имя параметра
Нет значений по умолчанию
Нет доступных значений
Эти значения может понадобиться изменить в зависимости от типа данных, представленных параметром запроса. Дополнительные сведения см. в разделе Создание параметров отчета и настройка свойств параметров отчета.
Примечание |
---|
Если имя параметра запроса удаляется или меняется, соответствующий параметр отчета не будет автоматически удален или переименован. Если параметр запроса удален и соответствующий параметр отчета не требуется, его надо удалить вручную. Если меняется имя параметра запроса, то при сохранении запроса создается новый параметр отчета, соответствующий измененному имени. Можно переименовать параметр отчета, чтобы он соответствовал новому имени параметра запроса, и обновить свойства параметра набора данных, чтобы связать параметр запроса с параметром отчета. |
Зависимые или каскадные параметры
При создании запроса с несколькими параметрами запроса можно создать набор каскадных параметров. Каскадные параметры предоставляют способ путем фильтрации свести очень большое число значений параметров к вполне управляемому числу значений. Например, предположим, что запрос включает параметры @Category, @Subcategory и @Product, при этом список подкатегорий зависит от категории @Category, а список товаров — от подкатегории @Subcategory. Когда пользователь выбирает значение для параметра отчета Category, значения для параметра Subcategory будут ограничены только теми, которые соответствуют выбранной категории. После того как пользователь выберет значение для параметра Subcategory, выбираемые значения для параметра Product уже будут отфильтрованы выбором категории и подкатегории. С помощью этой методики можно снизить количество допустимых вариантов выбора до разумного числа значений.
Чтобы сконструировать каскадные параметры, необходимо включить в отчет следующие элементы:
Основной запрос набора данных с несколькими связанными параметрами запроса.
Упорядоченный список параметров отчета, привязанных к параметрам запроса. Обычно они автоматически создаются из основного запроса. Если зависимый параметр должен следовать за каким-то параметром, он от него зависит. Порядок следования параметров можно менять в области «Данные отчета», где их можно перемещать вверх и вниз по коллекции. Дополнительные сведения см. в разделе Как изменить порядок параметров отчета (службы Reporting Services).
Отдельный набор данных для каждого параметра отчета, предоставляющий допустимые значения. Важно использовать одинаковое написание имен параметров с учетом регистра, чтобы правильно устанавливались связи между параметрами отчета и запроса. Запрос каждого набора допустимых значений для каждого параметра отчета должен предоставлять только те значения, которые имеют смысл в контексте основного запроса.
В рассматриваемом примере параметр отчета «Продукт» зависит от подкатегории, которая, в свою очередь, зависит от категории. Сначала должен идти параметр Category, за ним Subcategory, затем Product. Запрос к набору данных, предоставляющему допустимые значения категории, должен показывать все категории, допустимые в основном запросе. Запрос, предоставляющий допустимые значения подкатегорий, когда категория уже выбрана, должен показывать все подкатегории, допустимые для этой категории, с учетом всех ограничений, присутствующих в основном запросе.
Дополнительные сведения см. в разделе Как добавить в отчет каскадные параметры (службы Reporting Services).
Фильтрация данных отчета после запуска запроса
Можно также создать параметры отчета и использовать их в критериях фильтра для фильтрации данных в наборе данных отчета, области данных или группировании табликса. Дополнительные сведения см. в разделах Фильтрация данных в отчете и Как добавить фильтр (службы Reporting Services).
Параметры отчета являются частью его определения при создании отчета, но после публикации отчета ими можно управлять независимо. После публикации определения отчета можно менять свойства параметров с помощью диспетчера отчетов. Дополнительные сведения см. в разделе Установка свойств в опубликованном отчете.
Использование быстрой замены допустимых значений параметра
При определении быстро изменяющихся доступных значений эти значения могут устаревать до выполнения отчета. Это может привести к выбору пользователем значения из списка, который более не является действительным на тот момент, когда пользователь отправляет значение и выполняет отчет. Во избежание этого пишите запросы, возвращающие наборы данных, которые не будут изменяться до тех пор, пока пользователь не выберет значение в списке и не выполнит отчет.
Кроме того, избегайте быстро изменяющихся незапрашиваемых значений. Например, если текущая дата предоставляется как доступное значение, напишите выражение, которое использует свойство DateTime.Today вместо свойства DateTime.Now. Это устраняет быстро изменяющуюся часть времени значения. Можно также использовать переменную отчета или групповую переменную как способ однократного вычисления значения и сохранения его при обработке отчета. Дополнительные сведения см. в разделе Использование ссылок на коллекции переменных отчета и групповых переменных в выражениях (службы Reporting Services).
См. также