Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: Access 2013, Office 2013
Событие After Delete возникает после удаления записи.
Примечание.
Событие After Delete доступно только в макросах данных.
Замечания
Используйте событие After Delete для выполнения любых действий, которые необходимо выполнить при удалении записи. Распространенные варианты использования после удаления включают применение бизнес-правил, рабочих процессов, обновление совокупного итога и отправку уведомлений.
При возникновении события After Delete значения, содержащиеся в удаленной записи, по-прежнему доступны. Может потребоваться использовать удаленное значение для увеличения или уменьшения суммы, создания журнала аудита или сравнения с существующим значением в аргументе WhereCondition .
Вы можете использовать функцию Updated("Имя поля"), чтобы определить, изменилось ли поле. В следующем примере кода показано, как использовать инструкцию If, чтобы определить, изменилось ли поле PaidInFull.
If Updated("PaidInFull") Then
/* Perform actions based on changes to the field. */
End If
Доступ к значению в удаленной записи можно использовать с помощью следующего синтаксиса.
[Old].[Field Name]
Например, чтобы получить доступ к значению поля QuantityInStock в удаленной записи, используйте следующий синтаксис.
[Old].[QuantityInStock]
Значения, содержащиеся в удаленной записи, удаляются безвозвратно по завершении события After Delete .
Следующие макрокоманды можно использовать в событии После удаления .
Тип команды |
Команда |
---|---|
Управление |
|
Управление |
|
Управление |
|
Блок данных |
|
Блок данных |
|
Блок данных |
|
Блок данных |
|
Действия с данными |
|
Действия с данными |
|
Действия с данными |
|
Действия с данными |
|
Действия с данными |
|
Действия с данными |
|
Действия с данными |
|
Действия с данными |
|
Действия с данными |
|
Действия с данными |
|
Действия с данными |
|
Действия с данными |
|
Действия с данными |
Чтобы создать макрос данных, который фиксирует событие After Delete , выполните следующие действия.
Откройте таблицу, для которой требуется записать событие After Delete .
На вкладке Таблица в группе События после щелкните После удаления.
В конструкторе макросов отображается пустой макрос данных.
Пример
В следующем примере кода событие After Delete используется для выполнения некоторой обработки при удалении записи из таблицы Пожертвования. Когда запись удаляется, сумма пожертвования субразгируется из поля ПожертвованияReceived в таблице ПожертвованияReceived и TotalDonatedField в таблице Доноров.
Щелкните здесь, чтобы просмотреть копию макроса, который можно вставить в конструктор макросов.
Чтобы просмотреть этот пример в конструкторе макросов, выполните следующие действия.
Откройте таблицу, для которой требуется записать событие After Delete .
На вкладке Таблица в группе События после щелкните После удаления.
Выберите приведенный ниже код и нажмите клавиши CTRL+C, чтобы скопировать его в буфер обмена.
Активируйте окно конструктора макросов и нажмите клавиши CTRL+V.
<?xml version="1.0" encoding="UTF-16" standalone="no"?>
<DataMacros xmlns="http://schemas.microsoft.com/office/accessservices/2009/04/application">
<DataMacro Event="AfterDelete">
<Statements>
<Comment>Initialize a variable and assign the old</Comment>
<Action Name="SetLocalVar">
<Argument Name="Name">varAmount</Argument>
<Argument Name="Value">[Old].[Amount]</Argument>
</Action>
<ConditionalBlock>
<If>
<Condition>Not (IsNull([Old].[CampaignID]))</Condition>
<Statements>
<ForEachRecord>
<Data>
<Reference>Campaigns</Reference>
<WhereCondition>[ID]=[Old].[CampaignID]</WhereCondition>
</Data>
<Statements>
<EditRecord>
<Data />
<Statements>
<Action Collapsed="true" 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([Old].[DonorID]))</Condition>
<Statements>
<ForEachRecord>
<Data>
<Reference>Donors</Reference>
<WhereCondition>[ID]=[Old].[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 =[Old].[Amount]
If Not(IsNull([Old].[CampaignID]])) Then
For Each Record In Campaigns
Where Condition =[ID]=[Old].[CampaignID]
Alias
EditRecord
Alias
SetField ([DonationsReceived], [DonationsReceived] - [varAmount])
End EditRecord
End If
If Not(IsNull([Old].[DonorID]])) Then
For Each Record In Donors
Where Condition =[ID]=[Old].[DonorID]
Alias
EditRecord
Alias
SetField
Name [TotalDonated]
Value =[TotalDonated]-[varAmount]
End EditRecord
End If