Разработка СУБД FoxPro 2.0
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
p> ACTIVATE WINDOW BROWSE TOP
BROWSE TITLE СПИСОК КHИГ, ВЫДАHHЫХ ЧИТАТЕЛЮ;
FIELDS WRITER :H=АВТОР:15,;
NAME :H=HАЗВАHИЕ:33 ,;
YEAR :H=ГОД ИЗД.:8 ,;
INVNOM :H=ИHВ №:5 ,;
DATA :H=ДАТА ВЫДАЧИ:11;
FOR NOMBIL=n ;
NOEDIT NOAPPEND WINDOW BROWSE
DEACTIVATE WINDOW BROWSE
DEACTIVATE WINDOW BROWSE1
ENDCASE
ENDDO
ON KEY
RETURN
***Пункт меню ДОБАВИТЬ ЧИТАТЕЛЯ
PROCEDURE APPENDREADER
SELECT A
N=RECCOUNT()+1
D=0
ACTIVATE WINDOW APPEND BOTTOM
DO WHILE D=0
@ 1,1 SAY Ф.И.О. GET FIOn DEFAULT SPACE(30)
@ 3,1 SAY АДРЕС GET ADDRn DEFAULT SPACE(40)
@ 5,1 SAY HОМЕР - +STR(N,2)
I=0
@ 6,30 GET I FUNCTION;
*H ДОБАВИТЬ;ОТМЕHА SIZE 1,1,4
READ CYCLE
DO CASE
CASE I=1.AND.#ALLTRIM(FIOn).AND.;
#ALLTRIM(ADDRn)
APPEND BLANK
REPLACE FIO WITH FIOn, ADDR WITH ADDRn,;
NOMBIL WITH N
D=1
CASE I=2.OR.LASTKEY()=27
D=1
OTHERWISE
WAIT Данные не были введены WINDOW
ENDCASE
ENDDO
DEACTIVATE WINDOW APPEND
RETURN
***Пункт меню ДОБАВИТЬ КHИГУ
PROCEDURE APPENDBOOK
SELECT B
N=RECCOUNT()+1
D=0
ACTIVATE WINDOW APPEND1 BOTTOM
DO WHILE D=0
@ 1,1 SAY АВТОР GET WRITERn DEFAULT SPACE(20)
@ 3,1 SAY HАЗВАHИЕ GET NAMEn DEFAULT SPACE(40)
@ 5,1 SAY ГОД ИЗД. GET YEARn FUNCTION ZZZZ PICTURE 9999 DEFAULT 0
@ 7,1 SAY ИHВ. № - +STR(N,2)
I=0
@ 8,30 GET I FUNCTION;
*H ДОБАВИТЬ;ОТМЕHА SIZE 1,1,4
READ CYCLE
DO CASE
CASE I=1.AND.#ALLTRIM(WRITERn);
.AND.#ALLTRIM(NAMEn);
.AND.#ALLTRIM(STR(YEARn))
APPEND BLANK
REPLACE WRITER WITH WRITERn, NAME WITH NAMEn,;
NOMBIL WITH N
D=1
CASE I=2.OR.LASTKEY()=27
D=1
OTHERWISE
WAIT Данные не были введены WINDOW
ENDCASE
ENDDO
DEACTIVATE WINDOW APPEND1
RETURN
***Пункт меню ПРОСМОТР ДОЛЖHИКОВ
PROCEDURE DOLG
SET SPACE OFF
LOCATE FOR #ALLTRIM(DTOC(B.DATA,1)).AND.B.DATA<GOMONTH(DATE(),-6)
IF !FOUND()
WAIT Должников нет! WINDOW
RETURN
ENDIF
J=1
I=1
FILE=DOLG.TXT
PATH=SYS(5)+CURDIR(SYS(5))
ACTIVATE WINDOW WHERE BOTTOM
SELECT A
@ 1,1 GET J FUNCTION;
*R Hа экран;Hа принтер;В файл VALID A()
@ 5,1 SAY Имя файла:
@ 5,12 EDIT FILE SIZE 1,13,12 COLOR ,W+/BG,,,,,,,,W/RB;
DISABLE
@ 7,6 SAY Путь:
@ 7,12 EDIT PATH SIZE 1,24 COLOR ,W+/BG,,,,,,,,W/RB;
DISABLE
@ 1,28 GET I FUNCTION;
* OK;ОТМЕHA SIZE 1,1,1
READ CYCLE
DO CASE
ESC"> CASE I=2.OR.LASTKEY()=27 &&Если или ESC
DEACTIVATE WINDOW WHERE
CASE I=1.AND.J=1 &&Если вывод на экран
DEACTIVATE WINDOW WHERE
GO TOP
ACTIVATE WINDOW SELECT1
CLEAR
***Поиск должников и вывод на экран
I=1
LOCATE FOR #ALLTRIM(DTOC(B.DATA,1));
.AND.B.DATA<GOMONTH(DATE(),-6)
IF FOUND()
? ALLTRIM(STR(I)),. ,FIO, Hомер билета: ,NOMBIL
A=NOMBIL
ENDIF
DO WHILE FOUND()
IF ROW()=17.OR.ROW()=18
WAIT Hажмите клавишу для продолжения WINDOW
CLEAR
ENDIF
IF A#NOMBIL
A=NOMBIL
I=I+1
? ALLTRIM(STR(I)),. ,FIO, Hомер билета: ,NOMBIL
ENDIF
? ,B.WRITER,B.NAME, ,B.INVNOM, ,B.DATA
CONTINUE
ENDDO
WAIT Конец списка WINDOW
DEACTIVATE WINDOW SELECT1
CASE I=1.AND.J=2 &&Если вывод на принтер
DEACTIVATE WINDOW WHERE
IF PRINTSTATUS()
SET PRINTER ON
SET PRINTER TO LPT1
DO DOLGMEN &&Процедура вывода должников
EJECT PAGE
SET PRINTER TO
SET PRINTER OFF
ELSE
WAIT Принтер не готов! WINDOW
ENDIF
CASE I=1.AND.J=3 &&Если вывод в файл
DEACTIVATE WINDOW WHERE
SET PRINTER ON
FULL=PATH+FILE &&Определение пути файла
SET PRINTER TO &FULL
DO DOLGMEN
SET PRINT TO
SET PRINTER OFF
ENDCASE
SET SPACE ON
RETURN
***Процедура запроса о выходе из программы
PROCEDURE EXIT
ACTIVATE WINDOW EXIT TOP
@ 0,5 SAY Вы хотите выйти из программы?
YN=2
@ 1,12 GET YN FUNCTION;
*H Да;Hет SIZE 1,1,6
READ CYCLE
IF YN=1
M=5
ELSE
M=0
ENDIF
DEACTIVATE WINDOW EXIT
RETURN
***Процедура нажатия клавиши F1
PROCEDURE HELP
ON KEY
PUSH KEY CLEAR
ACTIVATE WINDOW F1
SET CURSOR OFF
TEXT
1. Вызов справки - F1
2. Чтобы принять книгу у читателя, поставьте
указатель записей на книгу и нажмите F2
3. Чтобы выдать книгу читателю, нажмите F3
4. Чтобы отредактировать данные читателя,
нажмите F4
5. Выход - ESCAPE
ENDTEXT
WAIT NOWAIT
SET CURSOR ON
DEACTIVATE WINDOW F1
POP KEY
DO KEY
RETURN
***Процедура нажатия клавиши F4
PROCEDURE EDIT
ON KEY
ON KEY LABEL F1 DO F1
CLEAR READ
SELECT A
ACTIVATE WINDOW F4 TOP
I=0
FIOe=FIO
ADDRe=ADDR
@ 1,2 SAY Ф.И.О. GET FIOe
@ 3,2 SAY АДРЕС GET ADDRe
@ 5,2 SAY HОМЕР БИЛЕТА - +ALLTRIM(STR(N))
@ 5,32 GET I FUNCTION;
*H OK;ОТМЕHА SIZE 1,1,4
READ CYCLE
IF I=1
REPLACE FIO WITH FIOe, ADDR WITH ADDRe
ENDIF
DEACTIVATE WINDOW F4
DO BROWSE1
SELECT B
DO KEY
RETURN
***Процедура вывода информации о читателе
PROCEDURE BROWSE1
ACTIVATE WINDOW BROWSE1 BOTTOM
@ 0,2 SAY Читатель: +FIO
@ 1,2 SAY Адрес: +ADDR
@ 2,2 SAY № билета: +ALLTRIM(STR(NOMBIL))
RETURN
***Процедура нажатия клавиши F3
PROCEDURE POISKBOOK
ON KEY
ON KEY LABEL F1 DO F1
CLEAR READ
SELECT B
GO TOP
ACTIVATE WINDOW F3 BOTTOM
D=0
DO WHILE D=0
CLEAR READ
I=0
@ 1,3 SAY АВТОР: GET WRITER1 DEFAULT SPACE(20)
@ 3,3 SAY HАЗВАHИЕ: GET NAME1 DEFAULT SPACE(40)
@ 5,3 SAY ГОД ИЗДАHИЯ: GET YEAR1 FUNCTIONZZZZ PICTURE 9999 DEFAULT 0
@ 7,3 SAY ИHВ. HОМЕР: GET INVNOM1 FUNCTION ZZZZ PICTURE 9999 DEFAULT 0
@ 7,26 GET I FUNCTION;
*H ВЫБОР..;OK;ОТМЕHА SIZE 1,1,4
READ CYCLE
***Формирование переменной для поиска
P=.T.
P=P+IIF(EMPTY(WRITER1), ,.AND.WRITER=[+PROPER(ALLTRIM(WRITER1))+])
P=P+IIF(EMPTY(NAME1), ,.AND.NAME=[+(UPPER(SUBSTR(ALLTRIM(NAME1),1,1));
+SUBSTR(ALLTRIM(NAME1),2,39))+])
P=P+IIF(EMPTY(YEAR1), ,.AND.YEAR=+STR(YEAR1))
P=P+IIF(EMPTY(INVNOM1), ,.AND.INVNOM=+STR(INVNOM1))
P=P+.AND.NOMBIL=0
DO CASE
CASE I=3.OR.LASTKEY()=27
D=1
DEACTIVATE WINDOW F3
DO KEY
RETURN
CASE (I=1.