Запуск формы для работы с квартирами DO FORM Flat
4.3.6. Занесение нового здания
Новостройки и здания, переданные на баланс предприятия, находятся в ведении специального подразделения. С целью защиты информации от несанкционированного доступа, функции работы со зданиями в проекте Real Estate разделены на две группы: занесение нового здания и коррек¬тировка информации по уже существующим. Если вы ищите бесплатные обьявления о купле продаже б/у техники то зайдите сюда: http://avitopoisk.ru/.
Для занесения нового здания предназначена форма AddBuild (рис. 4.24). Это одностраничная форма на основе класса Building. В окружении данных этой формы только справочники Street, District и Wall. Таблица-выборка соз¬дается с одной пустой записью при наступлении события Load (загрузка фор¬мы). Буферизация не используется. При закрытии формы выборка удаляется.
Рис. 4.24. Форма AddBuild в конструкторе форм Код события Load формы AddBuild:
* Если в папке C:\WINNT\TEMP\ остались файлы-выборки
* Закрыть таблицу, если она открыта IF USED ('cBuilding')
USE IN cBuilding ENDIF
* Удаление таблицы
IF FILE (’C:\WINNT\TEMP\cBuilding.DBF’)
DELETE FILE ’C:\WINNT\TEMP\cBuilding.DBF’
ENDIF
* Удаление полей Memo
IF FILE (’C:\WINNT\TEMP\cBuilding.FPT’)
DELETE FILE ’C:\WINNT\TEMP\cBuilding.FPT’
ENDIF
* Открываем основную таблицу зданий IF .NOT. USED (’Building’)
USE building IN 0 ENDIF
SELECT Building
* Копируем структуру во временную таблицу-выборку COPY STRUCTURE TO C:\WINNT\TEMP\cBuilding.DBF
* Закрываем основную таблицу USE
* Открываем временную таблицу-выборку IF .NOT. USED (’cBuilding’)
USE ’C:\WINNT\TEMP\cBuilding’ IN 0 ENDIF
SELECT cBuilding
* Добавляем пустую запись APPEND BLANK
Код кнопки Записать формы AddBuild:
*- Кнопка Записать IF cBuilding.Street=0
=MESSAGEBOX('Вы забыли ввести название улицы!',;
48,'Ошибка!') ThisForm.Building1.Combo1.Setfocus RETURN ENDIF
IF LEN(ALLTRIM(cBuilding.House))=0
=MESSAGEBOX('Вы забыли ввести номер дома!',;
48,'Ошибка!') ThisForm.Building1.TxtHouse.Setfocus RETURN ENDIF
* Есть ли уже здание по такому адресу?
IF .NOT. USED ('Building')
USE Building IN 0 ENDIF
SELECT Building
SET ORDER TO TAG ADDRESS
* Индексированный поиск здания в таблице
* cBuilding.Street - номер улицы, на которой стоит здание
* cBuilding.House - номер дома
SEEK STR(cBuilding.Street)+cBuilding.House IF FOUND()
=MESSAGEBOX('Здание по этому адресу уже есть!',;
48,'Ошибка!') ThisForm.Building1.Combo1.Setfocus SELECT cBuilding RETURN ENDIF
SET DELETED OFF
SEEK STR(cBuilding.Street)+cBuilding.House SET DELETED ON IF FOUND()
=MESSAGEBOX('Здание по этому адресу уже есть среди ' + ;
'удаленных! Необходимо выполнить PACK',; 48,'Ошибка!') ThisForm.Building1.Combo1.Setfocus SELECT cBuilding RETURN ENDIF
SELECT cBuilding
IF cBuilding.District=0
=MESSAGEBOX('В каком районе расположено здание?',;
48,'Ошибка!')
ThisForm.Building1.Combo2.Setfocus
RETURN
ENDIF
lnMsgResult=MESSAGEBOX('Сейчас данные о новом здании '+;
'будут записаны в базу.',52,'Подтвердите!')
IF lnMsgResult=6
SELECT cBuilding SCATTER MEMO MEMVAR
* Запись в основную базу IF .NOT. USED ('Building')
USE Building IN 0 ENDIF
SELECT Building APPEND BLANK GATHER MEMO MEMVAR THISFORM.Release ENDIF
Опубликовал vovan666
May 16 2013 06:42:08 ·
0 Комментариев ·
4754 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.