Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ к ЛЗ А4 СУБД FOXPRO 06.06.12 - весь_12пт.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
5.15 Mб
Скачать

58

Министерство образование и науки Российской Федерации

Южно-Российский государственный технический университет

(Новочеркасский политехнический институт)

ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ

СИСТЕМ УПРАВЛЕНИЯ

СУБД VISUAL FOXPRO

Методические указания к лабораторным работам

Новочеркасск

ЮРГТУ (НПИ)

2012

УДК 681. 3. 07 (076.5)

Рецензент - канд. техн. наук Д.В.Гринченков

Фоменко Г.П.

Информационное обеспечение систем управления СУБД VISUAL FOXPRO: методические указания к лабораторным работам / Юж. – Рос. гос. техн. ун-т (НПИ). - Новочеркасск: ЮРГТУ (НПИ), 2012. - 58 с.

Рассматриваются вопросы использования возможностей СУБД VISUAL FOXPRO для построения фрагментов базы данных и для реализации типовых функций взаимодействия пользователей с подсистемой информационного обеспечения АСУ.

Предназначены для студентов специальности 22020165 «Управление и информатика в технических системах» и направления 22020062 «Автоматизация и управление».

© Южно-Российский государственный

технический университет, 2012

© Фоменко Г.П.

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

ВВЕДЕНИЕ В VISUAL FOXPRO. УПРАВЛЕНИЕ РАБОТОЙ VISUAL FOXPRO

Программа занятия

  1. Ознакомиться с составом и назначением Visual FoxPro.

  2. Научиться оперировать основными командами Visual FoxPro.

  3. Создать базу данных, соответствующую разработанной модели.

Указания к выполнению программы

К пункту 1. Visual FoxPro позволяет создавать базы данных по реляционной модели и выполнять основные функции: описывать структуру данных, вводить и проверять информацию, выдавать информацию на экран или печать. Система позволяет для быстрого поиска использовать индексные файлы (упорядоченный список указателей к основному файлу).

Visual FoxPro использует таблицы для хранения данных, определяющих тот или иной тип файла. Существуют следующие типы файлов:

  • Tabel (.DBF) - таблица;

  • Database (.DBC) - база данных;

  • Form (.SCX) - форма;

  • Label (.LBX) - этикетка;

  • Menu (.MNX) - меню;

  • Project (.PJX) - проект;

  • Report (.FRX) - отчет;

  • Visual Class Library (.VCX) - библиотека визуальных классов.

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

Visual FoxPro позволяет использовать различные ОС, имеет интерактивный режим разработки программ, можно использовать массивы переменных, есть возможность создавать и редактировать меню, отчеты и экраны, можно создавать ЕХЕ - файлы, есть функция, позволяющая получить значения системных параметров. Visual FoxPro частично совместим с СУБД FoxBASE, т. е. есть возможность использования файлов FoxBASE - .PRG (программные файлы), .DBF (базы данных), .IDX (индексные файлы), .MEM (файлы переменных памяти), .LBL (файлы меток).

К пункту 2. Основные команды системы и примеры их использования:

CREATE PROJECT (File\New\Project\New File) - создает новый проект.

Новый проект создается командой CREATE PROJECT или через меню -File\New\Project\New File. Результат приведен на рис. 1.1.

Рис 1.1

После этого появляется окно для сохранения нового проекта, нажимаем кнопку Сохранить.

В данном случае имя проекта LR5 (рис 1.2).

Рис. 1.2

После этого рабочая область примет вид, изображенный на рис. 1.3.

Рис. 1.3

Для создания новых таблиц необходимо выполнить следующую последовательность действий:

1. В диспетчере проектов (Project Manager) выбрать Data /Free Tables/New (рис. 1.4);

Рис. 1.4

2. Затем выбрать New Table в появившемся окне (рис. 1.5);

Рис. 1.5

3. В появившемся окне Create ввести имя создаваемой таблицы и выбрать Сохранить.

В данном случае имя таблицы table1 (рис 1.6);

Рис. 1.6

4. После чего появляется окно, в котором необходимо заполнить поля (рис. 1.7);

Рис. 1.7

5. В конструкторе таблиц в поле Name ввести имя первого поля таблицы, а также в поле Туре выбрать тип поля таблицы из списка (рис. 1.8).

Рис. 1.8

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

В СУБД Visual FoxPro возможны следующие типы полей:

- Character - символьное поле; длина его определяется количеством символов (до 254); Numeric - числовое поле; длина определяется общим числом цифр и числом цифр поля десятичной точки;

- Date - поле даты (американский формат: мм/дд/гг; германский: дд.мм.гг; британский: дд/мм/гт; итальянский: дд-мм-гт; японский: гт/мм/дд4 и т.д.); Memo - поле примечаний; Logical - логическое поле; может содержать одно из двух значений F (false) или Т (trye).

  1. В поле Width установить ширину столбца в символах (см. рис. 1.8).

  2. Если поле типа Numeric или Float, установить число десятичных знаков, отображаемое в поле Decimal (см. рис. 1.8).

  3. Если требуется, чтобы поле могло принимать значение NULL, выделить NULL.

9. После нажатия кнопки ОК появится окно с вопросом: "Input data record now?" (вводить данные сейчас?). Yes - чтобы ввести данные в таблицу сейчас, No – чтобы сделать это позднее. Нажимаем Yes.

В том случае, если окно с вопросом "Input data record now?" не появляется, информацию в таблицу можно ввести при помощи команды APPEND (см. ниже).

Появляется окно ввода записей (рис. 1.9), заполняем таблицу. В поле Data данные водим в американском формате: мм/дд/гг.

Рис. 1.9

USE – команда, открывающая таблицу, т.е. над этой таблицей будут выполняться команды пользователя.

Набираем в командном окне (окно Command) команду, приведенную на рис. 1.10, причем указываем полный путь к файлу.

Рис 1.10

В результате таблица table1 стала активной.

Это можно проверить командой LIST. Если файл с расширением *.dbf находится в рабочих папках самой программы, то указывать путь необязательно.

BROWSE – команда просмотра таблицы.

После ввода этой команды появляется окно просмотра и редактирования записей (рис. 1.11).

Рис. 1.11

APPEND [BLANK] – команда, добавляющая новую запись в активную таблицу.

После ввода этой команды появляется пустое окно ввода записей (рис. 1.12), необязательный параметр BLANK означает, что новая запись останется пустой и не будет отражена на экране.

Рис. 1.12

EDIT (CHANGE) – команда, разрешающая редактирование записей таблицы.

После ввода этой команды появляется окно ввода записей без возможности добавить новую запись (рис. 1.13).

Рис. 1.13

AVERAGE – команда, которая ищет среднее арифметическое числовых полей, то есть полей типа Numeric.

В данном случае это поле телефон. Вводим команду в командное окно (рис. 1.14).

Рис. 1.14

Получили следующий результат (рис. 1.15).

Рис. 1.15

COUNT – команда, подсчитывающая число записей таблицы

Результат ввода команды указан на рис. 1.16.

Рис. 1.16

LOCATE FOR – команда, осуществляющая поиск записей.

Команда поиска записи по полю имя имеет вид:

LOCATE FOR имя=’Александр’

Результат её действия указан на рис. 1.17.

Рис 1.17

SORT – команда, сортирующая таблицу.

INDEX ON – команда индексации, необходимая для той же цели, что и сортировка - упорядочивание файла данных в порядке возрастания. Различие между ними заключается в том, что при сортировке по команде SORT ON создаётся полностью новый файл, в котором нумеруются все записи в отсортированном порядке. При индексации по команде INDEX ON создаётся индексный файл, который не содержит все информации отсортированного файла. Он включает только перечень номеров записей в той последовательности, какую они бы имели, если бы были отсортированы. Таким образом, сортировка с использованием команды INDEX ON экономит время, необходимое для перезаписи всей информации из БД и значительный объём дисковой памяти.

Индексирование информации производится для ускорения поиска информации в БД при связывании реляционных баз данных.

Команда сортировки по полю телефон имеет вид:

SORT ON телефон TO "c:\Documents and Settings\Я\Мои документы\Visual FoxPro Projects\LR № 5\sorttable.dbf"

Результат её действия указан на рис. 1.18.

Рис. 1.18

COPY TO – команда, копирующая данные из активной таблицы в другую таблицу

В данном случае мы скопировали данные из таблицы Table 1 .dbf в таблицу A.dbf , введя в окне Command текст:

COPY TO "c:\Documents and Settings\Я\Мои документы\Visual FoxPro Projects\LR № 5\a.dbf"

Результат её действия указан на рис. 1.19.

Рис. 1.19

Для просмотра скопированной таблицы Tablel.dbf в таблицу A.dbf воспользуемся командой USE для открытия таблицы A.dbf (рис. 1.20) и BROWSE для ее непосредственного просмотра (рис. 1.21).

Рис. 1.20

Рис. 1.21

COPY STRUCTURE – команда, копирующая структуру таблицы

Копируем структуру таблицы А.dbf в таблицу Sid.dbf, производим просмотр и открываем новую таблицу. Текст, введённый в окно Command, имеет вид:

COPY STRUCTURE TO "c:\Documents and Settings\Я\Мои документы\Visual FoxPro Projects\LR № 5\sid.dbt"

Результат её действия указан на рис. 1.22.

Рис. 1.22

COPY FIELDS – команда, которая даёт возможность копировать только необходимые поля таблицы (если не указывать этот параметр будут скопированы все поля таблицы). Перед этим необходимо выбрать (сделать активной) таблицу, из которой происходит копирование.

Мы скопировали поля имя и телефон из таблицы Table1.dbf в таблицу Ser.dbf . Текст, введённый в окно Command, имеет вид:

COPY fields имя, телефон to "c:\Documents and Settings\Я\Мои документы\Visual FoxPro Projects\LR № 5\ser.dbt"

Результат её действия указан на рис. 1.23.

Рис. 1.23

Для просмотра скопированных полей из таблицы Table1.dbf в таблицу Ser. dbf воспользуемся командой USE для открытия таблицы Ser.dbf и BROWSE для ее непосредственного просмотра (рис. 1.24).

Рис. 1.24

DIR – команда, которая показывает листинг файлов

DISPLAY – команда, которая показывает записи текущей таблицы

DISPLAY STRUCTURE – команда, которая отображает информацию о структуре таблицы

DISPLAY STATUS – команда, которая предоставляет информацию о статусе

DISPLAY MEMORY – команда, которая отображает текущее состояние памяти

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

  • каждому полю таблиц присваивают имя - идентификатор;

  • определяют тип и размер каждого поля;

  • определяют ключевое поле, которое является общим для обеих таблиц.

Рассмотрим пример:

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

Покажем данную реляционную модель в виде таблиц рис. 1.25.

Рис. 1.25

Для создания БД, согласно построенной реляционной модели в Visual FoxPro, необходимо создать новый проект командой CREATE PROJECT или через меню - File\New\Project\New File (см. выше).

Далее необходимо создать новые таблицы как было описано выше.

Для связывания таблиц по полю телефон, необходимо последовательно ввести в окно Command следующие команды:

USE "c:\documents and settings\я\мои документы\visual foxpro projects\table1.dbf" ALIAS r1

INDEX on телефон TO "c:\documents and settings\я\мои документы\visual foxpro projects\table1-1.dbf"

SELECT 2

USE "c:\documents and settings\я\мои документы\visual foxpro projects\table2.dbf" ALIAS r2

INDEX on телефон TO "c:\documents and settings\я\мои документы\visual foxpro projects\table2-1.dbf"

SET RELATION TO телефон INTO r1

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

LIST FIELDS фамилия, имя, отчество, телефон, r1.адрес

Результат вышеуказанных действий показан на рис. 1.26

Рис. 1.26

Осуществить связывание таблиц можно более простым и более быстрым способом, если использовать меню Window/Data Session. При этом появится рабочее окно, с помощью которого можно открывать, закрывать и просматривать таблицы, изменять их структуры, а также осуществлять связывание (рис. 1.27).

Рис. 1.27

Для нашего примера откроем сначала таблицу table1, нажав кнопку Open в данном окне (рис. 1.28).

Рис. 1.28

После нажатия Ок получим (рис. 1.29).

Рис. 1.29

Аналогичным образом откроем таблицу table2 (рис. 1.29, 1.30).

Рис. 1.29

Рис. 1.30

Перед установкой связи базы данных необходимо индексировать по ключевому полю (Properties/Modify) (рис. 1.31).

Рис. 1.31

После этого появляется окно (рис. 1.32). В строке с именем телефон в столбце Index необходимо установить стрелку вверх и нажать Ок.

Рис. 1.32

После индексации делаем активной таблицу table2 и указываем на значок Relation (рис 1.33).

Рис. 1.33

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

Рис. 1.34

На рис. 1.35 показан результат.

Рис. 1.35

Осуществить поиск в таблице table2 записей соответствующих тому или иному значению поля. Продолжить поиск командой CONTINUE и вывести найденную запись (рис. 1.36).

Рис. 1.36

Содержание отчета по работе

  1. Состав и назначение СУБД Visual FoxPro.

  2. Назначение и особенности основных операторов.

  3. Разработанная модель базы данных.

  4. Команды и результаты их выполнения.

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

РАЗРАБОТКА ПРОГРАММЫ РЕДАКТИРОВАНИЯ БД НА ЯЗЫКЕ VISUAL FOXPRO

Программа занятия

  1. Ознакомиться с общими правилами составления программ и основными элементами языка Visual FoxPro.

  2. Создать программу форматного вывода информации на экран дисплея.

  3. Создать программу, реализующую меню.

  4. Разработать общую программу редактирования таблиц, используя уже разработанные программы как элементы.

Указания к выполнению программы

К пункту 1. 1. Из команд СУБД FoxPro могут составляться программы на языке FoxPro и записываться в файлы с расширением .PRG. Для их запуска из СУБД используется команда DO < имя файла > ( Program / Do).

Создаются и редактируются программы с использованием обычных редакторов.

Создание программного файла производится следующим образом:

1. В панели задач выбрать File\New\Program\New File (Рис. 2.1).

Рис. 2.1

2. В появившемся окне редактора вводится текст программы (рис. 2.2).

Рис. 2.2

3. При закрытии редактора (если в окне program1 произведены изменения) система предложит сохранить файл (рис. 2.3).

Рис. 2.3

После нажатия Yes появится окно, в котором можно ввести имя файла и выбрать Сохранить (рис. 2.4).

Рис. 2.4

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

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

Оператор присвоения:

STORE < значение > ТО < имя переменной >

либо

< имя переменной > = < значение >

Арифметические выражения аналогичны языкам программирования, например:

D = C/2 + 3 *F-SQRT(P)

Описание массивов:

DIMENSION < имя массива 1 > (размер), < имя массива2 > (размер),...

Пример:

Dimension Dim (13), Geny (100)

Dim (1) = " Новочеркасск "

Dim (2) = " ЮРГТУ "

Логический оператор:

IF < логическое выражение >

  • Группа операторов >

ELSE

  • группа операторов >

ENDIF

Пример: If A>F/2

Store 8 То С Else

Store 12 * D To Era

Endlf

Оператор цикла:

DO WHILE < логическое выражение >

< группа операторов >

[LOOP]

[EXIT]

ENDDO

LOOP - переход на начало цикла;

EXIT - выход из цикла.

Пример: Do While Pok < 25

Рок = Рок + 1

?Рок

EndDo

Оператор выбора:

DO CASE

CASE < имя переменной > = < значение 1 >

<группа операторов 1 >

CASE < имя переменной > = < значение2 >

<группа операторов2 >

ENDCASE

Пример: Do Case

Case T= 1997

D = 28*C Browse Fields фам

Case T= 1998

D = 30*C-F

Browse Fields имя, отч NoAppend NoDelete

EndCase

Комментарии начинаются со знаков * или &&.

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

Формат команды:

@ < номер строки, номер столбца > SAY < строка символов, переменной или поля БД >

Если необходимо, чтобы при данном выводе информации на экран мы имели возможность корректировать выводимые значения полей БД, переменных, то перед этой переменной в операторе SAY записывают GET.

В конце команды может указываться формат для вывода числового или текстового значения переменной, для этого добавляют PICTURE < шаблон ['@<коды>']> и/или FUNCTION '@< коды >'

Некоторые коды для PICTURE:

А - ввод только букв;

N - ввод только букв и цифр;

Х - ввод любых символов.

Некоторые коды для FUNCTION:

А - ввод только букв;

К - при попадании курсора в данное поле (оно выделяется красным цветом) нажатие в начальный момент любой содержательной клавиши влечет немедленную его отчистку;

R - вывод в шаблоне символов, которые не являются частью данных;

Z - при выводе числа, равного нулю, выводятся все пробелы. После последнего оператора SAY в группе вывода, ставят READ (либо APPEND).

Программа форматного вывода информации из таблицы «Абоненты» (table1).

Ввод текста осуществляется в окне program1.prg.

USE "c:\documents and settings\я\мои документы\visual foxpro projects\lr № 5\table1.dbf"

SET TALK OFF && запрет вывода на экран значений перменных

CLEAR && очистка экрана

&& операторы формата ввода

@ 5,15 SAY "фамилия" GET фамилия

@ 7,15 SAY "имя" GET имя

@ 9,15 SAY "отчество" GET отчество

@ 11,15 SAY "адрес" GET адрес

@ 13,15 SAY "номер телефона" GET телефон PICTURE '9-999-999-99-99'

@ 15,15 SAY "дата рождения" GET дата PICTURE '@D' FUNCTION '@E'

@ 1,2 TO 17,65 DOUBLE && двойная рамка

@ 1,25 SAY "БД абонентов" COLOR g+

Введите и запустите данную программу (комментарии && вводить не обязательно).

Для запуска программы необходимо в командном окне набрать DO "полный адрес к программе", причем DO обязательно набирается большими буквами.

В данном случае команда, вводимая в окне Command, имеет вид:

DO "c:\documents and settings\я\мои документы\visual foxpro projects\lr № 6\program1.prg"

Результат её выполнения на рис. 2.5.

Рис. 2.5

К пункту 3. Для создания меню в Visual FoxPro есть специальная команда:

@ < номер строки, номер столбца > PROMPT " 1-ый пункт меню " MESSAGE " поясняющее сообщение "

@ < номер строки, номер столбца > PROMPT " N-ый пункт меню " MESSAGE " поясняющее сообщение "

MENU TO < переменная >

Так же потребуются следующие операторы.

RECNO() - указывает номер текущей записи.

STR(<N>) - преобразует числовое <N> в символьную строку.

Программа, реализующая меню, дополненная операторами форматного вывода из предыдущего примера имеет вид:

USE "c:\documents and settings\я\мои документы\visual foxpro projects\lr № 5\table1.dbf"

SET TALK OFF

CLEAR

GO BOTTOM

cnt=RECNO()

n=1

DO WHILE.T.

GO n

@ 3,15 SAY "номер записи"+STR(n)

@ 5,15 SAY "фамилия" GET фамилия

@ 7,15 SAY "имя" GET имя

@ 9,15 SAY "отчество" GET отчество

@ 11,15 SAY "адрес" GET адрес

@ 13,15 SAY "номер телефона" GET телефон PICTURE '9-999-999-99-99'

@ 15,15 SAY "дата рождения" GET дата PICTURE '@D' FUNCTION '@E'

@ 1,2 TO 17,65 DOUBLE && двойная рамка

@ 1,25 SAY "БД абонентов" COLOR g+

@ 20,5 PROMPT "назад" MESSAGE "к предыдущей записи"

@ 20,20 PROMPT "вперёд" MESSAGE "к следующей записи"

@ 20,35 PROMPT "выход" MESSAGE "выход в главнео меню"

READ

MENU TO sl

DO CASE

CASE s1=1

IF n=1

n=cnt

ELSE

n=n-1

ENDIF

CASE sl=2

IF n=cnt

n=1

ELSE

n=n+1

ENDIF

CASE sl=3

EXIT

ENDCASE

ENDDO

Сохраняем набранную программу под именем program2.prg. Затем в командном окне набираем команду:

DO "c:\documents and settings\я\мои документы\visual foxpro projects\lr № 6\program2.prg"

И смотрим результат (рис. 2.6).

Рис. 2.6

Для того чтобы пролистать записи, необходимо сначала выбрать в меню <Назад> или <Вперед>, затем нажать пробел либо ENTER, а потом Esc. После этого повторить нажатие пробела или ENTER до окончания пролистывания.

К пункту 4. Любая программа Visual FoxPro может быть вызвана из другой программы (примером из других языков программирования служит вызов подпрограмм). Для этого существует команда:

DO < имя программы > WITH < параметры >.

В начале вызываемой программы должен стоять оператор:

PARAMETRS < параметры > (если, конечно же, передаваемые параметры есть).

В ней перечисляются переменные, соответствующие параметрам в операторе вызова DO. Возврат осуществляется по команде RETURN или по окончанию программы.

Создайте программный файл showrods, для редактирования информации об абонентах, поместив туда операторы из предыдущего примера. Произвести изменения и привести их в отчете. Для редактирования таблицы Родственники (table2) создайте файл showrods, в котором отсутствует возможность редактирования информации об адресе. Ниже приведен текст программы для редактирования таблицы Абонентов (файл showab).

USE "c:\documents and settings\я\мои документы\visual foxpro projects\lr № 5\table1.dbf"

SET TALK OFF

CLEAR

GO BOTTOM

cnt=RECNO()

n=1

DO WHILE.T.

GO n

@ 3,15 SAY "номер записи"+STR(n)

@ 5,15 SAY "фамилия" GET фамилия

@ 7,15 SAY "имя" GET имя

@ 9,15 SAY "отчество" GET отчество

@ 11,15 SAY "адрес" GET адрес

@ 13,15 SAY "телефон" GET телефон PICTURE '9-999-999-99-99 '

@ 15,15 SAY "дата рождения" GET дата PICTURE '@D' FUNCTION '@E'

@ 1,2 TO 17,65 DOUBLE

@ 1,25 SAY "БД абонентов" COLOR g+

@ 20,5 PROMPT "Назад" MESSAGE "К предыдущей записи"

@ 20,20 PROMPT "Вперёд" MESSAGE "К следующей записи"

@ 20,35 PROMPT "Выход" MESSAGE "Выход в главное меню"

READ

MENU TO sl

DO CASE

CASE sl=1

IF n=1

n=cnt

ELSE

n=n-1

ENDIF

CASE sl=2

IF n=cnt

n=1

ELSE

n=n+1

ENDIF

CASE sl=3

EXIT

ENDCASE

ENDDO

Сохраняем набранную программу под именем showab.prg. Затем в командном окне набираем команду:

DO "c:\documents and settings\я\мои документы\visual foxpro projects\lr № 6\showab.prg"

Результат указан на рис. 2.7.

Рис. 2.7

Аналогичные действия производим с таблицей Родственники (рис. 2.8):

USE "c:\documents and settings\я\мои документы\visual foxpro projects\lr № 5\table2.dbf"

SET TALK OFF

CLEAR

GO BOTTOM

cnt=RECNO()

n=1

DO WHILE.T.

GO n

@ 3,15 SAY "номер записи"+STR(n)

@ 5,15 SAY "фамилия" GET фамилия

@ 7,15 SAY "имя" GET имя

@ 9,15 SAY "отчество" GET отчество

@ 13,15 SAY "телефон" GET телефон PICTURE '9-999-999-99-99 '

@ 1,2 TO 17,65 DOUBLE

@ 1,25 SAY "БД абонентов" COLOR g+

@ 20,5 PROMPT "Назад" MESSAGE "К предыдущей записи"

@ 20,20 PROMPT "Вперёд" MESSAGE "К следующей записи"

@ 20,35 PROMPT "Выход" MESSAGE "Выход в главное меню"

READ

MENU TO sl

DO CASE

CASE sl=1

IF n=1

n=cnt

ELSE

n=n-1

ENDIF

CASE sl=2

IF n=cnt

n=1

ELSE

n=n+1

ENDIF

CASE sl=3

EXIT

ENDCASE

ENDDO

Рис. 2.8

Сохраняем набранную программу под именем showrods.prg.

Для обеспечения доступа к таблице Абоненты и таблице Родственники ввести следующую программу:

USE "c:\documents and settings\я\мои документы\visual foxpro projects\lr № 5\table1.dbf"

SET TALK OFF

CLEAR

GO BOTTOM

cnt=RECNO()

n=1

DO WHILE.T.

GO n

@ 3,15 SAY "номер записи"+STR(n)

@ 5,15 SAY "фамилия" GET фамилия

@ 7,15 SAY "имя" GET имя

@ 9,15 SAY "отчество" GET отчество

@ 11,15 SAY "адрес" GET адрес

@ 13,15 SAY "номер телефона" GET телефон PICTURE '9-999-999-99-99'

@ 15,15 SAY "дата рождения" GET дата PICTURE '@D' FUNCTION '@E'

@ 1,2 TO 17,65 DOUBLE && двойная рамка

@ 1,25 SAY "БД абонентов" COLOR g+

@ 20,5 PROMPT "назад" MESSAGE "к предыдущей записи"

@ 20,20 PROMPT "вперёд" MESSAGE "к следующей записи"

@ 20,35 PROMPT "выход" MESSAGE "выход в главнео меню"

READ

MENU TO sl

DO CASE

CASE s1=1

IF n=1

n=cnt

ELSE

n=n-1

ENDIF

CASE sl=2

IF n=cnt

n=1

ELSE

n=n+1

ENDIF

CASE sl=3

EXIT

ENDCASE

ENDDO

Сохраняем набранную программу под именем program3.prg. Затем в командном окне набираем команду:

DO "c:\documents and settings\я\мои документы\visual foxpro projects\lr № 6\program3.prg"

Смотрим результат (рис. 2.9).

Рис. 2.9

Содержание отчета по работе

  1. Общие сведения о программировании на языке Visual FoxPro.

  2. Схемы алгоритмов программы редактирования таблиц.

  3. Тексты программ.

  4. Результаты выполнения программ.

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

РАЗРАБОТКА ПРОГРАММЫ ОСУЩЕСТВЛЕНИЯ ПОИСКА ЗАПИСИ В БД

Программа занятия

  1. Ознакомиться с общими принципами построения систем вложенных меню в Visual FoxPro.

  2. Создать программы поиска записи в БД по значению одного из полей.

  3. Ознакомиться с реализацией принципа модульного программирования в Visual FoxPro.

  4. Разработать общую программу поиска и редактирования записей в разработанные процедуры.

Указания к выполнению программы

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

Создадим программу, производящую моделирование и связывание таблицы (см. ЛР №1). Закончим её оператором вызова другой программы DO telef.prg, производящей поиск и редактирование записей БД и реализующей принцип вложенных меню.

Программы создаются, сохраняются, вводятся и редактируются так же, как это было указано в ЛР № 2.

Программа rel.prg ( для связывания БД ):

USE "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\LR № 5\table1.dbf" ALIAS r1

INDEX ON телефон TO "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\LR № 5\table1-1.dbf"

SELECT 2

USE "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\LR № 5\table2.dbf" ALIAS r2

INDEX ON телефон TO "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\LR № 5\table2-1.dbf"

SET RELATION TO телефон INTO r1

DO "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\LR № 3\telef.prg"

Программа telef.prg

SET TALK OFF

SET BLINK OFF

SET PROCEDURE TO labaproc.prg

DO WHILE T.

CLEAR

@ 4,17 SAY "БД абонентов и их родственников" COLOR r+

SET MESSAGE TO 24

@ 1,2 TO 21,77 DOUBLE

@ 10,22 PROMPT "Редактирование" MESSAGE "Редактирование записей"

@ 10,38 PROMPT "Поиск" MESSAGE "Поиск записей"

@ 10,45 PROMPT "Выход" MESSAGE "Выход из программы"

MENU TO m

DO CASE CASE m=1

@ 13,38 PROMPT "БД абоненты" MESSAGE "Редактирование БД абонентов”

@ 14,38 PROMPT "БД родственники" MESSAGE "Редактирование БД родственников"

MENU TO m2

DO CASE m2

CASE m2=1

« операторы редактирования БД абонентов, см. Л/Р N2 » CASE m2=2

« операторы редактирования БД родственников, см. Л/Р N2»

ENDCASE m2=1

CASE m=2

@ 13,38 PROMPT "По фамилии" MESSAGE "Поиск записи по фамилии"

@ 14,38 PROMPT "Po nomeru telefona" MESSAGE "Поиск записи по номеру телефона"

MENU TO m4 DO CASE m4

CASE m4=1

« операторы поиска по фамилии ( по полю Char) в БД « Абоненты » и операторы вывода номера найденной записи »

CASE m4=2

«операторы поиска по номеру телефона ( по полю Numeric ) в БД « Абоненты» и операторы вывода номера найденной записи » ENDCASE m4=1

CASE m=3

EXIT

ENDCASE

ENDDO

CLEAR

CLOSEALL

При сравнениях в программе значений переменных и полей сначала преобразуются в символы верхнего регистра командой UPPER ( ). И осуществляется отбрасывание незначащих пробелов командой ALLTRIM ( ).

К пункту 2. Осуществляя поиск по числовому полю телефон (типа Numeric) в таблице, оператор Locate будет иметь вид LOCATE FOR телефон = fno (где fno – переменная для хранения заданного номера телефона). Рассмотрим программу, реализующую поиск нужной записи в БД «Абоненты» по ключевому заданному значению. Используем для этого команду LOCATE. Поле поиска - фамилия (типа char).

PROCEDURE findfam

USE "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\LR № 5\table1.dbf"

CLEAR

fif=SPACE(20)

@ 7,32 SAY "Поиск по фамилии" COLOR r+/b

@ 6,2 TO 10,77 DOUBLE

@ 9,20 SAY "Введите искомое значение" GET fif

READ

fif=ALLTRIM(fif)

LOCATE FOR UPPER(фамилия)=UPPER(fif)

i=14

DO WHILE FOUND()

@ i,29 SAY ALLTRIM(фамилия)+"- номер записи -" +ALLTRIM(STR(RECNO()))

i=i+1

CONTINUE

ENDDO

PROCEDURE findte

USE "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\LR № 5\table1.dbf"

CLEAR

fno=0

@ 7,32 SAY "Поиск по номеру телефона" COLOR r+/b

@ 6,2 TO 10,77 DOUBLE

@ 9,20 SAY "Введите искомое значение" GET fno PICTURE '9-999-999-99-999'

READ

LOCATE FOR телефон=fno

i=14

DO WHILE FOUND()

@ i,29 SAY телефон PICTURE '9-999-999-99-999'+"- номер записи -" + ALLTRIM(STR(RECNO()))

i=i+1

CONTINUE

ENDDO

К пункту 3. Для упрощения разработки больших по объёму программ, а также для реализации базовых принципов модульного программирования, в Visual FoxPro предусмотрена возможность декомпозиции программы на отдельные модули и процедуры. При этом отдельные части программы оформляются в виде процедур, которые хранятся в отдельном от основной программы файле. Имя файла процедур в программе указывается оператором SET PROCEDURE TO < имя процедурного файла.prg >

В процедурном файле процедуры располагаются одна за другой, при этом каждая имеет заголовок PROCEDURE < имя процедуры >. Далее идёт тело процедуры и оператор возврата RETURN.

Переменные, которые должны передаваться из процедуры вне, описываются в начале процедуры оператором PUBLIC <переменная 1>, <переменная 2 >,...

Оформить в виде процедур основные части программы, а именно:

- операторы редактирования таблицы Абоненты;

- операторы редактирования таблицы Родственники;

- операторы поиска по символьному полю;

- операторы поиска по числовому полю.

Общая программа поиска и редактирования записей в БД должна выполнять:

- открытие, индексирование и реляционное связывание таблиц.

- система вложенных меню (см. п.1 указаний), должна позволять либо редактировать (отдельно в каждой таблице), либо искать (в реляционной БД ) записи.

При построении программы необходимо использовать процедурные файлы. Приведём пример программы, которая выполняет:

  • добавление записей в таблицу Абоненты и в таблицу Родственники;

  • поиск по фамилии в таблице Абоненты;

- поиск по телефону в таблице Родственники.

Для анализа результатов поиска в связанных базах данных удобно использовать функцию FOUND([<область>]) - функция вырабатывает логическое значение "истина" если команда поиска (LOCATE, CONTINUE) завершилась успешно, и "ложь" в противоположном случае.

Функция действует в рабочей или указанной <области>

Программа rel.prg приведена на рис.3.1

Рис. 3.1

Текст программы telef.prg приведён ниже:

SET TALK OFF

SET BLINK OFF

SET PROCEDURE TO labaproc.prg

DO WHILE.T.

CLEAR

@ 4,17 SAY "БД абонентов и их родственников" COLOR r+

@ 1,2 TO 21,77 DOUBLE

@ 10,22 PROMPT "Редактирование" MESSAGE "Редактирование и добавление записей"

@ 10,38 PROMPT "Поиск" MESSAGE "Поиск записей"

@ 10,45 PROMPT "Выход" MESSAGE "Выход из программы"

MENU TO m

DO CASE

CASE m=1

@ 13,22 PROMPT "Редактирование" MESSAGE "Редактирование БД"

@ 14,22 PROMPT "Пополнение" MESSAGE "Добавление новой записи в БД"

MENU TO m1

DO CASE m1

CASE m1=1

@ 13,38 PROMPT "БД абонентов" MESSAGE "Редактирование БД абонентов"

@ 14,38 PROMPT "БД родственников" MESSAGE "Редактирование БД родственников"

MENU TO m2

DO CASE m2

CASE m2=1

CLEAR

SELECT a

DO "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\lr № 6\showab.prg"

READ

CASE m2=2

CLEAR

SELECT b

DO "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\lr № 6\showrods.prg"

READ

ENDCASE

m2=1

CASE m1=2

@ 13,52 PROMPT "БД абнентов" MESSAGE "Пополнение БД абонентов"

@ 14,52 PROMPT "БД родственников" MESSAGE "Пополнение БД родственников"

MENU TO m3

DO CASE m3

CASE m3=1

CLEAR

SELECT a

APPEND BLANK

DO "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\lr № 6\showab.prg"

READ

CASE m3=2

CLEAR

SELECT b

APPEND BLANK

DO "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\lr № 6\showrods.prg"

READ

ENDCASE

m3=1

ENDCASE

m1=1

CASE m=2

@ 13,38 PROMPT "По фамилии" MESSAGE "Поиск записи по фамилии"

@ 14,38 PROMPT "По номеру телефона" MESSAGE "Поиск записи по номеру телефона"

MENU TO m4

DO CASE m4

CASE m4=1

CLEAR

SELECT a

DO findfam IN "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\lr № 3\labaproc.prg"

READ

CASE m4=2

CLEAR

SELECT b

DO findte IN "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\lr № 3\labaproc.prg"

READ

ENDCASE

m4=1

CASE m=3

EXIT

ENDCASE

m1=1

ENDDO

CLEAR

Программа labaprog.prg приведена на рис.3.2.

Рис. 3.2

При возникновении проблем по выполнению программы telef.prg необходимо в программе указать полные пути к самой программе telef.prg, к программе rel.prg, а также к процедуре labaproc.prg. Для запуска программы можно пользоваться панелью задач (Program/DO).

Данная манипуляция приведена на рис. 3.3.

Рис. 3.3

В появившемся окне выбираем необходимую программу и нажимаем ОK (рис. 3.4).

Рис. 3.4

Пример выполнения начала данной программы представлен на рис. 3.5.

Так же можно в командном окне набрать команду DO:

DO "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\lr № 3\rel.prg"

Результат её выполнения представлен на рис.3.5.

Рис. 3.5

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

Рис. 3.6

После нажатия Enter на надписи Фамилия появится окно для ввода интересующей фамилии (рис. 3.7).

Рис. 3.7

После ввода фамилии необходимо нажать Enter.

Появится результат поиска (рис. 3.8).

Рис. 3.8

Действительно, в table1 одна запись, чьё поле фамилия – Бережной (рис. 3.9).

Рис. 3.9

При необходимости редактировать содержания уже имеющихся записей, следует выбрать соответствующую вкладку (рис. 3.10).

Рис. 3.10

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

Рис. 3.11

Внесём изменения в поле фамилия.

На рис. 3.12 показана запись до изменения, а на рис. 3.13 после внесения изменений.

Рис. 3.12

Рис. 3.13

Убедимся в том, что изменение вступило в силу, найдя (по вышеуказанному алгоритму) изменённую фамилию (рис. 3.14).

Рис. 3.14

Действительно, изменялась первая запись.

При поиске по полю телефон необходимо выбрать соответствующую вкладку (рис. 3.15).

Рис. 3.15

Появится окно для ввода телефона (рис. 3.16).

Рис. 3.16

После ввода телефона и нажатия Enter рабочее окно приобретёт вид, указанный на рис. 3.17.

Рис. 3.17

Действительно, в таблице table2 две записи с одинаковым номером (рис. 3.18).

Рис. 3.18

Содержание отчета по работе

  1. Тема и программа занятия.

  2. Текст программы поиска и редактирования записей в таблице. Инструкция по её использованию.

  3. Результаты выполнения программы.

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

ПРОГРАММИРОВАНИЕ ЯРЛЫКОВ И ОТЧЕТОВ

Программа занятия

  1. Создать ярлык и вывести его на экран (печать).

  2. Создать отчет и вывести его на экран (печать).

Указания к выполнению программы

К пункту 1. Для создания ярлыка необходимо проделать следующее:

На панели задач выбрать File/New/Project/New file. Окно New представлено на рис. 4.1.

Рис. 4.1

После нажатия New file появляется окно Create, в котором необходимо задать имя проекта и сохранить его в своей папке. После этого появится Диспетчер проектов - Project Manager. Окно Create представлено на рис. 4.2.

Рис. 4.2

В появившемся диспетчере проектов выберете Labels и нажмите New (рис. 4.3).

Рис. 4.3

Появится окно New Label (рис. 4.4)

Выбрать Label Wizard (создание ярлыка через “мастер создания ярлыков”).

Рис. 4.4

В диалоговом окне Label Wizard на первом шаге выбираем (добавляем) необходимые таблицы.

Первый шаг показан на рис. 4.5.

Рис. 4.5

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

Рис. 4.6

После чего окно примет вид, указанный на рис. 4.7.

Рис. 4.7

Чтобы перейти к следующему шагу, нажимаем Next> в окне Label Wizards, которое показано на рис. 4.7.

На втором шаге выбираются следующие параметры ярлыка:

  • Width - ширина ярлыка;

  • Height - высота ярлыка;

  • Columns - число колонок ярлыка.

Причём ширина и высота надписи выбираются в колонке Dimensions. Второй шаг показан на рис. 4.8

Рис. 4.8

Чтобы перейти к следующему шагу, нажимаем Next>.

На третьем шаге выбирается, какие поля и каким образом будут располагаться в ярлыке. Третий шаг представлен на рис. 4.9.

Рис. 4.9

Чтобы перейти к следующему шагу, нажимаем Next>.

На четвертом шаге указывается поле, по которому будет производиться сортировка записей.

Четвёртый шаг показан на рис. 4.10.

Рис. 4.10

Чтобы перейти к следующему шагу, нажимаем Next>.

На пятом шаге выбираем Сохранить для дальнейшего использования - Save label for later use, и нажимаем Finish. Пятый шаг показан на рис. 4.11.

Рис. 4.11

После произведённых действий программа предложит сохранить созданный нами ярлык. Файлы ярлыков имеют расширение *.LBX, *.LBN.

Окно Сохранить как... показано на рис. 4.12.

Рис. 4.12

Предварительный просмотр ярлыков осуществляется выделением его в Диспетчере проекта и нажатием Preview (рис. 4.13).

Рис. 4.13

Появляется окно, изображённое на рис. 4.14.

Рис. 4.14

Панель инструментов Print Preview показана на рис. 4.14

Для редактирования ярлыка выделяем его в Диспетчере проекта и нажимаем Modify.

В появившемся окне Label Designer можно задавать полосам необходимый размер, размещать текст, линии и прямоугольники и рисунки, сохранять ярлык.

Окно Label Designer представлено на рис. 4.15.

Рис. 4.15

Вывод на печать ярлыка производится оператором LABEL. Его формат:

LABEL FORM < имя файла > ТО PRINTER [PROMPT]

| PREVIEW | TO FILE < имя файла >]

PREVIEW - просмотр ярлыка перед печатью;

ТО PRINTER | ТО FILE < имя файла > - вывод ярлыка на принтер или в файл.

PROMPT - выводит на экран диалоговое окно Print, в котором можно выполнить установки, определяющие работу печатающего устройства.

Пример созданного ярлыка показан на рис. 4.14.

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

  1. Определение того, какой тип отчета необходимо создать.

  2. Создание файла разметки отчета.

  3. Обновление и настройка файла разметки.

  4. Предварительный просмотр и печать отчета.

Создание формы отчёта производится выделением в Диспетчере проекта Reports и нажатием NEW. Окно Диспетчера проектов показано на рис. 4.16.

Рис. 4.16

Далее в появившемся окне New Report нажимаем Report Wizard (создание отчета через “мастер создания отчетов”).

Окно New Report показано на рис. 4.17.

Рис. 4.17

В окне Wizard Selection выбираем количество таблиц, из которых будут использованы данные: из одной (Report Wizard) или из нескольких таблиц (One-to-Many Report Wizard); нажимаем ОК.

Окно Wizard Selection показано на рис. 4.18.

Рис. 4.18

Выбор полей.

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

Окно на всех этапах выбора показано на рис. 4.19 - 4.21.

Рис. 4.19

Рис. 4.20

Рис. 4.21

Чтобы перейти к следующему шагу, нажимаем Next>.

Порядок сортировки показан на рис. 4.22.

Рис. 4.22

Чтобы перейти к следующему шагу, нажимаем Next>.

Стиль.

Если кликнуть на какой-либо стиль, мастер предложит в качестве примера этого стиля изображение в увеличительном стекле. Третий этап показан на рис. 4.23.

Рис. 4.23

Чтобы перейти к следующему шагу, нажимаем Next>.

Разметка показана на рис. 4.24.

Рис. 4.24

Когда Вы зададите число столбцов или выберете опцию разметки, мастер проиллюстрирует выбранный вариант изображением в увеличительном стекле. Также при помощи поля Orientation можно выбрать ориентацию листа: книжную или альбомную. Чтобы перейти к следующему шагу, нажимаем Next>.

Пропустить пятый этап (рис. 4.25), выбрав в выпадающем меню Step 6 - Finish или нажав два раза кнопку Next>.

Рис. 4.25

Завершение.

Если все выбранные Вами поля нельзя разместить в одной строке отчета, они переносятся на следующую строку. Если Вы не хотите переносить поля, сбросьте переключатель Wrap Fields That Do Not Fit. Шестой этап показан на рис. 4.26.

Рис. 4.26

Нажимаем Finish, после чего появится окно, в котором необходимо сохранить созданный отчёт. Окно Сохранить как... приведено на Рис. 4.27.

Рис. 4.27

Файлы отчётов имеют расширение *.FRX, *.FRN.

Окно Диспетчера проектов показано на рис. 4.28.

Рис. 4.28

Предварительный просмотр осуществляется в Диспетчере проекта нажатием Preview (рис. 4.29).

Рис. 4.29

Для модификации выделяем отчёт в Диспетчере проекта и нажимаем Modify.

Окно Report Designer, в котором можно редактировать отчёт, показано на рис. 4.30.

Рис. 4.30

Окно Конструктора отчёта имеет следующие полосы (зоны), составляющие отчёт:

- Title - заголовок отчета - обычно здесь вводится текущая дата.

- Page Header - верхний заголовок каждой страницы.

- Group Header - верхний заголовок каждой группы данных.

- Detail - поля каждой записи таблицы

- Group Footer - нижний заголовок каждой группы.

- Page Footer - нижний заголовок каждой страницы.

- Summary - итоговые данные.

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

В отчёт в качестве эмблемы можно поместить рисунок или фотографию. Для этого на панели Report Controls, которая приведена на рис. 4.31, выберите элемент Picture/OLE Bound Control. Установите курсор в нужном месте отчёта и обозначьте рамкой размер кадра рисунка, протянув диагональ прямоугольника при нажатой левой кнопке мыши. При отпускании кнопки мыши отображается диалоговое окно Picture/OLE Bound Properties, показанное на Рис. 4.32, которое также открывается при двойном щелчке на уже существующем рисунке. Рисунок из файла должен быть с расширением .bmp, .ani, .jpg, .jpeg, .gfa, .gif, .tif, .tiff, .exif, .png, .wmf, .emf или .cur .

Рис. 4.31

Рис. 4.32

После нажатия появляется окно, показанное на рис. 4.33, в котором необходимо выбрать рисунок.

Рис. 4.33

Окно Report Designer после выбора рисунка принимает вид, показанный на рис. 4.34.

Рис. 4.34

При отсутствии панели Report Controls её можно запустить, как это показано на рис. 4.35 (Viev=>Report Control Toolbar).

Рис.4.35

Вывод на печать отчёта производится командой Report. Её формат:

REPORT FORM < имя файла > ТО PRINTER [PROMPT]

PREVIEW | TO FILE < имя файла >]

Пример созданного и отредактированного отчёта представлен на рис. 4.36.

Рис.4.36