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 宏语句

程序流

Group 宏语句

程序流

If...Then...Else 宏程序块

数据块

CreateRecord 宏操作

数据块

EditRecord 宏操作

数据块

ForEachRecord 宏操作

数据块

LookupRecord 数据块

数据操作

CancelRecordChange 宏操作

数据操作

ClearMacroError 宏操作

数据操作

DeleteRecord 宏操作

数据操作

ExitForEachRecord 宏操作

数据操作

LogEvent 宏操作

数据操作

OnError 宏操作

数据操作

RaiseError 宏操作

数据操作

RunDataMacro 宏操作

数据操作

SendEmail 宏操作

数据操作

SetField 宏操作

数据操作

SetLocalVar 宏操作

数据操作

StopAllMacros 宏操作

数据操作

StopMacro 宏操作

若要创建可捕获“更新后”事件的数据宏,请执行以下步骤:

  1. 打开要捕获其“更新后”事件的表格。

  2. “表格”选项卡上的“后期事件”组中,单击“更新后”

宏设计器中将显示一个空白数据宏。

示例

下面的代码示例使用“更新后”事件运行指定的数据宏,每当问题状态更新时,该数据宏都会向“注释”(Comment) 表格中添加一条记录。

单击此处查看可以粘贴到宏设计器中的宏副本。

若要在宏设计器查看此示例,请执行以下步骤:

  1. 打开要捕获其“更新后”事件的表格。

  2. “表格”选项卡上的“后期事件”组中,单击“更新后”

  3. 选择以下代码示例中的代码,然后按 Ctrl+C 将其复制到剪贴板。

  4. 激活宏设计器窗口,然后按 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="&quot;-- Status changed to &quot; &amp; [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="&quot;-- Issue resolved as &quot; &amp; [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