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


Занятие 4. Добавление многозначного параметра, включающего «Выбрать все»

Изменения: 12 декабря 2006 г.

На этом занятии отрабатывается изменение параметров SalesOrderID и DayoftheWeek с однозначных на многозначные. Многозначные параметры позволяют выбирать для параметра отчета несколько значений. Чтобы изменить параметр отчета SalesOrderID, необходимо изменить запрос набора данных AdventureWorks таким образом, чтобы параметр @SalesPersonID проверялся в наборе выбранных значений, а не на равенство одному значению, и проверить многозначное свойство параметра отчета. Чтобы изменить параметр отчета DayoftheWeek, необходимо проверить многозначное свойство, установить доступные значения из нового набора данных и ввести выражение для значений по умолчанию. Затем необходимо путем создания нового набора данных предоставить доступные значения для параметра DayoftheWeek. Наконец, в отчет следует добавить текстовое поле для отображения выбранных значений параметра DayoftheWeek.

Открытие отчета «Заказы на продажу»

  1. В среде Business Intelligence Development Studio SQL Server откройте проект сервера отчетов «Учебник», созданный на предыдущем занятии.

  2. В обозревателе решений дважды щелкните отчет Заказы на продажу. Отчет откроется в режиме разметки.

  3. Перейдите на вкладку «Данные».

Изменение запроса набора данных для проверки включения в набор значений

  1. В раскрывающемся списке «Наборы данных» выберите AdventureWorks.

  2. Измените предложение 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)
       )
    
  3. Нажмите кнопку «Запуск» (!). При получении запроса на ввод параметров, выберите значения из следующей таблицы. Конструктор запросов не поддерживает проверку многозначных параметров.

    @StartDate

    20010101

    @EndDate

    20030101

    @SalesPersonID

    286

  4. Нажмите кнопку «OK». Для менеджера по продажам по имени Ranjit Varkey Chudakatil появится результирующий набор с параметром SalesPersonID = 286.

Установка свойств параметра отчета SalesPersonID

  1. В меню «Отчет» выберите пункт «Параметры отчета». Откроется диалоговое окно «Параметры отчета».

  2. В области «Параметры» выберите параметр SalesPersonID.

  3. В разделе «Свойства» установите флажок «Многозначный».

  4. В текстовом поле «Подсказка» введите Select Sales Persons:.

  5. Нажмите кнопку «OK».

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

Aa337396.note(ru-ru,SQL.90).gifПримечание.
Значение («Выбрать все») отображается в раскрывающемся списке как первое доступное значение для многозначного параметра. Установите этот флажок, чтобы выбрать или очистить все значения.
Aa337396.note(ru-ru,SQL.90).gifПримечание.
Параметр «Выбрать все» был отключен в SQL Server 2005 с пакетом обновления 1 (SP1), но был восстановлен в SQL Server 2005 с пакетом обновления 2 (SP2).

Добавление нового набора данных для доступных значений параметра DaysoftheWeek

  1. На вкладке «Данные» в раскрывающемся списке «Наборы данных» выберите <Создать набор данных>.

  2. В качестве источника данных задайте AdventureWorks.

  3. В поле «Имя» введите WeekDaysfromQuery.

  4. В области запросов вставьте следующую строку запроса:

    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).

    В этом учебнике первым днем недели является понедельник.

  5. Нажмите кнопку «OK».

  6. На панели инструментов конструктора запросов нажмите кнопку «Запустить» (!). В результирующем наборе отобразятся порядковые номера и дни недели.

Установка свойств параметра отчета DayoftheWeek

  1. В меню «Отчет» выберите пункт «Параметры отчета». Откроется диалоговое окно «Параметры отчета».

  2. В области «Параметры» выберите параметр DayoftheWeek. Этот параметр был создан на занятии 2.

  3. В разделе «Свойства» установите флажок «Многозначный».

  4. В текстовом поле «Подсказка» введите Фильтровать по следующим дням недели:.

  5. В разделе «Доступные значения» в раскрывающемся списке «Наборы данных» выберите WeekDaysfromQuery.

  6. В раскрывающемся списке поля «Значение» выберите «День недели».

  7. В раскрывающемся списке поля «Метка» выберите «День недели».

    В качестве значений «По умолчанию» в первом текстовом поле «Значение» введите Суббота, во втором текстовом поле «Значение» введите Воскресенье.

  8. Нажмите кнопку «OK».

    Перед предварительным просмотром отчета необходимо в критерии фильтра, определенном для области данных таблицы, задать использование оператора IN, потому что теперь параметр DayoftheWeek является многозначным.

Настройка фильтра для использования многозначных параметров

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

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

  3. Перейдите на вкладку «Фильтр».

  4. Убедитесь, что в раскрывающемся списке в столбце «Выражение» задано значение =Fields!Weekday.Value.

  5. Измените «Оператор» с (=) на In.

  6. Убедитесь, что в раскрывающемся списке в текстовом поле «Значение» задано значение в =Parameters!DayoftheWeek.Value.

  7. Нажмите кнопку «OK».

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

  8. Перейдите на вкладку «Предварительный просмотр». В отчете отобразится параметр отчета DaysoftheWeek со значениями по умолчанию Суббота и Воскресенье.

Aa337396.note(ru-ru,SQL.90).gifПримечание.
Значение («Выбрать все») отображается в раскрывающемся списке как первое доступное значение для многозначного параметра, кроме случаев, обозначенных в предыдущей процедуре. Установите этот флажок, чтобы выбрать или очистить все значения.

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

  1. В режиме разметки выберите таблицу. Несколько раз нажмите клавишу со стрелкой вниз, чтобы переместить таблицу вниз и увеличить высоту отчета.

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

  3. Вставьте в это текстовое поле следующее выражение:

    ="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,", ").
  4. Нажмите кнопку «Предварительный просмотр». Убедитесь, что при нажатии кнопки «Просмотр отчета» в текстовом поле отображаются значения, выбранные в параметрах.

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

Изменение свойств параметров отчета из однозначных в многозначные выполнено успешно. Для использования коллекции многозначных параметров были сделаны необходимые изменения запроса, фильтра и выражения. Было изучено использование многозначных параметров в выражениях. Следующее занятие посвящено созданию логического параметра для управления детализацией отчета. См. раздел Занятие 5. Добавление параметра для управления видимостью строки.

Журнал изменений

Версия Журнал

12 декабря 2006 г.

Измененное содержимое
  • В версии с пакетом обновления 2 (SP2) восстановлен параметр «Выбрать все».

См. также

Задачи

Занятие 1. Создание проекта сервера отчетов для учебника по параметрам

Другие ресурсы

Работа с параметрами в службах Reporting Services

Справка и поддержка

Получение помощи по SQL Server 2005