按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
288
… 页面 305…
BeforeRefresh 该事件发生在查询表被刷新数据之前
Private Sub qryTbl_BeforeRefresh(Cancel As Boolean)
Response = MsgBox(〃Are you sure you 〃 _
& 〃 want to refresh now?〃; vbYesNoCancel)
If Response = vbNo Then Cancel = True
End Sub
AfterRefresh 该事件发生在查询完成或者被取消。如果查询成功完成则参
数Success
为True。
Private Sub qryTbl_AfterRefresh(ByVal Success As
Boolean)
If Success Then
MsgBox 〃The data has been refreshed。〃
Else
MsgBox 〃The query failed。〃
End If
End Sub
10。接下来……
在本章中,你获得了便利的事件经验和Excel的事件编程,这是无价的技术,不管你是否
计划给他人创建电子表格应用软件,还 是简单地将你的日常任务自动化。Excel提供了许多你
可以响应的事件。通过编写事件过程,你可以更改对象对事件的响应方式。 你的事件过程可以
简单为一条语句,仅仅显示一自定义信息;也可以复杂到包括一些判断语句和其它允许你改变你
的程序流的编 程结构。当某个事件发生时,VB将会直接运行适当的事件过程,而不是按标准
的内置方式进行响应。 你已经学习了一些编写在标准模块里的事件过程(工作簿,工作表,
图表工作表),然而,其它的(内嵌图表,应用软件,查询 表)则需要你在类模块里面使用
WithEvents关键字创建一个新对象。你也学习了你可以使用EnableEvents属性激活或者禁止事
件。
在下章,你将学习如何使用Excel VB环境下的VBA过程来使用Access数据库。
第十五章 在 Excel里使用 Access
在第九章里面,你已经学习了从Excel里通过自动控制(用于允许一个应用程序控制另外
一个应用程序的对象)来操纵Word和 Outlook。本章将给演示如何编程从Excel里使用Access,
使用下述方法获取Access数据到电子表格里面:Automation,DAO (Data Access Objects)以及
ADO (ActiveX Data Objects)。在你学习如何使用Excel VBA在Access数据库里执行各种任务
以及获取和存 储数据于Access数据库之前,我们来粗略地介绍一下,Microsoft Access用来
编程对其对象访问的数据访问方法。
1。对象库
Access数据库包含各种类型的对象,储存在不同的对象库里面,用来使用VBA语言显示、存
储或者管理数据。在本章,你将涉 猎下面列出的几个库里的对象、属性和方法。
Access 10。0对象库提供了用来显示数据和在Access 2002应用软件上使用的对象。该库储存子
在MSACC10。OLB文件里,并且
可以自阿C:Program FilesMicrosoft OfficeOffice文件夹里面找到。在引用对话框上设置
了对该库的引用之后(将在下节涉及), 你将能够在对象浏览器里面访问该库的对象、属性和
方法(参见图15…1)。
289
… 页面 306…
图15…1 Access库 (译者:截图为Office 2003。Access库文件为MSACC。OLB)
Access DAO 3。6对象库提供了数据访问对象(DAO),让你决定你的数据库的结构和使用VBA操作数据。
该库储存在DAO360。DLL
文件里,并且可以在C:Program Filesmon FilesMicrosoft SharedDAO文件夹里找到。
在引用对话框上设置了对该库的引 用之后(将在下节涉及),你将能够在对象浏览器里面访
问该库的对象、属性和方法(参见图15…2)。
图15…2 DAO库
Microsoft ActiveX Data Objects 2。5 (ADO) 提供了控件数据对象(ADO)并且允许你使用OLE DB
供应者访问和操作数据。ADO
使得在Access数据库里对数据源创建链接,读取,插入,修改和删除数据成为可能。该库储存
于MSADO15。DLL里面,并可以
在C:Program Filesmon Filessystemado文件夹里找到。在引用对话框上设置了对该库
的引用之后,你将能够在对象浏览 器里面访问该库的对象、属性和方法(参见图15…3)。
290
… 页面 307…
图15…3 ADODB库
Microsoft ADO Ext。 2。5 for DDL(动态数据链接) and Security(安全) (ADOX) 储存让你
定义数据库结构和安全的对象。例如, 你可以定义表格,索引和关系,以及创建和修改用户
和用户组帐户。
该库储存在MSADOX。DLL里并且可以在C:Program Filesmon FilesSystemado文件夹里找
到。在引用对话框上设置了对 该库的引用之后,你将能够在对象浏览器里面访问该库的对象、
属性和方法(参见图15…4)。
图15…4 ADOX库
Microsoft Jet and Replication Objects 2。6 库(JRO)包含用于对象库复制的对象。该库储存
在MSJRO。DLL里并在C:Program
Filesmon FilesSystemado文件夹里可以找到。在引用对话框上设置了对该库的引用之
后,你将能够在对象浏览器里面访 问该库的对象、属性和方法(参见图15…5)。
291
… 页面 308…
图15…5 JRO库
VBA对象库提供了很多VBA对象,函数和方法供你访问文件系统,操作日期和时间函数,进行数学
和财务计算,与用户互动,转
换数据和读取文本文件。该库储存在VBE6。DLL文件里,位于C:Program Filesmon
FilesMicrosoft SharedVBAVBA6文件 夹里。当你安装Microsoft Excel 2002时,就会自动
设置对该库的引用。该库在Office 2002所有的应用软件中共享(参见图15…6)。
图15…6 VBA库
2。建立对对象库的引用
要操作Access 2002里的对象的话,首先就得创建对Microsoft Access 10。0对象库的引用。
1。 在VB编辑器窗口,选择工具|引用以打开引用对话框。该对话框列出了你电脑上所有可用的
类型库
2。 在清单上找到Microsoft Access 10。0 Object Library,并勾选上它
3。 关闭引用对话框 一旦创建了对Access类型库的引用,你就可以使用对象浏览器来查看该
应用软件的对象,属性和方法了 (参见前面的图15…1)。 使用引用对话框创建对其它将在本章
练习中访问对象库的引用。你可以在前面部分里找到库清单。你可以忽略对Microsoft Jet and
Replication Objects 2。6 Library (JRO)的引用,因为这里不会用到它。 如果你对数据库
复制有兴趣的话,那么可以找到很多有关Access编程的书涉及该主题,包括本人的书Learn
Microsoft Access
292
… 页面 309…
2000 Programming by Example (Wordware Publishing (ISBN 1…55622…770…1))。
技巧15…1 创建对Access对象库引用的好处
当你设置对Access对象库的引用时,你将获得下述好处:
… 你可以在对象浏览器里面查看Access的对象,属性和方法
… 你可以在VBA过程里直接运行Access函数
… 你可以声明该应用软件类型的对象变量,而不必声明普通的Object类型。声明变量为Dim
objAccess As Access。Application
(早期捆绑)要比将其声明为Dim objAccess As Object (后期捆绑)要快。
… 你可以在你的VBA代码里使用Access内置常量
… 你的VBA过程将运行得更快一些
3。链接到 Access
本章中的示例使用了多种链接到Access的方法,本节将详细讨论每种链接方法。你可以使用
下述三种方法之一来建立对Access 的链接:
□ Automation
□ Data Access Objects (DAO)
□ ActiveX Data Objects (ADO)
要访问数据库里的数据的话,你就得打开它。如何打开某个具体的数据库,很大程度上取决于
你使用了哪种数据库的链接方法。
4。使用 Automation 链接到 Access 数据库
当你通过Automation从Excel(或者其它应用软件)里使用Access时,你需要采取下述步骤:
1。 设置对Microsoft Access 10。0 Object Library的引用(参见本章前面的“建立对对象库
的引用”)
2。 声明一个对象变量,代表Access应用软件对象
Dim objAccess As Access。Application
在该声明中,objAccess为变量名称,而Access。Application用提供该对象的VB对象库的名
称来限定该变量。
3。 返回引用到应用软件对象上,并且将该引用到该对象变量。使用CreateObject函数,
GetObject函数或者关键字New来返回 应用软件对象的引用。使用Set语句将应用赋值到对
象变量。
Dim objAccess As Object
Set objAccess = CreateObject(“Access。Application。10”) 当对象还没有实例时,可
以使用CreateObject函数返回一个引用到应用软件对象。如果Access已经运行了的话,
那么新的 实例就已创建了并且确定的对象也已创建了。
Dim objAccess As Object
Set objAccess = GetObject(; “Access。Appl