第7章 宏
●章前导读
通过本章,你可以学习到:
◎宏的基本概念
◎在宏中使用条件的方法
◎宏的运行与调试
◎常见宏操作
◎创建宏、宏组的方法
本章学习流程图
7.1 宏的功能
宏是Access数据库的对象之一,它的主要功能就是进行自动操作,将查询、窗体等有机组合起来,形成性能完善、操作简单的系统。它是一种功能强大的工具,可以使用户更加方便、快捷地操纵Access数据库系统。
本节主要介绍宏的基本概念及宏的创建、设置、调试和运行等。
7.1.1 宏的基本概念
学习提示
【了解】宏的基本概念
在Access中,用户可在宏中定义各种操作,如打开或关闭窗体、显示及隐藏工具栏、预览或打印报表等。通过直接执行宏,或者使用包含宏的用户界面,可以完成许多复杂的操作,而无须编写程序。
Access中的宏分为操作序列宏、宏组和含有条件操作的条件宏。
宏可以是包含操作序列的一个宏,也可以是一个宏组。如果设计时将不同的宏按照分类组织到不同的宏组中,将有助于数据库的管理。使用条件表达式的条件宏可以在满足特定条件时才执行对应的操作。
7.1.2 设置宏操作
在Access中,共有53种基本宏操作,这些宏操作可以完成以下功能。
窗体与报表中的数据处理,如移动窗口、改变窗口大小、打印报表等。
数据的导入、导出。
对象处理。
执行任意的应用处理模块。
为控件的属性赋值。
这些基本操作还可以组合成很多其他的“宏组”操作。使用中很少单独使用基本宏命令,常常是将这些命令组成一组,按照顺序执行,以完成一种特定任务。这些命令可以通过窗体中控件的某个事件操作来实现,或在数据库的运行过程中自动实现。像“单击”按钮、“双击”列表选项这些行为,都是对控件的事件操作。
图7-1所示是宏设计的一个例子,它只包含一个OpenForm操作,作用是打开“学生”窗体,运行后的效果如图7-2所示。
图7-1 宏示例
图7-2 运行宏结果
图7-3所示为宏组,包含两个名为“打开报表”、“打开窗体”的宏。
图7-3 宏组示例
在宏“设计”视图中,添加窗体宏操作的操作参数共有6项,相关说明如表7-1所示。
表7-1 宏的操作参数说明
7.2 建立宏
宏可以包含操作序列的一个宏或宏组,宏组由若干个宏构成。宏可以分为3类:操作序列宏、宏组和包含条件操作的宏。本节以实例来讲解宏的基本操作,包括操作序列宏的创建、宏组的创建等。
7.2.1 创建操作序列宏
学习提示
【应用】宏的基本操作
【例7-1】在“学生管理”数据库中创建一个宏来打开“学生”窗体。
在“宏”对象中单击“新建”按钮,打开宏设计视图。
在宏“设计”视图“操作”栏第1 行的下拉列表框中选择“Open-Form”,在对应右边“注释”栏中输入“打开学生窗体”,在下面“操作参数”的“窗体名称”下拉列表框中选择“学生”窗体,在“数据模式”的下拉列表框中选择“只读”,如图7-4所示。
图7-4 “创建宏”对话框
单击工具栏上的“保存”按钮,在“另存为”对话框中输入“学生基本信息”,单击“确定”按钮。
关闭宏“设计”视图对话框,选择宏对象“学生基本信息”,单击“运行”按钮运行宏,结果如图7-5所示。
图7-5 运行宏结果
7.2.2 创建宏组
【例7-2】 建立打开一个窗体和一个报表的宏组。
在“宏”对象中单击“新建”按钮,打开宏“设计”视图。
单击工具栏中的“宏名”按钮 ,在宏“设计”视图中增加一个“宏名”列。
在“宏名”栏第1行中输入“打开报表”,“操作”栏选择“OpenReport”,在“注释”栏中输入“打开学生平均成绩报表”。在下方操作参数的“报表名称”下拉列表框中选择“学生平均成绩”报表,在“视图”下拉列表框中选择“打印预览”。
在“宏名”栏第2行中输入“打开窗体”,“操作”栏选择“OpenForm”,在“注释”栏中输入“打开学生窗体”。在下面“操作参数”的“窗体名称”下拉列表框中选择“学生”窗体,在“数据模式”的下拉列表框中选择“只读”,如图7-6所示。
图7-6 宏组设置
单击工具栏中的“保存”按钮,在“另存为”对话框中输入“宏组”。
【例7-3】 在新建的窗体中使用“宏组”宏来打开报表与窗体。
在“窗体”对象中双击“在设计视图中创建窗体”选项,打开窗体“设计”视图。
单击工具箱中的“命令按钮”按钮,向窗体中添加两个按钮。
用鼠标右键单击第1 个命令按钮,执行快捷菜单“属性”命令,打开命令按钮“属性”对话框,在“格式”选项卡的“标题”文本框中输入“打开报表”,单击“事件”选项卡,在“单击”下拉列表框中选择宏“宏组.打开报表”选项,如图7-7所示。
同理完成另一个命令按钮的操作。
关闭命令按钮“属性”对话框,在工具栏中单击“视图”按钮,单击“打开报表”按钮,则打开“学生平均成绩”报表,单击“打开窗体”按钮,则打开“学生”窗体。
图7-7 选择宏组
单击工具栏中的“保存”按钮,将窗体保存为“打开报表和窗体”。
7.2.3 创建条件操作宏
在宏的使用中,如果希望满足一定条件才执行宏,可以使用条件来控制这种流程。
【例7-4】 创建一个宏,判断用户输入的数据。
在“窗体”对象中双击“在设计视图中创建窗体”,打开窗体“设计”视图。
在窗体中添加一个带有标签的文本框,在标签中输入“请输入数字”,用鼠标右键单击文本框,执行快捷菜单“属性”命令,在“其他”选项卡的“名称”文本框中输入“请输入数字”,再添加一个命令按钮。
用鼠标右键单击“命令按钮”,执行快捷菜单“属性”命令,在“格式”选项卡的“标题”文本框中输入“确定”,在“事件”选项卡中单击“进入”列表框右侧的按钮,打开“选择生成器”对话框,如图7-8所示。
图7-8 “选择生成器”对话框
选择“宏生成器”,单击“确定”按钮,打开“另存为”对话框,输入宏名称为“判断数字宏”,单击“确定”按钮,进入宏“设计”视图。
在宏“设计”视图中单击工具箱上的“条件”按钮 ,宏“设计”视图中出现条件列。
在宏“设计”视图“操作”栏第1行的下拉列表框中选择“MsgBox”宏,在“条件”栏中输入“[请输入数字] >0”,在下面“操作参数”的“消息”文本框中输入“您输入的数字大于0!”,如图7-9所示。同理,添加一个“MsgBox”宏,条件为“[请输入数字] <0”。
图7-9 创建宏条件
保存“判断数字宏”宏,并将窗体保存为“判断数字”。
运行“判断数字”窗体,如图7-10所示。
图7-10 运行“判断数字”窗体
在存在条件的宏中,只有当条件为真时,才会执行相应的操作。例如,在本例中,当输入一个大于0的数字时,第1个宏才会弹出提示窗口。
7.2.4 设置宏操作参数
在宏中添加某个操作之后,可在“宏”设计窗体的下部设置与这个操作有关的参数。
(1)可以在参数框中输入数值,也可以从列表中选择某个设置。
(2)通过从“数据库”窗体以拖动数据库的方式向宏中添加操作,系统会设置适当的参数。
(3)如果操作中有调用数据库对象名的参数,则可以将对象从“数据库”窗体中拖动到参数框,从而由系统自动设置操作及其对应的对象类型参数。
(4)可以用前面加等号“=”的表达式来设置操作参数,但不能对表7-2 中的参数使用表达式。
表7-2 不能设置成表达式的操作参数
续表
7.2.5 宏的运行
宏有多种运行方式。可直接运行某个宏,可运行宏组里的宏,也可以通过响应窗体、报表及其控件中的事件来运行宏。
1.直接运行宏
下列操作方法之一即可直接运行宏。
(1)在“宏”设计窗体中运行宏,单击工具栏上的“运行”按钮 。
(2)在数据库窗体中执行宏,单击“宏”对象选项,然后双击相应的宏名。
(3)在“工具”菜单上选择“宏”选项,单击“运行宏”命令,再选择或输入要运行的宏。
(4)使用Docmd对象的RunMacro方法,在VBA代码过程中运行宏。
2.运行宏组中的宏
下列操作方法之一即可运行宏组中的宏。
(1)将宏指定为窗体或报表的事件属性设置,或指定为RunMacro操作的宏名参数。引用宏的格式为:宏组名.宏名。
(2)在“工具”菜单上选择“宏”选项,单击“运行宏”命令,再选择或输入要运行的宏组里的宏。
(3)使用Docmd对象的RunMacro方法,在VBA代码过程中运行宏。
3.通过响应窗体、报表或控件的事件运行宏或事件过程
通常情况下,直接运行宏或宏组里的宏是在设计和调试宏的过程中进行的,目的是为了测试宏的正确性。在确保宏设计无误后,可将宏附加到窗体、报表或控件中,以对事件做出响应,或创建一个执行宏的自定义菜单命令。
在Access中,可以通过设置窗体、报表或控件上发生的事件来响应宏或事件过程。操作步骤如下。
在“设计”视图中打开窗体或报表。
设置窗体、报表或控件的有关事件属性为宏的名称或事件过程。
在打开窗体、报表后,如果发生相应事件,则会自动运行设置的宏或事件过程。
7.2.6 宏的调试
在运行宏时,经常会停止操作,出现一个“操作失败”的对话框,如图7-11所示。
图7-11 “操作失败”对话框
若一个宏有多个宏操作,而它包含一个错误,则可以采取“单步”方式来逐步检查宏中的错误。
“单步执行宏”对话框中有3个命令按钮,功能如表7-3所示。
表7-3 命令按钮功能说明
7.3 通过事件触发宏
在实际的应用系统中,设计好的宏更多的是通过窗体、报表或查询产生的“事件”触发相应的宏,使之投入运行。
7.3.1 事件的概念
事件(Event)是在数据库中执行的一种特殊操作,是对象所能辨识和检测的动作。当此动作发生在某一个对象上时,其对应的事件便会被触发,例如单击鼠标、打开窗体或者打印报表。可以创建某一特定事件发生时运行的宏,如果事先已经给这个事件编写了宏或事件程序,此时就会执行宏或事件过程。例如,当使用鼠标单击窗体中的一个按钮时,会引起“单击”(Click)事件,此时事先指派给“单击”事件的宏或事件程序也就投入运行。
事件是预先定义好的活动,事件过程是为响应由用户或程序代码引发的事件或由系统触发的事件而运行的过程。宏运行的前提是有触发宏的事件发生。
打开或关闭窗体,在窗体之间移动,或者对窗体中的数据进行处理时,将发生与窗体相关的事件。由于窗体的事件比较多,在打开窗体时,将按照下列顺序发生相应的事件:
打开(Open)→加载(Load)→调整大小(Resize)→激活(Activate)→成为当前(Current)。
如果窗体中没有活动的控件,在窗体的“激活”事件发生之后,仍会发生窗体的“获得焦点”(GotFocus)事件,但是该事件将在“成为当前”事件之前发生。
关闭窗体时,将按照下列顺序发生相应的事件:
卸载(Unload)→停用(Deactivate)→关闭(Close)。
如果窗体中没有活动的控件,在窗体的“卸载”事件发生之后,仍会发生窗体的“失去焦点”(LostFocus)事件,但是该事件将在“停用”事件之前发生。
引发事件不仅仅是用户的操作,程序代码或操作系统都有可能引发事件。例如,如果窗体或报表在执行过程中发生错误,便会引发窗体或报表的“出错”(Error)事件;当打开窗体并显示其中的数据记录时,会引发“加载”(Load)事件。
7.3.2 通过事件触发宏
在窗体、报表或查询设计的过程中,可以通过对象的事件触发对应的宏或事件。下面通过一个示例进行说明。
【例7-5】 设计一个简单的学生学籍管理系统,通过宏实现系统基本功能的连接和窗体转换,系统的主要功能和转换关系如图7-12所示。
图7-12 通过事件触发宏完成的示例:学生学籍管理系统
为实现系统的要求,先需设计4个窗体。
(1)“学生管理主窗体”为图7-12中的屏幕①,窗体设计如图7-13所示。
(2)“学生基本信息管理”窗体为图7-12中的屏幕②,窗体设计如图7-14所示。
图7-13 窗体设计:学生管理主窗体
图7-14 窗体设计:学生基本信息管理窗体
(3)“学生个人情况”窗体为图7-12 中的屏幕④,窗体设计如图7-15 所示。将窗体的数据源设置为“学生表”,设置文本框“学号”的属性“名称”和“控件来源”,如图7-15 右侧图所示。
图7-15 窗体设计:学生个人情况窗体
(4)“学生个人成绩”窗体为图7-12 中的屏幕⑤,窗体设计如图7-16 所示。将窗体的数据源设置为“个人成绩”表。
图7-16 窗体设计:学生个人成绩窗体
图7-12中的屏幕③是由宏生成的,真正的输入学生基本信息的窗体应该另行设计。
图7-12中的屏幕⑥和⑦是选择查询“按姓名查询成绩”时产生的界面。
图7-12中的屏幕⑧是退出整个系统的确认界面,如果单击“是”,则退出系统;如果单击“否”,则返回主窗体。
下面简要介绍系统中各个宏、查询和事件等的设计和设置。
1.设计由主窗体①进入窗体②
编写名为“打开学生管理窗体”的宏,如图7-17 左侧的宏设计所示。将图7-13 中名为Commandl 的命令按钮“学生基本信息管理”的“单击”事件设置为宏“打开学生管理窗体”,如图7-17右侧的命令按钮属性设置所示。
图7-17 由主窗体①进入窗体②单击事件对应的宏和命令按钮事件设置
2.设计由窗体②进入窗体③
编写名为macrol的宏,如图7-18左侧的宏设计所示。将图7-14 中名为Commandl的命令按钮“输入学生基本信息”的“单击”事件设置为宏“macrol”,如图7-18 右侧的命令按钮属性设置所示。图7-12中的屏幕③是由宏macrol中的操作MsgBox产生的,在实际的系统中可以用完成具体功能的窗体替代。
图7-18 由窗体②进入窗体③单击事件对应的宏和命令按钮事件设置
3.设计由窗体②返回主窗体①
编写名为“返回主窗体”的宏,如图7-19左侧的宏设计所示。将图7-14中名为Command5的命令按钮“返回主窗口”的“单击”事件设置为宏“返回主窗体”,如图7-19 右侧的命令按钮属性设置所示。
图7-19 由窗体②进入主窗体①单击事件对应的宏和命令按钮事件设置
4.设计由主窗体①进入查询个人情况窗体④
编写名为“学生选课成绩查询”的宏,如图7-20 左侧的宏设计所示。将图7-13 中名为Command2的命令按钮“学生成绩管理”的“单击”事件设置为宏“学生选课成绩查询”,如图7-20右侧的命令按钮属性设置所示。
图7-20 由窗体①进入“学生个人情况”窗体④单击事件对应的宏和命令按钮事件设置
5.设计由查询个人情况窗体④进入查询个人成绩窗体⑤
编写名为“查询个人成绩”的宏,如图7-21 左侧的宏设计所示。将图7-15 中名为Command10的命令按钮“查询成绩”的“单击”事件设置为宏“查询个人成绩”,如图7-21 右侧的命令按钮属性设置所示。
图7-21 由“学生个人情况”窗体④进入“学生个人成绩”窗体⑤事件对应的宏和命令按钮事件设置
为了查询与学生个人情况相对应的个人成绩,需要设计一系列的宏操作。
(1)为了保证整个宏操作运行流畅,在宏中首先使用SetWarnings 操作,关闭系统的警告功能,以保证系统的提示信息不会对使用者产生干扰。
(2)使用OpenQuery操作,打开删除查询“学生个人成绩查询1”,删空临时表“个人成绩”。删除查询设计,如图7-22所示;个人成绩表结构如图7-23所示。
图7-22 删除查询设计:学生个人成绩查询1
图7-23 个人成绩表结构
(3)使用OpenQuery操作打开追加查询“学生个人成绩查询2”。追加查询设计如图7-24所示。将“学生选课成绩表”中符合条件的成绩记录保存到“个人成绩”表中。设置追加查询学生个人成绩查询2的追加条件为“[ FORMS] ! [学生个人情况] ! [学号]”,其含义是根据图7-15“学生个人情况”窗体中的“学号”,在“学生选课成绩表”中筛选出对应学号的学生成绩信息。
图7-24 查询设计:追加查询——学生个人成绩查询2
(4)使用OpenForm操作打开“学生个人成绩”窗体,显示由查询(3)生成的学生成绩。
6.设计由“学生个人情况”窗体④返回主窗体①
与设计由窗体②返回主窗体①的设置类似。将图7-15 中名为Command11 的命令按钮“返回主窗体”的“单击”事件设置为宏“返回主窗体”。
7.设计由主窗体①进入选择查询⑥和⑦
编写名为“学生成绩查询”的宏,如图7-25 左侧的宏设计所示。将图7-13 中名为Command4的命令按钮“学生成绩查询”的“单击”事件设置为宏“学生成绩查询”,如图7-25右侧的命令按钮属性设置所示。
图7-25 由窗体①进入“学生成绩”窗体⑥单击事件对应的宏和命令按钮事件设置
OpenQuery操作打开的选择查询“按姓名查询成绩”的设计如图7-26所示,其中条件设置为“LIKE( [请输入要查找的学生姓名] )&"*"”。
图7-26 选择查询设计:按姓名查询成绩
8.设计由主窗体①进入⑧控制退出系统
编写名为“退出系统”的宏,如图7-27 左侧的宏设计所示。将图7-14 中名为Command5的命令按钮“返回主窗口”的“单击”事件设置为宏“退出系统”,如图7-27 右侧的命令按钮属性设置所示。
“退出系统”宏是一个条件宏,可以输入条件“MsgBox("您真的要退出系统吗?",4+32+256,"请确认")=6”,也可以使用表达式生成器生成。条件中使用了内置函数MsgBox,它的基本功能是:在对话框中显示消息,等待用户单击按钮,并返回一个整型(Integer)值,表示单击的是哪个按钮。
图7-27 由窗体①进入窗体⑧时单击事件对应的宏和命令按钮事件设置
课后总复习
一、选择题
1.下列操作中,适宜使用宏的是( )。
A)修改数据表结构 B)创建自定义过程
C)打开或关闭报表对象 D)处理报表中错误
2.下列叙述中,错误的是( )。
A)宏能够一次完成多个操作 B)可以将多个宏组成一个宏组
C)可以用编程的方法来实现宏 D)宏命令一般由动作名和操作参数组成
3.在宏的参数中,要引用窗体F1上的Text1文本框的值,应该使用的表达式是( )。
A)[Forms]! [F1]! [Text1] B)Text1
C)[F1].[Text1] D)[Forms]_[F1]_[Text1]
4.在设计条件宏时,对于连续重复的条件,要代替重复条件表达式可以使用符号( )。
A)… B): C) ! D) =
5.在宏表达式中要引用Form1窗体中的 txt1控件的值,正确的引用方法是( )。
A)Form1! txt1 B)txt1 C)Forms! Form1! txt1 D)Forms! txt1
6.要限制宏命令的操作范围,在创建宏时应定义的是( )。
A)宏操作对象 B)宏操作目标 C)宏条件表达式 D)窗体或报表控件属性
7.对象可以识别和响应的行为称为( )。
A)属性 B)方法 C)继承 D)事件
8.在运行宏的过程中,宏不能修改的是( )。
A)窗体 B)宏本身 C)表 D)数据库
9.下列属于通知或警告用户的命令是( )。
A) PrintOut B) OutputTo C) MsgBox D) RunWarnings
10.为窗体或报表的控件设置属性值的正确宏操作命令是( )。
A) Set B) SetData C) SetValue D) SetWarnings
11.某学生成绩管理系统的“主窗体”如图左侧所示,单击“退出系统”按钮会弹出如图右侧“请确认”提示框;如果继续单击“是”按钮,才会关闭主窗体退出系统,如果单击“否”按钮,则会返回“主窗体”继续运行系统。
为了达到这样的运行效果,在设计主窗体时为“退出系统”按钮的“单击”事件设置了一个“退出系统”宏。正确的宏设计是( )。
A)
B)
C)
D)
二、操作题
1.在考生文件夹下有一个数据库文件“samp3.mdb”,里面已经设计好表对象“产品”、“供应商”,查询对象“按供应商查询”,宏对象“打开产品表”、“运行查询”、“关闭窗口”等。请按以下要求完成设计。
(1)当单击“显示修改产品表”命令按钮时,运行宏“打开产品表”,即可浏览“产品”表。
(2)当单击“查询”命令按钮时,运行宏“运行查询”,即可启动查询“按供应商查询”。
(3)当单击“退出”命令按钮时,运行宏“关闭窗口”,关闭“menu”窗体,返回数据库窗口。
2.在考生文件夹下有一个数据库文件“samp3.mdb”,里面已经设计好表对象“tBorrow”、“tReader”和“tRook”,宏对象“rpt”。
请将宏对象“rpt”改名为“mReader”。
学习效果自评
本章讲述了宏的基本概念、创建、参数设置及如何运行、调试宏。考生应掌握宏、宏组及其他相关概念,同时应能创建操作序列宏、宏组,并会进行简单的条件及参数的设置。
共有条评论 网友评论