Базы данных Visual Foxpro

         

Обнаружение и устранение конфликтов

При совместной работе с базой данных возможны конфликты, когда один или более пользователей пытаются заблокировать уже заблокированную другим пользователем запись. Возможны и взаимоблокировки, когда пользователь заблокировал одну запись или таблицу и пытается заблокировать вторую, которая уже заблокирована вторым пользователем. В то же время второй пользователь пытается заблокировать запись, заблокированную первым пользователем. Система буферизации записей и таблиц FoxPro упрощает разработку многопользовательских


приложений и устранение возникающих конфликтов.

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

При использовании буферизации данных в программе обработки ошибок вы можете определить, какие поля были изменены, каким было исходное значение поля и каким оно стало. Для определения изменения поля используется функция GETFLDSTATE (), которая по заданному номеру поля возвращает одно из значений, описанных в табл. 20.6.

Таблица 20.6. Значения, возвращаемые функцией GETFLDSTATE ()

Значение Состояние
1 Значение поля не изменялось
2 Значение поля было изменено или поле было удалено
3 Значение поля во вновь добавленной записи не изменялось
4 Значение поля во вновь добавленной записи было изменено или поле было удалено

Содержание раздела