Разработка СУБД FoxPro 2.0


...



DO KEY &&Назначение клавиш
n=RECNO()
CLEAR
@ 16,0 SAY F1-ПОМОЩЬ F2-ПРИHЯТЬ КHИГУ F3-ВЫДАТЬ;
КHИГУ F4-ИЗМЕHИТЬ ДАHHЫЕ ЧИТАТЕЛЯ
DO BROWSE1
SELECT B
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
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
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
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.OR.I=2).AND.P==.T..AND.NOMBIL=0
WAIT Данные не были введены WINDOW
CASE I=1
***Выбор книги из списка книг по введенным данным
GO TOP
X=1
RELEASE H
LOCATE FOR &P
DO WHILE FOUND()
DECLARE H(X)
H(X)=WRITER+NAME+ +;
ALLTRIM(STR(YEAR))+ +;
ALLTRIM(STR(INVNOM))
CONTINUE
X=X+1
ENDDO
J=1
IF X#1
ACTIVATE WINDOW SELECT
@ 9,1 SAY ESC - ОТМЕHА; ENTER - ВЫБОР КHИГИ
@ 0,0 GET J FROM H SIZE 9,75 VALID(B());
COLOR GR/GR,,,,,W+/B,,,W+/B,W+/B
READ CYCLE
DEACTIVATE WINDOW SELECT
IF LASTKEY()#27
WRITER1=SUBSTR(H(J),1,20)
NAME1=SUBSTR(H(J),21,40)
YEAR1=VAL(SUBSTR(H(J),62,4))
INVNOM1=VAL(SUBSTR(H(J),68))
ENDIF
ELSE
WAIT Hет книг для выбора! WINDOW
ENDIF
OTHERWISE
GO TOP
LOCATE FOR &P
IF !FOUND()
P=.T.
WAIT Книга не найдена! WINDOW
ELSE
IF DATA#{}.AND.NOMBIL#0
WAIT Книга уже выдана! WINDOW
ELSE
REPLACE DATA WITH DATE(), NOMBIL WITH n
D=1
ENDIF
ENDIF
ENDCASE
ENDDO
DEACTIVATE WINDOW F3
DO KEY
RETURN
***Процедура нажатия клавиши F2
PROCEDURE DELETE
ON KEY
CLEAR READ
SELECT B
IF NOMBIL=n
ACTIVATE WINDOW EXIT TOP
@ 0,8 SAY Вы хотите принять книгу?
YN=2
@ 1,12 GET YN FUNCTION;
*H Да;Hет SIZE 1,1,6
READ CYCLE
IF YN=1
REPLACE DATA WITH {}, NOMBIL WITH 0
ENDIF
DEACTIVATE WINDOW EXIT
ELSE
WAIT В списке нет книг! WINDOW
ENDIF
DO KEY
RETURN
***Процедура назначения клавиш
PROCEDURE KEY
ON KEY LABEL F1 DO HELP
ON KEY LABEL F2 DO DELETE
ON KEY LABEL F3 DO POISKBOOK
ON KEY LABEL F4 DO EDIT
RETURN
***Процедура вывода информации на печать и в файл
PROCEDURE DOLGMEN
GO TOP
I=1
LOCATE FOR #ALLTRIM(DTOC(B.DATA,1)).AND.B.DATA
IF FOUND()
? ALLTRIM(STR(I)),. ,FIO, Hомер билета: ,NOMBIL
A=NOMBIL
ENDIF
DO WHILE FOUND()
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
***Функция анализа выбора полей в окне вывода должников
FUNCTION A
IF J=3
SHOW GET FILE ENABLE
SHOW GET PATH ENABLE
SHOW GET J,3 DISABLE
ELSE
SHOW GET PATH DISABLE
SHOW GET FILE DISABLE
SHOW GET J,3 ENABLE
ENDIF
RETURN
***Функция распознавания выбора книги из списка книг по введенным данным
FUNCTION B
IF LASTKEY()=13
CLEAR READ
ENDIF
RETURN
***Процедура устранения «глюков» при нажатии клавиши F1
PROCEDURE F1
RETURN





























































скачать dle 11.0фильмы бесплатно
загрузка...

Внимание! Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.