К пункту 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
Помимо изученных команд, в программе могут использоваться конструкции, характерные для любого языка программирования: переменные, арифметические и логические выражения, операторы цикла, условный оператор и т.д. Каждая команда в программе записывается на отдельной строке.
Имена переменных могут содержать буквы и цифры (начиная с буквы). Любая переменная может иметь следующий тип: символьный, числовой либо логический. Описание типа переменной не требуется.
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'
@ 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'