CurrentData 和 CurrentProject 对象-金宇
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> 综合其它


CurrentData 和 CurrentProject 对象

发表时间:2008/4/11 8:25:10 评论(0) 浏览(7459)  评论 | 加入收藏 | 复制
   
摘 要:在 Access 中,DAO 不再是默认的与数据和数据所在对象进行交互的编程方法;因此,Access 中出现了两个新对象 — CurrentData 和 CurrentProject,它们含有 AccessObject 对象集合,代替了以前版本中 DAO 提供的 Container 和 Document 对象。
正 文:

在过去的 Microsoft® Access 版本中,可利用数据访问对象 (DAO) 以及它们的方法和属性来获得有关窗体、报表、宏、表、字段、关系和查询的信息。例如,可用 Document 对象来获得有关数据库中表和查询的信息。此外还有专门的 Container 对象,可分别代表窗体、报表、脚本(Access 宏)、表(表和查询)和模块。这些 Container对象每个都包含一个 Document 对象集合,代表当前数据库中所有指定类型的对象。每个 Document 对象中只含有每个对象的概要信息,不能通过它来访问对象的属性和所含的数据。利用 DAO Recordset 对象可处理表或查询中的数据,利用 Forms 或 Reports 集合中的成员可处理窗体和报表本身。

而在 Access 中,DAO 不再是默认的与数据和数据所在对象进行交互的编程方法;因此,Access 中出现了两个新对象 — CurrentData 和 CurrentProject,它们含有 AccessObject 对象集合,代替了以前版本中 DAO 提供的 Container 和 Document 对象。

Access 用 CurrentData 对象来存储由数据库引擎管理的 AccessObject 对象集合,例如 .mdb 类型数据库中的表和查询,.adp 类型数据库中的数据库关系图、存储过程、表和视图。每个对象集合的相关信息都存储在一个集合中,该集合中的所有对象都被表示为 AccessObject 对象。例如,有关表的信息储存在 AllTables 集合中,而有关视图的信息存储在 AllViews 集合中。访问 CurrentData 对象要使用 Application 对象的 CurrentData 属性。在外接程序或类库数据库中运行代码时,要用 CodeData 对象来引用由外接程序或类库数据库管理的对象。Application 对象的 CodeData 属性可返回 CodeData 对象。

注意   AccessObject 对象中包含存有数据的对象的信息,但不能通过它来访问数据本身。

利用 Application 对象的 CurrentProject 属性可获得数据库中有关 Access 对象的信息,比如数据访问页、窗体、宏、模块和报表。Application 对象的 CurrentProject 属性可返回 CurrentProject 对象,该对象中含有 AccessObject 对象集合以及数据库本身的名称、路径和连接等信息。例如,AllForms 集合中含有数据库中所有窗体的信息,而 AllReports 集合中含有数据库中所有报表的信息。代码在外接程序或类库数据库中运行时,CodeProject 对象中包含了外接程序或类库数据库中的 AccessObject 对象集合。Application 对象的 CodeProject 属性可返回 CodeProject 对象。

AccessObject 对象有以下可用于获取对象信息的属性:IsLoaded、Name、Parent、Properties 和 Type。下表对这些属性进行了说明。

AccessObject 属性 说明
IsLoaded 一个表示当前是否加载了该对象的布尔值。如果该对象在某个视图中被打开,则该属性为 True。
Name 一个表示对象名称的字符串值。
Parent 返回指定对象的父对象。例如,AllForms 集合中,所有项的父对象就是 AllForms 集合对象。CurrentProject 对象的父对象是 Application 对象。
Properties 返回一个 AccessObjectProperties 集合,该集合中包含了所有与某个特定 AccessObject 对象相关的自定义属性。Properties 集合只能存储字符型或长整型值。
Type 是一个长整型值,代表由 acObjectType 固有常量指定的一个对象。
注意   AccessObject 项的集合的索引用 0 代表集合中的第一项,1 代表第二项,以此类推。

下面的示例显示了如何用 IsLoaded 属性来确定当前是否加载了某窗体、报表或数据访问页:

With CurrentProject
   Select Case intObjectType
      Case acForm
         IsObjectOpen = .AllForms(strObjName).IsLoaded
      Case acReport
         IsObjectOpen = .AllReports(strObjName).IsLoaded
      Case acDataAccessPage
         IsObjectOpen = .AllDataAccessPages(strObjName).IsLoaded
      Case Else
         Err.Raise ERR_INVALIDOBJTYPE
   End Select
End With

intObjectType 变量可作为一个 acObjectType 型参数传递给一个过程。

下面的示例说明了如何为窗体添加自定义属性:

Sub AddCustomFormProperty(strFormName As String, _
                         strPropName As String, _
                         varPropValue As Variant)
   ' 本过程演示如何将自定义
   ' 属性添加到与 AccessObject 对象相关的
   ' Properties 集合中。
   
   With CurrentProject.AllForms(strFormName).Properties
      .Add strPropName, varPropValue
   End With
End Sub

Access软件网交流QQ群(群号:198465573)
 
 相关文章
CurrentProject对象成员  【UMVsoft整理  2008/5/30】
Access运行时错误'-2147024770(8007007e)...  【麥田  2012/11/3】
常见问答
技术分类
相关资源
文章搜索
关于作者

金宇

文章分类

文章存档

友情链接