4

我从小道消息中听说即将推出的 Access2010 具有数据宏功能,该功能将首次向 Access 数据引擎表添加类似触发器的功能。有人对此有更多详细信息吗?例如,他们可以在代码中创建(ACEDAO、SQL DDL 等)吗?如果从 Access 用户界面外部(例如通过 ODBC、OLE DB 等)修改数据,是否运行数据宏?

4

2 回答 2

9

好的,更多信息。

如果从 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

于 2009-07-22T03:48:28.487 回答
1

有关此新功能的更多信息今天发布在 MS Access 开发团队的博客上,它肯定提供了有关上述评论中提出的关键问题的更多信息。

于 2009-08-14T03:32:26.193 回答