Access 编程简介
在创建新数据库时,您通常首先创建几个数据库对象,例如表、窗体和报表。最后,您还需要进行一些编程,从而自动执行某些过程并将数据库对象绑定在一起。本文帮助您熟悉 Access 2010 中的编程工具。
注释 您可以向 Web 数据库中添加 Visual Basic for Applications (VBA) 代码;但是,当数据库正在 Web 浏览器中运行时,您将无法运行该代码。如果 Web 数据库包含 VBA 代码,则必须先使用 Access 打开该 Web 数据库,然后才能运行该代码。若要在 Web 数据库中执行编程任务,请改用 Access 宏。
有关 Web 数据库的详细信息,请参阅文章生成可在 WEB 上共享的数据库。
本文内容
在 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。如果您打算将数据库作为 Access Web Applications 发布,则必须使用宏(而不是 VBA)执行编程任务,因为 VBA 与 Web 发布功能不兼容。
Access Web Applications Access Web Applications 是 Access 2010 的一项新功能,利用此功能,可以将应用程序发布到运行 Access Services 的 Microsoft SharePoint 服务器上。这样其他人就可以通过标准 Internet 浏览器使用您的数据库,而无需在他们的计算机上安装 Access。但是,由于 VBA 代码与 Web 发布功能不兼容,如果您计划将应用程序作为 Access Web Applications 发布,则只能使用宏执行编程任务。
设计新的 Access Web Applications 时,应在首次启动 Access 时首先单击“空白 Web 数据库”。这样可以限制能够用于创建数据库的功能,帮助确保 Web 应用程序成功发布。
客户端应用程序 如果您不打算将应用程序发布到 Access Services 服务器上,则应根据两个因素来决定使用宏还是使用 VBA 代码:安全性和所需的功能。之所以要考虑安全性,是因为 VBA 可用于创建危害数据安全或损坏计算机上的文件的代码。如果您使用的数据库是由其他人创建的,那么仅当您知道该数据库的来源可靠时才应该启用 VBA 代码。如果您创建的数据库将被其他人使用,那么您应该尽量避免包括需要用户特别准许数据库为可信状态的编程工具。避免需要用户信任您的数据库的一般技术将在本节后面的内容中讲述。
为了帮助确保数据库的安全,应该在可能的情况下尽量使用宏,而只使用 VBA 编程来完成使用宏操作无法完成的操作。此外,您应该尽量只使用不需要准许数据库为可信状态就可以运行的宏操作。以这样的方式限制宏操作的使用使用户可以确信,数据库中不包含任何可能会损坏其计算机上的数据或其他文件的编程。
Access 2010 包含许多新的宏操作,与 Access 的早期版本相比,使用这些新的宏操作可以生成功能更加强大的宏。例如,您现在可以通过使用宏操作来创建和使用全局临时变量,并且可以通过使用新的错误处理宏操作更恰当地处理错误。在 Access 的早期版本中,这些类型的功能只有使用 VBA 时才可用。此外,您可以直接将宏嵌入到对象或控件的事件属性中。嵌入的宏将变成该对象或控件的一部分,并随该对象或控件一起被移动或复制。
宏提供了处理许多编程任务的简单方法,例如打开和关闭窗体以及运行报表。您可以轻松快捷地绑定您创建的数据库对象(表单、报表等),因为您几乎不需要记住任何语法。每个操作的参数都显示在宏生成器中。
除了宏提供的增强的安全性和易用性之外,您必须使用宏来执行以下任务:
✍ | 将一个操作或一组操作分配给某个键。这需要创建一个名为 AutoKeys 的宏组。 |
✍ | 在数据库首次打开时执行一个操作或一系列操作。这需要创建一个名为 AutoExec 的宏。 |
注释 AutoExec 宏在任何其他宏或 VBA 代码运行之前运行,即使您在“Access 选项”对话框中指定了启动窗体并将宏或 VBA 代码附加到了该窗体的 OnOpen 或 OnLoad 事件中也是如此。
有关如何生成宏的详细信息,请参阅了解宏一节。
如果您要执行下列任一操作,那么应该使用 VBA 编程而不是宏:
✍ | 使用内置函数或创建自己的函数 Access 中包括许多内置函数,例如 IPmt 函数,它可以计算应付利息。您可以使用这些内置函数执行计算,而无须创建复杂的表达式。通过使用 VBA 代码,您还可以创建自己的函数来执行超出表达式能力的计算或者替代复杂的表达式。此外,您还可以在表达式中使用自己创建的函数向多个对象应用公共操作。 |
✍ | 创建或操纵对象 在大多数情况下,您会发现在对象的“设计”视图中创建和修改对象最容易。不过,在某些情况下,您可能想在代码中操纵对象的定义。通过使用 VBA,除了可以操纵数据库本身以外,您还可以操纵数据库中的所有对象。 |
✍ | 执行系统级操作 您可以在宏内执行 RunApp 操作,以便在 Access 中运行另一个程序(如 Microsoft Excel),但您无法使用宏在 Access 外部执行更多其他操作。通过使用 VBA,您可以检查某个文件是否存在于计算机上,使用自动化或动态数据交换 (DDE) 与其他基于 Microsoft Windows 的程序(如 Excel)通信,还可以调用 Windows 动态链接库 (DLL) 中的函数。 |
✍ | 一次一条地操纵记录 您可以使用 VBA 来逐条处理记录集,一次一条记录,并对每条记录执行操作。相反,宏将同时处理整个记录集。 |
如果您要向窗体中添加命令按钮,“命令按钮向导”可帮助您开始编程。该向导将帮助您创建执行特定任务的命令按钮。在 Access 2010 (.accdb) 文件中,该向导创建一个嵌入在命令按钮的 OnClick 属性中的宏。在 .mdb 或 .adp 文件中,该向导创建 VBA 代码,因为嵌入的宏在这些文件格式中不可用。不管在以上哪种情况下,此后您都可以修改或增强该宏或 VBA 代码,以便更好地满足您的需要。
1. | 在导航窗格中,右键单击您要添加命令按钮的窗体,然后单击“设计视图”。 |
2. | 在“设计”选项卡上,单击向下箭头以显示“控件”库,然后确保选中“使用控件向导”。 |
3. | 在“设计”选项卡上的“控件”库中,单击“按钮”。 |
4. | 在窗体设计网格中,在您想要放置命令按钮的地方单击。 |
将会启动“命令按钮向导”。
5. | 在该向导的第一页上,单击“类别”列表中的每个类别,查看该向导可以对命令按钮编程执行哪些操作。在“操作”列表中,选择您想要执行的操作,然后单击“下一步”。 |
6. | 单击“文本”选项或“图片”选项,具体取决于您想要在命令按钮上显示文本还是图片。 |
✍ | 如果您想要显示文本,您可以在“文本”选项旁边的框中编辑文本。 |
✍ | 如果您想要显示图片,该向导会推荐列表中的一个图片。如果您想选择其他图片,请选中“显示所有图片”复选框来显示 Access 提供的所有命令按钮图片的列表,或者单击“浏览”选择存储在其他位置的图片。 |
单击“下一步”。
7. | 为命令按钮输入一个有意义的名称。这是一个可选的步骤,并且此名称也不会显示在命令按钮上。但是,最好输入有意义的名称,以便以后当您需要引用该命令按钮(例如,如果您要为窗体上的控件设置 Tab 键次序)时,区分命令按钮会容易得多。例如,如果该命令按钮会关闭窗体,您可以将其命名为 cmdClose 或 CommandClose。 |
8. | 单击“完成”。 |
Access 将命令按钮放在窗体上。
9. | 如果您想查看该向导为您进行了哪些编程,请执行以下可选步骤: |
✍ | 如果属性表尚未显示,请按 F4 来显示它。 |
✍ | 单击属性表中的“事件”选项卡。 |
✍ | 在“On Click”属性框中,单击“生成”按钮 。 |
Access 将启动宏生成器并显示该向导创建的宏。如果需要,您可以编辑这个宏(有关如何编辑宏的详细信息,请参阅了解宏一节)。完成后,在“设计”选项卡上的“关闭”组中,单击“关闭”以关闭宏生成器。如果 Access 提示您保存更改并更新该属性,请单击“是”保存更改或单击“否”放弃更改。
10. | 在“设计”选项卡上的“视图”组中,单击“查看”,然后单击“窗体视图”。单击新的命令按钮以确认它是否按预期的方式工作。 |
宏是一种工具,允许您自动执行任务,以及向窗体、报表和控件中添加功能。例如,如果您向窗体中添加了一个命令按钮,则会将该按钮的 OnClick 事件属性与一个宏相关联,该宏包含您希望在每次单击该按钮时它所执行的命令。
您可以将 Access 宏看作是一种简化的编程语言,利用这种语言您通过生成要执行的操作 (操作:宏的基本组成部分;这是一种自含式指令,可以与其他操作相结合来自动执行任务。在其他宏语言中有时称为命令。)的列表来创建代码。生成宏时,您从下拉列表中选择每个操作,然后为每个操作填写必需的信息。宏使您能够向窗体、报表和控件中添加功能,而无须在 VBA 模块中编写代码。宏提供了 VBA 中可用命令的子集,并且大多数人都认为生成宏比编写 VBA 代码更容易。
您通过使用宏生成器来创建宏,下图显示了宏生成器。
显示宏生成器:
✍ | 在“创建”选项卡上的“宏与代码”组中,单击“宏”。 |
与宏一样,VBA 也允许您向 Access 应用程序中添加自动化和其他功能。您可以使用第三方控件来扩展 VBA 的功能,并且您可以编写自己的函数和过程来满足您的特定需要。
注释 您可以向 Web 数据库中添加 Visual Basic for Applications (VBA) 代码;但是,当数据库正在 Web 浏览器中运行时,您将无法运行该代码。如果 Web 数据库包含 VBA 代码,则必须先使用 Access 打开该 Web 数据库,然后才能运行该代码。若要在 Web 数据库中执行编程任务,请改用 Access 宏。
有关 Web 数据库的详细信息,请参阅文章生成可在 WEB 上共享的数据库。
开始 VBA 编程的一种快捷方式就是首先生成一个 Access 宏,然后将其转换为 VBA 代码。执行此操作的说明在将宏转换为 VBA 代码一节中有述。此功能创建一个执行与宏等效的操作的新 VBA 模块。它还打开 Visual Basic 编辑器,以便您可以修改该过程。在 Visual Basic 编辑器中工作时,可以单击关键字并按 F1 来启动“Access 开发人员帮助”以及了解有关每个关键字的详细信息。然后您可以浏览“Access 开发人员帮助”并查找帮助您执行所需要的编程任务的新命令。
您可以使用 Access 2010 自动将宏转换为 VBA 模块或类模块。您可以转换附加到窗体或报表的宏,而不管它们是作为单独的对象存在还是作为嵌入的宏存在。您还可以转换未附加到特定窗体或报表的全局宏。
注释 您可以向 Web 数据库中添加 Visual Basic for Applications (VBA) 代码;但是,当数据库正在 Web 浏览器中运行时,您将无法运行该代码。如果 Web 数据库包含 VBA 代码,则必须先使用 Access 打开该 Web 数据库,然后才能运行该代码。若要在 Web 数据库中执行编程任务,请改用 Access 宏。
有关 Web 数据库的详细信息,请参阅文章生成可在 WEB 上共享的数据库。
此过程将窗体或报表(或者其中的任意控件)引用(或嵌入在其中)的任意宏转换为 VBA,并向窗体或报表的类模块中添加 VBA 代码。该类模块将成为窗体或报表的组成部分,并且如果窗体或报表被移动或复制,它也随之移动。
1. | 在导航窗格中,右键单击窗体或报表,然后单击“设计视图”。 |
2. | 在“设计”选项卡上的“工具”组中,单击“将窗体的宏转换为 Visual Basic 代码”或“将报表的宏转换为 Visual Basic 代码”。 |
3. | 在“转换窗体宏”或“转换报表宏”对话框中,选择是否希望 Access 向它生成的函数中添加错误处理代码。此外,如果您的宏内有任何注释,请选择是否希望将它们作为注释包括在函数中。单击“转换”继续。 |
如果该窗体或报表没有相应的类模块,Access 将创建一个类模块,并为与该窗体或报表关联的每个宏向该模块中添加一个过程。Access 还会更改该窗体或报表的事件属性,以便它们运行新的 VBA 过程,而不是宏。
4. | 查看和编辑 VBA 代码: |
1. | 当窗体或报表仍然在“设计”视图中打开时,如果属性表尚未显示,请按 F4 来显示它。 |
2. | 在属性表的“事件”选项卡上,在显示“[事件过程]”的任一属性框中单击,然后单击生成按钮 。若要查看特定控件的事件属性,请单击该控件将其选中。若要查看整个窗体或报表的事件属性,请在属性表顶部的下拉列表中选择“窗体”或“报表”。 |
Access 将打开 Visual Basic 编辑器,并在其类模块中显示事件过程。您可以向上或向下滚动来查看同一个类模块中的任何其他过程。
1. | 在导航窗格中,右键单击要转换的宏,然后单击“设计视图”。 |
2. | 在“设计”选项卡上的“工具”组中,单击“将宏转换为 Visual Basic 代码”。 |
3. | 在“转换宏”对话框中,选择所需的选项,然后单击“转换”。 |
Access 将转换宏并打开 Visual Basic 编辑器。
4. | 查看和编辑 VBA 代码: |
1. | 在 Visual Basic 编辑器中,如果“工程资源管理器”窗格未显示,请在“视图”菜单上单击“工程资源管理器”。 |
2. | 展开您正在其中工作的数据库名称下面的树。 |
3. | 在“模块”下,双击模块“被转换的宏宏名”。 |
Visual Basic 编辑器将打开该模块。
当您将全局宏转换为 VBA 时,VBA 代码将被放在标准模块中。与类模块不同,标准模块不是窗体或报表的组成部分。您很可能希望将该函数与窗体、报表或控件上的事件属性相关联,以便代码能够精确地在您希望的时间和位置运行。为此,您可以将 VBA 代码复制到类模块中,然后将其与一个事件属性相关联;或者您也可以使用以下过程在事件属性中执行一次特殊的调用,以调用该标准模块。
1. | 在 Visual Basic 编辑器中,记录函数名称。例如,如果您转换是名为 MyMacro 的宏,则函数名称将为 MyMacro()。 |
2. | 关闭 Visual Basic 编辑器。 |
3. | 在导航窗格中,右键单击您要将函数与之关联的窗体或报表,然后单击“设计视图”。 |
4. | 单击您要将函数与之关联的控件或节。 |
5. | 如果属性表尚未显示,请按 F4 来显示它。 |
6. | 在属性表的“事件”选项卡上,单击您要将函数与之关联的事件属性框。 |
7. | 在该属性框中,键入一个等号 (=),后跟函数的名称,例如 =MyMacro()。请务必包括括号。 |
8. | 通过单击快速访问工具栏上的“保存”来保存窗体或报表。 |
9. | 在导航窗格中,双击该窗体或报表,并测试它以查看代码是否按照预期的方式运行。 |
您现在知道了将 VBA 代码添加到数据库中的基本步骤。本文只介绍了入门基础,还有许多优秀的参考书和联机资源可以帮助您提高编程技巧。
Access 2010 提供了许多帮助您编程的方法。您可以单击 Access 窗口右上角的“帮助”按钮随时获得帮助。
Access 将显示“帮助”窗口。
此外,在您生成宏或 VBA 过程时,您可以单击宏操作、关键字或内置函数名称,然后按 F1。在大多数情况下,Access 将显示您所单击项目的帮助主题。
打开“帮助”窗口后,使用工具栏上的导航按钮在各页面之间移动。
例如,单击“开始”可查看目录,然后单击“后退”、“前进”、“停止”或“刷新”按钮可在主题间移动或重新加载某个主题。您还可以在工具栏下方的框中输入搜索词,然后按 Enter 或单击“搜索”来搜索帮助系统,以查找特定的信息。
如果您要搜索关于编程的信息,除了 Access 帮助之外,浏览“Access 开发人员帮助”通常很有用。
1. | 单击“搜索”按钮旁边的下拉箭头。 |
“帮助”窗口显示了您可以浏览的可用帮助主题列表。
2. | 如果您连接到了 Internet,请在“来自 Office.com 的内容”下单击“开发人员参考”。我们建议使用这种方法,因为来自 Office.com 的内容始终是最新的。如果您未连接到 Internet,或者系统管理员禁用了通过“帮助”窗口联机的功能,那么您仍然可以通过单击“来自此计算机的内容”下的“开发人员参考”来查看“Access 开发人员帮助”。 |
3. | 您可以使用以下两种方式浏览帮助:使用目录中的链接,或者在工具栏正下方的框中输入搜索词,然后按 Enter。 |
4. | 若要切换回 Access 帮助,请单击“搜索”按钮旁边的下拉箭头,然后单击“来自 Office.com 的内容”或“来自此计算机的内容”下的“Access 帮助”。 |
有关使用脱机或联机帮助的详细信息,请单击“帮助”窗口右下角的“连接状态”菜单,然后单击“解释这些选项”。