Помимо визуальных средств установки различных режимов блокировки, вы можете
использовать объект Application для их изменения.
В следующем примере с помощью метода SetOption объекта Application устанавливается
пессимистическая блокировка (блокировка страницы), а с помощью метода GetOption и функции
MSGBOX() выводится номер текущей блокировки.
Public Sub mygetoption()
Dim mystr As String
Application.SetOption "Блокировка по умолчанию", 2
mystr = Application.GetOption("Блокировка по_ умолчанию")
MsgBox (mystr)
End Sub
Для форм, отчетов и запросов вы обращаетесь к свойству RecordLocks, но учтите, что для уже
открытых экземпляров объектов на различных пользовательских машинах свойство не
изменится. То есть, изменив свойство некоего объекта, вам попутно надо убедить пользователя
закрыть и снова открыть объект, для того чтобы он смог воспользоваться всеми преимуществами
нового значения. Пример изменения свойства Recordlocks для запроса:
Public Sub myqueryproperties()
Dim db As DATABASE, qd As QueryDef
Set db = DBEngine.Workspaces(0).Databases(0)
db.QueryDefs("Моя таблица query").Properties("recordLocks") = 2
End Sub
Пример изменения свойства RecordLocks для формы:
Public Sub ActiveFormRecordLocksChange
Screen.ActiveForm.RecordLocks = 2
End Sub
Учтите, что, как правило, во время работы формы изменять это свойство нет смысла, так как
несмотря на то, что вы его установите, форма будет использовать блокировку прежнего типа.
Поэтому рекомендуем следующую последовательность действий для конкретного
использования данной процедуры:
1. Создайте функцию, которая будет содержать одну строчку:
ActiveFormRecordLoc1ksChange, то есть вызов процедуры, которая у вас может называться
по-другому.
2. Создайте макрос, выполняющий одно действие RunCode, аргументом которого будет
вызов нашей функции, которая, к примеру, может называться fActiveFormLocksChange.
3. Создайте пользовательскую панель инструментов, в которую необходимо перетащить
графическое изображение макроса из вкладки Макросы.
Выполнив данную последовательность действий, вы получите пользовательскую панель
инструментов с одной кнопкой, которая в режиме Конструктора будет устанавливать для вашей
формы свойство RecordLocks равным значению 2, что соответствует блокировке изменяемой
записи. Проявив фантазию, вы можете дополнить вашу панель инструментов более изощренными
инструментами, но основа технологии их создания описана выше.
Очевидно, что то же самое вы можете проделать и для отчетов.
Для того чтобы вы были уверены, что все операции, которые вы хотите провести, были
выполнены, используйте методы BeginTrans, CommitTrans и RollBack объекта Workspace.
Метод BeginTrans начинает транзакцию. Под транзакцией подразумевается серия изменений,
которые проводятся над данными и структурой базы данных. Если по какой-либо причине
операции, входящие в текущую транзакцию, не могут быть завершены, то система возвращается
в исходное состояние. При этом помните, что на рабочей станции должно быть достаточно места
на диске, так как при выполнении транзакции вся информация об операциях в нее входящих
заносится на диск.
Транзакции должны завершаться с помощью обращения к методу CommitTrans. Транзакции
могут быть вложенными, не забывайте, что для того, чтобы завершить транзакцию более
высокого уровня, вначале необходимо завершить вложенные транзакции. Если по каким-либо
причинам приложение не сможет обратиться к методу CommitTrans, то система вернется в
первоначальное состояние.
Количество вложенных транзакций в Access, так же как и в Visual FoxPro, не может превышать
пяти. При этом обратите внимание на следующий факт. Метод CommitTrans для текущего объекта
Workspaces делает все изменения необратимыми. В то же время, если транзакция вложенная, то
converted to PDF by HupBaH9I