热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Access宏学习总结

详细了解access中的宏什么是宏到底什么是宏呢?我们把那些能自动执行某种操作的命令统称为“宏”。宏也是一种操作命令,它和菜单操作命令都是一样的,只是它们对数据
详细了解access中的宏

什么是宏
  到底什么是宏呢? 我们把那些能自动执行某种操作的命令统称为“宏”。
  宏也是一种操作命令,它和菜单操作命令都是一样的,只是它们对数据库施加作用的时间有所不同,作用时的条件也有所不同。菜单命


令一般用在数据库的设计过程中,而宏命令则用在数据库的执行过程中。菜单命令必须由使用者来施加这个操作,而宏命令则可以在数据库


中自动执行。
  在ACCESS中,一共有五十三种基本宏操作,这些基本操作还可以组合成很多其他的“宏组”操作。在使用中,我们很少单独使用这个


或那个基本宏命令,常常是将这些命令排成一组,按照顺序执行,以完成一种特定任务。这些命令可以通过窗体中控件的某个事件操作来实


现,或在数据库的运行过程中自动来实现。
  事件操作即像“单击”按钮、“双击”列表选项这些行为都是对控件的事件操作。所以我们常常会听到别人说“单击‘某某’按钮执行


‘某某宏命令’”,就是这个意思。
  
插图
为什么要用宏
  先看个例子,有这样一个窗体,上面有一个数据表。现在在这个数据表中添加一个功能,用一个文本框输入要查询的内容,而用一个“


查询”按钮来完成查询的工作,并将查询后的数据打印在报表上。
  在窗体那一课里讲的命令按钮向导就能实现这个功能,但对于每个控件来说,要实现相应的功能光凭借向导是远远不够的。
  要让这些控件实现一定的功用,在ACCESS中有四种办法。当然最简单的就是使用控件向导了,除此之外还


有“宏”、“VBA”和“SQL语言”,使用这些方法可以使控件完成几乎所有的数据库操作。而这其中,向导最简单,但实现的功能有限,


而宏虽然只有53种基本操作,但可以组合成很多种宏组命令,这样就能实现很多ACCESS中有关窗体、报表、查询的功能,使用起来也非常


方便。而VBA和SQL语言相对起来对用户的要求也要高一些,当然VBA和SQL语言可以实现的功能也更加全面,自主性也更强,但它们都要


写程序。对于很多普通的用户,他们不要求会得太多,只要能完成手上的工作就可以了,所以这时使用宏就是他们最好的选择了。
  使用宏非常方便,不需要记住各种语法,也不需要编程,只需利用几个简单宏操作就可以对数据库完成一系列的操作,中间过程完全是


自动的。
  
插图
查看宏设计窗口
  磨刀不误砍柴功,要学会使用宏,我们先来看看宏的设计窗口吧。
  将鼠标移动到数据库窗口中的宏对象上,单击左键,就切换到“宏”对象上了,现在的所有操作都是针对宏的了。在这个窗口右侧的“


创建方法和已有对象列表”列表栏中什么都没有,这是因为宏的创建方法非常简单,也很单一,所以既不需要有什么“宏向导”,也不必有


很多的视图,在宏的创建过程中只有一个设计窗口。这个设计窗口非常简单,现在我们将鼠标移动到数据库窗口的“新建”菜单上,单击鼠


标左键,就会在屏幕上弹出宏设计窗口,如下图所示。在这个窗口中就可以设计宏了。
宏设计窗口
  在宏的设计窗口中,“操作”下面的那一列就是宏所能执行的各种操作,在ACCESS2000中,一共有五十三种基本操作,这些操作我们


可以通过单击这列中任何一个值弹出的下拉选单中来选择,而“备注”下面的那一列中可以输入执行这种操作时的备注。
  在宏设计器中,还有两个列的内容是可选的,这就是“宏名”和“条件”字段,现在将鼠标移动到工具栏上,单击“宏名”按钮“宏名


”按钮,就会发现在宏设计器上出现了一个“宏名”列,并且这个“宏名”按钮也凹陷下去,同样单击工具栏上的“条件”按钮“条件”按


钮,在设计器上就会再出现一个“条件”列。这时的“条件”按钮处于凹陷状态。此时的宏的设计窗口如下图所示。
添加后的宏设计窗口
  宏名这一列就是用来定义一个或一组宏操作的名字,以后要执行这个宏操作时,只要直接运行就可以了。如果我们想在宏执行某个操作


之前,对宏是否能执行进行一些限制,就需要在条件这一列中输入相应的条件表达式,这样可以实现在宏执行之前先判断条件是否满足,如


果满足则执行这个宏,如果不满足,则不能执行这个宏。
  
创建宏
  讲了宏的设计窗口,现在该亲手来创建一个宏了。首先我们要打开一个数据库,单击数据库窗口选项卡上的“宏”对象,然后单击数据


库窗口上的“新建”选项。这时就弹出了宏设计器窗口。
  因为这“宏名”和“条件”两列并不是宏设计窗口上的默认选项,没有这两列,如果要用到这两个选项,就需要单击工具栏上的这两个


选项。现在这两列都出现在窗口上了。这时我们就可以先为这个宏取个宏名,就叫“查询”吧,然后我们将鼠标移动到操作这一列的第一行


中,左键单击下拉框右面的“向下”按钮,这时就会弹出一个下拉菜单,在这个菜单上选择所需的操作命令,然后单击这个选项,那这个操


作就会出现在这个下拉框中了。现在我们要执行一个叫“Gotocontrol”宏命令,那么就在这个下拉框中选中这个操作命令,如下图所示。
选择宏命令
  在选择了基本宏操作后,我们还要在宏设计窗口下部的操作参数“控件名称”中输入此操作需要的参数,为了确定操作对象的焦点,我


们在这个位置输入“姓名”,这样当我们执行这个宏的时候窗口上的焦点就会移动到“姓名”这个字段上来了。基本上每个操作都有操作参


数,有的多一些,有的少一些,有的是必须填写的,有的则可以取默认的值。只有设置好参数的宏操作才是合法的。不然ACCESS就不会接


受。
  刚才我们所做的只是这个宏的第一个操作,将查询的焦点移到“姓名”这个字段上,下一步我们要再加一个操作去找到“姓名”这个字


段中的相应记录。要实现这些,就将鼠标移动到表格的第二行,然后在操作这一个格选取“FINDRECORD”,现在我们来设定操作参数,


参数“查找内容”这一栏中,我们输入“=[需要查询的值].value”,这个“需要查询的值”是窗体上一个专门用来输入查询值的文本框的名


字,而“匹配”这一栏中选择“整个字段”,“格式化搜索”选“是”,其他的几个参数都可以取默认,将这些选好以后。“查询”宏就建


好了。当然别忘了保存整个宏啊。
了解宏包含的操作
  虽然建好了整个宏,但这些操作之间是如何执行的?
  其实这很简单,我们再看一个例子,如下图所示。
实例窗体
  在这个例子当中,有三个宏名,这三个宏可以成为一个宏组。如果我们执行整个宏组,这些宏将会按照从上到下的顺序执行,相应的操


作也都会从上到下执行,如果我们只是执行这个宏组中的某个宏,那么在执行过程当中,只有这个宏的各个操作会按照从上到下的方向一一


执行,而其他宏的操作就不会执行。
  如果宏一的第一个操作条件不满足后,宏一的其他几个操作仍然要执行,在宏的设计表格中,每行的“条件”字段只是对同一行的“操


作”字段有约束力,而对其他的操作则不起条件约束作用了。
执行宏
  在ACCESS中,宏并不能单独执行,必须有一个触发器。而这个触发器通常是由窗体、页及其上面的控件的各种事件来担任的。比如在


窗体上单击一个按钮,这个单击过程就可以触发一个宏的操作。
  现在建立一个窗体。用一个按钮单击事件来触发我们刚才新建的宏“查询”。首先将表“员工简历”上的“姓名”等字段显示在这个窗


体上,然后在这个窗体上再添加一个文本框,用这个文本框来输入要查询的员工姓名,注意还要将这个文本框的名字改为“需要查询的值”


,完成之后在窗体上添加一个按钮,并把它的名字改为“查询”。添加好以后就可以在这个按钮的属性上设置宏“查询”的触发事件了。
  首先我们选中这个按钮,然后打开这个按钮的属性,如下图所示。
命令按钮属性框
  在属性选项卡上选择“事件”选项,然后将鼠标移动到“单击”选项右边的方框内,单击鼠标左键,这时在这个方框右侧会出现一个“


向下”按钮,单击这个按钮,在弹出的下拉选单中单击“宏1.查询”项,这样可以了。以后当这个窗体以数据表视图出现的时候,单击这个


按钮就可以执行我们刚才建立的宏了。
  现在我们将视图切换到窗体的数据表视图。我们可以通过单击记录选定器上的不同按钮移动到不同的员工记录上去,现在我们将我们需


要查询的员工姓名输入到文本框“需要查询的值”中去,输入完以后,单击“查询”按钮,现在员工记录已经跳到我们刚才所输入的那个员


工位置上去了。 
========
Access常用宏操作简介

1.AddMenu:用于将菜单添加到自定义的菜单栏上,菜单栏中每个菜单都需要一个独立的AddMenu操作。
菜单栏名称:输入菜单项的名称。
菜单宏名字:选定菜单命令所执行的宏。
状态栏名称:用户选择菜单时状态栏的提示信息。
2.ApplyFilter:用于筛选窗体或报表中的记录。
筛选名称:查询的名称。
Where条件:有关限制条件。
3.Beep:用于产生铃声。
4.CancelEvent:取消当前事件。
5.Close:关闭指定窗口。
对象类型:如表、窗体等。如果为空则关闭激活窗口。
对象名称:要关闭的对象名称。
保存:关闭窗口时,是否对打开对象进行保存。
6.CopyObject:将数据库对象复制到目标数据库中。
目标数据库:目标数据库的有效路径和文件名称。
源对象类型:要复制的对象类型。如表、窗体等。
源对象名称:要复制的对象名称。
新名称对象的新名称:在将对象复制到不同的数据库时,如果将此参数留空,可使对象保留原来的名称不变。
7.DeleteObject:删除指定对象。
   对象类型:要删除对象的类型。如表、窗体等。
   对象名称:要删除对象的名称。
8.Echo:可以指定是否打开回响(回响:运行宏时Access更新或重画屏幕的过程。)例如:可以使用该操作在宏运行时隐藏或显示运行结


果。
   打开回响:选择“否”表示宏执行过程中不显示执行结果,直接运行结束后才显示。
   状态栏文字:关闭回响时状态栏显示的信息。
9.FindNext:查找下一个符合查询条件的记录。
10.FindRecord:查找符合FindRecord参数指定条件的数据库的第一个实例。
   查找内容:指定要在记录中查找的数据。
   匹配:指定数据在字段中所在的位置。
   区分大小写:指定该搜索是否区分大小写。
   搜索:指定查找的范围。
   格式化搜索:指定搜索中是否包含带格式的数据。
   只搜索当前字段:指定是在每个记录的当前字段中进行搜索还是在每个记录的所有字段中进行搜索。
   查找第一个:指定是从第一个记录还是从当前记录开始搜索。
11.GotControl:用于将焦点转移到指定对象。
   控件名称:接受焦点的字段或控件的名称。
12.GotoPage:将焦点转移到窗体中指定的页。
   页码:要将焦点移动到的页的页码。
   右:此页左上角边缘的水平位置,从页所在窗口的左边缘开始算起。
   下:此页左上角的垂直位置,从页所在窗口的上边缘开始算起。
13.GotoRecord:使打开着的表、窗体或查询结果集中的指定记录变成当前记录。
   对象类型:包含要作为当前记录的对象类型。
   对象名称:包含要作为当前记录的对象名称。
   记录:要作为当前记录的记录。
   偏移量:整型数或结果为整型的表达式。表达式前必须有等号(=)。该参数指定要用作当前记录的记录。
14.HourGlass:使用Hourglass操作可以使鼠标指针在宏执行时变成沙漏图像(或其他所选图标)。该操作可在视觉上表明宏正在执行。
   显示沙漏:默认为“是”。
15.Maximize:用于最大化活动窗口。
16.Minimize:用于最小化活动窗口。
17.MoveSize:可以移动活动窗口或调整其大小。
18.MsgBox:显示包含警告信息或提示的消息框。
19.OpenForm:打开指定的窗体。
20.Where条件:如果用“筛选名称”参数选择筛选,那么Access将这个Where子句应用于筛选的结果。
  数据模式:体的数据输入模式。
    添加:可以添加新的记录,但不能编辑已有的记录。
    编辑:用户可以编辑已有的记录,也可以添加记录。
    只读:用户只能查看记录。
  窗口模式:打开窗体的窗口模式。
21.OpenQuery:打开指定的查询。
   查询名称:要打开的查询名称。
   视图:打开查询的视图。如“数据表”、“设计”、“打印预览”等。
   数据模式:查询的数据输入模式。可选择“添加”、“编辑”或“只读”。
22.OpenReport:打开指定的报表。
23.OpenTable:打开指定的表。
数据模式:查询的数据输入模式。可选“添加”、“编辑”或“只读”。
24.OutputTo:将指定的Access数据库对象(数据表、窗体、报表、模块、数据访问页)中的数据输出若干种输出格式。
25.PrinOut:打印打开的数据库中的活动对象。
26.Quit:退出Access。
27.Rename:重命名一个指定的数据库对象。
28.RepaintObject:完成指定数据库对象挂起屏幕更新。如果没有指定数据库对象,则会对活动数据库对象进行屏幕更新。
29.Requery:通过重新查询控件的数据源来更新活动对象指定控件中的数据。
30.Restore:将已最大化或最小化的窗口恢复为原来的大小。
31.RunApp:运行一个指定的应用程序。
32.RunCode:调用VB的Function过程。
33.RunCommand:可以运行Access的内置命令。内置命令可以出现在Access菜单栏、工具栏或快捷菜单上。
34.RunMacro:用于执行宏。该宏可以在宏组中。
35.RunSQL:通过使用相应的SQL语句,可以用RunSQL操作来运行Access的操作查询。
   SQL语句:所要运行的操作查询或数据定义查询对应的SQL语句。
   使用事务处理:选择“是”则在事务处理中包含此查询。
36.SelectObject:选择指定的数据库对象。
37.SendKeys:将键击直接发送到Access或活动的Windows应用程序中。
   键击:指要Access或其他应用程序处理的键击。
等待:指定宏是否要暂停运行,直到处理完键击才运行。
38.SendObject:将对象作为电子邮件发给收件人。
39.SetMenultem:设置活动窗口的自定义菜单栏或全局菜单栏上的菜单项状态(启用或禁用,选取或不选取)。
40.SetValue:设置Access窗体、窗体数据表或报表上的字段、控件或属性的值。
   项目:要设置值的字段、控件或属性的名称。
   表达式:Access使用表达式来对该项的值进行设置。必须用完整的语法形式来引用表达式中的任何对象。例如:要将“雇员”窗体上的薪


金控件的值上调百分之十,可用Forms!雇员!薪金*1.1语句形式。
41.SetWarnings:设定是否使用系统的警告信息。
42.ShowAllRecords:删除活动表、查询结果集或窗体中所有已应用过的筛选,并显示表或结果集中的所有记录,或者窗体基本表或查询中


的所有记录。
43.ShowToolBar:显示或隐藏内置工具栏或自定义工具栏。
44.StopAllMacros:终止当前所有宏的运行。
45.TransferDatabase:与其他数据库之间导入和导出数据。
46.TransferSpreadsheet:和电子表格之间导入或导出数据。
47.TransfText:与文本文件之间导入或导出文本。
========
access怎样创建宏组

有时候我们需要在数据库中创建几个宏,并且这几个宏都是在一起执行的,所以我们可以把他们放在一个宏组中进行管理和操作。方便了宏


的使用。


步骤/方法
1
打开access以后,我们在菜单栏上执行:创建--宏
2
接着在设计选项下点击宏名,这就调出了宏名这个列
3
在第一行的宏名输入【关闭窗体】,在操作这一列选择相应的操作;同样的方法在第二行输入宏名,然后选择相应的操作;这样两个宏组合


在一起就是宏组。
4
点击菜单栏上面的保存按钮。
5
在弹出的另存为对话框中,我们输入宏组的名称,然后点击确定,这样一个宏组就制作完成饿了。
========
Access创建宏 http://www.yiibai.com/access/create_a_macro.html
  
微软Access提供创建宏的能力。宏是指一组的可自动运行的动作,并在需要时。宏通常被配置为发生特定事件发生时运行。您可以在创建宏


时指定事件是什么。你可以做一个宏运行,当用户按下某个键,或者你可以做一个宏在每次你打开数据库时运行。


Macro 示例
举例来说,如果说90%的数据库使用的是进入新客户到客户表单,可以创建一个自动打开窗体每次打开数据库时宏,并跳转直接到新的记录


。这样做会不必每次查找表单,双击它, 然后再次单击以跳转到一个新的记录,在每次打开数据库时。


以下你可以去创建一个宏:


确保创建(Create)选项卡从功能区选中,单击Macro:
MS Access 2013: Create a macro - step 1
使用下拉菜单选择第一个操作 - 选择 OpenForm:
MS Access 2013: Create a macro - step 2
在底部窗格中,选择您要打开的窗体名称 - 选择 Customers Form (我们唯一的表单):
MS Access 2013: Create a macro - step 3
使用下拉菜单选择第二个动作 - 选择GoToRecord。在记录字段中,选择想要去记录- 选择 New。我们在这里所做的就是确保表单不打开


一个以前的记录 - 它直接到结束有一个空白记录为你准备好进入一个新的纪录(这样可以节省时间和不必要的点击):
MS Access 2013: Create a macro - step 4
准备好,以保存您的宏。 点击保存图标并输入宏的一个名称。请确保这个宏的名字为:AutoExec。 通过命名Autoexec,我们指示访问运


行该宏在每次打开数据库时。
MS Access 2013: Create a macro - step 5
测试你的宏
现在,我们已经创建了宏,现在来测试它。要做到这一点,应该关闭我们的数据库,然后再次打开它。 当我们打开它,Customers表单自


动打开,并准备将进入一个新的纪录。


关闭数据库,从功能区单击文件(file)选项卡,然后单击关闭(close)。


还可以通过对宏打开宏选项卡,然后双击运行要运行的宏 (或选择它,然后点击从功能区运行,或右键单击它,然后从上下文菜单中选择运


行)。


触发宏
我们上面的例子是有点不同是决定大多数宏的名称是什么,它会运行(如数据库打开它会立即运行)。 对于其他的宏,你需要指定运行宏


。您没有在宏指定可以在数据库的其它地方指定它 - 只要它是你想要运行的宏。


例如,您可能需要当在窗体上的按钮被点击时运行宏。要做到这一点只需:


创建一个宏
添加一个按钮的窗体并指向宏
当添加一个按钮形式,需要提供该按钮的动作。其中一个选项是要运行的宏。


其他宏
让我们添加一个按钮在我们的表单,使用户可以运行客户订单查询。当单击该按钮,它会运行一个宏。宏(我们将在这里创建)将只需运行


客户订单查询。


创建宏
首先,我们创建宏。


创建另一个宏,但这次选择OpenQuery动作
从查询名称下拉菜单中的客户订单查询。确保数据表是根据视图选项选择
宏应该是这样的:
MS Access 2013: Create a macro - step 6
修改表单
现在,我们将添加按钮到表单。


打开在设计视图中客户表单,确保设计选项卡是打开的
点击功能区中的按钮图标:
Screenshot of adding a button to a form - step 1
在表单详细信息区域,单击并拖动光标,这样就形成一个正方形或长方形的(在按钮的形状)。命令按钮向导会弹出。选择 Miscellaneous 


>Run Macro 并点击 Next:
Screenshot of adding a button to a form - step 2
选择 Open Customer Orders(我们希望运行的宏),然后点击 Next
当系统提示将文本或图片在按钮上, 选择Text,把它打开客户订单,然后单击 Next
给定的按钮的名称。把它叫做CustomeOrdersButton
点击 Finish
在这时,表单如下:


Screenshot of button in Design view
按钮的颜色并不表单的其余部分真正匹配但是这很容易改变。只需打开属性表并更改修改任何设置你喜欢的格式在选项卡下。


测试按钮
所以这就是如何将宏添加到窗体。现在最有趣的部分 - 测试我们的创作(成果)。


切换到数据表视图,并点击按钮。数据表应当与客户订单查询的结果打开。如果你对结果满意那就保存表单。
========
使用 Access 2010 中的宏和表达式 https://msdn.microsoft.com/library/office/gg435977(v=office.14)


摘要:Microsoft Access 2010 引入了一项称为数据宏的新功能,使您可以编写附加到表的宏。宏设计器也得到了改进。了解这些选项并浏


览相关代码示例。


内容
概述
宏设计器
构建数据宏
表达式生成器
宏和表达式得到简化
其他资源


概述
大多数 Microsoft Access 2010 开发人员都不喜欢编写宏。除了在特定情况下(例如创建自动键和 AutoExec 宏),宏在应用程序扩展性


的世界里就像是二等公民。对于 Microsoft Access 用户来说,宏是在开始 Microsoft Visual Basic for Applications (VBA) 编程之前的一


种入门方式。用于编写宏(DoCmd 对象的衍生品)的操作与 VBA 中使用的方法相对应,但与 Visual Basic Editor 中的丰富体验相比,宏


设计器界面无疑显得十分苍白。
随着 Access 2010 的发行,宏设计和使用中有一些新功能将会吸引开发人员和用户,其中包括改进的宏设计器、基于表的数据宏以及对表


达式创建方式的变更。改进后的宏设计器可帮助您创建更加灵活且更易于解读和遵循的宏。现在可以将宏附加到表,以便基于该表的任何对


象集成宏。表达式生成器现在具有 IntelliSense,可以更轻松地创建表达式。
本文讨论新的宏设计器,并说明如何使用宏设计器构建数据宏,最后还介绍了对表达式生成器的一些更改。
宏设计器
Access 2010 具有新的宏设计器,可在减少编码错误的前提下轻松创建复杂的宏。您可通过下拉列表、IntelliSense、重用现有宏、拖放功


能和复制/粘贴操作,使用设计器执行此操作。
开发人员将会对改进后的用户界面非常满意,因为它有助于构建条件块以加速操作的逻辑流。此外,还能通过电子邮件轻松地将宏共享到网


页或博客和新闻组。
如果您曾经在 Microsoft Access 的之前版本中创建宏,您应该已经熟悉三个列宏生成器(参见图 1)。您在"条件"列中添加了条件语句,


在"操作"列中添加了宏操作,在"参数"列中指定了参数。
图 1. 宏创建器的旧版本


旧版本的宏创建器
在 Access 2010 的新宏设计器中,布局更类似于一个文本编辑器,其中不再包含三列,取而代之的是操作和条件语句,以程序员熟悉的自


顶向下格式显示。参数以内联方式显示在对话框中,如图 2 中所示。
图 2. 宏设计器


宏设计器
添加新操作或条件语句非常简单。从右键单击菜单的操作下拉列表中选择,或者从宏设计器右侧的"操作目录"窗格(如图 3 中所示)中选择



图 3. 操作目录


操作目录
您可以双击操作或将其拖放到宏设计器上。默认情况下,"操作目录"和"添加新操作"组合框显示在不可信的数据库中执行的操作。要查看所


有操作,单击功能区上的"显示所有操作"命令(图 4)。
图 4. 功能区上的"显示所有操作"命令


功能区上的"显示所有操作"命令
您可以通过单击代码块左侧的展开器折叠部分或全部代码块。您也可以使用功能区上的"展开/折叠"组中的展开或折叠控件来展开或折叠代


码块。图 5 显示了图 2 中所示的宏的折叠版本。
图 5. 折叠的代码块


折叠的代码块
"操作目录"搜索框具有搜索功能,使您可以键入一个搜索词,并让 Microsoft Access 筛选和显示与该搜索词匹配的项目。"操作目录"搜索


框不仅会检查操作名称,还会包括操作说明。例如,搜索 Query。搜索结果不仅会显示包含 Query 一词的操作,还会显示说明中包含 


Query 的 ApplyFilter、GoToRecord 和 ShowAllRecords。
您还可以向宏添加注释,方法是在"添加新操作"下拉框中键入"//",或在"操作目录"中拖动"注释"节点。注释显示为绿色文本,如图 2 中所


示。这可以确保注释易于发现,并且可用于分隔过程中的各个部分。重新排列宏代码也很简单。将代码块拖放到新位置即可,或者使用操作


窗格中块上的绿色向上和向下箭头(参见图 5)。
宏设计器引入了一种称为"组块"的新程序流构造。通过组块,可以轻松地将多个宏放入一个组中,您可将组作为一个单元进行扩展或折叠,


以便于读取。
在 Microsoft Access 之前版本的宏生成器中,您可以使用"条件"列创建简单的条件语句。在 Access 2010 宏设计器中,您可以通过添加 


ElseIf 和 Else 语句,创建更加多功能的 If 语句。要添加这些语句,选择"If"块,然后单击代码块右下角的"ElseIf"文本或"Else"文本。例如


,单击"ElseIf"文本,将显示"ElseIf"对话框。然后当您在条件框中键入时,Microsoft Access 将使用 IntelliSense 显示标识符、函数和其他


数据库项目。
宏设计器和 IntelliSense 一起还提供各种类型的帮助,包括:
当您键入足够的字符以识别搜索词后,自动完成将显示与对象、函数或参数匹配的单词下拉列表。您可以按 ENTER 或 TAB 接受建议,或


者继续键入名称。
"快速信息"显示您的宏或表达式中任何标识符的正确语法。将鼠标指针放在某个标识符上方,您将看到其声明信息显示在一个对话框中。
当使用自动完成选择某个值时,"快速提示"提供了关于某个用户界面组件的其他信息。
即使对宏设计器进行了所有这些改进,很多开发人员可能仍然希望将宏转换为 VBA 代码。您可以通过功能区上的"将宏转换为 Visual 


Basic"命令执行此操作。
在下一节中,您将使用宏设计器创建一个数据宏。
构建数据宏
数据宏是 Access 2010 中的新功能。数据宏使您可以将逻辑附加到记录和表(与 SQL Server 触发器类似),也就是说,您在某个位置编写


逻辑,在表中添加、更新或删除数据的所有表单和代码都会继承该逻辑。数据宏可启用各种方案:
在允许添加另一条记录之前先检查字段值
保留对记录所做更改的历史记录
字段值更改时生成一封电子邮件
验证表中数据的准确性
旧版宏(本文中称为宏)仍然存在,尽管它们只能从表单事件、另一个宏、报告事件或 VBA 代码调用。
有两种常规类型的数据宏:当对表中的数据执行某些操作时触发的"事件"宏以及按名称调用的独立"已命名"的宏。在添加、更新或删除数据


事件之后,或者在删除或更改事件之前,您可以立即对数据宏编程以运行数据宏。
数据宏可以使用 ReturnVars 将值返回到宏。数据宏中的 ReturnVars 与使用 VBA 或其他编程语言调用函数/方法返回的值类似。这样就可


以根据数据宏中发生的情况在调用宏中显示 UI。在数据宏中,您可以使用 SetReturnVar 命令指定 ReturnVars,如图 6 中所示。这些值在


已命名的数据宏中设置。
图 6. SetReturnVar 将值返回到宏


SetReturnVar 向宏返回值
要在宏中引用变量,请在以下语句中使用 ReturnVars 命令。
VBA
=[ReturnVars]![retrunVar1]
注释注释
数据宏逻辑仅适用于本地表;数据宏没有链接表,尽管当您使用 Access 前端或 Access 后端时,可以通过向源表添加数据宏来解决此问题



数据宏很有帮助,因为它们减少了将同一个宏附加到一系列表单的需要,因此减少了数据库中的混乱。通过将逻辑添加到表中,基于该表创


建的任何表单都将继承该逻辑。您还可以通过数据宏确保数据的完整性。假设在没有数据宏的表中,与其相关的一个表单中触发了一个事件


,如果用户有权访问您的表并且可以运行查询,她可能可以绕过该表单,从而绕过您的逻辑。您可以限制对表的访问并禁止运行查询,但并


非在所有情况下都能这么做。通过将逻辑直接添加到表,即使用户在表单外进行更改,也会触发操作。
数据宏支持表 1 中的事件列表。
表 1. 事件列表
事件
用途
BeforeChange
您可能想要:
触发一条错误消息并阻止更改
将新值与新值进行比较并打开另一个表单
BeforeDelete
您可能想要:
触发一条错误消息并停止删除
显示一个订单表单,对该项目重新排序
AfterUpdate、AfterInsert、AfterDelete
您可能想要:
生成一封电子邮件
循环访问一组记录并更新其状态
要创建一个事件数据宏,首先在左侧导航窗格中,双击您希望数据宏附加到的表的名称。在"表"选项卡上的"Before 事件"组或"After 事件"


组中,单击您希望添加到宏的事件。Microsoft Access 显示宏生成器。如果您已为该事件创建宏,宏生成器将打开到该宏。
要创建已命名的宏,在左侧导航窗格中,双击您希望数据宏附加到的表的名称。在"表选项卡上的"已命名的宏"组中,单击"已命名的宏",


然后单击"创建已命名的宏"。Microsoft Access 显示宏生成器。
考虑以下示例。假定您有一个订单系统来监控库存中的商品级别,在该系统中,当可用商品数量下降到特定级别,您可能希望提醒员工级别


过低或者他们需要订购更多商品。为此,您在商品表中创建了一个数据宏。这样,当您创建一个基于该表的表单时,您必须具有的所有逻辑


均已可用。
要创建数据宏,请创建一个名为"商品"的示例表,其中包含以下字段。
表 2. 示例数据
名称
类型
商品
文本
数量
数字(长整型)
状态
文本
保存表,并将以下数据添加到"商品"列,将其他列留空。
表 3. 将此数据添加到表
咖啡
苏打水


要添加宏,选择表并在"表工具"下的"字段"选项卡上,单击"视图"下拉列表,然后单击"数据表视图"。当表处于数据表视图时,在"表工具"


下,单击"表"选项卡,然后单击"更改前"事件按钮。为什么使用 Before Change 事件,而不使用 After Change 事件?通常,最好使用 


Before Change 事件修改并运行其他代码,而不是允许表更新记录,然后对刚刚保存回表中的记录创建其他修改。After Change 事件表触


发器最好用于聚合总计并将这些值保存到其他表。例如,在更改数量值时维护库存总计。在这种情况下,您通常修改的是其他表。
接下来,创建 If...Then...Else 语句,每次您在表中进行更改时,将触发此语句。在"商品: 更改前"选项卡中,单击下拉列表,然后单击"If"。


要将条件添加到"If"语句,在"If"语句后键入 I。请注意,您已具有 IntelliSense。选择"商品"表。在"[商品]"标识符后,键入一个句点,然后


选择"数量"。在"数量"后,键入 Between 50 And 100。这将设置商品数量为 100 到 50 的条件,"If"语句的一部分将触发。
屏幕右侧的操作目录中包含该特定事件的可用操作和程序流运算符的列表。单击"SetField"并将其拖动到"If"语句块。在"名称"框中,键入 


Items.Status。在"值"框中,键入 "Levels Low"(带引号)。当商品数量为 50 到 100 之间时,将更改"状态"文本。
再次单击"If"语句,请注意,块的右下角为"添加 Else"和"添加 Else If"选项。单击"添加 Else If"选项添加该块。在条件框中,键入 


Items.Quantity<50。在"操作目录"窗格中,将"SetField"拖动到"Else If"块。在"名称"框中键入 Items.Status,在"值"框中键入 "Order 


Now!"(带引号)。只要商品数量降到 50 以下,"状态"字段文本就会更改。
单击"Else If"语句,然后单击"添加 Else"。将"SetField"拖放到"Else"块上。在"名称"框中键入 Items.Status,在"值"框中键入空字符串 ""。


这表明如果商品数量大于 100,则将"状态"字段设置为空。现在,宏应该如图 7 中所示。
图 7. 已完成的数据宏


已完成的数据宏
右键单击"商品: 更改前"选项卡,然后单击"关闭",保存并关闭宏。
要在数据表视图的表中测试宏,将咖啡数量更改为 100,在记录以外的位置单击,"状态"字段文本将更改为"级别低";将苏打水的数量更改


为 49,"状态"字段将更改为"立即订购!";将茶的数量更改为 101,"状态"字段保留为空白,如图 8 中所示。
图 8. 状态字段随数量更改而更改


状态字段随着数量字段的更改而更改
已命名的数据宏的另一个可用选项是能够传递参数。参数通常用于改进数据库性能,因为它会强制开发人员和用户在宏运行之前限制数据集


。这样即可加快宏速度、降低数据库服务器上的负载并减少网络流量。参数还会提高灵活性,因为您无需进行任何修改即可重复使用宏。您


可以双击希望将已命名的数据宏附加到的表,将参数添加到该已命名的数据宏。在"表"选项卡的"已命名的宏"组中,单击"已命名的宏"下拉


箭头,然后单击"创建已命名的宏"。在宏生成器顶部(参见图 9)单击"创建参数"。
图 9. 宏生成器中的"创建参数"选项


宏生成器中的"创建参数"选项
调试数据宏的体验不像其他编程代码一样丰富。您无法逐步调试代码或使用消息框选项。但是,您可以在 OnError、RaiseError 和 


LogEvent 宏操作中使用"应用程序日志"表,以帮助查找数据宏错误。"应用程序日志"表是一种系统表(称为 USysApplicationLog),默认


情况下它不会显示在导航窗格中。如果数据宏中发生错误,您可以通过查看"应用程序日志"表中的信息来了解发生了什么。
要显示"应用程序日志"表,单击"文件"选项卡以显示 Backstage 视图。在"信息"选项卡上,单击"查看应用程序日志表"。如果您没有看到"


查看应用程序日志表"按钮,这意味着尚未为该数据库创建应用程序日志表。记录某个事件时,例如通过使用 LogEvent 或 RaiseError 宏操


作,按钮将显示在"信息"选项卡上。
表达式生成器
表达式生成器是一种帮助您构建表达式的工具。您可以从 Microsoft Access 中编写表达式的大多数位置启动表达式生成器。表和字段、查


询、表单和报告属性、控件、查询和宏都可以使用表达式对数据或逻辑求值,以驱动应用程序的行为。它还使您在编写表达式时可以轻松访


问数据库中字段和控件的名称,以及很多可用的内置函数。通过表达式生成器,您可以从头开始创建表达式,也可以从一些预置表达式中选


择,以显示页面编号、当前日期或当前日期和时间,等等。
在 Access 2010 中,表达式生成器经过了重大变更。通过使用改进后的表达式生成器(参见图 10),您可以更快地编写表达式,并减少错


误。
图 10. Access 2010 中的表达式生成器


Access 2010 中的表达式生成器
表达式生成器包括新功能和更简单的用户界面。您不必再记住语法和可用函数或属性。新的表达式生成器具有 IntelliSense,它可提供在键


入表达式时所需的所有信息。
此外,新的用户界面使用逐步解密,这意味着仅显示在特定上下文中存在的函数和属性。在 Microsoft Access 的之前版本中,使用表达式


的各个上下文共享同一个通用表达式求值器。这意味着不论您在什么位置使用表达式,在大多数情况下对您可用的函数和运算符均相同。在 


Access 2010 中,表达式生成器与上下文相关。例如,FormatDateTime 函数在表的上下文中不可用,但在所有其他上下文中均可用。另


外请注意,在图 10 中,运算符按钮已消失。运算符在"表达式元素"窗格中可用。所有这些更改减少了混乱,使选择更易于关闭并提供了更


多编辑区域。
在宏设计器中以及 Access 2010 中您希望构建表达式的其他位置,单击图 11 中所示的图标将显示表达式生成器。
图 11. 表达式生成器图标


表达式生成器图标
然后,当您键入表达式时,将为您提供一个字段、函数或表达式元素的下拉列表,与图 12 中类似。
图 12. 键入将显示选项的下拉列表


键入内容显示为选项下拉列表
您可以在 Access 2010 帮助中找到关于表达式以及如何使用表达式生成器的更多帮助。
宏和表达式得到简化
不论您是 Microsoft Access 的新用户还是资深开发人员,新宏设计器带来的易于使用的改进功能使得构建宏比以往任何时候都要简单。通


过添加 Else 和 Else If 构造,使宏变得更加灵活。新的操作目录和 IntelliSense 功能使您不必再记住常用命令和操作。此外,改进后的表达


式生成器还使创建表达式变得更加直接。总而言之,这些改进功能使您可以更好地控制您创建的数据库的功能。


其他资源
请参阅以下资源:
教程:Access 2010 宏设计器
========

推荐阅读
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 开发笔记:select from具体执行相关知识介绍及案例分析
    本文由编程笔记小编整理,主要介绍了select from具体执行相关的知识,包括数据插入、查询最小rowID、查询每个重复名字的最小rowID、删除重复数据等操作,并提供了案例分析。希望对读者有一定的参考价值。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
author-avatar
Metoo婧婧
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有