Формирование отчета
Запустить отчет на формирование можно, либо воспользовавшись пунктомменю Report (Отчет) основного меню Visual FoxPro 9 и выбрав в нем командуRun Report (Запустить Отчет), либо набрав в окне Command команду REPORTFORM. Если отчет формируется из программы, также следует использовать команду REPORT FORM.
> <Имя_файла> - задается имя файла с отчетом (.frx);
> ? - выводится диалоговое окно открытия файла для выбора файла с отчетом (.frx);
> ENVIRONMENT - обеспечивается открытие всех таблиц и установление всехсвязей между таблицами, ассоциированных с отчетом, даже если свойство AutoOpenTables имеет значение False (.F.);
> Scope - определяет диапазон записей, включаемых в отчет;
> FOR <Условие1> - на печать выводятся только записи, удовлетворяющиеусловию;
> [WHILE <Условие2>] - выводит на печать данные, пока выполняется условие;
> NOOPTIMIZE - запрещает использование оптимизации Rushmore;
> RANGE <Первая_страница> [, <Последняя_страница>] - устанавливает диапазон выводимых па печать страниц;
> HEADING <Текст_заголовка> - задает текст, который нужно дополнительно выводить в заголовке каждой страницы;
> SUMMARY - сжимает область Detail (Детали) так, что на печать выводятсятолько итоги;
> NORESET - указывает, что значения системных переменных _PAGENO и_PAGETOTAL не инициализируются заново для нового отчета, а их значения изменяю гея с учетом текущих значений (нумерация страниц продолжается) ;
> PLAIN - подавляет вывод заголовков в начале отчета;
> NOCONSOLE I OFF - подавляет вывод содержимого отчета в основное окнопри печати или выводе в файл;
> PDSETUP - загружает драйвер для печати отчетов в символьном режиме,например, если вы печатаете отчеты, созданные в FoxPro для MS DOS;
> NAME <Имя_объекта> - задает имя объекта, ассоциированного с отчетом;
> OBJECT <Список_отчетов> I TYPE <Выражение> - используется в случаеобъектно-ориентированного подхода к выводу отчета;
> ТО <Путь_для_вывода> - указывает путь для вывода отчета;
> PREVIEW - показывае т сформированный отчет в окне предварительногопросмотра. Следующее за этим ключевым словом параметр <Путь_для_-предпросмотра> может либо указывать на окно (IN WINDOW <Имя_окна>),и тогда предпросмотр будет организован в этом окне, либо может указывать на экран (IN SCREEN), и тогда предпросмотр состоится в рабочейобласти главного окна;
> NOWAIT - указывает, что после открытия окна предварительного просмотра выполнение программы продолжается без ожидания закрытия окна.
Например, команда
сформирует отчет из файла mo.frx, включив в него данные, удовлетворяющиеусловию, с предварительным просмотром. Отчет не сразу выведется на принтер, а появится на экране.
Кроме того, на экране появится панель инструментов, как на рис. 4.57. Хитрость в том, что дальнейшие действия по просмотру готовой печатной формы,печати отчета и завершения работы в режиме предпросмотра производятся
Когда мы создавали основное меню приложения, мы добавили два пунктаменю для формирования отчетности: Персональная карточка и Список сотрудников. Попробуем реализовать задуманные отчеты при помощи генератора отчетов Visual FoxPro 9. Для этой цели выполните следующие действия:
1. Смените текущую папку, выполнив в окне Command команду
именно с использованием панели инструментов. А назначение элементов наэтой панели следующее:
CD ?
Откроется окно, в котором нужно найти созданную нами ранее папкуInStaff.
2. Если окно проекта не открыто, выберите команду Open (Открыть) изменю File (Файл). В появившемся окне открытия файла выберите файлпроекта, который мы создали ранее.
3. Щелкните мышыо в окне проекта но папке Reports (Отчеты), находящейся в папке Documents (Документы), а затем щелкните мышью по кнопкеNew (Новый).
4. В появившемся окне выберите кнопку New Report (Новый отчет).
5. Появится окно Дизайнера отчета (Report Designer), показанное нарис. 4.53.
6. Чтобы создать заголовок отчета, нужно добавить еще одну область подназванием Title (Заголовок). Для этого из меню Report (Отчет) выберите
команду Optional Bands (Дополнительные области). Появится окно,представленное на рис. 4.54.
7. В появившемся окне установите флажок Report has title band (Отчетимеет область заголовка). После этого щелкните мышью по кнопке ОК.Должна появиться область заголовка.
8. В области заголовка при помощи инструмента сделайте надпись«СПИСОК СОТРУДНИКОВ ПРЕДПРИЯТИЯ». Для этого надо щелкнутьмышью по инструменту на панели инструментов, а затем щелкнуть в области Title (Заголовок) в том месте, где должен начинаться текст. Должен появиться мигающий курсор. Введите с клавиатуры указанный текст.
9. Чтобы отцентрировать введенный текст (названия отчетов обычно пишут по центру), щелкните мышью по кнопке со стрелкой на панели инструментов Дизайнера отчета (Report Designer), а затем по сделанной надписи. По углам надписи должны появиться квадратики, как показано нарис. 4.58.
10. В меню Format (Формат) выберите подменю Align (Выравнивание), а внем команду Center Horizontally (Центрировать по горизонтали). Надпись должна встать по центру.
11. В области Page Header (Заголовок страницы) разместим «шапку» нашейтаблицы. Она будет состоять из следующих столбцов: Табельный номер,Сотрудник, Должность, Оклад. Между столбцами сделайте разделители
при помощи линий (инструмент). Должно получиться, как на рис. 4.59.Обратите внимание, что нижние границы разделительных линий должныдоходить до разделителя области (линия с надписью Page Header), иначев готовом отчете получится разрыв линии.
12. Щелкните правой клавишей мыши по свободному полю отчета (не по какому-либо элементу отчета), как показано на рис. 4.60, и выберите команду'Data Environment. Откроется пустое окно. Для чего мы открыли это окно?Оно позволяет настроить сеанс автоматического открытия таблиц, нужных нам для выборки данных для отчета. Можно не только указать, какиетаблицы открыть, но и установить связи между ними, что мы и сделаем.
13. Щелкните правой клавишей мыши по свободному полю внутри окна DataEnvironment. В появившемся контекстном меню выберите команду Add.При этом, если не открыта никакая база данных, открывается окно длявыбора файла таблицы. Выберите таблицу Persons (она хранится в папкеDATA). В окне Data Environment появится выбранная нами таблица. Наэкране при этом будет присутствовать окно Add Table or View (Добавитьокно или представление). Щелкните в нем по кнопке Other (Другие) и впоявившемся окне для выбора файла таблицы выберите таблицу Staff(она также хранится в папке DATA). Этим действием мы добавили в окноData Environment еще одну таблицу. Закройте окно Add Table or View(Добавить окно или представление) щелчком мышью по кнопке Close(Закрыть). Получаем вид окна, как на рис. 4.61.
14. Создадим связь между таблицами. Эго нужно, поскольку в каждой строкеформируемого нами отчета должны присутствовать данные и из таблицыPersons, и из таблицы Staff. При этом выводимый список сотрудников берется из таблицы Persons, а значения, соответствующие каждому сотруднику по полю Id, из таблицы Staff. Связь создается довольно простым способом. В списке полей таблицы Persons, в окне Data Environment, найдитеполе Id, наведите на него указатель мыши, нажмите левую клавишу мыши
и, не отпуская ее, перетащите указатель на поле Id в таблице Staff. Приэтом, поскольку при открытии таблицы Staff мы никаким образом не указали индекс для нее, а для создания связи требуется проиндексированная
таблица, появится запрос на автоматическое создание индекса. В ответна запрос щелкните по кнопке ОК. В результате в окне Data Environmentв конце списка полей таблицы Staff появится созданный индекс. Крометого, графически обозначится связь таблиц, как показано на рис. 4.62.
15. Закройте окно Data Environment.
16. В области Detail (Детали) создайте поля для вывода данных из наших таблиц. Для этого воспользуйтесь инструментом. При появлении оконField Properties (Свойства поля) в поле Expression (Выражение) введитедля первого поля Persons.Tabnum, для второго - Persons.Name, для третьего - Staff.WhoIs, а для четвертого - Staff.Surn. Для поля Staff.Sum в окнеField Properties (Свойства поля) на вкладке Format (Формат) установитепереключатель на значение Numeric. Должно получиться, как на рис. 4.63.
17. В области Page Footer (Нижняя часть страницы) введите текст Начальник отдела кадров.
18. Отчет готов. Следует не забыть сохранить его в файл. Сохранение происходит стандартным для всех файлов способом - при помощи командыSave (Сохранить) из меню File (Файл). Для хранения отчетов мы заготовили специальную папку - REPORTS. Имя файла отчета задайте f2.
19. В Visual FoxPro 9 есть возможность предварительного просмотра созданного отчета. Для этого выберите команду Print Preview (Предпросмотр печати) из меню Report (Отчет). Если вы не видите пункта менюReport (Отчет), щелкните в любом месте окна Дизайнера отчета(Report Designer). Вид отчета должен быть похож на то, что показанона рис. 4.64.
20. Попробуйте поменять масштаб отчета. По окончании работы с предпросмотром отчета щелкните по кнопкена панели инструментов предпросмотра. Если панель куда-то пропала или ее не было изначально, установитефлажок Print Preview (Предпросмотр печати) в окне настройки панелейинструментов Toolbars, вызываемого командой Toolbars (Панели инструментов) из меню View (Вид).
21. Один отчет мы изготовили и проверили. Закройте окно Дизайнера отчетов.
22. Для вызова следующего отчета нам потребуется создать диалоговоеокно, где пользователь должен будет выбирать, о каком сотруднике нужно печатать отчет. Создайте новую форму по образцу, представленномуна рис. 4.65.
23. Находясь в Дизайнере форм (Form Designer), сделайте двойной щелчокмышью по свободному полю формы (не по какому-либо элементу). Проверьте, что в появившемся окне, в раскрывающемся списке справа отслова Object (Объект) стоит значение Forml, а в раскрывающемся списке Procedure (Процедура) - значение Init.
24. Организуем заполнение раскрывающегося списка (Combo 1) данными изполя Tabnum таблицы Persons. Введите следующий текст:
25. Закройте окно с введенными командами.
26. Сделайте двойной щелчок мышью по созданной вами кнопке Выход.
27. В случае выбора этой кнопки нужно разорвать связь раскрывающегосясписка с таблицей, закрыть таблицу и закрыть окно. Введите следующийтекст:
28. Закройте окно с введенными командами.
29. Сделайте двойной щелчок мышью по созданной вами кнопке Печать.
30. Когда пользователь щелкает по этой кнопке, он должен увидеть готовыйк печати отчет. Значит, нужно распознать выбранный пользователем табельный номер и запустить формирование отчета с условием совпадениятабельного номера (поле Tabnum) в записи из таблицы Persons с выбранным пользователем значением. Введите следующий текст:
31. Закройте окно с введенными командами.
32. Закройте окно Дизайнера форм (Form Designer).
33. Создадим отчет с информацией о конкретном сотруднике, которая будетотображаться на отдельной странице отчета. Таким образом, по окончании формирования отчета на каждой странице отчета будет информацияо сотруднике, а количество страниц будет совпадать с числом сотрудников на предприятии. Щелкните мышью в окне проекта по папке Reports(Отчеты), находящейся в папке Documents (Документы), а затем щелкните мышью по кнопке New (Новый).
34. Поскольку титульного листа не будет и все страницы будут однотипны,область Title (Заголовок) нам не нужна.
35. Выполните для создаваемого отчета п.12-15.
36. Пользуясь инструментами панели инструментов Дизайнера отчетов (ReportDesigner), создайте отчет по образцу на рис. 4.66. Обратите внимание,что в области Page Footer (Нижняя часть страницы) в поле справа отслов По состоянию на... выводятся не данные из какого-либо поля таблицы, а результат выполнения функции DATE (). В результате работы этойфункции определится текущая дата. Не забывайте в именах полей таблицуказывать префиксы (Persons, или Staff.).
37. Закройте окно Дизайнера отчетов (Report Designer). Два отчета и формудля настройки одного из них мы создали. Настало время испытать новыевозможности нашего приложения.
38. В окне проекта щелкните мышью по имени основной программы проекта main, а затем по кнопке Run (Выполнить).
39. В ответ на запрос имени пользователя и пароля введите соответственноAdmin и Password.
40. В основном меню нашего приложения выберите из меню Отчеты команду Список сотрудников. На экране появится сформированный отчет врежиме предпросмотра. Можете его распечатать или сразу щелкнуть покнопке завершения работы в режиме предпросмотра.
41. В основном меню нашего приложения выберите в меню Отчеты команду Персональная карточка. В появившемся на экране диалоговом окневыберите в раскрывающемся списке любой табельный номер и щелкните мышью по кнопке Печать. На экране появится сформированный отчет в режиме предпросмотра. Можете его распечатать или сразу щелкнуть по кнопке завершения работы в режиме предпросмотра.
42. Завершите работу приложения, выбрав в меню Файл команду Выход.