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

Использование таблиц в режиме монопольного доступа

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

Для того, чтобы открыть таблицу для монопольного использования (exclusive)

  • Напечатайте в командном окне команду:

     CopyCode imageСкопировать код
    SET EXCLUSIVE ON
    USE cMyTable

    - или -

  • Напечатайте в командном окне команду:

     CopyCode imageСкопировать код
    USE cMyTable EXCLUSIVE

Перечисленные ниже команды требуют, чтобы таблица была открыта в монопольном режиме:

Visual FoxPro возвратит сообщение об ошибке: "Exclusive open of file is required," если вы попытаетесь выполнить любую из этих команд на таблице, открытой для совместного использования (shared).

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

Использовать таблицы в совместном доступе (Shared Access)

Когда вы открываете таблицу для совместного использования, то одновременно использовать одну и ту же таблицу может множество компьютеров. Когда вы открываете таблицу через интерфейс, вы можете переписать установку ON, используемую по умолчанию командой SET EXCLUSIVE. Вы можете явно открыть таблицу для совместного использования с помощью команд Visual FoxPro.

Для открытия таблицы для совместного использования

  • Напечатайте в командном окне команду :

     CopyCode imageСкопировать код
    SET EXCLUSIVE OFF
    USE cMyTable

    - или -

  • Напечатайте в командном окне команду :

     CopyCode imageСкопировать код
    USE cMyTable SHARED

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

  • Используйте команды, производящие автоматическую блокировку записи или таблицы.

  • Заблокируйте вручную одну или более записей или таблицу целиком с помощью функций блокировки записи или таблицы.

  • Инициируйте буферирование с помощью функции CURSORSETPROP().

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

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

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