При открытии в Access связанной формы или набора записей имеется возможность наложения блокировки на соответствующий набор записей. Конечно, эти параметры можно использовать только при работе с Jet, тогда как при использовании конфигурации приложения Access клиент-сервер предполагается установка режима No Locks (отсутствует).
Существует три режима блокировки:
• No Locks (отсутствует) - эквивалентен оптимистической блокировке,
• Edited Records (изменяемой записи) - эквивалентен пессимистической блокировке,
• All Records (всех записей) - блокировка всех записей набора. В многопользовательских приложениях этот режим следует использовать с осторожностью
Определение состояния блокировки
Как отмечалось ранее, фактическая блокировка записи или страницы записей происходит в различное время, а сама блокировка может быть оптимистической либо пессимистической. Кроме того, разные части приложения (или разные приложения) могут использовать различные виды блокировки тех же записей в то же самое время. Поэтому в разные моменты времени будут возникать различные ошибки. Возникающая ошибка зависит от состояния блокировки.
|
|
В ADO существует свойство набора записей LockType, содержащее информацию о применяемом к записям типе блокировки. Это свойство доступно для чтения и записи до момента открытия набора записей, если набор записей уже открыт, оно доступно только для чтения. Значения свойства LockType для Microsoit.Jet.OLEDB.4.0 приводятся в табл. 2. При использовании других поставщиков могут применяться иные константы. Для определения поддерживаемых поставщиком параметров следует использовать метод. Supports с параметрами adUpdate либо adUpdateBatch
Тестирование блокировок
Применяемые к записям блокировки можно протестировать, просмотрев значения свойств LockType и EditMode, но обычно гораздо более важно выяснить тип блокировки, налагаемой другим пользователем на требуемые данные. Единственный способ выполнения поставленной задачи фактически состоит в не- обходимости вызова ошибки конфликта доступа
Использование блокировки страниц
Как уже говорилось, в течение длительного периода в Access не существовало возможности непосредственной блокировки отдельных записей, предоставлялась лишь блокировка целых страниц. Чтобы использовать преимущества более высокой производительности при задействовании страничной блокировки, необходимо отключить установленный по умолчанию параметр блокировки на уровне строк. Для этого следует выполнить команды меню Tools / Options [ Advanced и отключить флажок Open databases with row-level locking (Блокировка записей при открытии базы данных).
|
|
Обработка ошибок блокировки при работе в многопользовательской среде
Любая многопользовательская система должна предвидеть ошибки блокировки. Различные системы обрабатывают возникающие в определенных ситуациях ошибки по-разному. Кроме того, в случаях возникновения ошибок блокировки различные системы предоставляют разработчикам и пользователям неодинаковую информацию. В данном разделе рассматриваются некоторые настройки блокировки и связанные с нею ошибки, с которыми чаще всего приходится сталкиваться при разработке приложений в Access 2000. Здесь также поясняются некоторые технологии предотвращения и обработки этих ошибок.