《ACCESS实例教程(第8章vba)》由会员分享,可在线阅读,更多相关《ACCESS实例教程(第8章vba)(149页珍藏版)》请在金锄头文库上搜索。
1、ACCESSACCESS实例教程实例教程 模块的操作(第模块的操作(第模块的操作(第模块的操作(第8 8章)章)章)章)ACCESS实例教程1. .模块的基本概念模块的基本概念2. . VBA程序设计基础程序设计基础3. . VBA函数的使用函数的使用4. .模块的建立与使用模块的建立与使用5. .过程与参数传递过程与参数传递本章要点:本章要点:ACCESS实例教程VBAVBA(Visual Basic for Application)(Visual Basic for Application)是是是是Microsoft OfficeMicrosoft Office系列软件的系列软件的系列软件
2、的系列软件的内置编程语言内置编程语言内置编程语言内置编程语言; ;其语法结构与其语法结构与其语法结构与其语法结构与Visual BasicVisual Basic编程语言互相兼容编程语言互相兼容编程语言互相兼容编程语言互相兼容; VB; VB是微软是微软是微软是微软公司推出的可视化公司推出的可视化公司推出的可视化公司推出的可视化BASICBASIC语言,是一种编程简单、功能强语言,是一种编程简单、功能强语言,是一种编程简单、功能强语言,是一种编程简单、功能强大的面向对象开发工具,我们可以像编写大的面向对象开发工具,我们可以像编写大的面向对象开发工具,我们可以像编写大的面向对象开发工具,我们可以
3、像编写VBVB程序那样来编程序那样来编程序那样来编程序那样来编写写写写VBAVBA程序。程序。程序。程序。采用的是面向对象的编程机制和可视化的编程环境。采用的是面向对象的编程机制和可视化的编程环境。采用的是面向对象的编程机制和可视化的编程环境。采用的是面向对象的编程机制和可视化的编程环境。 用用用用VBAVBA语言编写的代码,将保存在语言编写的代码,将保存在语言编写的代码,将保存在语言编写的代码,将保存在AccessAccess中的一个模块里,中的一个模块里,中的一个模块里,中的一个模块里,并通过类似在窗体中激发宏的操作那样来启动这个模块,并通过类似在窗体中激发宏的操作那样来启动这个模块,并通
4、过类似在窗体中激发宏的操作那样来启动这个模块,并通过类似在窗体中激发宏的操作那样来启动这个模块,从而实现相应的功能。从而实现相应的功能。从而实现相应的功能。从而实现相应的功能。VBAVBA简介简介ACCESS实例教程注意:注意:pVB语言开发系统是独立运行的开发环境,它创语言开发系统是独立运行的开发环境,它创建的应用程序可以独立运行在建的应用程序可以独立运行在Windows平台上;平台上;p而而VBA则不同,其编程环境和则不同,其编程环境和VBA程序都必须程序都必须依赖依赖Office应用程序(如应用程序(如Access、Word、Excel等)。等)。VBAVBA简介简介ACCESS实例教程
5、VBAVBA编程环境编程环境在在在在Access 2003Access 2003提供的提供的提供的提供的“ “模块模块模块模块” ”数据库数据库数据库数据库对象对象对象对象中,中,中,中,使用使用使用使用VBAVBA程序设计语言,在不同的模块中实现程序设计语言,在不同的模块中实现程序设计语言,在不同的模块中实现程序设计语言,在不同的模块中实现VBAVBA代码设计,可以解决实际开发中的复杂应用。代码设计,可以解决实际开发中的复杂应用。代码设计,可以解决实际开发中的复杂应用。代码设计,可以解决实际开发中的复杂应用。 要用要用要用要用Access 2003Access 2003来完成一个实际的数据库
6、应用来完成一个实际的数据库应用来完成一个实际的数据库应用来完成一个实际的数据库应用系统,就应该掌握系统,就应该掌握系统,就应该掌握系统,就应该掌握VBAVBA。ACCESS实例教程 8.1 8.1 认识模块对象认识模块对象 模模模模块块块块是是是是由由由由声声声声明明明明、语语语语句句句句和和和和过过过过程程程程组组组组成成成成的的的的集集集集合合合合,以以以以VBAVBA(VisualVisualBasicBasicforforApplicationApplication)语语语语言言言言编编编编写写写写,作作作作为一个已命名的单元存储在一起。为一个已命名的单元存储在一起。为一个已命名的单元
7、存储在一起。为一个已命名的单元存储在一起。 模模模模块块块块有有有有2 2种种种种类类类类型型型型:类类类类模模模模块块块块和和和和标标标标准准准准模模模模块块块块。使使使使用用用用模模模模块块块块可可可可以在实际开发中实现较为复杂的功能。以在实际开发中实现较为复杂的功能。以在实际开发中实现较为复杂的功能。以在实际开发中实现较为复杂的功能。ACCESS实例教程(1 1)模块:模块:模块:模块:模块由一个或多个过程组成,每个过程实现一个模块由一个或多个过程组成,每个过程实现一个模块由一个或多个过程组成,每个过程实现一个模块由一个或多个过程组成,每个过程实现一个或几个功能。模块的执行通过特定事件激
8、发相应的事件或几个功能。模块的执行通过特定事件激发相应的事件或几个功能。模块的执行通过特定事件激发相应的事件或几个功能。模块的执行通过特定事件激发相应的事件过程实现。过程实现。过程实现。过程实现。(2 2)事件过程:事件过程:事件过程:事件过程:事件过程是一组代码,用于响应窗体事件或事件过程是一组代码,用于响应窗体事件或事件过程是一组代码,用于响应窗体事件或事件过程是一组代码,用于响应窗体事件或报表事件。报表事件。报表事件。报表事件。(3 3)类模块类模块类模块类模块:类模块是包含代码和数据的集合,可以看作是类模块是包含代码和数据的集合,可以看作是类模块是包含代码和数据的集合,可以看作是类模块
9、是包含代码和数据的集合,可以看作是没有物理表示的控件,总是与某一特定的窗体或报表相没有物理表示的控件,总是与某一特定的窗体或报表相没有物理表示的控件,总是与某一特定的窗体或报表相没有物理表示的控件,总是与某一特定的窗体或报表相关联。窗体模块和报表模块都属于类模块。关联。窗体模块和报表模块都属于类模块。关联。窗体模块和报表模块都属于类模块。关联。窗体模块和报表模块都属于类模块。(4 4)标准模块:标准模块:标准模块:标准模块:标准模块是代码的集合,包含的过程不与任标准模块是代码的集合,包含的过程不与任标准模块是代码的集合,包含的过程不与任标准模块是代码的集合,包含的过程不与任何其他对象相关联,是
10、数据库对象使用的公共过程,保何其他对象相关联,是数据库对象使用的公共过程,保何其他对象相关联,是数据库对象使用的公共过程,保何其他对象相关联,是数据库对象使用的公共过程,保存在数据库窗口中。存在数据库窗口中。存在数据库窗口中。存在数据库窗口中。8.1.1 8.1.1 模块的基本概念模块的基本概念 ACCESS实例教程 8.1.2 8.1.2 启动启动AccessAccess的编程界面的编程界面 AccessAccess的编程界面称为的编程界面称为的编程界面称为的编程界面称为VBEVBE(VisualBasicEditorVisualBasicEditor),是),是),是),是Microsof
11、tOfficeMicrosoftOffice所有组件公用的程序编辑系统。所有组件公用的程序编辑系统。所有组件公用的程序编辑系统。所有组件公用的程序编辑系统。方法方法方法方法1 1:在窗体或报表设计视图中选控件在窗体或报表设计视图中选控件在窗体或报表设计视图中选控件在窗体或报表设计视图中选控件单击标准工具栏的单击标准工具栏的单击标准工具栏的单击标准工具栏的“生成器生成器生成器生成器”按钮按钮按钮按钮在在在在“选择生成器选择生成器选择生成器选择生成器”对话框中选择对话框中选择对话框中选择对话框中选择“代码代码代码代码生成器生成器生成器生成器”。方法方法方法方法2 2:右击窗体或报表设计视图中控件右
12、击窗体或报表设计视图中控件右击窗体或报表设计视图中控件右击窗体或报表设计视图中控件快捷菜单中选快捷菜单中选快捷菜单中选快捷菜单中选“事件事件事件事件生成器生成器生成器生成器”“选择生成器选择生成器选择生成器选择生成器”对话框中选择代码生成器对话框中选择代码生成器对话框中选择代码生成器对话框中选择代码生成器”。 ACCESS实例教程8.1.3 VBE8.1.3 VBE窗口窗口VBEVBE窗口由工具栏、工程资源管理器窗口、窗口由工具栏、工程资源管理器窗口、窗口由工具栏、工程资源管理器窗口、窗口由工具栏、工程资源管理器窗口、 属性属性属性属性窗口、代码窗口和立即窗口组成。窗口、代码窗口和立即窗口组成
13、。窗口、代码窗口和立即窗口组成。窗口、代码窗口和立即窗口组成。工程窗口工程窗口选择对象选择对象属性窗口属性窗口选择对象选择对象的属性的属性代码代码窗口窗口选择选择事件事件ACCESS实例教程(1)(1)(1)(1)工程窗口工程窗口工程窗口工程窗口也称工程资源管理器也称工程资源管理器也称工程资源管理器也称工程资源管理器 ,一个数据库应用系统就是一一个数据库应用系统就是一一个数据库应用系统就是一一个数据库应用系统就是一个工程,个工程,个工程,个工程,系统中的所有类模块及标准模块对象都在该窗系统中的所有类模块及标准模块对象都在该窗系统中的所有类模块及标准模块对象都在该窗系统中的所有类模块及标准模块对
14、象都在该窗口中显示出来。口中显示出来。口中显示出来。口中显示出来。类模块类模块类模块类模块标准模块标准模块标准模块标准模块ACCESS实例教程(2)(2)(2)(2)属性窗口属性窗口属性窗口属性窗口 属性窗口列出了选定对象的属性,可以在设计时查属性窗口列出了选定对象的属性,可以在设计时查属性窗口列出了选定对象的属性,可以在设计时查属性窗口列出了选定对象的属性,可以在设计时查看、改变这些属性。当选取了多个控件时,属性窗口会看、改变这些属性。当选取了多个控件时,属性窗口会看、改变这些属性。当选取了多个控件时,属性窗口会看、改变这些属性。当选取了多个控件时,属性窗口会列出所有控件的共同属性。列出所有
15、控件的共同属性。列出所有控件的共同属性。列出所有控件的共同属性。ACCESS实例教程(3)(3)(3)(3)代码窗口代码窗口代码窗口代码窗口 代码窗口用来显示、编写以及修改代码窗口用来显示、编写以及修改代码窗口用来显示、编写以及修改代码窗口用来显示、编写以及修改VBAVBA代码。实际操代码。实际操代码。实际操代码。实际操作中,可以打开多个代码窗口,查看不同窗体或模块中的作中,可以打开多个代码窗口,查看不同窗体或模块中的作中,可以打开多个代码窗口,查看不同窗体或模块中的作中,可以打开多个代码窗口,查看不同窗体或模块中的代码,代码窗口之间可以进行复制和粘贴。代码,代码窗口之间可以进行复制和粘贴。代
16、码,代码窗口之间可以进行复制和粘贴。代码,代码窗口之间可以进行复制和粘贴。 对象框对象框对象框对象框过程框过程框过程框过程框ACCESS实例教程 编写模块对象的代码在代码窗口进行。编写模块对象的代码在代码窗口进行。(1 1)窗口顶部有)窗口顶部有2 2个组合框,左边对象框显示所有对象名称,右边个组合框,左边对象框显示所有对象名称,右边过程框显示当前对象能识别的所有事件名称。选定一个对象,过程框显示当前对象能识别的所有事件名称。选定一个对象,再选定一个事件,系统会自动生成相应事件过程的起始行与结再选定一个事件,系统会自动生成相应事件过程的起始行与结束行,只须在两行中间添加过程代码即可。束行,只须
17、在两行中间添加过程代码即可。 “通用通用” 过程可以被所有控件调用。某控件的过程只在关联事过程可以被所有控件调用。某控件的过程只在关联事件中有效。件中有效。(2 2)窗口中央代码区有声明区和过程区,声明区中声明模块使用的)窗口中央代码区有声明区和过程区,声明区中声明模块使用的变量,过程区显示一个或多个过程,之间用一条灰线分隔。变量,过程区显示一个或多个过程,之间用一条灰线分隔。(3 3)窗口底部有)窗口底部有2 2个按钮,单击个按钮,单击“过程视图过程视图”按钮,只显示当前过按钮,只显示当前过程。单击右边程。单击右边“完整的模块视图完整的模块视图”按钮,窗口显示全部过程。按钮,窗口显示全部过程
18、。ACCESS实例教程8.1.4 8.1.4 标准工具栏标准工具栏 例例例例8-1:8-1:8-1:8-1:创建一个创建一个创建一个创建一个类模块。类模块。类模块。类模块。 1、打开数据库;2、新创建窗体窗体窗体窗体名称为w1w1w1w1;3、在窗体中添加命令按钮命令按钮命令按钮命令按钮名字为c1c1c1c1;4、选择c1c1c1c1打开属性【单击】打开【代码生成器】;ACCESS实例教程Private Sub Command0_Click()DoCmd.CloseDoCmd.CloseEnd SubDoCmd为对象用来调用内置的方法,Close关闭窗体例例例例8-1:8-1:8-1:8-1:
19、创建一个创建一个创建一个创建一个类模块。类模块。类模块。类模块。 对象框对象框对象框对象框过程框过程框过程框过程框ACCESS实例教程例例例例8-2:8-2:8-2:8-2:创建一个创建一个创建一个创建一个标准模块。标准模块。标准模块。标准模块。 1 1、打开数据库;、打开数据库;、打开数据库;、打开数据库;2 2、选择、选择、选择、选择【模块模块模块模块】对象对象对象对象 单击单击单击单击【新建新建新建新建】按钮;按钮;按钮;按钮;3 3、在、在、在、在VBEVBE中编辑如下程序;中编辑如下程序;中编辑如下程序;中编辑如下程序;过程名为过程名为过程名为过程名为aaaa,x x,y y为整型变
20、量为整型变量为整型变量为整型变量z z为整型变量,存放为整型变量,存放为整型变量,存放为整型变量,存放x x和和和和y y的乘积。的乘积。的乘积。的乘积。显示信息框显示信息框显示信息框显示信息框ACCESS实例教程例例8-2:8-2:创建一个创建一个标准模块。标准模块。 4、保存模块名为模块名为模块名为模块名为mjmj;5、新创建窗体窗体窗体窗体名称为w2w2;6、在窗体中添加两个文本框名称分别为名称分别为名称分别为名称分别为t1t1,t2t2;7 7、添加命令按钮、添加命令按钮、添加命令按钮、添加命令按钮名字为c1c1;8、选择c1c1打开属性【单击】打开【代码生成器】;调用过程调用过程调用
21、过程调用过程aaaa,并将文本,并将文本,并将文本,并将文本框的值传递给框的值传递给框的值传递给框的值传递给aaaaACCESS实例教程 8.1.7 8.1.7 使用提示与帮助使用提示与帮助 在代码窗口输入代码时,系统会自动显示提示信息,在代码窗口输入代码时,系统会自动显示提示信息,在代码窗口输入代码时,系统会自动显示提示信息,在代码窗口输入代码时,系统会自动显示提示信息,包括关键字列表、属性列表、过程参数列表等,在列包括关键字列表、属性列表、过程参数列表等,在列包括关键字列表、属性列表、过程参数列表等,在列包括关键字列表、属性列表、过程参数列表等,在列表中选取一项后双击鼠标,所选值会自动添加
22、到当前表中选取一项后双击鼠标,所选值会自动添加到当前表中选取一项后双击鼠标,所选值会自动添加到当前表中选取一项后双击鼠标,所选值会自动添加到当前光标处。光标处。光标处。光标处。 ACCESS实例教程8.2 VBA8.2 VBA程序设计基础程序设计基础8.2.1 8.2.1 面向对象的程序设计的基本概念面向对象的程序设计的基本概念 (1 1)对象)对象)对象)对象在自然界中,一个对象就是一个实体,如一辆汽车在自然界中,一个对象就是一个实体,如一辆汽车在自然界中,一个对象就是一个实体,如一辆汽车在自然界中,一个对象就是一个实体,如一辆汽车就是一个对象。在面向对象的程序设计中,对象代表应就是一个对象
23、。在面向对象的程序设计中,对象代表应就是一个对象。在面向对象的程序设计中,对象代表应就是一个对象。在面向对象的程序设计中,对象代表应用程序中的元素,如表、窗体、按钮等。用程序中的元素,如表、窗体、按钮等。用程序中的元素,如表、窗体、按钮等。用程序中的元素,如表、窗体、按钮等。(2 2)属性)属性)属性)属性属性是对象的特征。如汽车有颜色和型号属性,按属性是对象的特征。如汽车有颜色和型号属性,按属性是对象的特征。如汽车有颜色和型号属性,按属性是对象的特征。如汽车有颜色和型号属性,按钮有标题和名称属性。对象的类别不同,属性会有所不钮有标题和名称属性。对象的类别不同,属性会有所不钮有标题和名称属性。
24、对象的类别不同,属性会有所不钮有标题和名称属性。对象的类别不同,属性会有所不同。同类别对象的不同实例,属性也有差异。例如,同同。同类别对象的不同实例,属性也有差异。例如,同同。同类别对象的不同实例,属性也有差异。例如,同同。同类别对象的不同实例,属性也有差异。例如,同是命令按钮,名称属性不允许相同。是命令按钮,名称属性不允许相同。是命令按钮,名称属性不允许相同。是命令按钮,名称属性不允许相同。 ACCESS实例教程(3 3)事件)事件)事件)事件事件是对象能够识别的动作。如按钮可以识别单击事件是对象能够识别的动作。如按钮可以识别单击事件是对象能够识别的动作。如按钮可以识别单击事件是对象能够识别
25、的动作。如按钮可以识别单击事件、双击事件等。在类模块每一个过程的开始行,都事件、双击事件等。在类模块每一个过程的开始行,都事件、双击事件等。在类模块每一个过程的开始行,都事件、双击事件等。在类模块每一个过程的开始行,都显示对象名和事件名。如:显示对象名和事件名。如:显示对象名和事件名。如:显示对象名和事件名。如:PrivateSubc1_Click()PrivateSubc1_Click()。(4 4)方法)方法)方法)方法方法是对象能够执行的动作,决定了对象能完成什方法是对象能够执行的动作,决定了对象能完成什方法是对象能够执行的动作,决定了对象能完成什方法是对象能够执行的动作,决定了对象能完
26、成什么事。不同对象有不同的方法。如么事。不同对象有不同的方法。如么事。不同对象有不同的方法。如么事。不同对象有不同的方法。如closeclose方法能关闭一个方法能关闭一个方法能关闭一个方法能关闭一个窗体。窗体。窗体。窗体。ACCESS实例教程(5 5)集合)集合)集合)集合集合由许多与对象有关的键和值组成,其中的键集合由许多与对象有关的键和值组成,其中的键集合由许多与对象有关的键和值组成,其中的键集合由许多与对象有关的键和值组成,其中的键和值是配对的。如一本书是一个对象,书的页码是键,和值是配对的。如一本书是一个对象,书的页码是键,和值是配对的。如一本书是一个对象,书的页码是键,和值是配对的
27、。如一本书是一个对象,书的页码是键,页码对应的内容是值。所有配对的页码和内容组成了页码对应的内容是值。所有配对的页码和内容组成了页码对应的内容是值。所有配对的页码和内容组成了页码对应的内容是值。所有配对的页码和内容组成了书对象的集合。书对象的集合。书对象的集合。书对象的集合。(6 6)过程)过程)过程)过程过程是由代码组成的单元,包含一系列计算语句和过程是由代码组成的单元,包含一系列计算语句和过程是由代码组成的单元,包含一系列计算语句和过程是由代码组成的单元,包含一系列计算语句和执行语句。每一个过程都有名字,过程名不能与所在执行语句。每一个过程都有名字,过程名不能与所在执行语句。每一个过程都有
28、名字,过程名不能与所在执行语句。每一个过程都有名字,过程名不能与所在模块的模块名相同。过程有两种类型:模块的模块名相同。过程有两种类型:模块的模块名相同。过程有两种类型:模块的模块名相同。过程有两种类型:subsub过程(无返过程(无返过程(无返过程(无返回值),回值),回值),回值),functionfunction过程(有返回值)。过程(有返回值)。过程(有返回值)。过程(有返回值)。 ACCESS实例教程例例例例8-38-38-38-3:创建一个类模块,:创建一个类模块,:创建一个类模块,:创建一个类模块,动态设置控件属性动态设置控件属性动态设置控件属性动态设置控件属性(1 1)在窗体)
29、在窗体)在窗体)在窗体ctct中创建一个文本框中创建一个文本框中创建一个文本框中创建一个文本框名称为名称为名称为名称为t1t1。(2 2)在窗体)在窗体)在窗体)在窗体ctct中创建一个中创建一个中创建一个中创建一个标签标签标签标签名称为名称为名称为名称为b1b1标题为标题为标题为标题为“欢迎你!欢迎你!欢迎你!欢迎你!”。(3 3)在窗体)在窗体)在窗体)在窗体ctct中创建三个中创建三个中创建三个中创建三个命令按钮命令按钮命令按钮命令按钮名称分别为名称分别为名称分别为名称分别为c1c1、c2c2、c3c3标题分别为标题分别为标题分别为标题分别为“红色红色红色红色”、“绿色绿色绿色绿色”、“
30、蓝色蓝色蓝色蓝色”。ACCESS实例教程(4 4)设置各)设置各)设置各)设置各按钮按钮按钮按钮的前景色,在属性窗口可查的前景色,在属性窗口可查的前景色,在属性窗口可查的前景色,在属性窗口可查看颜色值。看颜色值。看颜色值。看颜色值。(5 5)c1c1的的的的clickclick事件代码:事件代码:事件代码:事件代码:t1.BackColor=255t1.BackColor=255b1.ForeColor=255b1.ForeColor=255ACCESS实例教程(6 6)c2c2的的的的clickclick事件代码:事件代码:事件代码:事件代码:t1.BackColor=33792t1.Bac
31、kColor=33792b1.ForeColor=33792b1.ForeColor=33792(7 7)c3c3的的的的clickclick事件代码:事件代码:事件代码:事件代码:t1.BackColor=16711680t1.BackColor=16711680b1.ForeColor=16711680b1.ForeColor=16711680执行结果:执行结果:执行结果:执行结果:ACCESS实例教程 DocmdDocmdDocmdDocmd是是是是AccessAccessAccessAccess的一个特殊对象,用来调用内置方法,在程的一个特殊对象,用来调用内置方法,在程的一个特殊对象,
32、用来调用内置方法,在程的一个特殊对象,用来调用内置方法,在程序中实现对序中实现对序中实现对序中实现对AccessAccessAccessAccess的操作,诸如打开窗口、关闭窗体、打开报表、的操作,诸如打开窗口、关闭窗体、打开报表、的操作,诸如打开窗口、关闭窗体、打开报表、的操作,诸如打开窗口、关闭窗体、打开报表、关闭报表等。关闭报表等。关闭报表等。关闭报表等。 DoCmd DoCmd DoCmd DoCmd 对象的大多数方法都有参数,有些参数是必需的,有对象的大多数方法都有参数,有些参数是必需的,有对象的大多数方法都有参数,有些参数是必需的,有对象的大多数方法都有参数,有些参数是必需的,有些
33、则是可选的。若省略可选参数,参数将采用默认值。些则是可选的。若省略可选参数,参数将采用默认值。些则是可选的。若省略可选参数,参数将采用默认值。些则是可选的。若省略可选参数,参数将采用默认值。 8.2.2 Docmd8.2.2 Docmd对象对象 (1 1 1 1)用)用)用)用DoCmd DoCmd DoCmd DoCmd 对象打开窗体对象打开窗体对象打开窗体对象打开窗体 格式:格式:格式:格式:DoCmd.OpenForm DoCmd.OpenForm DoCmd.OpenForm DoCmd.OpenForm 窗体名窗体名窗体名窗体名 功能:用默认形式打开指定窗体。功能:用默认形式打开指定
34、窗体。功能:用默认形式打开指定窗体。功能:用默认形式打开指定窗体。 例如:例如:例如:例如:DoCmd.OpenForm DoCmd.OpenForm DoCmd.OpenForm DoCmd.OpenForm 文本框练习文本框练习文本框练习文本框练习 ACCESS实例教程(2 2)用)用)用)用DoCmdDoCmd对象关闭窗体对象关闭窗体对象关闭窗体对象关闭窗体格式格式格式格式1 1:DoCmd.CloseacForm,DoCmd.CloseacForm,窗体名窗体名窗体名窗体名 功能:关闭指定窗体。功能:关闭指定窗体。功能:关闭指定窗体。功能:关闭指定窗体。例如:例如:例如:例如:DoCm
35、d.CloseacForm,DoCmd.CloseacForm,文本框练习文本框练习文本框练习文本框练习 格式格式格式格式2 2:DoCmd.CloseDoCmd.Close功能:关闭当前窗体。功能:关闭当前窗体。功能:关闭当前窗体。功能:关闭当前窗体。(3 3)用)用)用)用DoCmdDoCmd对象打开报表对象打开报表对象打开报表对象打开报表格式:格式:格式:格式:DoCmd.OpenReportDoCmd.OpenReport报表名报表名报表名报表名,acViewPreview,acViewPreview功能:用预览形式打开指定报表。功能:用预览形式打开指定报表。功能:用预览形式打开指定报
36、表。功能:用预览形式打开指定报表。例如:例如:例如:例如:DoCmd.OpenReportDoCmd.OpenReport工资报表工资报表工资报表工资报表,acViewPreview,acViewPreviewACCESS实例教程(4 4 4 4)用)用)用)用DoCmd DoCmd DoCmd DoCmd 对象关闭报表对象关闭报表对象关闭报表对象关闭报表 格式格式格式格式1 1 1 1:DoCmd.Close acReport, DoCmd.Close acReport, DoCmd.Close acReport, DoCmd.Close acReport, 报表名报表名报表名报表名 功能:
37、关闭指定报表。功能:关闭指定报表。功能:关闭指定报表。功能:关闭指定报表。 例如:例如:例如:例如:DoCmd.Close acReport, DoCmd.Close acReport, DoCmd.Close acReport, DoCmd.Close acReport, 工资报表工资报表工资报表工资报表 格式格式格式格式2 2 2 2:DoCmd.Close DoCmd.Close DoCmd.Close DoCmd.Close 功能:关闭当前报表。功能:关闭当前报表。功能:关闭当前报表。功能:关闭当前报表。(5 5 5 5)用)用)用)用DoCmd DoCmd DoCmd DoCmd 对
38、象运行宏对象运行宏对象运行宏对象运行宏 格式:格式:格式:格式:DoCmd.RunMacro DoCmd.RunMacro DoCmd.RunMacro DoCmd.RunMacro 宏名宏名宏名宏名 功能:运行指定宏。功能:运行指定宏。功能:运行指定宏。功能:运行指定宏。 例如:例如:例如:例如:DoCmd.RunMacro DoCmd.RunMacro DoCmd.RunMacro DoCmd.RunMacro 宏宏宏宏1111(6 6 6 6)用)用)用)用DoCmd DoCmd DoCmd DoCmd 对象退出对象退出对象退出对象退出AccessAccessAccessAccess。
39、格式:格式:格式:格式:DoCmd.QuitDoCmd.QuitDoCmd.QuitDoCmd.Quit 功能:关闭所有功能:关闭所有功能:关闭所有功能:关闭所有AccessAccessAccessAccess对象和对象和对象和对象和AccessAccessAccessAccess本身。本身。本身。本身。ACCESS实例教程(1 1 1 1)在在在在窗窗窗窗体体体体中中中中建建建建立立立立5 5 5 5个个个个按按按按钮钮钮钮名名名名称称称称分分分分别别别别为为为为c1c1c1c1、c2c2c2c2、c3c3c3c3、c4c4c4c4、c5c5c5c5标标标标题题题题分分分分别别别别为为为为“
40、打打打打开开开开文文文文本本本本框框框框练练练练习习习习窗窗窗窗体体体体”、“关关关关闭闭闭闭文文文文本本本本框框框框练练练练习习习习窗窗窗窗体体体体”、“打打打打开开开开工工工工资资资资报报报报表表表表”、“关关关关闭闭闭闭工工工工资资资资报报报报表表表表”、“退出退出退出退出AccessAccessAccessAccess” 。 例例例例8-48-48-48-4:使用:使用:使用:使用DoCmdDoCmdDoCmdDoCmd对象对象对象对象ACCESS实例教程(2 2)c1c1代码:代码:代码:代码:DoCmd.OpenFormDoCmd.OpenForm文本框练习文本框练习文本框练习文本
41、框练习 (3 3)c2c2代码:代码:代码:代码:DoCmd.CloseacForm,DoCmd.CloseacForm,文本框练习文本框练习文本框练习文本框练习 (4 4)c3c3代码:代码:代码:代码:DoCmd.OpenReportDoCmd.OpenReport工资报表工资报表工资报表工资报表,acViewPreviewacViewPreview(5 5)c4c4代码:代码:代码:代码:DoCmd.CloseacReport,DoCmd.CloseacReport,工资报表工资报表工资报表工资报表 (6 6)c5c5代码:代码:代码:代码:DoCmd.QuitDoCmd.QuitACC
42、ESS实例教程(7 7)转到窗体视图)转到窗体视图)转到窗体视图)转到窗体视图单击不同按钮执行不同操作。单击不同按钮执行不同操作。单击不同按钮执行不同操作。单击不同按钮执行不同操作。 ACCESS实例教程8.2.3 8.2.3 数据类型与数据类型转换数据类型与数据类型转换 VBA中的基本数据类型中的基本数据类型VBA在数据类型和定义方式上均继承了传统的在数据类型和定义方式上均继承了传统的Basic语语言的特点。言的特点。Access 数据表中的字段使用的数据(数据表中的字段使用的数据(OLE对象和备注对象和备注字段数据类型除外)在字段数据类型除外)在VBA中都有对应的类型。中都有对应的类型。在
43、在VBA中,数据类型用来决定变量可以保存何种数据。中,数据类型用来决定变量可以保存何种数据。VBA支持多种数据类型,为用户编程提供了方便。支持多种数据类型,为用户编程提供了方便。 ACCESS实例教程8.2.3 8.2.3 数据类型与数据类型转换数据类型与数据类型转换 VBAVBA类型类型符号符号字段类型字段类型取值范围取值范围字节数字节数ByteByte字节字节0 0255255之间的整数之间的整数1 1IntegerInteger%整型整型-32768-327683276732767之间的整数之间的整数2 2LongLong& &长整型长整型-2147483648-214748364821
44、474836472147483647之间的整数之间的整数4 4SingleSingle! !单精度单精度负数:负数:-3.402823E38-3.402823E38-1.401298E-45-1.401298E-45正数:正数:1.401298E-451.401298E-453.402823E383.402823E384 4DoubleDouble# #双精度双精度负数:负数:-1.79769313486232E308-1.79769313486232E308 -4.94065645841247E-324 -4.94065645841247E-324正数:正数:4.94065645841247
45、E-3244.94065645841247E-324 1.79769313486232E3081.79769313486232E3088 8CurrencyCurrency货币货币-922337203685477.5808-922337203685477.5808922337203685477.5807922337203685477.58078 8StringString$ $文本文本0 06553565535个字符个字符BooleanBoolean是是/ /否否truetrue或或falsefalse1 1DateDate日期日期/ /时间时间January 1,100January 1,1
46、00到到December 31,9999December 31,99998 8VariantVariant无无(1 1)标准数据类型)标准数据类型)标准数据类型)标准数据类型ACCESS实例教程1.1.1.1.数值型数据类型数值型数据类型数值型数据类型数值型数据类型包括:包括:Byte、Integer、Long、Single、Double和和Currency。(1)Byte以一个字节的无符号二进制数存储,取值范围为以一个字节的无符号二进制数存储,取值范围为0255。(2)整数整数(integer和和Long)整数是不带小数点和指数符号的数,在机器内以二进制补码整数是不带小数点和指数符号的数,在
47、机器内以二进制补码形式表示。形式表示。整型整型(Integer)长整型长整型(Long)例如:例如:345、-345、345%均表示整型数。均表示整型数。345&、-345&均表示长整型数。均表示长整型数。ACCESS实例教程(3)(3)(3)(3)浮点数浮点数浮点数浮点数(single(single(single(single和和和和Double)Double)Double)Double) 浮点数也称实型数或实数,是带有小数部分的数值。它由浮点数也称实型数或实数,是带有小数部分的数值。它由三部分组成:符号、指数和尾数。三部分组成:符号、指数和尾数。单精度型单精度型(Single):以以4个字
48、节存储,符号个字节存储,符号1位,指数位,指数8位,尾位,尾数数23位。位。用用E来表示指数来表示指数。双精度型双精度型(Double):以以8个字节存储,符号个字节存储,符号1位,指数位,指数11位,位,尾数尾数52位。位。用用D来表示指数来表示指数。例如:例如:345!、!、-345.12、0.345E+3均表示单精度浮点数,均表示单精度浮点数,345#、-345.12#、0.345E+3#、0.345D+3均表示双精度浮点数。均表示双精度浮点数。ACCESS实例教程 (4) (4) (4) (4)货币型货币型货币型货币型(Currency)(Currency)(Currency)(Cur
49、rency)货币数据类型是为表示钱款而设置的。该类型数据以货币数据类型是为表示钱款而设置的。该类型数据以8个个字节存储,精确到小数点后四位,小数点前有字节存储,精确到小数点后四位,小数点前有15位,小数点位,小数点后后4位以后的数字将被舍去。位以后的数字将被舍去。例如例如:345、345.12均表示货币型数据。均表示货币型数据。 2. 2. 2. 2. 字符型数据类型字符型数据类型字符型数据类型字符型数据类型字符串是一个字符序列,由字符串是一个字符序列,由ASCII字符组成,包括标准字符组成,包括标准的的ASCII字符和扩展字符和扩展ASCII字符及汉字等字符及汉字等例如:例如:“345”、“
50、Access程序设计程序设计”等均表示字符型数据。等均表示字符型数据。表示空字符串,表示空字符串,表示有一个空格的字符。表示有一个空格的字符。ACCESS实例教程 3. 3. 3. 3.日期型数据类型日期型数据类型日期型数据类型日期型数据类型日期型数据用来表示日期信息,按日期型数据用来表示日期信息,按8字节的浮点数来存储,字节的浮点数来存储,表示范围:日期范围为表示范围:日期范围为1000年年1月月1日到日到9999年年12月月31日,日,而时间范围为而时间范围为0:00:0023:59:59。日期型数据有两种表示方法:日期型数据有两种表示方法:一种是在字面上可被认为日期和时间的字符,表示格式
51、为一种是在字面上可被认为日期和时间的字符,表示格式为mm/dd/yyyy或或mm-dd-yyyy。日期文字须以数字符号日期文字须以数字符号(#)括起来。括起来。例如例如,#April1,2002#10-11-2005#2005-10-1110:30:00PM#。ACCESS实例教程 3.日期型数据类型日期型数据类型另一种是以数字序列表示,当其他的数另一种是以数字序列表示,当其他的数另一种是以数字序列表示,当其他的数另一种是以数字序列表示,当其他的数值类型要转换为值类型要转换为值类型要转换为值类型要转换为 Date Date 型时,小数点左型时,小数点左型时,小数点左型时,小数点左边的数字代表日
52、期,而小数点右边的数边的数字代表日期,而小数点右边的数边的数字代表日期,而小数点右边的数边的数字代表日期,而小数点右边的数字代表时间,字代表时间,字代表时间,字代表时间,0 0为午夜,为午夜,为午夜,为午夜,0.50.5为中午为中午为中午为中午1212点,点,点,点,负数代表的是负数代表的是负数代表的是负数代表的是18991899年年年年1212月月月月3131日之前的日之前的日之前的日之前的日期和时间。日期和时间。日期和时间。日期和时间。ACCESS实例教程4.4.4.4.变体数据类型变体数据类型变体数据类型变体数据类型pp变体类型数据变体类型数据变体类型数据变体类型数据(Variant)(
53、Variant)是一种可变的数据类型,可以是一种可变的数据类型,可以是一种可变的数据类型,可以是一种可变的数据类型,可以表示任何值表示任何值表示任何值表示任何值,包括数值、字符串及日期等。,包括数值、字符串及日期等。p变体类型数据可以包含变体类型数据可以包含Empty、Error、Nothing和和Null特殊值。特殊值。p在使用时,可以使用在使用时,可以使用VarType与与TypeName函数来决定函数来决定如何处理如何处理Variant中的数据。中的数据。pVBA规定,如果没有使用规定,如果没有使用DimAs数据类型数据类型显式声显式声明或使用符号来定义变量的数据类型,系统默认为变明或使
54、用符号来定义变量的数据类型,系统默认为变体类型体类型(Variant)。ACCESS实例教程 5. 5. 5. 5. 逻辑数据类型逻辑数据类型逻辑数据类型逻辑数据类型p逻辑数据类型逻辑数据类型(Boolean)用于逻辑判断,亦称布尔型。用于逻辑判断,亦称布尔型。其值为逻辑值,用两个字节存储,它只有其值为逻辑值,用两个字节存储,它只有True(真真)或或False(假假)两个值。两个值。p当当逻辑数据转换成整型数据类型逻辑数据转换成整型数据类型逻辑数据转换成整型数据类型逻辑数据转换成整型数据类型时,时,True转换为转换为-1,False转换为转换为0。p当将其他类型数据换成逻辑数据时,当将其他
55、类型数据换成逻辑数据时,非非非非0 0数据转换为数据转换为数据转换为数据转换为TrueTrue,0 0转换为转换为转换为转换为FalseFalse。 6. 6. 6. 6. 对象数据类型对象数据类型对象数据类型对象数据类型对象型数据对象型数据(Object)用来表示图形、用来表示图形、OLE对象或其他对象,对象或其他对象,用用4个字节存储,对象变量可引用应用程序中的对象。个字节存储,对象变量可引用应用程序中的对象。ACCESS实例教程(2 2)数据类型转换函数)数据类型转换函数函数函数函数函数转换后类型转换后类型转换后类型转换后类型说明说明说明说明CByte(x)CByte(x)CByte(x
56、)CByte(x)ByteByteByteBytex x x x取值范围同取值范围同取值范围同取值范围同ByteByteByteByte,小数部分四舍五入,超出范围,小数部分四舍五入,超出范围,小数部分四舍五入,超出范围,小数部分四舍五入,超出范围显示显示显示显示“溢出溢出溢出溢出”CInt(x)CInt(x)CInt(x)CInt(x)IntegerIntegerIntegerIntegerx x x x取值范围同取值范围同取值范围同取值范围同IntegerIntegerIntegerInteger,小数部分四舍五入,小数部分四舍五入,小数部分四舍五入,小数部分四舍五入CLng(x)CLng
57、(x)CLng(x)CLng(x)LongLongLongLongx x x x取值范围同取值范围同取值范围同取值范围同LongLongLongLong,小数部分四舍五入,小数部分四舍五入,小数部分四舍五入,小数部分四舍五入CSng(x)CSng(x)CSng(x)CSng(x)SingleSingleSingleSinglex x x x取值范围同取值范围同取值范围同取值范围同SingleSingleSingleSingleCDblCDblCDblCDblDoubleDoubleDoubleDoublex x x x取值范围同取值范围同取值范围同取值范围同DoubleDoubleDouble
58、DoubleCCurCCurCCurCCurCurrencyCurrencyCurrencyCurrencyx x x x取值范围同取值范围同取值范围同取值范围同CurrencyCurrencyCurrencyCurrencyCBool(x)CBool(x)CBool(x)CBool(x)BooleanBooleanBooleanBooleanx x x x取值范围是任何有效数字或字串取值范围是任何有效数字或字串取值范围是任何有效数字或字串取值范围是任何有效数字或字串CDate(x)CDate(x)CDate(x)CDate(x)DateDateDateDatex x x x取值范围是任何有效
59、日期表达式取值范围是任何有效日期表达式取值范围是任何有效日期表达式取值范围是任何有效日期表达式CStr(x)CStr(x)CStr(x)CStr(x)StringStringStringString无无无无CVar(x)CVar(x)CVar(x)CVar(x)VariantVariantVariantVariantx x x x如果是数值范围同如果是数值范围同如果是数值范围同如果是数值范围同DoubleDoubleDoubleDouble,否则,与,否则,与,否则,与,否则,与StringStringStringString相同相同相同相同ACCESS实例教程 例例例例8-58-5:在立即窗
60、口中计算函数值在立即窗口中计算函数值在立即窗口中计算函数值在立即窗口中计算函数值(1 1 1 1)在)在)在)在VBEVBEVBEVBE界面界面界面界面“视图视图视图视图”菜单菜单菜单菜单“立即窗口立即窗口立即窗口立即窗口”,显示立即窗口。,显示立即窗口。,显示立即窗口。,显示立即窗口。(2 2 2 2)输入表达式)输入表达式)输入表达式)输入表达式x=x=x=x=“truetruetruetrue”回车回车回车回车输入表达式输入表达式输入表达式输入表达式y=y=y=y=“falsefalsefalsefalse”回车回车回车回车输入表达式输入表达式输入表达式输入表达式 ?x+y?x+y?x+
61、y?x+y回车,显示结果为:回车,显示结果为:回车,显示结果为:回车,显示结果为:truefalsetruefalsetruefalsetruefalse。(3 3 3 3)输入表达式)输入表达式)输入表达式)输入表达式 ?cbool(x)+cbool(y)?cbool(x)+cbool(y)?cbool(x)+cbool(y)?cbool(x)+cbool(y)回车,显示结果为:回车,显示结果为:回车,显示结果为:回车,显示结果为:-1-1-1-1。说明:说明:说明:说明:每行写完后必须回车才能生效。问号与每行写完后必须回车才能生效。问号与每行写完后必须回车才能生效。问号与每行写完后必须回车
62、才能生效。问号与printprintprintprint语句相语句相语句相语句相同,在立即窗口显示计算结果。同,在立即窗口显示计算结果。同,在立即窗口显示计算结果。同,在立即窗口显示计算结果。ACCESS实例教程 7. 7. 7. 7. 用户定义的数据类型用户定义的数据类型用户定义的数据类型用户定义的数据类型 创建自定义的数据类型的语句是创建自定义的数据类型的语句是Type,用户自定义类型,用户自定义类型可包含一个或多个基本数据类型的数据元素、数组或一个先可包含一个或多个基本数据类型的数据元素、数组或一个先前定义的用户自定义类型。前定义的用户自定义类型。TypeType语句的基本格式:语句的基
63、本格式:语句的基本格式:语句的基本格式:Private|PublicType数据类型名数据类型名域名域名域名域名1As数据类型数据类型域名域名域名域名2As数据类型数据类型EndTypeACCESS实例教程定义格式:定义格式:定义格式:定义格式:typetype 数据类型名数据类型名数据类型名数据类型名域名域名域名域名1as1as数据类型数据类型数据类型数据类型域名域名域名域名2as2as数据类型数据类型数据类型数据类型 endtypeendtype例如:例如:例如:例如:typetypestudentstudentxhasstring*6xhasstring*6xmasstringxmass
64、tringxbasstring*1xbasstring*1nlasintegernlasintegerendtypeendtypeACCESS实例教程 8.2.2 8.2.2 常量常量常量是指在程序运行的过程中,其值不能被改变的量。常量是指在程序运行的过程中,其值不能被改变的量。常量的使用可以增加代码的可读性,并且使代码更加容易维常量的使用可以增加代码的可读性,并且使代码更加容易维护。护。在在Access2003中,常量的类型有中,常量的类型有4种:种:直接常量直接常量符号常量符号常量固有常量固有常量系统定义常量系统定义常量(1)(1)(1)(1)直接常量直接常量直接常量直接常量 如:如:10
65、,20%(整型)整型),123.0,345#(双精度),(双精度),345.12 (货币型),(货币型),“AB”,“VBA程序设计程序设计”等等ACCESS实例教程 8.2.2 8.2.2 常量常量 (2)(2)(2)(2)符号常量符号常量符号常量符号常量 在程序中,某个常量多次被使用,则可以使用一个符号在程序中,某个常量多次被使用,则可以使用一个符号在程序中,某个常量多次被使用,则可以使用一个符号在程序中,某个常量多次被使用,则可以使用一个符号来代替该常量,这样不仅在书写上方便,而且有效地改进了来代替该常量,这样不仅在书写上方便,而且有效地改进了来代替该常量,这样不仅在书写上方便,而且有效
66、地改进了来代替该常量,这样不仅在书写上方便,而且有效地改进了程序的程序的程序的程序的可读性可读性可读性可读性和和和和可维护性可维护性可维护性可维护性。 VBAVBA中使用关键字中使用关键字中使用关键字中使用关键字ConstConst 声明符号常量。声明符号常量。声明符号常量。声明符号常量。其格式如下:其格式如下:其格式如下:其格式如下: Const Const 常量名常量名常量名常量名 常数表达式常数表达式常数表达式常数表达式 如:如:如:如: ConstConst PIPI#=3.1415926#=3.1415926ACCESS实例教程(2)符号常量符号常量说明:说明:1.符号常量名一般用大
67、写字母,以便与变量名符号常量名一般用大写字母,以便与变量名符号常量名一般用大写字母,以便与变量名符号常量名一般用大写字母,以便与变量名区分。区分。区分。区分。2.如果符号常量定义在模块声明区,所有模块如果符号常量定义在模块声明区,所有模块如果符号常量定义在模块声明区,所有模块如果符号常量定义在模块声明区,所有模块的过程都能使用该变量,通常在前面加上的过程都能使用该变量,通常在前面加上的过程都能使用该变量,通常在前面加上的过程都能使用该变量,通常在前面加上GlobalGlobal或或或或PublicPublic。 如:如:Public Const PI=3.143.如果符号常量定义在事件的过程中
68、,该符号如果符号常量定义在事件的过程中,该符号如果符号常量定义在事件的过程中,该符号如果符号常量定义在事件的过程中,该符号常量只在本过程中可用。常量只在本过程中可用。常量只在本过程中可用。常量只在本过程中可用。4.符号常量定义时不用指明数据类型。符号常量定义时不用指明数据类型。符号常量定义时不用指明数据类型。符号常量定义时不用指明数据类型。ACCESS实例教程(3) (3) (3) (3) 固有常量(内置常量)固有常量(内置常量)固有常量(内置常量)固有常量(内置常量)固有常量以两个前缀字母指明了定义该常量的对象库。固有常量以两个前缀字母指明了定义该常量的对象库。主要用来作为主要用来作为DoC
69、md对象的参数。这些内部常量名不能作为对象的参数。这些内部常量名不能作为用户自定义的变量名或符号常量用户自定义的变量名或符号常量p来自来自Access库的常量以库的常量以“ac”开头;开头;p来自来自ADO库的常量以库的常量以“ad”开头开头p而来自而来自VisualBasic库的常量则以库的常量则以“vb”开头。开头。例如:例如:acForm、adAddNew、vbCurrency(4) (4) (4) (4) 系统定义常量系统定义常量系统定义常量系统定义常量指指VBA系统预先定义好的,用户可以直接引用的量。系统预先定义好的,用户可以直接引用的量。例如:例如:True、False和和Null
70、。系统定义常量可以在应用程序中使用。系统定义常量可以在应用程序中使用。ACCESS实例教程 8.2.3 8.2.3 变量变量p变量是指在程序运行过程中值会发生变化的数据。变量是指在程序运行过程中值会发生变化的数据。p变量的三要素:变量名、变量类型、变量的值。变量的三要素:变量名、变量类型、变量的值。p变量的命名规则。变量的命名规则。p对变量进行声明可以使用类型说明符号、对变量进行声明可以使用类型说明符号、Dim语句和语句和DefType语句。语句。(1 1 1 1)变量命名规则)变量命名规则)变量命名规则)变量命名规则由字母、数字、下划线组成,用英文字母开头。由字母、数字、下划线组成,用英文字
71、母开头。不能包含空格以及除下划线之外的标点符号。不能包含空格以及除下划线之外的标点符号。不能用不能用VBA的关键字(如:的关键字(如:dim)和保留字(如:)和保留字(如:str)。)。字符个数不得多于字符个数不得多于255个。个。变量名不区分大小写。变量名不区分大小写。说明:常量名的命名规则与变量名的命名规则相同说明:常量名的命名规则与变量名的命名规则相同说明:常量名的命名规则与变量名的命名规则相同说明:常量名的命名规则与变量名的命名规则相同ACCESS实例教程 8.2.3 8.2.3 变量变量(2) (2) (2) (2) 隐含型变量隐含型变量隐含型变量隐含型变量p隐式声明在使用一个变量之
72、前并不必先声明这个变量。这隐式声明在使用一个变量之前并不必先声明这个变量。这个变量只在当前过程中有效,类型为变体数据类型。个变量只在当前过程中有效,类型为变体数据类型。pp用户可以通过将一个值指定给变量名的方式来建立隐含型用户可以通过将一个值指定给变量名的方式来建立隐含型用户可以通过将一个值指定给变量名的方式来建立隐含型用户可以通过将一个值指定给变量名的方式来建立隐含型变量。变量。变量。变量。例如:例如:NewVar=1234。ACCESS实例教程格式:格式:格式:格式: dim dim dim dim 变量名变量名变量名变量名 as as as as 类型类型类型类型说明说明说明说明:如果不
73、用如果不用如果不用如果不用asasasas定义类型,则变量为变体类型。变体类型变定义类型,则变量为变体类型。变体类型变定义类型,则变量为变体类型。变体类型变定义类型,则变量为变体类型。变体类型变量比其他类型变量占用更多的内存资源。量比其他类型变量占用更多的内存资源。量比其他类型变量占用更多的内存资源。量比其他类型变量占用更多的内存资源。可以用可以用可以用可以用dimdimdimdim同时定义多个变量,变量之间用西文逗号分隔,同时定义多个变量,变量之间用西文逗号分隔,同时定义多个变量,变量之间用西文逗号分隔,同时定义多个变量,变量之间用西文逗号分隔,每一个变量都应该用每一个变量都应该用每一个变量
74、都应该用每一个变量都应该用asasasas声明类型。声明类型。声明类型。声明类型。 例如:例如:例如:例如:dimdimdimdim a1 a1 a1 a1 asasasas integerintegerintegerinteger,a2 a2 a2 a2 as booleanas booleanas booleanas boolean用用用用dimdimdimdim定义的变量是局部变量,会按照数据类型自动设置定义的变量是局部变量,会按照数据类型自动设置定义的变量是局部变量,会按照数据类型自动设置定义的变量是局部变量,会按照数据类型自动设置默认值。默认值。默认值。默认值。 (3 3 3 3)用
75、)用)用)用dimdimdimdim语句声明变量语句声明变量语句声明变量语句声明变量 ACCESS实例教程如:如:如:如: Dim name as stringDim name as string Dim x as integer , y as integer Dim x as integer , y as integer Dim i Dim i说明:说明:说明:说明:第二条语句同时声明了两个变量;第二条语句同时声明了两个变量;第二条语句同时声明了两个变量;第二条语句同时声明了两个变量; i i为变体类型,可以储存任何类型数据。为变体类型,可以储存任何类型数据。为变体类型,可以储存任何类型数据
76、。为变体类型,可以储存任何类型数据。变量赋值变量赋值变量赋值变量赋值Name=Name=张小山张小山张小山张小山 X=1X=1改变变量的值改变变量的值改变变量的值改变变量的值X=x+1X=x+1说明:将说明:将说明:将说明:将x x的值增加的值增加的值增加的值增加1 1ACCESS实例教程pp在变量名后加在变量名后加在变量名后加在变量名后加VBAVBAVBAVBA的类型说明符,隐式的声明了变量类型。的类型说明符,隐式的声明了变量类型。的类型说明符,隐式的声明了变量类型。的类型说明符,隐式的声明了变量类型。 例如:例如:例如:例如:b1%=125b1%=125b1%=125b1%=125 变量变
77、量变量变量b1b1b1b1是整型,值是是整型,值是是整型,值是是整型,值是125125125125。pp既没有显式声明,也没有加类型说明符,隐式声明了变体型既没有显式声明,也没有加类型说明符,隐式声明了变体型既没有显式声明,也没有加类型说明符,隐式声明了变体型既没有显式声明,也没有加类型说明符,隐式声明了变体型变量。变量。变量。变量。 例如:例如:例如:例如:c1=125c1=125c1=125c1=125 变量变量变量变量c1c1c1c1是是是是变体型变体型变体型变体型,值是,值是,值是,值是125125125125。隐含型变量隐含型变量隐含型变量隐含型变量 (4 4 4 4)用类型说明符声
78、明变量类型)用类型说明符声明变量类型)用类型说明符声明变量类型)用类型说明符声明变量类型ACCESS实例教程下下下下面面面面是是是是一一一一个个个个简简简简单单单单的的的的程程程程序序序序,其其其其使使使使用用用用的的的的变变变变量量量量a, a, a, a, b, b, b, b, SumSumSumSum都都都都没没没没有有有有事先定义。事先定义。事先定义。事先定义。Private Sub Form_Click()Private Sub Form_Click()Private Sub Form_Click()Private Sub Form_Click() SumSumSumSum = 0
79、 = 0 = 0 = 0隐含型变量隐含型变量隐含型变量隐含型变量 a a a a = 10 = 10 = 10 = 10 b b b b = 20 = 20 = 20 = 20 Sum = a + b Sum = a + b Sum = a + b Sum = a + b Print Sum=; Sum Print Sum=; Sum Print Sum=; Sum Print Sum=; SumEnd Sub End Sub End Sub End Sub 良良良良好好好好的的的的编编编编程程程程习习习习惯惯惯惯应应应应该该该该是是是是“先先先先声声声声明明明明变变变变量量量量,后后后后使使
80、使使用用用用变变变变量量量量”,这这这这样样样样做做做做可可可可以以以以提提提提高高高高程程程程序序序序的的的的效效效效率率率率,同同同同时时时时也也也也使程序易于调试。使程序易于调试。使程序易于调试。使程序易于调试。ACCESS实例教程声明而未赋值的变量的值为:声明而未赋值的变量的值为:数值型变量初始化为数值型变量初始化为0 0;字符型变量为零长度字符串;字符型变量为零长度字符串;变体型变量初始化为变体型变量初始化为 EmptyEmpty。 变量的初始化变量的初始化ACCESS实例教程(5 5 5 5)一个特殊的模块变量)一个特殊的模块变量)一个特殊的模块变量)一个特殊的模块变量pp本地窗口
81、打开时,自动生成一个名为本地窗口打开时,自动生成一个名为本地窗口打开时,自动生成一个名为本地窗口打开时,自动生成一个名为“MeMeMeMe”的特殊模块变量。的特殊模块变量。的特殊模块变量。的特殊模块变量。对于类模块,定义为对于类模块,定义为对于类模块,定义为对于类模块,定义为MeMeMeMe。MeMeMeMe是对象的引用,引用当前模块中是对象的引用,引用当前模块中是对象的引用,引用当前模块中是对象的引用,引用当前模块中当前类的实例。当前类的实例。当前类的实例。当前类的实例。ppMeMeMeMe变量不需要专门定义,直接使用即可。变量不需要专门定义,直接使用即可。变量不需要专门定义,直接使用即可。
82、变量不需要专门定义,直接使用即可。 例如:用代码定义例如:用代码定义例如:用代码定义例如:用代码定义“学生信息学生信息学生信息学生信息”窗体中窗体中窗体中窗体中“LabLabLabLab”标签的标题标签的标题标签的标题标签的标题属性,以下两种方法效果是一样的:属性,以下两种方法效果是一样的:属性,以下两种方法效果是一样的:属性,以下两种方法效果是一样的:标准方法:标准方法:标准方法:标准方法:Forms! Forms! Forms! Forms! 学生信息学生信息学生信息学生信息!Lab.Caption=!Lab.Caption=!Lab.Caption=!Lab.Caption=学生信息浏览
83、学生信息浏览学生信息浏览学生信息浏览 常用方法常用方法常用方法常用方法:MeMeMeMe!Lab.Caption=!Lab.Caption=!Lab.Caption=!Lab.Caption=学生信息浏览学生信息浏览学生信息浏览学生信息浏览 ACCESS实例教程8.2.5 8.2.5 变量的作用域和生命周期变量的作用域和生命周期 1 1 1 1变量的作用域变量的作用域变量的作用域变量的作用域 变量的作用域是变量在程序中起作用的范围。分变量的作用域是变量在程序中起作用的范围。分变量的作用域是变量在程序中起作用的范围。分变量的作用域是变量在程序中起作用的范围。分3 3 3 3个层次,从低到个层次,
84、从低到个层次,从低到个层次,从低到高依次为:局部、模块、全局。高依次为:局部、模块、全局。高依次为:局部、模块、全局。高依次为:局部、模块、全局。(1 1 1 1)局部变量)局部变量)局部变量)局部变量 又称为本地变量,仅在声明变量的过程中有效。又称为本地变量,仅在声明变量的过程中有效。又称为本地变量,仅在声明变量的过程中有效。又称为本地变量,仅在声明变量的过程中有效。在过程和函数内部在过程和函数内部在过程和函数内部在过程和函数内部用用用用dimdimdimdim声明或不用声明接使用的变量,都是局部变量声明或不用声明接使用的变量,都是局部变量声明或不用声明接使用的变量,都是局部变量声明或不用声
85、明接使用的变量,都是局部变量。局部变量在本地。局部变量在本地。局部变量在本地。局部变量在本地拥有最高级,当存在同名的模块级变量时,模块级变量被屏蔽。拥有最高级,当存在同名的模块级变量时,模块级变量被屏蔽。拥有最高级,当存在同名的模块级变量时,模块级变量被屏蔽。拥有最高级,当存在同名的模块级变量时,模块级变量被屏蔽。(2 2 2 2)模块变量)模块变量)模块变量)模块变量 模块变量在所声明模块的所有函数和所有过程都有效,模块变量在所声明模块的所有函数和所有过程都有效,模块变量在所声明模块的所有函数和所有过程都有效,模块变量在所声明模块的所有函数和所有过程都有效,变量定义在变量定义在变量定义在变量
86、定义在模块所有过程之外的起始位置模块所有过程之外的起始位置模块所有过程之外的起始位置模块所有过程之外的起始位置,通常是窗体变量或标准模块变量。,通常是窗体变量或标准模块变量。,通常是窗体变量或标准模块变量。,通常是窗体变量或标准模块变量。(3 3 3 3)全局变量)全局变量)全局变量)全局变量 全局变量又称为公共变量,全局变量又称为公共变量,全局变量又称为公共变量,全局变量又称为公共变量,定义在标准模块所有过程之外定义在标准模块所有过程之外定义在标准模块所有过程之外定义在标准模块所有过程之外,在所有,在所有,在所有,在所有模块的所有过程和函数中都有效。模块的所有过程和函数中都有效。模块的所有过
87、程和函数中都有效。模块的所有过程和函数中都有效。 定义格式:定义格式:定义格式:定义格式:public public public public 变量名变量名变量名变量名 as as as as 数据类型数据类型数据类型数据类型ACCESS实例教程pp变量的生命周期是指变量从首次出现到变量消失的代码执行变量的生命周期是指变量从首次出现到变量消失的代码执行变量的生命周期是指变量从首次出现到变量消失的代码执行变量的生命周期是指变量从首次出现到变量消失的代码执行时间时间时间时间。变量首次出现是指声明变量并为其分配存储空间,变。变量首次出现是指声明变量并为其分配存储空间,变。变量首次出现是指声明变量并
88、为其分配存储空间,变。变量首次出现是指声明变量并为其分配存储空间,变量消失是指变量所在的程序执行完毕。量消失是指变量所在的程序执行完毕。量消失是指变量所在的程序执行完毕。量消失是指变量所在的程序执行完毕。pp局部变量局部变量局部变量局部变量: :的生命周期从过程或函数被调用到运行结束。的生命周期从过程或函数被调用到运行结束。的生命周期从过程或函数被调用到运行结束。的生命周期从过程或函数被调用到运行结束。pp全局变量全局变量全局变量全局变量: :的生命周期从声明到的生命周期从声明到的生命周期从声明到的生命周期从声明到AccessAccess应用程序结束。应用程序结束。应用程序结束。应用程序结束。
89、pp过程中用过程中用过程中用过程中用dimdim定义的变量,每次调用过程时都重新开始,过定义的变量,每次调用过程时都重新开始,过定义的变量,每次调用过程时都重新开始,过定义的变量,每次调用过程时都重新开始,过程结束时立即消失程结束时立即消失程结束时立即消失程结束时立即消失。pp用用用用staticstatic代替代替代替代替dimdim定义变量,可以在过程实例间保留局部变量定义变量,可以在过程实例间保留局部变量定义变量,可以在过程实例间保留局部变量定义变量,可以在过程实例间保留局部变量的值。用的值。用的值。用的值。用staticstatic定义的变量称为定义的变量称为定义的变量称为定义的变量称
90、为静态变量静态变量静态变量静态变量,作用范围与,作用范围与,作用范围与,作用范围与dimdim相相相相同,在整个模块执行时一直存在。同,在整个模块执行时一直存在。同,在整个模块执行时一直存在。同,在整个模块执行时一直存在。2 2 2 2变量的生命周期变量的生命周期变量的生命周期变量的生命周期ACCESS实例教程例例例例8-68-6:用:用:用:用staticstatic和和和和dimdim定义局部变量定义局部变量定义局部变量定义局部变量 (1 1)在窗体中建立)在窗体中建立)在窗体中建立)在窗体中建立2 2个文本框个文本框个文本框个文本框分别命名为分别命名为分别命名为分别命名为t1t1和和和和
91、t2t2附加标签附加标签附加标签附加标签的标题分别为的标题分别为的标题分别为的标题分别为“静态变量静态变量静态变量静态变量”和和和和“局部变量局部变量局部变量局部变量”。(2 2)在窗体中建立)在窗体中建立)在窗体中建立)在窗体中建立命令按钮命令按钮命令按钮命令按钮名称为名称为名称为名称为c1c1标题为标题为标题为标题为“计算计算计算计算”。 ACCESS实例教程(3 3)c1c1的的的的clickclick代码:代码:代码:代码:StaticStatic x xAsIntegerAsIntegerx x变量的生命周期为全程变量的生命周期为全程变量的生命周期为全程变量的生命周期为全程 DimD
92、im y yAsIntegerAsIntegery y变量的生命周期为局部变量的生命周期为局部变量的生命周期为局部变量的生命周期为局部 x=x+1x=x+1:y=y+1y=y+1t1=xt1=x:t2=yt2=y(4 4)执行时不断单击命令按钮,静态变量文本框中的值)执行时不断单击命令按钮,静态变量文本框中的值)执行时不断单击命令按钮,静态变量文本框中的值)执行时不断单击命令按钮,静态变量文本框中的值每次增加每次增加每次增加每次增加1 1,而局部变量文本框中的值总是,而局部变量文本框中的值总是,而局部变量文本框中的值总是,而局部变量文本框中的值总是1 1。 ACCESS实例教程 1. 1. 数
93、组的概念数组的概念数组的概念数组的概念数组是由一组具有相同数据类型的变量数组是由一组具有相同数据类型的变量数组是由一组具有相同数据类型的变量数组是由一组具有相同数据类型的变量( (称为数组元素称为数组元素称为数组元素称为数组元素) )构构构构成的集合。为了识别数组中不同的元素,数组元素可以通成的集合。为了识别数组中不同的元素,数组元素可以通成的集合。为了识别数组中不同的元素,数组元素可以通成的集合。为了识别数组中不同的元素,数组元素可以通过下标来访问,数组下标默认从过下标来访问,数组下标默认从过下标来访问,数组下标默认从过下标来访问,数组下标默认从0 0开始。开始。开始。开始。 说明:说明:说
94、明:说明:(1 1)数组要先定义后使用,)数组要先定义后使用,)数组要先定义后使用,)数组要先定义后使用,VBAVBA不允许隐式声明数组。不允许隐式声明数组。不允许隐式声明数组。不允许隐式声明数组。(2 2)同一过程中数组名不能与其他变量重名。)同一过程中数组名不能与其他变量重名。)同一过程中数组名不能与其他变量重名。)同一过程中数组名不能与其他变量重名。 8.2.7 8.2.7 数组数组ACCESS实例教程2 2声明一维数组声明一维数组声明一维数组声明一维数组格式格式格式格式1 1:dimdim数组名数组名数组名数组名( (下标上限下标上限下标上限下标上限)as)as数据类型数据类型数据类型
95、数据类型格式格式格式格式2 2:dimdim数组名数组名数组名数组名( (下标下限下标下限下标下限下标下限 toto下标上限下标上限下标上限下标上限)as)as数据类型数据类型数据类型数据类型例如:例如:例如:例如:dima(6)asintegerdima(6)asinteger功能:声明了有功能:声明了有功能:声明了有功能:声明了有7 7个元素的数组个元素的数组个元素的数组个元素的数组a a,元素下标从,元素下标从,元素下标从,元素下标从0 0到到到到6 6,默认值均为,默认值均为,默认值均为,默认值均为0 0。例如:例如:例如:例如:dimb(1to6)asstringdimb(1to6)
96、asstring功能:声明了有功能:声明了有功能:声明了有功能:声明了有6 6个元素的数组个元素的数组个元素的数组个元素的数组b b,下标从,下标从,下标从,下标从1 1到到到到6 6,默认值均为空串。,默认值均为空串。,默认值均为空串。,默认值均为空串。说明:说明:说明:说明:(1 1)如果不定义数组下标的下限,默认下标下限为)如果不定义数组下标的下限,默认下标下限为)如果不定义数组下标的下限,默认下标下限为)如果不定义数组下标的下限,默认下标下限为0 0。(2 2)数组定义中的参数必须是常数。)数组定义中的参数必须是常数。)数组定义中的参数必须是常数。)数组定义中的参数必须是常数。(3 3
97、)如果使用)如果使用)如果使用)如果使用asas语句定义数组类型,同一数组只能存放相同类型数据。语句定义数组类型,同一数组只能存放相同类型数据。语句定义数组类型,同一数组只能存放相同类型数据。语句定义数组类型,同一数组只能存放相同类型数据。ACCESS实例教程声明数组后,每个数组元素都被当作单个变量使用。声明数组后,每个数组元素都被当作单个变量使用。声明数组后,每个数组元素都被当作单个变量使用。声明数组后,每个数组元素都被当作单个变量使用。一维数组元素的引用格式:数组名(下标)一维数组元素的引用格式:数组名(下标)一维数组元素的引用格式:数组名(下标)一维数组元素的引用格式:数组名(下标)数组
98、赋值与引用:数组赋值与引用:数组赋值与引用:数组赋值与引用:bAge(0)50 bAge(1)20 bAge(2)70 Dim sum as Byte Sum= bAge(0)+ bAge(1)+ bAge(2) ACCESS实例教程3 3声明多维数组声明多维数组声明多维数组声明多维数组格式:格式:格式:格式:dimdim数组名数组名数组名数组名( (下标上限下标上限下标上限下标上限1 1,下标上限,下标上限,下标上限,下标上限2 2,)as)as数据类型数据类型数据类型数据类型例如:例如:例如:例如:dimc(3dimc(3,4)asinteger4)asinteger功能:声明有功能:声明
99、有功能:声明有功能:声明有2020个元素的数组个元素的数组个元素的数组个元素的数组c c,行下标从,行下标从,行下标从,行下标从0 0到到到到3 3,列下标从,列下标从,列下标从,列下标从0 0到到到到4 4。例如:例如:例如:例如:dimd(1to3dimd(1to3,2to4)asinteger2to4)asinteger功能:声明有功能:声明有功能:声明有功能:声明有9 9个元素的数组个元素的数组个元素的数组个元素的数组d d,行下标从,行下标从,行下标从,行下标从1 1到到到到3 3,列下标从,列下标从,列下标从,列下标从2 2到到到到4 4。4 4使用数组使用数组使用数组使用数组声明
100、数组后,每个数组元素都被当作单个变量使用。声明数组后,每个数组元素都被当作单个变量使用。声明数组后,每个数组元素都被当作单个变量使用。声明数组后,每个数组元素都被当作单个变量使用。一维数组元素的引用格式:数组名(下标)一维数组元素的引用格式:数组名(下标)一维数组元素的引用格式:数组名(下标)一维数组元素的引用格式:数组名(下标)二维数组元素的引用格式:数组名(下标二维数组元素的引用格式:数组名(下标二维数组元素的引用格式:数组名(下标二维数组元素的引用格式:数组名(下标1 1,下标,下标,下标,下标2 2)ACCESS实例教程例例例例8-78-78-78-7:使用符号常量和数组:使用符号常量
101、和数组:使用符号常量和数组:使用符号常量和数组 (1 1 1 1)在窗体建文本框)在窗体建文本框)在窗体建文本框)在窗体建文本框名称为名称为名称为名称为t1t1t1t1。(2 2 2 2)在窗体建命令按钮)在窗体建命令按钮)在窗体建命令按钮)在窗体建命令按钮名称为名称为名称为名称为c1c1c1c1标题为标题为标题为标题为“确定确定确定确定”。(3 3 3 3)命令按钮)命令按钮)命令按钮)命令按钮c1c1c1c1的单击事件代码:的单击事件代码:的单击事件代码:的单击事件代码:constAA=constAA=“欢迎你欢迎你欢迎你欢迎你! !” 定义符号常量定义符号常量定义符号常量定义符号常量 d
102、imb(1)AsStringdimb(1)AsString 定义字符串数组定义字符串数组定义字符串数组定义字符串数组 b(0)=AAb(0)=AAb(1)=t1b(1)=t1MsgBoxb(0)&Chr(13)&Chr(13)&b(1),vbInformation,MsgBoxb(0)&Chr(13)&Chr(13)&b(1),vbInformation,消息框消息框消息框消息框 说明:说明:说明:说明:Chr(13)Chr(13)生成一个回车,用单引号开始的字符串为注生成一个回车,用单引号开始的字符串为注生成一个回车,用单引号开始的字符串为注生成一个回车,用单引号开始的字符串为注释语句。释语
103、句。释语句。释语句。B(0)B(0)元素为元素为元素为元素为“ “欢迎你欢迎你欢迎你欢迎你” ”B(1)B(1)元素为文本框中的内容元素为文本框中的内容元素为文本框中的内容元素为文本框中的内容ACCESS实例教程(4 4 4 4)转到窗体视图)转到窗体视图)转到窗体视图)转到窗体视图在文本框中输入在文本框中输入在文本框中输入在文本框中输入“张三张三张三张三”单击单击单击单击“确定确定确定确定”按钮。按钮。按钮。按钮。 ACCESS实例教程数组有两种类型:数组有两种类型:固定大小的数组固定大小的数组固定大小的数组固定大小的数组动态数组动态数组动态数组动态数组前者总保持同样的大小;前者总保持同样的
104、大小;前者总保持同样的大小;前者总保持同样的大小;后者在程序中可根据需要动态地改变数组的大小。后者在程序中可根据需要动态地改变数组的大小。后者在程序中可根据需要动态地改变数组的大小。后者在程序中可根据需要动态地改变数组的大小。ACCESS实例教程在定义数组时可以不指定下标,而改在程序运行需要时再在定义数组时可以不指定下标,而改在程序运行需要时再指定,即数组元素的数量是可动态改变的。例如:班级的指定,即数组元素的数量是可动态改变的。例如:班级的学生数量人数不确定。学生数量人数不确定。定义一个动态数组的方法:定义一个动态数组的方法:先用先用 Dim 定义数组;定义数组; 例如:例如: Dim bA
105、ges( ) As Byte然后用然后用 ReDim 声明数组大小;声明数组大小; 例如:例如: ReDim bAges(N-1)在定义常量、变量或数组时,如果未指定变量类型,系统在定义常量、变量或数组时,如果未指定变量类型,系统默认为默认为Variant型数据。型数据。动态数组动态数组ACCESS实例教程例如:例如:8-8 建立动态数组建立动态数组1641 1、新建一个窗体;、新建一个窗体;、新建一个窗体;、新建一个窗体;2 2、在窗体中创建、在窗体中创建、在窗体中创建、在窗体中创建2 2个文本框个文本框个文本框个文本框名称分别为名称分别为名称分别为名称分别为t1t1和和和和t2 t2 附加
106、标签分别为附加标签分别为附加标签分别为附加标签分别为“ “输入字符串输入字符串输入字符串输入字符串1 1:” ”和和和和“ “输入字符串输入字符串输入字符串输入字符串2 2:” ”3 3、在窗体中创建一个命令按钮、在窗体中创建一个命令按钮、在窗体中创建一个命令按钮、在窗体中创建一个命令按钮名称为名称为名称为名称为c1 c1 c1c1的的的的clickclick事件代码为:事件代码为:事件代码为:事件代码为:Private Sub c1_Click()Private Sub c1_Click()Dim aa() As String 定义定义定义定义aaaa为动态字符数组为动态字符数组为动态字符数
107、组为动态字符数组ReDim aa(5) aaaa数组为数组为数组为数组为5 5个元素个元素个元素个元素aa(5) = t1ReDim Preserve aa(9) 重新分配空间,保留原有数据重新分配空间,保留原有数据重新分配空间,保留原有数据重新分配空间,保留原有数据aa(9) = t2MsgBox aa(5) & & aa(9)ReDim aa(5, 5)aa(1, 1) = 我现在是二维数组!MsgBox aa(1, 1)End SubEnd SubACCESS实例教程运行结果:ACCESS实例教程8.2.8 8.2.8 用户定义数据类型用户定义数据类型 用户定义数据类型包含几个分量,先用
108、用户定义数据类型包含几个分量,先用用户定义数据类型包含几个分量,先用用户定义数据类型包含几个分量,先用dimdimdimdim、publicpublicpublicpublic或或或或staticstaticstaticstatic将变将变将变将变量声明为用户定义数据类型,然后给每个分量赋值。给分量赋值的格量声明为用户定义数据类型,然后给每个分量赋值。给分量赋值的格量声明为用户定义数据类型,然后给每个分量赋值。给分量赋值的格量声明为用户定义数据类型,然后给每个分量赋值。给分量赋值的格式为:变量名式为:变量名式为:变量名式为:变量名. . . .分量名分量名分量名分量名= = = =值。值。值。
109、值。 给用户定义数据类型的变量赋值,就是给变量的每个分量赋值。给用户定义数据类型的变量赋值,就是给变量的每个分量赋值。给用户定义数据类型的变量赋值,就是给变量的每个分量赋值。给用户定义数据类型的变量赋值,就是给变量的每个分量赋值。例如,用户定义数据类型为例如,用户定义数据类型为例如,用户定义数据类型为例如,用户定义数据类型为studentstudentstudentstudent,使用该变量代码如下:,使用该变量代码如下:,使用该变量代码如下:,使用该变量代码如下: dim stu as studentdim stu as studentdim stu as studentdim stu as
110、 student stu.xh=080101 stu.xh=080101 stu.xh=080101 stu.xh=080101 stu.xm= stu.xm= stu.xm= stu.xm=李四李四李四李四 stu.xb= stu.xb= stu.xb= stu.xb=女女女女 stu.nl=19 stu.nl=19 stu.nl=19 stu.nl=19ACCESS实例教程8.2.8 8.2.8 用户定义数据类型用户定义数据类型l l用户定义数据类型包含几个分量:用户定义数据类型包含几个分量:用户定义数据类型包含几个分量:用户定义数据类型包含几个分量:1.1.1.1.先用先用先用先用dim
111、dimdimdim、publicpublicpublicpublic或或或或staticstaticstaticstatic,将变量声明为用户定义数据类型将变量声明为用户定义数据类型将变量声明为用户定义数据类型将变量声明为用户定义数据类型; dimdim stu stu asas student student2.2.2.2.然后给每个分量赋值。然后给每个分量赋值。然后给每个分量赋值。然后给每个分量赋值。l l给分量赋值的格式为:变量名给分量赋值的格式为:变量名给分量赋值的格式为:变量名给分量赋值的格式为:变量名. . . .分量名分量名分量名分量名= = = =值。值。值。值。l l给用户定
112、义数据类型的变量赋值,就是给变量的每个分量赋值。给用户定义数据类型的变量赋值,就是给变量的每个分量赋值。给用户定义数据类型的变量赋值,就是给变量的每个分量赋值。给用户定义数据类型的变量赋值,就是给变量的每个分量赋值。例如:例如:例如:例如:用户定义数据类型为用户定义数据类型为用户定义数据类型为用户定义数据类型为studentstudentstudentstudent,使用该变量代码如下:,使用该变量代码如下:,使用该变量代码如下:,使用该变量代码如下:例如:例如:例如:例如:typetype student student xh as string*6xh as string*6 xm as
113、stringxm as string xb as string*1xb as string*1 nl as integernl as integer end type end typedimdimstustuasasstudentstudentstu.xh=080101stu.xh=080101stu.xm=stu.xm=李四李四李四李四 stu.xb=stu.xb=女女女女 stu.nl=19stu.nl=19ACCESS实例教程 用用用用withwithwithwith语句简化变量的赋值,每个分量从点开始写语句简化变量的赋值,每个分量从点开始写语句简化变量的赋值,每个分量从点开始写语句简化
114、变量的赋值,每个分量从点开始写,省略变量名。如:,省略变量名。如:,省略变量名。如:,省略变量名。如: dim stu as studentdim stu as studentdim stu as studentdim stu as student with stu with stu with stu with stu .xh=080101 .xh=080101 .xh=080101 .xh=080101 .xm= .xm= .xm= .xm=李四李四李四李四 .xb= .xb= .xb= .xb=女女女女 .nl=19 .nl=19 .nl=19 .nl=19 end with end wi
115、th end with end withACCESS实例教程例如:例如:8-9 用户自定义数据类型练习用户自定义数据类型练习1 1、新建窗体;、新建窗体;、新建窗体;、新建窗体;2 2、在、在、在、在窗体中建立窗体中建立窗体中建立窗体中建立2 2个文本框个文本框个文本框个文本框名称分别为名称分别为名称分别为名称分别为t1t1和和和和t2t2 附加标签分别附加标签分别附加标签分别附加标签分别为为为为“ “请输入姓名:请输入姓名:请输入姓名:请输入姓名:” ”和和和和“ “请输入性别:请输入性别:请输入性别:请输入性别:” ”;3 3、在窗体中创建一个、在窗体中创建一个、在窗体中创建一个、在窗体中
116、创建一个命令按钮命令按钮命令按钮命令按钮名称为名称为名称为名称为c1c1 标题为标题为标题为标题为“ “确定确定确定确定” ”;4 4、进入、进入、进入、进入VBEVBE,在,在,在,在通用声明区通用声明区通用声明区通用声明区编写代码如下:编写代码如下:编写代码如下:编写代码如下:OptionCompareDatabaseOptionCompareDatabasePrivateTypestudentPrivateTypestudent定义用户数据类型定义用户数据类型定义用户数据类型定义用户数据类型 xmAsStringxmAsString xbAsString*1xbAsString*1End
117、TypeEndTypeConstAA=ConstAA=姓名姓名姓名姓名: 定义符号常量定义符号常量定义符号常量定义符号常量ConstBB=ConstBB=性别性别性别性别:ACCESS实例教程例如:例如:8-9 用户自定义数据类型练习用户自定义数据类型练习5 5、c1c1的的的的clickclick事件代码为:事件代码为:事件代码为:事件代码为:PrivateSubc1_Click()PrivateSubc1_Click()DimstuAsstudentDimstuAsstudent 定义用户数据类型变量定义用户数据类型变量定义用户数据类型变量定义用户数据类型变量stu.xm=t1stu.xm
118、=t1 给每个分量赋值给每个分量赋值给每个分量赋值给每个分量赋值stu.xb=t2stu.xb=t2MsgBoxAA&stu.xm&Chr(13)&BB&stu.xb,MsgBoxAA&stu.xm&Chr(13)&BB&stu.xb,vbInformation,vbInformation,消息框消息框消息框消息框 EndSubEndSubACCESS实例教程8.2.9 8.2.9 运算符与表达式运算符与表达式 1. 运算符运算符VBA中的运算符可分为中的运算符可分为4种类型:算术运算符、字种类型:算术运算符、字符串运算符、关系运算符和逻辑运算符。符串运算符、关系运算符和逻辑运算符。(1) (
119、1) 算术运算符算术运算符 算术运算符是常用的运算符,用来执行简单的算术算术运算符是常用的运算符,用来执行简单的算术运算,运算,VBA提供了提供了8个算术运算符。个算术运算符。 乘幂(乘幂()、负数()、负数(-)乘法()乘法(*)、除法()、除法(/)、整数除)、整数除法(法()、求模()、求模(mod)、加法()、加法(+)、减法()、减法(-)。)。ACCESS实例教程运算符运算符运算符运算符算术运算符算术运算符算术运算符算术运算符ACCESS实例教程 将两个操作数进行大小比较,结果为逻辑值将两个操作数进行大小比较,结果为逻辑值将两个操作数进行大小比较,结果为逻辑值将两个操作数进行大小比
120、较,结果为逻辑值, , , ,即真即真即真即真(True)(True)(True)(True)或假或假或假或假(False)(False)(False)(False)。 相等相等相等相等 = = = =、 不相等不相等不相等不相等 、 大于大于大于大于 、 大于等于大于等于大于等于大于等于 =、 小于小于小于小于 、 小于等于小于等于小于等于小于等于 = 连接运算符连接运算符连接运算符连接运算符 关系运算符关系运算符关系运算符关系运算符 逻辑运算逻辑运算逻辑运算逻辑运算ACCESS实例教程例:例:例:例:用人单位招聘:年龄小于用人单位招聘:年龄小于用人单位招聘:年龄小于用人单位招聘:年龄小于4
121、040岁的女性,学历专科或本科。岁的女性,学历专科或本科。岁的女性,学历专科或本科。岁的女性,学历专科或本科。年龄年龄年龄年龄4040,性别,性别,性别,性别=“=“女女女女” ”,( (学历学历学历学历=“=“专科专科专科专科” ”,学历,学历,学历,学历=“=“本科本科本科本科” ”) ) AndAndOrAndAndOr例:例:例:例:算术表达式:算术表达式:算术表达式:算术表达式:正确的正确的正确的正确的VBAVBA表达式:表达式:表达式:表达式: 3 3=xAndx=7=xAndx=7错误的错误的错误的错误的VBAVBA表达式:表达式:表达式:表达式: 3=x=73=x=7或或或或
122、3=xOrx=73=xOrx=7 考虑:考虑:考虑:考虑:若分别写成:若分别写成:若分别写成:若分别写成:年龄年龄年龄年龄40And40And性别性别性别性别=女女女女And(And(学历学历学历学历=专科专科专科专科AndAnd学历学历学历学历=本科本科本科本科)年龄年龄年龄年龄40Or40Or性别性别性别性别=女女女女Or(Or(学历学历学历学历=专科专科专科专科OrOr学历学历学历学历=本科本科本科本科)ACCESS实例教程8.3 8.3 函数函数uu函数实际上是系统事先定义好的内部程序,用来完成函数实际上是系统事先定义好的内部程序,用来完成函数实际上是系统事先定义好的内部程序,用来完成
123、函数实际上是系统事先定义好的内部程序,用来完成特定的功能。特定的功能。特定的功能。特定的功能。VBAVBA提供了大量的内部函数,供用户在提供了大量的内部函数,供用户在提供了大量的内部函数,供用户在提供了大量的内部函数,供用户在编程时使用。编程时使用。编程时使用。编程时使用。 函数的调用形式为:函数的调用形式为:函数的调用形式为:函数的调用形式为: 函数名函数名函数名函数名( (参数表参数表参数表参数表) )uu其中,参数可以是常量、变量或表达式,可以有一个其中,参数可以是常量、变量或表达式,可以有一个其中,参数可以是常量、变量或表达式,可以有一个其中,参数可以是常量、变量或表达式,可以有一个或
124、多个。或多个。或多个。或多个。uu每个函数被调用时,都会有一个返回值。每个函数被调用时,都会有一个返回值。每个函数被调用时,都会有一个返回值。每个函数被调用时,都会有一个返回值。uu根据函数的不同,参数与返回值都有特定的数据类型根据函数的不同,参数与返回值都有特定的数据类型根据函数的不同,参数与返回值都有特定的数据类型根据函数的不同,参数与返回值都有特定的数据类型与之对应。与之对应。与之对应。与之对应。uu内置函数按其功能可分为内置函数按其功能可分为内置函数按其功能可分为内置函数按其功能可分为数学函数数学函数数学函数数学函数、转换函数转换函数转换函数转换函数、字符字符字符字符串函数串函数串函数
125、串函数、日期函数日期函数日期函数日期函数和和和和格式输出函数格式输出函数格式输出函数格式输出函数。ACCESS实例教程1 1 1 1算术函数算术函数算术函数算术函数(1 1 1 1)abs(x)abs(x)abs(x)abs(x),返回,返回,返回,返回x x x x的绝对值。的绝对值。的绝对值。的绝对值。(2 2 2 2)int(x)int(x)int(x)int(x),返回,返回,返回,返回x x x x的整数部分,的整数部分,的整数部分,的整数部分,x0x0x0x0时,返回值小于等于时,返回值小于等于时,返回值小于等于时,返回值小于等于x x x x。 fix(x)fix(x)fix(x
126、)fix(x),返回,返回,返回,返回x x x x的整数部分,的整数部分,的整数部分,的整数部分,x0x0x0x0x0x0x0,每次产生不同随机数;若,每次产生不同随机数;若,每次产生不同随机数;若,每次产生不同随机数;若x=0x=0x=0x=0,产生最近生成的随机数;,产生最近生成的随机数;,产生最近生成的随机数;,产生最近生成的随机数;若若若若x0x0x0x0x0x0x0时可直接写时可直接写时可直接写时可直接写rndrndrndrnd,省略括号和,省略括号和,省略括号和,省略括号和参数。参数。参数。参数。8.3.1 VBA8.3.1 VBA常用函数常用函数第第第第3 3 3 3章中介绍过
127、的函数在此不作详细介绍。章中介绍过的函数在此不作详细介绍。章中介绍过的函数在此不作详细介绍。章中介绍过的函数在此不作详细介绍。 ACCESS实例教程例如:例如:例如:例如: int (100*rnd)int (100*rnd)int (100*rnd)int (100*rnd),产生,产生,产生,产生0 0 0 099999999之间的随机整数。之间的随机整数。之间的随机整数。之间的随机整数。 int (101*rnd)int (101*rnd)int (101*rnd)int (101*rnd),产生,产生,产生,产生0 0 0 0100100100100之间的随机整数。之间的随机整数。之间
128、的随机整数。之间的随机整数。 int (100*rnd+1)int (100*rnd+1)int (100*rnd+1)int (100*rnd+1),产生,产生,产生,产生1 1 1 1100100100100之间的随机整数。之间的随机整数。之间的随机整数。之间的随机整数。 int (100*rnd+100)int (100*rnd+100)int (100*rnd+100)int (100*rnd+100),产生,产生,产生,产生100100100100199199199199之间的随机整数。之间的随机整数。之间的随机整数。之间的随机整数。 int (101*rnd+100)int (10
129、1*rnd+100)int (101*rnd+100)int (101*rnd+100),产生,产生,产生,产生100100100100200200200200之间的随机整数。之间的随机整数。之间的随机整数。之间的随机整数。(5 5 5 5)round(x,n)round(x,n)round(x,n)round(x,n),n n n n是小数位数,是小数位数,是小数位数,是小数位数, 对对对对x x x x的小数做四舍五入,的小数做四舍五入,的小数做四舍五入,的小数做四舍五入,返回有返回有返回有返回有n n n n位小数的位小数的位小数的位小数的x x x x值。值。值。值。 例如:例如:例如
130、:例如:round(12.735,2)round(12.735,2)round(12.735,2)round(12.735,2),返回,返回,返回,返回12.7412.7412.7412.74。ACCESS实例教程2 2 2 2字符串函数字符串函数字符串函数字符串函数(1 1 1 1)len(x)len(x)len(x)len(x),返回,返回,返回,返回x x x x的长度,即字符个数。要求的长度,即字符个数。要求的长度,即字符个数。要求的长度,即字符个数。要求x x x x为字符串类型。为字符串类型。为字符串类型。为字符串类型。(2 2 2 2)space(n)space(n)space(
131、n)space(n),返回由,返回由,返回由,返回由n n n n个空格组成的字符串,个空格组成的字符串,个空格组成的字符串,个空格组成的字符串,n n n n为数字。为数字。为数字。为数字。(3 3 3 3)ucase(x)ucase(x)ucase(x)ucase(x),将,将,将,将x x x x中的小写字母转大写。中的小写字母转大写。中的小写字母转大写。中的小写字母转大写。 lcase(x)lcase(x)lcase(x)lcase(x),将,将,将,将x x x x中的大写字母转小写。中的大写字母转小写。中的大写字母转小写。中的大写字母转小写。(4 4 4 4)trim(x)trim
132、(x)trim(x)trim(x),去掉,去掉,去掉,去掉x x x x的首部和尾部空格。的首部和尾部空格。的首部和尾部空格。的首部和尾部空格。 ltrim(x)ltrim(x)ltrim(x)ltrim(x),去掉,去掉,去掉,去掉x x x x的首部空格。的首部空格。的首部空格。的首部空格。 rtrim(x)rtrim(x)rtrim(x)rtrim(x),去掉,去掉,去掉,去掉x x x x的尾部空格。的尾部空格。的尾部空格。的尾部空格。(5 5 5 5)instr(instr(instr(instr(起始位置,字串起始位置,字串起始位置,字串起始位置,字串s1s1s1s1,字串,字串,
133、字串,字串s2s2s2s2,比较方式,比较方式,比较方式,比较方式) ) ) ); 返回字串返回字串返回字串返回字串s2s2s2s2在字串在字串在字串在字串s1s1s1s1中最早出现的位置,返回值是一个整数。中最早出现的位置,返回值是一个整数。中最早出现的位置,返回值是一个整数。中最早出现的位置,返回值是一个整数。例如:例如:例如:例如:P169P169P169P169ACCESS实例教程 3 3 3 3日期时间函数日期时间函数日期时间函数日期时间函数(1 1)weekday(x,n)weekday(x,n),返回,返回,返回,返回1 17 7的整数,表示星期几。的整数,表示星期几。的整数,表
134、示星期几。的整数,表示星期几。说明:说明:说明:说明:n n为可选项,默认值为可选项,默认值为可选项,默认值为可选项,默认值1 1。当。当。当。当n n取值为取值为取值为取值为1 1时,星期天返回时,星期天返回时,星期天返回时,星期天返回1 1,星期一返回星期一返回星期一返回星期一返回2 2,依次类推。若,依次类推。若,依次类推。若,依次类推。若n n取值为取值为取值为取值为2 2,则星期一返,则星期一返,则星期一返,则星期一返回回回回1 1,星期二返回,星期二返回,星期二返回,星期二返回2 2,星期天返回,星期天返回,星期天返回,星期天返回7 7。(2 2)hour(x)hour(x),返回
135、,返回,返回,返回x x的小时数。的小时数。的小时数。的小时数。(3 3)minute(x)minute(x),返回,返回,返回,返回x x的分钟数。的分钟数。的分钟数。的分钟数。(4 4)second(x)second(x),返回,返回,返回,返回x x的秒数。的秒数。的秒数。的秒数。ACCESS实例教程4 4 4 4类型转换函数类型转换函数类型转换函数类型转换函数(1 1 1 1)asc(x)asc(x)asc(x)asc(x),返回首字符的,返回首字符的,返回首字符的,返回首字符的ASCIIASCIIASCIIASCII码,其中,码,其中,码,其中,码,其中,x x x x是字符串或字符
136、串是字符串或字符串是字符串或字符串是字符串或字符串变量名。变量名。变量名。变量名。 说明:说明:说明:说明:ASCIIASCIIASCIIASCII码是美国标准信息转换码,共码是美国标准信息转换码,共码是美国标准信息转换码,共码是美国标准信息转换码,共128128128128个字符,对应十个字符,对应十个字符,对应十个字符,对应十进制数进制数进制数进制数0 0 0 0127127127127。(2 2 2 2)chr(n)chr(n)chr(n)chr(n),将数字,将数字,将数字,将数字n n n n转换成相应字符,转换成相应字符,转换成相应字符,转换成相应字符,n n n n的取值范围的取
137、值范围的取值范围的取值范围0 0 0 0127127127127。(3 3 3 3)str(n)str(n)str(n)str(n),将数字转换为字符串,将数字转换为字符串,将数字转换为字符串,将数字转换为字符串,n n n n是数字或数字表达式。是数字或数字表达式。是数字或数字表达式。是数字或数字表达式。 说明:说明:说明:说明:当数字转换为字符串时,总会在前头留一个符号位,如当数字转换为字符串时,总会在前头留一个符号位,如当数字转换为字符串时,总会在前头留一个符号位,如当数字转换为字符串时,总会在前头留一个符号位,如果是正数,符号位显示空格。果是正数,符号位显示空格。果是正数,符号位显示空
138、格。果是正数,符号位显示空格。(4 4 4 4)val(x)val(x)val(x)val(x),将数字型字符串转换为数字,将数字型字符串转换为数字,将数字型字符串转换为数字,将数字型字符串转换为数字,x x x x是数字型字符串。是数字型字符串。是数字型字符串。是数字型字符串。 说明:说明:说明:说明:转换时自动将空格、制表符、换行符去掉,当遇到第一转换时自动将空格、制表符、换行符去掉,当遇到第一转换时自动将空格、制表符、换行符去掉,当遇到第一转换时自动将空格、制表符、换行符去掉,当遇到第一个不能识别为数字的字符时即停止读入。个不能识别为数字的字符时即停止读入。个不能识别为数字的字符时即停止
139、读入。个不能识别为数字的字符时即停止读入。 ACCESS实例教程8.3.2 8.3.2 输入输出函数输入输出函数1 1 1 1输出函数输出函数输出函数输出函数MsgBoxMsgBoxMsgBoxMsgBox 格式:格式:格式:格式:msgboxmsgboxmsgboxmsgbox(显示信息显示信息显示信息显示信息,按钮数目按钮数目按钮数目按钮数目+ + + +图标类型图标类型图标类型图标类型,标题栏字符串标题栏字符串标题栏字符串标题栏字符串)功能:功能:功能:功能:在对话框中显示消息,等待用户单击按钮,返回一个整数,在对话框中显示消息,等待用户单击按钮,返回一个整数,在对话框中显示消息,等待用
140、户单击按钮,返回一个整数,在对话框中显示消息,等待用户单击按钮,返回一个整数,该值代表用户单击了哪个按钮。该值代表用户单击了哪个按钮。该值代表用户单击了哪个按钮。该值代表用户单击了哪个按钮。说明:说明:说明:说明:P170P170P170P170值值值值按钮数目与样式按钮数目与样式按钮数目与样式按钮数目与样式0只显示确定按钮1显示确定和取消2显示放弃、重试和取消3显示是、否和取消4显示是、否5显示重试和取消消息框的图标样式消息框的图标样式消息框的图标样式消息框的图标样式P171P171ACCESS实例教程2 2 2 2输入函数输入函数输入函数输入函数inputboxinputboxinputb
141、oxinputbox格式:格式:格式:格式:inputboxinputboxinputboxinputbox(提示信息提示信息提示信息提示信息,标题栏字符串标题栏字符串标题栏字符串标题栏字符串,默认值默认值默认值默认值)功能:功能:功能:功能:提示用户输入一个字符串或数值。提示用户输入一个字符串或数值。提示用户输入一个字符串或数值。提示用户输入一个字符串或数值。说明:说明:说明:说明:(1 1 1 1)“提示信息提示信息提示信息提示信息”是必选项,是一个字符串,显示在输入是必选项,是一个字符串,显示在输入是必选项,是一个字符串,显示在输入是必选项,是一个字符串,显示在输入框中。框中。框中。框中
142、。(2 2 2 2)“标题栏字符串标题栏字符串标题栏字符串标题栏字符串”是可选项,省略此项,标题栏将显是可选项,省略此项,标题栏将显是可选项,省略此项,标题栏将显是可选项,省略此项,标题栏将显示应用程序名。示应用程序名。示应用程序名。示应用程序名。(3 3 3 3)默认值是可选项,是字串或数字,省略此项,系统会)默认值是可选项,是字串或数字,省略此项,系统会)默认值是可选项,是字串或数字,省略此项,系统会)默认值是可选项,是字串或数字,省略此项,系统会自动匹配数据类型。自动匹配数据类型。自动匹配数据类型。自动匹配数据类型。(4 4 4 4)函数返回值是在输入框中输入的数字或字符串。)函数返回值
143、是在输入框中输入的数字或字符串。)函数返回值是在输入框中输入的数字或字符串。)函数返回值是在输入框中输入的数字或字符串。ACCESS实例教程例例8-10 输入输出函数输入输出函数1.1.创建窗体;创建窗体;创建窗体;创建窗体;2.2.在窗体中建立在窗体中建立在窗体中建立在窗体中建立一个文本框一个文本框一个文本框一个文本框 标签为标签为标签为标签为“ “输出函数返回值输出函数返回值输出函数返回值输出函数返回值” ”名名名名称为称为称为称为t1t1;3.3.建立一个命令按钮建立一个命令按钮建立一个命令按钮建立一个命令按钮标题为输入输出函数练习标题为输入输出函数练习标题为输入输出函数练习标题为输入输
144、出函数练习名称为名称为名称为名称为c1;c1;4.4.C1C1的单击事件代码:的单击事件代码:的单击事件代码:的单击事件代码: PrivateSubc1_Click()PrivateSubc1_Click()DimaaAsStringDimaaAsStringaa=InputBox(aa=InputBox(请写出您的姓名:请写出您的姓名:请写出您的姓名:请写出您的姓名:,输入框输入框输入框输入框,),)bb=MsgBox(aa&bb=MsgBox(aa&你好!你好!你好!你好!,1 1+6464,输出框输出框输出框输出框)t=bbt=bbEndSubEndSubACCESS实例教程8.3.3
145、8.3.3 计算外部数据源数据的函数计算外部数据源数据的函数1 1 1 1DavgDavgDavgDavg函数函数函数函数 格式:格式:格式:格式:DavgDavgDavgDavg( 字段名字段名字段名字段名 , 表名表名表名表名 , 条件表达式条件表达式条件表达式条件表达式 ) 功能:对指定字段求平均值。功能:对指定字段求平均值。功能:对指定字段求平均值。功能:对指定字段求平均值。 说明:若省略条件表达式,对全体字段求平均值。说明:若省略条件表达式,对全体字段求平均值。说明:若省略条件表达式,对全体字段求平均值。说明:若省略条件表达式,对全体字段求平均值。 例如:例如:例如:例如:DavgD
146、avgDavgDavg( 奖金奖金奖金奖金 , 工资工资工资工资 , 基本工资基本工资基本工资基本工资=2000=2000=2000=2000)2 2 2 2DsumDsumDsumDsum函数函数函数函数 格式:格式:格式:格式:DsumDsumDsumDsum( 字段名字段名字段名字段名 , 表名表名表名表名 , 条件表达式条件表达式条件表达式条件表达式 ) 功能:对指定字段求和。功能:对指定字段求和。功能:对指定字段求和。功能:对指定字段求和。 说明:若省略条件表达式,对全体字段求和。说明:若省略条件表达式,对全体字段求和。说明:若省略条件表达式,对全体字段求和。说明:若省略条件表达式,
147、对全体字段求和。 例如:例如:例如:例如:DsumDsumDsumDsum(“奖金奖金奖金奖金”,“工资工资工资工资”) 除了在报表中介绍过的除了在报表中介绍过的除了在报表中介绍过的除了在报表中介绍过的DlookupDlookupDlookupDlookup函数函数函数函数, , , ,还有以下函数还有以下函数还有以下函数还有以下函数: : : : ACCESS实例教程 3 3 3 3DcountDcountDcountDcount函数函数函数函数 格式:格式:格式:格式:DcountDcountDcountDcount( 字段名字段名字段名字段名 , 表名表名表名表名 , 条件表达式条件表达
148、式条件表达式条件表达式 ) 功能:对指定字段统计个数。功能:对指定字段统计个数。功能:对指定字段统计个数。功能:对指定字段统计个数。 说明:若省略条件表达式,对全体字段统计个数。说明:若省略条件表达式,对全体字段统计个数。说明:若省略条件表达式,对全体字段统计个数。说明:若省略条件表达式,对全体字段统计个数。 例如:例如:例如:例如:DcountDcountDcountDcount(“教师编号教师编号教师编号教师编号 , 教师教师教师教师 , 性别性别性别性别=女女女女 )ACCESS实例教程例例例例8-12:8-12:8-12:8-12:统计外部表数据统计外部表数据统计外部表数据统计外部表数
149、据 外部数据外部数据外部数据外部数据: : : :(1)(1)(1)(1)在窗体建在窗体建在窗体建在窗体建3 3 3 3个文本框个文本框个文本框个文本框名称为名称为名称为名称为t1t1t1t1、t2t2t2t2、t3t3t3t3附加标签的标题附加标签的标题附加标签的标题附加标签的标题分别为分别为分别为分别为“人数总计人数总计人数总计人数总计”、“工资合计工资合计工资合计工资合计”、“平均奖金平均奖金平均奖金平均奖金”。(2)(2)(2)(2)在窗体建立在窗体建立在窗体建立在窗体建立命令按钮命令按钮命令按钮命令按钮标题为标题为标题为标题为“计算计算计算计算”名称为名称为名称为名称为c1c1c1c
150、1。ACCESS实例教程(3 3 3 3)c1c1c1c1的的的的clickclickclickclick事件代码:事件代码:事件代码:事件代码: t1 = DCount(t1 = DCount(t1 = DCount(t1 = DCount(教师编号教师编号教师编号教师编号, , , , 工资工资工资工资) t2 = DSum( t2 = DSum( t2 = DSum( t2 = DSum(基本工资基本工资基本工资基本工资, , , , 工资工资工资工资) t3 = DAvg( t3 = DAvg( t3 = DAvg( t3 = DAvg(奖金奖金奖金奖金, , , , 工资工资工资工资
151、)(4) (4) (4) (4) 转到窗体视图转到窗体视图转到窗体视图转到窗体视图单击命令按钮单击命令按钮单击命令按钮单击命令按钮各数据显示在文本框中。各数据显示在文本框中。各数据显示在文本框中。各数据显示在文本框中。 ACCESS实例教程8.3.4 8.3.4 处理空值的函数处理空值的函数 NzNz NzNzNzNz函数可以将函数可以将函数可以将函数可以将NullNullNullNull值转换为值转换为值转换为值转换为数字数字数字数字0 0 0 0、空字串空字串空字串空字串或或或或自定义的返回值自定义的返回值自定义的返回值自定义的返回值。 格式:格式:格式:格式:NzNzNzNz(变量(变量
152、(变量(变量/ / / /表达式表达式表达式表达式/ / / /字段属性名字段属性名字段属性名字段属性名 ,指定值,指定值,指定值,指定值 ) 说明:说明:说明:说明:指定值是可选项。若给出指定值,指定值是可选项。若给出指定值,指定值是可选项。若给出指定值,指定值是可选项。若给出指定值,NzNzNzNz函数返回指定值。若省函数返回指定值。若省函数返回指定值。若省函数返回指定值。若省略指定值,当类型为数值型且值为略指定值,当类型为数值型且值为略指定值,当类型为数值型且值为略指定值,当类型为数值型且值为NullNullNullNull,NzNzNzNz函数返回数字函数返回数字函数返回数字函数返回数
153、字0 0 0 0。当类型为字。当类型为字。当类型为字。当类型为字符型且值为符型且值为符型且值为符型且值为NullNullNullNull,NzNzNzNz函数返回空字串。函数返回空字串。函数返回空字串。函数返回空字串。例例例例8-13:8-13:8-13:8-13:如果文本框为空,显示提示信息。如果文本框为空,显示提示信息。如果文本框为空,显示提示信息。如果文本框为空,显示提示信息。 (1)(1)(1)(1)在窗体建在窗体建在窗体建在窗体建文本框文本框文本框文本框名称为名称为名称为名称为t1t1t1t1附加标签标题为附加标签标题为附加标签标题为附加标签标题为“输入数值输入数值输入数值输入数值”
154、。(2)(2)(2)(2)在窗体建在窗体建在窗体建在窗体建标签标签标签标签名称为名称为名称为名称为b1b1b1b1标题为标题为标题为标题为“输入的内容为:输入的内容为:输入的内容为:输入的内容为:”(3)(3)(3)(3)在窗体建在窗体建在窗体建在窗体建命令按钮命令按钮命令按钮命令按钮标题为标题为标题为标题为“验证验证验证验证”名称为名称为名称为名称为c1c1c1c1。ACCESS实例教程(4 4 4 4)c1c1c1c1的的的的clickclickclickclick事件代码事件代码事件代码事件代码: : : : Dim aa As StringDim aa As StringDim aa
155、As StringDim aa As String aa = Nz(t1.Value, aa = Nz(t1.Value, aa = Nz(t1.Value, aa = Nz(t1.Value, 文本框不能为空文本框不能为空文本框不能为空文本框不能为空!)!)!)!) MsgBox aa MsgBox aa MsgBox aa MsgBox aa b1.Caption = b1.Caption = b1.Caption = b1.Caption = 输入内容为输入内容为输入内容为输入内容为: & Nz(t1.Value): & Nz(t1.Value): & Nz(t1.Value): & N
156、z(t1.Value)(5 5 5 5)转到窗体视图,文本框为空时单击命令按钮,显示消息。)转到窗体视图,文本框为空时单击命令按钮,显示消息。)转到窗体视图,文本框为空时单击命令按钮,显示消息。)转到窗体视图,文本框为空时单击命令按钮,显示消息。 ACCESS实例教程(6 6 6 6)在文本框中输入字串)在文本框中输入字串)在文本框中输入字串)在文本框中输入字串“abc123abc123abc123abc123”,单击命令,单击命令,单击命令,单击命令按钮,显示结果。按钮,显示结果。按钮,显示结果。按钮,显示结果。 ACCESS实例教程8.4 VBA8.4 VBA程序结构程序结构 VBAVBA
157、VBAVBA程序是语句的集合,语句是一条能够完成某项操程序是语句的集合,语句是一条能够完成某项操程序是语句的集合,语句是一条能够完成某项操程序是语句的集合,语句是一条能够完成某项操作的命令,可以包含关键字、运算符、变量、常数和表作的命令,可以包含关键字、运算符、变量、常数和表作的命令,可以包含关键字、运算符、变量、常数和表作的命令,可以包含关键字、运算符、变量、常数和表达式,程序用来告诉计算机完成指定任务。达式,程序用来告诉计算机完成指定任务。达式,程序用来告诉计算机完成指定任务。达式,程序用来告诉计算机完成指定任务。 8.4.1 8.4.1 程序构成程序构成1 1 1 1语句分类语句分类语句
158、分类语句分类 语句按功能分为两大类:语句按功能分为两大类:语句按功能分为两大类:语句按功能分为两大类:声明语句声明语句声明语句声明语句和和和和执行语句执行语句执行语句执行语句。 声明语句声明语句声明语句声明语句: : : :用来定义变量、常量、过程,并指定数据类型。用来定义变量、常量、过程,并指定数据类型。用来定义变量、常量、过程,并指定数据类型。用来定义变量、常量、过程,并指定数据类型。 执行语句执行语句执行语句执行语句: : : :进行赋值操作、调用过程、实现各种流程控制。进行赋值操作、调用过程、实现各种流程控制。进行赋值操作、调用过程、实现各种流程控制。进行赋值操作、调用过程、实现各种流
159、程控制。ACCESS实例教程2 2 2 2程序的三种结构程序的三种结构程序的三种结构程序的三种结构程序有三种基本结构:顺序结构、选择结构、循环结构。程序有三种基本结构:顺序结构、选择结构、循环结构。程序有三种基本结构:顺序结构、选择结构、循环结构。程序有三种基本结构:顺序结构、选择结构、循环结构。顺序结构顺序结构顺序结构顺序结构,按语句排列顺序依次执行。,按语句排列顺序依次执行。,按语句排列顺序依次执行。,按语句排列顺序依次执行。选择结构选择结构选择结构选择结构,又称为条件结构,根据不同条件选择执行不同操作。,又称为条件结构,根据不同条件选择执行不同操作。,又称为条件结构,根据不同条件选择执行
160、不同操作。,又称为条件结构,根据不同条件选择执行不同操作。循环结构循环结构循环结构循环结构,重复执行某段程序代码。,重复执行某段程序代码。,重复执行某段程序代码。,重复执行某段程序代码。3 3 3 3程序书写规则程序书写规则程序书写规则程序书写规则(1 1 1 1)一条语句一行写不下时,用续行符)一条语句一行写不下时,用续行符)一条语句一行写不下时,用续行符)一条语句一行写不下时,用续行符“_ _ _ _”作为第一行结尾,作为第一行结尾,作为第一行结尾,作为第一行结尾, 将剩余语句写在下一行。将剩余语句写在下一行。将剩余语句写在下一行。将剩余语句写在下一行。(2 2 2 2)语句较短时可以几条
161、语句写在一行,语句之间用冒号分隔。)语句较短时可以几条语句写在一行,语句之间用冒号分隔。)语句较短时可以几条语句写在一行,语句之间用冒号分隔。)语句较短时可以几条语句写在一行,语句之间用冒号分隔。(3 3 3 3)如果一行语句输入完成后显示为红色,表示该语句存在错误。)如果一行语句输入完成后显示为红色,表示该语句存在错误。)如果一行语句输入完成后显示为红色,表示该语句存在错误。)如果一行语句输入完成后显示为红色,表示该语句存在错误。(4 4 4 4)尽量使用提示信息。)尽量使用提示信息。)尽量使用提示信息。)尽量使用提示信息。(5 5 5 5)代码不区分大小写。)代码不区分大小写。)代码不区分
162、大小写。)代码不区分大小写。ACCESS实例教程4 4 4 4注释语句注释语句注释语句注释语句 注释语句是非执行语句,用来提高程序的可读性,不被解释和编译。注注释语句是非执行语句,用来提高程序的可读性,不被解释和编译。注注释语句是非执行语句,用来提高程序的可读性,不被解释和编译。注注释语句是非执行语句,用来提高程序的可读性,不被解释和编译。注释语句显示为绿色。释语句显示为绿色。释语句显示为绿色。释语句显示为绿色。格式格式格式格式1 1 1 1:rem rem rem rem 注释内容注释内容注释内容注释内容说明:说明:说明:说明:用用用用remremremrem引导的注释语句,如果放在其他语句
163、后面,之间用冒号分隔。引导的注释语句,如果放在其他语句后面,之间用冒号分隔。引导的注释语句,如果放在其他语句后面,之间用冒号分隔。引导的注释语句,如果放在其他语句后面,之间用冒号分隔。格式格式格式格式2 2 2 2: 注释内容注释内容注释内容注释内容说明:说明:说明:说明:用单引号引导的注释语句,放在其他语句后面时无需使用冒号分隔。用单引号引导的注释语句,放在其他语句后面时无需使用冒号分隔。用单引号引导的注释语句,放在其他语句后面时无需使用冒号分隔。用单引号引导的注释语句,放在其他语句后面时无需使用冒号分隔。例:例:例:例:dim a1 as integer,a2 as integer : r
164、em dim a1 as integer,a2 as integer : rem dim a1 as integer,a2 as integer : rem dim a1 as integer,a2 as integer : rem 定义两个整型变量定义两个整型变量定义两个整型变量定义两个整型变量 a1=12 a1=12 a1=12 a1=12 给两个变量赋值给两个变量赋值给两个变量赋值给两个变量赋值 a2=34a2=34a2=34a2=34 a1=a1+a2 a1=a1+a2 a1=a1+a2 a1=a1+a2 将两个变量的和赋给变量将两个变量的和赋给变量将两个变量的和赋给变量将两个变量的和
165、赋给变量a1a1a1a1 rem rem rem rem 用消息框显示结果用消息框显示结果用消息框显示结果用消息框显示结果 msgbox a1+a2= & a1 , vbInformation, msgbox a1+a2= & a1 , vbInformation, msgbox a1+a2= & a1 , vbInformation, msgbox a1+a2= & a1 , vbInformation, 消息框消息框消息框消息框 ACCESS实例教程5 5 5 5声明语句声明语句声明语句声明语句 声明语句是用来定义常量、变量、数组和过程。定义这些的同声明语句是用来定义常量、变量、数组和过程
166、。定义这些的同声明语句是用来定义常量、变量、数组和过程。定义这些的同声明语句是用来定义常量、变量、数组和过程。定义这些的同时,也定义了初始值、生命周期、作用域等内容。时,也定义了初始值、生命周期、作用域等内容。时,也定义了初始值、生命周期、作用域等内容。时,也定义了初始值、生命周期、作用域等内容。 初始值由数据类型决定,初始值由数据类型决定,初始值由数据类型决定,初始值由数据类型决定, 如:如:如:如:integerintegerintegerinteger,stringstringstringstring。 生命周期由定义的位置决定,生命周期由定义的位置决定,生命周期由定义的位置决定,生命周
167、期由定义的位置决定, 如:局部、模块、全局。如:局部、模块、全局。如:局部、模块、全局。如:局部、模块、全局。 作用域由定义时所使用的关键字决定。作用域由定义时所使用的关键字决定。作用域由定义时所使用的关键字决定。作用域由定义时所使用的关键字决定。 如:如:如:如:dimdimdimdim、publicpublicpublicpublic。 ACCESS实例教程6 6 6 6赋值语句赋值语句赋值语句赋值语句赋值语句用来为变量指定一个值。赋值语句用来为变量指定一个值。赋值语句用来为变量指定一个值。赋值语句用来为变量指定一个值。格式:格式:格式:格式:变量名变量名变量名变量名= = = =值或表达
168、式值或表达式值或表达式值或表达式说明:说明:说明:说明:(1 1 1 1)格式中的等号()格式中的等号()格式中的等号()格式中的等号(= = = =)称为赋值号,与数学中等号意义不同。如)称为赋值号,与数学中等号意义不同。如)称为赋值号,与数学中等号意义不同。如)称为赋值号,与数学中等号意义不同。如表达式表达式表达式表达式a=a+1a=a+1a=a+1a=a+1在数学中不能用,在赋值语句中常用。在数学中不能用,在赋值语句中常用。在数学中不能用,在赋值语句中常用。在数学中不能用,在赋值语句中常用。(2 2 2 2)赋值号左边只能是变量名,不能是常量和表达式。)赋值号左边只能是变量名,不能是常量
169、和表达式。)赋值号左边只能是变量名,不能是常量和表达式。)赋值号左边只能是变量名,不能是常量和表达式。(3 3 3 3)赋值语句有计算和赋值双重功能,将赋值号右边的计算结果)赋值语句有计算和赋值双重功能,将赋值号右边的计算结果)赋值语句有计算和赋值双重功能,将赋值号右边的计算结果)赋值语句有计算和赋值双重功能,将赋值号右边的计算结果赋给赋值号左边的变量。赋给赋值号左边的变量。赋给赋值号左边的变量。赋给赋值号左边的变量。(4 4 4 4)赋值号两边要类型匹配。例如,表达式)赋值号两边要类型匹配。例如,表达式)赋值号两边要类型匹配。例如,表达式)赋值号两边要类型匹配。例如,表达式a%=a%=a%=
170、a%=“abcabcabcabc”会返回错会返回错会返回错会返回错误提示,因为该操作把字符串赋给整型变量,类型不匹配。误提示,因为该操作把字符串赋给整型变量,类型不匹配。误提示,因为该操作把字符串赋给整型变量,类型不匹配。误提示,因为该操作把字符串赋给整型变量,类型不匹配。ACCESS实例教程8.4.2 8.4.2 条件语句条件语句1 1 1 1if if if if end if end if end if end if 语句语句语句语句格式:格式:格式:格式:if if if if 条件条件条件条件 thenthenthenthen 语句序列语句序列语句序列语句序列 end ifend i
171、fend ifend if功能:功能:功能:功能:若条件成立,执行语句序列,否则,什么也不做。若条件成立,执行语句序列,否则,什么也不做。若条件成立,执行语句序列,否则,什么也不做。若条件成立,执行语句序列,否则,什么也不做。说明:说明:说明:说明:如果语句序列只有一条语句,可简写在一行,如果语句序列只有一条语句,可简写在一行,如果语句序列只有一条语句,可简写在一行,如果语句序列只有一条语句,可简写在一行,并省略并省略并省略并省略 end ifend ifend ifend if语句语句语句语句。例:例:例:例:dim a as integer, b as integerdim a as in
172、teger, b as integerdim a as integer, b as integerdim a as integer, b as integer a=12 a=12 a=12 a=12:b=8b=8b=8b=8 if ab then a=b if ab then a=b if ab then a=b if ab then a=b msgbox msgbox msgbox msgbox 最大值为:最大值为:最大值为:最大值为: & a, vbInformation, & a, vbInformation, & a, vbInformation, & a, vbInformation
173、, 消息框消息框消息框消息框 dim a as integer, b as integerdim a as integer, b as integer a=12 a=12 b=8 b=8 if ab then if ab then a=b a=b end if end if ACCESS实例教程2 2 2 2ififififelseelseelseelseend if end if end if end if 语句语句语句语句格式:格式:格式:格式:if if if if 条件条件条件条件 thenthenthenthen 语句序列语句序列语句序列语句序列1 1 1 1 else else e
174、lse else 语句序列语句序列语句序列语句序列2 2 2 2 end if end if end if end if 功能:功能:功能:功能:若条件成立,执行语句序列若条件成立,执行语句序列若条件成立,执行语句序列若条件成立,执行语句序列1 1 1 1,否则,执行语句序列,否则,执行语句序列,否则,执行语句序列,否则,执行语句序列2 2 2 2。例:例:例:例:dim a as integer, b as integer, c as integerdim a as integer, b as integer, c as integerdim a as integer, b as integ
175、er, c as integerdim a as integer, b as integer, c as integer a=12 a=12 a=12 a=12:b=8b=8b=8b=8 if ab then if ab then if ab then if a10is10is10is10。不允许复杂条件式。不允许复杂条件式。不允许复杂条件式。不允许复杂条件式。ACCESS实例教程例例例例8-158-158-158-15:select caseselect caseselect caseselect case练习练习练习练习(1 1 1 1)建立文本框)建立文本框)建立文本框)建立文本框名称为
176、名称为名称为名称为t1t1t1t1建立命令按钮建立命令按钮建立命令按钮建立命令按钮名称分别为名称分别为名称分别为名称分别为c1c1c1c1。(2 2 2 2)c1c1c1c1的的的的clickclickclickclick事件代码:事件代码:事件代码:事件代码: Dim aa As String, bb As StringDim aa As String, bb As StringDim aa As String, bb As StringDim aa As String, bb As String aa = t1 aa = t1 aa = t1 aa = t1 Select Case aa
177、Select Case aa Select Case aa Select Case aa Case a To z: bb = Case a To z: bb = Case a To z: bb = Case a To z: bb = 英文字母英文字母英文字母英文字母 Case 0 To 9: bb = Case 0 To 9: bb = Case 0 To 9: bb = Case 0 To 9: bb = 数字数字数字数字 Case !, ?, :, ., , ;: bb = Case !, ?, :, ., , ;: bb = Case !, ?, :, ., , ;: bb = Case
178、 !, ?, :, ., , ;: bb = 标点符号标点符号标点符号标点符号 Case Else: bb = Case Else: bb = Case Else: bb = Case Else: bb = 特殊字符特殊字符特殊字符特殊字符 End Select End Select End Select End Select MsgBox bb MsgBox bb MsgBox bb MsgBox bb ACCESS实例教程(3 3 3 3)转到窗体视图)转到窗体视图)转到窗体视图)转到窗体视图文本框中输入字母文本框中输入字母文本框中输入字母文本框中输入字母单击按单击按单击按单击按钮显示消息
179、框钮显示消息框钮显示消息框钮显示消息框 。 ACCESS实例教程8.4.4 8.4.4 选择函数与计时器事件选择函数与计时器事件1 1 1 1iifiifiifiif函数函数函数函数格式:格式:格式:格式:iif(iif(iif(iif(条件,表达式条件,表达式条件,表达式条件,表达式1 1 1 1,表达式,表达式,表达式,表达式2)2)2)2)功能:功能:功能:功能:如果条件为真,函数值为表达式如果条件为真,函数值为表达式如果条件为真,函数值为表达式如果条件为真,函数值为表达式1 1 1 1的值,否则,函数值为表的值,否则,函数值为表的值,否则,函数值为表的值,否则,函数值为表达式达式达式达
180、式2 2 2 2的值。的值。的值。的值。例:例:例:例:y=iif(aby=iif(aby=iif(aby=iif(ab,aaaa大大大大 ,bbbb大大大大)2 2 2 2switchswitchswitchswitch函数函数函数函数格式:格式:格式:格式:switch(switch(switch(switch(条件条件条件条件1 1 1 1,表达式,表达式,表达式,表达式1 1 1 1,条件,条件,条件,条件2 2 2 2,表达式,表达式,表达式,表达式,条件,条件,条件,条件n n n n,表,表,表,表达式达式达式达式n)n)n)n)功能:功能:功能:功能:从左到右依次判断,遇到第一
181、个条件为真时返回对应表达式从左到右依次判断,遇到第一个条件为真时返回对应表达式从左到右依次判断,遇到第一个条件为真时返回对应表达式从左到右依次判断,遇到第一个条件为真时返回对应表达式的值。的值。的值。的值。说明:说明:说明:说明:条件与表达式成对,当多个条件为真时,只取第一个条件的条件与表达式成对,当多个条件为真时,只取第一个条件的条件与表达式成对,当多个条件为真时,只取第一个条件的条件与表达式成对,当多个条件为真时,只取第一个条件的对应表达式对应表达式对应表达式对应表达式。例:例:例:例:y=switch(x0y=switch(x0y=switch(x0y=switch(x0x0x0x0,1
182、)1)1)1)ACCESS实例教程3 3 3 3choosechoosechoosechoose函数函数函数函数格式:格式:格式:格式:choose(choose(choose(choose(索引式,值索引式,值索引式,值索引式,值1 1 1 1,值,值,值,值2 2 2 2,值,值,值,值n)n)n)n)功能:功能:功能:功能:根据索引项的值,返回对应的值。根据索引项的值,返回对应的值。根据索引项的值,返回对应的值。根据索引项的值,返回对应的值。说明说明说明说明:索引项通常是整型变量名,取值范围:索引项通常是整型变量名,取值范围:索引项通常是整型变量名,取值范围:索引项通常是整型变量名,取值
183、范围1 1 1 1n n n n,超出范围时返回,超出范围时返回,超出范围时返回,超出范围时返回NULLNULLNULLNULL。例如:例如:例如:例如:y=choose(xy=choose(xy=choose(xy=choose(x, 优秀优秀优秀优秀 , 良好良好良好良好 , 中等中等中等中等 , 及格及格及格及格 , 不及格不及格不及格不及格)4 4 4 4计时器事件计时器事件计时器事件计时器事件 VBAVBAVBAVBA没有直接提供时间控件,通过没有直接提供时间控件,通过没有直接提供时间控件,通过没有直接提供时间控件,通过timertimertimertimer事件实现定时功能。事件实
184、现定时功能。事件实现定时功能。事件实现定时功能。方法方法方法方法:首先设置窗体的计时器间隔属性:首先设置窗体的计时器间隔属性:首先设置窗体的计时器间隔属性:首先设置窗体的计时器间隔属性TimerIntervalTimerIntervalTimerIntervalTimerInterval,然后给,然后给,然后给,然后给timertimertimertimer事事事事件写过程代码。打开窗体时,每隔一个时间间隔激发一次件写过程代码。打开窗体时,每隔一个时间间隔激发一次件写过程代码。打开窗体时,每隔一个时间间隔激发一次件写过程代码。打开窗体时,每隔一个时间间隔激发一次timertimertimert
185、imer事事事事件,事件的过程就被执行一次,从而实现件,事件的过程就被执行一次,从而实现件,事件的过程就被执行一次,从而实现件,事件的过程就被执行一次,从而实现“定时定时定时定时”处理功能。处理功能。处理功能。处理功能。计时器间隔的时间单位为毫秒,计时器间隔的时间单位为毫秒,计时器间隔的时间单位为毫秒,计时器间隔的时间单位为毫秒,1000100010001000毫秒毫秒毫秒毫秒=1=1=1=1秒。秒。秒。秒。ACCESS实例教程例例8-16:8-16:显示电子表显示电子表(1 1 1 1)建立)建立)建立)建立2 2 2 2个标签个标签个标签个标签名称为名称为名称为名称为b1b1b1b1和和和
186、和b2b2b2b2标题都为数字标题都为数字标题都为数字标题都为数字1 1 1 1。(2 2 2 2)打开窗体的属性窗口)打开窗体的属性窗口)打开窗体的属性窗口)打开窗体的属性窗口单击单击单击单击“事件事件事件事件”选项卡选项卡选项卡选项卡设置计时器设置计时器设置计时器设置计时器 间隔属性为间隔属性为间隔属性为间隔属性为1000100010001000。(3 3 3 3)在)在)在)在VBEVBEVBEVBE窗口窗口窗口窗口“通用通用通用通用- - - -声明声明声明声明”写代码:写代码:写代码:写代码: Public a As Boolean aPublic a As Boolean aPub
187、lic a As Boolean aPublic a As Boolean a为逻辑型,默认为逻辑型,默认为逻辑型,默认为逻辑型,默认falsefalsefalsefalse(4 4 4 4)FormFormFormForm的的的的TimerTimerTimerTimer事件代码:事件代码:事件代码:事件代码: a = Not aa = Not aa = Not aa = Not a b1.Caption = Time() b1.Caption = Time() b1.Caption = Time() b1.Caption = Time() b2.Caption = CInt(b2.Capti
188、on) + 1 b2.Caption = CInt(b2.Caption) + 1 b2.Caption = CInt(b2.Caption) + 1 b2.Caption = CInt(b2.Caption) + 1 b2.ForeColor = IIf(a = True, 255, 16711680) b2.ForeColor = IIf(a = True, 255, 16711680) b2.ForeColor = IIf(a = True, 255, 16711680) b2.ForeColor = IIf(a = True, 255, 16711680) ACCESS实例教程(5 5
189、 5 5)转到窗体视图。)转到窗体视图。)转到窗体视图。)转到窗体视图。b1b1b1b1中显示系统当前时间,中显示系统当前时间,中显示系统当前时间,中显示系统当前时间,b2b2b2b2中中中中的数字每秒增加的数字每秒增加的数字每秒增加的数字每秒增加1 1 1 1,数字的颜色红、蓝交替,每,数字的颜色红、蓝交替,每,数字的颜色红、蓝交替,每,数字的颜色红、蓝交替,每秒换一次。秒换一次。秒换一次。秒换一次。 ACCESS实例教程8.4.5 8.4.5 验证函数验证函数函数名功能IsNumeric(x)验证x是否为数值,若返回true, 是数值IsDate(x)验证x是否为日期值,若返回true,
190、是日期或可识别的有效日期IsNull(x)验证x是否为无效值,若返回true,是无效值IsEmpty(x)验证x是否已被初始化,若返回true,未被初始化IsArray(x)验证x是否为数组,若返回true,是数组IsError(x)验证x是否为一个错误值,若返回true,有错误IsObject(x)验证x是否为对象变量,若返回true,是对象VBAVBAVBAVBA的常用验证函数的常用验证函数的常用验证函数的常用验证函数 ACCESS实例教程例例8-17:8-17:检验字符串类型检验字符串类型 (1 1 1 1)建文本框)建文本框)建文本框)建文本框名称为名称为名称为名称为t1t1t1t1附
191、加标签标题为附加标签标题为附加标签标题为附加标签标题为“输入年龄:输入年龄:输入年龄:输入年龄:”。(2 2 2 2)建命令按钮)建命令按钮)建命令按钮)建命令按钮名称分别为名称分别为名称分别为名称分别为c1c1c1c1标题为标题为标题为标题为“验证验证验证验证”。(3 3 3 3)c1c1c1c1的的的的clickclickclickclick事件代码:事件代码:事件代码:事件代码: If t1 = Or IsNull(t1) ThenIf t1 = Or IsNull(t1) ThenIf t1 = Or IsNull(t1) ThenIf t1 = Or IsNull(t1) Then
192、MsgBox MsgBox MsgBox MsgBox 不能为空不能为空不能为空不能为空!, vbCritical, !, vbCritical, !, vbCritical, !, vbCritical, 提示提示提示提示 ElseIf IsNumeric(t1) = False Then ElseIf IsNumeric(t1) = False Then ElseIf IsNumeric(t1) = False Then ElseIf IsNumeric(t1) = False Then MsgBox MsgBox MsgBox MsgBox 必须是数字必须是数字必须是数字必须是数字!,
193、vbCritical, !, vbCritical, !, vbCritical, !, vbCritical, 提示提示提示提示 ElseIf t1 = 150 Then ElseIf t1 = 150 Then ElseIf t1 = 150 Then ElseIf t1 = 150 Then MsgBox MsgBox MsgBox MsgBox 超出范围超出范围超出范围超出范围!, vbCritical, !, vbCritical, !, vbCritical, !, vbCritical, 提示提示提示提示“ ElseElseElseElse MsgBox MsgBox MsgBo
194、x MsgBox 验证通过验证通过验证通过验证通过!, vbInformation, !, vbInformation, !, vbInformation, !, vbInformation, 提示提示提示提示 End If End If End If End If ACCESS实例教程(4 4 4 4)转到窗体视图)转到窗体视图)转到窗体视图)转到窗体视图在文本框中输入一个字母在文本框中输入一个字母在文本框中输入一个字母在文本框中输入一个字母单单单单击击击击【验证验证验证验证】按钮按钮按钮按钮消息框显示消息消息框显示消息消息框显示消息消息框显示消息“必须是数必须是数必须是数必须是数字!字!字
195、!字!”。 ACCESS实例教程8.4.6 8.4.6 循环语句循环语句 当某一程序段需要反复执行,用循环结构当某一程序段需要反复执行,用循环结构当某一程序段需要反复执行,用循环结构当某一程序段需要反复执行,用循环结构实现。循环结构对应两类循环语句:实现。循环结构对应两类循环语句:实现。循环结构对应两类循环语句:实现。循环结构对应两类循环语句:pp先判断后执行的循环语句(当型循环结构)先判断后执行的循环语句(当型循环结构)先判断后执行的循环语句(当型循环结构)先判断后执行的循环语句(当型循环结构)pp先执行后判断的循环语句(直到型循环结构)先执行后判断的循环语句(直到型循环结构)先执行后判断的
196、循环语句(直到型循环结构)先执行后判断的循环语句(直到型循环结构)ACCESS实例教程1 1 1 1for-nextfor-nextfor-nextfor-next循环循环循环循环 for-nextfor-nextfor-nextfor-next循环能使语句序列运行指定次数,循环中有一个计循环能使语句序列运行指定次数,循环中有一个计循环能使语句序列运行指定次数,循环中有一个计循环能使语句序列运行指定次数,循环中有一个计数器变量,变量的值随每一次循环增加或减少。数器变量,变量的值随每一次循环增加或减少。数器变量,变量的值随每一次循环增加或减少。数器变量,变量的值随每一次循环增加或减少。 for-
197、nextfor-nextfor-nextfor-next是当型循环结构,先判断后执行。是当型循环结构,先判断后执行。是当型循环结构,先判断后执行。是当型循环结构,先判断后执行。(1 1 1 1)格式:格式:格式:格式:for for for for 循环变量循环变量循环变量循环变量= = = =初值初值初值初值 to to to to 终值终值终值终值 step step step step 步长步长步长步长 语句序列语句序列语句序列语句序列 nextnextnextnext(2 2 2 2)功能:功能:功能:功能: 先将初值赋给循环变量,再将循环变量的当前值与终值做比先将初值赋给循环变量,再
198、将循环变量的当前值与终值做比先将初值赋给循环变量,再将循环变量的当前值与终值做比先将初值赋给循环变量,再将循环变量的当前值与终值做比较,如果比较结果为真执行语句序列,增加一个步长,再进行比较,如果比较结果为真执行语句序列,增加一个步长,再进行比较,如果比较结果为真执行语句序列,增加一个步长,再进行比较,如果比较结果为真执行语句序列,增加一个步长,再进行比较,如果比较结果仍为真,继续循环较,如果比较结果仍为真,继续循环较,如果比较结果仍为真,继续循环较,如果比较结果仍为真,继续循环。如果比较结果为假,。如果比较结果为假,。如果比较结果为假,。如果比较结果为假,结束循环。结束循环。结束循环。结束循
199、环。 ACCESS实例教程pp步长大于步长大于步长大于步长大于0 0 0 0时判断循环变量的当前值是否大于终值,步长小于时判断循环变量的当前值是否大于终值,步长小于时判断循环变量的当前值是否大于终值,步长小于时判断循环变量的当前值是否大于终值,步长小于 0 0 0 0判断循环变量的当前值是否小于终值。步长为判断循环变量的当前值是否小于终值。步长为判断循环变量的当前值是否小于终值。步长为判断循环变量的当前值是否小于终值。步长为0 0 0 0时导致循环时导致循环时导致循环时导致循环 无法结束,所以步长不要设置为无法结束,所以步长不要设置为无法结束,所以步长不要设置为无法结束,所以步长不要设置为0
200、0 0 0。pp步长可以是整数或小数,步长为步长可以是整数或小数,步长为步长可以是整数或小数,步长为步长可以是整数或小数,步长为1 1 1 1时可以省略。时可以省略。时可以省略。时可以省略。pp除第一次循环以外,其他循环增加一个步长后与终值比较。除第一次循环以外,其他循环增加一个步长后与终值比较。除第一次循环以外,其他循环增加一个步长后与终值比较。除第一次循环以外,其他循环增加一个步长后与终值比较。ppforforforfor循环可以嵌套。循环可以嵌套。循环可以嵌套。循环可以嵌套。pp在在在在forforforfor循环中可以用循环中可以用循环中可以用循环中可以用exit forexit fo
201、rexit forexit for语句强行中止循环。语句强行中止循环。语句强行中止循环。语句强行中止循环。(3)说明说明ACCESS实例教程练习练习练习练习1 1 1 1:阅读下面程序段,循环结束后,各变量的值是多少?阅读下面程序段,循环结束后,各变量的值是多少?阅读下面程序段,循环结束后,各变量的值是多少?阅读下面程序段,循环结束后,各变量的值是多少? dim s as integer, i as integerdim s as integer, i as integerdim s as integer, i as integerdim s as integer, i as integer
202、s=0 s=0 s=0 s=0 for i=1 to 10 step 2 for i=1 to 10 step 2 for i=1 to 10 step 2 for i=1 to 10 step 2 s=s+i s=s+i s=s+i s=s+i i=i+2 i=i+2 i=i+2 i=i+2 next next next next结论:循环结束后,变量结论:循环结束后,变量结论:循环结束后,变量结论:循环结束后,变量i i i i的值是的值是的值是的值是13131313,变量,变量,变量,变量 s s s s 的值是的值是的值是的值是15151515。1 1、i=1 s=0+1=1 i=1+
203、2=3i=1 s=0+1=1 i=1+2=3 step 2 i=i+2=5 step 2 i=i+2=52 2、i=5 s=1+5=6 i=5+2=7i=5 s=1+5=6 i=5+2=7 step 2 i=i+2=9 step 2 i=i+2=93 3、i=9 s=6+9=15 i=9+2=11i=9 s=6+9=15 i=9+2=11 step 2 i=i+2=13 step 2 i=i+2=13步长相当于步长相当于步长相当于步长相当于4 4:for i=1 to 10 step 4for i=1 to 10 step 4 s=s+i s=s+i next nextACCESS实例教程练习
204、练习2:下面的程序段使得循环中途退出:下面的程序段使得循环中途退出Dimsasinteger,iasintegerDimsasinteger,iasintegerS=0S=0Fori=0to100step2Fori=0to100step2s=s+is=s+iifs=20thenexitforifs=20thenexitfor中途退出循环中途退出循环中途退出循环中途退出循环NextNext分析:i=0 s=0+0=0 i=i+2=2 i=2 s=0+2=2 i=i+2=4 i=4 s=2+4=6 i=i+2=6分析:i=6 s=6+6=12 i=i+2=8 i=8 s=12+8=20 结论:循环
205、结束后,变量结论:循环结束后,变量结论:循环结束后,变量结论:循环结束后,变量i i的值是的值是的值是的值是8 8, s s 的值是的值是的值是的值是2020。Dim s as integer, i as integerDim s as integer, i as integerS=0S=0For i=0 to 100 step 2For i=0 to 100 step 2 s=s+i s=s+iNextNext11001100之间的偶数之和之间的偶数之和之间的偶数之和之间的偶数之和Dim s as integer, i as integerDim s as integer, i as int
206、egerS=0S=0For i=0 to 100 For i=0 to 100 s=s+i s=s+iNextNext11001100之间的整数数之和之间的整数数之和之间的整数数之和之间的整数数之和ACCESS实例教程2 2 2 2do-while-loopdo-while-loopdo-while-loopdo-while-loop循环循环循环循环 do-while-loopdo-while-loopdo-while-loopdo-while-loop循环是当型循环结构,先判断后执行。循环是当型循环结构,先判断后执行。循环是当型循环结构,先判断后执行。循环是当型循环结构,先判断后执行。(1
207、1 1 1)格式)格式)格式)格式 do while do while do while do while 循环条件循环条件循环条件循环条件 语句序列语句序列语句序列语句序列 looplooplooploop(2 2 2 2)功能)功能)功能)功能 先检查循环条件是否成立,若条件为真,执行语句序列。先检查循环条件是否成立,若条件为真,执行语句序列。先检查循环条件是否成立,若条件为真,执行语句序列。先检查循环条件是否成立,若条件为真,执行语句序列。遇到遇到遇到遇到looplooplooploop语句时返回循环开始处重新判断,若条件仍然为真,语句时返回循环开始处重新判断,若条件仍然为真,语句时返回
208、循环开始处重新判断,若条件仍然为真,语句时返回循环开始处重新判断,若条件仍然为真,再次执行语句序列再次执行语句序列再次执行语句序列再次执行语句序列。当条件为假时退出循环。当条件为假时退出循环。当条件为假时退出循环。当条件为假时退出循环。ACCESS实例教程(3 3 3 3)说明)说明)说明)说明可以用可以用可以用可以用exit doexit doexit doexit do强行中止循环。强行中止循环。强行中止循环。强行中止循环。要考虑循环变量赋初值和给循环变量增加步长的问题。要考虑循环变量赋初值和给循环变量增加步长的问题。要考虑循环变量赋初值和给循环变量增加步长的问题。要考虑循环变量赋初值和给
209、循环变量增加步长的问题。如果将如果将如果将如果将whilewhilewhilewhile换成换成换成换成untiluntiluntiluntil,当条件为真时循环结束。,当条件为真时循环结束。,当条件为真时循环结束。,当条件为真时循环结束。练习:练习:练习:练习:阅读下面的程序(注:大写字母阅读下面的程序(注:大写字母阅读下面的程序(注:大写字母阅读下面的程序(注:大写字母A A A A的的的的ASCIIASCIIASCIIASCII码是码是码是码是65656565。)。)。)。)dim a(26) as string, b(26) as integer dim a(26) as string
210、, b(26) as integer dim a(26) as string, b(26) as integer dim a(26) as string, b(26) as integer 字符数组字符数组字符数组字符数组dim i as integerdim i as integerdim i as integerdim i as integeri=1 i=1 i=1 i=1 给循环变量赋初值给循环变量赋初值给循环变量赋初值给循环变量赋初值do while i=26do while i=26do while i=26do while i=26 a(i)=chr(i+64) a(i)=chr(
211、i+64) a(i)=chr(i+64) a(i)=chr(i+64) 将将将将ASCIIASCIIASCIIASCII码变为字母码变为字母码变为字母码变为字母 b(i)=Lcase(a(i) b(i)=Lcase(a(i) b(i)=Lcase(a(i) b(i)=Lcase(a(i) 将大写字母变为小写字母将大写字母变为小写字母将大写字母变为小写字母将大写字母变为小写字母 i=i+1 i=i+1 i=i+1 i=i+1 使循环变量增加使循环变量增加使循环变量增加使循环变量增加1 1 1 1Loop Loop Loop Loop l l该循环结构循环该循环结构循环该循环结构循环该循环结构循环
212、2626次,每次循环产次,每次循环产次,每次循环产次,每次循环产生一个字母(大、小写),分别存生一个字母(大、小写),分别存生一个字母(大、小写),分别存生一个字母(大、小写),分别存放在放在放在放在a a和和和和b b数组中。数组中。数组中。数组中。l l即:通过循环产生即:通过循环产生即:通过循环产生即:通过循环产生2626个大小写的英个大小写的英个大小写的英个大小写的英文字母,分别存放在文字母,分别存放在文字母,分别存放在文字母,分别存放在A A、B B数组中。数组中。数组中。数组中。ACCESS实例教程3 3 3 3do-loop-whiledo-loop-whiledo-loop-w
213、hiledo-loop-while循环循环循环循环 是直到型循环结构,先执行后判断。是直到型循环结构,先执行后判断。是直到型循环结构,先执行后判断。是直到型循环结构,先执行后判断。(1 1 1 1)格式)格式)格式)格式 do do do do 语句序列语句序列语句序列语句序列 Loop while Loop while Loop while Loop while 循环条件循环条件循环条件循环条件(2 2 2 2)功能)功能)功能)功能 先执行语句序列,遇到先执行语句序列,遇到先执行语句序列,遇到先执行语句序列,遇到looplooplooploop语句时判断循环条件,若条件语句时判断循环条件,
214、若条件语句时判断循环条件,若条件语句时判断循环条件,若条件为真,再次执行语句序列为真,再次执行语句序列为真,再次执行语句序列为真,再次执行语句序列。当条件为假时退出循环。当条件为假时退出循环。当条件为假时退出循环。当条件为假时退出循环。(3 3 3 3)说明)说明)说明)说明可以用可以用可以用可以用exit doexit doexit doexit do强行中止循环。强行中止循环。强行中止循环。强行中止循环。要考虑给循环变量赋初值和给循环变量增加步长的问题。要考虑给循环变量赋初值和给循环变量增加步长的问题。要考虑给循环变量赋初值和给循环变量增加步长的问题。要考虑给循环变量赋初值和给循环变量增加
215、步长的问题。如果将如果将如果将如果将whilewhilewhilewhile换成换成换成换成untiluntiluntiluntil,当条件为真时循环结束。,当条件为真时循环结束。,当条件为真时循环结束。,当条件为真时循环结束。 ACCESS实例教程4 4 4 4for-each for-each for-each for-each 循环语句循环语句循环语句循环语句 for eachfor eachfor eachfor each循环用来遍历数组或对象集合中每一个元素,循环用来遍历数组或对象集合中每一个元素,循环用来遍历数组或对象集合中每一个元素,循环用来遍历数组或对象集合中每一个元素,不需要
216、指定循环次数,每个元素只遍历一次。如果不知道一不需要指定循环次数,每个元素只遍历一次。如果不知道一不需要指定循环次数,每个元素只遍历一次。如果不知道一不需要指定循环次数,每个元素只遍历一次。如果不知道一个集合有多少个元素,用个集合有多少个元素,用个集合有多少个元素,用个集合有多少个元素,用for eachfor eachfor eachfor each循环非常方便。循环非常方便。循环非常方便。循环非常方便。(1 1 1 1)格式)格式)格式)格式 for each for each for each for each 循环变量循环变量循环变量循环变量 in in in in 集合或数组集合或数
217、组集合或数组集合或数组 语句序列语句序列语句序列语句序列 nextnextnextnext(2 2 2 2)功能)功能)功能)功能 用循环变量依次遍历数组或对象集合中每一个元素,直用循环变量依次遍历数组或对象集合中每一个元素,直用循环变量依次遍历数组或对象集合中每一个元素,直用循环变量依次遍历数组或对象集合中每一个元素,直到遍历结束。到遍历结束。到遍历结束。到遍历结束。ACCESS实例教程练习:练习:练习:练习:阅读下面程序。阅读下面程序。阅读下面程序。阅读下面程序。dim a(50) as integer, i as integer, s as integerdim a(50) as int
218、eger, i as integer, s as integerdim a(50) as integer, i as integer, s as integerdim a(50) as integer, i as integer, s as integerfor i=1 to 50 for i=1 to 50 for i=1 to 50 for i=1 to 50 给数组赋值给数组赋值给数组赋值给数组赋值 a(i)=ia(i)=ia(i)=ia(i)=inextnextnextnexts=0s=0s=0s=0for each i in a for each i in a 遍历遍历遍历遍历a a
219、中元素中元素中元素中元素 if i mod 2 0 iif i mod 2 0 i和和和和2 2进行模运算结果不为进行模运算结果不为进行模运算结果不为进行模运算结果不为0 0 then s=s+a(i) then s=s+a(i) 计算奇数之和计算奇数之和计算奇数之和计算奇数之和nextnext A(1)A(1)A(2)A(2)A(3)A(3)A(4)A(4)A(50)A(50)1 12 23 34 45050ACCESS实例教程例例例例8-188-188-188-18:显示:显示:显示:显示FibonacciFibonacciFibonacciFibonacci数列的第数列的第数列的第数列的
220、第15151515个元素个元素个元素个元素 (FibonacciFibonacciFibonacciFibonacci数列的前两个数都是数列的前两个数都是数列的前两个数都是数列的前两个数都是1 1 1 1,从第,从第,从第,从第3 3 3 3个数开始,每个个数开始,每个个数开始,每个个数开始,每个数都是前两个数之和。)数都是前两个数之和。)数都是前两个数之和。)数都是前两个数之和。) (1 1 1 1)建立文本框)建立文本框)建立文本框)建立文本框名称为名称为名称为名称为t1t1t1t1建立命令按钮建立命令按钮建立命令按钮建立命令按钮名称为名称为名称为名称为c1c1c1c1。(2 2 2 2)
221、c1c1c1c1的的的的clickclickclickclick事件代码:事件代码:事件代码:事件代码: Dim f(15) As IntegerDim f(15) As IntegerDim f(15) As IntegerDim f(15) As Integer f(1) = 1 f(1) = 1 f(1) = 1 f(1) = 1:f(2) = 1f(2) = 1f(2) = 1f(2) = 1 For i = 3 To 15 For i = 3 To 15 For i = 3 To 15 For i = 3 To 15 f(i) = f(i - 1) + f(i - 2) f(i) =
222、 f(i - 1) + f(i - 2) f(i) = f(i - 1) + f(i - 2) f(i) = f(i - 1) + f(i - 2) Next Next Next Next t1 = f(15) t1 = f(15) t1 = f(15) t1 = f(15) A(1)A(1)A(2)A(2)A(3)A(3)A(4)A(4)A(50)A(50)1 11 12 23 3A(48)+a(49)A(48)+a(49)ACCESS实例教程8.5 8.5 过程调用与参数传递过程调用与参数传递8.5.1 8.5.1 认识过程和参数认识过程和参数1 1 1 1过程过程过程过程pp过程是用来执
223、行特定任务的一段独立的程序代码过程是用来执行特定任务的一段独立的程序代码过程是用来执行特定任务的一段独立的程序代码过程是用来执行特定任务的一段独立的程序代码,这段代码能被反这段代码能被反这段代码能被反这段代码能被反复调用复调用复调用复调用。VBAVBAVBAVBA的模块以过程为单元组成。的模块以过程为单元组成。的模块以过程为单元组成。的模块以过程为单元组成。ppVBAVBAVBAVBA的过程根据是否返回值分为两类:的过程根据是否返回值分为两类:的过程根据是否返回值分为两类:的过程根据是否返回值分为两类:SubSubSubSub过程和过程和过程和过程和FunctionFunctionFuncti
224、onFunction过程。过程。过程。过程。l lSubSubSubSub过程只执行操作过程只执行操作过程只执行操作过程只执行操作不返回值不返回值不返回值不返回值,不能用在表达式中,调用时就象,不能用在表达式中,调用时就象,不能用在表达式中,调用时就象,不能用在表达式中,调用时就象使用基本语句一样。使用基本语句一样。使用基本语句一样。使用基本语句一样。l lFunctionFunctionFunctionFunction过程又称为用户自定义函数,执行操作后过程又称为用户自定义函数,执行操作后过程又称为用户自定义函数,执行操作后过程又称为用户自定义函数,执行操作后返回结果返回结果返回结果返回结果
225、,常用在表达式中,调用时就象使用基本函数一样。常用在表达式中,调用时就象使用基本函数一样。常用在表达式中,调用时就象使用基本函数一样。常用在表达式中,调用时就象使用基本函数一样。pp过程名是标识符,不要与模块名重名,否则调用时会出现混乱。同过程名是标识符,不要与模块名重名,否则调用时会出现混乱。同过程名是标识符,不要与模块名重名,否则调用时会出现混乱。同过程名是标识符,不要与模块名重名,否则调用时会出现混乱。同一模块中,一模块中,一模块中,一模块中,SubSubSubSub过程也不要与过程也不要与过程也不要与过程也不要与FunctionFunctionFunctionFunction过程重名。
226、过程重名。过程重名。过程重名。pp过程不能嵌套定义,但可以嵌套调用。过程不能嵌套定义,但可以嵌套调用。过程不能嵌套定义,但可以嵌套调用。过程不能嵌套定义,但可以嵌套调用。ACCESS实例教程2 2 2 2参数参数参数参数pp如果在调用过程中,主调方(调用过程的语句)与被调方(过程)如果在调用过程中,主调方(调用过程的语句)与被调方(过程)如果在调用过程中,主调方(调用过程的语句)与被调方(过程)如果在调用过程中,主调方(调用过程的语句)与被调方(过程)存在数据传递关系,表现这种传递关系的数据就是参数。存在数据传递关系,表现这种传递关系的数据就是参数。存在数据传递关系,表现这种传递关系的数据就是
227、参数。存在数据传递关系,表现这种传递关系的数据就是参数。pp参数分为形参(形式参数)和实参(实际参数)。参数分为形参(形式参数)和实参(实际参数)。参数分为形参(形式参数)和实参(实际参数)。参数分为形参(形式参数)和实参(实际参数)。l l形参用在被调方,只能是变量名或数组名。形参用在被调方,只能是变量名或数组名。形参用在被调方,只能是变量名或数组名。形参用在被调方,只能是变量名或数组名。l l实参用在主调方,可以是常量、已赋值的变量、有计算结果的实参用在主调方,可以是常量、已赋值的变量、有计算结果的实参用在主调方,可以是常量、已赋值的变量、有计算结果的实参用在主调方,可以是常量、已赋值的变
228、量、有计算结果的表达式。表达式。表达式。表达式。pp当形参和实参都是变量时,存在两种参数传递方式:值传递与地当形参和实参都是变量时,存在两种参数传递方式:值传递与地当形参和实参都是变量时,存在两种参数传递方式:值传递与地当形参和实参都是变量时,存在两种参数传递方式:值传递与地址传递。址传递。址传递。址传递。l l值传递值传递值传递值传递只能把实参的值传给形参,是只能把实参的值传给形参,是只能把实参的值传给形参,是只能把实参的值传给形参,是“单向传递单向传递单向传递单向传递”。l l地址传递地址传递地址传递地址传递能在实参与形参之间实现参数的能在实参与形参之间实现参数的能在实参与形参之间实现参数
229、的能在实参与形参之间实现参数的“双向传递双向传递双向传递双向传递”,不但,不但,不但,不但将实参的值传给形参,形参的值也可以传给实参。将实参的值传给形参,形参的值也可以传给实参。将实参的值传给形参,形参的值也可以传给实参。将实参的值传给形参,形参的值也可以传给实参。ACCESS实例教程8.5.2 sub8.5.2 sub过程过程 sub sub sub sub 过程是包含在过程是包含在过程是包含在过程是包含在 sub sub sub sub 和和和和 end sub end sub end sub end sub 之间的一组代码,调之间的一组代码,调之间的一组代码,调之间的一组代码,调用用用用
230、subsubsubsub过程时只执行其中的操作,不返回值。过程时只执行其中的操作,不返回值。过程时只执行其中的操作,不返回值。过程时只执行其中的操作,不返回值。1 1 1 1定义定义定义定义subsubsubsub过程的格式过程的格式过程的格式过程的格式subsubsubsub过程名(形参过程名(形参过程名(形参过程名(形参1 as 1 as 1 as 1 as 数据类型,形参数据类型,形参数据类型,形参数据类型,形参2 as 2 as 2 as 2 as 数据类型,数据类型,数据类型,数据类型,) 语句序列语句序列语句序列语句序列end subend subend subend sub2 2
231、 2 2调用调用调用调用subsubsubsub过程过程过程过程格式格式格式格式1 1 1 1:call call call call 过程名(实参过程名(实参过程名(实参过程名(实参1 1 1 1 ,实参,实参,实参,实参2 2 2 2,)格式格式格式格式2 2 2 2:过程名过程名过程名过程名 实参实参实参实参1 1 1 1,实参,实参,实参,实参2 2 2 2,ACCESS实例教程3 3 3 3说明说明说明说明(1 1 1 1)参数之间用逗号分隔,对应的形参与实参之间要类)参数之间用逗号分隔,对应的形参与实参之间要类)参数之间用逗号分隔,对应的形参与实参之间要类)参数之间用逗号分隔,对应
232、的形参与实参之间要类型匹配。型匹配。型匹配。型匹配。(2 2 2 2)用格式)用格式)用格式)用格式1 1 1 1调用调用调用调用subsubsubsub过程必须加括号,用格式过程必须加括号,用格式过程必须加括号,用格式过程必须加括号,用格式2 2 2 2调用调用调用调用subsubsubsub过程不加括号。过程不加括号。过程不加括号。过程不加括号。(3 3 3 3)用)用)用)用 exit sub exit sub exit sub exit sub 语句立即从语句立即从语句立即从语句立即从 sub sub sub sub 过程中退出。过程中退出。过程中退出。过程中退出。(4 4 4 4)定
233、义)定义)定义)定义subsubsubsub过程时即使无任何参数,也必须包含空括过程时即使无任何参数,也必须包含空括过程时即使无任何参数,也必须包含空括过程时即使无任何参数,也必须包含空括号()。号()。号()。号()。(5 5 5 5)subsubsubsub之前可以用之前可以用之前可以用之前可以用publicpublicpublicpublic或或或或privateprivateprivateprivate或或或或staticstaticstaticstatic定义过程定义过程定义过程定义过程作用域。作用域。作用域。作用域。(6 6 6 6)标准模块中的过程可以被所有对象调用,类模块中)标
234、准模块中的过程可以被所有对象调用,类模块中)标准模块中的过程可以被所有对象调用,类模块中)标准模块中的过程可以被所有对象调用,类模块中的过程只在本模块中有效。的过程只在本模块中有效。的过程只在本模块中有效。的过程只在本模块中有效。 ACCESS实例教程例例8-198-19:subsub过程练习过程练习(1 1 1 1)建)建)建)建2 2 2 2个文本框个文本框个文本框个文本框名称分别为名称分别为名称分别为名称分别为t1t1t1t1和和和和t2t2t2t2附加标签标题分别为附加标签标题分别为附加标签标题分别为附加标签标题分别为“输入矩形长:输入矩形长:输入矩形长:输入矩形长:”和和和和“输入矩
235、形宽:输入矩形宽:输入矩形宽:输入矩形宽:”。(2 2 2 2)建)建)建)建命令按钮命令按钮命令按钮命令按钮名称为名称为名称为名称为c1c1c1c1标题为标题为标题为标题为“计算计算计算计算”。(3 3 3 3)建立标准模块建立标准模块建立标准模块建立标准模块 以以以以“过程模块过程模块过程模块过程模块”为名保存模块。为名保存模块。为名保存模块。为名保存模块。(4 4 4 4)在)在)在)在“过程模块过程模块过程模块过程模块”中定义中定义中定义中定义jxmjjxmjjxmjjxmj过程,代码如下:过程,代码如下:过程,代码如下:过程,代码如下: Public Sub jxmj (h As I
236、nteger, w As Integer) Public Sub jxmj (h As Integer, w As Integer) Public Sub jxmj (h As Integer, w As Integer) Public Sub jxmj (h As Integer, w As Integer) Dim s As Integer Dim s As Integer Dim s As Integer Dim s As Integer s = h * w s = h * w s = h * w s = h * w 计算矩形面积计算矩形面积计算矩形面积计算矩形面积 MsgBox Msg
237、Box MsgBox MsgBox 矩形面积为矩形面积为矩形面积为矩形面积为: & s : & s : & s : & s 显示矩形面积显示矩形面积显示矩形面积显示矩形面积 End SubEnd SubEnd SubEnd SubACCESS实例教程(5 5 5 5)命令按钮)命令按钮)命令按钮)命令按钮c1c1c1c1的的的的clickclickclickclick事件事件事件事件代码:代码:代码:代码: Dim a1 As Integer, a2 As IntegerDim a1 As Integer, a2 As IntegerDim a1 As Integer, a2 As Integ
238、erDim a1 As Integer, a2 As Integer a1 = t1:a2 = t2 a1 = t1:a2 = t2 a1 = t1:a2 = t2 a1 = t1:a2 = t2 Call jxmj (a1, a2)Call jxmj (a1, a2)Call jxmj (a1, a2)Call jxmj (a1, a2) 用格式用格式用格式用格式1 1 1 1调用调用调用调用subsubsubsub模块模块模块模块(6 6 6 6)转到窗体视图)转到窗体视图)转到窗体视图)转到窗体视图输入矩形长和宽输入矩形长和宽输入矩形长和宽输入矩形长和宽单击单击单击单击“计算计算计算计算
239、”按钮。按钮。按钮。按钮。 ACCESS实例教程8.5.3 function8.5.3 function过程过程 1 1 1 1定义定义定义定义functionfunctionfunctionfunction过程的格式过程的格式过程的格式过程的格式 functionfunctionfunctionfunction过程名(形参过程名(形参过程名(形参过程名(形参1 1 1 1,形参,形参,形参,形参2 2 2 2,)as as as as 数据类型。数据类型。数据类型。数据类型。 语句序列语句序列语句序列语句序列 过程名过程名过程名过程名= = = =表达式表达式表达式表达式 end funct
240、ion end function end function end function2 2 2 2调用调用调用调用functionfunctionfunctionfunction过程过程过程过程 调用调用调用调用functionfunctionfunctionfunction过程只有一种方式,即过程只有一种方式,即过程只有一种方式,即过程只有一种方式,即直接引用过程名直接引用过程名直接引用过程名直接引用过程名,而,而,而,而且过程名在赋值号右端或在表达式中。且过程名在赋值号右端或在表达式中。且过程名在赋值号右端或在表达式中。且过程名在赋值号右端或在表达式中。ACCESS实例教程3 3 3 3说
241、明说明说明说明(1 1 1 1)参数之间用逗号分隔,对应形参与实参之间要类型匹配。)参数之间用逗号分隔,对应形参与实参之间要类型匹配。)参数之间用逗号分隔,对应形参与实参之间要类型匹配。)参数之间用逗号分隔,对应形参与实参之间要类型匹配。(2 2 2 2)“过程名过程名过程名过程名= = = =表达式表达式表达式表达式”是是是是functionfunctionfunctionfunction过程中不可缺少的语句。过程中不可缺少的语句。过程中不可缺少的语句。过程中不可缺少的语句。(3 3 3 3)用)用)用)用 exit function exit function exit function
242、exit function 语句立即从语句立即从语句立即从语句立即从 function function function function 过程中退出。过程中退出。过程中退出。过程中退出。(4 4 4 4)若)若)若)若functionfunctionfunctionfunction过程无任何参数,也必须包含空括号()。过程无任何参数,也必须包含空括号()。过程无任何参数,也必须包含空括号()。过程无任何参数,也必须包含空括号()。(5 5 5 5)functionfunctionfunctionfunction之前可以用之前可以用之前可以用之前可以用publicpublicpublicpu
243、blic或或或或privateprivateprivateprivate或或或或staticstaticstaticstatic定义过定义过定义过定义过程的作用域。程的作用域。程的作用域。程的作用域。ACCESS实例教程例例8-208-20:functionfunction过程练习过程练习(1 1 1 1)建)建)建)建文本框文本框文本框文本框名称为名称为名称为名称为t1t1t1t1。(2 2 2 2)建)建)建)建标签标签标签标签名称为名称为名称为名称为LabLabLabLab标题为标题为标题为标题为“圆面积圆面积圆面积圆面积= = = =”(3 3 3 3)建)建)建)建命令按钮命令按钮命
244、令按钮命令按钮名称为名称为名称为名称为c1c1c1c1标题为标题为标题为标题为“计算计算计算计算”。ACCESS实例教程(4 4 4 4)在已有的)在已有的)在已有的)在已有的“过程模块过程模块过程模块过程模块”中中中中添加添加添加添加ymjymjymjymj过程过程过程过程,代码如下:,代码如下:,代码如下:,代码如下:(6 6 6 6)转到窗体视图)转到窗体视图)转到窗体视图)转到窗体视图在文本框中输入半径在文本框中输入半径在文本框中输入半径在文本框中输入半径单击单击单击单击“计算计算计算计算”按钮按钮按钮按钮计算结果显示在标签中。计算结果显示在标签中。计算结果显示在标签中。计算结果显示在
245、标签中。 Public Function ymj (r As Integer) As Single Public Function ymj (r As Integer) As Single Public Function ymj (r As Integer) As Single Public Function ymj (r As Integer) As Single ymj = r * r * 3.14 ymj = r * r * 3.14 ymj = r * r * 3.14 ymj = r * r * 3.14 End Function End Function End Function
246、End Function(5 5 5 5)命令按钮命令按钮命令按钮命令按钮c1c1c1c1的的的的clickclickclickclick事件代码:事件代码:事件代码:事件代码: Dim a As IntegerDim a As IntegerDim a As IntegerDim a As Integer a = t1 a = t1 a = t1 a = t1 Lab.Caption = Lab.Caption & Lab.Caption = Lab.Caption & Lab.Caption = Lab.Caption & Lab.Caption = Lab.Caption & ymj (
247、a)ymj (a)ymj (a)ymj (a)ACCESS实例教程8.5.4 8.5.4 参数传递参数传递 当实参是变量名时,既可以用传值方式传递参数,当实参是变量名时,既可以用传值方式传递参数,当实参是变量名时,既可以用传值方式传递参数,当实参是变量名时,既可以用传值方式传递参数,也可以用传地址的方式传递参数。也可以用传地址的方式传递参数。也可以用传地址的方式传递参数。也可以用传地址的方式传递参数。 1 1 1 1参数的值传递参数的值传递参数的值传递参数的值传递 如果在过程的形参前加如果在过程的形参前加如果在过程的形参前加如果在过程的形参前加 byvalbyvalbyvalbyval说明符,
248、参数的传递方式说明符,参数的传递方式说明符,参数的传递方式说明符,参数的传递方式为为为为“传值传值传值传值”。值传递的含义是指在过程中另外开辟存储单元值传递的含义是指在过程中另外开辟存储单元值传递的含义是指在过程中另外开辟存储单元值传递的含义是指在过程中另外开辟存储单元存放从实参传过来的值,一旦过程结束,过程中开辟的存储存放从实参传过来的值,一旦过程结束,过程中开辟的存储存放从实参传过来的值,一旦过程结束,过程中开辟的存储存放从实参传过来的值,一旦过程结束,过程中开辟的存储单元被释放,该单元数据的改变不会保留下来。单元被释放,该单元数据的改变不会保留下来。单元被释放,该单元数据的改变不会保留下
249、来。单元被释放,该单元数据的改变不会保留下来。ACCESS实例教程2 2参数的地址传递参数的地址传递 如果在过程的形参前加如果在过程的形参前加如果在过程的形参前加如果在过程的形参前加 byref byref byref byref 说明符,参数的传递说明符,参数的传递说明符,参数的传递说明符,参数的传递方式为方式为方式为方式为“传地址传地址传地址传地址”,参数的地址传递是默认选项参数的地址传递是默认选项参数的地址传递是默认选项参数的地址传递是默认选项,不加任,不加任,不加任,不加任何说明符,默认就是传地址。何说明符,默认就是传地址。何说明符,默认就是传地址。何说明符,默认就是传地址。 地址传递
250、的含义是指过程中的形参与主调方的实参指地址传递的含义是指过程中的形参与主调方的实参指地址传递的含义是指过程中的形参与主调方的实参指地址传递的含义是指过程中的形参与主调方的实参指向同一个存储单元,在过程中对存储单元所做的修改,当向同一个存储单元,在过程中对存储单元所做的修改,当向同一个存储单元,在过程中对存储单元所做的修改,当向同一个存储单元,在过程中对存储单元所做的修改,当过程结束后成为实参的当前值。过程结束后成为实参的当前值。过程结束后成为实参的当前值。过程结束后成为实参的当前值。 地址传递通常用在地址传递通常用在地址传递通常用在地址传递通常用在subsubsubsub过程中。过程中。过程中
251、。过程中。 ACCESS实例教程例例8-218-21:参数传递练习:参数传递练习(1 1 1 1)建立)建立)建立)建立2 2 2 2个文本框个文本框个文本框个文本框名称分别为名称分别为名称分别为名称分别为t1t1t1t1和和和和t2t2t2t2。(2 2 2 2)建立命令按钮)建立命令按钮)建立命令按钮)建立命令按钮名称为名称为名称为名称为c1c1c1c1标题为标题为标题为标题为“调用过程调用过程调用过程调用过程”。(3 3 3 3)在已有的)在已有的)在已有的)在已有的“过程模块过程模块过程模块过程模块”中中中中添加添加添加添加cscdcscdcscdcscd过程过程过程过程,代码如下:,
252、代码如下:,代码如下:,代码如下: Public Sub cscd (ByRef a As Integer, ByVal b As Public Sub cscd (ByRef a As Integer, ByVal b As Public Sub cscd (ByRef a As Integer, ByVal b As Public Sub cscd (ByRef a As Integer, ByVal b As Integer) Integer) Integer) Integer) a = a + 10 a = a + 10 a = a + 10 a = a + 10 b = b + 10
253、 b = b + 10 b = b + 10 b = b + 10 End Sub End Sub End Sub End SubACCESS实例教程(4 4 4 4)命令按钮)命令按钮)命令按钮)命令按钮c1c1c1c1的的的的clickclickclickclick事件代码:事件代码:事件代码:事件代码: Dim x As Integer, y As Integer Dim x As Integer, y As Integer Dim x As Integer, y As Integer Dim x As Integer, y As Integer x = t1: y = t2 x = t
254、1: y = t2 x = t1: y = t2 x = t1: y = t2 cscd x, y cscd x, y cscd x, y cscd x, y 用格式用格式用格式用格式2 2 2 2调用调用调用调用subsubsubsub过程过程过程过程 t1 = x: t2 = yt1 = x: t2 = yt1 = x: t2 = yt1 = x: t2 = y(5 5 5 5)转到窗体视图)转到窗体视图)转到窗体视图)转到窗体视图在在在在两个文本框中都输入两个文本框中都输入两个文本框中都输入两个文本框中都输入10101010单击单击单击单击“调用调用调用调用过程过程过程过程”按钮按钮按钮按钮计算结果仍显示在文本框中。计算结果仍显示在文本框中。计算结果仍显示在文本框中。计算结果仍显示在文本框中。