我从小道消息中听说即将推出的 Access2010 具有数据宏功能,该功能将首次向 Access 数据引擎表添加类似触发器的功能。有人对此有更多详细信息吗?例如,他们可以在代码中创建(ACEDAO、SQL DDL 等)吗?如果从 Access 用户界面外部(例如通过 ODBC、OLE DB 等)修改数据,是否运行数据宏?
2 回答
好的,更多信息。
如果从 Access 用户界面外部(例如通过 ODBC、OLE DB 等)修改数据,是否运行数据宏?
是的,它确实。
这些真正的触发器处于数据引擎级别。因此,使用 ado、dao 甚至在 ms-access 中的表视图中编辑表意味着触发器将触发。这些触发器还包括您甚至没有在计算机上安装 ms-access 的情况。
您当然需要安装 JET(对于本文的其余部分,我将使用术语 ACE)。请记住,只有在 access 2007 中,访问团队才获得 JET 的所有权。他们现在可以根据自己的需要自由地增强这个引擎。我们在 2007 年开始看到 ACE 的一些变化,现在我们将看到 2010 年的更多变化。其中一些功能对我来说仍然是 NDA……但我会在这里尽可能多地透露。
例如,他们可以在代码中创建(ACEDAO、SQL DDL 等)吗?
在代码中,perahps,但不是 SQL ddl。触发器不是 sql 命令。请记住,对于市场上的 Oracle、Sql server 或 MOST 系统,无论如何,它们都倾向于使用自己的 OWN 自定义语言作为触发器。
因此,您将在新的 ACE 中编写所谓的数据宏。您在 ms-access 中使用宏编辑器。这些是老式的访问宏,但编辑器已完全重新完成。新的宏还具有子例程、循环、if then else 块和一种记录集。请记住,我们获得了在 2007 宏中创建临时变量的能力。在 2010 年,这被扩展为还包括局部变量和以上新功能。
现有宏命令的语法与以前的版本相同。但是,我们有一个新的 IDE 以及上面添加的所有这些很酷的命令。因此,我们现在有两种类型的宏。UI 宏(和以前一样),现在是新的所谓的数据宏。表级宏能够在屏幕上显示错误消息是没有意义的。因此,记录的任何错误都会进入表中。还有一些新的日志记录命令可让您将自己的自定义错误写入该表。这里有一个出色而简单的设计。该错误日志表如下所示:
(来源:kallal.ca)
在一个庞大的 IDE、庞大的框架和可怕的庞大代码库需要更新表格中的简单行的世界中,我可以说数据宏是最令人耳目一新的功能。他们感觉很像原始 dbaseII 的工作方式。它们非常简单,但充满致命的力量,因为它们在桌面级别运行。
例如,这是一个数据宏,它将维护一个表的库存总计。在此示例中,我将假设存在主库存记录。然后我们有一个订单详细信息表。如果用户编辑订单表中的任何值,我们希望主表自动更新库存水平。
所以我们有:我有两张桌子
tblFruits: main data fruit inventory table
id (autonumber)
Fruit text
OnHand (number value of fruit in inventory)
tblFruitsOrder
id (autonumber)
Fruit_id (FK to tblFruts.ID)
QtyOrder (number of fruit to order)
这是一个简单的测试
因此,我们将在 tblFruitsOrder 中有一个触发器,当 QtyOrder 字段被编辑或修改时,它将更新 + 维护 tblFruits 中的库存水平。
这是宏的样子:
(来源:kallal.ca)
请注意上面的内容非常简单。请注意,在 IDE 中,如果您单击代码的一部分,则会获得旧样式的宏类型编辑,您可以在其中输入命令的值(这类似于 2010 年之前,但现在参数和编辑发生在代码,而不是以前版本中出现在屏幕底部的面板)。
这是另一个屏幕截图,我在其中玩了一个循环和调用子程序的能力。
(来源:kallal.ca)
在上面我们可以使用 msgboxs 等,因为这不是表级宏。因此,当您编写表级宏而不是常规宏时,可用的命令会自动为您限制。我们用来区分这两种宏的术语是 UI 宏和数据宏。
以上是我能在公共场合谈论的所有内容。然而,关于这些宏的更多真正整洁的功能,我还不能公开谈论,因为我仍然在这些功能的 NDA 之下。但这里还有更酷的惊喜。
这是我们拥有的表触发器类型的屏幕截图:
(来源:kallal.ca)
有关此新功能的更多信息今天发布在 MS Access 开发团队的博客上,它肯定提供了有关上述评论中提出的关键问题的更多信息。