Вы можете разрешить буфферизацию записи или таблицы для защиты данных во время обновления.

Разрешение буфферизации записи

Разрешите буфферизацию с помощью фукнции CURSORSETPROP( ).

Для разрешения пессимистического блокирования записи в текущей рабочей области

  • Используйте эту функцию и значение:

      CopyCode imageСкопировать код
    CURSORSETPROP("Buffering", 2)

Visual FoxPro попытается заблокировать запись в позиции ее указателя. Если блокировка будет успешной, Visual FoxPro помещает запись в буффер и разрешает ее редактирование. Когда вы сместите указатель записи или используете функцию TABLEUPDATE( ), Visual FoxPro запишет буфферированную запись в оригинальную таблицу.

Для разрешения оптимистического блокирования записи в текущей рабочей области

  • Используйте эту функцию и значение:

      CopyCode imageСкопировать код
    CURSORSETPROP("Buffering", 3) 

Visual FoxPro запишет запись в позиции указателя в буффер и разрешит редактирование. Когда вы сместите указатель записи или используете функцию TABLEUPDATE( ), Visual FoxPro попытается заблокировать запись. Если блокировка будет успешной, Visual FoxPro сравнит текущее значение записи на диске с с оригинальным значением в буффере. Если эти значения одинаковые, то будет произведена запись в таблицу измененных данных; если же эти записи различаются, то есть кто-то другой уже изменил редактируемую пользователем запись, то Visual FoxPro сгенерирует ошибку.

Разрешение буфферирования таблицы

Разрешите буфферирование таблицы с помощью функции CURSORSETPROP().

Для разрешения пессимистического блокирования записей в текущей рабочей области

  • Используйте эту функцию и значение:

      CopyCode imageСкопировать код
    CURSORSETPROP("Buffering", 4) 

Visual FoxPro попытается заблокировать запись в позиции указателя. Если блокировка была успешной, Visual FoxPro поместит запись в буффер и разрешит ее редактирование. Используйте функцию TABLEUPDATE( ) для записи буфферированных записей в оригинальную таблицу.

Для разрешения оптимистического блокирования множества записей в текущей рабочей области

  • Используйте эту функцию и значение:

      CopyCode imageСкопировать код
    CURSORSETPROP("Buffering", 5)

Visual FoxPro запишет записи в буффер и разрешит редактирования до момента, когда вы используете функцию TABLEUPDATE(). Затем Visual FoxPro произведет приведенную ниже последовательность действий на каждой записи в буффере:

  1. Попытается заблокировать каждую отредактированную запись.

  2. При успешной блокировке, сравнит текущее значение каждой записи на диске с оригинальным значением в буффере..

  3. Запишет редактирование в оригинальную таблицы, если сравнение показывает, что данные на диске не изменялись или что данные на диске равны оригинальному значению в буффере.

  4. Сгенерирует ошибку, если указанные значения различаются.

Когда разрешено табличное буфферирование, Visual FoxPro попытается сделать обновление только после использования функции TABLEUPDATE().

Смотрите также