Новости



Visual FoxPro 9 позволяет создавать ещё более производительные приложения баз данных.
Двадцатиление FoxPro! Microsoft принимает поздравления.
Visual FoxPro Toolkit for .NET - более 225 функций VFP 7.0, для языков .NET (подробнее)

Функция RLOCK( )

См. также Пример

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

Синтаксис

RLOCK([nWorkArea | cTableAlias]
| [cRecordNumberList, nWorkArea | cTableAlias])

Параметры

nWorkArea | cTableAlias

Задает номер рабочей области или псевдоним для таблицы, открытой в другой ра очей области. Если ни рабочая область, ни псевдоним не заданы, функция RLOCK( ) пытается блокировать текущую запись в таблице, принадлежащей выбранной в данный момент рабочей области.

cRecordNumberList

Указывает, что функция RLOCK( ) пытается блокировать группу записей. Символь ое выражение cRecordNumberList содержит один или несколько разделенных запятыми номеров, обозначающих записи, которые RLOCK( ) пытается блокировать. Например, чтобы блокировать первые чет ре записи в таблице, список cRecordNumberList должен содержать 1, 2, 3, 4.

Чтобы можно было блокировать группу записей, должна действовать установка SET MULTILOCKS ON, а для таблицы, в которой вы пытаетесь блокировать группу записей, необходимо указать номер рабочей области (nWorkArea) или псевдоним (cTableAlias).

Вы также можете блокировать группу записей другим способом: установите указате ь записи у записи, которую вы собираетесь блокировать, выдайте функцию RLOCK( ) или LOCK( ), а затем повторите то же самое для других записей.

В Visual FoxPro можно задать номер записи, равный 0. Это дает возможность б окировать заголовок таблицы.

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

Заголовок таблицы освобождается по команде UNLOCK RECORD 0, UNLOCK или UNLOCK ALL.

Если удалось успешно заблокировать все записи, заданные в списке cRecordNumberList, функция RLOCK( ) возвращает значение "истина" (.T.). Если одна или несколько записей из списка cRecordNumberList не могут быть заблокированы, RLOCK( ) возвращает значение "ложь" (.F.) и ни о на из записей не блокируется. Однако как в том, так и в другом случае все уста овленные до этого блокировки записей сохраняются. Блокировка группы записей п едставляет собой аддитивный процесс fox90001.gif установка блокировки на какие-либо записи не снимает блокировку с других записей.

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

Результат

Логический

Комментарии

Функция RLOCK( ) идентична функции LOCK( ).

Если блокировка успешно установлена, RLOCK( ) возвращает значение "истина" (.T.). Пользователю, установившему блокировку, блокированные записи остаются оступными для чтения и записи; всем остальным пользователям сети они доступны то ько для чтения.

Выполнение функции RLOCK( ) не гарантирует успешную установку блокировки записей. Нельзя блокировать запись, которую уже заблокировал другой пользователь или которая находится в таблице, блокированной другим пользователем. Если одна или несколько записей не могут быть блокированы по той или иной причине, RLOCK( ) возвращает значение "ложь" (.F.).

По умолчанию функция RLOCK( ) предпринимает только одну попытку заблокировать запись. Установка SET REPROCESS позволяет задать автоматическое повторение б окирования записи, если первая попытка оказывается неудачной. Эта установка опре еляет число попыток блокировки или интервал, в течение которого эти попытки сле ует повторять, если первая попытка оказывается неудачной. Подробнее об команде SET REPROCESS и о блокировании таблиц см. тему SET REPROCESS.

Команда SET MULTILOCKS определяет, можно ли блокировать группу записей в таб ице. Если установка SET MULTILOCKS имеет значение OFF (по умолчанию), вы можете локировать только одну запись в таблице. Если действует SET MULTILOCKS ON, вы можете блокировать сразу несколько записей в таблице. Подробнее см. тему SET MULTILOCKS.

Снять блокировку с табличной записи может только пользователь, установивший ту блокировку. Освободить запись можно командой UNLOCK, закрыв таблицу или выйдя из Visual FoxPro.

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

При переключении установки SET MULTILOCKS со значения ON на OFF, или наоборот, неявно выполняется команда UNLOCK ALL fox90001.gif снимается блокировка со всех записей во всех рабочих областях.

Таблицы можно закрывать с помощью команд USE, CLEAR ALL или CLOSE DATABASES.

Подробнее о блокировке записей и файлов и о совместном использовании таблиц в сети см. в главу 19 "Программирование совместного доступа к данным" Руководства разработчика.



Новое на сайте

  • Обновлен портфель программиста

    Добавлены: Установка HTML Help (Создание справочной системы), Imagedit.zip - Графический редактор ( ico и bmp), Библиотека локализации HTML Help (Русский)
  • Новые примеры программ

    Установка библиотек, Игровая программа "Охота на лис", Установка библиотек "Охота на лис", plastic -"Платежки", Библиотеки (на FPD26), platan -"Платежки" (на Clipper 5.2)
  • Обновленна справка

    Подсказки, технология программирования и использование Visual FoxPro. Команды, функции, операторы, объекты, свойства, события и методы.