Access数据库基础 第8章模块与VBA编程.pptx
《Access数据库基础 第8章模块与VBA编程.pptx》由会员分享,可在线阅读,更多相关《Access数据库基础 第8章模块与VBA编程.pptx(112页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第8章模块与VBA编程,Access数据库基础,虽然Access的交互操作功能非常强大且易于掌握,但是在实际的数据库应用系统中,用户还是希望尽量通过自动操作来达到数据库管理的目的。应用程序设计语言在开发中的应用,可以加强对数据库管理应用功能的扩展。Office中包含VisualBasicforApplication(VBA)。VBA具有与VisualBasic相同的语言功能,它为Access提供了无模式用户窗体以及支持附加ActiveX控件等功能。,本章学习目标通过本章的学习,学生应初步了解模块、变量、函数、类、对象等,掌握三种基本结构的程序设计方法,同时学会编写VBA的过程和模块,能够进行简
2、单的数据库编程及调试方法。,8.1模块的基本概念,模块是Access2010数据库中的一个对象,是一个为了实现事件响应而编写的VBA(可视化基础应用语言)代码集合。模块由声明、语句和过程(Sub和Function)组成。宏和模块都能实现事件响应。宏简单易学,但功能有限,只能实现一个简单的应用系统;模块虽复杂,但功能强大,它除了能实现宏所能实现的所有功能外,还可以实现宏所不能实现的功能,适用于较复杂应用系统的设计。8.1.1模块的分类模块主要可以分为两大类:类模块和标准模块。1.类模块:窗体和报表模块类模块侧重局部作用。作用范围是所属窗体或报表的内部,生命周期随窗体或报表的创建而开始,关闭而结束
3、。其主要用于实现本窗体或报表的功能与其他对象的联系。,8.1模块的基本概念,2.标准模块:公共模块标准模块侧重全局作用。作用范围为整个应用程序,生命周期随应用程序的运行而开始,关闭而结束。其主要用于放置一些供类模块调用的公共变量或过程。程序设计的逻辑关系是比较简洁的,程序的基本单位是语句,若干语句放在一块作为一个独立的单位称过程,若干过程放到一个模块中实现功能。Access2010中的模块包括窗体模块、标准模块和类模块,这些模块都放到工程窗口中(所谓工程就是程序)。8.1.2模块的组成每个模块都包括声明和过程两个部分。声明部分用于声明模块中使用的变量;过程部分是模块的主要组成单元。一个模块由若
4、干个过程组成,子过程(Sub)和函数过程(Function)是过程的两种类型。,8.1模块的基本概念,1.Sub子过程Sub子过程又称为子程序,功能是自定义的语句。一般实现一个简单的功能,无返回值,可以作为独立的事件过程,也可以供其他过程调用。其格式如下:Sub子过程名(参数表列)程序代码EndSub下面所示的代码是一个Sub子过程的源代码,从中可以看到一个Sub子过程的格式。,8.1模块的基本概念,8.1模块的基本概念,2.Function函数过程Function函数过程又称为自定义函数,功能是自定义的操作符。有返回值,不能作为独立的事件过程,主要供其他过程调用。其格式如下:Function
5、函数名(参数表列)程序代码EndFunction下面所示的代码是一个Function函数的源代码,从中可以看到一个Function函数过程的格式。,8.1模块的基本概念,在Access2010中,可以将创建好的宏转换为VBA代码,根据宏的类型区别,转换主要分为两种,第一种是转换窗体或报表中的宏,第二种是转换不属于任何窗体或报表的全局宏。,8.2VBA程序设计的概述,VBA是Access2010数据库中内嵌的编程语言,使用了面向对象的程序设计方法,提供了可视化的编程环境。利用VBA编程可以访问数据库,操作数据库中的记录。1.类和对象类和对象是面向对象编程技术中的最基本的概念。类是现实世界或思维世
6、界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。简而言之,类是对象的抽象,对象是类的具体实例。,8.2VBA程序设计的概述,Access2010中的表、查询、窗体、报表等都是数据库的对象,窗体和报表中也包含控件对象。Access内部提供的向导机制功能强大,能处理基本的数据库操作。在此基础上使用Access内嵌的VBA编写适当的程序代码,可以极大地改善程序功能。Access采用面向对象的程序开发环境,使用其中的VBA可以对表、查询、窗体、报表
7、、页、宏、模块等对象进行操作。2.属性和方法属性和方法描述了对象的性质和行为,其引用格式为“对象.属性”或“对象.方法”。Access中的对象可以是单一对象,也可以是对象的集合。,8.2VBA程序设计的概述,3.事件和事件过程事件是Access窗体或报表及其上的控件等对象可以“识别”的动作,例如在窗体上单击鼠标左键,那么窗体会捕捉到单击事件。在Access数据库系统中,可以通过两种方式处理窗体、报表、控件的事件响应。一种是使用宏对象来设置事件属性;另一种是为某个事件编写VBA代码来完成特定的响应动作,这样的事件响应代码也称为事件过程。【例8-1】新建一个窗体,如图8-1所示,其中包含一个按钮,
8、单击按钮打开“采购订单明细”窗体,命名新建立的窗体为“用VBA打开窗体”。,8.2VBA程序设计的概述,8.2VBA程序设计的概述,3.事件和事件过程事件是Access窗体或报表及其上的控件等对象可以“识别”的动作,例如在窗体上单击鼠标左键,那么窗体会捕捉到单击事件。在Access数据库系统中,可以通过两种方式处理窗体、报表、控件的事件响应。一种是使用宏对象来设置事件属性;另一种是为某个事件编写VBA代码来完成特定的响应动作,这样的事件响应代码也称为事件过程。【例8-1】新建一个窗体,如图8-1所示,其中包含一个按钮,单击按钮打开“采购订单明细”窗体,命名新建立的窗体为“用VBA打开窗体”。,
9、8.2VBA程序设计的概述,【解析】操作步骤如下:(1)打开“罗斯文”数据库,利用窗体设计器制作窗体,如图8-1所示,命名窗体为“用VBA打开窗体”。窗体上有1个按钮,按钮对应的标题是“打开采购订单明细”。(2)在“设计视图”下,选择“采购订单明细”按钮,在弹出的“属性表”对话框中选择“全部”标签,修改按钮名称为“OpenWindow”,如图8-2所示。,8.2VBA程序设计的概述,8.2VBA程序设计的概述,(3)在“设计视图”下,选择“采购订单明细”按钮,在弹出的“属性表”对话框中选择“事件”标签,如图8-3所示,在“单击”旁的下拉菜单中选择“事件过程”,再单击图片按钮,就进入了VBA代码
10、设计的窗体。,8.2VBA程序设计的概述,(4)在“PrivateSubOpenWindow_Click()”中的代码功能,就是名字为“OpenWindow”的按钮被单击时需要完成的任务。在本例中,希望单击按钮后打开“采购订单明细”窗体,因此在“PrivateSubOpenWindow_Click()”与“EndSub”中添加代码“DoCmd.OpenForm采购订单明细”,如图8-4所示。,8.2VBA程序设计的概述,(5)保存窗体,命名为“用VBA打开窗体”,运行窗体,单击按钮,测试单击按钮是否成功调用“采购订单明细”窗口。例8-1中,涉及了窗体中的单击事件,其实在Access2010中,
11、窗体、报表等对象涉及的事件有很多。例如,在如图8-2所示的操作中,修改了按钮的“名称”属性。所以在用VBA进行编程时,经常会用到一些属性和对象。,8.2VBA程序设计的概述,4.VBA常用属性用VBA编程时,常用属性见表8-1,和窗体有关的常用属性见表8-2,和文本框有关的常用属性见表8-3,和标签有关的常用属性见表8-4,和按钮有关的常用属性见表8-5,和图片框有关的常用属性见表8-6,和图像控件有关的常用属性见表8-7,和复选框有关的常用属性见表8-8,和选项按钮有关的常用属性见表8-9,和列表框有关的常用属性见表8-10,和组合框有关的常用属性见表8-11(组合框有许多属性和文本框、列表
12、框的属性相同)。,8.2VBA程序设计的概述,8.2VBA程序设计的概述,8.2VBA程序设计的概述,8.2VBA程序设计的概述,8.2VBA程序设计的概述,8.2VBA程序设计的概述,8.2VBA程序设计的概述,8.2VBA程序设计的概述,在VBA编程中,除了例8-1中使用的单击事件外,还有许多事件可以提高编程的灵活性和效率,这些事件可以大致分为三类:VBA常用事件、控件常用事件、窗体常用事件。5.VBA常用事件用VBA编程时,常用事件见表8-12,和控件有关的常用事件见表8-13,和窗体有关的常用事件见表8-14。,8.2VBA程序设计的概述,8.2VBA程序设计的概述,8.2VBA程序设
13、计的概述,8.2.1数据类型和数据库对象Access数据库系统创建表对象时所涉及的字段数据类型大多在VBA中都有数据类型相对应。1.标准数据类型VBA不但可以使用类型说明标识符号来定义数据类型,还可以使用类型说明字符来定义数据类型,参见表8-15的VBA数据类型说明。,8.2VBA程序设计的概述,8.2VBA程序设计的概述,变体类型是一种特殊的数据类型,除了定长字符串类型及用户自定义类型外,还可以包含其他任何类型的数据。变体类型还可以包含其他Empty、Error、Nothing和Null特殊值。使用时,可以用VarType与TypeName两个函数来检查Variant中的数据。,8.2VBA
14、程序设计的概述,VBA中如果没有显式声明或使用符号来定义变量的数据类型,则默认为变体类型。虽然Variant数据类型十分灵活,但是使用这种数据类型最大的缺点在于缺乏可读性,即无法通过查看代码来明确其数据类型。2.用户定义数据类型在进行VBA编程时,应用过程中可以建立包含一个或多个VBA标准数据类型的数据类型,即用户定义数据类型。它不仅包含VBA的标准数据类型,还包含用户定义数据类型。用户定义数据类型可以在Type和EndType关键字间定义,定义格式如下:,8.2VBA程序设计的概述,Type数据类型名AsAsEndType例如:定义一个学生信息数据类型。,8.2VBA程序设计的概述,上述例子
15、定义了由Num(身份证号)、Name(姓名)、Sex(性别)和Age(年龄)4个分量组成的名为Worker的类型。当需要建立一个变量来保存包含不同数据类型字段的数据表的一条或多条记录时,用户定义数据类型就特别有用。一般用户定义数据类型使用时,首先要在模块区域中定义用户数据类型,然后显示以Dim,Public或Static关键字来定义此用户类型变量。用户定义类型变量的取值,可以指明变量名及分量名,两者之间用句号分隔。例如,定义一个新员工信息类型变量NewWorker并操作分址的例子如下:,8.2VBA程序设计的概述,可以用关键字With简化程序中重复的部分。例如,为上面NewWorker变量赋值
16、可以用:,8.2VBA程序设计的概述,8.2.2常量在VBA编程中,经常使用到文字常量、符号常量和系统常量。常量就是指程序运行中值始终保持不变的量。常量和变量是VBA语言中最基本的语言单位。1.文字常量文字常量的实质就是常数,例如,1024、1.024E-12等都是数值型常量;“版权所有:阳光考试”为字符型常量;#07/06/2014#为日期型常量。2.符号常量符号常量就是使用一个符号来表示常量的值,但是常量的具体类型要结合其值决定,格式如下:Const常量名称=或,8.2VBA程序设计的概述,例如,程序需要计算圆的面积,就会使用到圆周率,为了提高程序的可读性,通常都会使用常量来表达圆周率:C
17、onstPi=3.1416程序中需要使用圆周率的时候,不再直接使用数字3.1416,而是用Pi来代表圆周率常量。8.2.3变量所谓变量,是具有名称的一块存储空间,用来存储可变的数据内容。当程序需要操作某个变量时,就可以通过变量名对存储空间中的变量进行取出或写入。简而言之,变量是指程序运行中值可以改变的量。,8.2VBA程序设计的概述,在VBA中,变量名的命名是需要遵守规则的,常见的一些规则如下:1.变量名的制定应考虑到程序的可读性,最好尽量以符合变量的功能和意义来命名。2.变量名开头是英文字母。3.变量名中间可以是字母、数字、下划线的组合。4.变量名长度不能超过255个字符。5.变量名不区分大
18、小写字母。6.不可使用关键字或与函数名称相同的字来命名。,8.2VBA程序设计的概述,上面列举的规则是必须满足的,在实际的编程中,编程人员还会总结一些额外的命名规则和代码规范。一个好的命名规则和代码规范可以提高程序的可读性,减少错误发生的概率。不同的人有不同的规则和习惯,但在编程过程中,对于个人或工作组而言,通常建议遵守相同的命名规则和代码规范。8.2.4运算符和表达式在使用VBA编程时,会经常使用到VBA运算符,它是VBA程序的重要组成部分。运算符可以分为两大类:一类是通常意义上的运算符,即算术运算符、连接运算符、比较运算符和逻辑运算符;另一类是与语句相关的运算符,即赋值运算符和点运算符。,
19、8.2VBA程序设计的概述,运算符是程序表达式和语句的重要组成部分,通过使用运算符,可对VBA各种元素进行连接,形成VBA表达式或语句。可以说表达式是数字、字符串、常量、变量、对象成员以及运算符的组合。1.算术运算符和表达式算术运算符包括+(加法运算符)、-(减法运算符)、*(乘法运算符)、/(除法运算符)、(整除运算符)、Mod(取模运算符)、(乘幂运算符)。算术运算符的优先顺序依次为:乘幂运算符()乘法和除法运算符(*、/,两者没有优先顺序)整除运算符()取模运算符(Mod)加法和减法运算符(+、-,两者没有优先顺序)。若在同一代码中多次使用同一个算术运算符,则从左到右依次运算。需要注意的
20、是,使用括号可以改变优先顺序。,8.2VBA程序设计的概述,由算术运算符、数值、括号和正负号构成的表达式称为算术表达式,在算术表达式中,括号和正负号的优先级比算术运算符要高,括号比正负号的优先级高,因此用小括号来确定表达式预期的运算顺序是程序员常用的技巧。2.连接运算符和表达式否则,再判断“条件2”,为True时,执行随后的语句,依次类推。当所有的条件都不满足时,执行Else后的语句。例如,下面的语句是通过对成绩分析进行成绩等级的判定。,8.3VBA程序结构,2.SELECTCase语句如果条件复杂,分支太多,使用If语句就会显得累赘,而且程序变得不易阅读。这时可使用SELECTCase语句来
21、写出结构清晰的程序。SELECTCase语句可根据表达式的求值结果,选择程序分支中的一个开始执行。其语法格式如下:,8.3VBA程序结构,在SELECTCase语句的语法中,SELECTCase后面的表达式是必要参数,可为任何数值表达式或字符串表达式。在每个Case后出现表达式,是多个“表达式”的列表。当程序执行到SELECTCase语句时,首先计算表达式的值,然后依次和每个表达式中的值进行比较,条件匹配时程序就会转入相应的语句序列,也不会执行后面的Case分支的语句序列。依次判断Case子句的“表达式”,执行第一个符合条件的Case后面的程序代码。如果有一个以上的Case语句“表达式”成立,
22、则VBA只执行第1个匹配的Case后面的“语句”。若所有的Case子句“表达式”都不成立,则执行CaseElse子句中的“语句”。例如,下面是改写上文If语句的成绩等级判定的例子。,8.3VBA程序结构,SELECTCaseScoreCase91To100Rating=ExcellentCase81To90Rating=GoodCase60To80Rating=AdequateCaseElseRating=NeedImprovementEndSELECT,8.3VBA程序结构,因为分数从1100是连续的分段区间,因此上面的代码也可以改成如下:,8.3VBA程序结构,8.3.3循环结构循环结构和
23、顺序结构、选择结构不同,循环结构中的语句将被反复执行,直到满足某个特定的条件,这对于需要重复执行某些语句序列十分有效。1.DoLoop语句在许多实例中,用户需要重复一个操作直到满足给定条件才停止。例如,用户希望检査单词、句子或文档中的每一个字符,或对有许多元素的数组赋值。一个较为通用的循环结构的形式是DoLoop语句,它的语法格式如下:,8.3VBA程序结构,DoWhile|Until条件语句ExitDo语句Loop或Do语句ExitDo语句LoopWhile|Until条件,8.3VBA程序结构,其中,“条件”是可选参数,是数值表达式或字符串表达式,其值为True或False。如果条件为Nu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 CAD C语言 EXCEL 办公自动化 编程 程序 电脑 系统 网络
限制150内