Access VBA数据库编程(ADO) 详细.ppt





《Access VBA数据库编程(ADO) 详细.ppt》由会员分享,可在线阅读,更多相关《Access VBA数据库编程(ADO) 详细.ppt(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第7 7章章 VBA VBA数据库编程数据库编程本章内容本章内容n n 记录集记录集记录集记录集概述概述概述概述n n 在在在在AccessAccess中引用中引用中引用中引用ADOADO对象对象对象对象 n n 引用记录字段引用记录字段引用记录字段引用记录字段 n n 浏览记录浏览记录浏览记录浏览记录 n n 编辑数据编辑数据编辑数据编辑数据 n n 用用用用ADOADO技术实现复杂查询技术实现复杂查询技术实现复杂查询技术实现复杂查询n n 在在在在VBAVBA程序中使用程序中使用程序中使用程序中使用SQLSQL命令命令命令命令n n 访问当前数据库以外的数据库访问当前数据库以外的数据库访
2、问当前数据库以外的数据库访问当前数据库以外的数据库n n 综合实例综合实例综合实例综合实例编制编制编制编制“研究生成绩管理与统计研究生成绩管理与统计研究生成绩管理与统计研究生成绩管理与统计”程序程序程序程序7.1 7.1 记录集概述记录集概述 7.1.1 ADO的的9个对象个对象7.1.2 了解记录集了解记录集 ADO的的9个对象个对象 nADO:ActiveX Data Objects nAccess内嵌的内嵌的VBA是用是用ADO技术开发数据库应技术开发数据库应用的主要工具用的主要工具nADO对象模型有对象模型有9个对象:个对象:Connection、Recordset、Record、Co
3、mmand、Parameter、Field、Property、Stream、Error 常用对象:常用对象:Connection、Command、Recordset ADO的的9个对象个对象 nConnection对象:对象:ADO对象模型中最高级的对对象模型中最高级的对象,实现应用程序与数据源的连接。象,实现应用程序与数据源的连接。nCommand对象:主要作用是在对象:主要作用是在VBA中通过中通过SQL语句访问、查询数据库中的数据。语句访问、查询数据库中的数据。nRecordset对象:存储访问表和查询对象返回的对象:存储访问表和查询对象返回的记录。使用该对象,可以浏览记录、修改记录、记
4、录。使用该对象,可以浏览记录、修改记录、添加新的记录或者删除特定的记录。添加新的记录或者删除特定的记录。Recordset对象的功能最常用、最重要对象的功能最常用、最重要 ADO的的9个对象个对象 nADO的的3个对象之间互有联系:个对象之间互有联系:Command对象和对象和Recordset对象依赖于对象依赖于Connection对象的连接;对象的连接;Command对象结合对象结合SQL命令可以取代命令可以取代Recordset对对象,但远没有象,但远没有Recordset对象灵活、实用;对象灵活、实用;Recordset对象它只能实现数据表内记录集操作,无对象它只能实现数据表内记录集操
5、作,无法完成表和数据库的数据定义操作;法完成表和数据库的数据定义操作;数据定义操作一般需通过数据定义操作一般需通过Command对象用对象用SQL命令命令完成。本章用完成。本章用DoCmd对象代替对象代替Command对象对象。7.1.2 7.1.2 了解记录集了解记录集 n记录集记录集(Recordset):对表执行查询操作时,返:对表执行查询操作时,返回的一组特定记录。回的一组特定记录。n用记录集可执行的操作:对表中的数据进行查询用记录集可执行的操作:对表中的数据进行查询和统计,在表中添加、更新或删除记录。和统计,在表中添加、更新或删除记录。n记录集是一个对象,它包括记录和字段,具有其记录
6、集是一个对象,它包括记录和字段,具有其特定的属性和方法,利用这些属性和方法就可以特定的属性和方法,利用这些属性和方法就可以编程处理数据库中的记录。编程处理数据库中的记录。7.2 7.2 在在Access中引用中引用ADO对象对象 n应用程序中的应用程序中的ADO引用:声明引用:声明Connection对象对象创建创建Recordset对象对象编程完成各种数据访问编程完成各种数据访问操作操作7.2.1 声明声明Connection对象对象7.2.2 声明与打开声明与打开Recordset对对象象7.2.3 关关闭闭Recordset和和Connection对对象象 声明声明Connection对
7、象对象 (1)声明一个声明一个Connection对象对象(2)初始化初始化Connection对象(决定对象(决定Connection对对 象与哪个数据库相连接)象与哪个数据库相连接)例如:例如:Dim cnGraduate As ADODB.Connection Set cnGraduate=CurrentProject.Connection 与当前数据库连接与当前数据库连接 声明声明与打开与打开Recordset对象对象 (1)声明声明Recordset对象对象(2)创建创建Recordset对象实例对象实例(3)打开打开Recordset对象对象 例如:例如:Dim rsStudent
8、s As ADODB.Recordset Set rsStudents=New ADODB.Recordset rsStudents.Open 研究生研究生,cnGraduate,adCmdTable 前面声明的前面声明的Connection对象对象 表名称表名称 打开的是表对象打开的是表对象 参数占位符参数占位符 关闭关闭Recordset和和Connection对象对象 n方法:执行方法:执行Recordset 对象和对象和Connection对象对象的的Close方法方法 将对象设置为将对象设置为Nothing例如:例如:rsStudents.ClosecnGraduate.CloseS
9、et rsStudents=NothingSet cnGraduate=Nothingn上述语句不是必须的。应用程序终止运行时,系上述语句不是必须的。应用程序终止运行时,系统会自动关闭并清除这两个对象。统会自动关闭并清除这两个对象。7.3 7.3 引用记录字段引用记录字段 n任何对记录集的访问都是针对当前记录进行的。任何对记录集的访问都是针对当前记录进行的。打开记录集时默认的当前记录为第打开记录集时默认的当前记录为第1条记录。条记录。n引用记录的字段:引用记录的字段:直接在记录集对象中直接在记录集对象中引用字段名称引用字段名称,如,如 Code=rsStudents!学号学号若记录集字段名包含
10、空格,或者字段名是一个保留字,若记录集字段名包含空格,或者字段名是一个保留字,则引用时必须将该字段名用方括号括起来。则引用时必须将该字段名用方括号括起来。使用记录集对象的使用记录集对象的Fields(n)属性。属性。n是记录中字段从是记录中字段从左到右的排列序号,第一个字段的序号为左到右的排列序号,第一个字段的序号为0。如。如 Code=rsStudents.Fields(0)记录集对象与字段名间的连接符记录集对象与字段名间的连接符 7.3 7.3 引用记录字段引用记录字段 例例7-1 建立名为建立名为ADO的模块,编写如下过程。运的模块,编写如下过程。运行该过程后,输出对话框显示行该过程后,
11、输出对话框显示“导师导师”表中第一表中第一位教师的编号和姓名。位教师的编号和姓名。7.3 7.3 引用记录字段引用记录字段 n记录集更多的应用是在窗体对象上:建立一个空记录集更多的应用是在窗体对象上:建立一个空白窗体白窗体设计各个控件设计各个控件编程引用记录集当前记编程引用记录集当前记录的相关字段或将字段的值通过控件显示录的相关字段或将字段的值通过控件显示n注意:如果涉及数据访问的事件过程不止一个,注意:如果涉及数据访问的事件过程不止一个,可在代码窗口的通用段定义可在代码窗口的通用段定义Connection对象和对象和Recordset对象,然后在对象,然后在Form_Load事件过程事件过程
12、中完成数据库连接和数据表的打开。中完成数据库连接和数据表的打开。7.3 7.3 引用记录字段引用记录字段 例例7-2 运行:分别单击运行:分别单击“导师导师编号编号”和和“导师姓名导师姓名”按钮按钮 窗体设计视图窗体设计视图(删除导航按钮删除导航按钮)7.3 7.3 引用记录字段引用记录字段 例例7-2窗体程序代码窗体程序代码 7.4 7.4 浏览记录浏览记录 nRecordset记录集对象提供了记录集对象提供了4种记录指针的移动方法种记录指针的移动方法MoveFirst 记录指针移到第一条记录记录指针移到第一条记录MoveNext 记录指针移到当前记录的下一条记录记录指针移到当前记录的下一条
13、记录MovePrevious 记录指针移到当前记录的上一条记录记录指针移到当前记录的上一条记录MoveLast 记录指针移到最后一条记录记录指针移到最后一条记录nRecordset记录集的记录集的BOF和和EOF属性用于判断记录指针属性用于判断记录指针是否处于有记录的正常位置是否处于有记录的正常位置记录指针将指向最后一条记录之后,记录指针将指向最后一条记录之后,EOF属性为属性为True记录指针将指向第一条记录之前,记录指针将指向第一条记录之前,BOF属性为属性为TrueBOF和和EOF属性的值均为属性的值均为True,表示记录集为空,表示记录集为空 7.4 7.4 浏览记录浏览记录 例例7-
14、3 对例对例7-2进行修改进行修改 增加如下事件过程代码:增加如下事件过程代码:Private Sub Command3_Click()单击单击“下一个记录下一个记录”按钮按钮 rsTeacher.MoveNext End Sub7.4 7.4 浏览记录浏览记录 n上面的过程隐含错误:移至最后一条记录后无法上面的过程隐含错误:移至最后一条记录后无法再下移指针,将出现运行错误信息框。再下移指针,将出现运行错误信息框。n两种纠正错误的方法:两种纠正错误的方法:如果记录集的如果记录集的EOF属性为属性为True,就回到第一条记录,就回到第一条记录如果记录集的如果记录集的EOF属性为属性为True,就
15、回到最后一条记录,就回到最后一条记录 Private Sub Command3_Click()单击单击“下一个记录下一个记录”按按钮钮 rsTeacher.MoveNextEnd Sub7.4 7.4 浏览记录浏览记录 Private Sub Command3_Click()rsTeacher.MoveNext If rsTeacher.EOF Then rsTeacher.MoveFirst End IfEnd Sub 方法方法1:若记录:若记录集的集的EOF属性为属性为True,则回到首,则回到首记录记录 方法方法2:若记录:若记录集的集的EOF属性为属性为True,则回到末,则回到末记录
16、记录Private Sub Command3_Click()rsTeacher.MoveNext If rsTeacher.EOF Then rsTeacher.MoveLast End IfEnd Sub7.4 7.4 浏览记录浏览记录 n方方法法2的的程程序序还还将将运运行行出出错错。因因为为Recordset对对象象有有一一个个名名为为LockType的的属属性性,默默认认值值为为adLockReadOnly,此此时时只只能能浏浏览览记记录录数数据据,记记录录的的移移动动方方式式也也只只能能是是MoveNext和和MoveFirst。n要实现记录指针的要实现记录指针的4种移动操作,完成记
17、录的添加、删改种移动操作,完成记录的添加、删改或更新,必须在使用或更新,必须在使用Open方法打开数据表之前,将该记方法打开数据表之前,将该记录集对象的录集对象的LockType属性设置成属性设置成adLockPessimistic或或adLockOptimistic,如,如 rsTeacher.LockType=adLockPessimistic rsTeacher.Open 导师导师,cnGraduate,adCmdTable7.4 7.4 浏览记录浏览记录 nRecordset对对象象的的LocyType属属性性决决定定数数据据的的锁锁定方式:定方式:adLockReadOnly:数据处
18、于只读状态。:数据处于只读状态。adLockPessimistic(保保守守式式锁锁定定):编编辑辑数数据据时时即即锁锁定数据源记录,直到数据编辑完成才释放。定数据源记录,直到数据编辑完成才释放。adLockOptimistic(开开放放式式锁锁定定):编编辑辑数数据据时时不不锁锁定定,用用Update方法提交数据时才锁定数据源记录。方法提交数据时才锁定数据源记录。adLockBatchOptimistic(开开放放式式更更新新):应应用用于于批批更更新模式新模式 7.4 7.4 浏览记录浏览记录 n如如果果数数据据表表中中没没有有记记录录,即即BOF和和EOF同同时时为为True,就就不能引
19、用表中的数据。不能引用表中的数据。将单击将单击“导师姓名导师姓名”按钮的事件过程改写如下按钮的事件过程改写如下Private Sub Command2_Click()If rsTeacher.BOF=True And rsTeacher.EOF=True Then Text1.Value=Else Text1.Value=rsTeacher!姓名姓名 End IfEnd Sub同理,修改单击同理,修改单击“导师编号导师编号”按钮的事件过程按钮的事件过程同理,修改同理,修改“下一个记录下一个记录”按钮的事件过程代码按钮的事件过程代码(空表情况空表情况下记录指针不移动下记录指针不移动)7.5 7.
20、5 编辑数据编辑数据 7.5.1 用用ADO记录集的记录集的AddNew方法添加记录方法添加记录7.5.2 用用ADO记录集的记录集的Update方法修改记录方法修改记录 7.5.3 用用ADO记录集的记录集的Delete方法删除记录方法删除记录 用用用用ADOADO记录集的记录集的记录集的记录集的AddNewAddNew方法添加记录方法添加记录方法添加记录方法添加记录添加新记录的步骤:添加新记录的步骤:(1)用记录集的)用记录集的AddNew方法产生一个空记录方法产生一个空记录(2)为空记录的各个字段赋值)为空记录的各个字段赋值(3)用记录集的)用记录集的Update方法保存新记录方法保存新
21、记录例例7-4 在例在例7-3的基础上进行修改的基础上进行修改 用用用用ADOADO记录集的记录集的记录集的记录集的AddNewAddNew方法添加记录方法添加记录方法添加记录方法添加记录添加的程序代码添加的程序代码:Private Sub Command4_Click()Dim Age As Byte rsTeacher.MoveFirst Age=rsTeacher!年龄年龄 读取第一条记录的年龄字段值读取第一条记录的年龄字段值 rsTeacher.AddNew 添加一条新记录添加一条新记录 rsTeacher!导师编号导师编号=107 rsTeacher!姓名姓名=高原高原 rsTeac
22、her!年龄年龄=Age rsTeacher.UpdateEnd Sub思考:什么情况下单击思考:什么情况下单击“新记录新记录”按钮,系统会提示出错按钮,系统会提示出错?用用用用ADOADO记录集的记录集的记录集的记录集的UpdateUpdate方法修改记录方法修改记录方法修改记录方法修改记录n修改记录的步骤:修改记录的步骤:(1)将记录指针移动到需要修改的记录上)将记录指针移动到需要修改的记录上(2)对记录中的相关字段的值进行修改)对记录中的相关字段的值进行修改(3)用)用Update方法保存更改方法保存更改n修改后的结果不得违反数据完整性约束修改后的结果不得违反数据完整性约束 例例7-5
23、在模块在模块ADO中添加过程中添加过程Update_Age:将:将“导师导师”表中第表中第5条记录的年龄字段值修改为条记录的年龄字段值修改为60岁。岁。注意设置记录集的注意设置记录集的LockType类型类型 用用用用ADOADO记录集的记录集的记录集的记录集的UpdateUpdate方法修改记录方法修改记录方法修改记录方法修改记录Sub Update_Age()Dim I As Byte Dim cnGraduate As ADODB.Connection Set cnGraduate=CurrentProject.Connection Dim rsTeacher As ADODB.Reco
24、rdset Set rsTeacher=New ADODB.Recordset rsTeacher.LockType=adLockPessimistic rsTeacher.Open 导师导师,cnGraduate,adCmdTable 向下跳过向下跳过4条记录,将记录指针指向第条记录,将记录指针指向第5条记录条记录 For I=1 To 4 rsTeacher.MoveNext Next I rsTeacher!年龄年龄=60:rsTeacher.UpdateEnd Sub 用用用用ADOADO记录集的记录集的记录集的记录集的UpdateUpdate方法修改记录方法修改记录方法修改记录方法修
25、改记录 例例7-6在例在例7-4的基础上进行修改的基础上进行修改添加的程序代码添加的程序代码:Private Sub Command5_Click()rsTeacher.MoveFirst Do While Not rsTeacher.EOF If rsTeacher!性别性别=男男 Then rsTeacher!年龄年龄=rsTeacher!年龄年龄+1 rsTeacher.Update End If rsTeacher.MoveNext LoopEnd Sub 用用用用ADOADO记录集的记录集的记录集的记录集的DeleteDelete方法删除记录方法删除记录方法删除记录方法删除记录n删除
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Access VBA数据库编程ADO 详细 VBA 数据库 编程 ADO

限制150内