我听说即将推出的Access2010具有数据宏功能,这将首次为Access数据引擎表添加类似触发器的功能。有没有人对此有进一步的细节?例如,他们可以用代码创建(ACEDAO,SQL DDL等)吗?如果从Access用户界面外部修改数据,则数据宏是否运行,例如通过ODBC,OLE DB等?
答案 0 :(得分: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宏(与以前一样常规),现在是新的所谓数据宏。表级宏可以向屏幕显示错误消息是没有意义的。因此记录的任何错误都会进入表格。还有一些新的日志记录命令可以让您将自己的自定义错误写入该表。这里设计精美简约。这是错误日志表的样子:
(来源: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)
在上面我们可以使用msgbox等,因为这不是表级宏。因此,在编写表级宏而不是常规宏时,可以自动限制可用的命令。我们用来区分这两种宏的术语是UI宏和数据宏。
以上是关于我在公共场合可以谈论的所有内容。然而,关于这些宏几乎没有更多关于这些宏的真正特征,我还不能公开讨论,因为我仍然在这些功能的NDA下。但是有更多的惊喜来到这里。
以下是我们拥有的表触发器类型的屏幕截图:
(来源:kallal.ca)
答案 1 :(得分:1)
有关此新功能的更多信息是MS Access开发团队博客上的posted today,它肯定会提供有关上述评论中提出的关键问题的更多信息。