可以使用 CurrentObjectType 属性和 Application 对象确定活动数据库对象的类型(表、查询、窗体、报表、宏、模块、数据访问页、服务器视图、数据库图表或存储过程)。活动数据库对象是获得了焦点的对象,或者其中的代码正在执行的对象。
CurrentObjectType 属性由 Microsoft Access 设置为以下 Microsoft Access 固有常量。
| 设置 | 说明 | 
|---|---|
| acTable (0) | 活动对象为表。 | 
| acQuery (1) | 活动对象为查询。 | 
| acForm (2) | 活动对象为窗体。 | 
| acReport (3) | 活动对象为报表。 | 
| acMacro (4) | 活动对象为宏。 | 
| acModule (5) | 活动对象为模块。 | 
| acDataAccessPage (6) | 活动对象为数据访问页。 | 
| acServerView (7) | 活动对象为服务器视图 | 
| acDiagram (8) | 活动对象为数据库图表。 | 
| acStoredProcedure (9) | 活动对象为存储过程。 | 
下列条件用于确定对象是否为活动对象:
可以将 SysCmd 方法与该属性一起使用来确定活动对象和它的状态(例如,对象是否打开、新建或是已经更改但还未保存)。
以下示例使用 SysCmd 函数、CurrentObjectType 和 CurrentObjectName 属性来确定活动对象是否为“产品”窗体,以及此窗体是否打开而且已经更改,只是没有保存。如果这些条件为真,则窗体将被保存然后关闭。
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