PPT49257-00梁洁-AccssAccess-8_第1页
PPT49257-00梁洁-AccssAccess-8_第2页
PPT49257-00梁洁-AccssAccess-8_第3页
PPT49257-00梁洁-AccssAccess-8_第4页
PPT49257-00梁洁-AccssAccess-8_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

2020/6/7,Access程序设计基础,1,Access程序设计基础(第4版),第8章模块与VBA程序设计,模块是存储用户编写的VBA代码的容器。模块是由VBA通用声明和一个或多个过程组成的集合。过程是能实现特定功能的一段程序。VBA是VisualBasicForApplication的缩写,是微软VisualBasic程序设计语言的一个子集,也叫做宏程序。VBA必须要有一个宿主应用程序才能运行(如在Access中),不能用于创建独立的应用程序。,2020/6/7,Access程序设计基础,2,第8章模块与VBA程序设计,2020/6/7,Access程序设计基础,3,8.1模块的基本概念和创建方法,8.1.1模块的分类,1.标准模块标准模块一般用于存放供其他Access数据库对象使用的公共过程(也称为通用过程),它不从属于窗体、报表等数据库中的其它对象,在系统中以独立的对象存在。2.类模块类模块包含新对象的定义的模块。当创建类的新实例时,即创建新对象。类模块分为三种类型:窗体类模块、报表类模块和自定义类模块。,2020/6/7,Access程序设计基础,4,8.1模块的基本概念和创建方法,8.1.2VBA模块的创建,VBA的编程环境,2020/6/7,Access程序设计基础,5,8.1模块的基本概念和创建方法,VBA代码的书写规范,1.连写和换行通常情况下,程序语句为一句一行。可以选择在一行中写几句代码,用“:”来分开几个语句。可以用续行符空格加下划线“_”将其截断为多行。为清楚的显示程序的流程和结构,采用缩进格式书写程序。2.注释语句使用Rem语句或用英文单引号“”。3.语法检查VBA会自动进行语法检查,当以红色文本显示,并显示一条错误信息。,8.1.2VBA模块的创建,2020/6/7,Access程序设计基础,6,8.1模块的基本概念和创建方法,VBA代码的书写规范-示例,Rem计算圆的面积Subarea()Dims,rAsSingle声明两个变量Constpi=3.14声明常量pir=2s=pi*r2:Rem计算圆的面积Debug.Print圆的面积为:&s:Rem显示计算结果EndSub,8.1.2VBA模块的创建,2020/6/7,Access程序设计基础,7,8.2VBA编程基础,8.2.1数据类型,(1)Byte数据类型长度8位(1个字节)。常用于存储二进制数据。(2)Boolean数据类型的值只能是True或是False。(3)Integer与Long型数据用来存储整型值。(4)Single,Double用来存储浮点型值。(5)Currency一般用来存储货币型数值。(6)String字符串类型又分为变长字符串(String)和定长字符串(String*length)。(7)Date类型用来存储日期值。(8)Variant数据类型是所有在模块中没有被显式声明为其他类型变量的数据类型。(9)Object数据类型用来存储对象。,2020/6/7,Access程序设计基础,8,8.2VBA编程基础,8.2.2常量、变量与数组,1.符号常量符号常量经常用来代表在代码中反复使用的相同的值,或者代表一些具有特定意义的数字或字符串。创建符号常量时需给出常量值,在程序运行过程中对符号常量只能作读取操作,而不允许修改或为其重新赋值,也不允许创建与固有常量同名的符号常量。符号常量使用关键字Const来定义,格式如下:Const符号常量名称=常量值例如,ConstPI=3.14159定义了一个符号常量PI。,常量,2020/6/7,Access程序设计基础,9,8.2VBA编程基础,8.2.2常量、变量与数组,2.固有常量Access内部还声明了许多固有常量。所有的固有常量都可在宏或VBA代码中使用。固有常量有两个字母前缀,指明了定义该常量的对象库。来自Access库的常量以“ac”开头,来自ADO库的常量以“ad”开头,而来自VisualBasic库的常量则以“vb”开头。例如:acForm,adAddNew,vbCurrency,常量,2020/6/7,Access程序设计基础,10,8.2VBA编程基础,8.2.2常量、变量与数组,3.系统定义常量系统定义的常量只有3个:True,False和Null。系统定义常量可以在计算机上的所有应用程序中使用。,常量,2020/6/7,Access程序设计基础,11,8.2VBA编程基础,8.2.2常量、变量与数组,每个变量都有变量名,在其作用域范围内可惟一识别。使用前可以指定数据类型(采用显式声明),也可以不指定(采用隐式声明)。,变量,1.显式声明变量显式声明是指用Dim、Private、Public、Static语句来定义变量的数据类型。如果使用一个没有明确声明的变量,默认声明为Variant数据类型。,2020/6/7,Access程序设计基础,12,8.2VBA编程基础,8.2.2常量、变量与数组,2.隐式声明变量例如:intX%=1234给整型变量intX赋值1234douY#=45665.456给双精度变量douY赋值45665.456strZ$=“ACCESS”给字符串变量strZ赋值“ACCESS”intX%表示intX是一个整型变量,douY#表示douY是一个双精度变量,strZ$表示strZ是个字符串变量,隐式声明的同时给变量进行赋值。,变量,2020/6/7,Access程序设计基础,13,8.2VBA编程基础,8.2.2常量、变量与数组,3.VBA命名规则为VBA模块中的过程、常数、变量以及参数命名时的规则:第一个字符必须使用英文字母。不能在名称中使用空格、运算符、句点(.)、惊叹号(!)、或、&、$,#等字符。名称的长度不能超过255个字符。一般要求名称不能与VisualBasic本身的Function过程、语句以及方法的名称相同。也不能使用与程序语言的关键字相同的名称。不能在范围的相同层次中使用重复的名称。,变量,2020/6/7,Access程序设计基础,14,8.2VBA编程基础,8.2.2常量、变量与数组,4.变量的作用范围(1)局部变量(过程级别变量)。(2)私有变量(私有模块级别变量)。(3)公共变量(公共模块级别变量)。,变量,在过程中用Dim定义的一定是局部变量。z定义为公共变量,x被定义为私有变量,y被定义为局部变量。,2020/6/7,Access程序设计基础,15,8.2VBA编程基础,8.2.2常量、变量与数组,5.静态变量和非静态变量局部变量的生命周期是过程或函数被开始调用到运行结束的时间。非静态变量在过程之间调用时就会丢失数据,静态变量在Access程序执行期间一直存在,其作用范围是声明它的子程序或函数。静态变量可以用来计算事件发生的次数或者是函数与过程被调用的次数。,变量,2020/6/7,Access程序设计基础,16,8.2VBA编程基础,8.2.2常量、变量与数组,数组是用相同名称保存的一组有序的数据的集合。数组的声明可以使用Dim、Static、Private或Public语句。格式为:Dim数组名(下标下界to下标上界)As数据类型Dim数组名(下标下界to下标上界,)As数据类型如果声明了数组的数据类型,则数组中的所有元素必须赋于相同的数据类型。As选项缺省时,数组中各元素为变体数据类型。,数组,2020/6/7,Access程序设计基础,17,8.2VBA编程基础,8.2.2常量、变量与数组,下面的语句声明了三个数组:DimWeek(6)AsdateDimArray2(1To5,1To10)AsIntegerDimArray3(-5to5)AsString,数组,其中Week是大小为7的数组(也称为一维数组,数组的成员个数为7个),Array1是一个大小为510的二维数组,而Array3是大小为11的数组。,2020/6/7,Access程序设计基础,18,8.2VBA编程基础,8.2.3常用标准函数,函数,在VBA中,除模块中创建中可以定义Sub子过程和Function函数过程完成特定功能外,还提供了近百个内置的标准函数。格式如下:函数名(参数1,参数2,参数3,参数4,参数5)每个函数被调用时。都会返回一个返回值。由于函数的参数和返回值都有特定的数据类型,因此使用函数时要注意括号中写入参数的类型,使用函数时要注意函数返回值的数据类型,以免发生错误。,2020/6/7,Access程序设计基础,19,8.2VBA编程基础,8.2.4运算符与表达式,1算术运算符与算术表达式,2020/6/7,Access程序设计基础,20,8.2VBA编程基础,8.2.4运算符与表达式,2字符串连接运算符与字符串表达式,字符串连接符(&)用来连接多个字符串构成一个新字符串。例如执行以下代码后:A=MicrosoftB=AccessC=A&B变量C的值为MicrosoftAccess。在VBA中,“+”既可用作加法运算符,还可以用作字符串连接符,而“&”则专门用作字符串连接运算符。,2020/6/7,Access程序设计基础,21,8.2VBA编程基础,8.2.4运算符与表达式,3关系运算符与关系表达式,2020/6/7,Access程序设计基础,22,8.2VBA编程基础,8.2.4运算符与表达式,4逻辑运算符与逻辑表达式,2020/6/7,Access程序设计基础,23,8.2VBA编程基础,8.2.4运算符与表达式,5对象运算符与对象运算表达式,对象运算表达式中使用“!”和“.”两种对象运算符。“!”运算符的作用是指出随后为用户定义的内容。使用“!”运算符可以引用一个开启的窗体、报表或开启窗体或报表上的控件。“.”运算符通常指出随后为Access定义的内容。例如,使用“.”运算符可以引用窗体、报表或控件等对象的属性。Forms!基本信息引用打开的“基本信息”窗体Reports!各球队成绩报表引用打开的“各球队成绩报表”报表Forms!登录窗口!登录引用打开的“登录窗口”窗体上的“登录”控件,2020/6/7,Access程序设计基础,24,8.2VBA编程基础,8.2.4运算符与表达式,6运算符的优先级,运算符的优先级按以下规则处理:(1)不同类型运算符的优先级:算术运算符连接运算符比较运算符逻辑运算符。(2)所有比较运算符的优先级相同,如果表达式中有多个比较运算符,按从左到右顺序处理。(3)算术运算符按表8.8所列优先顺序处理。(4)括号优先级最高。可以用括号改变优先顺序,强制表达式的某些部分优先进行运算。,2020/6/7,Access程序设计基础,25,8.3程序流程控制,根据流程控制的不同,执行语句可以构成以下3种结构:顺序结构:按照语句的先后顺序执行。选择结构:条件结构或分支结构,根据条件选择执行不同程序分支。循环结构:是根据某个条件重复执行某一段程序语句。,2020/6/7,Access程序设计基础,26,8.3程序流程控制,8.3.1顺序结构,顺序结构是一种简单的结构,按照语句的先后顺序执行。以下面的程序为例,在数据库中新建一个名为“计算圆面积”的标准模块。,2020/6/7,Access程序设计基础,27,8.3程序流程控制,8.3.2选择结构,If语句1.IfThen,2020/6/7,Access程序设计基础,28,8.3程序流程控制,8.3.2选择结构,If语句1.IfThen,2020/6/7,Access程序设计基础,29,8.3程序流程控制,8.3.2选择结构,If语句2.IfThenElse,2020/6/7,Access程序设计基础,30,8.3程序流程控制,8.3.2选择结构,If语句4.IIf函数,iif函数是if语句的一种特殊格式,语法如下:iif(表达式1,表达式2,表达式3)iif函数的作用是:先判断条件表达式1,如果条件为真,返回表达式2的值;否则返回表达式3的值。例如:c=iif(ab,a,b)语句执行语句后,c的值为a和b中的最大值。,2020/6/7,Access程序设计基础,31,8.3程序流程控制,8.3.2选择结构,2SelectCase语句,SelectCase语句的语法格式为:SelectCaseCaseCaseCaseElseEndSelect,2020/6/7,Access程序设计基础,32,8.3程序流程控制,8.3.3循环结构,1.ForNext循环结构,ForNext语句的语法格式如下:For循环变量=初值To终值step步长ExitForNext循环变量,For语句的执行过程:循环变量取初值。检查循环变量的值是否超过终值,若未超过终值,循环继续,执行;若超过终值,则跳过循环体,转而执行Next后面的语句。执行循环体。循环变量增加一个步长值,程序跳转到。,2020/6/7,Access程序设计基础,33,8.3程序流程控制,8.3.3循环结构,2.DoWhileLoop循环结构,2020/6/7,Access程序设计基础,34,8.3程序流程控制,8.3.3循环结构,3.DoUntilLoop循环结构,DoUntilLoop语法格式:DoUntilExitDoLoop,2020/6/7,Access程序设计基础,35,8.3程序流程控制,8.3.3循环结构,4.DoLoopWhile循环结构,DoLoopWhile语法格式:DoExitDoLoopWhile,2020/6/7,Access程序设计基础,36,8.3程序流程控制,8.3.3循环结构,5.DoLoopUntil循环结构,DoLoopUntil语法格式:DoExitDoLoopUntil,2020/6/7,Access程序设计基础,37,8.3程序流程控制,8.3.3循环结构,6.DoLoop循环结构,DoLoop语法格式:DoExitDoLoop,2020/6/7,Access程序设计基础,38,8.3程序流程控制,8.3.3循环结构,7.WhileWend循环结构,WhileWend语法格式:WhileWend,2020/6/7,Access程序设计基础,39,8.3程序流程控制,8.3.4循环语句嵌套,如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。多层循环的执行过程是,外层循环每执行一次,内层循环就要从头开始执行一轮。,2020/6/7,Access程序设计基础,40,8.4过程与过程调用,8.4.1创建过程,1.Sub子过程和调用,Sub子过程和Function函数过程都保存在标准模块中,应该先建立标准模块,然后在标准模块的代码窗口中输入过程代码。,2020/6/7,Access程序设计基础,41,8.4过程与过程调用,8.4.1创建过程,1.Sub子过程和调用,2020/6/7,Access程序设计基础,42,8.4过程与过程调用,8.4.1创建过程,2.Function函数过程和调用,2020/6/7,Access程序设计基础,43,8.4过程与过程调用,8.4.1创建过程,3.事件过程和调用,事件过程用于响应窗体或报表上的事件,当一个事件(如鼠标单击)发生时,会调用与该事件相对应的事件过程。,2020/6/7,Access程序设计基础,44,8.4过程与过程调用,8.4.2参数传递,当一个过程被调用时,主调过程和被调用过程之间一般都有数据传递,即主调用过程的实际参数的数据被传递给被调用过程的形式参数,在VBA中,参数的数据传递有传值(ByVal)和传址(ByRef)两种方式。其语法格式为:Sub过程名(ByRef|ByVal形参列表As数据类型)Function函数名(ByRef|ByVal形参列表As数据类型)如果没有说明,系统的默认调用方式是传址调用(ByRef)。,2020/6/7,Access程序设计基础,45,8.5面向对象的程序设计,8.5.1面向对象程序设计的基本概念,类是一组具有相同属性和操作的对象的集合。在Access应用程序设计中,窗体、标签、文本框、命令按钮等都是系统预定义类,每一个具体的对象,如:具体的窗体Form1、Form2,具体的控件Label1、Label2、Text1、Text2、Command1、Command2等,都是通过相应类产生,隶属于相应类,称为相应类的实例。,1.类,2020/6/7,Access程序设计基础,46,8.5面向对象的程序设计,8.5.1面向对象程序设计的基本概念,2.对象,2020/6/7,Access程序设计基础,47,8.5面向对象的程序设计,8.5.1面向对象程序设计的基本概念,3.对象的属性,2020/6/7,Access程序设计基础,48,8.5面向对象的程序设计,8.5.1面向对象程序设计的基本概念,4.对象的方法,方法是对象本身具有的、可以执行的、实现对象功能的行为过程。每个对象都有其特定的多个方法,每个方法都有系统预定义的方法名。可以通过对象方法名调用方法程序代码,其语法格式为:.Access中除了数据库的表、查询、窗体、报表等对象外,还提供了一个重要的对象:Docmd对象。它的主要功能是通过调用系统内部的方法实现VBA编程中对Access的操作。例如:Docmd.Close,该语句调用Docmd对象的Close方法关闭当前窗体对象。,2020/6/7,Access程序设计基础,49,8.5面向对象的程序设计,8.5.1面向对象程序设计的基本概念,5.事件和事件过程,Access程序段由事件驱动。例如,鼠标单击、窗体或报表打开等。事件是Access窗体及其控件等对象可以识别的、由系统预先定义的动作。每个事件都有其系统预定义的事件名。事件可以分为两类:系统事件和用户事件。系统事件由计算机系统产生,如:计时器事件等。用户事件由用户触发,如:单击事件、双击事件等。,2020/6/7,Access程序设计基础,50,8.5面向对象的程序设计,8.5.1面向对象程序设计的基本概念,5.事件和事件过程,可以通过两种方式来处理窗体、报表或控件的事件响应:一种方式是使用宏对象来设置事件属性;另一种方式是为某个事件编写VBA代码过程(在类模块中),以完成指定动作,这样的代码过程称为事件过程或事件响应代码。实际上,Access中窗体、报表和控件的事件有很多,常用事件有:鼠标事件、键盘事件、窗口事件、对象事件和操作事件等。,2020/6/7,Access程序设计基础,51,8.5面向对象的程序设计,8.5.1面向对象程序设计的基本概念,6.窗体的常用事件,2020/6/7,Access程序设计基础,52,8.5面向对象的程序设计,8.5.1面向对象程序设计的基本概念,7.计时事件,例如,通过使用计时事件Timer在窗体的一个标签上实现自动计时操作(从1开始)。要求:窗体打开时开始计时,点击其上按钮则停止计时,再点击一次按钮继续计时。,2020/6/7,Access程序设计基础,53,8.5面向对象的程序设计,8.5.2DoCmd对象,通过DoCmd对象,可以调用Access内部的方法,就可以在VBA程序中实现对数据库进行操作,例如,打开窗体、打开报表、显示记录、指针移动等。调用格式:DoCmd.方法名参数表方法名是绝大多数宏操作名,参数表列出了该操作的各个参数,这些参数就是在宏设计窗口左下方显示的操作参数,而且参数的顺序也与宏设计窗口中参数显示的顺序一致。DoCmd对象的大多数方法都有参数,有些参数是必需的,而有些参数可选的。如果省略了可选参数,则这些参数将取默认值。,2020/6/7,Access程序设计基础,54,8.5.3域聚合函数,1.DCount函数、DAvg函数、DSum函数2.DMax函数和DMin函数3.DLookup函数4.DoCmd对象的RunSQL方法,8.5面向对象的程序设计,2020/6/7,Access程序设计基础,55,8.5面向对象的程序设计,8.5.4输入和输出函数,1.InputBox函数函数格式:InputBox(Prompt,Title,Default,Xpos,Ypos)语句格式:InputBoxPrompt,Title,Default,Xpos,Ypos2.MsgBox函数函数格式:MsgBox(Prompt,Buttons,Title)语句格式:MsgBoxPrompt,Buttons,Title,2020/6/7,Access程序设计基础,56,8.5面向对象的程序设计,8.5.5面向对象程序设计示例,求解一元二次方程的窗体的设计。,2020/6/7,Access程序设计基础,57,8.5面向对象的程序设计,8.5.6宏与模块,将宏转换为模块,在导航窗格中右键单击窗体或报表,单击“设计视图”。在“设计”选项“工具”组,单击“将窗体的宏转换为VisualBasic代码”或“将报表的宏转换为VisualBasic代码”。在“转换窗体宏”或“转换报表宏”对话框中,进行设置,单击“转换”后,将会弹出转换完毕的消息框。,2020/6/7,Access程序设计基础,58,8.5面向对象的程序设计,8.5.6宏与模块,在模块中执行宏,2020/6/7,Access程序设计基础,59,8.6VBA数据库编程,8.6.1数据库引擎及其接口,所谓数据库引擎实际上是一组动态链接库(DynamicLinkLi

温馨提示

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

评论

0/150

提交评论