③ “条件”列,用于设置宏操作的执行条件,只有当条件满足时,才执行相应的宏操作。
当宏设计视图中没有“条件”列时,可选择“视图”菜单的“条件”命令,这时“条件”命令前打上“√”,宏设计视图中出现“条件”列。若要取消“条件”列,选择“视图”菜单的“条件”命令,取消“条件”命令前的“√”,即可。
④ “宏名”列,输入宏组中宏的名称。一个宏组中可以包含多个宏,每个宏用一个宏名来标示,每个宏中可以包含多个宏操作。
当宏设计视图中没有“宏名”列时,可选择“视图”菜单的“宏名”命令,这时“宏名”命令前打上“√”,宏设计视图中出现“宏名”列。若要取消“宏名”列,选择“视图”菜单的“宏名”命令,取消“宏名”命令前的“√”,即可。
(2)下部分的列表
下部分的列表是“操作参数”列表,为上部分的列表中所选的宏操作设置附加信息。不同的宏操作,“操作参数”的设置内容也不相同。
例如:在〖例9-1〗中,MsgBox宏操作,对应的操作参数有:消息、发嘟嘟声、类型及标题。CopyObject宏操作,对应的操作参数有:目标数据库、新名称、源对象类型及源对象名称。
(3)设置宏操作及参数时注意的问题
① 如果要设置的宏操作与数据库的对象有关,可以用鼠标拖拽的方法自动进行设置。例如,要想创建一个宏,打开“进入系统”窗体。打开宏设计视图后,选择数据库窗体对象中的“进入系统”窗体,按住鼠标左键,将其拖拽到宏设计视图的“操作”列中,这时宏操作自动完成设置,如图9.2-3所示。
图9.2-3 宏操作及操作参数的快速设置
② 如果要通过表达式来设置参数,通常表达式前要加等号(=)。但是,SetValue宏操作的“表达式”参数和RunMacro宏操作的“重复表达式”参数除外。
③ 有的参数将会影响其后参数的选择,通常应按操作参数的排列顺序进行设置。
3.AutoExec宏的使用
使用一个名为AutoExec的特殊宏可在打开数据库时自动执行一系列的操作。在打开数据库时, Access将查找名为AutoExec的宏,如果找到就自动运行它。
6
如果创建一个宏,其中包含在打开数据库时要执行的操作,则应以AutoExec为宏名保存该宏。那么下一次打开数据库时,Access将自动运行该宏。
在使用AutoExec宏时需要注意的是:
① 如果不想在打开数据库时运行AutoExec宏,可在打开数据库时按住Shift键。 ② 通过设置“工具”菜单中的“启动”对话框中的选项,也可以控制如何启动数据库。
9.2.2创建条件宏
在某些情况下,希望仅当特定条件满足时才执行宏中的一个或多个操作,则可以在操作前面加上条件,形成条件宏。
1.条件表达式
条件通常是用条件表达式表示的,条件表达式的返回值只有两个:“真”或“假”。当条件成立时,表达式的返回值为“真”;条件不成立时,表达式的返回值为“假”。
条件表达式可以在宏设计视图的“条件”列中直接输入,也可以在“条件”列中单击右键,从弹出的快捷菜单中选择“生成器”来生成条件表达式。
条件表达式常用第5章中介绍的关系运算表示,例如: [书名]=“数据库及其应用”
[进书日期] Between #2007-01-01# and #2007-09-30# Forms![销售情况]![销售数量]>=100 [定价] Is Null
2.创建条件宏
创建条件宏,具体操作步骤如下:
① 在“数据库”窗口中,选择“宏”对象,在“宏”对象窗口中单击“新建”按钮。 ② 打开“宏”设计视图,选择“视图”菜单中的“条件”命令,或单击工具栏“条件”按钮,在“宏”设计窗口中添加一个“条件”列。
③ 将所需要的条件表达式输入到“宏”设计窗口的“条件”列中。
④ 在“操作”列中选择条件表达式为“真”时要执行的操作。如果条件表达式的返回值为“真”,则执行此行中的操作;如果表达式的返回值为“假”,则忽略此行的操作。
⑤ 若要添加更多的操作,则移动到下一个操作行。如果该行的操作条件与上一行相同,在相应的“条件”栏输入省略号(?)即可;如果该行是无条件执行的,可使“条件”列为空。
⑥ 命名并保存设计好的宏。
〖例9-2〗为“调价”窗体创建一个修改新价格的宏,要求对图书表中的前10种图书在原价格的基础上打9折。“调价”窗体如图9.2-4所示。
设计的操作步骤如下:
① 在“数据库”窗口中,选择“宏”对象,在“宏”对象窗口中单击“新建”按钮。 ② 单击工具栏“条件”按钮,在“宏”设计窗口中添加一个“条件”列。 ③ 创建条件宏操作:
7
? 在“条件”列中输入条件表达式:[CurrentRecord]<=10。(注:CurrentRecord
表示当前记录号) ? 在“操作”列中选择操作:SetValue。
? 在“注释”列中输入:前10种图书的新定价是在原定价上打9折。 ④ 设置操作参数:
? “项目”栏中输入:[Forms]![调价].[text9] ? “表达式”栏中输入:[Forms]![调价].[定价]*0.9
图9.2-4 “调价”窗体
⑤ 将设计好的宏保存并命名为“调价”,如图9.2-5所示。
⑥ 在设计视图中打开“调价”窗体,选择“新定价”文本框,在属性表中选择“获得焦点”事件,单击下拉箭头,选择“调价”宏。
图9.2-5 “调价”宏
⑦在窗体视图中打开“调价”窗体时,“新定价”文本框中将显示打折后的新定价。
8
9.2.3创建宏组
为了便于管理,增强可读性,通常将相关的宏组成一个宏组,放在同一个宏对象中。例如,同一个窗体有个按钮,分别触发两个不同的宏运行,那么这两个宏可以放在一起组成一个宏组。建立宏组主要是为了管理方便,这与在资源管理器中建立文件夹,将相关文件存放在同一个文件夹中的做法意义相似。
创建宏组的具体操作如下:
① 在“数据库”窗口中,选择“宏”对象,在“宏”对象窗口中单击“新建”按钮。 ② 打开“宏”设计视图,选择“视图”菜单中的“宏名”命令,或单击工具栏“宏名”按钮,在“宏”设计窗口中添加一个“宏名”列。
③ 在“宏名”列内,输入宏组中第一个宏的名字。 ④ 在“操作”列中选择所需的操作。
⑤ 如果希望在宏组内包含其他的宏,请重复第③和④步。
⑥ 命名并保存设计好的宏。注意:保存宏组时,指定的名字是宏组的名字。这个名字也是显示在“数据库”窗口中的宏对象列表的名字。
9.3 宏的运行与调试
当创建了一个宏后,需要对宏进行运行与调试,以便查看创建的宏是否含有错误,是否能完成预期任务。
9.3.1运行宏
宏可以有以下三种运行方式。 1.直接运行宏
如果要直接运行宏,可以进行下列操作之一:
? 从“宏”设计视图中运行宏,选中要运行的宏,然后工具栏上的“运行”按钮。 ? 从“数据库”窗口中运行宏,选择“宏”对象,然后双击相应的宏名。 ? 从Access的系统菜单中运行宏,选择“工具”菜单中的“宏”,单击“运行宏”
命令,然后在“宏名”框中选择相应的宏。 2.从其他宏中运行宏
如果要从其他的宏中运行宏,请将RunMacro操作添加到相应的宏中,并且将Macro Name参数设置为要运行的宏名。
3.在窗体、报表或控件的事件中运行宏
通常情况下直接运行宏只是进行测试。在确保宏的设计无误之后,可以将宏附加到窗体、报表或控件中,以对事件做出响应。
宏可以对窗体、报表或控件中的多种类型事件做出响应,包括鼠标单击、数据更改以及窗体或报表的打开或关闭等。在报表、窗体或控件上添加宏以响应某个事件,操作步骤
9
如下:
① 在设计视图中打开窗体或报表。 ② 创建宏或事件过程。例如,可以创建一个用于在单击命令按钮时显示某种信息的宏或事件过程。
③ 将窗体、报表或控件的某个事件属性设置为宏的名称。例如,要单击按钮时显示某种信息,可以将命令按钮的“单击”事件设置为用于显示信息的宏的名称。
9.3.2运行宏组
1.运行宏组中的宏
将鼠标指向“工具”菜单中的“宏”,单击“执行宏”命令,然后选定“宏名”列表中的宏。宏组中的每个宏都会以“宏组名.宏名”的形式出现在列表中。
2.从其他宏中运行宏组中的宏
如果要从其他的宏中运行宏,请将RunMacro操作添加到相应的宏中,并且将Macro Name参数设置为要运行的宏名。宏组中的宏名用如下格式表示:宏组名.宏名。
3.在窗体、报表或控件的事件中运行宏组中的宏
将窗体、报表或控件的某个事件的属性设置为:宏组名.宏名。
9.3.3调试宏
如果创建的宏没有实现预期的效果,或者宏的运行出了错误,就应该对宏进行调试,查找错误。常用的调试方法是通过对宏进行单步执行来发现宏中错误的位置。
使用单步执行宏,可以观察宏的流程和每一个操作的结果,便于发现错误。对宏进行单步执行的操作步骤如下:
① 选中要单步执行的宏,单击“设计 按钮,打开相应的宏。 ② 单击工具栏上的“单步”按钮
③ 单击工具栏上的“运行”按钮,显示“单步执行宏”对话框,
④ 在“单步执行宏”对话框中,单击“单步执行”按钮,执行“操作名称:”下面显示的操作;单击“停止”按钮,则停止宏的运行并关闭对话框;单击“继续”按钮,则关闭单步执行,并执行宏的未完成部分。
在单步执行宏时,“单步执行宏”对话框中列出了每一步所执行的宏操作“条件”是否成立以及操作名称和操作参数。通过观察这些内在的结果,可以得知宏操作是否能预期执行。
〖例9-3〗为“登陆系统”窗体创建一个宏组,要求宏组中包括:一个宏名为“确定”的宏,功能为当密码输入正确时,显示信息框“欢迎进入图书销售管理系统”,并打开“图书销售系统切换面板”窗体;如果密码输入不正确,显示信息框“密码输入错误”。另一个宏名为“退出”,功能为关闭“登陆系统”窗体。“登陆系统”窗体如图9.2-6所示。
设计操作步骤如下。
① 在“数据库”窗口中,选择“宏”对象,在“宏”对象窗口中单击“新建”按钮。
10