gpt4 book ai didi

ms-access - Access2010中的数据宏:触发器?

转载 作者:行者123 更新时间:2023-12-02 23:02:49 34 4
gpt4 key购买 nike

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

最佳答案

好的,更多信息。


如果从Access用户界面外部修改了数据,则Data Macro是否运行?通过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中使用宏编辑器。这些是老式的访问宏,但编辑器已完全重做。新的宏还具有子例程,循环(如果有的话),块和一种记录集。记住,我们获得了在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

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

以上是我在公共场合可以谈论的所有内容。但是,关于这些宏的其他功能还很少,我还无法在公共场合谈论,因为我仍在NDA上关注这些功能。但是,这里还有更多很棒的惊喜。

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

alt text
(来源: kallal.ca

关于ms-access - Access2010中的数据宏:触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1159394/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com