可以使用 CurrentObjectType 屬性和 Application 對象確定活動數(shù)據(jù)庫對象的類型(表、查詢、窗體、報表、宏、模塊、數(shù)據(jù)訪問頁、服務(wù)器視圖、數(shù)據(jù)庫圖表或存儲過程)?;顒訑?shù)據(jù)庫對象是獲得了焦點的對象,或者其中的代碼正在執(zhí)行的對象。
CurrentObjectType 屬性由 Microsoft Access 設(shè)置為以下 Microsoft Access 固有常量。
設(shè)置 |
說明 |
acTable (0) |
活動對象為表。 |
acQuery (1) |
活動對象為查詢。 |
acForm (2) |
活動對象為窗體。 |
acReport (3) |
活動對象為報表。 |
acMacro (4) |
活動對象為宏。 |
acModule (5) |
活動對象為模塊。 |
acDataAccessPage (6) |
活動對象為數(shù)據(jù)訪問頁。 |
acServerView (7) |
活動對象為服務(wù)器視圖 |
acDiagram (8) |
活動對象為數(shù)據(jù)庫圖表。 |
acStoredProcedure (9) |
活動對象為存儲過程。 |
下列條件用于確定對象是否為活動對象:
? | 如果活動對象是彈出式窗體,CurrentObjectType 屬性將引用彈出式窗體本身,而不是其下的窗體。 |
? | 如果活動對象是“數(shù)據(jù)庫”窗口,CurrentObjectType 屬性將返回在“數(shù)據(jù)庫”窗口中選取的對象。 |
? | 如果沒有選取任何對象,CurrentObjectType 屬性將返回 True。 |
? | 如果當(dāng)前狀態(tài)比較模糊(活動對象不是表、查詢、窗體、報表、宏或模塊),如一個對話框獲得焦點,則 CurrentObjectType 屬性返回 True。 |
可以將 SysCmd 方法與該屬性一起使用來確定活動對象和它的狀態(tài)(例如,對象是否打開、新建或是已經(jīng)更改但還未保存)。
以下示例使用 SysCmd 函數(shù)、CurrentObjectType 和 CurrentObjectName 屬性來確定活動對象是否為“產(chǎn)品”窗體,以及此窗體是否打開而且已經(jīng)更改,只是沒有保存。如果這些條件為真,則窗體將被保存然后關(guān)閉。
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