第09章 VBA数据库编程.doc_第1页
第09章 VBA数据库编程.doc_第2页
第09章 VBA数据库编程.doc_第3页
第09章 VBA数据库编程.doc_第4页
第09章 VBA数据库编程.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

第一节: VBA常见操作第一考点 验证数据函数 P250一、 见书P250例9.3:验证数据,取消不合法数据二、 BeforeUpdate事件说明:文本框BeforeUpdate事件:更新前事件,若设置为有参过程,则参数为真,文本框一直处于更新前状态,就是不更新,鼠标会一直在文本框中。参数为假,结束更新前事件,会执行更新,文本框内容改为新内容三、 帮助验证的相关函数IsNumeric验证数据为数值,则返回值为tureIsDate验证数据为日期,则返回值为tureIsNull验证数据为空(无效数据),则返回值为tureIsEmpty验证数据为空(未初始化),则返回值为tureIsArray验证数据为数组,则返回值为tureIsError验证数据有错误,则返回值为tureIsObject验证数据为对象,则返回值为ture第二考点 计时事件(timer)一、 见书 P251 例9.4:单击按钮控制计时二、 按钮控制技巧Private sub bok_click() Fage=not fage单击按钮后与单击按钮前fage相反End sub第三考点 鼠标和键盘事件处理一、 见书 1、 鼠标事件 P254控件名_MouseDown(button as integer,shift as integer , x as single , y as single)水平位置垂直位置鼠标左中右键盘控制键Button参数:acLeftButton(左键)、acRightButton(右键)、acMiddleButton(中键)Shift参数:作用:在按下鼠标的同时,按下键盘的哪个键控制键参数值:acShiftMask(shift键)、acAltMask(alt键)、acCtrlMask(Ctrl键)2、 例9.6:Button参数:判断按下鼠标的左、中、右键Private sbu form_MouseDown(Button as integer,shift as integer,X as singl,Y as single) If button=acLeftbutton thenMsgbox “你按下了鼠标的左键” End ifEnd sub3、 例:Shift参数、Private sbu form_MouseDown(Button as integer,shift as integer,X as singl,Y as single) If button=acLeftbutton and shift =acctrlmask thenMsgbox “你按下了鼠标的左键和键盘的CTRL键” End ifEnd sub4、 例:X参数、Y参数Private sbu form_MouseDown(Button as integer,shift as integer,X as singl,Y as single) If button=acLeftbutton and shift =acctrlmask thenMsgbox “你按下了鼠标的左键和键盘的CTRL键”& X & “,” &Y End ifEnd sub第二节: ADO和DAO数据库编程一、 数据库引擎 P257是一组动态链接库(DLL),当程序运行时被连接到VBA程序而实现对数据库的数据访问功能,是应用程序与物理数据库之间的桥梁。二、 3个数据库访问接口:ODBCAPI:开放数据库互连应用编程接口DAO:访问数据库的对象模型ADO:active数据对象三、 作用 这几个接口的作用是能够提供其它应用程序能够访问数据库里面的数据。第二考点 DAO一、 概念DAO(数据访问对象,Data access objects)是VBA提供的一种访问数据的接口,即访问数据库的对象模型,利用对象访问数据库二、 增加DAO库的引用进入VBE编程环境(ALT+F11)-“工具”菜单-引用-microsoft DAO3.6 object Library三、 DAO数据访问对象 P259DAO模型提供了不同的对象,不同对象分别对应被访问数据库的不同部分四、 例 P2601、 范例Private sub cmd1_click()定义变量:dim 变量名 as 变量类型 Dim ws as dao.workspace开辟内存空间,打开工作区 Dim db as dao.database连接数据库,打开数据库 Dim rs as dao.recordset访问数据库中的记录集 Dim fd as dao.field操作数据中的字段 Set ws = DBEnging.workspace(0)打开默认工作区 Set db = ws.OpenDatabase(路径数据库文名)打开数据库文件上两句见“说明1” Set rs = db.OpenRecordset(表、查询或SQL语句)打开数据记录集Set fd = rs.fields(“字段名”)操作某个字段Do while not rs.EOF当指针没有达到最后一条时,执行循环体中的语句Rs.edit修改,编辑.具体操作语句Rs.update保存记录Rs.MoveNext指针向下移动一条LoopEnd sub2、 说明说明1:如果代码是在当前数据库中,则上两句可用一句代替Set.db =CurrentDb()说明2: Rs.EOF判断记录打针是否到达结尾,到达结尾为true,否则为false3、 例题:将D盘下的st数据库文件中的“学生表”中的“年龄”字段中的所有值都加1Private sub cmd1_click()定义变量 Dim ws as dao.workspace开辟内存空间,打开工作区 Dim db as dao.database连接数据库,打开数据库 Dim rs as dao.recordset访问数据库中的记录集 Dim fd as dao.field操作数据中的字段 Set ws = DBEnging.workspaces(0)打开默认工作区 Set db = ws.OpenDatabase(“d:st.mdb”)打开数据库文件 Set rs = db.OpenRecordset(“学生”)打开数据记录集Set fd = rs.fields(“年龄”)Do while not rs.EOF当指针没有达到最后一条时,执行循环体中的语句Rs.edit修改,编辑Fd=fd+1Rs.update保存记录Rs.MoveNext指针向下移动一条loop第三考点 ADO一、 ADO对象 P261Connection对象:连接数据库Command对象:执行SQL命令Recordste对象:记录集对象(记录的集合或理解为表也可)二、 增加ADO库的引用进入VBE编程环境(ALT+F11)-“工具”菜单-引用-Microsoft Active Data Object 2.1 Library“三、 例1、 例:访问“学生”表中的一个字段:如何打开表,如何通过ADO把字段值显示在文本框中private sub cmd1_click()dim cn as new adodb.connectioncn负责连接数据库dim rs as new adodb.recordsetrs负责表操作set cn = currentProject.connectioncn连接当前数据库rs.Open “select * from 学生”,cn,adOpenKeyset,adLockPssimistic语义见下面的“说明1”Me.text1 = rs(”学生编号”)将“学生编号”字段中的值存在text1中Me.text2 = rs(”姓名”)将“姓名”字段中的值存在text2中也可写成“说明2”的形式End sub说明1:打开并存储记录到rs“select * from 学生”为第一个参数,为查找到的符合条件的记录cn是第二参数为数据库,后两个参数为指针的移动方式,简单了解说明2Me.text1 = rs.fields(0)将记录集中的第一个字段值存在text1中Me.text2 = rs(”姓名”)将“姓名”字段中的值存在text2中2、 例:如何切换记录Option compare Databasedim cn as new adodb.connectioncn负责连接数据库dim rs as new adodb.recordsetrs负责表操作private sub cmd1_click()set cn = currentProject.connectioncn连接当前数据库rs.Open “select * from 学生”,cn,adOpenKeyset,adLockPssimisticMe.text1 = rs(”学生编号”)将“学生编号”字段中的值存在text1中Me.text2 = rs(”姓名”)将“姓名”字段中的值存在text2中End subprivate sub cmd2_click()rs.MoveNextif rs. eof = true thenEOF判断指针,到达结尾为true,否则为falsemsgbox “已经到最后一条了”else向下移动记录,其它见“说明”Me.text1 = rs(”学生编号”)将“学生编号”字段中的值存在text1中Me.text2 = rs(”姓名”) 将“姓名”字段中的值存在text2中End ifEnd subprivate sub cmd3_click()rs.MoveLast最后一条记录Me.text1 = rs(”学生编号”)将“学生编号”字段中的值存在text1中Me.text2 = rs(”姓名”)将“姓名”字段中的值存在text2中End sub说明1:MoveFirst移动到第一条MoveLast移动到最后一条MovePrevious移动到前一条MoveNex移动到下一条说明2:EOF判断指针,到达结尾为true,否则为fals3、 例如何通过ADO把年龄加1private sub cmd1_click()dim cn as new adodb.connectioncn负责连接数据库dim rs as new adodb.recordsetrs负责表操作set cn = currenProject.connectioncn连接当前数据库rs.Open “select * from 学生”,cn,adOpenKeyset,adLockPssimisticdo while not rs.eof rs(“年龄”)=rs(“年龄”)+1 rs.update rs.movenextloop四、 例:通过ADO添加记录 private sub cmd1_click()dim cn as new adodb.connectioncn负责连接数据库dim rs as new adodb.recordsetrs负责表操作set cn = currenProject.connectioncn连接当前数据库rs.

温馨提示

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

评论

0/150

提交评论