Access_CH06_宏

本章目标

  • 宏概述
  • 创建宏
  • 运行宏
  • 测试宏

宏概述

宏是一种可以控制其他数据库对象和自动执行某种操作任务的数据库对象。

宏是由宏操作命令组成的。在宏中,可以只包含一个操作命令,也可以包含多个操作命令。一旦创建了宏,从此使用时只需要掉用这个宏,就能自动执行其他所包含的各条操作命令,从而简化数据库操作的流程,提高数据处理能力。

在Access中,宏的功能非常强大,主要功能如下:

(1)代替执行重复的任务,从而节省用户的时间和精力

(2)窗体和报表中的数据处理

(3)为窗体制作菜单,显示各种提示信息框

(4)进行数据校验,显示各种提示信息框

(5)实现数据的导入和导出

(6)显示和隐藏工具栏

宏操作命令

Access的宏操作命令分为”窗口管理”、”宏命令“、”筛选/查询/搜索“、”数据导入/导出“、”数据库对象”、”数据输入操作“、”系统命令“和”用户界面命令“,部分常用宏操作命令的名称和所属类别如下:

img

img

img

img

宏的类型

按照宏的执行流程,Access中将宏分为操作序列宏、条件宏和子宏3类,他们各自具有不同的功能和特点。

(1)操作序列宏

操作序列宏是结构最简单的宏,宏中只包含按顺序排列的各种操作命令,使用时会按照从上往下的顺序执行各个操作命令

(2)条件宏

条件宏就是利用宏的条件表达式来控制宏的流程。在不指定操作条件的情况下,运行宏时,Access将顺序执行宏中包含的所有操作命令。若某个操作命令的执行是有条件的,则只有当条件为真时才执行该操作命令,若条件为假,则不运行该操作命令,而是转去执行下一行的操作命令

(3)子宏

一个宏对象可以包含若干个子宏,而一个子宏又是若干个操作组成。这些子宏各有自己的名称和对于的操作命令,放在一个宏中便于管理和维护

创建宏

使用宏之前,需要先建立宏。在Access中,宏设计视图是创建宏的唯一环境

宏设计视图

宏设计视图时创建宏的唯一环境。用户通过单击”创建“选项卡”宏与代码“组中的”宏“按钮,可以打开宏设计视图,同时打开“操作目录”面板

img

为了方便用户根据需要选择宏操作,Access用”操作目录”面板分类列出了所有宏操作命令。选择操作命令后,在该面板下半部分会显示相应的操作说明信息。双击“操作目录”面板中的某个命令,将会在设计视图中添加相应操作。单击“宏”工具中的“设计”选项卡的“显示/隐藏”面板中的“操作目录”按钮,可以显示和隐藏“操作目录”面板

宏命令通常有宏操作名称和操作参数组成,当选择或直接输入宏操作命令后,系统会自动展开并显示该命令的相关参数。如在“添加新操作”下拉列表中选择一个命令,或双击“操作目录”面板中的任意一个命令后,在宏操作名称下方显示的相关参数。

img

并且将光标指向各个参数时,系统会显示相应的说明信息。在操作名称前的“-”按钮用于折叠或展开参数部分,操作名称左边的“X”按钮用于删除该操作

img

操作参数控制操作执行的方式,不同的宏操作具有不同的操作参数。用户根据所需执行的操作对这些参数进行设置。

使用宏命令时,除了正确使用宏操作的名称外,还应该根据需要设置相应的参数

下面就通过各种示例介绍不同类型的宏的创建

创建操作序列宏

操作序列宏是最基本的宏,其操作命令的执行按它们排列的顺序依次完成。

例如:创建一个宏,其功能为先最小化所有窗口,然后打开任意一个窗体例如“学生信息窗体“。宏的名称就叫做”打开学生信息窗体“

(1)选择“创建”选项卡,“宏与代码”功能中的“宏”按钮,打开宏的设计视图

(2)在“添加新操作”的下拉列表中选择Minimize Window操作(将活动窗口缩小)

(3)在“添加新操作”的下拉列表中选择OpenForm操作命令,选择一个窗体

img

(4)保存宏,并取名为“打开学生表”

(5)单击“宏”工具中的“设计”选项卡,“工具”面板中的运行按钮,查看宏运行的结果

如果我们要添加条件也可以,查找出男生的所有学生记录,就需要在“当条件”一行输入条件,[字段名]=“内容”

img

Access宏提供了宏命令ExportWithFormatting(将指定的数据库对象以某种格式导出),其功能是把数据表、查询和报表等导出为各种格式的文件。尽管Access本身具有将数据表导出为Excel格式的功能,但使用宏可以自动化地完成该功能,并可以同时导出多个文件

例如:新建一个宏,将“学生”表导出为Excel文件,导出在桌面上,宏的名称为“导出学生信息Excel”

(1)点击“创建”选项卡,点击“宏“,打开宏的设计视图

(2)在下拉列表中选择ExportWithFormatting操作命令,设置参数,选择对象类型为”表“,选择一个表,输出格式选择”Excel“格式,输出文件的路径为桌面的路径,桌面的路径一般是”C:\Users\Administrator\Desktop“,路径后面要写导出出来的文件名,会自动创建文件,输出质量选择”打印“

img

(3)保存,运行宏,这时候桌面上就已经多出了一张excel表,为学生信息表

创建条件宏

某些情况下,希望仅当特点条件成立时才执行宏中的一个或多个操作,则可以为操作命令加上条件,形成条件宏。条件宏是指在宏中的某些操作带有条件,这些操作只有在条件满足时才能得以执行。

例如:新建一个宏,宏名称为”条件宏“,打开”学生成绩报告“报表,但是在打开报表前计算机先发出”嘟嘟声“,并提示用户准备好打印机,提示信息为”请放好打印纸、打开打印机“

(1)点击”创建“选项卡,点击”宏“,进入宏设计视图

(2)在下拉列表中选择”IF“操作,并在IF条件框中输入”MsgBox(“请放好打印纸,打开打印机!“,1)=1”,MsgBox是提示信息的意思,并且是有选择按钮的。括号里面的“1”代表着这个提示信息是有两个按钮的,如果不输入数字,就是默认的“0”,也就是提示信息只有一个按钮,如果输入“2”,代表着提示信息有3个按钮。=1是代表着提示信息的第一个按钮,这个条件也就是说,如果点了第一个按钮,就….

(3)在If与End If之间,添加操作Beep(嘟嘟声音)

(4)在Beep操作后继续添加操作OpenReport(打开报表),设置报表名称为“学生成绩报告”,视图为“打印”

img

我在上面的Else条件中又加了一个提示语,Message Box是消息提示,提示信息为“抱歉”,也就是说如果点击“取消”后,那么就提示“抱歉”

创建子宏

一个宏对象是Access中的一个容器对象,可以包含若干个子宏,而一个子宏又是由若干个操作组成。每个子宏按照子宏名来标记,他们都是独立的,互不相干。这样不仅减少了宏的个输,并且可以方便地对数据库中的宏进行分类管理和维护

例如:创建一个宏,名称为“打开表”,宏中包含两个子表,例如打开“学生表”和“成绩表”。并且每打开一个表,就弹出一个消息框,消息内容为“你现在打开的是某某某表”。为了提高可读性,可以添加相对于的注释

(1)单击“创建”选项卡“宏与代码”组中的“宏”,打开“宏”的设计视图

(2)在“操作目录”面板中,将“程序流程”中的子宏命令SubMacro拖到“添加新操作的列表框中。在子宏名称文本框中,将默认名称Sub1改为”打开学生表”,在“添加新操作”列表中选择OpenTable操作,在参数“表名称”中选择“学生表“。

img

在下一个”添加新操作“列表中选择MessageBox操作,在参数”消息“文本框中输入”你现在打开的是学生表“,在参数”标题“文本框中输入”打开表“,双击”操作目录“面板中的”程序流程“下的Comment命令,在弹出的文本框中输入”以上完成的是打开学生表操作“

img

(3)用同样的方法完成子宏”打开教师表“的设置

(4)保存宏,并运行

运行宏

当宏创建完成后,只有运行宏,才能执行宏操作。可以直接执行宏,也可以从其他宏或事件过程中运行宏,还可以将运行宏作为对窗体、报表、控件中发生的时间做出的响应。

直接运行宏

直接运行宏这种运行方式,一般只是用于对”宏“的测试,当测试完成后,还应将宏添加到窗体、菜单或工具栏中运行。直接运行宏的方法如下

(1)在宏设计视图中,单击”设计“选项卡的“工具”面板中的“运行”按钮,可以直接运行设计好的宏

(2)在导航窗格中双击宏名来运行宏

(3)在“数据库工具”选项卡的“宏”面板中单击“运行宏”按钮,打开“执行宏“的对话框,选择需要运行的宏

img

在其他宏中运行

如果需要从另一个宏中掉用宏,则需要在宏中添加RunMacro操作,在RunMacro操作的”宏名称“参数看中输入或选择要执行的宏

img

自动运行宏

Access数据库提供了一个专用的宏AutoExec,称为自动运行宏。如果数据库中有名为AutoExe 的宏,则可以打开数据库时自动运行该宏。因此如果用户想在打开数据库时自动执行某些操作,可以通过自动运行宏实现。可以把一个数据库应用系统的启动界面操作放在AutoExec宏中,这样每次打开该数据库时,会自动运行AutoExec宏,从未打开数据库应用系统的启动界面

img

在窗体、报表中运行宏

在Access中通常不采用单独执行宏的方式,而是通过一个出发事件执行宏,通常由窗体、报表及其控件的各种事件来出发宏操作

例如:创建一个名为”登录窗体“的窗体,窗体中包含一个密码格式的文本框,接受用户输入的密码;包含一个“登录”按钮,以便于掉用“密码验证”宏进行密码验证。“密码验证”宏的功能为,当用户输入密码为“123456”时关闭“登录窗体”,然后打开“学生成绩查询窗口”窗体;否则弹出内容“你输入的密码不正确”的消息框,然后将密码清空,等待用户重新输入密码。

(1)创建一个名称为“登录窗体”的窗体,使用文本框和按钮控件,并且将密码文本框铭铭为“mm”,方便调用,然后设置文本框的“输入掩码”属性设置为“密码”,这样就看不到输入的内容

img

(2)将标签名改为“请输入登录密码”

img

(3)创建条件宏“密码验证”。打开宏设计视图,从“添加新操作”下拉列表中选择If操作,在其后面的条件框中输入表达式,[Forms]![登录窗体]![mm]=”123456”,如果窗体中的密码控件的值为“123456”,那么久执行If里面的操作

(4)在If块下添加命令CloseWindow用以关闭当前窗体,在下一个“添加新操作”中选择命令“OpenForm”用以打开“学生成绩查询”窗体

img

(5)在“添加新操作”下拉列表框右侧单击“添加Else“按钮,在Else操作下的”添加新操作中“下拉列表中选择命令”MessageBox“,设置消息时”你输入的密码不正确“

(6)在MessageBox操作后,在添加一个”SetProperty“命令,这个命令可以更改文本框的值,我们控件名称输入”mm“,”属性设置为“值”,也就是更改值,然后在“值”一项什么也不输入,就说明将密码文本框的值设为空白

img

(7)添加GoToControl命令,“控件名称”参数设置为“mm”,这个命令的作用是将光标放在控件的文本框中,清空文本框后不需要手动去点击

(8)保存宏,然后回到“登录窗体”,添加一个“登录”按钮的控件,选择“杂项”并且运行“宏”,或者是点击登录按钮,点击属性表,在“事件”选项卡中选择一个宏

用宏设计应用系统菜单

在Access中可以用宏来制作应用系统菜单栏,并且菜单命令也是靠宏来运行的。使用宏创建菜单的操作步骤如下:

(1)为每个下拉菜单创建一个宏,下拉菜单中的命令对应该宏中的某个子宏所定义的操作集合,菜单中命令名为相应子宏的宏名

(2)通过AddMenu操作将所有下拉菜单组合到菜单栏中

(3)在窗体中添加菜单栏,通过窗体激活运行菜单系统

例如:创建下拉菜单宏

(1)创建一个学生菜单宏

​ 1、创建一个空白宏,选择“子宏”(Submacro),将子宏的名称输入为“学生基本信息查询”

​ 2、添加的操作选择“OpenForm”,打开一个学生信息查询的窗体

​ 3、再添加一个子宏,选择”成绩查询“的窗体

​ 4、新增一个分割线,便于把表和窗体分割,添加“Comment”,说明是分割线

​ 5、新增一个子宏,选择打开“学生信息”表,子宏的名称取名为“学生信息维护”,保存宏

img

(2)按照创建学生菜单宏的方式多创建几个宏,例如“教师管理下拉菜单“、”课程管理下拉菜单”

(3)下拉菜单创建好了之后,创建主菜单

​ 1、创建空白宏

​ 2、在添加新操作里面选择“AddMenu”,新建菜单

​ 3、在“菜单”名称中输入名称,例如“学生管理”、“教师管理“

​ 4、在“菜单宏名称”中选择对应的宏

​ 5、保存

img

(4)在窗体中添加下拉菜单

​ 1、新建一个窗体

​ 2、打开“属性表”

​ 3、对象选择“窗体”,然后在“其他”选项卡中的“快捷菜单栏“选择刚刚我们创建的主菜单宏

​ 4、保存,进入窗体视图

img

(5)查看效果

进入到窗体视图后,鼠标右击,就会显示刚刚创建的菜单

img

注意:如果在属性表中的“快捷菜单栏”未出现刚刚创建的菜单,那么就需要进行以下操作

(1)点击Access的选项,选择自定义功能区

img

(2)选择“不在功能区中的命令“,找到”用宏创建快捷菜单“,添加到数据库工具里

img

(3)可能会添加不成功,只需要新建一个组,添加就可以

img

(4)添加了之后,来到“数据库工具“选项卡,选择一个宏,点击“用宏创建快捷菜单”,就可以在窗体中的“快捷菜单“中找到菜单宏了

调试宏

在宏的运行过程中,如果发生了错误,或者无法打开相关的宏,此时就应该检查所设置的宏命令(包括操作参数)是否正确,然后再一步一步的反推,知道找出问题可能存在的位置,像这样循序反推,检查排错的过程,称为单步调试(Debug)。宏的这种调试技术与许多高级程序设计语言中提供的程序单步调试是类似的

宏的调试是创建宏后必须进行的一项工作,尤其是对于由多个操作组成的复杂宏,更是需要进行反复调试,观察宏的流程和每一个操作的结果,排除导致错误或产生非预期结果的操作

可以通过Access提供的“单步”执行的功能对宏进行调试。“单步”执行一次只运行宏的一个操作,这时可以观察宏的运行流程和运行结果,从而找到宏中的错误,并排除错误。对于独立宏可以直接在宏设计器中进行宏的调试,对于嵌入宏则要在嵌入的窗体或报表对象中进行调试。

一般的,调试宏的具体方法如下

(1)打开数据库,在导航窗格中,需要选择调试的宏,打开宏的设计视图

(2)在“宏工具|设计”选项卡“工具”组中单击“单步”按钮

(3)在“宏工具|设计”选项卡“工具”组中单击“运行”按钮,弹出一下“单步执行宏”的对话框(或者直接双击宏)

在该对话框中,显示了将要执行宏操作的相关信息,包括“宏名称“,”条件“,”操作名称”和“参数”4部分,同时对话框中的文字显示了将要执行的宏操作具体情况

img

(4)单击“单步执行宏“对话框中的”单步执行“按钮,将执行当前对话框中所显示的宏操作;单击”停止所有宏“按钮,将终止所有宏的运行,同时自动关闭”单步执行宏”对话框;单击“继续”按钮,将关闭“单步执行宏”对话框并退出单步执行模式,执行宏未完成的操作

如果宏的操作有误,Access将弹出“操作失败”对话框,这时可单击“停止所有宏”按钮终止宏的运行,修改完毕在重新运行

例如,直接双击打开“密码验证”的宏,因为没有打开密码输入的窗体,此时会出现操作失败

img

(5)根据需要,可以调试宏中每一个操作,直至完成整个宏的调试为止

本章小结

宏是数据库的对象之一。宏的功能强大,一条宏命令相当于一段程序,使用宏减少了编程给初学者带来的麻烦,并且有些操作必须要使用宏来实现

宏可以分为操作序列宏、条件宏和子宏三类。操作序列是由一个或多个宏操作组成的序列,运行宏时这些操作以此被执行。条件宏通过IF宏命令设置条件,可以有选择地执行某些操作。如果执行的条件成立,相应的操作将被执行;如果执行的条件不成立,该条件对应的操作被跳过。使用子宏是为了便于对相关宏进行管理和使用

创建宏要在宏设计视图中进行,为宏执行宏名,添加操作,设置操作参数等

宏通常由窗体、报表及其控件的各种事件来触发执行

思考题

1.什么是宏,它有什么作用?

2.宏设计视图由哪几部分组成

3.什么是子宏,它有什么特点

4.什么是条件宏,条件宏是如何运行的

5.如何为宏添加条件

6.运行宏的方法有哪几种

7.如何用宏控制窗体、报表、查询和设计菜单?

8.简述调试宏的一般过程