Занятие 2. Добавление параметров для создания списка доступных значений
Доступные (или допустимые) значения представляют читателю отчета список возможных значений параметра отчета. Допустимые значения можно предоставить из запроса, специально разработанного для получения набора значений из источника данных; также можно предоставить стандартный набор значений. С помощью привязки набора доступных значений к запросу набора данных, который выполняется при обработке отчета, можно гарантировать, что из раскрывающегося списка могут быть выбраны только те значения, которые существуют в базе данных.
На этом занятии отчет Sales Orders будет изменяться для представления раскрывающегося списка доступных имен менеджеров по продажам из базы данных AdventureWorks2008. Необходимо будет установить свойство таблицы для отображения сообщения, когда в результирующем наборе для выбранного значения параметра не будет содержаться строк. При просмотре отчета с выбранным именем в нем отображаются продажи только для этого менеджера по продажам.
Замена существующего набора данных
В области «Данные отчета» щелкните правой кнопкой мыши набор данных AdventureWorksDataset и выберите пункт Свойства набора данных.
ПримечаниеЕсли область «Данные отчета» не видна, в меню Вид выберите пункт Данные отчета.
Убедитесь, что в списке Источник данных выбран набор данных AdventureWorks_Ref.
Убедитесь, что в списке Тип запроса выбран тип Текст.
Нажмите кнопку Конструктор запросов, чтобы открыть конструктор запросов.
Текст в текстовом поле необходимо заменить на следующий текст запроса:
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)
Нажмите кнопку Выполнить (!). При получении запроса на ввод параметров выберите значения из следующей таблицы.
@StartDate
20010101
@EndDate
20030101
@BusinessPersonID
290
Нажмите кнопку ОК. Для менеджера по продажам по имени Ranjit Varkey Chudukatil появится результирующий набор с параметром SalesPersonID = 290.
Заполнение списка допустимых значений для параметра отчета
В области «Данные отчета» нажмите кнопку Создать и выберите Набор данных. Откроется диалоговое окно Свойства набора данных.
В поле Имя введите BusinessPersons. Этот набор данных будет использован для заполнения списка доступных значений параметра отчета SalesPersonID.
Убедитесь, что источник данных — AdventureWorks_Ref.
В области запроса вставьте следующий запрос 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.
В наборе данных BusinessPersons есть поля с именами FirstName и LastName. Далее эти поля будут сцеплены в одно поле с именем Name.
Определение вычисляемого поля в области «Данные отчета»
В области «Данные отчета» щелкните правой кнопкой мыши набор данных BusinessPersons и выберите команду Добавить вычисляемое поле. Откроется страница Поля диалогового окна Свойства набора данных, и к сетке добавится новая строка.
В последнее текстовое поле Имя поля введите Name.
В текстовое поле Источник поля вставьте следующее выражение:
=Fields!LastName.Value & ", " & Fields!FirstName.Value
Нажмите кнопку ОК.
В области «Данные отчета», под набором данных BusinessPersons, в коллекции полей набора данных появится новое поле Name.+
Заполнение параметра отчета списком доступных значений
В области «Данные отчета» щелкните параметр правой кнопкой мыши и выберите BusinessPersonID, а затем Свойства параметра.
В поле Запрос введите Выберите менеджера по продажам.
В поле Тип данных выберите Integer.
Нажмите кнопку Допустимые значения.
Выберите Получать значения из запроса.
Из раскрывающегося списка Набор данных выберите параметр BusinessPersons.
Из раскрывающегося списка Значение выберите BusinessEntityID.
Из раскрывающегося списка Метка выберите Name.
Теперь, когда в качестве метки выбрано «Name», в раскрывающемся списке допустимых значений параметра BusinessEntityID вместо номеров менеджеров по продажам теперь будут отображаться имена.
Нажмите кнопку Значения по умолчанию.
Выберите Получать значения из запроса.
Из раскрывающегося списка Набор данных выберите параметр BusinessPersons.
Из раскрывающегося списка Значение выберите BusinessEntityID.
Нажмите кнопку ОК.
Перейдите на вкладку Предварительный просмотр. В отчете отобразится раскрывающийся список с именами менеджеров по продажам.
Нажмите кнопку Просмотр отчета. Выберите другие значения параметра и просмотрите результаты.
Следующие шаги
Добавление списка допустимых значений параметра в существующий отчет успешно выполнено. Далее параметры DayoftheWeek и SalesPersonID будут преобразованы в многозначные. См. раздел Занятие 3. Добавление параметров для выбора нескольких значений в списке.