Занятие 1. Добавление параметров для фильтрации отчетов по дате (построитель отчетов 2.0)
Включив в запрос для отчета параметры для начальной и конечной даты, можно указать временной диапазон, который ограничит данные, получаемые из источника данных. Также можно создать дополнительные параметры для фильтрации данных после их получения из источника данных.
В ходе этого занятия к отчету будут добавлены параметры @StartDate и @EndDate, чтобы ограничить данные, получаемые из источника данных. Параметры отчета StartDate и EndDate будут созданы автоматически и добавлены в область «Данные отчета». Параметры учитывают регистр символов. В отличие от параметров отчета в языке Transact-SQL параметры запроса начинаются с символа @, как показано в области данных отчета.
В качестве типа данных параметров будет установлен DateTime. При этом на панели инструментов средства просмотра отчетов появится элемент управления «календарь» вместе с текстовым полем параметра. Будут заданы значения для параметров по умолчанию, чтобы отчет мог выполняться автоматически. И наконец, будет создан параметр отчета DayofWeek, не привязанный к параметру запроса. Он будет использован для фильтрации данных после их получения из источника данных.
Прежде чем приступать к работе с данным учебником, необходимо сначала пройти предыдущий учебник Учебник. Создание простого табличного отчета (построитель отчетов 2.0).
Открытие существующего отчета
Нажмите кнопку Пуск, последовательно укажите пункты Все программы, Построитель отчетов Microsoft SQL Server 2008, а затем выберите пункт Построитель отчетов 2.0.
Из меню кнопки «Построитель отчетов» выберите команду Открыть.
Перейдите к Sales Order. Этот отчет был создан в учебнике Учебник. Создание простого табличного отчета (построитель отчетов 2.0).
Нажмите кнопку Открыть. Определение отчета откроется в конструкторе.
Далее запрос набора данных заменяется на запрос, содержащий параметр запроса.
Замена существующего запроса набора данных
В области «Данные отчета» щелкните правой кнопкой мыши набор данных DataSet1 и выберите пункт Запрос. Откроется конструктор запросов.
В области запроса замените текст следующим запросом:
SELECT SH.OrderDate ,SH.SalesOrderNumber ,SD.OrderQty ,SD.LineTotal ,P.Name AS [Product] ,PS.Name AS [Subcategory] FROM Sales.SalesOrderHeader AS SH 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.OnlineOrderFlag = 0 AND (SH.OrderDate BETWEEN (@StartDate) AND (@EndDate))
Это тот же запрос, что и ранее, за исключением того, что предложение сортировки ORDER BY было удалено, а условие с двумя ограничивающими параметрами добавлено:
AND (SH.OrderDate BETWEEN (@StartDate) AND (@EndDate))
На панели инструментов нажмите кнопку Выполнить (!). Откроется диалоговое окно Определение параметров запроса и запросит значение каждого параметра.
Введите два значения, чтобы увидеть отфильтрованный результирующий набор.
В столбце Значение параметра введите значение для параметра @StartDate, например 20010101.
В столбце Значение параметра введите значение для параметра @EndDate, например 20030101.
Нажмите кнопку ОК.
Результирующий набор будет содержать набор данных со значениями для заказов, относящихся к 2001 и 2002 годам.
Нажмите кнопку ОК.
В области «Данные отчета» разверните узел «Параметры», чтобы отобразить два параметра отчета, StartDate и EndDate, которые были автоматически созданы из параметров запроса.
После определения параметров запроса, которые отображают дату или время, необходимо заменить типы данных параметров отчета на аналогичные.
Изменение типа данных и значений по умолчанию для параметра отчета
В области «Данные отчета» щелкните правой кнопкой мыши параметр StartDate и выберите пункт Свойства параметра.
Убедитесь, что имя параметра — StartDate , а запрос на его ввод — Start Date.
В списке Тип данных выберите Дата и время. Будет задан тип данных параметра отчета; он сохраняется в определении отчета.
Нажмите кнопку ОК.
В области «Данные отчета» дважды щелкните EndDate. Проверьте значения имени и запроса на введение.
В списке Тип данных выберите Дата и время.
Нажмите кнопку ОК.
Нажмите кнопку Выполнить для предварительного просмотра отчета. Оба параметра, StartDate и EndDate, появятся на панели инструментов вместе с элементом управления «календарь». Элементы управления «календарь» появляются автоматически, если параметр имеет тип данных Date/Time, а список допустимых значений не определен. Если список допустимых значений задан, вместо календаря появится раскрывающийся список значений.
Введите значения параметров для запуска отчета. Можно использовать элемент управления календарем или просто введите следующие даты.
В текстовом поле параметра StartDate введите 01.01.2001.
В текстовом поле параметра EndDate введите 01.01.2003.
Нажмите кнопку Просмотреть отчет. Отчет содержит только те записи, даты которых попадают в рамки значений параметров отчета.
После создания параметров отчета можно создать для этих параметров значения по умолчанию. Параметры по умолчанию позволяют выполнять отчет автоматически; в противном случае для выполнения отчета пользователю необходимо ввести значения параметров.
Задание значений параметров по умолчанию
Переключитесь в конструктор.
В области «Данные отчета» разверните узел «Параметры» и дважды щелкните StartDate. Откроется диалоговое окно Свойства параметра отчета.
Нажмите кнопку Значения по умолчанию.
Выберите параметр Задание значений. Появится кнопка Добавить и пустая сетка Значение.
Нажмите кнопку Добавить. В сетку параметров добавится пустая строка.
В текстовом поле Значение удалите текст по умолчанию (Null) и введите 01.01.2001.
Нажмите кнопку ОК.
В области конструктора отчета дважды щелкните EndDate.
Нажмите кнопку Значения по умолчанию.
Выберите параметр Задание значений.
Нажмите кнопку Добавить.
Введите 01.01.2003.
Нажмите кнопку ОК.
Нажмите кнопку Просмотр. Отчет запускается немедленно, поскольку каждый параметр имеет значение по умолчанию.
Добавление в запрос нового поля для фильтрации
Переключитесь в режим конструирования.
Щелкните правой кнопкой мыши набор данных 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.SalesOrderHeader AS SH 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.OnlineOrderFlag = 0 AND (SH.OrderDate BETWEEN (@StartDate) AND (@EndDate))
В запросе определяется дополнительный вычисляемый столбец для дня недели, в который была осуществлена продажа. Для этого в инструкцию SELECT добавлена следующая команда:
,DATENAME(weekday, soh.OrderDate) as Weekday.
Нажмите кнопку «Выполнить» (!). Откроется диалоговое окно Определение параметров запроса.
В столбце Значение параметра введите значение для параметра @StartDate, например 20010101.
В столбце Значение параметра введите значение для параметра @EndDate, например 20030101.
Нажмите кнопку ОК. В результирующем наборе должен появиться новый столбец, озаглавленный Weekday.
Дважды нажмите кнопку ОК. В области «Данные отчета» убедитесь, что Weekday является полем.
Теперь таблица содержит данные, указывающие день недели: можно добавить такой фильтр, чтобы в отчете использовались только продажи за указанную неделю. Чтобы проверить это, можно отобразить день недели с датой заказа на продажу.
Форматирование даты в таблице
Переключитесь в представление конструирования.
Щелкните ячейку с выражением для поля OrderDate. На вкладке Корневая папка в группе Число нажмите кнопку запуска диалогового окна.
Убедитесь, что в списке Категория выбран пункт Дата.
В окне Тип выберите тип даты, отображающий день недели. Например, для региональных настроек «Английский (США)» можно выбрать 31 января 2000 года (понедельник).
Нажмите кнопку ОК.
Нажмите кнопку Выполнить для предварительного просмотра отчета. Дата в первом столбце таблицы показывает как день недели, так и календарную дату.
Далее необходимо добавить параметр, чтобы пользователь смог производить фильтрацию по дню недели.
Добавление нового параметра отчета
Переключитесь в режим конструирования.
В области «Данные отчета» нажмите кнопку Создать и выберите Параметр. Откроется диалоговое окно Свойства параметра отчета.
В поле «Имя» введите DayoftheWeek.
В текстовом поле Запрос введите Фильтровать по дню недели:.
Убедитесь, что поле типа данных содержит значение Text.
Нажмите кнопку Значения по умолчанию.
Выберите параметр Задание значений. Появится кнопка Добавить и пустая сетка Значение.
Нажмите кнопку Добавить.
Введите пятница.
Нажмите кнопку ОК.
Далее необходимо добавить фильтр, чтобы отображались только значения, отобранные по параметру DayoftheWeek. К таблице или набору данных можно добавить фильтр. Этот отчет содержит как таблицу, так и диаграмму, которые отображают одни и тех же данные. Если необходимо отображать только отфильтрованные данные таблицы, следует добавить фильтр в таблицу. Если необходимо отображать отфильтрованные данные как в таблице, так и на диаграмме, следует добавить фильтр в набор данных. В следующей процедуре настраивается фильтр на набор данных.
Настройка фильтра набора данных с выражением параметра
В конструкторе, в области «Данные отчета», щелкните правой кнопкой мыши набор данных DataSet1 и выберите пункт Свойства набора данных.
Перейдите на вкладку Фильтры.
Нажмите кнопку Добавить. В сетку параметров добавится пустая строка.
Из раскрывающегося списка в поле Выражение выберите [Weekday].
Убедитесь, что в качестве параметра Оператор установлен знак равенства (=).
Нажмите кнопку выражения (fx) рядом с текстовым полем Значение. Откроется диалоговое окно Выражение.
В поле «Категория» нажмите Параметры. В области «Значения» появится текущий список параметров. Дважды щелкните DayoftheWeek. Выражение параметра успешно добавлено в текстовое поле выражения. Теперь в текстовом поле «Выражение» появится следующее выражение: =Parameters!DayoftheWeek.Value.
Нажмите кнопку ОК.
Значение показывает простое выражение для параметра DayoftheWeek. [@DayoftheWeek].
Нажмите кнопку ОК.
Теперь фильтр для набора данных настроен на сравнение значения в поле Weekday со значением параметра DayoftheWeek. Например, при вводе на панели инструментов значения пятница для параметра DayoftheWeek обработчик отчетов обрабатывает только те строки таблицы, где в поле Weekday указано значение пятница.
Нажмите кнопку Просмотр. Отчет запускается автоматически, поскольку все параметры имеют значения по умолчанию. Таблица и диаграмма отображают только значения, попавшие во временной интервал с StartDate по EndDate и выпавшие на пятницу. Для этого набора данных только три даты выпадают на пятницу.
1 февраля 2002 г.
1 марта 2002 г.
1 ноября 2002 г.
Следующие шаги
Были определены параметры запроса и отчета, установлены значения параметров по умолчанию, а также задан фильтр для набора данных. Следующее занятие посвящено созданию списка доступных, или допустимых, значений параметра. См. раздел Занятие 2. Добавление параметров для создания списка доступных значений (построитель отчетов 2.0).