Информационные системы

Информационные системы

Электронный учебник

Лабораторная работа №7

 

Создание отчетов.

 

Под отчетом понимается формированное представление данных, выводимое на экран, принтер или в файл.

Прежде чем приступить к созданию отчетов вы должны ответить на следующие вопросы:

         С какой целью создается настоящий отчет, и чем он будет вам полезен?

         Какая информация, и из каких таблиц должна быть предоставлена в отчете?

         Отчет какого вида вы предполагаете создать (табличный, в свободной форме или наклейки)?

         Предполагается ли группировка данных?

Четкие ответы на поставленные вопросы облегчат вашу работу при создании отчета.

Общие понятия.

При знакомстве со средствами Visual FoxPro для создания экранных форм вы могли убедиться в их гибкости и мощности. Аналогичные средства Visual FoxPro предоставляются в ваше распоряжение для создания отчетов. При создании отчетов вы можете воспользоваться стандартными средствами, ускоряющими процесс создания отчета, или разработать для отчета специальный формат, с помощью конструктора отчетов. Конструктор отчетов позволяет создавать отчеты как в табличном виде, так и в свободной форме.

Табличный отчет представляет собой напечатанную таблицу, в которой данные упорядочены по столбцам и строкам. Каждый из столбцов отчета содержит поле исходной таблицы или вычисляемое поле, а строка представляет собой запись. Табличный отчет позволяет напечатать данные из таблиц в наиболее простом и естественном виде. Однако табулированное представление данных в отчете имеет свои недостатки. На практике в ряде случаев (почтовые этикетки, чеки, письма и т.д.) поля исходной таблицы должны располагаться в специально отведенных для них местах отчета. Очевидно, что табличный отчет не пригоден для этих целей.

Отчеты в свободной форме позволяют устранить ограничения, свойственные табличным отчетам. При получении отчета в свободной форме вы можете воспользоваться стандартным форматом, автоматически создаваемым Visual FoxPro для каждой таблицы. В этом формате поля исходной таблицы расположены вертикально. Однако с помощью конструктора отчетов вы можете разработать специальный формат отчета, где поля исходной таблицы будут расположены в требуемых местах отчета.

В Visual FoxPro для создания отчетов используются:

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

         Стандартный отчет (Quick Report), позволяющий создать стандартный отчет, в котором поля отчета располагаются автоматически по внутреннему алгоритму Visual FoxPro;

         Конструктор отчета, в котором вы самостоятельно разрабатываете собственные отчеты.

Окно конструктора отчетов.

Любой отчет состоит из пояснительного текста, полей отчета и рамок. Текст носит произвольный характер. Рамки служат для улучшения восприятия информации. Поля отчета могут непосредственно соответствовать полям исходной таблицы или являться результатом вычисления над ними.

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

Открыть окно конструктора отчетов при создании нового отчета можно одним из следующих способов:

         Выполните команду File | New. В появившемся окне диалога «New» установите опцию Report и нажмите кнопку New File;

         Нажмите кнопку New в окне проекта, выбрав предварительно группу «Reports»;

         Нажмите кнопку New на стандартной панели инструментов Visual FoxPro. В открывшемся окне диалога «New» выберите опцию Report и нажмите кнопку New File.

На рис. 1 представлено окно конструктора отчетов с панелями инструментов «Report Designer» и «Report Controls». Обратите внимание на то, что в строке основного меню появился пункт Report.

Рис. 1. Окно конструктора отчета

 

Краткое описание панели инструментов «Report Controls» приведено в табл. 1.

Таблица 1. Кнопки панели инструментов «Report Controls»

Кнопка

Наименование

Назначение

Select Objects

Является указателем выбора объектов отчета

Label

Размещает текст

Field

Размещает поля

Line

Рисует линии

Rectangle

Рисует прямоугольники

Rounded Rectangle

Рисует прямоугольники со скругленными краями

Picture/OLE Bound Control

Помещает в отчет рисунок

Button Lock

Закрепляет выбор кнопки

 

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

Типы полос окна конструктора отчета.

Отчет может содержать полосы перечисленных в табл. 2 типов. Тип полосы определяет, когда и где будут печататься объекты полосы.

Таблица 2. Типы полос

Наименование

Описание

Title

Информация, появляющаяся перед основным отчетом. Титулом может быть имя отчета, сопроводительное письмо или любая информация, которую необходимо поместить на первой странице отчета.

Page Header

Информация, которая печатается в начале каждой страницы. Обычно в этой полосе содержится название отчета, текущая дата, номер страницы и т.д.

Group Header

Информация, используемая при группировке. При группировке данных группа может иметь верхние полосы, печатаемые до нее. Они помогают идентифицировать информацию, содержащуюся на каждом уровне группировки.

Detail

Информация полей из таблицы или результат вычислений над полями из таблицы.

Group Footer

Итоговая информация по группе.

Page Footer

Информация, содержащая название отчета, дату, номер страницы и итоговые значения по данным текущей страницы.

Summary

Информация, появляющаяся один раз после основного отчета и содержащая общие суммы или текст, подводящий итог содержимого отчета.

           Вы можете управлять высотой полосы для добавления в нее текста, полей или просто, чтобы добавить в свой отчет пробелы. Чтобы изменить высоту полосы, выберите нужную полосу (вы увидите двустороннюю стрелку) и опустите ее границу вниз, если вам нужно больше места. В противном случае поднимите границу полосы вверх. Можно также дважды нажать мышью на полосе и ввести высоту в появившемся окне диалога.

Создание стандартного отчета.

Процесс создания отчета может включать в себя все или часть из приведенных ниже процедур:

         Определение окружения;

         Размещение текста;

         Размещение полей;

         Размещение линий, прямоугольников и рисунков;

         Перемещение объектов, а также перемещение областей, которые могут содержать любые объекты отчета, тексты;

         Сохранение отчета.

Установка среды окружения.

При создании нового отчета в окне конструктора отчетов Visual FoxPro, прежде всего, необходимо задать среду окружения. При определении среды окружения вы выполняете следующие действия:

         Открываете требуемые таблицы;

         Выбираете индексы таблицы;

         Устанавливаете отношения между таблицами.

Вся эта информация, относящаяся к среде окружения, хранится в файле описания отчета.

Для открытия окна «Data Environment», в котором осуществляется настройка среды окружения (рис. 2), вы можете воспользоваться одним из следующих способов:

         Выполните команду View | Data Environment основного меню;

         Выберите команду Data Environment всплывающего меню.

В данном окне необходимо разместить все таблицы, используемые в отчете. Для добавления таблицы в окно используется команда Add всплывающего меню или Data Environment | Add основного меню. Таблицы, связанные между собой в базе данных, переносятся в окно диалога «Data Environment» с сохранением связей, установленных между ними. В этом окне можно также устанавливать связи между таблицами или изменить существующие.

После размещения в окне диалога «Data Environment» всех используемых в отчете таблиц закройте его, после чего Visual FoxPro сохранит среду окружения.

 

Рис. 2. Окно диалога «Data Environment».

 

Размещение текста.

В окне конструктора отчета текст рассматривается в качестве объекта. Его можно размещать, выделять, перемещать, сохранять во временном буфере Windows или удалять.

Для ввода или исправления текста в отчете выберите кнопку Label. Установите курсор в то место окна конструктора отчетов, где необходимо разместить или исправить текст, и зафиксируйте его. После этого внесите необходимые добавления или изменения.

Текст может состоять из нескольких строк. Для переноса части текста на новую строку используйте клавишу Enter.

Visual FoxPro предоставляет вам возможность изменять шрифт и цвет текста. Для этого с помощью мыши выберите текст и выполните команду Format | Font. В окне диалога «Выбор шрифтов» (рис. 3) установите начертание, стиль, цвет и размер символов выделенного текста. Вид выбранного шрифта можно просмотреть в разделе «Образец» окна диалога.

Рис. 3. Окно диалога «выбор шрифта»

Если дважды нажать мышью выбранный текст, откроется окно диалога «Text» (рис. 4). В этом окне диалога можно определить условие печати для текста, а также задать его относительное расположение в полосе с помощью следующих опций:

Рис. 4. Окно диалога «Text»

 

Опция

Характеристика

Float

Позиция текста в отчете может изменяться при изменении размеров окружающих его полей.

Fix relative to top of band

Текст сохраняет постоянную позицию относительно верхней границы полосы.

Fix relative to bottom of band

Текст сохраняет постоянную позицию относительно нижней границы полосы.

 

В поле ввода Comment можно добавить комментарии к тексту.

Добавление заголовка и итогов.

           Чтобы придать вашему отчету более законченный вид, вы можете добавить в него текст, рисунки, заголовок отчета или итоговые данные. Полоса «Title» показывается один раз в начале отчета, а полоса «Summary» – один раз в конце отчета. Для добавления этих полос в отчет выполните следующее:

 1.       Выберите команду Report | Title/Summary.

 2.       В открывшемся окне диалога «Title/Summary» (рис. 5) установите необходимые флажки Title band и Summary band.

 3.       Нажмите OK. В отчете появятся указанные вами полосы.

 Флажок New page используется в том случае, если после полосы вы хотите печатать отчет с новой страницы.

 

Рис. 5. Окно диалога «Title/Summary».

 

После добавления новых полос в отчет, в полосе «Title» разместите объекты заголовка отчета, в качестве которых могут выступать текст, поля, прямоугольники и рисунки.

В полосу «Summary» могут добавляться итоговые значения полей отчета, а также объекты оформления отчета (текст и рисунки).

Размещение полей.

Для размещения поля выберите инструмент Field на панели инструментов «Report Controls». Установите курсор в соответствующее место окна конструктора и установите требуемый размер поля. На экране появится окно диалога «Report Expression» (рис. 6).

 

 

Рис. 6. Окно диалога «Report Expression».

 

С помощью этого окна диалога вы можете:

         Устанавливать положение поля в отчете;

         Указать условие печати;

         Определить выражение, результат вычисления которого будет выводиться в данное поле.

Кнопка Calculations используется для вычисления статистических значений полей отчета. Как правило, такие поля размещаются в колонтитулах, полосах группы и в итоговой части отчета.

Кнопка Print When используется для задания условия печати.

 

Определение выражения поля.

Для определения выражения поля  введите выражение непосредственно в поле ввода Expression или нажмите на кнопку вызова построителя, расположенную справа от поля ввода. При нажатии на данную кнопку на экране появляется окно диалога «Expression Builder».

При формировании выражения могут быть использованы поля открытых таблиц, переменные из списка «Variables», строковые, логические, математические функции, а также функции даты и времени.

Для размещения полей таблиц выберите требуемое поле из списка Fields.

Для создания вычисляемых полей сформируйте выражение и проверьте его правильность с помощью кнопки Verify. Например, вы можете отображать в отчете вместо трех полей cLastName, cFirstName, cSecondName одно вычисляемое поле, которое содержит фамилию и инициалы покупателя. Выражение для этого поля имеет следующий вид (рис. 7).

ALLTRIM(Customer.cLastName)+” ”+SUBSTR(Customer.cFirstName,1,1);

                +”.”+SUBSTR(Customer.cSecondName,1,1)+”.”

 

  

Рис. 7. Определение вычисляемого поля.

 

 

Расположение поля в полосе.

Переключатель Field position окна диалога «Report Expression» (рис. 6) предназначен для управления расположением и характеристиками поля в полосе:

Опция

Характеристика

Float

Позиция поля в отчете может изменяться при изменении размеров окружающих его полей.

Fix relative to top of band

Поле сохраняет постоянную позицию относительно верхней границы полосы.

Fix relative to bottom of band

Поле сохраняет постоянную позицию относительно нижней границы полосы.

 

Флажок Stretch with overflow данного окна диалога разрешает растягивать объект для размещения данных.

Поле ввода Comment позволяет вставить комментарий к полю.

Размещение итогового поля.

Конструктор отчетов позволяет размещать в отчете поля, содержащие статистические значения полей отчета. Итоговые поля чаще всего размещаются в колонтитулах, полосах группы и в итоговой части отчета. Кроме того, вы можете разместить их и в полосе «Detail» для вывода значений нарастающих итогов. Для определения поля в качестве итогового нажмите кнопку Calculations окна диалога «Report Expression». При этом на экране открывается окно диалога «Calculate Field» (рис. 8), в котором может быть выбрана математическая операция над значением выражения, определенная для данного поля.

 

Рис. 8. Окно диалога «Calculate Field».

 

Окно диалога «Calculate Field» содержит следующие опции, которые определяют вычисления, выполняемые над значением выражения поля:

Опция

Характеристика

Nothing

Над полем не производится вычислений

Count

Вычисляется количество значений поля

Sum

Вычисляется итоговая сумма значений поля

Average

Вычисляется среднее арифметическое значений поля

Lowest

Отображается наименьшее значение поля

Highest

Отображается наибольшее значение поля

Standard deviation

Возвращается квадратный корень из дисперсии

Variance

Возвращается статистическая величина отклонения отдельных значений поля от среднего в группе

 

В верхней части окна находится список Reset, с помощью которого можно определить момент обнуления данного поля.

Создание отчета в свободной форме.

Рассмотрим создание отчета в свободной форме, содержащего рассылку новых прайс–листов потенциальным покупателям.

1.       Откройте проект Sales.

2.       Перейдите на вкладку «Documents», выберите группу «Reports» и нажмите кнопку New. В открывшемся окне диалога «New Report» выберите опцию New Report. На экране откроется окно конструктора отчетов.

3.       Откройте окно «Data Environment», выполнив команду View | Environment или выбрав опцию Data Environment всплывающего меню. Для добавления таблицы в окружение выполните команду Data Environment | Add. В открывшемся окне диалога «Add Table or View» выберите таблицу Customer и нажмите кнопку OK. В окне диалога «Data Environment» появилась выбранная таблица. Закройте окно «Data Environment».

4.       Разместите в поле «Detail» поля с наименованием предприятия, индекса и страны.

5.       Добавьте в полосе «Detail» отчета вычисляемое поле для отображения имени и отчества представителя покупателя, содержащее следующее выражение поля:

ALLTRIM(Customer.cFirstName)+’ ’+ ALLTRIM(Customer.cSecondName)

Затем добавьте вычисляемое поле для вывода адреса, которое содержит следующее выражение поля:

ALLTRIM(Customer.cCity)+’ ’+ALLTRIM(Customer.cAddres)

6.       Разместите текст и поля, как показано на рис. 9.

 

Рис. 9. Отчет в свободной форме.

 

7.       Просмотрите внешний вид отчета с помощью команды всплывающего меню Preview. Ваш экран будет иметь вид, представленный на рис. 10.

 

Рис. 10. Просмотр отчета в свободной форме.

 

8. Сохраните отчет.


 

Создание табличного отчета

 

Создайте пользовательский отчет, содержащий список продаж товаров, использующий таблицы Ordsalem, Ordsaled, Goods, Customer.

1.       Откройте проект Sales.

2.       Откройте новое окно в конструкторе отчетов.

3.       Откройте окно «Data Environment» и добавьте в него поочередно таблицы Ordsalem, Ordsaled, Goods, Customer. Связи, установленные между таблицами при создании базы данных, переносятся вместе с таблицами. Закройте окно «Data Environment».

4.       Создайте стандартный отчет, используя команду меню Report | Quick Report. При создании стандартного отчета выберите размещение по столбцам и поля таблицы Ordsalem.dOrderDate (Дата продажи), Ordsaled.nOrderQuant (Продано), Goods.nUnitPrice (Цена).

5.       Добавьте в полосе «Detail» отчета поле cCompany из таблицы Customer и поле cNmGood из таблицы Goods. Затем создайте вычисляемое поле, которое содержит выражение:

OrdSaled.nOrderQuant*Goods.nUnitPrice

6.       Добавьте в полосе «Page Header» заголовки для созданных полей.

7.       Добавьте заголовок и итоговую часть отчета, выполнив команду Report | Title/Summary. В заголовке отчета разместите текст «Список продаж», а также рисунок, представляющий собой эмблему фирмы. В итоговой части отчета создайте итоговое поле, которое суммирует значение выражения:

OrdSaled.nOrderQuant*Goods.nUnitPrice

8.       Просмотрите внешний вид отчета с помощью команды File | Print Preview.

9.       Сохраните отчет.

Группировка данных.

Индексирование таблицы или сортировка позволяют распечатывать записи в требуемом порядке. Однако этих средств далеко не всегда оказывается достаточно. На практике достаточно часто возникает необходимость объединять записи в группы. Для этой цели используется команда меню Report | Data Grouping или команда Grouping всплывающего меню, которые позволяют создавать до 20 уровней вложенности групп и выполнять над ними следующие операции:

         напечатать текст, идентифицирующие конкретные группы

         напечатать каждую группу с новой страницы

         осуществлять сброс нумерации страниц при печати групп с новой страницы

В результате выполнения команды Report | Data Grouping открывается окно диалога «Data Grouping» (рис. 11), которое содержит весь список ранее созданных групп. Можно редактировать или удалять группы, также добавлять новые.

Рис. 11. Окно диалога «Data Grouping»

Для ввода выражения группировки используйте построитель выражений или непосредственно введите выражение группировки в поле ввода. В окне диалога «Data Grouping» можно установить следующие флажки группировки данных:

 

 

Флажок

Назначение

Start group on new column

Начинает новую колонку при каждом изменении группы

Start each group on a new page

Начинает новую страницу при каждом изменении группы

Reset page number to 1 for each group

Начинает новую страницу при каждом изменении группы, а нумерацию страницы – с 1

Reprint group header on each page

Размещает верхнюю полосу группы после верхнего колонтитула страницы, если группа занимает несколько страниц

Start group on new page when less than

Устанавливает минимальное расстояние от нижней границы страницы, на котором может печататься верхняя полоса

После установки необходимых флажков нажмите кнопку OK. Для удаления полосы группы воспользуйтесь кнопкой Delete окна диалога «Data Grouping».

 

Добавление группировки данных

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

1.       Откройте созданный отчет.

2.       Создайте группу по полю icdCustomer. Для этого выполните команду Report | Data Grouping. В открывшемся окне диалога «Data Grouping» нажмите кнопку вызова построителя выражения группировки данных. В окне диалога «Expression Builder» сформируйте выражение группировки, выбрав из списка всех полей открытых таблиц поле icdCustomer таблицы OrdSalem.

3.       Расширьте полосу «Group Header» и перенесите в нее поле с наименованием предприятия, а также заголовок поля.

4.       Расширьте полосу «Group Footer» и создайте в нем итоговое поле, которое суммирует значение выражения:

OrdSaled.nOrderQuant*Goods.nUnitPrice

5.       Просмотрите внешний вид отчета с помощью команды File | Print Preview.

6.       Сохраните отчет.

Разметка страницы отчета

Для разметки страницы отчета выполните команду File | Page Setup. На экране появится окно диалога «Page Setup» (рис. 12).

Рис.12. Окно диалога «Page Setup»

В этом окне диалога можно определить:

         количество колонок в отчете

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

         ширину левого поля отчета

         ширину колонок и расстояние между колонками

         единицу измерения координат отчета

         выбор режима печати с минимальными полями или же в соответствии с требованиями текущего драйвера печати

В области «Columns» устанавливаются значения, определяющие количество колонок на странице и их размеры:

Поле

Назначение

Number

Определяет число колонок на странице

Width

Определяет ширину колонок в сантиметрах или дюймах

Spacing

Определяет расстояние между колонками

Переключатель Print area содержит следующие опции:

Опция

Назначение                

Printable page

Устанавливает режим печати с полями страницы, определяемыми в соответствии с требованиями текущего драйвера печати

Whole page

Устанавливается режим печати с минимальными полями

Переключатель Print order определяет порядок вывода в многоколоночных отчетах.

Счетчик Left margin определяет ширину левого поля отчета.

 

Задание.

  1. Создайте отчет для справочника товара. Данные должны быть сгруппированы по группе товара.
  2. Создайте отчет по произведенным заказам, относящимся к каждому покупателю.
  3. Создайте отчет по каждому заказу с выводом общей суммы заказа и перечислением всех товаров, входящих в заказ.
  4. Отметьте разницу между использованием для просмотра данных форм и отчетов.

Пример выполнения работы