




已阅读5页,还剩130页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,28.05.2020,8章模块和VBA,2, 本章要求:1.了解VBA编程环境2 .掌握VBA编程的基础:常数、变量、公式3 .掌握顺序控制,选择控制,循环控制,理解VBA模块本章要点:掌握顺序控制,选择控制,循环控制,循环控制的时间表: 6点(理论) 6点(实践),第8章模块和VBA程序设计,第3,第8章模块和VBA程序设计,VBA程序设计基础,模块的概念,常用标准函数,VBA的程序结构,VBA的数据库编程进程调用和参数分发,4,Access 结合表单、报表等对象,无需编写程序代码,即可构建功能丰富的数据库管理系统。 但是宏的功能有限,只能处理简单的操作。 宏对象无力实现强大的数据管理和灵活的控制功能。 在这种情况下,需要创建程序模块来实现上述功能。 本章介绍模块的概念和构筑模块的VBA语言的基础知识。 第八章模块和VBA编程,5,8.1模块概念,模块对象是Access系统包括的7种对象之一,模块和宏的使用存在一些相似之处。 宏是系统自动生成的程序模块,模块对象用VBA语言描述,VBA是嵌入Office软件的编程语言,语法与VisualBasic兼容。 1 .模块的分类Access中,模块分为分类模块和标准模块两类。 (1) .类模块类模块由表单模块和报告模块构成,并与各自的表单或报告相关联。 窗体模块中事件进程的代码用于响应窗体或窗体上控件的触发事件。 报告模块中事件过程的代码可以响应报告或报告中控件的触发事件。 在6、8.1模块的概念、表单或报表的“设计”视图中,可以使用工具栏上的“代码”按钮打开“编辑模块代码”窗口。 创建表单或报表的事件过程时,将自动打开“模块代码编辑”窗口。 的双曲馀弦值。 窗体模块和报表模块的范围位于所属窗体或报表的内部,在打开窗体或报表时开始,在关闭窗体或报表时结束。 类别模组可以独立于表单或报表而存在。 7,8.1模块概念,(2) .标准模块标准模块包括与其他对象无关的常规进程,以及可从数据库任何位置运行的常用进程。 标准模块与不依赖于特定对象的类模块之间的主要区别在于它们的范围和生命周期。 标准模块显示在数据库窗口的“模块”对象中,表单、报表和标准模块也显示在对象浏览器对话框中。 “对象浏览器”对话框显示有关当前项目的信息,以及参考对象库中的对象、属性、方法和常量的信息。 8、模块包括声明区和进程两部分,声明区用于声明该模块所使用的变量,而进程是模块的组成部分。 有两种类型的过程:“子过程”(Sub )和“函数过程”(Function )。 (1)子过程的子过程也称为Sub过程,可以执行一系列操作,没有返回值。 Sub过程名称程序代码EndSub引用Sub过程的名称来定义调用Sub过程的格式。 可以在过程名称前附加关键字Call来显式调用子过程。 另外,8.1模块的概念,2 .模块的配置,9,例如,简单的计算,8.1模块的概念,任何两个数字的和,两个3之和,两个1之和,以及show 2,10,例如,可以通过表单事件调用子过程,8.1 sub checkpwd () dimpwdasstringpwd=inputbox (请输入您的密码! IfPwd=”123456”ThenMsgBox”密码正确,欢迎使用系统! “ElseMsgBox”密码错误! “EndifEndSub,8.1模块的概念,12,(2)函数过程函数过程也称为Funtion过程,可以执行一系列操作,并具有返回值。 函数过程名称程序代码EndFunction调用函数过程时,必须直接引用函数过程的名称,不能在Call中执行。8.1模块的概念,2 .模块的构成,13,例8-2 :以下是写求圆面积的函数的过程。 function area (ras single ) assignengleifr0theny=sqr (x ) elseyfx=0theny=0elsey=ABS (x ) endingfmsgboxy、8.4VBA的程序结构,例8-39:if语句的嵌套方法Dimx! 如果x=inputbox ( x= ) if x0theny=sqr (x ) elseyfx=0theny=0elsey=ABS (x ) endifmsgboxy,95,条件选项较多,则Select语句会解决多重嵌套控制结构的问题。 形式: SelectCase式Case式1文件系列1Case式2文件系列2Case式n文件系列nCaseElse文件系列n 1EndSelect、8.4VBA的程序结构、8.4.2条件文件、2.Select文件、96、Case式采用以下4种形式之一一行数字用逗号分隔数字之间。 例如,case 5、6和7用关键字To分隔两个数字或表达式之间的范围。 例如,Case1to10使用=变量或特定值,或关键字Is (如Is=15 )连接关系运算符。 逐次测试Case语句,首先执行符合Case条件的相关程序代码,即使有符合另一条件的分支也不执行。 如果找不到符合条件的语句,并且存在CaseElse语句,则执行该语句后面的程序代码。8.4VBA的程序结构、2.Select语句、97、例:根据用户通过键盘输入的数据,判断输入字符的类型。 8.4VBA程序结构,2.Select文件,Dimstr$,x$x=inputbox(x”) selectcasexcase a to z str= upper case case a to z str= lower case case 0 to 9 str= number caseelsestr=其他符号 EndSelectMsgboxxstr 在8.4VBA的程序结构、2.Select语句、99、VBA中,除了If和Select这2个条件语句之外,还有3个函数可以实现分支选择操作。 (1)IIf函数形式: IIf (条件式,式1,式2 )函数功能: IIf函数根据“条件式”的值决定函数的返回值。 如果条件表达式的值为真,则函数返回表达式1的值;如果条件表达式的值为假,则函数返回表达式2的值。 例如,maxnum=iif(xy,x,y )、8.4VBA的程序结构、3 .分支功能的函数、8.4.2条件语句、100,(2)Switch函数形式: Switch (条件式1、式1、式2、式2、式n、式n )函数功能: Switch函数为“条件式1”、“式2“式n”的函数通过从左到右计算表达式来确定该表达式,并且如果与第一个相关联的表达式为真,则该表达式被设置为函数的返回值。 示例8-41:使用此函数实现符号函数的功能y=switch (x 0,1,x=0,0,xmaxthenmax=xendifnextilabel3. caption=最大数量: maxEndSub,考虑如何计算最大数量,107,) 如果表达式结果运行到假或退出do,则退出循环。 语句格式: DoWhile条件式循环条件语句系列ExitDo结束条件语句系列Loop,8.4VBA的程序结构,2.DoLoop语句,8.4.3循环语句,108,例8-45 :使用do whileloop语句计算1100之间的数的和。 dimiasintegerdimmasintegeri=1dowhilei 100su m=sumii=I1loop,返回,8.4VBA程序结构,2.DoLoop文件,8.4.3环路文件,比较:使用DoWhileLoop文件计算1到100之间的数据总和dimiasintegerdimmasintegeri=1dowhileival2thenmaxfunc=val1elsemaxfunc=val2endif function调用函数过程maxfunc比较变量x和Y:Z=MaxFunc(X, y )调用函数过程maxfunc比较变量x y和z:z=maxfunc(x,y ),Z)MaxFunc(X,y )的返回值作为另一个调用的参数,可以与8.6过程调用进行交互,125,因为在过程定义时可以设置一个或多个格式的参数回到。 8.6过程调用和参数传递,8.6.2参数传递,1 .完整定义格式参数,包括 optional byval|ByRef param array varname () asitype =default value 格式参数应在主调用中提供相应的实际参数,并通过实际参数将数据传递给形式参数。 2 .参数传输方案126,快速有效地管理数据,开发更加实用的接入数据库应用,必须了解和掌握VBA的数据库编程方法。 8.7VBA的数据库编程,VBA主要提供了三种数据库访问接口: (1)开放式数据库互连应用程序编程接口(2)数据访问对象Dao (3)活动数据对象8.7.1数据库引擎及其接口、127、数据访问对象(DAO )是由VBA提供的数据访问接口。 VBA代码可以灵活地控制各种数据访问操作,包括创建数据库、定义表和查询等工具。 DAO模型是复杂的可编程数据关联对象的层次,DAO的对象层次如下说明:8.7VBA的数据库编程,8.7.2数据访问对象(DAO ),1.DAO模型结构,128,8.7VBA的数据在Access模块设计时使用DAO访问数据库的对象应该首先增加对DAO库的引用。 其参考设定(1)进入VBA编程环境。 (2)执行“工具”菜单中的“浏览”命令,打开“浏览”对话框(3)在对话框的“可用浏览”列表框选项中,单击“Microsoft da 03.6对象库”列表项前面的复选框。 (4)点击“ok”按钮,完成设定。 设定8.7VBA的数据库编程、2.DAO库的参照,通过130、Dao编程实现数据库访问,首先创建对象变量,通过对象方法和属性进行操作。 数据库操作的常见语句和过程包括: (1)对象变量创建定义工作区对象变量: DimwsAsWorkspace定义数据库对象变量: DimdbAsDatabase定义记录集对象变量: dimrsasr set语句中各个对象变量的值setws=dbengine.workspace (0) set db=ws.open database (数据库文件名) Setrs=db.OpenRecordSet (表名、查询名、SQL语句)、8.7VBA的3 .使用Dao的数据库访问,131,(3)对象的方法和属性操作通常以循环结构处理记录集中的所有记录。 dowhilenotrs.eofRS.movenext loop (4)操作的最后一项任务RS.close cn.close setrs=nothing set=nothing,8.7VBA的数据库编程,3 .利用Dao的数据库访问,110 8.7.4数据库访问和处理特殊函数1.Nz函数功能: Nz函数可以将空值转换为0、空字符串或其他指定值。 如果在处理数据库字段的数据时出现空值,则可以使用此函数将空值转换为指定值。 调用格式: Nz (表达式或字段属性值,指定值 )、8.7VBA数据库编程,133,示例8-53 :确定“学生信息表”表单中的“名称”字段控件,如果控件值为Null,则使用Nz函数将Null值转换为空字符串DimfmAsForm,ctlcascontroldimstrresultstfm=forms! 返回学生信息表“test”表单的Form对象变量Setctl=fm根据指向名称“tvalue”的控制对象变量“控制值”得出的结果strResult=IIf(Nz(ctl.Value)=,“学号字段值为“学号字段值”cfl.Value)MsgBoxStrResult“消息框显示结果,包括8.7VBA数据库编程、134,8.7.4数据库访问和处理的特殊函数2.DCount函数、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 考点解析-河南省辉县市七年级上册基本平面图形专项攻克试题(含解析)
- 推拿治疗学复习试题及参考答案详解【满分必刷】
- 2025年纺织服装制造业智能化生产智能生产设备智能化改造市场机遇报告
- 2025年基因治疗药物临床研究进展与市场趋势报告
- 押题宝典高校教师资格证之《高等教育心理学》考试题库及参考答案详解一套
- 贸易合同范本
- 解析卷华东师大版7年级下册期末测试卷及答案详解(名校卷)
- 解析卷-四川成都市华西中学7年级数学下册第六章 概率初步专项训练试题(含详解)
- 2025代办消防系统验收及整改施工合同范本
- 2025年度建筑材料购销与全程物流配送合同
- 2025年人造粉云母制品行业深度研究报告
- 医工交叉培养提升医疗人才的综合能力
- 以诺书999中英对照
- 2025年初级会计考试试卷及答案
- 人教版三年级下册数学 期中测试卷
- 中学师德师风建设专题培训
- 高速公路养护合同模板
- 放射科护理质控与安全管理
- 倍智tas人才测评系统题库及答案
- 重大事项决策合法性审查制度
- 钢结构厂房工程屋面、墙面安装施工方案
评论
0/150
提交评论