Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Создание форм для редактирования данных в VFP_М...doc
Скачиваний:
0
Добавлен:
06.01.2020
Размер:
970.75 Кб
Скачать

11.5 Кнопка «Удаление/Восстановление»

11.5.1 Программа процедуры

Эта кнопка служит для выхода из режима редактирования справочника. Ей соответствует процедура:

If file ("tmp.dbf") &&Функция возвращает логическое значение .Т., если файл с указанным именем найден.

Delete file tmp.dbf &&Удаляет временный файл

^Обязательно указывать

Endif

Close databases &&3акрывает текущую базу данных и все ее ТБД.

Устанавливает текущий Р0П1.

Use d:\baza\poshk exclusive &&Открывает ТБД poshk в монопольном режиме и помещает файл в РОП1

Locate for DELETED () &&Отыскивается 1-я запись, помеченная для удаления

If found () &&Функция определяет успешность поиска записи для команд CONTINUE, FIND, LOCATE, SEEK. Возвращает логическое значение .F., если нет искомой записи или в указанной РОП нет открытой ТБД. Возвращает логическое значение .Т., если запись найдена.

Pack &&Физически удаляется найденная запись

Endif

Sort to tmp on nomp &&Файл POSHK после удаления 1-й найденной записи (помеченной) сортируется по Nomp. Новому файл присваивается имя tmp.

Close databases

Use d:\baza\poshk exclusive

Delete all &&B файле POSHK помечает все записи для удаления внутри файла

Pack &&Физическое удаление всех помеченных записей в файле POSHK.

Append from tmp &&Переписывает все записи файла tmp, включая помеченные, в файл POSHK

If file ("tmp.Dbf")

Delete file tmp.dbf &&Временный файл; если он создан, удаляется.

Endif

If MESSAGEBOX ("Отсортировать файл?", 4+32+256, "Сортировка по НОМП")=6

*Набор значений кнопок и пиктограмм функции MESSAGEBOX:

*4 - командные кнопки Yes и No

*32 - пиктограмма знака ?

*256 - вторая командная кнопка по умолчанию (No)

*6 - значение, возвращаемое функцией, если выбрана кнопка Yes

sort to tmp on nomp &&Вновь сортируется POSHK. Повторно отсортированный файл с помеченными записями создается опять под именем tmp.

Close databases

Use d:\baza\poshk exclusive

Delete all Pack

Append from tmp

Endif

If MESSAGEBOX ("Завершить редактирование?", 4+32+256, "Завершить") = 6

_screen.AactiveForm.Release

else

_screen.ActiveForm.Refresh()

Endif

Упрощенная редакция кнопки «удалить»

*удалить

IF MESSAGEBOX("Вы действительно хотите удалить ВСЕ записи помеченные на удаление?",4) = 6

PACK

thisform.command1.click

endif

_screen. ActiveForm. Refresh

11.5.2 Описание работы процедуры кнопки Выход

В процедуре производится проверка наличия отметок об удалении записей. Если отметки есть, производится физическое удаление. Затем пользователь получает вопрос: производить ли сортировку файла? При утвердительном ответе основной файл сортируется по номеру поставщика в порядке возрастания и получает имя временного файла tmp. После этого, в основном файле логически удаляются все помеченные записи, затем они удаляются физически и в основной файл из временного переписываются обновленные записи, в том числе и помеченные. Повторное удаление в основном файле сделано для подстраховки.

Пользователь получает следующий вопрос: завершить редактирование? Если пользователь щелкает мышкой на слове ДА, производится выход - экранная форма закрывается. Если же выбирается кнопка НЕТ, производится возврат в режим редактирования.

Такая процедура позволяет сразу же после удаления записей просмотреть справочный файл и удалить последовательно все записи, помеченные для удаления. Только после завершения редактирования окно ЭФВД удаляется из памяти (но не с экрана), в противном случае оно обновляется и снова может редактироваться.