全部显示

CurrentProject 对象

         
Application
CurrentProject
多个对象

CurrentProject 对象引用当前 Microsoft Access 项目(.adp)或 Access 数据库(.mdb)的项目

使用 CurrentProject 对象

CurrentProject 对象有好几个集合,每个集合都包含当前数据库中的特定 AccessObject 对象。下表列出了每个集合的名称及其所含对象的类型。

集合 对象类型
AllForms 所有窗体
AllReports 所有报表
AllMacros 所有宏
AllModules 所有模块
AllDataAccessPages 所有数据访问页

注意  上表中的集合包含了数据库中各方面的对象,不管它们是打开还是关闭。

例如,代表窗体的 AccessObject 对象是 AllForms 集合的一个成员,而 AllForms 集合是当前数据库中 AccessObject 对象的一个集合。在 AllForms 集合中,集合的每个成员从零开始编制索引。通过按名称引用窗体或引用其在集合中的索引,可以引用 AllForms 集合中的单个 AccessObject 对象。如果想引用 AllForms 集合中的特定对象,最好按名称引用它,因为项的集合索引可能会变动。如果对象名中包含空格,则必须将名称用方括号([ ])括起来。

语法 示例
AllForms!formname AllForms!OrderForm
AllForms![form name] AllForms![Order Form]
AllForms("formname") AllForms("OrderForm")
AllForms(index) AllForms(0)

下面的示例打印 CurrentProject 对象的一些当前属性设置,然后设置选项以显示应用程序中的隐藏对象:

Sub ApplicationInformation()
    ' 打印当前对象的名称和类型。
    Debug.Print Application.CurrentProject.FullName
    Debug.Print Application.CurrentProject.ProjectType
    ' 设置“选项”对话框“视图”选项卡上“显示”下
    ' 的“隐藏对象”选项。
    Application.SetOption "Show Hidden Objects", True
End Sub

下一个示例显示如何使用“自动化”从另一个 Microsoft Office 应用程序中使用 CurrentProject 对象。首先,从另一个应用程序中创建对 Microsoft Access 的引用,方法是:在“模块”窗口中单击“工具”菜单上的“引用”。选中 Microsoft Access Object Library 旁的复选框。然后在该应用程序的 Visual Basic 模块中输入下列代码,并调用 GetAccessData 过程。

该示例将一个数据库名和报表名传递给一个创建 Application 类的新实例的过程,打开数据库,并使用 CurrentProject 对象和 AllReports 集合验证指定的报表是否存在。

Sub GetAccessData()
' 在模块的声明节中声明对象变量
    Dim appAccess As Access.Application
    Dim strDB As String
    Dim strReportName As String

    strDB = "C:\Program Files\Microsoft "_
        & "Office\Office10\Samples\Northwind.mdb"
    strReportName = InputBox("输入要验证的报表的名称", _
        "报表验证")
    VerifyAccessReport strDB, strReportName
End Sub

Sub VerifyAccessReport(strDB As String, _
     strReportName As String)
    ' 返回对 Microsoft Access
    ' 应用程序对象的引用。
    Set appAccess = New Access.Application
    ' 在 Microsoft Access 中打开数据库。
    appAccess.OpenCurrentDatabase strDB
    ' 验证报表是否存在。
    On Error Goto ErrorHandler
    appAccess.CurrentProject.AllReports(strReportName)
    MsgBox "报表" & strReportName & _
        "经证实确在“罗斯文”数据库中。"
    appAccess.CloseCurrentDatabase
    Set appAccess = Nothing
Exit Sub
ErrorHandler:
    MsgBox "报表" & strReportName & _
        " 不在“罗斯文”数据库中。"
    appAccess.CloseCurrentDatabase
    Set appAccess = Nothing
End Sub