




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Access实例教程 潘明寒赵义霞主编中国水利水电出版社 ACCESS实例教程 数据库编程 第9章 1 用ADO访问数据库2 用DAO访问数据库3 程序运行错误处理 本章要点 9 1VBA数据库访问接口 VBA数据库访问接口是指VBA与后台数据库的连接部分 也就是VBA与Access数据库连接的方法 9 1 1三种数据库访问接口 1 ODBC OpenDatabaseConnectivity ODBC称为 开放式数据库连接 是一种关系数据源的接口界面 ODBC基于SQL StructuredQureyLanguage 把SQL作为访问数据库的标准 一个应用程序通过一组通用代码访问不同的数据库管理系统 ODBC可以为不同的数据库提供相应的驱动程序 2 DAO DataAccessObjects DAO称为 数据访问对象 是一种面向对象的界面接口 提供一个访问数据库的对象模型 用其中定义的一系列数据访问对象 实现对数据库的各种操作 使用DAO的程序编码非常简单 3 ADO ActiveXDataObjects ADO称为 Active数据对象 是基于组件的数据库编程接口 ADO实际是一种提供访问各种数据类型的连接机制 是一个与编程语言无关的COM ComponentObjectModel 组件系统 ADO设计为一种极简单的格式 可以方便地连接任何符合ODBC标准的数据库 数据库引擎是一组动态链接库DLL DynamicLinkLibrary 在程序运行时被连接到VBA 实现对数据库的数据访问功能 是应用程序与物理数据库之间的桥梁 VBA通过DAO和数据引擎可以识别3类数据库 1 本地数据库 即Access数据库 2 外部数据库 所有索引顺序访问方法 ISAM 数据库 如VFP 也可以访问文本文件数据库和MicrosoftExcel或Lotus1 2 3电子表格 3 ODBC数据库 符合ODBC标准的C S数据库 如SQLServer Oracle 9 2 1DAO模型结构 DAO模型是设计关系数据库系统结构的对象类的集合 它们提供了管理关系型数据库系统所需的全部操作的属性和方法 这其中包括创建数据库 定义表 字段和索引 建立表之间的关系 定位和查询数据库等 9 2用DAO访问数据库 3 2统配符 运算符与常用函数 9 2 2DAO对象简介 1 DBEngine对象 处于最顶层 表示数据库引擎 是模型中惟一不被其他对象所包含的对象 它包含并控制DAO模型中其他全部对象 2 Workspace对象 表示工作区 可以使用隐含的workspace对象 3 Database对象 代表到数据库的连接 表示操作的数据库对象 4 RecordSet对象 代表一个数据记录的集合 该集合的记录来自于一个表 一个查询或一个SQL语句的运行结果 5 Field对象 表示记录集中的字段 6 QueryDef对象 表示数据库查询信息 7 Error对象 表示数据提供程序出错时的扩展信息 9 2 3用DAO访问数据库 用DAO访问数据库时 先在程序中设置对象变量 然后通过对象变量调用访问对象的方法 设置访问对象的属性 从而实现对数据库的各种访问 定义DAO对象要在对象前面加上前缀 DAO 用DAO访问数据库的一般语句和步骤 DimwsasDAO Workspace 定义Workspace对象变量DimdbasDAO Database 定义Database对象变量DimrsasDAO RecordSet 定义RecordSet对象变量DimfdasDAO Field 定义Field对象变量Setws DBEngine Workspace o 打开默认工作区Setdb ws OpenDatabase 数据库的地址与文件名 打开数据库Setrs db OpenRecordSet 表名 查询名或SQL语句 打开记录集 DoWhilenotrs EOF 循环遍历整个记录集直至记录集末尾 对字段的各种操作rs MoveNext 记录指针移到下一条Loop 返回到循环开始处rs close 关闭记录集db close 关闭数据库setrs nothing 释放记录集对象变量所占内存空间setdb nothing 释放数据库对象变量所占内存空间说明 如果是本地数据库 可以省略定义Workspace对象变量 打开工作区和打开数据库两条语句用下面一条语句代替 Setdb CurrentDb 该语句是Access的VBA给DAO提供的数据库打开快捷方式 例 用DAO访问数据库 1 在窗体建2个文本框 名称分别为t1和t2 附加标签的标题分别为 姓名 和 工资 2 在窗体页眉添加标签 标题为 工资增加10 3 在窗体页脚建命令按钮 名称为c1 标题为 显示第一条记录 4 给命令按钮的单击事件写代码如下 DimdbasDAO Database 定义Database对象变量DimrsasDAO Recordset 定义Recordset对象变量DimfdasDAO Field 定义Field对象变量Setdb CurrentDb 建立与当前数据库的连接Setrs db OpenRecordset gz 建立与gz表的连接Setfd rs Fields 工资 设置对 工资 字段的引用DoWhileNotrs EOF 如果指针没有到最后就执行循环体rs Edit 使rs处于可编辑状态fd fd fd 0 1 给指定字段值增加10 rs Update 更新表 rs MoveNext 向下移动指针Loop 返回到循环开始处rs MoveFirst 指针移到第一条记录t1 rs Fields 姓名 将姓名字段的值显示在t1中t2 rs Fields 工资 将工资字段的值显示在t2中rs Closedb CloseSetrs NothingSetdb Nothing 5 转到窗体视图 单击命令按钮 可以看到t2文本框中显示第一条记录更新后的工资值 9 3用ADO访问数据库 9 3 1ADO模型结构 ADO对象模型是一系列对象的集合 对象不分级 除Field对象和Error对象之外 其他对象可直接创建 使用时 通过对象变量调用对象的方法 设置对象的属性 实现对数据库的访问 9 3 2ADO对象简介 1 Connection对象 建立到数据源的连接 2 Command对象 表示一个命令 3 RecordSet对象 表示数据操作返回的记录集合 4 Field对象 表示记录集中的字段 5 Error对象 表示数据提供程序出错时的扩展信息 Connection对象与RecordSet对象是两个ADO中最重要的对象 RecordSet对象可以分别与Connection对象和Command对象联合使用 2020 1 29 17 可编辑 2020 1 29 18 可编辑 9 3 3用ADO访问数据库 首先创建对象变量 然后用对象的方法和属性访问数据库 为了与DAO中同名对象有所区分 ADO对象的前面要加上前缀 ADODB 用ADO访问数据库的一般语句和步骤 1 RecordSet对与Connection对象联合使用DimcnasnewADOBD Connection 建立连接对象DimrsasnewADOBD RecordSet 建立记录集对象cn Provider Microsoft Jet OLEDB 4 0 设置数据提供者cn Open连接字符串 打开数据库rs Open查询字符串 打开记录集dowhilenotrs EOF 循环开始 对字段的各种操作rs movenext 记录指针移到下一条 loop 返回到循环开始处rs close 关闭记录集cn close 关闭连接setrs nothing 释放记录集对象变量所占内存空间setcn nothing 释放连接对象变量所占内存空间说明 对于本地数据库 Access的VBA也给ADO提供了类似于DAO的数据库打开快捷方式 可以将设置数据提供者和打开数据库两条语句用下面一条语句代替 Setcn CurrentProject Connection 2 RecordSet对与Command对象联合使用DimcmasnewADOBD Command 建立命令对象DimrsasnewADOBD RecordSet 建立记录集对象cm ActiveConnection 连接字符串 建立命令对象的活动连接cm CommandType 查询类型 指定命令对象的查询类型cm CommandText 查询字符串 建立命令对象的查询字符串rs Opencm 其他参数 打开记录集dowhilenotrs EOF 循环开始 对字段的各种操作rs movenext 记录指针移到下一条loop 返回到循环开始处rs close 关闭记录集setrs nothing 释放记录集对象变量所占内存空间 例 用ADO访问数据库 1 在窗体建3个文本框 名称分别为t1 t2和t3 2 在窗体页眉添加标签 标题为 工员增加 3 在窗体页脚建命令按钮 名称为c1 标题为 追加到表中 4 命令按钮c1的单击事件代码 DimcnAsNewADODB ConnectionDimrsAsNewADODB RecordsetDimstr1AsStringSetcn CurrentProject Connection 建立本地连接rs ActiveConnection cnrs Open Select教师编号From教师Where教师编号 t1 Ifrs EOF FalseThenMsgBox 该编号已存在 不能追加 Elsestr1 InsertInto教师 教师编号 姓名 性别 str1 str1 Values t1 t2 t3 cn Executestr1 执行指定的SQL语句 MsgBox 添加成功 请继续 EndIfrs Closecn CloseSetrs NothingSetcn Nothing说明 在程序中 用 t1 取得文本框t1中的值 原来用双引号定界的地方改为单引号 两个相同的引号不能连着写 Execute是Command对象和Connection对象的方法 执行指定的查询 并将执行产生的结果存储在Recordset对象中 5 转到窗体视图 如果输入的编号与表中的编号有重复 单击命令按钮后显示消息框 输入的信息不能追加到表中 图1 15层次模型 6 如果输入的编号与表中的编号不重复 单击命令按钮后显示消息框 输入的信息被追加表中 9 4VBA程序错误处理 VBA提供了OnError语句 用来控制当有错误发生时程序的处理 启动一个错误处理程序并指定该子程序在一个过程中的位置 一个错误处理程序不是Sub过程或Function过程 它是一段用行号标记的代码 9 4 1OnError语句的语法 OnError语句的语法通常有3种样式 1 OnErrorGoTo行号启动错误处理程序 如果发生一个运行时错误 控件会转到行号所指位置 执行其中的代码 指定的行号必须在一个过程中 这个过程与OnError语句所在的过程相同 例如 OnErrorGoToaa 如果发生错误转到aa处 aa 行号aa错误处理程序代码 处理错误 功能 当程序发生错误 跳转到aa位置执行 2 OnErrorResumeNext当一个运行错误发生时 不考虑错误 继续执行下一条语句 访问对象时要使用这种形式而不使用OnErrorGoTo语句 3 OnErrorGoTo0关闭错误处理 禁止当前过程中任何已启动的错误处理程序 9 4 2了解错误信息 1 Err对象Err是一个含有运行时错误信息的对象 Err对象的number属性返回错误代码 用Err Source可以帮助确定是哪个对象产生错误 用Err Number可以帮助确定是哪个对象将错误代码放在其中 Err是全局范围的固有对象 在代码中不必建立这些对象的实例 2 Rrror函数格式 Rrror 错误号 Rrror函数的自变量是一个有效的错误号 函数返回与已知错误号对应的错误信息 如果不是有效的错误号 会导致错误发生 错误号是可选项 如果省略 将返回与最近一次运行错误对应的消息 如果没有发生运行错误 或者错误号是0 则Error函数返回一个长度为零的字符串 例 错误处理练习 1 建文本框 名称为t1 建立命令按钮 名称为c1 2 命令按钮c1的单击事件代码 PrivateSubc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 一建fidic合同样本
- 保暖套装采购合同标准文本
- 佣金分红合同标准文本
- 个人入股医院合同标准文本
- 产业规划编制合同样本
- 事故车购车合同样本
- 体育单招合同样本
- 公寓车位出租合同样本
- epc居间服务合同标准文本
- 2824劳务用工合同标准文本
- 小学生诗词大会宣讲公开课一等奖市赛课获奖课件
- 药学毕业论文5000字药学论文的5000字集合16篇
- 小学语文整本阅读指导课《城南旧事》教学案例
- (机械创新设计论文)
- GB/T 39802-2021城镇供热保温材料技术条件
- GB/T 2792-2014胶粘带剥离强度的试验方法
- GB/T 215-2003煤中各种形态硫的测定方法
- GB/T 17492-2012工业用金属丝编织网技术要求和检验
- GB/T 17207-2012电子设备用固定电容器第18-1部分:空白详细规范表面安装固体(MnO2)电解质铝固定电容器评定水平EZ
- GB/T 16886.7-2001医疗器械生物学评价第7部分:环氧乙烷灭菌残留量
- 铁路职工政治理论应知应会题库
评论
0/150
提交评论