При совместной работе с базой данных
возможны конфликты, когда один или более пользователей пытаются заблокировать
уже заблокированную другим пользователем запись. Возможны и взаимоблокировки,
когда пользователь заблокировал одну запись или таблицу и пытается заблокировать
вторую, которая уже заблокирована вторым пользователем. В то же время второй
пользователь пытается заблокировать запись, заблокированную первым пользователем.
Система буферизации записей и таблиц FoxPro упрощает разработку многопользовательских
При попытке заблокировать уже заблокированную запись FoxPro выдает сообщение об ошибке. Для определения возникновения ошибки вы можете воспользоваться функцией TABLEUPDATE (), которая возвращает значение . F. (Ложь) при неудачной попытке сохранения данных. Кроме того, вы можете написать программу обработки ошибок и указать ее в команде ON ERROR. Для определения причины, по которой не удалось записать данные в базу данных, вы можете использовать значения кодов ошибок. Для определения кодов ошибок используется функция ERROR () или AERROR () .
При использовании буферизации данных в программе обработки ошибок вы можете определить, какие поля были изменены, каким было исходное значение поля и каким оно стало. Для определения изменения поля используется функция GETFLDSTATE (), которая по заданному номеру поля возвращает одно из значений, описанных в табл. 20.6.
Таблица 20.6. Значения, возвращаемые функцией GETFLDSTATE ()
Значение | Состояние |
1 | Значение поля не изменялось |
2 | Значение поля было изменено или поле было удалено |
3 | Значение поля во вновь добавленной записи не изменялось |
4 | Значение поля во вновь добавленной записи было изменено или поле было удалено |