1、第5章 宏,什么是宏,“宏”是Access中的对象,宏可以在不编写任何代码的情况下,实现一些编程功能。通过宏,用户可方便快捷地操作Access数据库,自动化地执行重复的任务。“宏”包括独立宏、子宏、条件宏、嵌入宏和数据宏。,实例1 自动连续执行操作使用宏设计器创建宏,操作要求: 创建一个独立宏,当其运行时:(1)弹出“欢迎使用中医诊断门诊系统”消息框。(2)打开“功能选择”窗体。,知识点:宏的概念 宏是Access的对象之一,是一个或多个操作命令的集合,其中的每个操作具有特定的功能,由Access提供,且能自动执行。 在Access中表、查询、窗体、报表这四个对象,各自具有强大的数据处理功能,
2、能独立地完成数据库中的特定任务,使用宏可以把这些对象有机地整合起来,协调一致地完成特定的任务。,实例1 自动连续执行操作使用宏设计器创建宏,知识点:宏设计器:Access 2010使用宏设计器创建和编辑宏,Access2010重新设计了宏设计器。与前期版本相比,宏设计器十分类似于VBA事件过程的开发界面,具有智能感知功能。,实例1 自动连续执行操作使用宏设计器创建宏,“宏”窗格中包含“添加新操作”的下拉列表。“操作目录”窗格由“程序流程”、“操作”和“在此数据库中”三部分组成,其中“操作”部分把宏操作按性质分为8组,共66个操作命令,将鼠标指向命令,则可显示该命令功能。“操作目录”窗格上部的“
3、程序流程”部分包括能够组织宏、更改宏操作执行次序的块列表:注释、组、条件、子宏块。“操作目录”窗格下部的“在此数据库中”列出了当前数据库中的所有宏以及其存附对象(窗体、报表)的列表,以便管理,知识点:宏操作的参数 宏操作是宏中调用的命令,大多数宏操作都至少需要一个参数,如OpenForm,有的宏没有参数,如Beep。参数是一个值,它向宏操作提供信息,比如要在消息框中显示的字符串、要操作的对象名称等。 参数值分为必填项和非必填项,设置的方法主要有:采用默认值、输入数据、在下拉列表选择、使用表达式生成器生成、从导航窗格拖动对象使其自动设置参数等,其中键入表达式时软件将提示可能的值,从而帮助更加准确
4、地输入表达式,可双击该值进行添加。,实例1 自动连续执行操作使用宏设计器创建宏,知识点:常用宏操作(见书168页表5-2)独立宏 独立宏以对象的形式存在,即在导航窗格中“宏”下面看到的对象。它对立于窗体、报表等对象之外,通过宏对象名称可以引用该宏。 独立宏既可独立运行也可在多个位置被重复调用。如果在应用程序的很多位置重复使用宏,则独立的宏是非常有用的,可以避免在多个位置重复相同的代码。,实例1 自动连续执行操作使用宏设计器创建宏,知识点:AutoExec 如果需要在打开数据库时自动运行宏,需将独立宏的名称改为:AutoExec。若禁止该宏自动运行,则需在打开数据库时按住Shift键。,实例1
5、自动连续执行操作使用宏设计器创建宏,实例2 在“员工信息管理系统”窗体上实现记录导航子宏的创建和调用,操作要求: 创建一个宏,并以子宏的形式实现如下窗体中按钮的功能:,知识点:子宏 在宏中由Submacro创建,可包含一组操作。一个宏中包含多个子宏,有助于更方便地管理。子宏必须定义自己的名字,以便分别调用。包含子宏的宏也称为宏组。 子宏的调用形式为:宏名.子宏名。,实例2 在“员工信息管理系统”窗体上实现记录导航子宏的创建和调用,知识点:宏操作的编辑 (1)宏操作的复制:可以复制和粘贴现有操作。粘贴操作时,这些操作将会插入到当前选定的操作之下;如果选择了某个块,则这些操作将会粘贴到该块的内部。
6、如果使用当前数据库中的宏中的操作,可以在“目录窗格”的“在此数据库中”组中,右击宏名,使用“添加宏副本”命令,可将该宏中的操作添加到“宏”窗格。(2)子宏快的建立:除使用Submacro建立子宏块之外,还可以复制已建立的子宏块;也可以:选择宏操作右击生成子宏程序块,生成子宏块。,实例2 在“员工信息管理系统”窗体上实现记录导航子宏的创建和调用,宏组子宏实例:,实例2 在“员工信息管理系统”窗体上实现记录导航子宏的创建和调用,为“患者管理”窗体添加快捷查找菜单。,实例3 用户界面事件运行独立宏,当“患者ID”文本框获得焦点时,前景色自动变为红色,背景色自动变为黄色。当失去焦点时,前景色自动变为黑
7、色,背景色自动变白色黄色。同样的效果也用于“选择科室”组合框中。,知识点:事件 事件是指对象所能辨识或检测的动作,当动作发生于某一个对象时,其相对的事件便会被触发,如单击鼠标、打开窗体、打印报表、数据的更改或记录的添加等。事件被触发后执行的内容,可以是宏或事件过程。,实例3 用户界面事件运行独立宏,知识点:常用的窗体、报表事件,实例3 用户界面事件运行独立宏,知识点:用户界面对象的事件以属性的方式存在于窗体、报表、控件中,以窗体为例,窗体的“属性表”窗格的“事件”选项卡列出了其能够响应的事件属性。,实例3 用户界面事件运行独立宏,知识点:利用“事件”选项卡将已存在的宏指定到窗体、报表或控件的事
8、件属性上,通过事件调用是独立宏的一种运行方式。,实例3 用户界面事件运行独立宏,实例4 登录验证条件宏,功能要求:1、打开数据库,跳出登录界面2、进行用户名、密码以及身份比对3、用户名、密码正确后,用“登录”按钮登陆到“功能选择”窗口。否则将弹出用户名或密码输入错误的提示信息4、“退出”按钮将退出Access应用程序,利用父母身高进行预测: 公式:男孩成人时身高()(父亲身高母亲身高)1.08/2女孩成人时身高()(父亲身高0.923母亲身高)/2,实例4 登录验证条件宏,知识点:通常宏是按顺序从第一个宏操作依次往下执行,但在某些情况下,要求宏能按照给定的条件进行判断来决定是否执行某些操作。条
9、件是一个计算结果为True/False的表达式,使用If操作通过设置条件来控制宏的流程,使宏具有逻辑判断能力。条件为真时执行If块的操作序列,条件为假时执行Else块的操作序列,Else块是可选项。可以使用Else和Else If块来扩展If块;If块中还可以嵌套If块。,实例4 登录验证条件宏,用户名:1101密 码:0000,用到的宏操作:MessageboxGoToControlCloseWindowOpenForm,实例4 登录验证登录验证宏(用户名和密码验证),实例4 登录验证登录验证宏(用户名和密码验证),用户名:医生ID密 码:Tbl密码表中对应医生的密码,用到的宏操作:Mess
10、ageboxGoToControlCloseWindowOpenForm,DLookup(表达式,记录集,条件式)“表达式”用于标识需要返回其值的检索字段;“记录集”是一个字符串表达式,可以是表的名称或查询的名称“条件式”是可选的字符串表达式,用于限制函数的检索范围DLookUp(“医生ID”,“Tbl密码”,“医生ID= Forms!登录界面!用户名) Is NullDLookUp(“密码”,“Tbl密码”,“医生ID= Forms!登录界面!用户名) Forms!登录界面!密码,记录集,条件式,表达式,每次登录时在“Tbl登录日志”表中加入登录信息。,用到的宏操作:SetWarningsO
11、penQuery,“登录记录追加查询”完成的功能是每次登录时在“Tbl登录日志”表中追加新的登录数据,包括“登录ID”、“医生ID”、“登录时间”,实例4 登录验证登录验证宏(登录信息保存),实例4 登录验证功能选择宏(注销信息保存),当单击“用户注销”按钮后,会运行“注销登录记录更新查询”,把注销时间填入“Tbl登录日志”表中“注销时间”字段为空的记录中。并关闭“功能选择”窗体,返回“登录验证”窗体,实例4 登录验证当前登录宏(登录信息显示),登录后当打开功能窗体时,窗体的标题显示为:“当前登录:医生姓名”的形式,“当前登录查询”完成的功能是查找当前正在使用系统的用户。将“Tbl登录日志”表
12、中“注销时间”字段为空的登录记录认为是当前正在使用系统的用户。将“当前登录宏”与每个窗体的“打开”事件相关联。,实例4 登录验证登录验证宏(权限设置),“管理员”可以使用所有按钮功能,可以查看所有员工信息,所有患者信息,所有药品信息,和使用挂号系统。诊治系统中只能看到当前挂自己号的病人。“操作员”可以使用除“患者系统”外的所有按钮功能,但只可以查看本人的员工信息,所有药品信息,和使用挂号系统。诊治系统中只能看到当前挂自己号的病人。“医生”可以使用“患者系统”、“诊治系统”和“用户注销”按钮功能,但只可以查看本人的员工信息,诊治系统中只能看到当前挂自己号的病人。,实例4 登录验证登录验证宏(权限
13、设置),每位登录的医生只能在“员工系统”中看到本人的基本信息。可在打开“员工管理”窗体时加入如下条件:,实例4 登录验证其他窗体设置,窗体属性设置:将“边框样式”属性设置为“无”将“弹出方式”和“模式”属性设置为“是”,窗体属性设置:将“边框样式”属性设置为“对话框边框”将“关闭按钮”属性设置为“否”将“弹出方式”和“模式”属性设置为“是”,实例4 登录验证数据库设置选项,实例5 弹出药品详细信息嵌入宏,创建嵌入宏,当选择某味中药时,自动弹出介绍该药品详细信息的窗体。,控件的“更改”事件:组合框、文本框或选项卡控件中的数据发生更改时执行的宏或函数。,知识点:“嵌入的宏”:也称“嵌入宏”,是嵌入
14、在对象的事件属性中的宏。嵌入宏存储在窗体、报表或控件的事件属性中,使宏作为一个事件属性直接附加在对象上,不作为对象显示在导航窗格中,是所嵌入的对象的一部份,只能被所附加的事件调用。嵌入宏使数据库更易于管理,在每次复制、导入或导出窗体或报表时,嵌入的宏像其他属性一样随附于对象中。嵌入宏的运行:响应窗体、报表或控件中发生的事件运行;在宏的设计视图,单击运行按钮运行。,实例5 弹出药品详细信息嵌入宏,实例6 密码被改变后的反馈事件驱动的数据宏,为“Tbl密码”表创建“更新后”事件的数据宏,当在表中修改密码后,使用数据宏将“提示”字段的值自动更改为“密码已更新”。,知识点:数据宏是Access 201
15、0中新增的功能,其中一种是由表事件触发的数据宏,称为“事件驱动的数据宏”,本实例介绍的数据宏就属此类。事件驱动的数据宏允许在表事件(如插入、更新或删除数据等)中运行宏操作。每当在表中添加、更新或删除数据时,都会发生事件。数据宏是在发生这三种事件中的任何一种事件之后,或发生删除或更改之前运行的。数据宏是一种触发器,可以用来实现检查数据表中输入的数据是否合理。另外,数据宏可以实现插入记录、修改记录和删除记录,从而对数据进行更新。Updated(“Field Name”)函数用来判断某个字段是否已更改;使用“旧.Field Name”可访问字段中更改前或删除前的值。,实例6 密码被改变后的反馈事件驱
16、动的数据宏,实例6 密码被改变后的反馈事件驱动的数据宏,实例6 密码被改变后的反馈事件驱动的数据宏,在登录时,如果发现用户的密码是初始密码,则弹出提示对话框,并要求用户修改密码。,实例7 查看宏的运行流程宏的单步调试,操作要求: 调试“登录验证宏”,知识点:宏的调试是创建宏后必须进行的一项工作,尤其是对于由多个操作组成的复杂宏更是需要反复进行调试,以观察宏的流程和每一个操作结果,以排除导致错误或产生非预期结果的操作,调试无误后就可以运行宏了。宏的调试方法:通过Access提供的“单步”执行功能对宏进行调试,“单步”执行一次只运行宏的一个操作。在宏的设计视图设置“单步执行”方式,之后运行宏。,实
17、例7 查看宏的运行流程宏的单步调试,总结,Access 2010宏的分类:按照宏所附加的对象不同分为:用户界面宏和数据宏。用户界面宏中按宏存在的方式不同又可分为:独立宏和嵌入宏。组成宏的操作命令序列可以依次按顺序执行,也可以按条件分情况执行,因此可将其分为操作序列宏和条件宏。宏组是便于管理多个宏的一种方式。宏的运行:直接运行通过响应窗体、报表或控件的事件运行(运行子宏:宏名.子宏名)在另一个宏中通过“RunMacro”操作命令调用,总结,常用宏操作:数据库对象:OpenForm、OpenQuery、CloseWindows、GotoControl宏命令:RunMacro、OnError设置值:SetProperty、SetValue查找数据或定位记录:GotoRecord窗口管理:MaximizeWindow、minimizeWindow、RestoreWindow系统和用户界面命令:MessageBox、QuitAccesss、Setwarnings程序流程:If、Submacro数据宏:LookupRecord、SetField、EditRecord,