《access8第8章 模块与VBA程序设计.ppt》由会员分享,可在线阅读,更多相关《access8第8章 模块与VBA程序设计.ppt(99页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、AccessAccess程序程序设计设计文科计算机小公共课规划教材文科计算机小公共课规划教材总总 目目 录录第第1章章 数据库基础数据库基础第第2章章 数据库和表数据库和表第第3章章 查询查询第第4章章 窗体窗体第第5章章 报表报表第第6章章 宏宏第第7章章 页页第第8章章 模块与模块与VBA程序设计程序设计第第9章章 二级公共基础知识二级公共基础知识 第第8章章 模块与模块与VBA程序设计程序设计6【难重点难重点】u类模块及控件对象的代码表示类模块及控件对象的代码表示u运算符与表达式运算符与表达式u选择结构的程序设计选择结构的程序设计u常用系统函数常用系统函数知识网络图知识网络图【例例8.1
2、】用户登录窗体中用户登录窗体中“退出退出”按钮按钮VBA代码代码(1)查看查看“退出退出”命令按钮事件命令按钮事件(2)查看事件代码查看事件代码 8.1 初识初识VBA编编单击进入代码编写单击进入代码编写说明说明事件过程事件过程Private Sub Command7_Click().End SubSub表示定义一个过程。表示定义一个过程。End Sub表示该过程的结尾处。表示该过程的结尾处。Command7_Click()表示过程名称,在表示过程名称,在access中,过程名为:控件名称中,过程名为:控件名称_事事件名称件名称(),过程名后必须有一个,过程名后必须有一个()。Command7
3、为为“退出退出”按钮的名按钮的名称,称,Click为单击事件。为单击事件。事件过程代码事件过程代码在在Private Sub Command7_Click()和和End Sub中间的几行代码为实现中间的几行代码为实现“退退出出”功能的功能的VBA代码,实现退出的具体代码为代码,实现退出的具体代码为DoCmd.Quit,其他代,其他代码用于错误处理。这些代码将在稍后详细介绍其作用。码用于错误处理。这些代码将在稍后详细介绍其作用。8.1 初识初识VBA编编8.1.1 窗体事件窗体事件事件事件(event):是发生在控件对象上且可以辨认的动:是发生在控件对象上且可以辨认的动作,如像单击鼠标或按下某键
4、等,并且可以写某作,如像单击鼠标或按下某键等,并且可以写某些代码来响应此述动作。些代码来响应此述动作。对事件的响应一般有两种方法,一种方法是使用宏对事件的响应一般有两种方法,一种方法是使用宏来响应控件对象事件,另一种方法是编写来响应控件对象事件,另一种方法是编写VBA代代码过程。码过程。8.1 初识初识VBA编编【例例8.2】如果使用宏来响应控件对象事件,比如同如果使用宏来响应控件对象事件,比如同样创建一个可退出样创建一个可退出access程序的按钮,可采用以程序的按钮,可采用以下步骤:下步骤:(1)创建一个宏,宏名为)创建一个宏,宏名为“退出系统退出系统”,操作选择,操作选择“Quit”。(
5、2)创建一个窗体。在窗体上添加一个命令按钮)创建一个窗体。在窗体上添加一个命令按钮.(3)打开命令按钮属性窗口,切换到)打开命令按钮属性窗口,切换到“事件事件”选项选项页,单击其单击事件下拉框,在弹出的列表中选页,单击其单击事件下拉框,在弹出的列表中选择择“退出系统退出系统”宏,如图宏,如图8.6 8.1 初识初识VBA编编表表8-1 部分事件过程部分事件过程对对象象事件事件说说明明格式格式窗体窗体Onload加加载时载时Private Sub Form_Load()OnUnload卸卸载时载时Private Sub Form_UnLoad()OnOpen打开打开时时Private Sub F
6、orm_Open()OnClose关关闭时闭时Private Sub Form_Close()OnClick单击时单击时Private Sub Form_Click()OnDblClick双双击时击时Private Sub Form_DblClick(Cancel As Integer)报报表表OnOpen报报表打开表打开时时Private Sub Report_Open(Cancel As Integer)OnClose报报表关表关闭闭时时Private Sub Report_Close()命命令令按按钮钮OnClick单击单击按按钮时钮时Private Sub Command1_Click
7、()OnDblClick双双击击按按钮时钮时Private Sub 对对象象_DblClick(Cancel As Integer)MouseUp鼠鼠标释标释放放时时Private Sub对对象象_MouseUp(Button As Integer,Shift As Integer,X As Single,Y As Single)MouseDown鼠鼠标标按下按下时时Private Sub对对象象_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)MouseMove鼠鼠标标移移动时动时Private Sub
8、对对象象_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)文文本本框框BeforeUpdate内容更新前内容更新前Private Sub 对对象象_BeforeUpdate(Cancel As Integer)AfterUpdate内容更新后内容更新后Private Sub 对对象象_AfterUpdate()OnEnter获获取焦点后取焦点后Private Sub 对对象象_Enter()OnGetFoucs获获取焦点取焦点时时Private Sub 对对象象_GotFocus()OnLostFoucs
9、失去焦点失去焦点时时Private Sub 对对象象_LostFocus()OnChange内容更新内容更新时时Private Sub 对对象象_Change()VBA编程环境(编程环境(VBE)进入进入VBE可以选择以下几种可以选择以下几种方式:方式:(1)将某个对象的某个事)将某个对象的某个事件设为件设为事件过程事件过程,如图,如图8.4所示,单击右侧的所示,单击右侧的“”。(2)在窗体或报表的)在窗体或报表的【设设计视图计视图】中单击工具栏上中单击工具栏上的的【代码代码】按钮。按钮。(3)在数据库窗口中,单)在数据库窗口中,单击菜单击菜单【工具工具】|【宏宏】|【Visual Basic
10、编辑器编辑器】命令。命令。(4)选择数据库模块对象,)选择数据库模块对象,单击数据库窗口中单击数据库窗口中【新建新建】或者双击其中一个已经或者双击其中一个已经存在的模块对象存在的模块对象 VBE模块模块模块是由模块是由VBA语言语言编写的程序的集合。编写的程序的集合。模块分类模块分类 1、类模块:和某窗、类模块:和某窗体或报表相关联体或报表相关联2、标准模块:独立、标准模块:独立于窗体和报表于窗体和报表类模块类模块标准模块标准模块将宏转化为模块将宏转化为模块 宏的每个操作都有对应的宏的每个操作都有对应的VBA语句,因此可语句,因此可以将宏转化为模块,加快运行速度。以将宏转化为模块,加快运行速度
11、。图图8.8“转换宏转换宏”对话框对话框标准模块名标准模块名创建模块创建模块 类模块:类模块:对某个控件编写事件代码时就自动建立了对某个控件编写事件代码时就自动建立了 标准模块标准模块:1、在数据库窗口或、在数据库窗口或VBE窗口,执行菜单窗口,执行菜单【插入插入】|【模块模块】命令。命令。2、在数据库窗口,单击、在数据库窗口,单击【模块模块】对象,然后单对象,然后单击击【新建新建】按钮。按钮。VBA编程基础编程基础1、注释、注释格式格式1:rem 注释内容注释内容格式格式2:注释内容注释内容说明:说明:“”为英文符号单引号为英文符号单引号2、连写、连写如果要在同一行上书写多条语句,需要使用如
12、果要在同一行上书写多条语句,需要使用“:”号分隔不号分隔不同的语句。同的语句。3、换行、换行一条语句太长,可以将该语句写成几行,在换行处加空白加一条语句太长,可以将该语句写成几行,在换行处加空白加下划线下划线(_)。数据类型数据类型 数据数据类类型型存存储储空空间间说说明明Boolean(布(布尔尔)2字字节节True或或falseByte(字(字节节)1字字节节用于存用于存储储二二进进制数,范制数,范围围:0255(028)Integer(整型)(整型)2字字节节整数,最高位是符号位,整数,最高位是符号位,类类型符型符“%”,如,如10、-10、10%Long(长长整型)整型)4字字节节整数
13、,最高位是符号位,整数,最高位是符号位,类类型符型符“&”,如,如10&,123456&Single(单单精度)精度)4字字节节浮点数,精确度浮点数,精确度7位,位,类类型符型符“!”,如,如10.5!、10.5Double(双精度)(双精度)8字字节节浮点数,精确度浮点数,精确度16位,位,类类型符型符“#”,如,如10.5#Currency(货币货币)8字字节节定点数或整数,用于定点数或整数,用于货币计货币计算,算,类类型符型符“”,如,如10.5Decimal(小数)(小数)14字字节节存存储储从从-1028-1 到到 1028-1 范范围围的数字的数字Date(日期)(日期)8字字节节
14、日期文字日期文字须须以数字符号以数字符号“#”扩扩起来,例如,起来,例如,#January 1,2006#String(字符)(字符)字符字符长长度度对应对应表中文本数据表中文本数据类类型,定界符型,定界符为为“”,如,如123,welcomeObject(对对象)象)4字字节节储储存存对对象地址来引用象地址来引用对对象象Variant(变变体)体)根据需要根据需要可以表示上述任何一种可以表示上述任何一种类类型型变量变量 声明变量声明变量 格式:格式:dim 变量名变量名 as数据类型数据类型 说明:如果有说明:如果有as 数据类型选项,该变量只能储存该类型的值,否则可数据类型选项,该变量只能
15、储存该类型的值,否则可以是任何类型。以是任何类型。如:如:Dim userid as stringDim x as integer,y as integerDim i说明:第二条语句同时声明了两个变量;说明:第二条语句同时声明了两个变量;i为变体类型,可以储存任为变体类型,可以储存任何类型数据。何类型数据。变量赋值变量赋值 userid=11080 X=1改变变量的值改变变量的值X=x+1说明:将说明:将x的值增加的值增加1常量常量 在在VBA中需要反复使用的常数,为了便于记忆和维护,可以中需要反复使用的常数,为了便于记忆和维护,可以采用一个名字来表示即常量。采用一个名字来表示即常量。格式:格
16、式:Public|Private Const 常量名常量名 as 数据类型数据类型=值值说明:说明:public只能用在标准模块中,表示该常量可以在所有模块只能用在标准模块中,表示该常量可以在所有模块中使用。中使用。Private该常量只能声明它的模块中使用。该常量只能声明它的模块中使用。如:如:Public Const fine=0.1 说明:在标准模块中声明后,所有模块中都可以使用说明:在标准模块中声明后,所有模块中都可以使用pi常常量。量。数组数组 1、声明数组、声明数组格式:格式:Dim 数组名数组名(n)as 数据类型数据类型 Dim 数组名数组名(m to n)as 数据类型数据类
17、型 n是数组的下标上界,是数组的下标上界,m是数组的下标下界,是数组的下标下界,m可以省略,如省略表示可以省略,如省略表示0,数组共有,数组共有n-m+1个元素。个元素。举例举例 Dim a(2 to 5)as integer说明:共有数组说明:共有数组 a(2)、a(3)、a(4)、a(5)四个元素四个元素Dim b(5)as integer说明:共有数组说明:共有数组b(0)、b(1)、b(2)、b(3)、b(4)、b(5)六个元素六个元素赋值赋值a(2)=10说明:将说明:将10赋值给赋值给a(2)元素元素 二维数组二维数组二维数组由行列两维构成的,若将每行看成一个一维数组,二维数组由行
18、列两维构成的,若将每行看成一个一维数组,二维数组可看成多个一维数组构成。二维数组可看成多个一维数组构成。(1)声明)声明格式:格式:Dim 数组名数组名(m1 to n1,m2 to n2)as 数据类型数据类型 n1、m1第一维下标上下界,第一维下标上下界,n2、m2是第二维下标上下界,是第二维下标上下界,m1、m2都可以省略,如省略表示都可以省略,如省略表示0。举例举例Dim Matrix(3,4)As Integer(2)赋值)赋值Matrix(0,4)=20 运算符和表达式运算符和表达式(1)算术运算:算术运算符有:)算术运算:算术运算符有:、*、/、mod、+、-、表8-3 数字运算
19、符和字符运算符运算符运算符功能功能例子例子结结果果+两个数相加两个数相加5+1015-两个数相减两个数相减10-55*两个数相乘两个数相乘3*515/用一个数除以另一个数用一个数除以另一个数10/42.5用一个整数数除以另一个数用一个整数数除以另一个数1042指数运算指数运算238mod对对两个数作除法并且只返回余两个数作除法并且只返回余数数21 mod 21&两个字符串两个字符串连连接在一起接在一起北京北京&2008北京北京2008运算符和表达式运算符和表达式(2)关系运算)关系运算 常用的比较操作符有:大于常用的比较操作符有:大于、小于、小于=、小于等于、小于等于=或不或不等于等于,表8-
20、4 比较运算符运算符运算符功能功能例子例子结结果果小于小于1232Truefalse=小于等于小于等于2=23=大于等于大于等于3=22=3truefalse大于大于3223truefalse不等于不等于3222truefalse运算符和表达式运算符和表达式(3)逻辑运算)逻辑运算 逻辑运算是对真或假的运算,产生逻辑值(真或假)。逻辑运算是对真或假的运算,产生逻辑值(真或假)。优先级关系:优先级关系:notandorxor表8-5 逻辑运算符运算符运算符功能功能例子例子结结果果And逻辑逻辑与与True And TrueTrue And FalseFalse And FalseTrueFals
21、eFalseOr逻辑逻辑或或True or TrueTrue or FalseFalse or FalseTrueTrueFalseNot逻辑逻辑非非Not True Not FalseFalseTrue表达式案例表达式案例【例例8.4】判断表达式的结果判断表达式的结果在在VBE窗口,运行菜单窗口,运行菜单【视图视图】|【立即窗口立即窗口】命令,弹出如命令,弹出如图图8.9立即窗口,输入立即窗口,输入“?”号,在问号后输入表达式,回号,在问号后输入表达式,回车后即可显示表达式结果。车后即可显示表达式结果。例:例:3*33/39根据优先级关系相当于:根据优先级关系相当于:(3*3)(3/3)图图
22、8.9 立即窗口立即窗口表表8-6 表达式举例表达式举例表达式表达式结果结果说明说明江小青江小青张小民张小民false字符串比较按照字母顺序比较,汉字按其拼音字符串比较按照字母顺序比较,汉字按其拼音对应的字母顺序。对应的字母顺序。12 mod 5.42对第二个数进行四舍五入后求余对第二个数进行四舍五入后求余102 and 102True优先级相当于:优先级相当于:(102)and(102)3*33/39根据优先级关系相当于:根据优先级关系相当于:(3*3)(3/3)8.4 系统常用函数及对象系统常用函数及对象8.4.1 标准函数标准函数在在VBA中,提供了大量的内置函数,可以完成许多的操作,比
23、如字符串中,提供了大量的内置函数,可以完成许多的操作,比如字符串函数函数Mid()、统计函数、统计函数Max()等。在编程是直接引用就可以了,非常方等。在编程是直接引用就可以了,非常方便。便。函数包含三个要素:函数名、参数、返回值。函数包含三个要素:函数名、参数、返回值。函数格式:函数格式:函数名函数名(参数列表参数列表)说明:说明:(1)参数列表表示用逗号隔开的值或表达式,不同函数的参数个数不同,)参数列表表示用逗号隔开的值或表达式,不同函数的参数个数不同,有些函数没有参数。有些函数没有参数。(2)一般函数都有一个返回值,即函数的运算结果,通常函数的返回值)一般函数都有一个返回值,即函数的运
24、算结果,通常函数的返回值的类型是固定的,且在调用时赋值给一个变量。的类型是固定的,且在调用时赋值给一个变量。系统函数按其功能主要分为:数学函数、日期函数、字符串函数、转换系统函数按其功能主要分为:数学函数、日期函数、字符串函数、转换函数。函数。系统提供了大量系统函数,可以在系统提供了大量系统函数,可以在VBE的立即窗口验证。的立即窗口验证。1数字函数数字函数(1)求绝对值)求绝对值格式:格式:Abs(数值数值)功能:返回参数的绝对值功能:返回参数的绝对值Abs(-10)结果:结果:10(2)取整部分)取整部分格式:格式:int(数值数值)功能:返回不大于参数的最大整数部分功能:返回不大于参数的
25、最大整数部分Int(13.4)结果:结果:13Int(13.6)结果:结果:13Int(-13.6)结果:结果:-14(3)取整数部分函数)取整数部分函数格式:格式:fix(数值数值)功能:参数的整数部分功能:参数的整数部分Fix(13.4)结果:结果:13Fix(13.6)结果:结果:13Fix(-13.6)结果:结果:-134)随机函数)随机函数格式:格式:rnd(数值数值)功能:产生一个功能:产生一个01的随机数的随机数2日期函数日期函数(1)当前日期函数)当前日期函数格式:格式:date()功能:返回系统当前日期功能:返回系统当前日期(2)当前时间函数)当前时间函数格式:格式:time
26、()功能:返回系统当前时间功能:返回系统当前时间(3)当前日期时间函数)当前日期时间函数格式:格式:now()功能:返回系统的日期和时间功能:返回系统的日期和时间(4)取出年份函数)取出年份函数格式:格式:year(日期日期)功能:取出日期中的年份,整型功能:取出日期中的年份,整型Year(date()结果:返回系统日期中的年份结果:返回系统日期中的年份(5)取出日月份函数)取出日月份函数格式:格式:month(日期日期)功能:取出括号日期中月份,整型。功能:取出括号日期中月份,整型。Month(date()结果:返回系统日期中的月份。结果:返回系统日期中的月份。3字符串函数字符串函数(1)长
27、度函数)长度函数格式:格式:len(字符串字符串)功能:返回括号中字符串的长度,即字符串中字符的个数。功能:返回括号中字符串的长度,即字符串中字符的个数。Len(welcome to Beijing)结果:结果:18 说明:包含说明:包含2个空格。个空格。(2)转换大小写)转换大小写格式:格式:ucase(字符串字符串)、lcase(字符串)(字符串)功能:将字符串全部转换为大小写字母功能:将字符串全部转换为大小写字母 Ucase(Beijing)结果:结果:BEIJING(4)左边截取)左边截取格式:格式:left(字符串,整数(字符串,整数N)功能:从字符串左边截取功能:从字符串左边截取N
28、个字符个字符 Left(beijing2008,7)结果:结果:beijing(5)右边截取)右边截取格式:格式:right(字符串,整数(字符串,整数N)功能:从字符串右边截取功能:从字符串右边截取N个字符。个字符。Right(beijing2008,4)结果:结果:2008(6)中间截取字符串)中间截取字符串格式:格式:mid(字符串,开始位置(字符串,开始位置N1,截取长度,截取长度N2)功能:从字符串左边第功能:从字符串左边第N1个位置开始截取个位置开始截取N2个字符串。个字符串。Mid(北京欢迎你北京欢迎你,3,2)结果:欢迎结果:欢迎3字符串函数字符串函数(7)删除左边空格)删除左
29、边空格格式:格式:ltrim(字符串字符串)功能:删除字符串左边空格功能:删除字符串左边空格Ltrim(welcome to beijing)结果:结果:welcome to Beijing(8)删除右边空格)删除右边空格格式:格式:rtrim(字符串)(字符串)功能:删除字符串右边空格功能:删除字符串右边空格(9)删除两边空格)删除两边空格格式:格式:trim(字符串字符串)功能:删除字符串开始和尾部空格。功能:删除字符串开始和尾部空格。(10)字符串查找)字符串查找格式:格式:instr(N,str1,str2)功能:在功能:在str1中从中从N位置开始查找位置开始查找str2,返回首次出
30、现的位置,返回首次出现的位置,N可以省可以省略,省略表示总第一个字符开始查找。若找到返回所在位置整数,若略,省略表示总第一个字符开始查找。若找到返回所在位置整数,若找不到,返回值为找不到,返回值为0。Instr(welcome to beijing,o)结果:结果:5说明:在说明:在welcome to beijing中查找中查找o,返回,返回o所在位置所在位置Instr(6,welcome to beijing,o)结果:结果:10说明:在说明:在welcome to beijing中从第中从第6个字符开始查找个字符开始查找o,返回,返回o所在位置所在位置4转换函数转换函数(1)数字转换为字
31、符串)数字转换为字符串格式:格式:str(数字数字)功能:将数字转换为字符串功能:将数字转换为字符串北京北京+2008 结果:出错,字符串不能和数字运算结果:出错,字符串不能和数字运算北京北京+str(2008)结果:北京结果:北京2008(2)字符串转换为数字)字符串转换为数字格式:格式:val(字符串字符串)功能:将数字字符串转换为数值功能:将数字字符串转换为数值.Val(100)结果:结果:100 (3)返回字符的)返回字符的ASCII码码格式:格式:asc(字符字符)功能:返回字符的功能:返回字符的ASCII码值码值Asc(a)结果:结果:97 说明:小写说明:小写a的的ASCII码为
32、码为97(4)字符代码转换为字符)字符代码转换为字符格式:格式:chr(字符代码字符代码)功能:返回字符代码(功能:返回字符代码(ASCII码所对应的字符)。码所对应的字符)。Chr(97)结果:结果:a其他类型转化函数有:其他类型转化函数有:CBool、CByte、CCur、CDate、CDbl、CDec、CInt、CLng、CSng、CStr、CVar、5验证函数验证函数在窗体上使用控件输入数据时,可通过一些验证函数验证输入的数据是否在窗体上使用控件输入数据时,可通过一些验证函数验证输入的数据是否有效,比如使用文本框输入年龄时,可使用有效,比如使用文本框输入年龄时,可使用isnumeric
33、判断输入的数值是判断输入的数值是否为数值,否为数值,isNumeric、isDate、isNull、isEmpty6输入输出函数输入输出函数(1)InputBox在一对话框来中显示提示,等待用户输入正文或按下按钮,并返回包含文在一对话框来中显示提示,等待用户输入正文或按下按钮,并返回包含文本框内容的字符串。本框内容的字符串。格式:格式:InputBox(prompt,标题标题,默认值默认值,xpos,ypos)例:在图例:在图8.10立即窗口中输入:立即窗口中输入:?inputbox(请输入姓名请输入姓名)弹出图弹出图8.11对话框,输入对话框,输入“王小风王小风”,单击,单击“确定确定”按钮
34、,返回值为输入按钮,返回值为输入的值的值(2)MsgBox在对话框中显示消息,等待用户单击按钮,并返回一个在对话框中显示消息,等待用户单击按钮,并返回一个Integer类型的数值类型的数值告诉用户单击哪一个按钮。告诉用户单击哪一个按钮。格式:格式:MsgBox(prompt,buttons,title)【例例8.5】在图在图8.12立即窗口中输入立即窗口中输入?msgBox(确认退出系统吗确认退出系统吗?,vbYesNo,退出警告退出警告),弹出图,弹出图8.13对话框,单击对话框,单击“否(否(N)”按钮,返回值为按钮,返回值为7。若单击若单击“是(是(Y)”,返回值为,返回值为6。7数据库
35、函数数据库函数格式:格式:DLookup(expr,domain,criteria)expr一个表达式,用于标识需要返回其值的字段。它既可以是用于标识一个表达式,用于标识需要返回其值的字段。它既可以是用于标识表或查询中字段的字符串表达式,也可以是以该字段上的数据进行计表或查询中字段的字符串表达式,也可以是以该字段上的数据进行计算的表达式。算的表达式。domain可以是表名称或不需要参数的查询名称。可以是表名称或不需要参数的查询名称。criteria可选的字符串表达式,用于限制可选的字符串表达式,用于限制 DLookup 函数执行的数据范围。函数执行的数据范围。例如,例如,criteria 通常
36、等价于通常等价于 SQL 表达式中的表达式中的 WHERE 子句,只是不含子句,只是不含 WHERE 关键字。关键字。例:在立即窗口中输入:例:在立即窗口中输入:?DLookup(密码密码,用户用户,用户号用户号=11038)返回值:返回值:welcome说明:在说明:在“用户用户”表中查找表中查找“用户号用户号”为为“11038”的记录的的记录的“密码密码”字字段值。段值。8分支函数分支函数(1)IIF函数函数格式:格式:IIf(expr,truepart,falsepart)expr必要参数。用来判断真伪的表达式。必要参数。用来判断真伪的表达式。truepart必要参数。如果必要参数。如果
37、 expr 为为 True,则返回这部分的值或表达式。,则返回这部分的值或表达式。falsepart必要参数。如果必要参数。如果 expr 为为 False,则返回这部分的值或表达式。,则返回这部分的值或表达式。例:在立即窗口中输入:例:在立即窗口中输入:score=85?iif(score=60,及格及格,不及格不及格)结果:及格结果:及格(2)switch函数函数格式:格式:Switch(条件条件1,表达式,表达式1,条件,条件2,表达式,表达式2,条件,条件N,表,表达式达式N)功能:从左边条件开始计算,若某个条件成立,函数的值就功能:从左边条件开始计算,若某个条件成立,函数的值就为该条
38、件对应的表达式的值。为该条件对应的表达式的值。例:在立即窗口中输入:例:在立即窗口中输入:score=85?switch(score60,不及格不及格,score=85,优优秀秀)优秀优秀(3)choose函数函数格式:格式:Choose(index,choice-1,choice-2,.,choice-n)功能:功能:Choose 会根据会根据 index 的值来返回选择项列表中的某个的值来返回选择项列表中的某个值。如果值。如果index是是1,则,则Choose会返回列表中的第会返回列表中的第1个选择个选择项。如果项。如果index是是2,则会返回列表中的第,则会返回列表中的第2个选择项,
39、以个选择项,以此类推。此类推。例:在立即窗口中输入:例:在立即窗口中输入:xy=2?choose(xy,英文学院英文学院,经贸学院经贸学院,信息学院信息学院)经贸学院经贸学院 8.4.2 DoCmd对象对象使用使用 DoCmd 对象的方法,可以从对象的方法,可以从 Visual Basic 运行运行 Microsoft Access 操操作。操作可以执行诸如关闭窗口、打开窗体和设置控件值等任务。作。操作可以执行诸如关闭窗口、打开窗体和设置控件值等任务。格式:格式:DoCmd.方法名方法名 参数列表参数列表在宏操作可实现的功能几乎都可以采用在宏操作可实现的功能几乎都可以采用DoCmd对象实现,对
40、象实现,DoCmd对象的对象的方法名同功能相同的宏操作的操作名相同,并且所需要设置的参数及方法名同功能相同的宏操作的操作名相同,并且所需要设置的参数及顺序也相同。顺序也相同。例:打开窗体例:打开窗体主体导航主体导航DoCmd.OpenForm 主体导航主体导航,acNormal 例:打开表例:打开表“图书图书”OpenTable 图书图书,acViewNormal,acEdit 程序流程控制程序流程控制顺序、选择(分支)、循环(重复)顺序、选择(分支)、循环(重复)顺序结构:按照语句的先后顺序依次执行。顺序结构:按照语句的先后顺序依次执行。选择结构:又称为条件结构或分支结构,根据条件选择结构:
41、又称为条件结构或分支结构,根据条件分别执行不同的分支语句。分别执行不同的分支语句。循环结构:在满足某种条件的情况,反复执行某一循环结构:在满足某种条件的情况,反复执行某一段程序代码,直到条件不再满足。段程序代码,直到条件不再满足。标号和标号和goto语句语句 格式:格式:Goto 标号标号标号标号:例如例如【案例案例8.1】窗体中窗体中“退出退出”命令按钮事件过程如下:命令按钮事件过程如下:Private Sub Command7_Click()On Error GoTo Err_Command7_Click DoCmd.QuitExit_Command7_Click:Exit SubErr_
42、Command7_Click:MsgBox Err.Description Resume Exit_Command7_ClickEnd Sub说明:说明:(1)有两个标签:)有两个标签:Exit_Command7_Click和和Err_Command7_Click。(2)如果出现运行错误,执行)如果出现运行错误,执行On Error GoTo Err_Command7_Click,从该处直接跳转到,从该处直接跳转到Err_Command7_Click处,而处,而DoCmd.Quit语句将不会被语句将不会被运行。运行。条件语句条件语句 if语句语句格式格式1:if thenend if格式格式2
43、:if then else end if格式格式3:If Then ElseIf Then Else End If案例案例窗体窗体“用户登录用户登录”代码实现。代码实现。【例例8.6】窗体窗体“用户登录用户登录”代码实现。代码实现。(1)功能说明:用户在文本框里输入用户编号)功能说明:用户在文本框里输入用户编号和对应密码,然后在数据表和对应密码,然后在数据表“用户用户”里查找,里查找,若用户编号存在且密码正确,登录成功,进入若用户编号存在且密码正确,登录成功,进入导航窗口导航窗口“主体导航主体导航”,若用户编号不存在,若用户编号不存在,提示提示“密码错误密码错误”。(2)运行界面见第四章图)运
44、行界面见第四章图4.1所示。所示。案例案例窗体窗体“用户登录用户登录”代码实现。代码实现。程序代码:程序代码:在在【登录登录】按钮的按钮的【单击单击】(Click)事件里编写代码。)事件里编写代码。Private Sub Command1_Click()If DLookup(密码密码,用户用户,用户号用户号=&userid&)=password Then如果一致,就关闭当前窗体,并打开客户单位列表窗体如果一致,就关闭当前窗体,并打开客户单位列表窗体 DoCmd.Close DoCmd.OpenForm 主体导航主体导航Else 如果不一致,就将密码框清空如果不一致,就将密码框清空 passwo
45、rd=设置密码框的焦点设置密码框的焦点 password.SetFocus 弹出消息框报错弹出消息框报错 MsgBox 密码错误!密码错误!,vbCriticalEnd IfEnd Sub案例案例窗体窗体“用户登录用户登录”代码实现。代码实现。说明:说明:DLookup(“密码密码”,“用户用户”,“用户号用户号=”“”&userid&“”“”),函数中函数中密码密码、用户号用户号是是“用户用户”表中字段,表中字段,“用户用户”指表名,指表名,userid指文本框中输入的值。指文本框中输入的值。完整的含义是:完整的含义是:在在用户用户表中查找表中查找用户号用户号字段值为字段值为userid的记
46、录所对应的的记录所对应的密码密码字段的字段的值,若找到的值与用户输入的值,若找到的值与用户输入的password相同,则登录成功,否则登录相同,则登录成功,否则登录失败。失败。DoCmd.Close 关闭当前窗体,即用户登录窗体,然后关闭当前窗体,即用户登录窗体,然后DoCmd.OpenForm 主体导航主体导航,打开窗体,打开窗体“主体导航主体导航”。password=将密码文本框内容清空。将密码文本框内容清空。password.SetFocus,光标定位在密码文本框里。,光标定位在密码文本框里。MsgBox 密码错误!密码错误!,vbCritical,弹出一个消息框,显示,弹出一个消息框,
47、显示“密码错误密码错误”。条件语句条件语句 Select Case语句语句格式:格式:Select Case Case Case Case Else End Select说明:说明:1 1、可以是如下几种形式:可以是如下几种形式:(1 1)表达式(如)表达式(如6060,2*x2*x)。)。(2 2)表达式)表达式1 to 1 to 表达式表达式2 2(表示在表达(表示在表达式式1 1和表达式和表达式2 2之间)。之间)。(3 3)is is 关系运算符(如关系运算符(如is=100is=100)。)。(4 4)表达式)表达式1 1,表达式,表达式2 2,。2 2、如果有一个以上的、如果有一个
48、以上的CaseCase子句与子句与 匹配,则匹配,则VBAVBA只执行第一个匹配只执行第一个匹配的的CaseCase字句后面的语句组。字句后面的语句组。3 3、如果前面的、如果前面的CaseCase子句与子句与 都不匹配,则可在都不匹配,则可在Case ElseCase Else子句后面子句后面的语句块。的语句块。案例案例【例例8.7】建立窗体建立窗体“体重标准计算体重标准计算”。(1)功能说明:用户输入身高(米)和体重(公斤),计)功能说明:用户输入身高(米)和体重(公斤),计算体重指数算体重指数BMI=身高身高/(体重(体重*体重),如体重),如BMI值区间为值区间为18,20,为标准体重
49、,(,为标准体重,(20,23之间,体重正常,但应之间,体重正常,但应注意适量运动,(注意适量运动,(23,25之间,轻度肥胖,注意节食,之间,轻度肥胖,注意节食,超过超过25,为肥胖,应立即减肥。,为肥胖,应立即减肥。(3)设计步骤:)设计步骤:在数据库窗口中,执行在数据库窗口中,执行【窗体窗体】|【在设计视图在设计视图中创建窗体中创建窗体】命令。命令。主要控件设计和属性见表主要控件设计和属性见表8-7。表表8-7健康指数计算控件属性健康指数计算控件属性控件名称控件名称标题标题说说明明title健康指数健康指数计计算算字体:楷体字体:楷体_GB2312,字号:,字号:24high文本框,文本
50、框,输输入身高入身高weight文本框,文本框,输输入体重入体重result结结果果图图中中“轻轻度肥胖,注意度肥胖,注意节节食食”标签标签,设计设计初始化初始化时为时为“结结果果”Command1计计算算采用非向采用非向导导方式生成方式生成在在【计算计算】按钮的按钮的【单击单击】(Click)事件。)事件。Private Sub Command1_Click()Dim bmi As Doublebmi=weight.value/(high.value*high.value)Select Case bmiCase Is 18result.Caption=体重过轻体重过轻,请注意营养请注意营养C