第7章 用VBA访问ACCESS数据库new_第1页
第7章 用VBA访问ACCESS数据库new_第2页
第7章 用VBA访问ACCESS数据库new_第3页
第7章 用VBA访问ACCESS数据库new_第4页
第7章 用VBA访问ACCESS数据库new_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第第7章章用用VBA访问访问Access数据库数据库2本章内容本章内容 37.1 记录集概述记录集概述 47.1.1 ADO的的9个对象个对象 oADO:ActiveX Data Objects oAccess内嵌的内嵌的VBA是用是用ADO技术开发数据库应技术开发数据库应用的主要工具用的主要工具oADO对象模型有对象模型有9个对象:个对象:nConnection、Recordset、Record、Command、Parameter、Field、Property、Stream、Error n常用对象:常用对象:Connection、Command、Recordset57.1.1 ADO的的9

2、个对象个对象 oConnection对象:对象:ADO对象模型中最高级的对对象模型中最高级的对象,实现应用程序与数据源的连接。象,实现应用程序与数据源的连接。oCommand对象:主要作用是在对象:主要作用是在VBA中通过中通过SQL语句访问、查询数据库中的数据。可以实现语句访问、查询数据库中的数据。可以实现Recordset对象不能完成的操作,如创建数据表、对象不能完成的操作,如创建数据表、修改表结构、删除表等。修改表结构、删除表等。o Recordset对象的功能最常用、最重要对象的功能最常用、最重要67.1.2 了解记录集了解记录集 o记录集记录集(Recordset):对表执行查询操作

3、时,返:对表执行查询操作时,返回的一组特定记录。回的一组特定记录。o用记录集可执行的操作:对表中的数据进行查询用记录集可执行的操作:对表中的数据进行查询和统计,在表中添加、更新或删除记录。和统计,在表中添加、更新或删除记录。o记录集是一个对象,它包括记录和字段,具有其记录集是一个对象,它包括记录和字段,具有其特定的属性和方法,利用这些属性和方法就可以特定的属性和方法,利用这些属性和方法就可以编程处理数据库中的记录。编程处理数据库中的记录。77.2 在在Access中引用中引用ADO对象对象 o应用程序中的应用程序中的ADO引用:声明引用:声明Connection对象对象创建创建Recordse

4、t对象对象编程完成各种数据访问编程完成各种数据访问操作操作87.2.1 声明声明Connection对象对象 (1) 声明一个声明一个Connection对象对象 (2) 初始化初始化Connection对象(决定对象(决定Connection对对 象与哪个数据库相连接)象与哪个数据库相连接) 例如:例如: Dim cnGraduate As ADODB.Connection Set cnGraduate=CurrentProject.Connection 与当前数据库连接与当前数据库连接 97.2.2 声明声明与打开与打开Recordset对象对象 (1) 声明声明Recordset对象对象

5、 (2) 创建创建Recordset对象实例对象实例 (3) 打开打开Recordset对象对象 例如:例如: Dim rsStudents As ADODB.Recordset Set rsStudents=New ADODB.Recordset rsStudents.Open 研究生研究生, cnGraduate, , , adCmdTable 前面声明的前面声明的Connection对象对象 表名称表名称 打开的是表对象打开的是表对象 参数占位符参数占位符 107.2.3 关闭关闭Recordset和和Connection对象对象 o方法:执行方法:执行Recordset 对象和对象和C

6、onnection对象对象的的Close方法方法 将对象设置为将对象设置为Nothing例如:例如:rsStudents.ClosecnGraduate.CloseSet rsStudents=NothingSet cnGraduate=Nothingo上述语句不是必须的。应用程序终止运行时,系上述语句不是必须的。应用程序终止运行时,系统会自动关闭并清除这两个对象。统会自动关闭并清除这两个对象。 117.3 引用记录字段引用记录字段 o任何对记录集的访问都是针对当前记录进行的。打开任何对记录集的访问都是针对当前记录进行的。打开记录集时默认的当前记录为第记录集时默认的当前记录为第1条记录。条记录

7、。o引用记录的字段:引用记录的字段:n直接在记录集对象中直接在记录集对象中引用字段名称引用字段名称 Code=rsStudents!学号学号n使用记录集对象的使用记录集对象的Fields(n)属性。属性。n是记录中字段从左到右的排列序号,第一个字段的序号为0。 Code=rsStudents.Fields(0)127.3 引用记录字段引用记录字段 例例7-1 建立名为建立名为ADO的模块,编写如下过程。运的模块,编写如下过程。运行该过程后,输出对话框显示行该过程后,输出对话框显示“导师导师”表中第一表中第一位教师的编号和姓名。位教师的编号和姓名。 137.3 引用记录字段引用记录字段 o记录集

8、更多的应用是在窗体对象上:记录集更多的应用是在窗体对象上:建立一个空建立一个空白窗体白窗体设计各个控件设计各个控件编程引用记录集当前记编程引用记录集当前记录的相关字段或将字段的值通过控件显示录的相关字段或将字段的值通过控件显示o注意:如果涉及数据访问的事件过程不止一个,注意:如果涉及数据访问的事件过程不止一个,可在代码窗口的可在代码窗口的通用段通用段定义定义Connection对象和对象和Recordset对象,然后在对象,然后在Form_Load事件事件过程过程中完成数据库连接和数据表的打开。中完成数据库连接和数据表的打开。147.3 引用记录字段引用记录字段 运行:运行:分别单击分别单击“

9、导师编号导师编号”和和“导师姓名导师姓名”按钮按钮 窗体设计视图窗体设计视图( (删除导航按钮删除导航按钮) ) 例例7-2:设计窗体,显示第一位导师的编号和姓名:设计窗体,显示第一位导师的编号和姓名157.3 引用记录字段引用记录字段 例例7-2窗体程序代码窗体程序代码 167.4 浏览记录浏览记录 oRecordset记录集对象提供了记录集对象提供了4种记录指针的移动方法种记录指针的移动方法nMoveFirst 记录指针移到第一条记录记录指针移到第一条记录nMoveNext 记录指针移到当前记录的下一条记录记录指针移到当前记录的下一条记录nMovePrevious 记录指针移到当前记录的上

10、一条记录记录指针移到当前记录的上一条记录nMoveLast 记录指针移到最后一条记录记录指针移到最后一条记录177.4 浏览记录浏览记录 oRecordset记录集的记录集的BOF和和EOF属性用于判断记录指针属性用于判断记录指针是否处于有记录的正常位置是否处于有记录的正常位置n记录指针将指向最后一条记录之后,记录指针将指向最后一条记录之后,EOF属性为属性为Truen记录指针将指向第一条记录之前,记录指针将指向第一条记录之前,BOF属性为属性为TruenBOF和和EOF属性的值均为属性的值均为True,表示记录集为空,表示记录集为空 187.4 浏览记录浏览记录 例例7-3 对例对例7-2进

11、行修改进行修改 增加如下事件过程代码:增加如下事件过程代码: Private Sub Command3_Click() 单击单击“下一个记录下一个记录”按按钮钮 rsTeacher.MoveNext End Sub197.4 浏览记录浏览记录 o上面的过程隐含错误:移至最后一条记录后无上面的过程隐含错误:移至最后一条记录后无法再下移指针,将出现运行错误信息框。法再下移指针,将出现运行错误信息框。o两种纠正错误的方法:两种纠正错误的方法:n如果记录集的如果记录集的EOF属性为属性为True,就回到第一,就回到第一条记录条记录n如果记录集的如果记录集的EOF属性为属性为True,就回到最后,就回到

12、最后一条记录一条记录 207.4 浏览记录浏览记录 Private Sub Command3_Click() rsTeacher.MoveNext If rsTeacher.EOF Then rsTeacher.MoveFirst End IfEnd Sub 方法方法1:若记录:若记录集的集的EOF属性为属性为True,则回到首,则回到首记录记录 方法方法2:若记录:若记录集的集的EOF属性为属性为True,则回到末,则回到末记录记录Private Sub Command3_Click() rsTeacher.MoveNext If rsTeacher.EOF Then rsTeacher.

13、MoveLast End IfEnd Sub217.4 浏览记录浏览记录 o方法方法2的程序还将运行出错。因为的程序还将运行出错。因为Recordset对对象有一个名为象有一个名为LockType的属性,默认值为的属性,默认值为adLockReadOnly,此时只能浏览记录数据,记,此时只能浏览记录数据,记录的移动方式也只能是录的移动方式也只能是MoveNext和和MoveFirst,不能执行不能执行MoveLast和和MovePrevious操作。操作。227.4 浏览记录浏览记录 o修改:将该记录集对象的修改:将该记录集对象的LockType属性设置成属性设置成adLockPessimis

14、tic(保守式锁定保守式锁定)o编辑数据时即锁定数据源记录,直到数据编辑完成编辑数据时即锁定数据源记录,直到数据编辑完成才释放。才释放。 rsTeacher.LockType = adLockPessimistic rsTeacher.Open 导师, cnGraduate, , , adCmdTable237.4 浏览记录浏览记录 o如果数据表中没有记录,即如果数据表中没有记录,即BOF和和EOF同时为同时为True,就不能引用表中的数据。,就不能引用表中的数据。n将单击将单击“导师姓名导师姓名”按钮的事件过程改写如按钮的事件过程改写如下下Private Sub Command2_Click

15、() If rsTeacher.BOF = True And rsTeacher.EOF = True Then Text1.Value = Else Text1.Value = rsTeacher!姓名姓名 End IfEnd Sub247.6 用用ADO技术实现复杂查询技术实现复杂查询 例例7-8 在在ADO模块中建立模块中建立Sex过程:统计并在输过程:统计并在输出对话框中显示男、女研究生人数比。要求以人出对话框中显示男、女研究生人数比。要求以人数多的一方为数多的一方为1、放在右侧、保留小数两位。、放在右侧、保留小数两位。 程序分析:先遍历全部记录,分别统计出男、女研究程序分析:先遍历全

16、部记录,分别统计出男、女研究生人数。如果男生人数多于女生,则男生人数为生人数。如果男生人数多于女生,则男生人数为1 1,女生,女生人数改为女生人数除以男生人数;反之亦然。人数改为女生人数除以男生人数;反之亦然。 25Sub Sex() (定义对象、完成与数据库的连接、打开研究生表、定义变量)(定义对象、完成与数据库的连接、打开研究生表、定义变量) Student.MoveFirst Do While Not Student.EOF 统计男、女研究生人数统计男、女研究生人数 If Student!性别性别 = 男男 Then Boy = Boy + 1 If Student!性别性别 = 女女 Then Girl = Girl + 1 Student.MoveNext Loop If Girl = Boy Then 以男生人数为以男生人数为1 MsgBox 女女:男男= & Format(Girl / Boy, 0.00) & :1 Else 以女生人数为以女生人数为1 MsgBox 男男:女女= & Format(Boy / Girl, 0.00) & :1 End IfEnd Sub7.6 用用ADO技术实现复杂查询技术实现复

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论