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

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

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

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

  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 = (@BusinessPersonID)
    

    Этот отчет эквивалентен предыдущему, с той лишь разницей, что добавлено условие, ограничивающее результирующий набор одним менеджером по продажам:

    AND soh.SalesPersonID = (@BusinessPersonID)

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

    @StartDate

    20010101

    @EndDate

    20030101

    @BusinessPersonID

    290

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

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

  1. В области «Данные отчета» нажмите кнопку Создать и выберите Набор данных. Откроется диалоговое окно Свойства набора данных.

  2. В поле Имя введите BusinessPersons. Этот набор данных будет использован для заполнения списка доступных значений параметра отчета SalesPersonID.

  3. Убедитесь, что источник данных — AdventureWorks_Ref.

  4. В области запроса вставьте следующий запрос Transact-SQL.

    SELECT SP.BusinessEntityID, C.FirstName, C.LastName
    FROM   Sales.SalesPerson AS SP INNER JOIN
         HumanResources.Employee AS E ON E.BusinessEntityID = SP.BusinessEntityID INNER JOIN
         Person.Person AS C ON C.BusinessEntityID = E.BusinessEntityID
    ORDER BY SP.BusinessEntityID
    

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

  5. В наборе данных BusinessPersons есть поля с именами FirstName и LastName. Далее эти поля будут сцеплены в одно поле с именем Name.

Определение вычисляемого поля в области «Данные отчета»

  1. В области «Данные отчета» щелкните правой кнопкой мыши набор данных BusinessPersons и выберите команду Добавить вычисляемое поле. Откроется страница Поля диалогового окна Свойства набора данных, и к сетке добавится новая строка.

  2. В последнее текстовое поле Имя поля введите Name.

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

    =Fields!LastName.Value & ", " & Fields!FirstName.Value

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

  5. В области «Данные отчета», под набором данных BusinessPersons, в коллекции полей набора данных появится новое поле Name.+

Заполнение параметра отчета списком доступных значений

  1. В области «Данные отчета» щелкните параметр правой кнопкой мыши и выберите BusinessPersonID, а затем Свойства параметра.

  2. В поле Запрос введите Выберите менеджера по продажам.

  3. В поле Тип данных выберите Integer.

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

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

  6. Из раскрывающегося списка Набор данных выберите параметр BusinessPersons.

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

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

    Теперь, когда в качестве метки выбрано «Name», в раскрывающемся списке допустимых значений параметра BusinessEntityID вместо номеров менеджеров по продажам теперь будут отображаться имена.

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

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

  11. Из раскрывающегося списка Набор данных выберите параметр BusinessPersons.

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

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

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

  15. Нажмите кнопку Просмотр отчета. Выберите другие значения параметра и просмотрите результаты.

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

Добавление списка допустимых значений параметра в существующий отчет успешно выполнено. Далее параметры DayoftheWeek и SalesPersonID будут преобразованы в многозначные. См. раздел Занятие 3. Добавление параметров для выбора нескольких значений в списке.