Занятие 2. Добавление параметров для создания списка доступных значений (построитель отчетов 2.0)
Доступные (или допустимые) значения представляют читателю отчета список возможных значений параметра отчета. Допустимые значения можно предоставить из запроса, специально разработанного для получения набора значений из источника данных, или можно предоставить стандартный набор значений. Путем привязки набора доступных значений к запросу набора данных, который выполняется во время обработки отчета, можно гарантировать, что пользователь сможет выбирать только те значения, которые существуют в базовом источнике данных.
На этом занятии будет изменен отчет Sales Order, чтобы представить раскрывающийся список доступных имен менеджеров по продажам из базы данных AdventureWorks2008. Необходимо будет установить свойство таблицы для отображения сообщения, если в результирующем наборе для выбранного значения параметра не будет содержаться строк. При просмотре отчета с выбранным именем в нем отображаются продажи только для этого менеджера по продажам.
Замена существующего запроса набора данных
В области «Данные отчета» щелкните правой кнопкой мыши набор данных DataSet1 и выберите пункт Запрос. Откроется конструктор запросов.
В области запроса замените существующий текст запроса следующим запросом:
SELECT SH.OrderDate ,DATENAME(weekday, SH.OrderDate) as Weekday ,SH.SalesOrderNumber ,SD.OrderQty ,SD.LineTotal ,P.Name AS [Product] ,PS.Name AS [Subcategory] FROM Sales.SalesPerson SP INNER JOIN Sales.SalesOrderHeader AS SH ON SP.BusinessEntityID = SH.SalesPersonID INNER JOIN Sales.SalesOrderDetail AS SD ON SH.SalesOrderID = SD.SalesOrderID INNER JOIN Production.Product AS P ON SD.ProductID = P.ProductID INNER JOIN Production.ProductSubcategory AS PS ON PS.ProductSubcategoryID = P.ProductSubcategoryID INNER JOIN Production.ProductCategory AS PC ON PC.ProductCategoryID = PS.ProductCategoryID WHERE PC.Name = 'Clothing' AND (SH.OrderDate BETWEEN (@StartDate) AND (@EndDate)) AND SH.SalesPersonID = (@BusinessPersonID)Этот запрос содержит параметр для менеджера по продажам, который отвечает за заказ на продажу:
AND SH.SalesPersonID = (@BusinessPersonID)
Нажмите кнопку Выполнить (!). При получении запроса на ввод параметров введите значения из следующей таблицы.
@StartDate
20010101
@EndDate
20030101
@BusinessPersonID
290
Нажмите кнопку ОК. Появится результирующий набор для менеджера по продажам Ranjit Varkey Chudukatil с идентификатором SalesPersonID = 290.
Далее будет создан набор данных, который содержит имена менеджеров по продажам.
Заполнение списка допустимых значений для параметра отчета
На панели инструментов в области «Данные отчета» нажмите кнопку Создать и выберите Набор данных. Откроется диалоговое окно Свойства набора данных.
В поле Имя введите SalesPersons. Этот набор данных будет использован для заполнения списка допустимых значений параметра отчета SalesPersonID.
Убедитесь, что источником данных является AdventureWorks2008.
Нажмите кнопку Конструктор запросов и выберите Редактировать как текст.
В области запроса вставьте следующий запрос 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Дважды нажмите кнопку ОК. Новый набор данных в области «Данные отчета» состоит из трех полей: BusinessEntityID, FirstName и LastName. Этот набор данных будет использован для получения допустимых значений параметра отчета BusinessPersonID.
Далее будет создано дополнительное поле набора данных, соединяющее поля FirstName и LastName в новое поле с названием Name. Определяемые пользователем поля называются вычисляемыми полями.
Определение вычисляемого поля в области «Данные отчета»
На панели инструментов области «Данные отчета» щелкните правой кнопкой мыши набор данных SalesPersons и выберите команду Добавить вычисляемое поле. Откроется страница Поля диалогового окна Свойства набора данных, и к сетке добавится новая строка.
В последнее текстовое поле Имя поля введите Name.
В текстовое поле Источник поля вставьте следующее выражение:
=Fields!LastName.Value & ", " & Fields!FirstName.Value
Нажмите кнопку ОК.
В области данных отчета в наборе SalesPersons в коллекции полей набора данных появляется новое поле Name..
Затем для параметра отчета BusinessPersonID будет указано использование этого набора данных в качестве допустимых значений.
Заполнение параметра отчета списком доступных значений
В области «Данные отчета» разверните узел «Параметры», щелкните правой кнопкой мыши параметр BusinessPersonID, выберите пункт Свойства параметра.
В поле Запрос введите текст Выберите менеджера по продажам:.
В поле Тип данных выберите Целое число.
Нажмите кнопку Допустимые значения.
Выберите Получать значения из запроса.
Из раскрывающегося списка Набор данных выберите параметр BusinessPersons.
Из раскрывающегося списка Значение выберите BusinessEntityID.
Из раскрывающегося списка Метка выберите Name.
Теперь, когда в качестве метки выбрано поле Name, в раскрывающемся списке допустимых значений параметра BusinessEntityID вместо бизнес-идентификаторов менеджеров по продажам будут отображаться имена.
Нажмите кнопку Значения по умолчанию.
Выберите параметр Получать значения из запроса.
Из раскрывающегося списка Набор данных выберите параметр BusinessPersons.
Из раскрывающегося списка Поле значения выберите BusinessEntityID.
Нажмите кнопку ОК.
Нажмите кнопку Запустить. В отчете отобразится раскрывающийся список с именами менеджеров по продажам.
Нажмите кнопку Просмотреть отчет.
В отчете показываются заказы на продажу для выбранного менеджера по продажам, которые соответствуют ограничениям, указанным параметрами отчета. Для некоторых сочетаний дат, дней недели и менеджера по продажам в отчете может не оказаться результатов.
Следующие шаги
Добавление списка допустимых значений параметра в существующий отчет успешно выполнено. Далее параметры DayoftheWeek и BusinessPersonID будут преобразованы в многозначные. См. раздел Занятие 3. Добавление параметров для выбора нескольких значений в списке (построитель отчетов 2.0).