Распечатать страницу
Главная \ База готовых работ \ Готовые работы по компьютерным дисциплинам \ Б386 - Microsoft Visual FoxPro - 261 питання \ 221. Команды, используемые при блокировке таблиц и записей в VFP

Команды, используемые при блокировке таблиц и записей в VFP

« Назад

Команда

UNLOCK [RECORD nRecordNumber] [IN nWorkArea | cTableAlias] [ALL]

снимает блокировку записи, группы записей текущей или заданной параметром nWorkArea | cTableAlias таблицы или всех таблиц.

Опции и параметр:

RECORD nRecordNumber – освобождает запись под номером nRecordNumber. Если nRecordNumber = 0, то освобождается заголовок таблицы.

Выполнение UNLOCK RECORD nRecordNumber для заблокированной таблицы приводит к освобождению всей таблицы.

ALL – освобождает все записи и все таблицы во всех рабочих областях.

Пользователь может освободить только записи и таблицы, им заблокированные. Таблица, открытая монопольно, не может быть разблокирована UNLOCK.

Если между таблицами установлена связь (команда SET RELATION), то разблокировка одной таблицы не влечет освобождение другой.

Команда

SET MULTILOCKS ON | OFF

задает (ON) или отменяет (OFF) режим блокировки нескольких записей функцией LOCK( ) или RLOCK( ). По умолчанию действует OFF.

Переключение SET MULTILOCKS из ON в OFF или из OFF в ON неявно выполняет UNLOCK ALL – все заблокированные записи и таблицы во всех рабочих областях освобождаются.

Установка SET MULTILOCKS сохраняется с текущей сессией данных.

SET MULTILOCKS должен быть установлен в ON, перед тем как функцией CURSORSETPROP( ) устанавливается режим буферизации таблицы или ее строки.

Установка флажка Enable Data Buffering в диалоге Work Area Properties, который появляется при нажатии на кнопку Properties окна Data Session, автоматически устанавливает SET MULTILOCKS в ON. Однако сброс этого флажка установку SET MULTILOCKS не меняет.

Команда

SET REPROCESS TO nAttempts [SECONDS] [SYSTEM]
                   | TO AUTOMATIC [SYSTEM]

задает число попыток или интервал, в пределах которого VFP пытается заблокировать файл или его записи после неудачной попытки блокирования.

Опции и параметр:

TO nAttempts – задает число повторных попыток, которые VFP использует для блокировки файла или его записи. Значение по умолчанию – 0. Максимальное значение – 32000.

SECONDS – указывает, что nAttempts – это число секунд, в течение которых VFP пытается заблокировать таблицу или ее запись. Если опция задана, то nAttempts должен быть больше нуля.

Если SET STATUS установлен в ON, то в строке состояний появится сообщение "Waiting for lock...".

Будет выполнена ON ERROR-процедура (или событие ERROR), если она активизирована и все попытки заблокировать таблицу или запись безуспешны. Если ON ERROR-процедура не задана, то появится системное предупреждение, например "Record is in use by another".

Если nAttempts = 0 и выполнена команда или функция, которая пытается заблокировать запись или таблицу, то число попыток, осуществляемых VFP, бесконечно. При этом VFP выводит системное сообщение "Attempting to lock... Press Escape to Cancel" (в графической строке состояния или, если SET STATUS установлен в ON, в WAIT-окне).

Когда блокировка будет выполнена, сообщение исчезнет.

Если в ответ нажата клавиша ESC и блокировку пыталась выполнить функция, то она вернет .F., если – команда, то появится объясняющее сообщение, например "Record is in use by another".

Если же при nAttempts = 0 активна ON ERROR-процедура, то она будет выполнена при дополнительной попытке заблокировать запись или таблицу. VFP более не будет более пытаться установить блокировку и не выведет системного сообщения.

Если nAttempts = –1, то VFP будет пытаться, как и при nAttempts = 0, заблокировать запись или файл бесконечно. Отменить эти действия VFP путем нажатия на ESC или употребления ON ERROR-процедуры невозможно. Если SET STATUS установлен в ON, то при выполнении попыток заблокировать запись или таблицу в строке состояний появится сообщение "Waiting for lock...".

Значение nAttempts = –2 эквивалентно nAttempts = 0.

TO AUTOMATIC – опция эквивалентна заданию nAttempts = 0.

SYSTEM – задает применение установки SET REPROCESS к системной сессии данных, управляющей внутренними таблицами, такими, как FoxUser, SCX-файлы и др.

Установка SET REPROCESS и SET REPROCESS SYSTEM сохраняется с текущей сессией данных.

В файле конфигурации за установку SET REPROCESS для сессии данных по умолчанию отвечает опция REPROCESS, например:

* Опция файла Config.fpw

REPROCESS = 100

Замечание. Изменения, выполненные на вкладке Data диалога Tools-Options, затрагивают только текущую сессию данных.