好的,更多信息。
如果从 Access 用户界面外部修改数据,例如,数据宏是否运行通过 ODBC、OLE DB 等?
是的,它确实。
这些真正的触发器位于数据引擎级别。因此,使用 ado、dao 甚至在 ms-access 中的表视图中编辑表都意味着触发器将被触发。这些触发器还包括您的计算机上甚至没有安装 ms-access 的情况。
当然,您需要安装 JET(在本文的其余部分中,我将使用术语 ACE)。请记住,直到 2007 年,访问团队才获得了 JET 的所有权。他们现在可以根据自己的需求自由增强该引擎。我们从 2007 年开始看到 ACE 发生了一些变化,现在我们将在 2010 年看到更多变化。其中一些功能对我来说仍然是 NDA……但我会在这里尽可能多地透露。
例如,它们可以在代码中创建(ACEDAO、SQL DDL 等)吗?
也许是在代码中,但不是使用 SQL ddl。触发器不是 sql 命令。请记住,对于 Oracle、Sql 服务器或市场上的大多数系统,它们都倾向于拥有自己的触发器自定义语言。
因此,在新的 ACE 中,您将编写所谓的数据宏。您可以使用 ms-access 中的宏编辑器。这些是老式的访问宏,但编辑器已完全重新设计。新的宏还具有子例程、循环、if then else 块和一种记录集类型。请记住,我们在 2007 年的宏中获得了创建临时变量的能力。 2010 年,这一功能得到扩展,还包括局部变量和上述新功能。
现有宏命令的语法与以前的版本相同。然而,我们有一个新的 IDE,并且添加了上述所有很酷的命令。因此,我们现在有两种类型的宏。 UI 宏(和以前一样常规)和现在新的所谓的数据宏。表级宏能够在屏幕上显示错误消息是没有意义的。因此记录的任何错误都会记录到表中。还有一些新的日志记录命令可让您将自己的自定义错误写入该表。这里有一个辉煌而简单的设计。错误日志表如下所示:
(source: 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 时,维持 tblFruits 中的库存水平
编辑或修改。
该宏如下所示:
(source: kallal.ca)
请注意上面的内容是多么简单。请注意,在 IDE 中,如果您单击代码的一部分,您将获得旧式宏类型编辑,您可以在其中输入命令的值(这与 2010 年之前类似,但现在参数和编辑发生在代码,而不是以前版本中出现在屏幕底部的面板)。
这是另一个屏幕截图,其中我尝试了执行循环和调用子例程的功能。
(source: kallal.ca)
在上面我们可以使用 msgboxs 等,因为这不是表级宏。因此,当您编写表级宏而不是常规宏时,可用命令会自动受到限制。我们用来区分这两类宏的术语是 UI 宏和数据宏。
以上就是我在公开场合能说的全部内容了。然而,关于这些宏,还有一些真正简洁的功能,我还不能公开谈论这些功能,因为我仍然在这些功能上遵守保密协议。但来这里还有更多惊喜。
这是我们拥有的表触发器类型的屏幕截图:
(source: kallal.ca)