DBMNG数据库管理与应用

书籍是全世界的营养品。生活里没有书籍,就好像没有阳光;智慧里没有书籍,就好像鸟儿没有翅膀。
当前位置:首页 > Access > 应用案例

我应该使用宏还是应该使用VBA代码?

您应该根据两个因素来决定使用宏还是使用 VBA 代码:安全性和所需的功能。之所以要考虑安全性,是因为 VBA 可用于创建危害数据安全或损坏计算机上的文件的代码。如果您使用的数据库是由其他人创建的,那么仅当您知道该数据库的来源可靠时才应该启用 VBA 代码。如果您创建的数据库将被其他人使用,那么您应该尽量避免包括需要用户特别准许数据库为可信状态的编程工具。避免需要用户信任您的数据库的一般技术将在本节后面的内容中讲述。

有关启用或禁用可能不安全的内容的详细信息,请参阅在 Office 文档中启用或禁用宏一文(如本文其他地方所提及的那样,大多数其他 Microsoft Office 程序使用术语“宏”来指代 VBA 代码,因此不要混淆该术语与 Access 宏)。

为了帮助确保数据库的安全,您应该尽量在能使用宏时就使用宏,且仅对使用宏操作无法完成的操作使用 VBA 编程。此外,您应该尽量只使用不需要准许数据库为可信状态就可以运行的宏操作。以这样的方式限制宏操作的使用使您的用户可以确信,数据库中不包含任何可能会损坏其计算机上的数据或其他文件的编程。

在某种程度上,为了鼓励广泛使用宏,Office Access 2007 包含许多新的宏操作,与 Access 的早期版本相比,使用这些新的宏操作可以生成功能更加强大的宏。例如,您现在可以通过使用宏操作来创建和使用全局临时变量,并且可以通过使用新的错误处理宏操作更恰当地处理错误。在 Access 的早期版本中,这些类型的功能只有使用 VBA 时才可用。此外,在 Access 2007 中,您可以直接将宏嵌入到对象或控件的事件属性中。嵌入的宏将变成该对象或控件的一部分,并随该对象或控件一起被移动或复制。在 Access 的早期版本中,宏必须作为单独对象维护,这有时会使您的数据库更难维护。

向对象或控件添加编程时,您应该考虑以这样的优先顺序来使用以下内容:

  1. 宏,只包含不需要准许数据库为可信状态即可运行的操作
  2. 宏,包含需要准许数据库为可信状态才能运行的操作
  3. VBA 过程

生成宏时,您可以在不需要准许数据库为可信状态即可运行的操作的短列表与所有宏操作的长列表之间进行切换,方法是在宏生成器中单击“显示所有操作”。单击“显示所有操作”还会显示 RunCommand 宏操作的完整参数列表。有关生成宏的详细信息,请参阅了解宏一节,或者访问请参阅一节中的链接。

宏提供了完成许多编程任务的简单方法,例如打开和关闭窗体以及运行报表。您可以轻松快捷地绑定您创建的数据库对象,因为几乎没有需要您记住的语法;每个操作的参数都显示在宏生成器中。

除了宏提供的增强的安全性和易用性之外,如果您想要执行下列操作,那么您必须使用宏:

  • 将一个操作或一组操作分配给某个键。这需要创建一个名为 AutoKeys 的宏组。
  • 在数据库首次打开时执行一个操作或一系列操作。这需要创建一个名为 AutoExec 的宏。

 注释    AutoExec 宏在任何其他宏或 VBA 代码运行之前运行,即使您在“Access 选项”对话框中指定了启动窗体并将宏或 VBA 代码附加到了该窗体的 OnOpen 或 OnLoad 事件中也是如此。

如果您要执行下列任一操作,那么应该使用 VBA 编程而不是宏:

  • 使用内置函数或创建自己的函数    Access 中包括许多内置函数,例如 IPmt 函数,它可以计算应付利息。您可以使用这些内置函数执行计算,而无须创建复杂的表达式。通过使用 VBA 代码,您还可以创建自己的函数来执行超出表达式能力的计算或者替代复杂的表达式。此外,您还可以在表达式中使用您创建的函数向多个对象应用公共操作。
  • 创建或操纵对象    在大多数情况下,您会发现在对象的“设计”视图中创建和修改对象最容易。然而,在某些情况下,您可能想在代码中操纵对象的定义。通过使用 VBA,除了可以操纵数据库本身以外,您还可以操纵数据库中的所有对象。
  • 执行系统级操作    您可以在宏内执行 RunApp 操作,以便在 Access 中运行另一个程序(如 Microsoft Office Excel 2007),但您无法使用宏在 Access 外部执行更多其他操作。通过使用 VBA,您可以检查某个文件是否存在于计算机上,使用自动化或动态数据交换 (DDE) 与其他基于 Microsoft Windows 的程序(如 Office Excel 2007)通信,以及调用 Windows 动态链接库 (DLL) 中的函数。
  • 一次一条地操纵记录    您可以使用 VBA 来逐条处理记录集,一次一条记录,并对每条记录执行操作。相反,宏将同时处理整个记录集。

如果您在分发给其他人的数据库中确实使用了 VBA 代码,您应该考虑将该数据库打包并进行签名,以便用户可以确信该代码来源可靠。有关对数据库进行打包和签名的详细信息,请参阅保护 Access 2007 数据库一文。

本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2023 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号