“插入后”宏事件
适用于:Access 2013、Office 2013
在添加记录之后会发生“插入后”事件。
注意
“插入后”事件仅适用于数据宏。
说明
使用“插入后”事件可以执行您希望在向表中添加记录时发生的任何操作。 “插入后”通常用于强制实施业务规则、工作流,更新聚合总计和发送通知。
可以使用 Updated("Field Name") 函数确定某个字段是否已更改。 下面的代码示例演示了如何使用 If 语句来确定 PaidInFull 字段是否已更改。
If Updated("PaidInFull") Then
/* Perform actions based on changes to the field. */
End If
下表列出了可在“插入后”事件中使用的宏命令。
命令类型 |
命令 |
---|---|
程序流 |
|
程序流 |
|
程序流 |
|
数据块 |
|
数据块 |
|
数据块 |
|
数据块 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
|
数据操作 |
若要创建可捕获“插入后”事件的数据宏,请执行以下步骤。
打开要捕获其“插入后”事件的表格。
在“表格”选项卡上的“后期事件”组中,单击“插入后”。
宏设计器中将显示一个空白数据宏。
示例
以下代码示例使用插入后事件在将记录添加到 Donations 表时执行某些处理。 添加记录时,将向 Campaigns 表中的 DonationsReceived 字段和 Donors 表中的 TotalDonated 字段中添加捐赠金额。
单击此处查看可以粘贴到宏设计器中的宏副本。
若要在宏设计器查看此示例,请执行以下步骤:
打开要捕获其“插入后”事件的表格。
在“表格”选项卡上的“后期事件”组中,单击“插入后”。
选择以下代码示例中的代码,然后按 Ctrl+C 将其复制到剪贴板。
激活宏设计器窗口,然后按 Ctrl+V。
<DataMacros>
<DataMacro Event="AfterInsert">
<Statements>
<Comment>This data macro increments the DonationsReceived field in Campaigns and theAmountCollected field in Pledges </Comment>
<Action Name="SetLocalVar">
<Argument Name="Name">varAmount</Argument>
<Argument Name="Value">[Amount]</Argument>
</Action>
<ConditionalBlock>
<If>
<Condition>Not (IsNull([CampaignID]))</Condition>
<Statements>
<ForEachRecord>
<Data>
<Reference>Campaigns</Reference>
<WhereCondition>[ID]=[Donations].[CampaignID]</WhereCondition>
</Data>
<Statements>
<EditRecord>
<Data />
<Statements>
<Action Name="SetField">
<Argument Name="Field">[DonationsReceived]</Argument>
<Argument Name="Value">[DonationsReceived]+[varAmount]</Argument>
</Action>
</Statements>
</EditRecord>
</Statements>
</ForEachRecord>
</Statements>
</If>
</ConditionalBlock>
<ConditionalBlock>
<If>
<Condition>Not (IsNull([DonorID]))</Condition>
<Statements>
<ForEachRecord>
<Data>
<Reference>Donors</Reference>
<WhereCondition>[ID]=[Donations].[DonorID]</WhereCondition>
</Data>
<Statements>
<EditRecord>
<Data />
<Statements>
<Action Name="SetField">
<Argument Name="Field">[TotalDonated]</Argument>
<Argument Name="Value">[TotalDonated]+[varAmount]</Argument>
</Action>
</Statements>
</EditRecord>
</Statements>
</ForEachRecord>
</Statements>
</If>
</ConditionalBlock>
</Statements>
</DataMacro>
</DataMacros>
SetLocalVar
Name varAmount
Expression =[Amount]
If Not (IsNull([CampaignID])) Then
For Each Record In Campaigns
Where Condition =[ID]=[Donations].[CampaignID]
Alias
EditRecord
Alias
SetField
Name [DonationsReceived]
Value =[DonationsReceived]+[varAmount]
End EditRecord
End If
If Not (IsNull([DonorID])) Then
For Each Record In Donors
WhereCondition =[ID]=[Donations].[DonorID]
Alias
EditRecord
Alias
SetField
Name [TotalDonated]
Value =[TotalDonated]+[varAmount]
End EditRecord
End If