代码之家  ›  专栏  ›  技术社区  ›  onedaywhen

Access2010中的数据宏:触发器?

  •  4
  • onedaywhen  · 技术社区  · 17 年前

    我听说即将推出的Access2010有一个数据宏功能,它将首次为Access数据引擎表添加类似触发器的功能。有人对此有进一步的了解吗?例如,它们可以在代码中创建吗(ACEDAO、SQLDDL等)?如果从Access用户界面外部(例如通过ODBC、OLE DB等)修改数据,数据宏是否会运行?

    2 回复  |  直到 17 年前
        1
  •  9
  •   Albert D. Kallal    17 年前

    好的,更多信息。

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

    确实如此。

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

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

    例如,它们可以在代码中创建吗(ACEDAO、SQLDDL等)?

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

    现有宏命令的语法与以前的版本相同。然而,我们有一个新的光滑的IDE,并添加了所有上述很酷的命令。因此,我们现在有两种类型的宏。UI宏(与以前一样常规)和现在的新的所谓数据宏。表级宏能够在屏幕上显示错误消息是没有意义的。因此,记录的任何错误都会进入表中。还有一些新的日志命令,可以让您将自己的自定义错误写入该表。这里有一个辉煌而简单的设计。错误日志表如下:

    alt text
    (来源: kallal.ca )

    例如,这是一个数据宏,它将维护表中的库存总计。在这个例子中,我将假设主库存记录存在。然后我们有一个订单明细表。如果用户编辑订单表中的任何值,我们希望主表自动更新库存水平。

    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中设置一个触发器,用于更新 编辑或修改。

    alt text
    (来源: kallal.ca )

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

    这是另一个屏幕截图,我在其中玩了一个循环和调用子例程的能力。

    alt text
    (来源: kallal.ca )

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

    以上是我在公共场合能说的全部内容。然而,关于这些宏,我还不能公开谈论的真正整洁的功能很少,因为我对这些功能仍处于保密状态。但这里还有更多很酷的惊喜。

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

    alt text
    (来源: kallal.ca )

        2
  •  1
  •   David-W-Fenton    16 年前

    有关此新功能的更多信息,请访问 posted today 在MS Access开发团队的博客上,它无疑提供了有关上述评论中提出的关键问题的更多信息。