




已阅读5页,还剩90页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库技术原理与设计,第9章VBA程序设计,VBA程序设计,本章要求:1.了解VBA编程环境;2.掌握VBA编程基础:常量、变量、表达式;3.掌握顺序、选择、循环结构4.掌握过程与函数的定义与使用5.掌握面向对象程序设计基础6.熟悉ADO数据库编程本章要点:编程基础、程序结构、面向对象程序设计,目录,9.1VBA概述9.2变量与VBA数据类型9.3编写VBA程序9.4过程与自定义函数9.5面向对象程序设计基础9.6VBA数据库访问技术ADO9.7程序调试与错误处理,前言,Access除了基本的图形界面操作,还支持面向对象的程序开发技术。Access的面向对象开发技术就是通过VBA(VisualBasicforApplications)编程来实现的。VBA大大加强了对数据管理应用功能的扩展,同时在自动化、用户交互扩展、Access与其它应用程序之间的交互等方面更具灵活性和自动性。,9.1VBA概述,9.1.1VBA概述,MicrosoftVisualBasicforApplications(VBA)是MicrosoftOffice附带的VisualBasic版本,它是面向对象程序设计语言VisualBasic(VB)的子集,其语法结构与VB互相兼容。VB是微软公司推出的可视化BASIC语言,是一种编程简单、功能强大的面向对象开发工具。Access中,可以像编写VB程序那样来编写VBA程序。VB和VBA的主要区别是:VB语言开发系统是独立运行的开发环境,它创建的应用程序可以独立运行在Windows平台上;而VBA则不同,其编程环境和VBA程序都必须依赖Office应用程序。,9.1.2模块,VBA的程序代码以模块的形式进行管理,模块是由声明、语句和过程组成的集合,是一种管理程序代码的容器,用于存放用户编写的VBA代码。Access中,模块有两种类型:类模块标准模块,9.1.2模块,类模块:类模块包含代码和数据,用类模块创建对象时,模块中定义的过程将变成对象的方法,对象的变量将变成对象的属性。标准模块:标准模块通常存放一些公共变量或过程,它包含的过程不与任何其他对象相关联,主要供其它Access对象调用。注意:不管是标准模块还是类模块,都是随同Access文件存储在磁盘上,而不是以单独的模块文件存储在磁盘上。,9.1.3VBA开发环境,VBE是VisualBasicEditor的缩写,是Access提供的一个编程环境。VBE窗口主要由标准工具栏、工程窗口、属性窗口和代码窗口4部分组成.,VBE工具按钮,简单例子,在VBA编辑窗口中选择“插入”菜单下的“模块”命令,插入“模块1”。双击“模块1”,在窗体右方的“代码”窗口中输入如下代码:Subtest()MsgBox欢迎学习AccessVBA编程,欢迎EndSub运行结果:,宏转换为模块过程,文件菜单方式右键菜单方式,9.2变量与VBA数据类型,9.2.1数据类型,9.2.1数据类型基本类型,(2).长整形Long类型申明符为“&”,(1)整型integer类型申明符为“%”,表示范围:-32768+32767例:10%-5,(3).单精度数Single类型申明符为“!(E)”,最多有7位有效数字,表示范围:-3.402823E+38(1038)+3.402823E+38例:9.8!1.0E+2(1.0102),表示范围:-2147483648+2147483647例如:98543-66&,9.2.1数据类型基本类型,(5).布尔型Boolean,(4)字符型String类型申明符为“$”,例如:”Hello”,”VBA程序设计”。注意空串和空白串的区别,(6).日期时间型Date,日期时间型数据用“#”定界,由日期和时间数据组合而成。例如:#2016-4-23#,#10:00:00#,取值只能是True(真)或False(假),9.2.1数据类型基本类型,(8).变体型(Variant),(7)对象型Object,对象型数据类型用于表示各种不同的对象,以实现对对象的引用,变体型数据类型可根据上下文需要自动地表达除定长字符串和自定义数据类型以外的任何一种数据。VBA中规定,如果没有显示声明或使用符号来定义变量的数据类型,则默认为变体类型。,9.2.1数据类型自定义类型,定义类型方法:Type自定义数据类型名元素名1As类型元素名2As类型EndType,9.2.2变量简单变量,变量就是在程序执行中可以随时变化的量,它是一个己经命名的存储位置。变量可以显示声明,也可隐式声明。变量名由汉字、英文字母、数字和下划线组成,并以汉字或字母开头,最多包含255个字符。命名不能与VBA的关键字(或保留字)重名,但关键字可以是命名的组成部分。变量名不区分大小写,例如变量A和a会被认为是同一个变量。错误变量命名:,3xy数字开头y-z不允许出现减号WangPing不允许出现空格DimVB的关键字Cos标准函数名,9.2.2变量的声明显示声明,Dim变量名1类型符|As类型关键字,变量2类型符|As类型关键字例如:Dima&声明长整型变量aDimbasdouble声明双精度变量bDimx!,yasInteger,z声明单精度变量x,整型变量y,变体型变量zDims1asString,s2asString*8声明变长字符串变量s1,定长字符串变量s2,9.2.2变量的声明隐式声明,隐式声明即是在使用一个变量之前不声明,直接使用。例:显示声明法:Dima%A=100隐式声明B=200隐式声明的变量为可变类型,易出错、浪费空间,9.2.2变量的声明强制声明,在模块的声明段中使用语句:OptionExplicitVBE中设置:工具选项编辑器要求变量声明,则在后续模块中自动插入OptionExplicit,9.2.2变量数组变量,数组变量必须选定义后使用数组可以有一维数组、二维数组和多维数组数组分静态数组和动态数组,一维静态数组,Dim数组名(下标下界To上界)As类型说明:下标下界缺省为0,下标上界为常数。数组大小为:下标上界-下标下界+1。作用:声明了数组名、类型、维数、数组大小并在内存分配一块连续的区域。例:Dimmark(99)AsInteger,定长(静态)多维数组的声明,当要表示一个平面、一个矩阵、全班同学的成绩等信息时,需要用到多维数组。声明:Dim数组名(下标1下界To上界1,下标下界2To上界2)As类型说明:下标数决定了数组的维数,数组的大小为每一维大小的乘积。Dimx(2,4)AsLong,变长(动态)数组的声明,建立动态数组要分两步:用Dim语句声明数组,但不能指定数组大小Dim数组名()As数据类型用ReDim语句动态地分配元素个数ReDim数组名(下标,下标2),9.2.3常量,1.直接常量直接常量也叫字面常量或普通常量,即在程序中按照不同的数据类型表示直接书写具体的值。例:80,”张三”,True2.符号常量声明符号常量是用一个标识符来代表一个常数值。Const符号常量名=表达式例如:ConstPI=3.14159,9.2.4系统函数,9.2.4系统函数,9.2.4系统函数,9.2.4系统函数,9.2.4系统函数,格式输出函数,Format(表达式,”格式字符串”)例:PrintFormat(12345.678,”000000.0000”)结果为:012345.6780,用0占位PrintFormat(12345.678,”#.#”)对果为:12345.678,不添加占位符PrintFormat(12345.678,”000,000.0000”)结果为:012,345.6780,添加千分位PrintFormat(12345.678,”000,000.0000%”)结果为:1,234,567.8000%PrintFormat(“Hello”,”)结果为:HELLO,9.2.5表达式算术运算符,9.2.5表达式比较运算符,如果两个操作数是数值型,则按其大小进行比较。如果两个操作数是字符型,则按字符的ASCII码值从左到右逐一进行比较,即首先比较两个字符串中的第1个字符,其ASCII码值大的字符串为大;如果第1个字符相同,则比较第2个字符,依此类推,直到出现不同的字符时为止。汉字以机内码为序。例:539结果为:True“53”9”结果为:False,9.2.5表达式字符串连接符,字符串连接符有两个:“&”和“+”,它们的作用是将两个字符串连接起来。如果连接运算符的两边不全是字符串时,比如一个是字符串,另一个是数值或逻辑值时,“&”是先将非字符串操作数转换为字符串,然后做字符串的连接操作;而“+”则是将非数值数据转换为数值,然后进行算术的加运算。例:123”&20结果为:”12320”“123”+20结果为:143,9.2.5表达式逻辑运算符,9.2.5表达式,表达式是将变量、常量、运算符、函数和圆括号按一定规则组成的。表达式运算之后有一个结果,称为表达式的值,值的类型由操作数和运算符共同决定。当一个表达式涉及多个运算符时,就必须考虑运算符的优先级。算术运算符字符串连接符比较运算符逻辑运算符,9.3编写VBA程序,9.3.1编程规则,1.标识符的命名规则2.程序的注释3.语句的构成4.程序书写规则,9.3.2程序的基本结构顺序结构,所谓顺序结构,是指在该结构中,各语句按照出现的先后顺序依次执行。顺序结构是程序设计中最简单、最常用的结构。赋值语句、输入输出语句是常用的顺序结构中的语句。,9.3.2程序的基本结构顺序结构,赋值语句:变量名=表达式A=5输入函数:变量=InputBox(提示,标题,默认内容,X坐标位置,Y坐标位置,帮助文件,帮助文件中的序号)变量=MsgBox(提示,按钮,标题)输出:Debug对象的Print方法Debug.Print34+7MsgBox过程:MsgBox提示,按钮,标题,9.3.2程序的基本结构顺序结构,例:输入任意一个三角形的三条边长,计算三角形的面积。Subtriangle()DimaAsSingle,bAsSingle,cAsSingle,sAsSingle,areaAsSinglea=Val(InputBox(请输入第一条边长,根据边长求三角形面积)b=Val(InputBox(请输入第二条边长,根据边长求三角形面积)c=Val(InputBox(请输入第三条边长,根据边长求三角形面积)s=(a+b+c)/2area=Sqr(s*(s-a)*(s-b)*(s-c)MsgBox三角形的面积为:&area,三角形的面积EndSub,9.3.2程序的基本结构选择结构,1.单分支结构格式1:(单行形式)Ifthen格式2:(多行形式)IfthenEndIf,9.3.2程序的基本结构选择结构,例9.3:己知有两个数x和y,比较它们的大小,并使得x小于y。Ifxythent=xx=yy=tEndIf,9.3.2程序的基本结构选择结构,2.双分支语句格式1:(单行形式)IfthenElse格式2:(多行形式)IfthenElseEndIf,9.3.2程序的基本结构选择结构,例9.4:己知变量score中存放的是某学生的高等数学课成绩,如果该成绩超过60(含60)则输出“及格”,否则输出“不及格”。Ifscore=60ThenDebug.Print“及格”ElseDebug.Print“不及格”EndIf,9.3.2程序的基本结构选择结构,3.多分支语句IfThen语句块1ElseIfThen语句块2ElseIfThenElseEndIf,9.3.2程序的基本结构选择结构,例9-5:根据系统时间给出适当的提示信息。Subprompt()DimcurHourAsIntegerDimstrMessageAsStringcurHour=Hour(Time()IfcurHour6ThenstrMessage=凌晨好!ElseIfcurHour=8ThenstrMessage=早上好!ElseIfcurHour=21ThenstrMessage=晚上好!ElsestrMessage=夜深了,注意休息!EndIfDebug.PrintstrMessageEndSub,9.3.2程序的基本结构选择结构,4.If语句的嵌套IFThenIFThenEndIfElseIfThenEndIfEndIf,9.3.2程序的基本结构选择结构,例9-6:利用InputBox接收用户名和密码。SubcheckPassword()DimstrNameAsString,strPasswordAsStringstrName=Trim(InputBox(请输入用户名:)strPassword=Trim(InputBox(请输入密码:)IfstrName=adminThenIfstrPassword=666ThenMsgBox用户名和密码输入正确!ElseMsgBox密码错误,vbExclamationEndIfElseMsgBox您输入的用户名不存在!,vbExclamationEndIfEndSub,9.3.2程序的基本结构选择结构,5.SelectCase语句SelectCaseCaseCaseCaseCaseElseEndSelect,9.3.2程序的基本结构选择结构,例9-7:根据成绩给出评价SubcheckScore()DimscoreAsSinglescore=Val(InputBox(请输入成绩)SelectCasescoreCaseIs100MsgBox成绩输入错误CaseIs60MsgBox成绩不及格Case60To70MsgBox成绩及格Case70To85MsgBox成绩良好Case85To100MsgBox成绩优秀EndSelectEndSub,9.3.2程序的基本结构循环结构,1.For-Next语句For=Tostep步长循环体(需重复执行的语句块)Next循环变量,例9-8:计算100以内的所有奇数之和。Subsum()S=0Fori=1To100Step2s=s+iNextMsgBox100以内的奇数之和为&sEndSub,9.3.2程序的基本结构循环结构,9.3.2程序的基本结构循环结构,2.While-Wend语句While循环的一般格式:WhileWend,9.3.2程序的基本结构循环结构,例9-9:使用While-Wend语句计算100以内的奇数之和。SubsumW()s=0i=1Whilei100s=s+ii=i+2WendMsgBox100以内的奇数之和为&sEndSub,9.3.2程序的基本结构循环结构,3.DoLoop语句当型循环语法格式:DoWhile|Until.Loop,直到型循环语句格式为:DoLoopWhile|Until,9.3.2程序的基本结构循环结构,例9-10:假设有一项年投资回报率为20%的理财产品,采用复利方式计算,在投资10万元的情况下,编程计算多少年后本息和可超100万元。Subinvestment1()DimyAsIntegerDimfundsAsLongDimtargetAsLongDimrateAsSinglefunds=100000初始资金target=1000000目标收益rate=0.2投资回报率DoWhilefundsyThenmax=xElsemax=yEndIfIfmax=3ThenDoCmd.QuitEndIfElseDoCmd.OpenFormfrm主界面EndIfrs.Closecnn.CloseSetcnn=NothingEndSub,9.6VBA数据库访问技术ADO,9.6.1ADO对象模型,ADO(ActiveXDataObject)对象模型是基于组件的数据库编程接口,在Access的模块设计中要使用ADO的各个组件对象,应该增加对ADO库的引用。,ADO的常用3个成员,1.Connection对象用来建立与数据源的连接,它包含了数据提供程序的信息。2.Command对象用来给出对数据库操作的命令,如查询或者更新数据等。3.Recordset对象存储访问
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民族教育课件
- 网点改革中的新质生产力
- 2025年整形美容科手术术前术后护理评估答案及解析
- 2025年风湿免疫学综合诊疗专项试题答案及解析
- 2025年口腔医学实践技能与理论知识检测答案及解析
- 2025年疼痛管理规范用药操作技能考核答案及解析
- 静定与静不定的概念
- 2025年整形美容科学原理试卷答案及解析
- 2025年呼吸科医生执业能力评估模拟试卷答案及解析
- 2025年儿科常见疾病诊断与治疗实践考核答案及解析
- GB/Z 41084-2021碳纤储能脚
- GB/T 28118-2011食品包装用塑料与铝箔复合膜、袋
- 方坯连铸机图解课件
- 湘教版地理必修一知识点复习
- 热控安装工程施工方案
- 河南单招院校名单
- 医院水、电、气故障报修、排查、处理流程1
- 钢结构厂房旁站监理方案
- 开关电源测试表格
- 公路客运站管理规定
- 建筑公司组织架构及岗位职责
评论
0/150
提交评论