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

上传人:日度 文档编号:135698818 上传时间:2020-06-18 格式:PPT 页数:57 大小:674KB
返回 下载 相关 举报
Access VBA数据库编程(ADO) 详细_第1页
第1页 / 共57页
Access VBA数据库编程(ADO) 详细_第2页
第2页 / 共57页
Access VBA数据库编程(ADO) 详细_第3页
第3页 / 共57页
Access VBA数据库编程(ADO) 详细_第4页
第4页 / 共57页
Access VBA数据库编程(ADO) 详细_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《Access VBA数据库编程(ADO) 详细》由会员分享,可在线阅读,更多相关《Access VBA数据库编程(ADO) 详细(57页珍藏版)》请在金锄头文库上搜索。

1、第7章VBA数据库编程 1 本章内容 记录集概述在Access中引用ADO对象引用记录字段浏览记录编辑数据用ADO技术实现复杂查询在VBA程序中使用SQL命令访问当前数据库以外的数据库综合实例 编制 研究生成绩管理与统计 程序 2 7 1记录集概述 7 1 1ADO的9个对象7 1 2了解记录集 3 7 1 1ADO的9个对象 ADO ActiveXDataObjectsAccess内嵌的VBA是用ADO技术开发数据库应用的主要工具ADO对象模型有9个对象 Connection Recordset Record Command Parameter Field Property Stream E

2、rror常用对象 Connection Command Recordset 4 7 1 1ADO的9个对象 Connection对象 ADO对象模型中最高级的对象 实现应用程序与数据源的连接 Command对象 主要作用是在VBA中通过SQL语句访问 查询数据库中的数据 Recordset对象 存储访问表和查询对象返回的记录 使用该对象 可以浏览记录 修改记录 添加新的记录或者删除特定的记录 Recordset对象的功能最常用 最重要 5 7 1 1ADO的9个对象 ADO的3个对象之间互有联系 Command对象和Recordset对象依赖于Connection对象的连接 Command对象

3、结合SQL命令可以取代Recordset对象 但远没有Recordset对象灵活 实用 Recordset对象它只能实现数据表内记录集操作 无法完成表和数据库的数据定义操作 数据定义操作一般需通过Command对象用SQL命令完成 本章用DoCmd对象代替Command对象 6 7 1 2了解记录集 记录集 Recordset 对表执行查询操作时 返回的一组特定记录 用记录集可执行的操作 对表中的数据进行查询和统计 在表中添加 更新或删除记录 记录集是一个对象 它包括记录和字段 具有其特定的属性和方法 利用这些属性和方法就可以编程处理数据库中的记录 7 7 2在Access中引用ADO对象 应

4、用程序中的ADO引用 声明Connection对象 创建Recordset对象 编程完成各种数据访问操作7 2 1声明Connection对象7 2 2声明与打开Recordset对象7 2 3关闭Recordset和Connection对象 8 7 2 1声明Connection对象 1 声明一个Connection对象 2 初始化Connection对象 决定Connection对象与哪个数据库相连接 例如 DimcnGraduateAsADODB ConnectionSetcnGraduate CurrentProject Connection 9 7 2 2声明与打开Recordset

5、对象 1 声明Recordset对象 2 创建Recordset对象实例 3 打开Recordset对象例如 DimrsStudentsAsADODB RecordsetSetrsStudents NewADODB RecordsetrsStudents Open 研究生 cnGraduate adCmdTable 10 7 2 3关闭Recordset和Connection对象 方法 执行Recordset对象和Connection对象的Close方法 将对象设置为Nothing例如 rsStudents ClosecnGraduate CloseSetrsStudents NothingS

6、etcnGraduate Nothing上述语句不是必须的 应用程序终止运行时 系统会自动关闭并清除这两个对象 11 7 3引用记录字段 任何对记录集的访问都是针对当前记录进行的 打开记录集时默认的当前记录为第1条记录 引用记录的字段 直接在记录集对象中引用字段名称 如Code rsStudents 学号若记录集字段名包含空格 或者字段名是一个保留字 则引用时必须将该字段名用方括号括起来 使用记录集对象的Fields n 属性 n是记录中字段从左到右的排列序号 第一个字段的序号为0 如Code rsStudents Fields 0 记录集对象与字段名间的连接符 12 7 3引用记录字段 例7

7、 1 建立名为ADO的模块 编写如下过程 运行该过程后 输出对话框显示 导师 表中第一位教师的编号和姓名 13 7 3引用记录字段 记录集更多的应用是在窗体对象上 建立一个空白窗体 设计各个控件 编程引用记录集当前记录的相关字段或将字段的值通过控件显示注意 如果涉及数据访问的事件过程不止一个 可在代码窗口的通用段定义Connection对象和Recordset对象 然后在Form Load事件过程中完成数据库连接和数据表的打开 14 7 3引用记录字段 例7 2 运行 分别单击 导师编号 和 导师姓名 按钮 窗体设计视图 删除导航按钮 15 7 3引用记录字段 例7 2窗体程序代码 16 7

8、4浏览记录 Recordset记录集对象提供了4种记录指针的移动方法MoveFirst记录指针移到第一条记录MoveNext记录指针移到当前记录的下一条记录MovePrevious记录指针移到当前记录的上一条记录MoveLast记录指针移到最后一条记录Recordset记录集的BOF和EOF属性用于判断记录指针是否处于有记录的正常位置记录指针将指向最后一条记录之后 EOF属性为True记录指针将指向第一条记录之前 BOF属性为TrueBOF和EOF属性的值均为True 表示记录集为空 17 7 4浏览记录 例7 3 对例7 2进行修改 增加如下事件过程代码 PrivateSubCommand3

9、 Click 单击 下一个记录 按钮rsTeacher MoveNextEndSub 18 7 4浏览记录 上面的过程隐含错误 移至最后一条记录后无法再下移指针 将出现运行错误信息框 两种纠正错误的方法 如果记录集的EOF属性为True 就回到第一条记录如果记录集的EOF属性为True 就回到最后一条记录 PrivateSubCommand3 Click 单击 下一个记录 按钮rsTeacher MoveNextEndSub 19 7 4浏览记录 20 7 4浏览记录 方法2的程序还将运行出错 因为Recordset对象有一个名为LockType的属性 默认值为adLockReadOnly 此

10、时只能浏览记录数据 记录的移动方式也只能是MoveNext和MoveFirst 要实现记录指针的4种移动操作 完成记录的添加 删改或更新 必须在使用Open方法打开数据表之前 将该记录集对象的LockType属性设置成adLockPessimistic或adLockOptimistic 如rsTeacher LockType adLockPessimisticrsTeacher Open 导师 cnGraduate adCmdTable 21 7 4浏览记录 Recordset对象的LocyType属性决定数据的锁定方式 adLockReadOnly 数据处于只读状态 adLockPessim

11、istic 保守式锁定 编辑数据时即锁定数据源记录 直到数据编辑完成才释放 adLockOptimistic 开放式锁定 编辑数据时不锁定 用Update方法提交数据时才锁定数据源记录 adLockBatchOptimistic 开放式更新 应用于批更新模式 22 7 4浏览记录 如果数据表中没有记录 即BOF和EOF同时为True 就不能引用表中的数据 将单击 导师姓名 按钮的事件过程改写如下PrivateSubCommand2 Click IfrsTeacher BOF TrueAndrsTeacher EOF TrueThenText1 Value ElseText1 Value rsT

12、eacher 姓名EndIfEndSub同理 修改单击 导师编号 按钮的事件过程同理 修改 下一个记录 按钮的事件过程代码 空表情况下记录指针不移动 23 7 5编辑数据 7 5 1用ADO记录集的AddNew方法添加记录7 5 2用ADO记录集的Update方法修改记录7 5 3用ADO记录集的Delete方法删除记录 24 7 5 1用ADO记录集的AddNew方法添加记录 添加新记录的步骤 1 用记录集的AddNew方法产生一个空记录 2 为空记录的各个字段赋值 3 用记录集的Update方法保存新记录 例7 4 在例7 3的基础上进行修改 25 7 5 1用ADO记录集的AddNew方

13、法添加记录 添加的程序代码 PrivateSubCommand4 Click DimAgeAsBytersTeacher MoveFirstAge rsTeacher 年龄 读取第一条记录的年龄字段值rsTeacher AddNew 添加一条新记录rsTeacher 导师编号 107 rsTeacher 姓名 高原 rsTeacher 年龄 AgersTeacher UpdateEndSub 思考 什么情况下单击 新记录 按钮 系统会提示出错 26 7 5 2用ADO记录集的Update方法修改记录 修改记录的步骤 1 将记录指针移动到需要修改的记录上 2 对记录中的相关字段的值进行修改 3

14、用Update方法保存更改修改后的结果不得违反数据完整性约束 例7 5 在模块ADO中添加过程Update Age 将 导师 表中第5条记录的年龄字段值修改为60岁 注意设置记录集的LockType类型 27 7 5 2用ADO记录集的Update方法修改记录 SubUpdate Age DimIAsByteDimcnGraduateAsADODB ConnectionSetcnGraduate CurrentProject ConnectionDimrsTeacherAsADODB RecordsetSetrsTeacher NewADODB RecordsetrsTeacher LockT

15、ype adLockPessimisticrsTeacher Open 导师 cnGraduate adCmdTable 向下跳过4条记录 将记录指针指向第5条记录ForI 1To4rsTeacher MoveNextNextIrsTeacher 年龄 60 rsTeacher UpdateEndSub 28 7 5 2用ADO记录集的Update方法修改记录 例7 6 在例7 4的基础上进行修改添加的程序代码 PrivateSubCommand5 Click rsTeacher MoveFirstDoWhileNotrsTeacher EOFIfrsTeacher 性别 男 ThenrsTe

16、acher 年龄 rsTeacher 年龄 1rsTeacher UpdateEndIfrsTeacher MoveNextLoopEndSub 29 7 5 3用ADO记录集的Delete方法删除记录 删除记录要慎重 因为被删记录无法恢复删除记录的步骤 1 移动到需要删除的记录上 2 用记录集对象的Delete方法删除当前记录 3 将某条记录指定为当前记录删除记录后 Access不能自动使下一条记录成为当前记录 根据不同情况 可用MoveNext或MoveLast方法定位记录指针 30 7 5 3用ADO记录集的Delete方法删除记录 例7 7 对例7 6添加如下的单击窗体事件过程 31 7 5 3用ADO记录集的Delete方法删除记录 IfrsTeacher 姓名 高原 ThenFlag MsgBox 是否要删除高原 vbYesNo 删除确认 IfFlag vbYesThen 确定删除rsTeacher DeleteMsgBox 记录删除完毕 rsTeacher MoveNext 删除记录后设定新的当前记录IfrsTeacher EOFThenrsTeacher MoveLas

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 计算机应用/办公自动化

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号