access模块PPT专业课件.ppt

上传人:知*** 文档编号:97753961 上传时间:2024-06-30 格式:PPT 页数:57 大小:1.06MB
返回 下载 相关 举报
access模块PPT专业课件.ppt_第1页
第1页 / 共57页
access模块PPT专业课件.ppt_第2页
第2页 / 共57页
点击查看更多>>
资源描述

《access模块PPT专业课件.ppt》由会员分享,可在线阅读,更多相关《access模块PPT专业课件.ppt(57页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、7.1VBA程式设计基础程式设计基础 VBA的程序结构的程序结构7.2 面向对象程序设计基础面向对象程序设计基础7.37.4模模块的基本的基本概概念念7.5过程程调用和程序用和程序调试7.1.1 VBA中的常量和变量中的常量和变量1)符号常量:u符号常量必须先定义,后使用。u基本语法格式如下:Public/PrivateConst常量名As类型=表达式u语句功能:定义一个符号常量,并将指定表达式的值赋给符号常量。1、常量、常量 7.1 VBA程序设计基础程序设计基础 u语句说明如下:“常量名”指定符号常量的名称。符号常量名可以由字母、数字和下画线组成,但只能以字母开头,也不能含有空格。“表达式

2、”指定符号常量的值。该表达式通常由数值型、字符型、逻辑型或日期型数据以及各种运算符组成,但在表达式中不能出现变量和函数。public表示这个常量的作用范围是整个数据库的所有模块。private则表示这个常量只在使用该声明常量语句的模块中起作用。F注意:除自定义的符号常量外,VBA还提供了许多符号常量,用户可以直接使用。对于代码比较长,并且在程序中多次使用的常量,通常使用符号常量代替。运行程序时,系统自动把程序中的所有符号常量替换为赋给它的值。2)系)系统定定义常量常量:u系统定义常量有3个值,分别是True、False和Null。3)固有常量)固有常量:u固有常量是Access或引用对象库的一

3、部分,由Access自动定义,并且由程序列与控件提供。用户若需要使用该常量,可以使用对象浏览器来查看所有对象库中的固有常量列表。u在VBA中,常量的数据类型有整型、长整型、单精度型、双精度型、字节型、货币型、字符型、日期型和逻辑型。一个整型数据就是一个整型常量,一个长整型数据就是一个长整型常量。例如,12%、-1%是整型常量,32768&、10000000&是长整型常量,-2.5!、3.14!是单精度实型常量,3.1415926#是双精度实型常量,China、Shanghai是字符型常量,#07/13/200111:45PM#是日期型常量。1)变量名量名u每个变量都有一个名称。变量名指定引用变

4、量时的名称。变量名可以由字母、数字和下划线组成,但只能以字母开头,也不能含有空格,并且变量名的长度不超过255个字符。2、变量、变量 注意:注意:在变量名中,英文字母的大小写等价,即Name12和NAME12表示同一个变量。变量名不能与VBA的保留字重名,即For、Do、End、Sub、Function、While等保留字不能直接作为变量名。给变量命名时,最好做到“见名知意”,选取具有相关意义的英文单词、汉语拼音或拼音的首字母作为变量名,以增加程序的可读性。2)变量的定量的定义变量在使用之前一般先声明。【格式格式】Dim/Public/Private变量名As数据类型注意:注意:使用Dim关键

5、字表示定义本地变量。也就是说,所声明的变量仅在声明的过程和函数中有效。使用Public关键字表示定义公共变量。也就是说,所声明的变量在所有模块的所有过程和函数中都可以使用。使用Private关键字表示定义私有变量。也就是说,所声明的变量只在当前模块的所有过程和函数中有效。7.1.2 VBA的数据类型的数据类型 类型符号数据类型有 效 值默认值Byte 字节02550Integer%整型-32 76832 7670Boolean是/否True 和FalseFalseLong&长整型-2 147 483 6482 147 483 6470Single!单精度负数:-3.402 823E+38-1.

6、401 298E-450正数:1.401 298E-453.402 823E+38Double#双精度负数:-1.797 693 134 862 31E+308-4.940 656 484 124 7E-3240正数:4.940 656 484 124 7E-3241.797 693 134 862 31E+308Currency货币-22 337 203 685922 337 203 6850String$文本或备注根据字符串长度而定Date日期/时间January 1,100December 31,99990Variant任何Empty在VBA程序设计中也需要对使用的变量的数据类型进行声明

7、。7.1.3 操作符和表达式操作符和表达式 1、算术表达式、算术表达式 运运 算算 符符含含 义义优优 先先 级级()括号括号高高低低*或或乘方乘方*、/、乘、除、整除乘、除、整除MOD取模(或取余),取两数取模(或取余),取两数相除的余数相除的余数+、-加、减加、减算术表达式是由数值型变量、常量、函数和数值操作符组成的,用于对数值型数据进行常规的算术运算,如表7-2所示。操作符是表示数据之间运算方式的运算符号,一般根据所处理数据类型的不同可分为算术运算符、字符运算符、关系运算符和逻辑运算符4种。表达式是由常量、变量、函数、操作符及圆括号组成的算式。表达式中的操作对象必须具有相同的数据类型,如

8、果表达式中有不同类型的操作对象,则必须将它们转换成同种数据类型。2、字符表达式、字符表达式 u运算符用于连接两个字符型数据。用字符运算符连接字符型数据组成的表达式是字符型表达式。字符型表达式运算后的结果是一个字符型数据。u字符运算符包括“+”和“&”两个。它们的功能是把运算符右边的字符串连接到左边字符串的尾部,组成一个新的字符串。例如,Visual&Basic的运算结果是VisualBasic。u使用字符运算符进行运算时,如果运算符两边都是字符型数据,“+”与“&”运算的结果相同。如果运算符两边不全是字符型数据,则“+”运算符不能进行运算,“&”运算符可以将非字符型数据转换为字符型数据,再进行

9、运算。例如,VBA+6将显示数据类型不匹配的信息,而VBA&6的结果是VBA6。3、关系表达式、关系表达式 u关系表达式用于数值、字符和日期型数据的比较运算。关系表达式的运算优先级相同,如表7-3所示。运算符含义运算符含义小于大于=大于或等于=等于不等于4、逻辑表达式、逻辑表达式 u逻辑表达式是由逻辑型变量、常量、函数和字符运算符组成的,用来对逻辑型数据进行各种逻辑运算,形成各种简单的逻辑结果运 算 符含 义优 先 级()分组符号高低.Not.逻辑非.And.逻辑与.Or.逻辑或5、表达式的优先级、表达式的优先级u将常量和变量用各种运算符连接在一起构成的式子就叫表达式。u当一个表达式由多个运算

10、符连接在一起时,如果一个表达式中含有多种不同类型的运算符,运算进行的先后顺序由运算符的优先级决定。可见,运算进行的先后顺序是由运算符的优先级决定的。优先级高的运算先进性,优先级相同的运算依照从左向右的顺序进行。优先级优先级高高 低低高高低低算术运算符算术运算符字符串运算符字符串运算符关系运算符关系运算符逻辑运算符逻辑运算符指数运算(指数运算()&+等于(等于(=)逻辑非(逻辑非(Not)负数(负数(-)不等于(不等于()逻辑与(逻辑与(And)乘法和除法(乘法和除法(*、/)小于(小于()取模运算(取模运算(Mod)小于等于(小于等于(=)7.1.4 输入、输出函数输入、输出函数 1、输入函数

11、、输入函数【格式】InputBox(,对话框标题,默认,X坐标,Y坐标)【功能】该函数能生成一个对话框,并显示提示,等待用户输入正文或单击按钮。如果用户单击“OK”按钮或按Enter键,则InputBox函数返回包含文本框中内容的字符串;单击“Cancel”按钮,则此函数返回一个长度为0的字符串()。2、输出函数、输出函数【格式】MsgBox(,按钮形式,对话框标题【功能】该函数能产生一个显示消息的对话框,等待用户单击按钮。【举例】在立即窗口输入:A=InputBox(EnterYourName,输入姓名)b=InputBox(请输入数据)c=a+bMsgBox(c)MsgBox(字符原样输出

12、)MsgBox函数的返回值是一个整数,它与选择的命令按钮有关。MsgBox函数的返回值见表7-5,MsgBox函数的按钮设置值见表7-6。内部常数返回值被单击的按钮vbOK1确定vbCancel2取消vbAbout3终止vbRetry4重试vbIgnore5忽略vbYes6是vbNo7否表表7-6MsgBox函数的返回函数的返回值表7-7MsgBox函数按钮设置值分组内部常数按钮值描 述按钮分组vbOkOnly0只显示“确定”按钮vbOkCancel1显示“确定”和“取消”按钮vbAboutRetryIgnore2显示“终止”、“重试”和“忽略”按钮vbYesNoCancel3显示“是”、“否

13、”和“取消”按钮vbYesNO4显示“是”和“否”按钮vbRetryCancel5显示“重试”和“取消”按钮图标类型vbCritical16关键信息图标,红色Stop标志vbQuestion32询问信息图标?VbExclamation48警告信息图标!VbInformation64信息图标I默认分组vbDefaultButton10第1个按钮为默认按钮vbDefaultButton2256第2个按钮为默认按钮vbDefaultButton3512第3个按钮为默认按钮模式vbApplicationModale0应用模式vbSystemModal4096系统模式7.2.1 VBA程序设计基础程序设

14、计基础 启动Access2010,然后才能进入IDE环境。进入VBA的编程环境有3种方式。(1)直接进入VBA在数据库中,单击“数据库工具”选项卡,在“宏”组中单击“VisualBasic”按钮,可进入VBA的编程环境界面。如图7-21、进入、进入VBA的几种方法的几种方法7.2 VBA 程序结构程序结构(2)创建模块进入VBA在数据库中,单击“创建”选项卡,在“宏与代码”组中单击“VisualBasic”按钮,可进入VBA的编程环境界面。如图7-3所示。(3)通过窗体和报表等大型的设计进入VBA通过窗体和报表等大型的设计进入VBA有2种方法:在窗体或报表设计视图中单击“查看代码”选项按钮,进

15、入VBA,如图7-4所示。通过控件的时间响应进入VBA,在控件的“属性表”窗格中,单击对象事件的“省略号”按钮添加事件过程后,在窗体、报表或控件的事件过程中进入VBA,如图7-5所示。查看代码通过上面的两种方法均可进入VBA的编程环境界面。VBA编程窗口是由一些常用的工具和多个窗口组成,如图7-6所示。下面介绍VBA编辑窗口的界面组成。标题栏:显示应用程序名称和窗口控制按钮。菜单栏:通过执行命令来完成相应的功能。工具栏:提供了对常用功能的快速调用。VBAIDE共提供了4个工具栏:“标准”、“编辑”、“用户窗体”和“调试”工具栏。工程窗口:以树状结构显示主应用程序与窗体、模块及类模块的完整结构,

16、用户可在工程窗口中直接选择窗体或模块,对其进行编辑。属性窗口:用于显示窗体上的某个控件的可见属性及其默认值,通过该属性窗口,还可以对可见属性的值进行直接编辑。代码窗口:用于编写模块的过程代码。本地窗口:本地窗口显示当前过程中所有变量的当前值,它只反映当前过程的情况,所以当程序的执行从一个过程切换到另一个过程时,本地窗口的内容会发生改变。立即窗口:立即窗口用于显示当前过程中的有关信息。监视窗口:监视窗口用于查看指定表达式的值。2、VBA编程环境编程环境7.2.2 常用语句常用语句 (1)赋值语句给变量赋值,就是将指定的数据保存到变量中。VBA使用赋值语句给变量赋值。【格式】=【功能】将表达式的值

17、赋给指定的变量。【说明】1)“=”是赋值号,不是等号。它的功能是将其右侧表达式的值赋给左侧的变量,因此语句中的变量名与表达式不能交换位置。2)表达式指定给变量赋的值。VBA先计算表达式的值,再用计算的结果给变量赋值。1、VBA的书写规则的书写规则uVBA不区分不区分标识符字母的大小写,一律符字母的大小写,一律认为是小写字母。是小写字母。u一行可以一行可以书写多条写多条语句,各句,各语句之句之间以冒号以冒号“:”分开。分开。u一条一条语句可以多行句可以多行书写,以空格加下画写,以空格加下画线“_”来来标识下行下行为续行。行。2、VBA常用语句常用语句 (2)声明语句声明语句用于定义常量、变量、数

18、组和过程。在定义这些内容的同时,也定义了它们的使用范围。【格式】Dim|Static|Private|Public变量名As类型,变量As类型【说明】uVBA允许使用未定义的变量,默认是变体变量。u在模块通用说明部分,加入OptionExplicit语句可以强迫用户进行变量定义。u变量定义语句及变量作用域:Dim变量As类型定义为局部变量,如DimxyzAsintegerPrivate变量As类型 定义为私有变量,如PrivatexyzAsbytePublic变量As类型定义为公有变量,如PublicxyzAssingleGlobal变量As类型定义为全局变量,如GloblalxyzAsdat

19、eStatic变量As类型定义为静态变量,如StaticxyzAsdouble一般变量作用域的原则是,哪部分定义就在哪部分起作用,模块中定义的只在该模块中那作用。(3)注释语句【格式1】Rem注释内容【格式2】注释内容【功能】注释语句用来说明程序中某些语句的功能和作用。在VBA中可以使用以上两种方法标示注释语句,其中单引号可以定义全局变量,可以位于一行中其他语句的后面,也可单独一行;而Rem可以定义全局变量,只能单独一行。3、运行、运行VBA程序程序 u程序代码存盘后,可以用以下两种方式执行它,程序运行结果将显示在主窗口中。打开代码窗口,选择“运行”菜单“运行子过程/用户窗口”命令。打开代码窗

20、口,单击工具栏中的“运行子过程/用户窗口”按钮。7.2.3 程序流程控制程序流程控制 u顺序结构是一种线形结构,是最基本的程序结构,它是按照命令或语句的排列顺序的,依次执行。1、顺序结构、顺序结构 【例7-1】通过键盘输入圆的半径R,通过计算圆面积公式S=R2计算出圆的面积S,最后输出该圆的面积S。PrivateSubprg2()DimRAsIntegerR=InputBox(请输入半径)输入一个数值,赋值给变量RS=3.1416*R*R将计算结果存储到变量S中Debug.Print圆的面积S=,S显示字符串及变量S的值EndSub7.2.3 程序流程控制程序流程控制 u选择结构又称为分支结构

21、,是根据给定的条件是否为真来决定执行不同的分支,完成相应的操作。2、选择结构、选择结构 1)简单选择语句【格式】If条件表达式Then语句1Else语句2【功能】如果为真(.T.),则执行“语句1”;如果没有Else,执行下一句。如果有Else语句2选项,当为假时,执行“语句2”。uP245【例7-2】,【例7-3】【格式格式1】If条件条件Then语句句组Else语句句Endif【格式格式2】If条件条件Then语句句组1Else语句句组2Endif【功能】在执行时也是首先判断条件是否成立。如果成立,则执行语句组1;否则,执行Else后的语句组2。如果条件不成立,又没有Else部分,则跳过该

22、语句。其中,语句组1和语句组2可以是多条VBA可执行语句。注意:结构化选择语句的Then后不能放入其他语句,否则会被当做简单选择语句来处理。当条件不成立时,可以在Else的后面再用If语句进行进一步判断,这时就形成了选择语句的嵌套形式。2)结构化的构化的选择语句句u结构化的选择语句由If开头,Endif结尾,其语句结构如下。3)多分支选择语句u多分支选择语句又称为情况语句【格式】SelectCase测试条件Case条件1语句1Case条件2语句2Case条件n语句nCaseElse语句n+1EndSelect【功能】当条件成立时,程序执行该Case下面的语句;如果没有一个条件成立,则执行Cas

23、eElse后面的语句n+1。4)选择结构的嵌套构的嵌套在IF语句的Then分支和Else分支中可以完整地嵌套另一IF语句或SelectCase语句,同样SelectCase语句每一个Case分支中都可嵌套另一IF语句或另一SelectCase语句。选择结构的嵌套不允许交叉。比如下面的几个选例中(a)、(b)嵌套形式正确,(c)嵌套形式错误,不能交叉。5)与)与选择相关的几个函数相关的几个函数IIF函数:IIf(条件式、表达示1,表达示2)【说明】条件为真,返回表达式1的值;为假,返回表达示2的值例如:y=IIf(ab,a,b)如果ab为真,返回a,为假则返回。即返回a,b中较大的值。Switc

24、h函数:switch(条件式1,表达式1条件式2,表达式2)【说明】条件式与表达式成对出现,如条件式为真,则返回对应表达式的值例如:y=switch(x0,1,x=0,0,x0满足,则y=1。Choose函数:Choose(索引式,选项1,选项2,选项n)【说明】根据索引式的值返回选项列表中的某个值例如:y=choose(x,1,m,7,n)如果x=2,则y=m,即返回第二个选项的值。3、循环结构、循环结构 (1)WhileWend循循环语句句WhileWend循环语句是当条件成立时执行循环体,故称为当型循环,其语句结构如下。【格式】While条件循环体Wend【功能】WhileWend循环语

25、句是结构化循环语句,当条件成立时执行一次循环体,然后再进行条件判断;若条件成立,再执行一次循环体。如此反复,直到判断条件不成立时结束循环语句。在使用该类循环时,在循环体中一定要有使循环条件不成立的语句,否则将是一个死循环。P249【例例7-7】【格式格式1】DoWhile|UntilExitDoLoop【格式格式2】DoLoopWhile|Until2)DoWhileLoop语句句通过Do执行循环有如下两种格式。注意注意格式1和格式2的区别:格式2中的循环代码至少被执行一次,格式1中的循环可能一次也执行不到。P250【例例7-8】,【例例7-9】3)ForNext循循环语句句ForNext循环

26、语句常用于循环次数已知的程序,其语句结构如下。【格式格式】For循环控制变量=初值To终值Step步长NextF注意:注意:其中,“Step步长”可以省略,步长默认值为1。循环控制变量的初值和终值的设置受步长的约束。当步长为负数时,初值必须大于终值才能执行循环体;当步长为正数时,初值必须小于终值才能执行循环体。P251【例例7-10】4)循)循环的嵌套的嵌套如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定。循环嵌套要注意以下事项。1)内循环变量与外循环变量不能同名;2)外循环必须完全包含内循环,不能交叉;3)不能从循环体外转向循环体内,也不能从外

27、循环转向内循环。举例:用ForNext循环嵌套编写能在立即窗口输出5行5列的花“*”,事件代码如下:Public Sub prg1()Dim i As Integer,j As IntegerFor i=1 To 5 For j=1 To 5 Debug.Print *;Next j Debug.PrintNext iEnd Sub7.2.4 数组数组 1、声明数组、声明数组 数组是包含相同数据类型的一组变量的集合。通过数组索引下标对数组中的单个变量进行引用。数组在内存中表现为一个连续的内存块,必须用Global或Dim语句来定义。【格式格式】Public/Private/Static/Dim

28、数数组名名(下下标To上界上界)As数据数据类型型【说明明】1)数组下标默认为0,上述例子中上界为8,共9个元素。也可以手工指定数组下标,如DimSZ(1To8)AsInteger。2)通常可以通过一个For循环处理数组。3)在模块的声明部分使用“OptionBase1”语句,可以将数组下标默认值由0改为1。2、二维数组和多维数组、二维数组和多维数组【格式格式】Dim数组名(下标To上界,下标To上标,)As数据类型3、动态数组、动态数组【格式格式】DimArray()然后用ReDim语句配置数组个数。ReDim语句声明只能用在过程中,它是可执行语句,可以改变数组中元素的个数,但不能改变数组的

29、维数。每次用ReDim语句配置数组时,原有数组的值全部清零。P254【例例7-11】7.3.1 基本概念基本概念 1、对象、对象7.3 面向对象程序设计基础面向对象程序设计基础 u所谓对象,就是代码和数据的组合,可将它看作为单元。例如,表、窗体或文本框等都是对象。每个对象由类来定义。现实生活的对象就是一个具体的事物。自然界的任何一个具体的事物都可以看作是一个对象。一个人、一本书、一部电话、一台电脑和一架飞机等都是对象。u在面向对象的程序设计中,对象是一个具有属性和方法的实体,是面向对象程序设计的基本元素。在VBA中,每个可以操作的实体都是对象。例如,窗体、按钮、文本框、列表框等都是常用的对象。

30、对象是VBA应用程序的基本单元,VBA提供了各种标准对象,我们可以在程序中直接使用这些对象。u现实生活中的对象可以包含其他对象。例如,一台电脑是一个对象,它又包含组成电脑的主机、显示器、键盘和鼠标等对象。u面向对象程序设计中的对象也可以包含其他对象,如创建的窗体是一个对象,它又包含命令按钮和标签等对象。包含其他对象的对象称为容器对象。u所谓属性,是指定义的对象特征,如大小、颜色和对象状态等。现实生活中的每个对象都有许多特性,每个特性都有一个具体的值。例如,某个人的姓名是李晓明,性别是男,身高是1.78米,体重是75公斤,出生日期是1988年12月31日。则姓名、性别、身高、体重和出生日期等就是

31、该对象的特性,李晓明、男、1.78米、75公斤、1988年12月31日等则是描述该对象特性的具体数据。u在面向对象程序设计中,对象的特性称为对象的属性,描述该对象特性的具体数据称为属性值。每个对象有多个属性,每个属性有属性值。以“变色”为例。P255【例例7-12】2、对象的属性和属性值、对象的属性和属性值 u事件就是对象可以识别和响应的操作。它是预先定义的特定操作。不同对象能够识别不同的事件。例如,电话对象能识别拿起电话听筒这个操作。当需要接听电话时,拿起电话听筒就可以接听对方的电话。当需要打出电话时,拿起电话听筒就可以拨号呼叫对方。因此,拿起电话听筒这个操作就是电话对象的事件。u在VBA中

32、,事件也是一种预先定义好的特定动作。如单击鼠标(Click)、双击鼠标(DblClick)、移动鼠标(MouseMove)或按键盘上的某个键等都是事件,当系统装载对象(Load)、初始化对象或遇到导致错误的代码时也会发生事件。也就是说,VBA中的事件可以由用户激发,也可以由程序或系统激发。3、事件、事件 u方法就是事件发生时对象所执行的操作。方法与对象紧密联系。例如,拿起电话听筒这个事件发生时,电话就执行通话的操作,通话就是拿起电话听筒这个事件的方法。uVBA中的方法是事件发生时执行的一段内部程序,即事件过程代码。这些代码指定事件发生时对象需要完成的操作。VBA提供了许多常用的方法,我们可以直

33、接调用这些方法,但有些方法则需要我们编写代码来实现。u某一种类型的对象具有一些共同的属性,将这些共同属性抽象出来就组成一个类。例如,每个人都有姓名、性别、身高、体重和出生日期等属性,将所有人具有的共同属性抽象出来就组成人类,每个具体的人都是人类中的一个对象。类就像某一种类型对象的模板,基于类可以生成相同类型的任何一个对象,这些对象具有类的所有属性。面向对象的程序设计引入类这个概念后,用户创建一个对象只需从相应的类中生成一个对象,再设置具体的属性值即可,并不需要从最基础的部分开始设计。如创建命令按钮对象时,就是直接从VBA的命令按钮类中创建命令按钮,再设置其属性值。4、方法、方法 5、类、类 7

34、.3.2 VBA对象设计的操作方法对象设计的操作方法 1、使用、使用VBA开发应用程序的基本方法开发应用程序的基本方法 u程序设计需要根据不同的问题设计不同的解决方案,每个程序都有自己独特的功能。虽然程序的编码可能是千变万化、互不相同的,但是使用面向对象程序设计语言开发应用程序却是有一定的规律可循的。1使用VBA开发应用程序的基本方法VBA充分体现了面向对象程序设计的特点。使用VBA开发应用程序的基本步骤如下。1)设计应用程序的界面。2)设置对象的属性值。3)编写事件过程代码。4)运行调试程序。5)保存程序。说明明设计应用程序界面的主要工作是创建窗体和向窗体设计器添加控件。从工具箱中可以看到各

35、种控件的形状互不相同,从实例1可以看出,控件属性的不同值决定控件的大小、位置、颜色、显示内容的不同,因此,掌握控件的功能和属性对于设计用户界面是非常必要的。使用VBA开发应用程序的基本方法并不是一成不变的。也可以在添加一个控件后,紧接着就设置控件的属性值和编写事件过程代码,再添加下一个控件,并进行相同的操作。不过,按照上述基本方法操作,条理性和规范性要强一些。VBA还可以将应用程序编译成可执行文件,并且编译生成的可执行文件可以脱离VBA开发环境直接在Windows中运行。u面向对象程序设计方法与传统的结构化程序设计方法有较大差别。使用结构化程序设计方法设计前面介绍的系统主界面时,需要自己编写代

36、码定义窗口,定义按钮,需要设计程序流程和程序结构。而使用面向对象程序设计方法设计该显示界面时,我们既不需要定义窗体、标签控件和命令按钮控件,也不需要考虑程序流程和程序结构,而是直接使用系统提供的窗体、标签控件和命令按钮控件,在屏幕上“画”出窗口、按钮、标签等不同类型的对象,为这些对象设置属性,确定标签控件和命令按钮控件的位置、大小,编写鼠标单击命令按钮事件对应的功能代码。u结构化程序设计方法的程序运行时按照预定的流程执行。面向对象程序设计方法的程序运行时按照事件发生的顺序执行程序代码,这就是面向对象程序的事件驱动机制。掌握各种控件的属性、事件,正确编写事件过程代码和灵活运用系统提供的方法,对使

37、用VBA设计应用程序是非常必要的。u使用面向对象的程序设计方法编写程序时,要按照事件驱动机制的要求,仔细分析程序运行中可能产生的每一个事件和对应的方法。如果事件发生时需要程序执行某些代码实现某种功能,则应将这些代码编写成该事件的过程代码;如果事件发生时不需要执行任何代码,则不必为这些事件编写过程代码,程序运行时系统将忽略这些事件,事件发生时也不会有任何反应。2、程序的事件驱动机制、程序的事件驱动机制 3、Access事件事件 u事件是一些操作,事件发生一般是由操作界用面触发的,如单击、双击或按下键盘上的键。此时,该项操作产生消息通知Access系统,让数据库知道发生了什么事情,Access系统

38、根据发生事件的种类来决定如何处理执行宏或VBA代码。uAccess事件只存在于窗体和报表中,如窗体的打开、关闭会产生事件。窗体和报表都有各自的事件,窗体和报表中的每个控件也都有各自的事件。为满足精确控制系统运行的需要,事件非常多。而大部分的事件不需要用户干预,Access按默认的方法处理事件。为了提高系统的功能,可为少量的事件定义自己的处理方法,定义宏或编写VBA代码。Access事件分成8类,如表7-8所示。分类事件类名称功能说明1数据事件当输入、删除或修改数据时,或者当屏幕焦点从一条记录移动到另一条记录时2错误和时间事件当处理数据发生错误时,或按一定事件间隔发生事件3筛选事件当在窗体上应用

39、创建一个筛选时4焦点事件当一个窗体或控件失去或获得焦点,或活动和不活动时5键盘事件当用键盘输入数据或者使用SendKeys操作发送数据时6鼠标事件当进行鼠标操作时7打印事件当打印报表时8窗口事件当打开、重新调整大小或者关闭一个窗体或报表时7.3.3 VBA对象设计的常见操作对象设计的常见操作 1、打开对象的操作、打开对象的操作 1)打开窗体操作)打开窗体操作【格式】DoCmd.OpenFormformname,view,filtername,wherecondition,datamode,windowmode,openargs参数说明formname字符串表达式,代表当前数据库中的窗体的有效名

40、称。如果在程序数据库中执行包含OpenForm方法的VisualBasic代码,则MicrosoftAccess首先会在程序数据库中,使用该名称搜索窗体,然后再到当前数据库中搜索。view下列固有常量之一:acDesignacFormDSacNormal(默认值)acPreviewacNormal在“窗体”视图中打开窗体。如果不设置该参数,将假设为默认常量(acNormal)。windowmode下列固有常量之一:acDialogacHiddenacIconacWindowNormal(默认值)如果不设置该参数,将假设为默认常量(acWindowNormal)。参数说明reportname字符

41、串表达式,代表当前数据库中的报表的有效名称。如果在程序数据库中执行包含 OpenReport 方法的 Visual Basic 代码,Microsoft Access 将首先在程序数据库中,使用该名称搜索报表,然后再到当前数据库中搜索。view下列固有常量之一:acViewDesignacViewNormal(默认值)acViewPreview如 果 该 参 数 空 缺,将 假 设 为 默 认 常 量 (acViewNormal)。acViewNormal将立刻打印报表。filtername字符串表达式,代表当前数据库中查询的有效名称。wherecondition字符串表达式,不包含WHERE

42、关键字的有效SQLWHERE子句。(2)打开)打开报表操作表操作【格式】DoCmd.OpenReportreportname,view,filtername,wherecondition【说明】格式中的参数说明如表7-10所示。例:预览名为“学生基本情况表”的报表的操作。DoCmd.OpenReport“stuinf”,acViewPreview2、关闭对象的操作、关闭对象的操作【格式格式】DoCmd.Closeobjecttype,objectname,save3、VBA编程验证数据编程验证数据 函数名称返回值说 明IsNumericBoolean值指出表达式的运算结果是否为数值。返回Tru

43、e,为数值IsDateBoolean值指出一个表达式是否可以转换成日期。返回True,可转换IsNullBoolean值指出表达式是否为无效数据(Null)。返回True,是无效数据IsEmptyBoolean值指出变量是否已经初始化。返回True,未初始化IsArravBoolean值指出变量是否为一个数组。返回True,为数组IsErrorBoolean值指出表达式是否为一个错误值。返回True,有错误IsObject Boolean值指出标识符是否表示对象变量。返回True,为对象P261【例例7-13】4、计时事件、计时事件 uVB中提供Timer时间控件可以实现“定时”功能。但VBA

44、并没有直接提供Timer时间控件,而是通过设置窗体的“计时器间隔(TimerInterval)”属性与添加“计时器触发(Timer)”事件来完成类似“定时”功能。u其处理过程是:Timer事件每隔TimerInterval时间间隔就会被激发一次,并运行Timer事件过程来响应。这样重复不断,即实现“定时”处理功能。P262【例例7-14】,P263【例例7-15】5、鼠标和键盘事件处理、鼠标和键盘事件处理 6、用代码设置、用代码设置Access选项选项(1)鼠)鼠标操作操作(2)键盘操作操作P266【例例7-16】uAccess系统环境有许多选项设定(工具/选项菜单项),值不同会产生不同的效果

45、。比如当程序中执行某个操作查询(更新、删除、追加、生成表)时,有些环境会弹出一些恼人的提示信息要求确认等。所有选项设定均可在Access环境下静态设置,也可以在VBA代码里动态设置。其语法为:Application.SetOption(OptionName,Setting)P266【例例7-17】7.4.1 宏、模块和宏、模块和VBA 7.4 模块的基本概念模块的基本概念 u虽然宏很好用,但它运行的速度比较慢,也不能直接运行很多Windows程序。尤其是不能自定义一些函数,这样当我们要对某些数据进行一些特殊的分析时,它就无能为力了。u由于宏具有这些局限性,所以在给数据库设计一些特殊的功能时,需

46、要用到“模块”对象来实现,而这些“模块”都是由VBA语言来实现的。使用它编写程序,然后将这些程序编译成拥有特定功能的“模块”,以便在Access中调用。uVisualBasic,就是微软公司推出的可视化BASIC语言,用它来编程非常简单。因为它简单,而且功能强大,所以微软公司将它的一部分代码结合到Office中,形成我们今天所说的VBA。它的很多语法继承了VisualBasic,所以我们可以像编写VisualBasic语言那样来编写VBA程序,以实现某个功能。当这段程序编译通过以后,将这段程序保存在Access中的一个模块里,并通过类似在窗体中激发宏的操作那样来启动这个“模块”,从而实现相应的

47、功能。u“模块”和“宏”的使用方法差不多。其实Access中的“宏”也可以存成“模块”,这样运行起来速度还会更快呢。“宏”的每个基本操作在VBA中都有相应的等效语句,使用这些语句就可以实现所有单独“宏”命令,所以VBA的功能是非常强大的。如果你要用Access来完成一个复杂的桌面数据库系统,你就应该掌握VBA,它可以帮助用户实现很多功能。但如果你只是偶尔使用一下Access或者只是用Access来做一些简单的工作,那么只要简单了解一下它就可以了。1.类模块类模块2.标准模块标准模块u类模块是可以定义新对象的模块。新建一个类模块,也就是创建了一个新对象。模块中定义的过程将变成该对象的属性或方法。

48、类模块可以独立存在,也可以与窗体或报表同时出现。u标准模块包括通用过程和常用过程,它们不与任何对象相关联,并且可以在数据库中的任何位置运行。标准模块一般用于存放供其他对象使用的公共变量或过程,也可以定义私有变量或私有过程仅供本模块使用。7.4.2 模块的分类模块的分类 7.4.3 创建模块创建模块 u模块中包含有各种各样的函数与过程。一般的模块不能调用,只有类模块才能在设计中调用。如果想调用一般模块中的过程或者函数,可以在该模块中编写过程或函数的时候,将该过程或函数定义为公共对象。下面介绍模块和过程的创建。u在Access中,模块是Access的一个对象,它由过程组成,而过程的代码必须由程序员

49、或用户以“手动”方式编写。P268【例例7-18】7.4.4 创建过程创建过程 Sub过程是程是执行一系列操作的行一系列操作的过程,以关程,以关键字字Sub开始,并以开始,并以EndSub结束。束。Sub过程的程的语法法结构如下。构如下。【格式格式】Public|PrivateStaticSub子过程名(形参列表)ExitSubEndSub1Sub过程过程P270【例例7-19】u如果用户需要在窗体或报表中重复使用某一表达式,可以使用一个函数过程代替这个表达式。Function过程的语法结构如下。【格式】Function函数过程名(参数表列)As类型语句块过程名=表达式ExitFunction

50、语句块EndFunctionP271【例例7-20】2Function过程过程7.4.5 编写事件过程编写事件过程 uAccess中的程序设计是一种面向对象的程序设计,而面向对象的程序设计中很重要的一点就是为对象事件编写事件代码。对象还有现成的方法可以调用,而为自己创建的对象编写独立的代码也是在编写中经常用到的方法。下面用实例介绍如何编写事件代码。P272【例例7-21】7.4.6 在在VBA中执行宏中执行宏u在VBA中,可使用DoCmd对象的RunMacro方法执行已建好的宏。如果要将RunMacro操作添加到VBA过程中,请在过程中添加DoCmd对象的RunMacro方法,然后指定要运行的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁