CLEAR EVENTS && возврат управления в програму start.prg
ELSE
iCount=iCount+1
=MessageBox("Введён неверный пароль. Проверьте клавишу CapsLock и раскладку клавиатуры;
Затем повторите ввод",16)
IF iCount=4 && если количество попыток ввода пароля больше 3 – выход из базы
=MessageBox("Вам отказано в доступе",16)
Release THISFORM
Release cCode,iCount
CLEAR EVENTS
ENDIF
ENDIF
Command2.Click( ): && кнопка выход
Release THISFORM,cCode,iCount
CLEAR EVENTS && при выходе пременная lControl остаётся «ложью»
Form1.Destroy( ):
CLEAR EVENTS && при нажатии на кнопку «крестик» lControl остаётся «ложью»
Если пароль был введён правильно, то вызывается меню, которое позволяет пользователю открывать и закрывать файлы, производить редактирование и просмотр данных в таблицах, вызывать запросы, создавать отчёт и завершать текущий сеанс базы данных или всего VFP.
Рис.3 Общий вид меню
Рис.4 Содержимое пункта меню File
стандартные операции открытия, сохранения и печати файлов.
Пункт Table (рис.5) открывает выбранную таблицу для просмотра или редактирования в окне Browse.
Рис.5 Содержимое пункта меню Тable
При этом используется следующая процедура открытия таблицы:
IF !USED (“имя_таблицы”) && проверяется открыта ли таблица
USE “имя_таблицы” IN 0 && если нет, то открывается в первой свободной рабочей области
ENDIF
SELECT “имя_таблицы”
BROWSE && просмотр таблицы
Опция меню Query (рис.6) осуществляет вызов запроса через форму, вызов формы производится следующим образом:
Public iNumber && номер текущей активной страницы в форме
iNumber=номеру запроса
Рис. 6 Содержимое пункта меню Query
Рис. 7 Общий вид формы запросов
Процедуры обработки событий при вызове формы form_query.scx (на примере одной из закладок):
Text1.Inut ( ):
PUBLIC cPatientName && переменная, хранящая имя пациента
cPatientName="(нет)" && начальная инициализация
THISFORM.Pageframe1.Page1.Text1.Value=cPatientName
Text1.KeyPress( ): && полный аналог, описанного выше события
LPARAMETERS nKeyCode, nShiftAltCtrl
IF nKeyCode ==13
THISFORM.Command1.Click()
ENDIF
Command1.Click( ): && кнопка Просмотр
DO CASE
CASE THISFORM.Pageframe1.ActivePage==1 && выясняем номер активной страницы
cPatientName=UPPER(ALLTRIM(THISFORM.Pageframe1.Page1.Text1.Value)) && убираем все
&& лишние пробелы и переводим буквы к верхнему регистру
do query1.qpr && вызов соответствующего запроса
CASE THISFORM.Pageframe1.ActivePage==2
cMedicName=UPPER(ALLTRIM(THISFORM.Pageframe1.Page2.Text1.Value))
do query2.qpr
CASE THISFORM.Pageframe1.ActivePage==3
cMedicName=UPPER(ALLTRIM(THISFORM.Pageframe1.Page3.Text1.Value))
do query3.qpr
CASE THISFORM.Pageframe1.ActivePage==4
iChamber=THISFORM.Pageframe1.Page4.Spinner1.Value
dCurData=DATE( ) && получаем текущую дату
do query4.qpr
ENDCASE
Command2.Click( ): && кнопка Выход
Release THISFORM, iNumber && уничтожение формы
Рис.8 Общий вид формы отчёта
Готовый отчёт включает в себя следущие поля:
· Код пациента
· Ф.И.О.
· Название лекарства
· Способ приминения
· Дневная доза
· Начало лечения
· Конец лечения
· Палата
· Отделение
· Общее количество израсходованного лекарства
Процедуры обработки событий при вызове формы form_report.scx:
Text1.Inut ( ):
PUBLIC cNamePacient && переменная, хранящая имя пациента
cNamePacient="(нет)" && начальная инициализация
THISFORM.Text1.Value=cNamePacient
Text1.KeyPress ( ):
LPARAMETERS nKeyCode, nShiftAltCtrl
IF nKeyCode=13
THISFORM.Commandgroup1.Command1.Click( ) && вызов предварительного просмотра
ENDIF
CommandGroup1.Command1.Click( ) && кнопка Просмотр
cNamePacient=ALLTRIM(THISFORM.Text1.Value) && удаление лишних пробелов
REPORT FORM report1.frx FOR c_name=cNamePacient PREVIEW && создание отчета с
&&предварительным просмотром
CommandGroup1.Command2.Click( ) && кнопка Печать
cNamePacient=ALLTRIM(THISFORM.Text1.Value)
REPORT FORM report2.frx FOR c_name=cNamePacient TO PRINTER PROMPT && вывод на
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.