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