Тема: Создание табличного отчета
Цель:Научиться создавать табличные отчеты с помощью конструктора отчетов
Для улучшения внешнего вида отчета и повышения читабельности можно использовать линии и прямоугольники. Для проведения вертикальной или горизонтальной линии в отчете выполните следующие действия:
1. Нажмите кнопкуLine на панели Report Controls конструктора отчетов.
2. Установите указатель в начальную точку линии.
3. Нажмите кнопку мыши и, удерживая ее, проведите линию необходимой длинны.
4. Используя опции команды Pen (Перо) из меню Format, установите атрибуты линии (толщину т тип).
5. Для задания цвета размещенной в отчете линии щелкните мышью на понравившемся цвете цветовой палитры панели Color Palette (Цветовая палитра).
Для размещения в отчете прямоугольника и прямоугольника со скругленными углами используются кнопки Rectangle (Прямоугольники) и Rounded Rectangle (Прямоугольник со скругленными углами) на панели инструментов Report Controlsконструктора отчетов. Нажмите необходимую кнопку на панели инструментов, установите указатель в какой-либо угол прямоугольника и перемещайте курсор в противоположный угол до получения прямоугольника нужного размера. Затем установите необходимые атрибуты прямоугольника, используя для этого следующие опции команды Pen (Перо) из меню Format(табл. 1).
Таблица 1.
Опции команды Pen из меню Format
Опция | Атрибут объектов |
Hairline | Контур шириной в один пиксел |
1 Point (1 пункт) | Контур шириной в один пункт |
2 Point (2 пункт) | Контур шириной в два пункта |
4Point (4 пункт) | Контур шириной в четыре пункта |
6 Point (6 пункт) | Контур шириной в шесть пунктов |
None() | Выделенный объект не имеет контура |
Dotted | Пунктирный контур |
Dashed | Контур в виде коротких штрихов |
Dash-dot | Контур в виде чередующихся штрихов и точек |
Dash-dot-dot | Контур в виде чередующихся штрихов и пар точек |
Для настройки параметров линий и прямоугольников можно использовать не только команды основного меню, но и окно свойств объекта. С помощью списка Style (Стиль) вкладки Style(рис.1) задается тип контура. Список Weight (Толщина) позволяет указать толщину контура, а список Curvature (Кривизна) – закругленность. Вид получаемого объекта можно просмотреть в области Sample (Образец).
Рис. 1. Вкладка Styleдиалогового окна настройки прямоугольника
Панель инструментов Color Palette
Для изменения цвета объекта можно использовать область Color (Цвет) окна свойств объекта или панель инструментов Color Palette (Цветная палитра). Для изменения в отчете цвета объекта выполните одно из следующих действий:
1. Разместите на экране панель инструментов Color Palette(Цветная палитра) выполнив одно из следующих действий:
· нажав кнопку Color Palette Toolbar(Панель инструментов Цветная палитра) на панели инструментов Report Designer(Конструктор отчета);
· выбрав в меню View (Вид) команду Color Palette Toolbar(Панель инструментов Цветная палитра).
Панель инструментов Color Palette(Цветная палитра) содержит шестнадцать кнопок с заданными цветами и три дополнительные кнопки (табл. 2).
Таблица 2.
Кнопки панели инструментов Color Palette
Кнопка | Назначение |
Задает цвет объекта | |
Задает цвет фона | |
Открывает диалоговое окно Цвет для задания цветов, отсутствующих на панели |
2. Выберите в отчете объект, цвет которого вы хотите изменить.
3. Щелкните мышью на панели инструментов Color Paletteкнопку Foreground Color (Цвет объекта) или Background Color(Цвет фона) в зависимости от того, что вы хотите поменять, – цвет объекта или его фона.
4. Щелкните мышью на панели инструментов любой понравившейся цвет.
При создании отчетов можно использовать более широкую цветовую гамму. Для этого необходимо воспользоваться кнопкой Other Colors(Другие цвета) панели инструментов Color Palette.Возможно создание пользовательского цвета в области Дополнительные цвета.
Размещение в отчете рисунка
В отчеты можно включать растровые рисунки, которые улучшают внешний вид отчета. В письмах, рассылаемых клиентам, можно, например, поместить фирменный знак или эмблему фирмы.
Для размещения в отчете рисунка используется кнопка Picture/OLE Bound Control (Изображение/ OLE-объекта) панели инструментов Report Controls (Элементы управления отчета) конструктора отчетов. Нажмите данную кнопку, а затем установите курсор в один из углов области, в которой должен находиться рисунок, и переместите курсор в противоположный угол до образования рамки необходимого размера. При этом открывается диалоговое окно Picture/OLE Bound Properties(Свойство изображения/ OLE-объекта) (рис. 2), в котором вы определяете источник данных рисунка и его параметры. Источником данных может быть файл, поле таблицы типа General, выражение или переменная. Для указания типа источника данных используются опции области Control source type (Тип источника данных), а источника данных – поле Control source(Источник данных).
При размещении в отчете графического изображения на вкладке General(Общие) диалогового окна Picture/OLE Bound Properties(Свойство изображения/ OLE-объекта) установите опцию Image file name (Имя файла изображения). Затем нажмите кнопку выбора файла, расположенную с правой стороны поля Control source(Источник данных).
Рис.2. Диалоговое окно Picture/OLE Bound Properties
В открывшемся диалоговом окне Open Picture (Открыть изображение) выберите требуемый графический файл. Если вы знаете полное имя файла, то можете ввести его непосредственно в поле ввода Control source(Источник данных) без использования диалогового окна Open Picture(Открыть изображение).
В том случае, если вы хотите печатать в отчете изображения, размещенные в поле таблицы (в Visual EoxPro для хранения графических изображений используются поля типа General), на вкладке Generalдиалогового окнаPicture/OLE Bound Propertiesустановите опцию General field name(Имя поля типа General). Затем нажмите кнопку выбора, расположенную с правой стороны поле Control source(Источник данных) и в открывшемся диалоговом окне Expression Builder (Построитель выражения) выберите необходимое поле таблицы.
Если размер выделенной для размещения изображения области и размер самого изображения не совпадают, воспользуйтесь опциями списка If source and frame are different sizes (Если разный размер) (табл.3).
Таблица 3.
Опции списка If source and frame are different sizes
Опции | Режим отображения |
Clip contents (Обрезать содержимое) | Объект фиксируется в левой верхней части рамки, сохраняя первоначальный размер |
Scale contents, Retain shape (Масштабировать, сохраняя форму) | Объект полностью заполняет отведенное ему поле, сохраняя относительные пропорции растрового изображения |
Scale contents, fill the frame (Масштабировать, заполняя рамку) | Объект полностью заполняет отведенное ему поле, в случае необходимости подвергаясь вертикальному или горизонтальному искажению |
Создание табличного отчета
Создадим в конструкторе отчетов табличный отчет, содержащий список заказов, использующий таблицы Ordsalem, Ordsaled, Customer, Goods.
1. Откройте проект Sales.
2. Откройте новое окно в конструкторе отчетов.
3. Откройте окно Data Environment и добавьте в него поочередно таблицы Ordsalem, Ordsaled, Customer, Goods. Связи, установленные между таблицами при создании базы данных, переносятся вместе с таблицами. Упорядочив данные, закройте окно Data Environment. При создании связей между таблицами для данного отчета необходимо учитывать следующее:
a. таблица Ordsalem является родительской по отношению к таблицам Ordsaled, Customer;
b. связь между таблицами Ordsalem и Customer осуществляется по коду клиента;
c. связь между таблицами Ordsalem и Ordsaled осуществляется по коду заказа;
d. связь между таблицами Goods и Ordsaled осуществляется по коду товара;
e. данные в таблице Ordsalem должны быть упорядочены по коду заказа, в таблице Customer – по коду клиента, в таблице Ordsaled – по коду заказа, в таблице Goods – по коду товара.
4. Разместив в отчете следующие поля:
· cCompany с наименованием компаний из таблицы Customer;
· dOrderDate, содержащее дату проданного товара из таблицы Ordsalem;
· nOrderQuant с количеством проданного товара из таблицыOrdsaled;
· nUnitprice с ценой товара из таблицы Goods.
5. Создайте вычисляемое поле, которое содержит выражение:
Ordsaled.nOrderQuant* Goods.nUnitPrice
6. Добавьте в полосе Page Header заголовки для созданных полей.
7. Добавьте заголовок и итоговую часть отчета, выполнив команду Report | Optional Bands (Дополнительные полосы)и установив на одноименной вкладке открывшегося диалога окна Report Propertiesфлажок Report has title band(Отчет содержит титульную полосу).
8. В заголовке отчета разместите текст «Список заказов», а также рисунок, представляющий собой эмблему фирмы. В итоговой части отчета создайте итоговое поле, которое вычислит стоимость всех заказов, просуммировав стоимость проданного товара.
9. Отчет в окне конструктора отчетов будет иметь вид, представленный на рис. 3. Просмотрите внешний вид отчета в окне предварительного просмотра
( File | Print Preview)(рис. 4).
10. Сохраните отчет.
Рис. 3. Создание отчета в окне конструктора отчетов
Рис. 4. Просмотр табличного отчета
Обратите внимание, что на самом деле, данные, полученные в отчете, не соответствуют действительности. Это происходит из–за того, что таблица Ordsalem является родительской одновременно по отношению к двум таблицам сразу (Customer и Ordsaled), а Ordsaled – дочерней так же для двух таблиц (Goods и Ordsalem). СУБД не имея возможности определить по какому источнику следует ориентироваться, использует текущий, что никак не соответствует логике связей в базе данных. Соответственно, вычисленные для отчета данные будут ложными.
Рассмотрим простейший способ разрешения этой проблемы. Он заключается в том, что построителю отчета следует указать только один источник данных. Объединение данных из нескольких таблиц в один источник возможно при использовании представлений данных.
Создадим в конструкторе отчетов табличный отчет, содержащий список продаж товаров, использующий данные из таблицы Ordsalem, Ordsaled, Goods, Customer.
- Откройте проект Sales.
- Создайте представление данных View1, указав в качестве источников для него таблицы Ordsalem и Customer. Убедитесь в правильности установленной связи!
- Выберите из таблицы Customer поля icdCustomer и cCompany, а из таблицы Ordsalem – icdOrder и dOrderDate.
- Сохраните представление данных View1. (В качестве дополнительной меры самоконтроля рекомендуется созданное представление просмотреть и убедиться в том, что данные считаются правильно).
- Создайте представление данных View2, указав в качестве источников для него созданное представление View1 и таблицу Ordsaled. Убедитесь в правильности установленной связи! (Не забывайте, что представление данных View1 является главным по отношению к таблице Ordsaled).
- Выберите все поля, относящиеся к View1 и добавьте поля icdGoods и nOrderQuant из таблицы Ordsaled.
- Сохраните представление данных View2.
- Создайте представление данных View3, указав в качестве источников для него созданное представление View2 и таблицу Goods.
- Выберите все поля, относящиеся к View2, и добавьте поля cnmGoods и nUnitPrice из таблицы Goods.
- Сохраните представление данных View3.
- Откройте новое окно в конструкторе отчетов.
- Откройте окно Data Environment и добавьте в него созданное представление данных View3. Закройте окно Data Environment.
- Добавьте в полосе «Detail» отчета поля cCompany, dOrderDate, nOrderQuant, nUnitPrice из View3.
- Создайте вычисляемое поле, которое содержит выражение:
View3.nOrderQuant*View3.nUnitPrice
- Добавьте в полосе Page Header заголовки для созданных полей.
- Добавьте заголовок и итоговую часть отчета, выполнив команду Report | Title/Summary. В заголовке отчета разместите текст «Список продаж», а также рисунок, представляющий собой эмблему фирмы. В итоговой части отчета создайте итоговое поле, которое суммирует значение выражения:
View3.nOrderQuant*View3.nUnitPrice
Полученный макет отчета ничем не будет отличаться от макета представленного на рис. 3.
- Просмотрите внешний вид отчета с помощью команды File | Print Preview(рис. 5).
- Сохраните отчет.
Рис. 5. Просмотр табличного отчета, созданного на базе представления данных
Примечание: В случаях, когда для получение отчета необходимы данные более чем из двух связанных таблиц, рекомендуется использовать технологию пошагового построения источника данных для отчета, т.е. Таблица1+Таблица2=Представление1, Представление1+Таблица3=Представление2 и т.д. Результирующее представление следует использовать в качестве источника данных для отчета. Этот подход предпочтительнее еще тем, что разработчик имеет возможность отследить, на каком шаге вычислений система начинает считать неправильно.
Группировка данных в отчете
Индексирование таблицы или сортировка позволяют распечатывать записи в требуемом порядке. Однако этих средств далеко не всегда оказывается достаточно. На практике достаточно часто возникает необходимость объединять записи в группы. Для этой цели используется команда меню Report | Data Grouping или команда Grouping всплывающего меню, которые позволяют создавать до 20 уровней вложенности групп и выполнять над ними следующие операции:
– напечатать текст, идентифицирующие конкретные группы
– напечатать каждую группу с новой страницы
– осуществлять сброс нумерации страниц при печати групп с новой страницы
В результате выполнения команды Report | Data Grouping открывается окно диалога «Data Grouping» (рис. 6), которое содержит весь список созданных групп. Можно редактировать или удалять группы, также добавлять новые.
Следует помнить, что при указании группировки по нескольким полям, система вычислит данные для отчета последовательно, в указанном порядке. Группировка будет проведена сначала по значениям первого указанного поля, затем для каждой полученной группы будет произведена группировка по значениям второго указанного поля и т.д.
При указании группировки по нескольким полям следует руководствоваться следующим правилом: Вначале указывается поле, значение которого наиболее масштабно для отчета. Например, если необходимо получить детальную информацию по каждому заказу, произведенному покупателями, то группировка должна осуществляться сначала по покупателям, а затем по заказам.
Рис. 6. Вкладка «Data Grouping» диалогового окна Report Properties
На вкладке Data Grouping(Группировка данных)диалогового окна Report Propertiesможно установить следующие параметры группировки данных (табл. 4).
Таблица 4.
Параметры группировки вкладки Data Grouping
Флажок | Назначение |
New line(Новая строка) | При каждом изменении группы происходит формирование новой строки |
New column(Новая колонка) | При каждом изменении группы происходит формирование новой колонки |
New page(Новая страница) | Начинает новую страницу при каждом изменении группы |
New page number to 1(Новая страница с номером 1) | Начинает новую страницу при каждом изменении группы, а нумерацию страницы – с 1 |
Reprint group header on each page(Верхняя полоса группы для каждой страницы) | Размещает верхнюю полосу группы после верхнего колонтитула страницы, если группа занимает несколько страниц |
Start group on new page when less than(Печатать группу с новой страницы, если ) | Если под заголовком группы остается расстояние меньше указанного в данном поле, то информация группы будет перенесена на новую страницу |
После установки необходимых флажков нажмите кнопку OK. Для удаления полосы группы воспользуйтесь кнопкой Remove.
С помощью кнопки ADD вкладки Data Groupingможно добавить в отчет новую группу. При ее нажатии открывается окно построителя выражения, позволяющее сформировать выражение для группировки.