After Update 宏事件
适用于:Access 2013、Office 2013
在更改记录之后会发生“更新后”事件。
注意
“更新后”事件仅适用于数据宏。
说明
使用“更新后”事件可以执行您希望在更改记录时发生的任何操作。 “插入后”通常用于强制实施业务规则、更新聚合总计和发送通知。
可以使用 Updated("Field Name") 函数确定某个字段是否已更改。 下面的代码示例演示了如何使用 If 语句来确定 PaidInFull 字段是否已更改。
If Updated("PaidInFull") Then
/* Perform actions based on changes to the field. */
End If
可以使用以下语法访问字段中以前的某个值。
[Old].[Field Name]
例如,若要访问 QuantityInStock 字段以前的值,请使用以下语法。
[Old].[QuantityInStock]
当“更新后”事件结束时,以前的值将被永久删除。
下表列出了可在“更新后”事件中使用的宏命令。
命令类型 |
命令 |
---|---|
程序流 |
|
程序流 |
|
程序流 |
|
数据块 |
|
数据块 |
|
数据块 |
|
数据块 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
若要创建可捕获“更新后”事件的数据宏,请执行以下步骤:
打开要捕获其“更新后”事件的表格。
在“表格”选项卡上的“后期事件”组中,单击“更新后”。
宏设计器中将显示一个空白数据宏。
示例
下面的代码示例使用“更新后”事件运行指定的数据宏,每当问题状态更新时,该数据宏都会向“注释”(Comment) 表格中添加一条记录。
单击此处查看可以粘贴到宏设计器中的宏副本。
若要在宏设计器查看此示例,请执行以下步骤:
打开要捕获其“更新后”事件的表格。
在“表格”选项卡上的“后期事件”组中,单击“更新后”。
选择以下代码示例中的代码,然后按 Ctrl+C 将其复制到剪贴板。
激活宏设计器窗口,然后按 Ctrl+V。
<DataMacros xmlns="http://schemas.microsoft.com/office/accessservices/2009/04/application">
<DataMacro Event="AfterUpdate">
<Statements>
<ConditionalBlock>
<If>
<Condition>Updated("Status")</Condition>
<Statements>
<Action Name="RunDataMacro">
<Argument Name="MacroName">Comments.AddComment</Argument>
<Parameters>
<Parameter Name="prmRelatedID" Value="[ID]" />
<Parameter Name="prmComment" Value=""-- Status changed to " & [Status]" />
<Parameter Name="prmUserID" Value="[UserID]" />
</Parameters>
</Action>
</Statements>
</If>
</ConditionalBlock>
<ConditionalBlock>
<If>
<Condition>Updated("Resolution")</Condition>
<Statements>
<Action Name="RunDataMacro">
<Argument Name="MacroName">Comments.AddComment</Argument>
<Parameters>
<Parameter Name="prmRelatedID" Value="[ID]" />
<Parameter Name="prmUserID" Value="[UserID]" />
<Parameter Name="prmComment" Value=""-- Issue resolved as " & [Resolution]" />
</Parameters>
</Action>
</Statements>
</If>
</ConditionalBlock>
</Statements>
</DataMacro>
</DataMacros>
If Updated("Status") Then
RunDataMacro
Macro Name Comments.AddComment
Parameters
prmRelatedID = [ID]
prmComment ="--Status Changes to "&[Status]
prmUserID =[ChangedByUserID]
End If
If Updated("Resolution") Then
RunDataMacro
Macro Name Comments.AddComment
Parameters
prmRelatedID = [ID]
prmUserID =[ChangedByUserID]
prmComment ="--Issue Resolved as "&[Status]
End If