创建新的数据库时,通常从创建几个数据库对象开始,例如表、窗体和报表。 最后,还需进行编程,以自动执行某些过程并将数据库对象绑定在一起。 本文可帮助你了解 Access 中的编程工具。
本文内容
什么是编程?
在 Access 中,编程是通过使用 Access 宏或 Visual Basic for Applications (VBA) 代码向数据库添加功能的过程。 例如,假设已创建窗体和报表,需要将命令按钮添加到窗体中,单击该按钮可打开报表。 在这种情况下,编程是指以下过程:创建宏或 VBA 过程,设置命令按钮的 OnClick 事件属性,以便单击命令按钮来运行宏或过程。 对于简单操作(如打开报表),可以使用命令按钮向导执行所有操作,也可关闭向导,自己编程。
注意: 许多 Microsoft Office 程序使用术语“宏”来表示 VBA 代码。 这 Access 用户可能会感到困惑,因为在 Access 中,术语“宏”是指可以使用宏生成器组合的宏操作的命名集合。 Access 宏操作仅表示 VBA 中可用的命令的子集。 与 Visual Basic 编辑器相比,宏生成器能够提供更加结构化的界面,用户无需学习 VBA 代码就可将编程添加到控件和对象中。 你应该记住,在 Access 帮助文章中, Access 宏称为宏。 相反,VBA 代码被称为 VBA、代码、函数或过程。 VBA 代码包含在类模块(属于单个窗体或报表的一部分,通常包含仅用于这些对象的代码)和模块(没有绑定到特定对象,通常包含可在整个数据库中使用的“全局”代码)中。
对象(如窗体和报表)和控件(如命令按钮和文本框)具有各种事件属性,可在其中附加宏或过程。 每个事件属性都与特定的事件相关联,例如单击鼠标、打开窗体或修改文本框中的数据。 事件也可以由 Access 之外的因素触发,例如系统事件,或者由附加到其他事件的宏或过程触发。 如果将许多宏或过程添加到多个对象的多个事件属性中,数据库可能会变得十分复杂,但在大多数情况下,只需使用极少的编程即可获得所需结果。
我应该使用宏还是 VBA 代码?
决定使用宏、VBA,或者两者均使用,主要取决于你计划如何部署或分发数据库。 例如,如果数据库存储在你的计算机上,并且你是唯一的用户;如果你喜欢使用 VBA 代码,则可能会用 VBA 执行大部分编程任务。 但是,如果想要将数据库放置到文件服务器上以便与其他人共享,出于安全考虑,可能需要避免使用 VBA。
应根据以下两个因素来决定使用宏还是 VBA 代码:安全性和所需的功能。 安全性是一个考虑因素,因为 VBA 可以用来创建代码,这些代码可能会危害数据安全性或损害计算机上的文件。 使用其他人创建的数据库时,仅当你知道数据库具有可信来源后,才启用 VBA 代码。 当创建供其他人使用的数据库时,应尽量避免包含需要用户专门向数据库授予信任状态的编程工具。 本节后面部分中会介绍免除用户信任数据库的必要性的通用技术。
为帮助确保数据库的安全性,应尽量使用宏(当你能够使用宏时),并仅将 VBA 编程用于无法使用宏操作执行的操作。 此外,应尽量只使用无需向数据库授予信任状态以便运行的宏操作。 以这种方式限制宏操作的使用,可以让用户确信数据库没有任何可能损害其计算机数据或其他文件的编程。
宏的注意事项
Access 包含许多新的宏操作,使你能够生成比使用早期版本的 Access 生成的更强大的宏。 例如,现在可以通过宏操作来创建并使用全局临时变量,并且可以通过新的错误处理宏操作更轻松地处理错误。 在早期版本的 Access 中,只有使用 VBA 才能使用此类功能。 此外,可以将宏直接嵌入到对象或控件的事件属性中。 嵌入的宏将成为对象或控件的一部分,如果移动或复制,也与对象或控件绑定在一起。
宏可提供处理许多编程任务的简便方法,例如打开和关闭窗体以及运行报表。 可以快捷地将创建的数据库对象(窗体、报表等)绑定在一起,因为只需记住极少的语法。 每个操作的参数均显示在宏生成器中。
宏可提高安全性和易用性,除此之外,还必须使用宏来执行以下任务:
-
为键分配一个操作或一组操作。 这需要创建一个名为 AutoKeys 的宏组。
-
在数据库首次打开时,执行一个操作或一系列操作。 这需要创建一个名为 AutoExec 的宏。
注意: AutoExec 宏可在任何其他宏或 VBA 代码之前运行,即使已在“Access 选项”对话框中指定了启动窗体,并已将宏或 VBA 代码附加到该窗体的 OnOpen或 OnLoad 事件中,也是如此。
有关如何构建宏的详细信息,请参阅了解宏部分。
VBA 的注意事项
如果要执行以下任何操作,应使用 VBA 编程而不是宏:
-
使用内置函数,或创建自己的函数 Access 包括许多内置函数,例如用于计算利息支付的 IPmt 函数。 可使用这些内置函数来执行计算,而无需创建复杂的表达式。 通过使用 VBA 代码,还可创建自己的函数,用于执行超出表达式功能的计算或替代复杂的表达式。 此外,可以使用表达式中创建的函数,将常见操作应用于多个对象。
-
创建或操作对象 在大多数情况下,你会发现在对象的“设计”视图中创建和修改对象是最容易的。 但是,在某些情况下,你可能想要在代码中操作对象的定义。 通过使用 VBA,除了数据库本身外,还可以操作数据库中的所有对象。
-
执行系统级操作 可以在宏中执行 RunApp 操作,以从 Access 内部运行其他程序 ((例如 Microsoft Excel) ),但不能在 Access 之外使用宏执行其他操作。 通过使用 VBA,你可以检查计算机上是否存在文件,使用自动化或动态数据交换 (DDE) 与其他基于 Microsoft Windows 的程序(如 Excel)进行通信,并调用 Windows 动态链接库中的函数 (DLL) 。
-
一次操作一个记录 可以使用 VBA 单步执行一组记录,一次一条记录,并针对每个记录执行操作。 相比之下,宏一次处理整个记录集。
使用命令按钮向导执行常见的编程任务
如果要向窗体添加命令按钮,命令按钮向导可帮助你开始编程。 该向导可帮助你创建执行某项特定任务的命令按钮。 在 Access (.accdb) 文件中,向导创建一个宏,该宏嵌入命令按钮的 OnClick 属性中。 在 .mdb 或 .adp 文件中,该向导会创建 VBA 代码,因为嵌入的宏在这些文件格式中不可用。 无论哪种情况,都可根据需要对宏或 VBA 代码进行修改或增强。
-
在导航窗格中,右键单击要向其添加命令按钮的窗体,然后单击“设计视图”。
-
在“ 窗体设计 ”选项卡上,单击向下箭头以显示 “控件 ”库,并确保选中“ 使用控件向导 ”。
-
在“ 窗体设计 ”选项卡上的 “控件 ”库中,单击“ 按钮”。
-
在窗体设计网格中,单击要放置命令按钮的位置。
随即启动命令按钮向导。
-
在向导的第一页上,单击“类别”列表中的每个类别,查看可以通过向导编程命令按钮执行的操作。 在“操作”列表中,选择所需操作,然后单击“下一步”。
-
单击“文本”选项或“图片”选项,具体取决于要在命令按钮上显示文本还是图片。
-
如果要显示文本,请在“文本”选项旁的框中编辑文本。
-
如果要显示图片,该向导会推荐列表中的一个图片。 如果要选择其他图片,请选中“ 显示所有图片 ”复选框以显示 Access 提供的所有命令按钮图片的列表,或单击“ 浏览 ”选择存储在其他位置的图片。
单击“下一步”。
-
-
为命令按钮输入有实际意义的名称。 此步骤为可选项,该名称不会显示在命令按钮上。 但是,建议输入一个有实际意义的名称,以便稍后(例如,如果要为窗体上的控件设置 Tab 键次序)引用命令按钮时,可以轻松地区分不同的命令按钮。 例如,如果该命令按钮用于关闭窗体,可以将其命名为 cmdClose 或 CommandClose。
-
单击“完成”。
Access 将命令按钮放在窗体上。
-
若要查看向导进行了哪些“编程”,请执行以下可选步骤:
-
如果尚未显示属性表,请按 F4 显示该表。
-
在属性表中,单击“事件”选项卡。
-
在 “单击” 属性框中,单击“ 生成 ”按钮 。
Access 启动宏生成器并显示向导创建的宏。 如果需要,可以对宏进行编辑(有关如何编辑宏的详细信息,请参阅了解宏部分)。 完成后,在“ 宏设计 ”选项卡上的“ 关闭 ”组中,单击“ 关闭 ”以关闭宏生成器。 如果 Access 提示保存更改并更新属性,请单击“ 是 ”保存更改,或单击“ 否 ”拒绝更改。
-
-
在“ 窗体设计 ”选项卡上的“ 视图 ”组中,单击“ 视图”,然后单击“ 窗体视图”。 单击新的命令按钮,确认其是否按预期的方式工作。
了解宏
宏是一种可用于自动执行任务及向窗体、报表和控件添加功能的工具。 例如,如果向窗体添加命令按钮,会将该按钮的 OnClick 事件属性与宏关联,该宏包含你希望每次单击按钮时执行的命令。
将 Access 宏视为一种简化的编程语言,以便通过生成要执行的操作列表来创建代码,这很有帮助。 构建宏时,可以从下拉列表选择每个操作,然后填写每个操作所需的信息。 借助宏,可将功能添加到窗体、报表和控件中,而无需在 VBA 模块中编写代码。 宏可提供 VBA 中可用的部分命令,大多数用户认为构建宏比编写 VBA 代码更容易。
通过使用宏生成器来创建宏,如下图所示。
显示宏生成器:
-
在“创建”选项卡上的“宏和代码”组中,单击“宏”。
了解 VBA 代码
与宏一样,VBA 允许向 Access 应用程序添加自动化和其他功能。 可通过使用第三方控件扩展 VBA,并根据自己的特定需要编写函数和过程。
开始 VBA 编程的一种快速方法是首先生成 Access 宏,然后将其转换为 VBA 代码。 有关此操作的说明,请参阅将宏转换为 VBA 代码部分。 此功能将创建一个新的 VBA 模块,该模块可在宏中执行等效操作。 它还可打开 Visual Basic 编辑器,以便用户修改过程。 在 Visual Basic 编辑器中工作时,可以单击关键字并按 F1 开始 Access 开发人员帮助并了解有关每个关键字的详细信息。 然后,可以浏览 Access 开发人员帮助并发现新命令,以帮助你执行所需的编程任务。
将宏转换为 VBA 代码
可以使用 Access 自动将宏转换为 VBA 模块或类模块。 可转换附加到窗体或报表中的宏,无论它们的存在方式是单独的对象还是嵌入的宏,都是如此。 也可转换未附加到特定窗体或报表中的全局宏。
转换附加到窗体或报表中的宏
此过程将窗体或报表(或其任何控件)引用(或嵌入)的任何宏转换为 VBA,并将 VBA 代码添加到窗体或报表的类模块中。 类模块会成为窗体或报表的一部分,并随窗体或报表一起移动或复制。
-
在导航窗格中,右键单击窗体或报表,然后单击“设计视图”。
-
在“ 窗体设计 ”选项卡上的“ 工具” 组中,单击“ 将窗体的宏转换为 Visual Basic ”或“ 将报表的宏转换为 Visual Basic”。
-
在 “转换窗体宏 ”或“ 转换报表宏 ”对话框中,选择是否希望 Access 向生成的函数添加错误处理代码。 此外,如果宏内有任何注释,请选择是否希望将其添加到函数中。 单击“转换”以继续。
如果窗体或报表不存在类模块, Access 创建一个,并为与窗体或报表关联的每个宏向模块添加过程。 Access 还会更改窗体或报表的事件属性,以便它们运行新的 VBA 过程而不是宏。
-
查看并编辑 VBA 代码:
-
当窗体或报表在设计视图中仍处于打开状态时,如果尚未显示属性表,按 F4 可显示。
-
在属性表的“ 事件 ”选项卡上,单击显示 [事件过程]的任何属性框,然后单击生成按钮 。 若要查看特定控件的事件属性,单击控件将其选中。 若要查看整个窗体或报表的事件属性,从属性表顶部的下拉列表中选择“窗体”或“报表”。
Access 打开 Visual Basic 编辑器并在其类模块中显示事件过程。 可以向上或向下滚动,查看同一个类模块中的任何其他过程。
-
转换全局宏
-
在导航窗格中,右键单击要转换的宏,然后单击“设计视图”。
-
在“ 宏设计 ”选项卡上的“ 工具” 组中,单击“ 将宏转换为 Visual Basic”。
-
在“转换宏”对话框中,选择所需选项,然后单击“转换”。
Access 转换宏并打开 Visual Basic 编辑器。
-
查看并编辑 VBA 代码:
-
在 Visual Basic 编辑器中,如果未显示项目资源管理器窗格,可在“视图”菜单上,单击“项目资源管理器”。
-
展开你正在处理的数据库名称下的树。
-
在“模块”下,双击模块“被转换的宏”宏名。
此时,Visual Basic 编辑器将打开模块。
-
将 VBA 函数附加到事件属性
将全局宏转换为 VBA 时,VBA 代码放置于标准模块中。 与类模块不同,标准模块不是窗体或报表的一部分。 你可能希望将函数与窗体、报表或控件的事件属性相关联,以便代码能够准确地在你所需的时间和位置运行。 为此,可将 VBA 代码复制到类模块中,然后将其与事件属性相关联,也可使用以下过程执行从事件属性到标准模块的特殊调用。
-
在 Visual Basic 编辑器中,记录函数名称。 例如,如果转换了一个名为 MyMacro 的宏,函数名称将为 MyMacro()。
-
关闭 Visual Basic 编辑器
-
在导航窗格中,右键单击要关联该函数的窗体或报表,然后单击“设计视图”。
-
单击要关联函数的控件或节。
-
如果尚未显示属性表,请按 F4 显示该表。
-
在属性表的“事件”选项卡上,单击要关联函数的事件属性框。
-
在属性框中,键入一个等号 (=),后跟函数的名称,例如,=MyMacro()。 请务必包含括号。
-
通过单击快速访问工具栏上的“保存”来保存窗体或报表。
-
在导航窗格中,双击窗体或报表,然后测试代码是否按预期的方式运行。
现在你已了解将 VBA 代码添加到数据库中的基本步骤。 本文仅介绍入门基础知识,除此之外,还有许多优秀的参考书籍和在线资源可帮助你提高编程技能。