【文档说明】Access数据库VBA数据库编程课件.ppt,共(35)页,951.000 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-2157.html
以下为本文档部分文字说明:
数据库原理及应用(Access2003)第9章VBA数据库编程第9章VBA数据库编程9.1数据库引擎及其接口9.2数据访问对象9.2.1DAO模型结构9.2.2主要的DAO对象9.2.3利用DAO访问数据库9.3ActiveX数据对象9.3.1ADO模型结
构9.3.2主要ADO对象的使用9.3.3利用ADO访问数据库第9章VBA数据库编程概要介绍:前面已经介绍了模块和VBA程序设计基础知识,包括VBA面向对象程序设计初步知识。实际上,要想快速、有效地管理好数据,
开发出更具实用价值的Access数据库应用程序,还应当了解和掌握VBA的数据库编程方法。本章我们首先介绍数据库访问接口,然后介绍Access支持的DAO和ADO两种数据库编程方法。9.1数据库引擎及其接口•VBA是通过MicrosoftJet数据库引擎工具来支持对数据库的访问。所谓
数据库引擎•实际上是一组动态链接库(DLL),当程序运行时被链接到VBA程序而实现对数据库的数据访问功能。数据库引擎是应用程序与物理数据库之间的桥梁,它以一种通用接口的方式,•使各种类型物理数据库对用户而言
都具有统一的形式和相同的数据访问与处理方法。9.1数据库引擎及其接口在VBA中主要提供了3种数据库访问接口:(1)开放数据库互连应用编程接口(OpenDatabaseConnectivityAPI,ODBCAPI)。目前Windows
提供的32位ODBC驱动程序对每一种客户/服务器关系型数据库管理系统、最流行的索引顺序访问方法(ISAM)数据库(Jet、dBase、Foxbase和FoxPro)、扩展表(Excel)和定界文本文件都可以操作。在Access应用中,直接使用ODBCAPI需要
大量VBA函数原型声明(Declare)和一些繁琐、低级的编程,因此,实际编程很少直接进行ODBCAPI的访问。(2)数据访问对象(DataAccessObjects,DAO)。DAO提供一个访问数据库的对象模型。利用其中定义的
一系列数据访问对象,例如,Database、QueryDef、RecordSet等对象,实现对数据库的各种操作。9.1数据库引擎及其接口(3)Active数据对象(ActiveXDataObjects,ADO)。ADO是基
于组件的数据库编程接口,是一个和编程语言无关的COM组件系统。使用它可以方便地连接任何符合ODBC标准的数据库。ADO支持的数据资源范围比DAO广泛。9.1数据库引擎及其接口VBA通过数据库引擎可以访问的数据库有以下3种类型。(1)本地数据库:即Access数据库。(2)外部数据库:
指所有的索引顺序访问方法(ISAM)数据库。(3)ODBC数据库:符合开放数据库连接(ODBC)标准的客户/服务器数据库,例如,Oracle、MicrosoftSQLServer等。9.2数据访问对象•数据访问对象(DAO)包含了很多对象和集合,通过Jet引擎来连接Access数据库和其他的O
DBC数据库。•DAO模型为进行数据库编程提供了需要的属性和方法。利用DAO可以完成对数据库的创建,如创建表、字段和索引,完成对记录的定位和查询以及对数据库的修改和删除等。•数据访问对象完全在代码中运行,使用代码操纵Jet引擎访问数据库
数据,能够开发出更强大更高效的数据库应用程序。使用数据访问对象开发应用程序,使数据访问更有效,同时对数据的控制更灵活更全面,给程序员提供了广阔的发挥空间。9.2数据访问对象•有图所示为DAO模型分层结构简图。9.2.1DAO模型结构9.2数据访问对象•DAO对象模型是一个分层
的树型结构,它包含了一个复杂的可编程数据关联对象的层次,其中DBEngine对象处于最顶层,它是模型中唯一不被其它对象所包含的数据库引擎本身。层次低的一些对象,如Workspace(s)、Database(s)、QueryD
ef(s)、RecordSet(s)和Field(s)是DBEngine对象下的对象层,其下的各种对象分别对应被访问的数据库的不同部分。在程序中设置对象变量,并通过对象变量来调用访问对象方法、设置访问对象属性,这样就实现了对数据库的各种访问操作。9.
2.1DAO模型结构9.2数据访问对象1.DBEngine对象在DAO的分层结构中可以看到,DBEngine对象是顶层对象,它包含了其他所有的数据访问对象和集合,是惟一不被其他对象所包含的数据库访问对象,实际上,DBEngine对象就是Jet数据库引擎本身。DBEngi
ne对象包含一个Workspace对象集合,该集合由一个或多个Workspace对象组成。如果要建立一个新的Workspace对象,则应当使用CreateWorkspace方法。该方法的使用语法如下:SetmyWs=DBEngine.CreateWork
spaces(name,user,password,type)9.2.2主要的DAO对象9.2数据访问对象•其中,myWs是一个Workspace对象。name指定工作区的名字。user设置该工作区的用户名。password是使用者的密码。
type是用于确定即将创建的Workspace对象的类型的可选参数,使用DAO可以创建两种类型的Workspace对象,即Jet型和ODBC型,对应这两种类型的常量分别是:dbUseJet和dbUseODBC。
•Dimws1AsWorkspace•Setws1=DBEngine.CreateWorkspaces("ws1","zyy","")9.2.2主要的DAO对象9.2数据访问对象2.Workspace对象在DBEngine对象中有一个Work
space对象集合,该集合包含了当前可使用的Workspace对象。Workspace为用户定义了一个有名字的会话区。Workspace对象定义了使用何种方式与连接数据。在DAO中,可以使用MicrosoftJet引擎
或ODBCDirect中的任意一种,视数据源而定,而连接方式的实现,则可以通过Workspace对象来定义。Workspace对象还提供了事务处理,为保证数据库的完整性提供了支持。引用Workspace
对象的通常方法是使用Workspaces集合,对象在集合中的索引从0开始。在Workspaces集合中引用对象,既可以通过在集合中的索引来引用,也可以通过对象的名字来引用。9.2.2主要的DAO对象9.2数据访问对象3.Database对象使用DAO编程,Database对象及其包含的对
象集是最常用的。Database对象代表了一个打开的数据库,所有对数据库的操作都必须先打开数据库。Workspace对象包含一个Database对象集合,该对象集合包含了若干个Database对象。Database对象包含TableDef、QueryDe
f、Container、Recordset和Relation5个对象集合。使用Database对象,可以定义一个Database变量,也可以通过Workspace对象中的Database对象集来引用。使用CreateDatabase方法和O
penDatabase方法将返回一个数据库对象,同时该数据库对象自动添加到Database对象集合中。9.2.2主要的DAO对象9.2数据访问对象3.Database对象使用DAO编程,Database对象及其包含的对象集是最常用的。Database对象代表了一个
打开的数据库,所有对数据库的操作都必须先打开数据库。Workspace对象包含一个Database对象集合,该对象集合包含了若干个Database对象。Database对象包含TableDef、QueryDef、Container、Recor
dset和Relation5个对象集合。使用Database对象,可以定义一个Database变量,也可以通过Workspace对象中的Database对象集来引用。使用CreateDatabase方法和OpenDatabase方法将返回一个数据库对象,同时该数据库对象自动添
加到Database对象集合中。9.2.2主要的DAO对象9.2数据访问对象说明:在使用Database变量时,应当使用Set关键字为该变量赋值。Database对象的常用方法如下:(1)CreateQueryDef方法该方法可创建一个新的查询对象。其使用语法如下:Setquery
def=database.CreateQueryDef(name,sqltext)如果name参数不为空,表明建立一个永久的查询对象;若name参数为空,则会创建一个临时的查询对象。sqltext参数是一个SQL查询命令。9.2.2主要的DAO对象9.2数据访问对象(2)CreateT
ableDef方法该方法用于创建一个TableDef对象。其语法格式如下:Settable=database.CreateTableDef(name,attribute,source,connect)其中
,table是之前已经定义的表类型的变量。database是数据库类型的变量,它将包含新建的表。name是设定新建表的名字。attribute用来指定新创建表的特征。source用来指定外部数据库表的名字。connect字符串变量包含一些数据
库源信息。最后3个参数在访问部分数据库表时才会用到,一般可以默认这几项。9.2.2主要的DAO对象9.2数据访问对象(3)Execute方法该方法执行一个动作查询。(4)OpenRecordset方法该方法创建一个新的Recordset对象,并
自动将该对象添加到Database对象的Recordset记录集合中去。其使用语法如下Setrecordset=database.OpenRecordset(source,type,options,lockedits)其中,source是记录集的数据源,可以是该数
据库对象对应数据库的表名,也可以是SQL查询语句。如果SQL查询返回若干个记录集,使用Recordset对象的NextRecordset方法来访问各个返回的记录集。9.2.2主要的DAO对象9.2数据访问对象type指定新建的Recordset对象的类型,共有以下几种类型:
①dbOpenTable表类型。②dbOpenDynaset动态集类型。③dbOpenSnapshot快照类型。④dbOpenForwardOnly仅向前类型。⑤dbOpenDynamic动态类型。一般如果source是本地表,则typ
e的默认值为表类型。9.2.2主要的DAO对象9.2数据访问对象options指定新建的Recordset对象的一些特性,常用的有以下几种:①dbAppendOnly只允许对打开表中的记录进行添加,不允许删除或修改记录。这个特性只能在动态集类型中使用。②dbReadOn
ly只读特性,赋予此特性后,用户不能对记录进行修改或删除。③DbSeeChanges如果一个用户要修改另一个正在编辑的数据,则产生错误。④dbDenyWrite禁止其他用户修改或添加表中的记录。⑤dbDenyRead禁止其他用户读表中记录。
⑥lockedits控制对记录的锁定,一般可以忽略。9.2.2主要的DAO对象9.2数据访问对象(5)Close方法该方法将数据库对象从数据库集合中移去。如果在数据库对象中,有打开的记录集对象,使用该方法会自动关闭记录集对象。关
闭数据库对象,也可以使用以下代码:Setdatabase=Nothing9.2.2主要的DAO对象9.2数据访问对象4.Recordset对象Recordset对象是记录集对象,它可以表示表中的记录或表示一组查询
的结果,要对表中的记录进行添加、删除等操作,都要通过对Recordset对象进行操作来实现。Recordsets是包含多种类型的Recordset对象的集合。Recordset对象有5种类型,它们是:表、动态集、快照、动态和仅向前,最常用的是前3种。9
.2.2主要的DAO对象9.2数据访问对象5.Field对象数据库包含的每个表都有多个字段,每个字段是一个Field对象。因此,在记录集Recordset对象中有一个Field对象集合,即Fields,可以使用Field对象对当前记录的某一字段进行读取和修改。为
了在Fields集合中标识某个Field对象,通常使用以下格式:Fields("fieldname")Field对象的Value属性是Field对象的默认属性,用以返回或设置字段的值。由于该属性是Field对象的默认属性,因此在使用该属性时可以不必显式表示
。9.2.2主要的DAO对象9.2数据访问对象在VBA中使用DAO,可以分以下几个步骤来操作:(1)首先创建Workspace;(2)然后打开Database;(3)再创建记录集Recordset;(4)最后可以通过这一记录集的属性和
方法来访问数据。9.2.3利用DAO访问数据库9.3ActiveX数据对象•ActiveX数据对象(ActiveXDataObjects,ADO)是Microsoft公司推出的一致数据访问技术(UDA)中的一层接口。它比其他一些对
象模型如DAO(DataAccessObject)、RDO(RemoteDataObject)等具有更好的灵活性,使用更为方便,并且访问数据的效率更高。•ADO是基于组件的数据库编程接口,它是一个和编程语言无关的COM组件系统,可以对来自多种数据提供者的数据进行读取和写入操作
。•需要指出的是,在Access模块设计时要想使用ADO的各个访问对象,首先应该增加一个对ADO库的引用。9.3ActiveX数据对象•ADO使用了与DAO相似的约定和特性,ADO的对象模型定义了一组可编程的自动化对象。与DAO不同,ADO对象无需派生,大多
数对象可以直接创建,没有对象的分级结构。ADO具有非常简单的对象模型,包括以下7个对象:Connection、Command、Parameter、Recordset、Field、Property和Error。此外,还包含以下4个集合:Fields、Properties、Para
meters和Errors。•在ADO模型中,主体对象只有Connection、Command和Recordset等3个,其他4个集合对象Errors、Properties、Parameters和Fields分别对应Error
、Property、Parameter和Field对象,整个ADO对象模型由这些对象组成。9.3.1ADO模型结构9.3ActiveX数据对象•ADO的各组件对象之间存在一定的联系,如图9-6所示。了解并掌握这些对象之间的联系形式和联系方法是使用ADO的基础。9.3.1ADO模型结构9.
3ActiveX数据对象•ADO包括Connection、Command、Parameter、Recordset、Field、Property和Error等7个对象,如表9-1所示。9.3.2主要ADO对象的使
用表9-1ADO对象对象说明Connection连接数据库Command从数据源获取所需数据的命令信息,包含SQL语句Recordset所获取的一组记录组成的记录集Parameter包含SQL语句参数Error在访问数据库时,由数据源所返回的错误信息
Property包含ADO对象特性Field包含Recordset对象列(即记录集中某个字段的信息)9.3ActiveX数据对象在ADO模型中,主体对象只有Connection、Command和Recordset等3个。1.Connection对象Connec
tion对象用于建立与数据源的连接。在客户/服务器结构中,该对象实际上是表示了同服务器的实际的网络连接。建立和数据库的连接是访问数据库的必要一步,ADO打开连接的主要方法是通过Connection对象来连接数据库,即使用Connection.Open方法。另外也可在同一操作中调
用快捷方法Recordset.Open打开连接并在该连接上发出命令。9.3.2主要ADO对象的使用9.3ActiveX数据对象2.Command对象通过已建立的连接发出的“命令”可以以某种方式来操作数据源。一般情况下,命令可以在数据源中添加、删除或更新数据,或者在表中以行的格式检索数据。Comma
nd对象体现命令概念。Command对象能够优化命令的执行。9.3.2主要ADO对象的使用9.3ActiveX数据对象3.Recordset记录集对象ADORecordset对象包含某个查询返回的记录以及那些记录中的游标。我们可以
不用显式地打开Connection对象的情况下,打开一个Recordset(例如,执行一个查询)。不过,如果选择创建一个Connection对象,就可以在同一个连接上打开多个Recordset对象。任何时候,
Recordset对象所指的当前记录均为集合内的单个记录。9.3.2主要ADO对象的使用9.3ActiveX数据对象一个典型的ADO应用的步骤是首先使用Connection对象建立与数据源的连接,然后用一个Command对象给出对数据库操作的命令,比如查询数据等,用
Recordset对结果集数据进行维护或浏览等操作。对于关系型数据库,通常使用SQL作为Command命令所使用的命令语言。9.3.3利用ADO访问数据库9.3ActiveX数据对象在应用程序中添加了对ADO对象库的
引用后,需先声明一个Connection对象变量,再生成一个Connection对象的实例。例如:Dimansw1AsADODB.ConnectionSetansw1=NewADODB.Connection或者合二为一:Dimansw1AsNewADODB.Connection使用ADO编程一般要
按照以下几个步骤:(1)定义和创建ADO对象实例变量;(2)设置连接参数并打开连接Connection;(3)设置命令参数并执行命令Command;(4)设置查询参数并返回记录集Recordset;(5)操作记录集(增加
、删除、修改、查询);(6)关闭、回收有关对象。9.3.3利用ADO访问数据库第9章VBA数据库编程✓总结•本章主要介绍了DAO和ADO两个对象模型,对模型中的主要对象的功能和操作方法进行了详细介绍,并结合实例分别采用DAO和ADO对象模型进行VBA数据库编程。•DAO和ADO是V
BA数据库编程中对数据操作最常用的两个对象模型,几乎大部分的数据的读取、修改和存储操作都与之息息相关。