首页 理论教育 创建条件宏-Access2016数据库应用技术

创建条件宏-Access2016数据库应用技术

更新时间:2025-01-19 工作计划 版权反馈
【摘要】:在一些情况下,可能希望仅当特定条件成立时才执行宏中的一个或多个操作,此时可在操作前面加上条件,形成条件宏。单分支条件宏的结构如图7-16所示,当If文本框中的条件表达式成立时,执行宏操作。图7-21创建if单分支条件宏保存宏为“例7-4单分支条件宏”。打开“例7-4 if条件宏”窗体的设计视图,设置“单分支条件宏”按钮的单击事件为“例7-4单分支条件宏”。

在一些情况下,可能希望仅当特定条件成立时才执行宏中的一个或多个操作,此时可在操作前面加上条件,形成条件宏。一般用If、Else If或Else块完成。

1.条件宏简介

条件是个逻辑表达式,其返回值只有“真”和“假”两个,当条件成立时,返回值为“真”;当条件不成立时,返回值为“假”。

在宏设计窗口“添加新操作”中选择“If”选项,即可打开If块进行程序流程控制。If……Else,If……Else If类似于VBA等其他序列编程语言。在“If”块的“条件表达式”中,输入决定何时执行该块的逻辑表达式,也可单击“条件表达式”右侧“生成器”按钮,用弹出的“表达式生成器”来生成逻辑表达式。

2.条件宏的分类

条件宏中有单分支条件宏、双分支条件宏和多分支条件宏。

(1)单分支条件宏。

单分支条件宏的结构如图7-16所示,当If文本框中的条件表达式成立时,执行宏操作。

(2)双分支条件宏。

双分支条件宏的结构如图7-17所示,当If文本框中的条件表达式成立时,执行If下的宏操作,否则执行Else下的操作。

图7-16 单分支条件宏

图7-17 双分支条件宏

(3)多分支条件宏。

多分支条件宏的结构如图7-18所示,当If文本框中的条件表达式成立时,执行If下的宏操作,当Else If文本框中的条件成立时,执行Else If下的宏操作下的操作。如果都不成立,则执行Else下的宏操作。

图7-18 多分支条件宏

注:在输入条件表达式时,可能会引用窗体或报表上的控件值,可以使用下列语法:

例7-4 在“教学信息管理”数据库中,创建一个“例7-4 if条件宏”窗体,窗体中添加几个按钮,其中之一为“单分支条件宏”,单击该按钮,运行“例7-4单分支条件宏”。

具体要求如下:

(1)If操作的条件表达式是“MsgBox(“是否要打开教师表报表?”,1)=1”,当该条件表达式的值为True(即单击了由MsgBox函数打开的对话框中的“确定”按钮)时,执行操作,打开教师表报表;否则当条件表达式为False时(即单击了由MsgBox函数打开的对话框中的“取消”按钮),不执行打开教师表操作。

(2)在If块结束后(即End If的下一行),添加另一个不属于If块的MessageBox操作,该操作显示“这是一个If块的单分支结构的例子”消息框。

操作步骤:

(1)打开“教学信息管理”数据库,设计一个窗体,命名为“例7-4 if条件宏”窗体,添加两个命令按钮,标题分别为“单分支条件宏”和“双分支条件宏”,窗体设计如图7-19所示。

图7-19 例7-4 if条件宏窗体

(2)单击“创建”→“宏与代码”→“宏”,进入如图7-2所示的宏设计器窗口。

(3)在“添加新操作”中选择If,在If条件框中输入“MsgBox("是否要打开教师表报表”,1) =1”,或者单击“img”表达式生成器,当输入MsgBox时,弹出函数的各个参数,如图7-20所示,分别设置即可。(prompt为消息框中的内容,为必选项,中括弧中的各选项为非必选项)

图7-20 MsgBox函数参数

(4)在“Then”后的添加新操作中添加新操作“OpenReport”,报表名称为“教师表”,其他采用默认,如图7-21所示。

(5)在End If后添加操作MessageBox,设置各参数如图7-21所示。

图7-21 创建if单分支条件宏

(6)保存宏为“例7-4单分支条件宏”。

(7)打开“例7-4 if条件宏”窗体的设计视图,设置“单分支条件宏”按钮的单击事件为“例7-4单分支条件宏”。

(8)切换到“例7-4 if条件宏”窗体的窗体视图,单击“单分支条件宏”条件宏的命令按钮,弹出如图7-22所示的对话框。

图7-22 MsgBox对话框

(9)单击“确定”,在打开教师表报表的同时,运行MessageBox函数,弹出消息框,消息框中显示“这是一个if块的单分支结构的例子”,如图7-23所示。

图7-23 运行宏的结果

注:若在第(8)步中单击“取消”按钮,即MsgBox("是否要打开教师表报表“,1) =0,条件表达式为False,条件不成立,不执行If块的操作,即不打开报表;但因MessageBox操作在If块之外(End If后),所以仍旧执行,弹出MessageBox消息框,如图7-24所示。

因此,不论If条件是“True”还是“False”,End If后的语句都执行。

图7-24 MessageBox消息框(www.xing528.com)

例7-5 加载例7-4窗体中“双分支条件宏”命令按钮的单击事件,单击该按钮,实现运行“例7-5双分支条件宏”。该宏具体要求如下:

If操作的条件表达式是“MsgBox(“是否要打开教师表报表?”,1)=1”,当单击“确定”按钮时,执行打开教师表报表操作;当单击“取消”按钮时,执行打开学生表操作;在If块结束后添加另一个不属于If块的MessageBox操作,该操作显示“这是一个if块的双分支结构的例子”消息框。

操作步骤:

(1)前(4)步同例7-4前(4)步。

(2)在如图7-18所示的界面中单击添加“Else”。

(3)在“Else”后的“添加新操作”的下拉列表框中选择“OpenTable”,表名称选择“学生表”,其他采用默认形式,参数设置如图7-25所示。

(4)在End If后添加操作MessageBox,消息框中输入“这是一个if块双分支结构的例子”,标题文本框中输入“双分支”设置各参数如图7-25所示。

图7-25 if双分支结构参数设置

(5)保存宏为“例7-5双分支条件宏”。

(6)加载例7-4窗体中“双分支条件宏”按钮的单击事件为“例7-5双分支条件宏”。

(7)返回窗体视图,单击“双分支条件宏”按钮,观察运行结果。

① 单击“双分支条件宏”按钮,弹出如图7-22所示的MsgBox对话框。

② 若单击MsgBox对话框中的“确定”,弹出如图7-26所示的运行结果,打开了教师表报表。

图7-26 单击“确定”的运行结果

③ 若单击MsgBox对话框中的“取消”,弹出如图7-27所示的运行结果,打开了学生表。

图7-27 单击“取消”的运行结果

注:

运行时,判断If条件是否成立,在此例中,If条件由MsgBox(“是否要打开教师表报表?”,1)=1决定,按“确定”,即MsgBox值为1,表达式的值为“True”,执行Then后操作;若按“取消”,即MsgBox值非1,表达式的值为Flase,执行Else后的操作。

例7-6 创建名为“例7-6成绩等级换算”的窗体,在该窗体中添加一个文本框和一个按钮,当在文本框中输入百分制时,单击命令按钮触发“例7-6多分支条件宏”,输出相应的五分制等级,如图7-28所示。百分制与五分制之间的对应关系如下:

图7-28 成绩等级换算界面

操作步骤:

(1)设计如图7-28所示的“例7-6成绩等级换算”窗体。

(2)单击“创建”→“宏与代码”→“宏”,进入如图7-2所示的宏设计器窗口。

(3)在“添加新操作”中选择If,在If条件框中输入“[Forms]![例7-6成绩等级换算]! [Text0]>=90 And [Forms]![例7-6成绩等级换算]![Text0]<=100”,在Then后添加操作MessageBox,消息框中输入“优秀”,其他保留默认。

(4)单击“添加Else If”,在条件表达式中输入“[Forms]![例7-6成绩等级换算]![Text0]>=80 And [Forms]![例7-6成绩等级换算]![Text0]<=89”,在Then后添加操作MessageBox,消息框中输入“良好”。

(5)同理“添加Else If”,在条件表达式中输入“[Forms]![例7-6成绩等级换算]![Text0]>=70 And [Forms]![例7-6成绩等级换算]![Text0]<=79”,在Then后添加操作MessageBox,消息框中输入“中等”。

(6)继续“添加Else If”,在条件表达式中输入“[Forms]![例7-6成绩等级换算]![Text0]>=60 And [Forms]![例7-6成绩等级换算]![Text0]<=69”,在Then后添加操作MessageBox,消息框中输入“及格”。

(7)单击“Else”,添加操作MessageBox,消息框中输入“不及格”。

宏部分设计界面如图7-29所示。

图7-29 多分支条件宏

(8)保存宏为“例7-6多分支条件宏”。

(9)加载“例7-6成绩等级换算”窗体中“输出五分制等级”按钮的单击事件为“例7-6多分支条件宏”。

(10)返回窗体视图,观察其中一次运行结果,如图7-30所示,在文本框里输入“68”,单击命令按钮,弹出对话框,对话框中显示“及格”。

图7-30 运行结果检验1

注:在宏运行时,根据输入的成绩依次判断,看成绩是否在90~100,若在此区间则执行第一个If操作;若不在,则继续判断是否在80~89,若在即执行第一个“Else If”下的操作;若不在,继续判断下一个条件,在哪个范围内则执行相应的Else If下的操作,若均不在上面的范围内,则执行Else下的操作。

例如输入“54”,均不在If语句中,则执行Else后的语句,输出“不及格”对话框,如图7-31所示。

图7-31 运行结果检验2

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈