Блокировка записи в vba - PullRequest
0 голосов
/ 31 июля 2009

у меня есть приложение VBA, которое разбито на два для внешнего интерфейса; а бэкэнд при обновлении как запретить двум пользователям его редактировать ??

Ответы [ 2 ]

1 голос
/ 31 июля 2009

Доступ имеет блокировку. Из справки Access:

Укажите уровень блокировки, используемый в базе данных Access в многопользовательской среде

В меню Сервис выберите Параметры.

Перейдите на вкладку «Дополнительно».

Чтобы сделать блокировку на уровне записи новой настройка по умолчанию для текущего База данных Microsoft Access, выберите Открывать базы данных на уровне записей флажок блокировки.
Сделать на уровне страницы блокировка новой настройки по умолчанию для текущая база данных Access, очистите Открывать базы данных, используя уровень записи Флажок блокировки.

Примечания

Эта настройка происходит в следующий раз вы открываете базу данных Access, но вы необходимо использовать команду Открыть в файле меню, а не список большинства недавно использованные файлы в конце Файловое меню. Такое поведение одинаково в качестве настройки для открытия по умолчанию режим.

Если вы выберете Открыть базы данных, используя блокировка уровня записи, это становится поведение по умолчанию для доступа к данным через форму, таблицу данных и код который использует объект набора записей для цикла через записи, но не через запросы действий, ни через код, который выполняет массовые операции с использованием SQL заявления. Для получения дополнительной информации см. Глава 16, «Многопользовательская база данных» Приложения »в Microsoft Office 2000 / Руководство программиста Visual Basic.

0 голосов
/ 31 июля 2009

Yoy может попытаться вызвать пессимистическую блокировку

Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset

Set cnn = New ADODB.Connection
cnn.ConnectionString = " Provider=sqloledb;" & _
    "Data Source=(local);Initial Catalog=pubs;uid=sa;pwd="
cnn.Open

Set rst = New ADODB.Recordset
rst.ActiveConnection = cnn
rst.CursorType = adOpenKeyset
rst.LockType = adLockPessimistic 'Invoke Pessimistic Locking
rst.CursorLocation = adUseServer
rst.Open "Select * from Table Where ID ='" _
    & strID & "'", _
    Options:=adCmdText

rst!Name = "New name" 'Lock occurs here

'... when it is locked, you may do other operations

rst.Update 'Lock Released Here

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

Однако пессимистическая блокировка - не лучший сценарий, я бы подумал об оптимистической блокировке и стратегии First Wins или Last Wins

Вот электронная книга Элисон Балтер осваивает разработку Microsoft Access 2000 , она должна вам помочь.

...