Поделиться через


Свойство 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 и обратная связь.