Access 2010中的数据宏:触发器?

问题描述 投票:4回答:2

我听说即将推出的Access2010具有数据宏功能,这将首次为Access数据引擎表添加类似触发器的功能。有没有人对此有进一步的细节?例如,他们可以用代码创建(ACEDAO,SQL DDL等)吗?如果从Access用户界面外部修改数据,则数据宏是否运行,例如通过ODBC,OLE DB等?

ms-access ms-access-2010
2个回答
9
投票

好的,多一点信息。

如果从Access用户界面外部修改数据,则数据宏是否运行,例如通过ODBC,OLE DB等?

是的,它确实。

这些真正的触发器位于数据引擎级别。因此,使用ado,dao甚至在ms-access中编辑表视图中的表意味着将触发触发器。这些触发器还包括您甚至没有在计算机上安装ms-access的方案。

您当然需要安装JET(对于本文的其余部分,我将使用术语ACE)。请记住,只有在访问2007中,访问团队才能获得JET的所有权。他们现在可以根据自己的需要自由地增强这种引擎。我们在2007年开始看到ACE的一些变化,现在我们将看到2010年的更多变化。其中一些功能对我来说仍然是NDA ......但我会在这里尽可能多地溢出。

例如,他们可以用代码创建(ACEDAO,SQL DDL等)吗?

在代码中,perahp,但不是SQL ddl。触发器不是sql命令。请记住,对于Oracle或市场上的Sql server或MOST系统,他们都倾向于为他们的触发器提供自己的OWN自定义语言。

在新的ACE中,您将编写所谓的数据宏。您可以在ms-access中使用宏编辑器。这些是老式的访问宏,但编辑器已经完全重新完成。新的宏也有子程序,循环,if then else块和一种记录集。请记住,我们已经获得了在2007宏中创建临时变量的功能。在2010年,这扩展到包括局部变量和以上新功能。

现有宏命令的语法与先前版本相同。但是,我们有一个新的光滑的IDE以及所有上面添加的酷命令。因此,我们现在有两种类型的宏。 UI宏(与以前一样常规),现在是新的所谓数据宏。表级宏可以向屏幕显示错误消息是没有意义的。因此记录的任何错误都会进入表格。还有一些新的日志记录命令可以让您将自己的自定义错误写入该表。这里设计精美简约。这是错误日志表的样子:

alt text (来源: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中的库存水平。

这是宏的样子:

alt text (来源:kallal.ca

注意上面的内容非常简单。请注意,在IDE中,如果单击代码的某个部分,则会获得旧样式宏类型编辑,您可以在其中输入命令的值(这类似于2010年之前,但现在参数和编辑发生在代码,而不是以前版本中屏幕底部显示的面板)。

这是另一个屏幕截图,我在其中玩能够循环并调用子程序。

alt text (来源:kallal.ca

在上面我们可以使用msgbox等,因为这不是表级宏。因此,在编写表级宏而不是常规宏时,可以自动限制可用的命令。我们用来区分两种类型宏的术语是UI宏和数据宏。

以上是关于我在公共场合可以谈论的所有内容。然而,关于这些宏几乎没有更多关于这些宏的真正特征,我还不能公开讨论,因为我仍然在这些功能的NDA下。但是有更多的惊喜来到这里。

以下是我们拥有的表触发器类型的屏幕截图:

alt text (来源:kallal.ca


1
投票

关于这个新功能的更多信息是MS Access开发团队博客上的posted today,它肯定提供了有关上述评论中提出的关键问题的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.