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


Свойство Application.CurrentObjectName (Access)

Используйте свойство CurrentObjectName с объектом Application , чтобы определить имя активного объекта базы данных. Активный объект базы данных — это объект с фокусом или в котором выполняется код. Только для чтения, String.

Синтаксис

expression. CurrentObjectName

выражение: переменная, представляющая объект Application.

Примечания

Для свойства CurrentObjectName Microsoft Access задается строковое выражение, содержащее имя активного объекта.

Следующие условия определяют, какой объект считается активным объектом:

  • Если активный объект является страницей свойств, строкой команд, меню, палитрой или списком полей объекта, свойство CurrentObjectName возвращает имя базового объекта.

  • Если активный объект является всплывающей формой, свойство CurrentObjectName ссылается на саму всплывающую форму, а не на форму, из которой он был открыт.

  • Если активным объектом является окно базы данных, свойство CurrentObjectName возвращает элемент, выбранный в окне Базы данных.

  • Если объект не выбран, свойство CurrentObjectName возвращает строку нулевой длины (" ").

  • Если текущее состояние неоднозначно (активный объект не является таблицей, запросом, формой, отчетом, макросом или модулем), например, если диалоговое окно имеет фокус, свойство CurrentObjectName возвращает имя диалогового окна.

Пример

Используйте это свойство с методом 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 и обратная связь.