Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Изменения: 12 декабря 2006 г.
На этом занятии отрабатывается изменение параметров SalesOrderID и DayoftheWeek с однозначных на многозначные. Многозначные параметры позволяют выбирать для параметра отчета несколько значений. Чтобы изменить параметр отчета SalesOrderID, необходимо изменить запрос набора данных AdventureWorks таким образом, чтобы параметр @SalesPersonID проверялся в наборе выбранных значений, а не на равенство одному значению, и проверить многозначное свойство параметра отчета. Чтобы изменить параметр отчета DayoftheWeek, необходимо проверить многозначное свойство, установить доступные значения из нового набора данных и ввести выражение для значений по умолчанию. Затем необходимо путем создания нового набора данных предоставить доступные значения для параметра DayoftheWeek. Наконец, в отчет следует добавить текстовое поле для отображения выбранных значений параметра DayoftheWeek.
Открытие отчета «Заказы на продажу»
В среде Business Intelligence Development Studio SQL Server откройте проект сервера отчетов «Учебник», созданный на предыдущем занятии.
В обозревателе решений дважды щелкните отчет Заказы на продажу. Отчет откроется в режиме разметки.
Перейдите на вкладку «Данные».
Изменение запроса набора данных для проверки включения в набор значений
В раскрывающемся списке «Наборы данных» выберите AdventureWorks.
Измените предложение WHERE существующего запроса путем изменения проверки параметра
@SalesPersonIDс равенства (= (@SalesPersonID)) на включение ((IN (@SalesPersonID)).Замените строку запроса для этого набора данных следующим запросом:
SELECT S.OrderDate, DATENAME(weekday, S.OrderDate) as Weekday, S.SalesOrderNumber, S.TotalDue, C.FirstName, C.LastName FROM HumanResources.Employee E INNER JOIN Person.Contact C ON E.ContactID = C.ContactID INNER JOIN Sales.SalesOrderHeader S ON E.EmployeeID = S.SalesPersonID WHERE ( S.OrderDate BETWEEN (@StartDate) AND (@EndDate) AND S.SalesPersonID IN (@SalesPersonID) )Нажмите кнопку «Запуск» (!). При получении запроса на ввод параметров, выберите значения из следующей таблицы. Конструктор запросов не поддерживает проверку многозначных параметров.
@StartDate
20010101
@EndDate
20030101
@SalesPersonID
286
Нажмите кнопку «OK». Для менеджера по продажам по имени Ranjit Varkey Chudakatil появится результирующий набор с параметром SalesPersonID = 286.
Установка свойств параметра отчета SalesPersonID
В меню «Отчет» выберите пункт «Параметры отчета». Откроется диалоговое окно «Параметры отчета».
В области «Параметры» выберите параметр SalesPersonID.
В разделе «Свойства» установите флажок «Многозначный».
В текстовом поле «Подсказка» введите Select Sales Persons:.
Нажмите кнопку «OK».
Перейдите на вкладку «Предварительный просмотр». В отчете отобразится раскрывающийся список с именам менеджеров по продажам.
Примечание. |
|---|
| Значение («Выбрать все») отображается в раскрывающемся списке как первое доступное значение для многозначного параметра. Установите этот флажок, чтобы выбрать или очистить все значения. |
Примечание. |
|---|
| Параметр «Выбрать все» был отключен в SQL Server 2005 с пакетом обновления 1 (SP1), но был восстановлен в SQL Server 2005 с пакетом обновления 2 (SP2). |
Добавление нового набора данных для доступных значений параметра DaysoftheWeek
На вкладке «Данные» в раскрывающемся списке «Наборы данных» выберите <Создать набор данных>.
В качестве источника данных задайте AdventureWorks.
В поле «Имя» введите WeekDaysfromQuery.
В области запросов вставьте следующую строку запроса:
SET DATEFIRST 1; SELECT DISTINCT DATEPART(weekday, S.OrderDate) as WeekDayNumber, DATENAME(weekday, S.OrderDate) as Weekday FROM Sales.SalesOrderHeader S Order by WeekDayNumberЗначение
DATEFIRSTзадает первый день недели. Например, параметрSET DATEFIRST 7изменяет порядок следования дней недели таким образом, что первым днем становится воскресенье. Дополнительные сведения см. в разделе SET DATEFIRST (Transact-SQL).В этом учебнике первым днем недели является понедельник.
Нажмите кнопку «OK».
На панели инструментов конструктора запросов нажмите кнопку «Запустить» (!). В результирующем наборе отобразятся порядковые номера и дни недели.
Установка свойств параметра отчета DayoftheWeek
В меню «Отчет» выберите пункт «Параметры отчета». Откроется диалоговое окно «Параметры отчета».
В области «Параметры» выберите параметр DayoftheWeek. Этот параметр был создан на занятии 2.
В разделе «Свойства» установите флажок «Многозначный».
В текстовом поле «Подсказка» введите Фильтровать по следующим дням недели:.
В разделе «Доступные значения» в раскрывающемся списке «Наборы данных» выберите WeekDaysfromQuery.
В раскрывающемся списке поля «Значение» выберите «День недели».
В раскрывающемся списке поля «Метка» выберите «День недели».
В качестве значений «По умолчанию» в первом текстовом поле «Значение» введите Суббота, во втором текстовом поле «Значение» введите Воскресенье.
Нажмите кнопку «OK».
Перед предварительным просмотром отчета необходимо в критерии фильтра, определенном для области данных таблицы, задать использование оператора IN, потому что теперь параметр DayoftheWeek является многозначным.
Настройка фильтра для использования многозначных параметров
В режиме разметки выберите таблицу. Вокруг таблицы отобразится серый контур.
Щелкните правой кнопкой мыши контур таблицы и выберите пункт «Свойства». Откроется диалоговое окно «Свойства таблицы».
Перейдите на вкладку «Фильтр».
Убедитесь, что в раскрывающемся списке в столбце «Выражение» задано значение
=Fields!Weekday.Value.Измените «Оператор» с (=) на In.
Убедитесь, что в раскрывающемся списке в текстовом поле «Значение» задано значение в
=Parameters!DayoftheWeek.Value.Нажмите кнопку «OK».
Теперь фильтр таблицы настроен для сравнения значения поля День недели со значением параметра DayoftheWeek с помощью оператора In. При выборе многозначных значений для параметра отчета фильтр будет проверять все строки таблицы на наличие поля День недели в коллекции DayoftheWeek.
Перейдите на вкладку «Предварительный просмотр». В отчете отобразится параметр отчета DaysoftheWeek со значениями по умолчанию Суббота и Воскресенье.
Примечание. |
|---|
| Значение («Выбрать все») отображается в раскрывающемся списке как первое доступное значение для многозначного параметра, кроме случаев, обозначенных в предыдущей процедуре. Установите этот флажок, чтобы выбрать или очистить все значения. |
Добавление текстового поля для отображения значений параметра
В режиме разметки выберите таблицу. Несколько раз нажмите клавишу со стрелкой вниз, чтобы переместить таблицу вниз и увеличить высоту отчета.
Перетащите текстовое поле из инструментария в верхнюю часть таблицы. Выберите одну границу текстового поля и растяните его по ширине таблицы.
Вставьте в это текстовое поле следующее выражение:
="From " & Parameters!StartDate.Value & " to " & Parameters!EndDate.Value & vbCrLf & "For the following " & Parameters!DayoftheWeek.Count & " days of the week: " & Join(Parameters!DayoftheWeek.Value,", ") & vbCrLf & "First and last selected salespersons: " & Parameters!SalesPersonID.Label(0) & " and " & Parameters!SalesPersonID.Label(Parameters!SalesPersonID.Count-1)Относительно этого выражения следует учесть следующее.
- Вместо значения можно указывать ссылку на метку параметра. Например:
Parameters!SalesPersonID.LabelвместоParameters!SalesPersonID.Value. - Чтобы обратиться к отдельному элементу коллекции параметров, следует использовать начинающийся с нуля индекс. Например:
Parameters!SalesPersonID.Label(0). - Чтобы обратиться ко всей коллекции, индекс использовать не следует. Например:
Parameters!SalesPersonID.Value. - Чтобы найти количество значений, используйте
Parameters!SalesPersonID.Count. - Кроме того, можно выяснить, является ли параметр многозначным. Например:
Parameters!SalesPersonID.IsMultivalue. - С помощью функции Join языка Visual Basic все выбранные значения можно сцепить в многозначный параметр. Например,
Join(Parameters!DayoftheWeek.Value,", ").
- Вместо значения можно указывать ссылку на метку параметра. Например:
Нажмите кнопку «Предварительный просмотр». Убедитесь, что при нажатии кнопки «Просмотр отчета» в текстовом поле отображаются значения, выбранные в параметрах.
Следующие шаги
Изменение свойств параметров отчета из однозначных в многозначные выполнено успешно. Для использования коллекции многозначных параметров были сделаны необходимые изменения запроса, фильтра и выражения. Было изучено использование многозначных параметров в выражениях. Следующее занятие посвящено созданию логического параметра для управления детализацией отчета. См. раздел Занятие 5. Добавление параметра для управления видимостью строки.
Журнал изменений
| Версия | Журнал |
|---|---|
12 декабря 2006 г. |
|
См. также
Задачи
Занятие 1. Создание проекта сервера отчетов для учебника по параметрам
Другие ресурсы
Работа с параметрами в службах Reporting Services
Примечание.