Принудительно заблокировать объект (запретить его редактирование через интерфейс другим пользователям).
Visual Basic |
---|
Public Sub Lock( _ Optional ByVal newVal As Variant _ ) |
- newVal
- Тип устанавливаемой блокировки .
1. Метод позволяет установить любой тип блокировки; если параметр NewVal опущен, по умолчанию устанавливается тип блокировки tdmLockEdit. Проверить текущее значение можно с помощью свойства ThisObject.Permissions.LockType.
2. Метод Lock приводит к немедленной установке флага ThisObject.Permissions.Locked, выполняя синхронное обновление свойств объекта на сервере и локальном компьютере. Таким образом, информация об установленной блокировке становится немедленно и одновременно "видимой" всем пользователям системы.
3. Вызов метода для объектов, заблокированных любым способом другими пользователями (программно или через интерфейс), приведет к ошибке "Объект заблокирован". Однако для объектов, которые заблокировал сам текущий пользователь, он может вызывать метод неограниченное количество раз.
4. Применение блокировки не гарантирует полную защиту от изменений; например, из внутренних скриптов при обращении через ThisObject у заблокированных объектов может быть изменено описание, файловый состав и др. Поэтому при работе в многопользовательской среде желательно любой код, связанный с редактированием свойств объекта (атрибутов, состава, файлового состава и т.д.), заключать в блоки ThisObject.Lock ..... ThisObject.Unlock:
' Какой-то код...
ThisObject.Update ' Свойства объекта перезачитаны из базы
If ThisObject.Permissions.Locked <> FALSE Then Exit Sub ' Объект кем-то заблокирован
ThisObject.Lock
'..... редактирование свойств объекта......
'Если все команды, разрешенные сейчас для объекта,
'содержат блоки Lock-Unlock, другие пользователи гарантированно
'не смогут внести свои изменения до окончания работы текущего скрипта.
ThisObject.Unlock ThisObject.Permissions.LockType
5. Необходимо не забывать вызывать метод Unlock после каждой установки блокировки, передавая соответствующий тип - тот, который был задан в методе Lock. Проще всего это сделать следующим образом:
Obj.Unlock Obj.Permissions.LockType
6. TDMS_MC TDMS_UEF.
TDMS_ETO