宏编程教学内容.docx

上传人:b****2 文档编号:1342943 上传时间:2022-10-21 格式:DOCX 页数:28 大小:910.77KB
下载 相关 举报
宏编程教学内容.docx_第1页
第1页 / 共28页
宏编程教学内容.docx_第2页
第2页 / 共28页
宏编程教学内容.docx_第3页
第3页 / 共28页
宏编程教学内容.docx_第4页
第4页 / 共28页
宏编程教学内容.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

宏编程教学内容.docx

《宏编程教学内容.docx》由会员分享,可在线阅读,更多相关《宏编程教学内容.docx(28页珍藏版)》请在冰豆网上搜索。

宏编程教学内容.docx

宏编程教学内容

 

宏编程

第8章宏

迄今为止我们已经学会直观地按步骤进行数据库操作。

我们平时的操作可归结为,用鼠标或键盘选择特定的数据库对象,从菜单选择该对象的某个操作,根据前一步操作后对象的变化选择下一操作,一步步达到目标。

久而久之,我们会形成一些习惯和套路,把它们记录下来就是宏程序——简称宏。

宏主要是对我们已经掌握的那些鼠标、键盘操作的记录和模仿。

8.1宏的概念

8.3.1宏指令与宏编程

宏指令系统是指由数十个指令构成的一种简单的编程中介语言。

用这种指令系统记录的操作步骤就是宏。

编制这样的简单程序叫做宏编程。

宏程序记录了一些操作套路或模式,将它们与对象(各种控件和数据)相联系,类似“傻瓜”相机把摄影专家的路数凝结为相机上几个按钮,一是内行可以省去重复之繁,二是外行可以省去学习之苦。

宏编程建立在深刻理解各种数据库对象和相关操作的基础之上,标志着高效、灵活使用数据库的新阶段。

与所有指令系统相似,一条宏指令通常由操作代码与操作参数组成。

与一般编程语言不同的是,宏程序以对话填表的方式产生,以表格的形式保存,所以容易学习记忆,不容易产生语法错误。

但我们一定要了解这些宏指令的分工和填表的详细要求,否则这种本来就简单的语言难以发挥功效。

少数宏可独立运行,但通常宏都由菜单、窗体、报表等控件的鼠标控制事件(进入、单击之类)或某些数据变化事件(改写、删除之类)触发启动——其他面向对象的高级语言程序也大致如此。

要掌握宏编程,必须熟悉一些常见的事件机制,分辨它们的微妙差异。

宏的操作参数和操作条件总与菜单、窗体、报表等控件或数据的状态变化相联系,这就产生了对它们怎样称呼的问题——术语叫作“对象引用”。

好在Access有一个很方便的“表达式生成器”,可通过它解决大多数的对象引用问题。

总而言之,宏编程就是把一些宏操作指令序列和特定的数据对象、控制对象联系起来,灵活地让Access在特定的时间,特定的地点,对特定的对象,实现特定的操作。

8.3.2宏与VisualBasic

宏程序依赖几十条指令,表现力受到局限。

Office提供了一种叫做VBA的VisualBasic方言,具备更强的表现力。

在VBA中宏指令都有其对应的形式。

事实上,宏指令系统是一种中介语言,宏指令都是翻译成VBA才得以执行的。

宏以表格的形式保存,以解释的方式转换为机器语言,所以安全性不太好,效率不太高。

Access提供了工具,必要时可将宏转换为VBA代码,一则源文件可以加密,二则当mdb文件编译为mde文件可提高执行效率。

8.2宏编程入门

8.3.3宏的初步设计

前面说到,宏一般都由控件触发,所以宏设计通常有3步:

控件准备,宏编程,触发设置。

以下以实例说明。

【例8-1】设计一个“打开表”窗体,上面有若干个按钮分别代表学生数据库的若干表,再自定义一个工具栏,上面有“打开表”按钮。

这样用户点击工具栏上按钮后就知道怎样访问他想操作的表了。

一控件准备

步骤1:

设计“打开表”窗体,该窗体上有三个命令按钮,如图8-1所示。

图8-1新建“打开表”窗体

步骤2:

新建工具栏test1:

单击“工具|自定义|新建”菜单命令,结果如图8-2所示。

图8-2新建工具栏test1

步骤3:

拖动窗体对象“打开表”到test1工具栏,如图8-3所示。

图8-3拖动窗体对象“打开表”到test1工具栏

二宏编程

步骤4:

3单击“操作”栏

在数据库窗口的对象栏“表、查询……页”之下,选择“宏”对象,按下“新建”按钮,自动产生暂名“宏1”的宏设计界面,点击“操作”栏即可打开宏指令的下拉菜单选择操作(如果用键盘输入宏指令的前一两个字母,可更快速地找到所需操作),如图8-4。

图8-4宏设计窗口

步骤5:

我们的设计目标是打开表,所以在第1行“操作”选择“Opentable”指令,下面的“操作参数”对话框将自动展开。

参数对话的目的是以填表的方式说明操作对象的名称以及操作方式等。

右边方框中的蓝色文字简单说明填表要求,更详尽的说明可按功能键F1得到。

本例我们只须填写“表名称”一格,选取“学生”表,其他遵从默认选择。

填表的方式多是从下拉菜单选取项目,有时需键盘直接输入。

现在一个简单的宏程序已经建立,将它保存为“打开学生”,如图8-5所示。

按下此按钮,选取表

图8-5使用Opentable指令建立“打开学生”宏

步骤6:

以相同方式建立宏“打开成绩”、“打开课程”,最后得到3个宏程序如图8-6所示。

图8-6建立的三个宏程序

三触发设置

步骤7:

点击自定义test1工具栏“打开表”按钮,情形如下。

任你单击、双击、右击窗体控件,除了按钮形状改变,什么事情也没发生。

这是因为当这些对象的鼠标事件发生时,系统检测它们的属性表,没有发现已经定义的操作与之相联系。

步骤8:

按下系统工具栏图标,进入窗体设计视图。

选中“学生”按钮,从右菜单选择“属性”(一般地,所有对象都可以先选中它们,再右击打开属性表)。

在属性表“事件”栏你会看到有这么多的事件“扳机”可以与程序关联。

你可以试着把宏程序“打开学生”挂在其中一个“扳机”上——点击表格右侧的下拉菜单按钮,选择“打开学生”宏即可,如图8-7所示。

运行后你会发现,对于命令按钮控件,有几个“扳机”挂上程序效果相似:

“单击”/“鼠标按下”/“鼠标释放”。

原因很简单,“单击”可以分解为“鼠标按下”+“鼠标释放”。

图8-7为命令按钮的“单击”事件指定宏

步骤9:

设置完其他按钮的相关事件触发程序,按下系统工具栏原位置的图标,运行效果如图8-8所示。

关闭保存窗体“打开表”,设计完成。

图8-8运行“打开表”窗体——按下“学生”按钮

8.3.4宏组的使用

一个实用的数据库应用系统涉及很多表、查询、窗体、报表等对象,要把用户所需要的功能以“傻瓜”相机的方式提供出来,需要许多宏程序。

如果每个宏都独立成一个“准文件”(形式上整个mdb数据库才构成1个文件),最后我们会眼花缭乱,很难统一维护管理。

所以Access提供了宏组这样一种形式,以便把同一应用涉及的一系列相关宏放在一个功能类似文件夹的“准文件”中。

对<某宏>的引用现在改为<宏组名>.<某宏>。

【例8-2】改进【例8-1】“打开表”窗体,上面有更多按钮分别代表学生数据库的若干表,再增加一个关闭窗体的按钮,如图8-9所示。

要求把该应用所涉及的宏统一放在宏组“打开表”中

图8-9增加了4个命令按钮的“打开表”窗体

步骤1:

修改窗体,增加“课程表”、“教师”和“教室”3个命令按钮(可利用原来3个按钮复制粘贴后修改)。

步骤2:

删除原有宏,新建名为“打开表”的宏组如下图。

注意“打开表”左边多了“宏名”一列,鼠标右键单击宏设计窗口深色标题栏,即可在快捷菜单中打开/关闭此列。

“打开表”宏组由7个宏构成,如图8-10所示。

“打开表”宏组由7个宏组成

图8-10创建“打开表”宏组

步骤3:

重新设置窗体“打开表”各控件的事件属性。

注意原来按钮“学生”单击事件引用的宏名为“打开学生”,现在改为“打开表.打开学生”,意为检测到单击事件时,执行宏组“打开表”中宏名为“打开学生”的宏程序,如图8-11所示。

照例设置其他按钮。

现在可以再运行。

图8-11为窗体的各命令按钮的“单击”事件指定宏组中的宏

8.3.5带条件的宏

有些指令序列是否执行要看某条件表达式当时是否取真值。

这样的程序结构通常叫分支结构。

一般程序语言都有顺序、分支、循环三种结构。

宏程序的分支通常由<条件>、<…>、StopMacro结构实现。

程序代码的重复(循环)使用,必要时由带条件的RunMacro指令引用一个子程序宏实现。

宏指令系统的分支、循环结构不发达,所以尤其要研究条件宏的特殊表达方式,以提高宏程序的表现力。

在Access中,运行宏或宏组时可以设置某些限定的条件,使得宏或宏组在特定条件下触发。

【例8-3】建立“密码验证”窗体,并为它编一个最简单的验证程序,程序逻辑是:

如果密码输入正确,关闭验证窗体,否则显示信息“密码错误”,继续输入密码。

一控件准备

步骤1:

设计窗体如图8-12所示。

注意文本框和按钮的名称为[密码]、[确认],下面的宏引用要与此一致。

(调试完程序后,[密码]文本框要设置密码型掩码,以防输入时被人窥视)

图8-12设计“密码验证”窗体

二宏编程

步骤2:

在数据库窗口的对象栏选择“宏”,按下“新建”按钮,自动产生暂名“宏1”的宏设计界面(注意:

左边除了“宏名”列,还有“条件”列。

鼠标右键单击宏设计窗口深色标题栏,即可在快捷菜单中打开/关闭此列,如图8-13所示。

步骤3:

输入第1行,其意思是当表达式“[密码]="007"”取真值(“Yes”)就关闭当前窗口。

(Close指令如不填写对象类型,对象就是窗口,不填写对象名称,对象就是当前窗口)。

图8-13建立带条件的“密码”宏

步骤4:

输入第2、3行,如图8-14所示。

第2行条件中的“…”表示条件同上,意思是当“[密码]="007"”,执行完第1句接着执行本句——StopMacro指令表示本分支结束,中断其他指令。

只有前2句条件列取值为假(“No”:

前两句不执行),第3句代表的另一分支才有机会执行——MsBox指令表示显示信息窗口,“消息”参数填写显示内容“密码错误”,其他参数都是可选项。

这样3句话构成2个分支,要么执行1、2(密码正确)句,要么执行3句(密码错误)。

这里StopMacro中断指令很关键,关闭该句(把“…”改为“No”),程序逻辑将改为:

如果条件为真执行1、3句,否则执行3句。

现在编程完毕,保存为“密码”宏。

图8-14完成的“密码”宏

三触发设置

步骤5:

设置“确认”按钮的“单击”事件,如图8-15所示:

图8-15设置“确认”按钮的“单击”事件

步骤6:

试运行效果如图8-16所示。

图8-16[密码]填写错误时的运行结果

【例8-4】建立一完整的密码管理窗体,如图8-17所示,该窗体的记录源为个人密码表,结构为——_密码表(学号,姓名,班级,口令)。

可以在工具|启动界面设置它为启动后自动打开,以保证某数据库(如个人作业)安全。

拥有密码者有权更改密码。

管理员(如布置作业的老师)有最高密码(此处为“007”)。

图8-17完成后的密码管理窗体

一控件准备

设计“密码管理”窗体如图8-18所示。

窗体记录源:

[密码表].[口令]。

窗体上有一未绑定文本框[计数器](可见性:

否,默认值:

1)。

其他3个文本框为:

[密码]、[新密码]、[重复]。

图8-18完整的密码管理窗体设计视图

二宏编程:

“密码管理”

图8-19“密码管理”宏组的设计

在图8-19中,验证、修改、出错3个宏之间的空行完全是为了可读性,系统并不需要空行分隔各宏,遇到下一宏名自然知道前一个宏已经结束。

StopAllMacros可中断并跳出嵌套宏,在没有嵌套时,作用等同StopMacro。

(提示:

StopMacro/StopAllMacros还可用于调试程序时设置断点)

为了不重复,将“验证”、“修改”都使用的代码独立编为“出错”子程序宏,使用这段代码时运用RunMacro(参数:

宏名)指令。

(提示:

必要时运用带<条件>的RunMacro可实现程序的有条件循环)

[密码]in([口令],”007”)——xIn(元素1,元素2……元素n)是一种集合表达方式,表示x属于该集合,集合成员间是“或”关系。

[字段名]加方括弧是引用对象名的规范,作用是防止与字符串常量(如“口令”)混淆。

(提示:

x NotIn(元素1,元素2……元素n)则表示x不属于该集合)

这里出错信息采用了复杂字符串表达式:

“="超过三次错误将退出ACC

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1