CurrentData 和 CurrentProject 对象
时 间:2008-04-11 08:25:10
作 者:金宇整理 ID:43 城市:江阴
摘 要:在 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群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access快速开发平台--对上传...(11.22)
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)
- Access系统自带的日期选择器不...(11.08)