Кнопка записать
* Проверка введенных значений IF cFlat.Flat=0
=МЕ88АОЕБОХ(,Вы забыли ввести номер квартиры!',48,'Ошибка!') ThisForm.PageFrame1.Page2.txtFlat.Setfocus RETURN ENDIF
IF cFlat.SquareFlat=0
=MESSAGEBOX(,Вы забыли про общую площадь!',48,'Ошибка!')
ThisForm.PageFrame1.Page2.txtSquareFlat.Setfocus
RETURN
ENDIF
IF cFlat.Account=0
=MESSAGEBOX('Введите номер лицевого счета',48,'Ошибка!')
ThisForm.PageFrame1.Page2.txtAccount.Setfocus
RETURN
ENDIF DO CASE
CASE IndFlat=1
* Добавление новой квартиры
* Есть ли уже квартира с таким номером IF .NOT. USED ('Flat')
USE Flat ENDIF
SELECT Flat
SET ORDER TO TAG FlatID
SEEK STR(SelectStreetAddress)+SelectHouseAddress+;
STR(cFlat.Flat)
IF FOUND()
=MESSAGEBOX('Квартира с таким номером уже есть!',;
48,'Ошибка!')
SELECT cFlat
ThisForm.PageFrame1.Page2.txtFlat.Setfocus
RETURN
ENDIF
SET DELETED OFF
SEEK STR(SelectStreetAddress)+SelectHouseAddress+;
STR(cFlat.Flat)
SET DELETED ON IF FOUND()
=MESSAGEBOX('Квартира с таким номером уже есть среди ' + ; 'удаленных!',48,'Ошибка!')
SELECT cFLAT
ThisForm.PageFrame1.Page2.txtFlat.Setfocus
RETURN
ENDIF
* Есть ли уже квартира с таким лицевым счетом IF .NOT. USED ('Flat')
USE Flat ENDIF
SELECT Flat
SET ORDER TO TAG Account SEEK cFlat.Account IF FOUND()
=MESSAGEBOX('Квартира с таким номером счета уже есть!',;
48,'Ошибка!')
SELECT cFlat
ThisForm.PageFrame1.Page2.txtAccount.Setfocus
RETURN
ENDIF
SELECT cFlat
lnMsgResult=MESSAGEBOX('Сейчас данные о новой квартире ' + ;
'будут записаны в базу.',52,'Подтвердите!')
IF lnMsgResult=6 && Кнопка Да
SELECT cFlat SCATTER MEMO MEMVAR M.Street=SelectStreetAddress M.House=SelectHouseAddress
* Запись в основную базу IF .NOT. USED ('Flat')
USE Flat IN 0 ENDIF
SELECT Flat APPEND BLANK GATHER MEMO MEMVAR THISFORM.Release ENDIF CASE IndFlat=2
* Редактирование квартиры
lnMsgResult=MESSAGEBOX('Сейчас результаты корректировки '+;
'будут записаны на диск.',52,'Подтвердите!')
IF lnMsgResult=6 SELECT cFlat SCATTER MEMO MEMVAR
* Корректировка в основной базе IF .NOT. USED ('Flat')
USE Flat IN 0
ENDIF
SELECT Flat
SET ORDER TO TAG FlatID
SEEK STR(SelectStreetAddress)+SelectHouseAddress+;
STR(cFlat.Flat)
IF FOUND()
GATHER MEMO MEMVAR
ELSE
=MESSAGEBOX('Нет доступа к таблице квартир, '+;
' или в таблице отсутствует квартира, '+;
' данные которой Вы редактировали.';
,48,'А вот Вам и проблема!')
ENDIF
SELECT cFlat THISFORM.Release
ENDIF
ENDCASE
Код события Click кнопки Удалить второй страницы формы Flat:
*- Кнопка Удалить
lnMsgResult=MESSAGEBOX('Подтвердите!',52,'Удаление!')
IF lnMsgResult=6
* Удаление в основной базе IF .NOT. USED ('Flat')
USE Flat IN 0 ENDIF
SELECT Flat
* Индексированный поиск SET ORDER TO TAG FlatID
SEEK STR(SelectStreetAddress)+SelectHouseAddress+;
STR(cFlat.Flat)
IF FOUND()
DELETE && Удаление
ELSE
=MESSAGEBOX('Нет доступа к таблице квартир, '+;
' или в таблице отсутствует квартира, '+;
'данные которой Вы хотите удалить.';
,48,'А вот Вам и проблема!')
ENDIF
THISFORM.Release
ENDIF
Код события Click кнопки Жильцы второй страницы формы Flat:
*- Кнопка Жильцы
* Номер выбранной квартиры SelectFlat=cFlat.Flat
* Остальные параметры адреса смотри:
* событие Activate второй страницы формы Building
* SelectStreetAddress - номер улицы
* SelectHouseAddress - номер дома SELECT * FROM Owners;
WHERE Street=SelectStreetAddress;
AND House=SelectHouseAddress;
AND Flat=SelectFlat;
INTO TABLE 'C:\WINNT\TEMP\cOwners.dbf';
ORDER BY Number SELECT cOwners DO FORM Owners
Код события Click кнопки Счет второй страницы формы Flat:
*- Кнопка Счет
* Номер выбранного лицевого счета SelectAccount=cFlat.Account
SELECT * FROM Account;
WHERE Account=SelectAccount;
INTO TABLE ’C:\WINNT\TEMP\cAccount.dbf' SELECT cAccount DO FORM Account
4.3.8. Форма Account - лицевой счет
Отличительная особенность формы (рис. 4.27) заключается в работе с таблицей, содержащей одну единственную запись. Если выполняется за-ведение лицевого счета, то эта запись - с пустыми полями. За выбор ре¬жима работы формы отвечает код события Load.
PUBLIC IndAccount
* Работа с таблицей-выборкой SELECT cAccount IF RECCOUNT()=0
* Если запись в таблице отсутствует
* Заведение лицевого счета
IndAccount=1 && Признак создания счета
SCATTER MEMO MEMVAR M.Account=SelectAccount APPEND BLANK GATHER MEMO MEMVAR ELSE
* Корректировка лицевого счета
IndAccount=2 && Признак корректировки
ENDIF
Работа с изображениями в этой форме выполнена по каноническим принципам Visual FoxPro. Фотографии не хранятся в отдельных файлах, как мы делали это ранее, а заносятся в поле General. Если быть более точным, то в поле General хранятся ссылки на место фотографии в файле cAccount.fpt. В этом же файле хранятся поля Memo. У нашей таблицы это поле pasport.
Откройте таблицу cAccount в окне просмотра Browse. Для этого в ко¬мандном окне Command наберите:
USE c:\winnt\temp\caccount.dbf EXCLUSIVE BROWSE
На экране дисплея появится окно Browse (рис. 4.28).
4.4. Создание процедур и форм поддержки
* Картинку на экран и в файл C:\WINNT\TEMP\Picture.jpg
_SCREEN.PICTURE=THISFORM.IMAGE1.PICTURE
FilePicture=THISFORM.IMAGE1.PICTURE
COPY FILE &FilePicture TO C:\WINNT\TEMP\Picture.jpg ENDIF
* Форму перерисовать THISFORM.Release
5. СОЗДАНИЕ ОТЧЕТОВ
Опубликовал vovan666
May 18 2013 08:17:30 ·
0 Комментариев ·
4120 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.