MyTetra Share
Делитесь знаниями!
Блокировка (монопольное открытие) таблицы
Время создания: 16.03.2019 23:43
Раздел: !Закладки - VBA - Access - msa.polarcom.ru
Запись: xintrea/mytetra_db_adgaver_new/master/base/1531933162f46ymhyt3x/text.html на raw.githubusercontent.com

Блокировка (монопольное открытие) таблицы

Автор: Дмитрий Сонных sonni-dim@mail.ru

Блокировка на уровне набора записей
   Технология DAO позволяет накладывать блокировку на целую таблицу (или группу таблиц, если объект Recorset основан на объединении нескольких таблиц). Она может понадобиться тогда, когда требуется выполнить некоторые действия со всей таблицей целиком или изменить структуру таблицы, но при этом нежелательно запрещать доступ ко всей базе.

' -----------------------------------------------------------

' Расположение переменной Recordset зависит от области действия

' блокировки таблицы ' секция Declare модуля - для всей задачи

' секция Declare модуля формы - пока открыта форма

' тело процедуры - пока выполняется процедура

Public rst As Recordset

Public db As Database ' база данных

Public strPathDB As String ' путь к базе

' -----------------------------------------------------------

' Помещаем на форме кнопку. Называем её cmdTable

' На событие Click вешаем обработку

Private Sub cmdTable_Click()

' При первом нажатии кнопки устанавливается режим

' блокировки таблицы,

' при повтрном - снимается.

' Переменная strPathDB должна быть уже определена

On Error GoTo Err_cmdTable_Click


' Проверяем инициализацию объекта rst

If rst Is Nothing Then

' Устанавливаем режим монопольного доступа

Set db = OpenDatabase(strPathDB)

Set rst = db.OpenRecordset("имя_таблицы", dbOpenTable, dbDenyWrite + dbDenyRead)

' можете установить какой-либо признак блокировки

' Я лично меняю надпись на кнопке

Else

' Снимаем режим блокировки

rst.Close

Set rst = Nothing

' убирается признак блокировки

End If


Exit_cmdTable_Click:

Exit Sub


Err_cmdTable_Click:

' При попытке заблокировать уже открытую таблицу

' ведается сообщение об ошибке (можно вставить свой обработчик)

MsgBox Err.Description

Resume Exit_cmdTable_Click

End Sub



Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования