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


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

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

Замена существующего набора данных

  1. В панели «Данные отчета» щелкните правой кнопкой мыши набор данных AdventureWorksDataset и выберите пункт Свойства набора данных.

  2. Убедитесь, что в списке Источник данных выбран набор данных AdventureWorks_Ref.

  3. Убедитесь, что в списке Тип запроса выбран тип Текст.

  4. Нажмите кнопку Конструктор запросов, чтобы открыть конструктор запросов.

  5. Текст в текстовом поле необходимо заменить на следующий текст запроса:

    SELECT 
       soh.OrderDate AS [Date], DATENAME(weekday, soh.OrderDate) as Weekday,
       soh.SalesOrderNumber AS [Order], 
       pps.Name AS Subcat, pp.Name as Product,  
       SUM(sd.OrderQty) AS Qty,
       SUM(sd.LineTotal) AS LineTotal
    FROM Sales.SalesPerson sp 
       INNER JOIN Sales.SalesOrderHeader AS soh 
          ON sp.BusinessEntityID = soh.SalesPersonID
       INNER JOIN Sales.SalesOrderDetail AS sd 
          ON sd.SalesOrderID = soh.SalesOrderID
       INNER JOIN Production.Product AS pp 
          ON sd.ProductID = pp.ProductID
       INNER JOIN Production.ProductSubcategory AS pps 
          ON pp.ProductSubcategoryID = pps.ProductSubcategoryID
       INNER JOIN Production.ProductCategory AS ppc 
          ON ppc.ProductCategoryID = pps.ProductCategoryID
    GROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber, 
       pps.Name, pp.Name,    soh.SalesPersonID
    HAVING 
    ppc.Name = 'Clothing' 
    AND (soh.OrderDate BETWEEN (@StartDate) AND (@EndDate))
    AND  soh.SalesPersonID IN (@BusinessPersonID)
    

    Этот запрос идентичен предыдущему, но условие равенства было заменено на условие включения.

    AND soh.SalesPersonID IN (@BusinessPersonID)
    
  6. Нажмите кнопку Выполнить (!). При получении запроса на ввод параметров выберите значения из следующей таблицы. Конструктор запросов не поддерживает проверку многозначных параметров.

    @StartDate

    1/1/2001

    @EndDate

    1/1/2003

    @BusinessPersonID

    290

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

    Для менеджера по продажам по имени Ranjit Varkey Chudukatil появится результирующий набор с параметром BusinessPersonID = 290.

Изменение параметра отчета BusinessPersonID с однозначного на многозначный

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

  2. Установите флажок Разрешить несколько значений.

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

  4. Нажмите кнопку Просмотр. Отчет запустится автоматически. Раскрывающийся список значений параметра BusinessPersonID будет содержать все имена менеджеров по продажам.

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

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

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

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

  2. В панели «Данные отчета» щелкните правой кнопкой мыши AdventureWorks_Ref и выберите Добавить набор данных. Откроется диалоговое окно Свойства набора данных.

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

  4. Убедитесь, что в списке Тип запроса выбран тип «Текст».

  5. В поле Запрос введите или вставьте следующую строку запроса.

    SET DATEFIRST 1;
    SELECT DISTINCT 
       DATEPART(weekday, S.OrderDate) as WeekDayNumber,
       DATENAME(weekday, S.OrderDate) as Weekday
       FROM Sales.SalesOrderHeader S
    Order by WeekDayNumber
    
  6. На панели инструментов конструктора запросов нажмите кнопку Пуск (!) . В результирующем наборе отобразятся порядковые номера и дни недели.

  7. Дважды нажмите кнопку ОК, чтобы закрыть диалоговое окно Свойства набора данных.

    Источник данных WeekDaysfromQuery появится в панели «Данные отчета».

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

  1. В области данных отчета разверните узел Параметры и дважды щелкните DayoftheWeek. Откроется диалоговое окно Свойства параметра отчета.

  2. Выберите Разрешить несколько значений.

  3. Нажмите кнопку Допустимые значения.

  4. Выберите Получать значения из запроса.

  5. Из раскрывающегося списка в поле Набор данных выберите WeekDaysfromQuery.

  6. Из раскрывающегося списка в поле Значение выберите Weekday.

  7. Из раскрывающегося списка в поле Метка выберите Weekday.

  8. Нажмите кнопку Значения по умолчанию.

  9. Выберите Указать значения.

  10. (Необязательно) Выберите существующее значение пятница, затем нажмите кнопку Удалить.

  11. Нажмите кнопку Добавить.

  12. В поле Значение введите суббота.

  13. Нажмите кнопку Добавить.

  14. В поле Значение введите воскресенье.

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

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

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

  1. В режиме конструктора щелкните правой кнопкой мыши внутри таблицы и выберите пункт Свойства табликса. Откроется диалоговое окно Свойства табликса.

  2. Перейдите на вкладку Фильтры. Там уже должен быть фильтр, добавленный на занятии 1 для параметра DaysoftheWeek.

  3. Убедитесь, что в раскрывающемся списке в столбце Выражение задано значение [Weekday].

  4. Убедитесь, что выбран параметр Текст.

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

  6. Убедитесь, что в раскрывающемся списке в текстовом поле Значениезадано значение в [@DayoftheWeek].

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

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

  8. Нажмите кнопку Просмотр. В отчете отобразится параметр отчета DaysoftheWeek со значениями по умолчанию Saturday и Sunday. Воспользуйтесь раскрывающимся списком для выбора нескольких значений параметра DayoftheWeek.

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

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