Свойство Application.CurrentObjectType (Access)
Используйте свойство CurrentObjectType вместе с объектом Application , чтобы определить тип активного объекта базы данных (таблица, запрос, форма, отчет, макрос, модуль, представление сервера, схема базы данных или хранимая процедура). Активный объект базы данных — это объект с фокусом или в котором выполняется код. AcObjectType, доступный только для чтения.
Синтаксис
expression. CurrentObjectType
выражение: переменная, представляющая объект Application.
Примечания
Следующие условия определяют, какой объект считается активным объектом:
Если активный объект является листом свойств, строкой команд, меню, палитрой или списком полей объекта, свойство CurrentObjectType возвращает тип базового объекта.
Если активный объект является всплывающей формой, свойство CurrentObjectType ссылается на саму всплывающую форму, а не на форму, из которой он был открыт.
Если активным объектом является окно базы данных, свойство CurrentObjectType возвращает элемент, выбранный в окне База данных.
Если объект не выбран, свойство CurrentObjectType возвращает значение True.
Если текущее состояние неоднозначно (активный объект не является таблицей, запросом, формой, отчетом, макросом или модулем), например, если диалоговое окно имеет фокус, свойство CurrentObjectType возвращает значение True.
Используйте это свойство с методом SysCmd для определения активного объекта и его состояния (например, если объект открыт, новый или был изменен, но не сохранен).
Пример
В следующем примере свойства CurrentObjectType и CurrentObjectName с функцией SysCmd используются для определения того, является ли активный объект формой Products и открыта ли эта форма и изменена, но не сохранена. Если эти условия выполняются, форма сохраняется, а затем закрывается.
Public Sub CheckProducts()
Dim intState As Integer
Dim intCurrentType As Integer
Dim strCurrentName As String
intCurrentType = Application.CurrentObjectType
strCurrentName = Application.CurrentObjectName
If intCurrentType = acForm And strCurrentName = "Products" Then
intState = SysCmd(acSysCmdGetObjectState, intCurrentType, _
strCurrentName)
' Products form changed but not saved.
If intState = acObjStateDirty + acObjStateOpen Then
' Close Products form and save changes.
DoCmd.Close intCurrentType, strCurrentName, acSaveYes
End If
End If
End Sub
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.