时 间:2012-07-03 09:47:12
作 者:
摘 要:Access编程简介之二:我应该使用宏还是应该使用 VBA 代码?
正 文:
要决定是使用宏或 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 注意事项
如果您要执行下列任一操作,那么应该使用 VBA 编程而不是宏:
使用内置函数或创建自己的函数 Access 中包括许多内置函数,例如 IPmt 函数,它可以计算应付利息。您可以使用这些内置函数执行计算,而无须创建复杂的表达式。通过使用 VBA 代码,您还可以创建自己的函数来执行超出表达式能力的计算或者替代复杂的表达式。此外,您还可以在表达式中使用自己创建的函数向多个对象应用公共操作。
创建或操纵对象 在大多数情况下,您会发现在对象的“设计”视图中创建和修改对象最容易。不过,在某些情况下,您可能想在代码中操纵对象的定义。通过使用 VBA,除了可以操纵数据库本身以外,您还可以操纵数据库中的所有对象。
执行系统级操作 您可以在宏内执行 RunApp 操作,以便在 Access 中运行另一个程序(如 Microsoft Excel),但您无法使用宏在 Access 外部执行更多其他操作。通过使用 VBA,您可以检查某个文件是否存在于计算机上,使用自动化或动态数据交换 (DDE) 与其他基于 Microsoft Windows 的程序(如 Excel)通信,还可以调用 Windows 动态链接库 (DLL) 中的函数。
一次一条地操纵记录 您可以使用 VBA 来逐条处理记录集,一次一条记录,并对每条记录执行操作。相反,宏将同时处理整个记录集。
Access软件网官方交流QQ群(群号:39785885)
Access源码网店