Makroereignis "Nach Löschvorgang"
Gilt für: Access 2013, Office 2013
Das Ereignis Nach Löschvorgang tritt auf, nachdem ein Datensatz gelöscht wurde.
Hinweis
Das Ereignis Nach Löschvorgang ist nur in Datenmakros verfügbar.
Hinweise
Mit dem Ereignis Nach Löschvorgang führen Sie sämtliche Aktionen nach dem Löschen eines Datensatzes aus. Häufig wird Nach Löschvorgang verwendet, um Geschäftsregeln und Workflows zu erzwingen, einen Aggregatgesamtwert zu aktualisieren oder Benachrichtigungen zu senden.
Wenn das Ereignis Nach Löschvorgang aufgetreten ist, bleiben die im gelöschten Datensatz enthaltenen Werte verfügbar. Sie können einen gelöschten Wert verwenden, um eine Summe zu inkrementieren oder zu verringern, einen Überwachungspfad zu erstellen oder mit einem vorhandenen Wert in einem WhereCondition-Argument zu vergleichen.
Mithilfe der Funktion Aktualisiert(„Feldname“) können Sie feststellen, ob sich ein Feld verändert hat. The following code example shows how to use an If statement to determine determine whether the PaidInFull field has been changed.
If Updated("PaidInFull") Then
/* Perform actions based on changes to the field. */
End If
Mit der folgenden Syntax können Sie auf einen Wert im gelöschten Datensatz zugreifen.
[Old].[Field Name]
For example, to access the value of the QuantityInStock field in the deleted record, use the following syntax.
[Old].[QuantityInStock]
Am Ende des Ereignisses Nach Löschvorgang werden die Werte im gelöschten Datensatz dauerhaft gelöscht.
Die folgenden Makrobefehle können im After Delete-Ereignis verwendet werden.
Befehlstyp |
Befehl |
---|---|
Programmablauf |
|
Programmablauf |
|
Programmablauf |
|
Datenblock |
|
Datenblock |
|
Datenblock |
|
Datenblock |
|
Datenaktion |
|
Datenaktion |
|
Datenaktion |
|
Datenaktion |
|
Datenaktion |
|
Datenaktion |
|
Datenaktion |
|
Datenaktion |
|
Datenaktion |
|
Datenaktion |
|
Datenaktion |
|
Datenaktion |
|
Datenaktion |
Zum Erstellen eines Datenmakros, mit dem das Ereignis Nach Löschvorgang erfasst wird, führen Sie die folgenden Schritte aus.
Öffnen Sie die Tabelle, für die Sie das Ereignis Nach Löschvorgang erfassen möchten.
Klicken Sie auf der Registerkarte Tabelle in der Gruppe Nachfolgeereignisse auf Nach Löschvorgang.
Im Makro-Designer wird ein leeres Datenmakro angezeigt.
Beispiel
The following code example uses the After Delete event to perform some processing when a record is deleted from the Donations table. When a record is deleted, the amount of the donation is subracted form the DonationsReceived field in the DonationsReceived table and the TotalDonatedField in the Donors table.
Klicken Sie hier, um eine Kopie des Makros anzuzeigen, das Sie in Makro-Designer einfügen können.
Zum Anzeigen dieses Beispiels im Makro-Designer gehen Sie folgendermaßen vor:
Öffnen Sie die Tabelle, für die Sie das Ereignis Nach Löschvorgang erfassen möchten.
Klicken Sie auf der Registerkarte Tabelle in der Gruppe Nachfolgeereignisse auf Nach Löschvorgang.
Wählen Sie den unten dargestellten Code aus, und drücken Sie dann STRG+C, um diesen in die Zwischenablage zu kopieren.
Aktivieren Sie das Makro-Designer-Fenster, und drücken Sie dann STRG+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