Partager via


After Delete, événement de macro

S’applique à : Access 2013, Office 2013

L’événement Après suppression se produit après la suppression d’un enregistrement.

Remarque

L’événement Après suppression est disponible uniquement dans les macros de données.

Remarques

Utilisez l’événement Après suppression pour effectuer toute action souhaitée lors de la suppression d’un enregistrement. L'événement Après suppression peut par exemple servir à appliquer des règles professionnelles ou des flux de travail, à mettre à jour un total agrégé et à envoyer des notifications.

Lorsque l'événement Après suppression se produit, les valeurs contenues dans l'enregistrement supprimé sont toujours disponibles. Vous pouvez utiliser une valeur supprimée pour incrémenter ou décrémenter un total, créer une piste d’audit ou comparer une valeur existante dans un argument WhereCondition .

Vous pouvez utiliser la fonction Updated("Nom de champ") pour déterminer si un champ a changé. L’exemple de code suivant montre comment utiliser une instruction If pour déterminer si le champ PaidInFull a été modifié.

 
If  Updated("PaidInFull")   Then 
 
    /* Perform actions based on changes to the field. */ 
 
End If 
 

Vous pouvez accéder à une valeur dans l'enregistrement supprimé en utilisant la syntaxe suivante.

[Old].[Field Name]

Par exemple, pour accéder à la valeur du champ QuantityInStock dans l'enregistrement supprimé, utilisez la syntaxe suivante.

[Old].[QuantityInStock]

Les valeurs contenues dans l'enregistrement supprimé sont supprimées de manière définitive lorsque l'événement Après suppression se termine.

Les commandes de macro suivantes peuvent être utilisées dans l’événement After Delete .

Type de commande

Command

Déroulement de programme

Comment, instruction de macro

Flux de programme

Group, instruction de macro

Flux de programme

If...Then...Else, bloc de macro

Bloc de données

CreateRecord, action de macro

Bloc de données

EditRecord, action de macro

Bloc de données

ForEachRecord, action de macro

Bloc de données

LookupRecord, bloc de données

Action de données

CancelRecordChange, action de macro

Action de données

ClearMacroError, action de macro

Action de données

DeleteRecord, action de macro

Action de données

ExitForEachRecord, action de macro

Action de données

LogEvent, action de macro

Action de données

OnError, action de macro

Action de données

RaiseError, action de macro

Action de données

RunDataMacro, action de macro

Action de données

SendEmail, action de macro

Action de données

SetField, action de macro

Action de données

SetLocalVar, action de macro

Action de données

StopAllMacros, action de macro

Action de données

StopMacro, action de macro

Pour créer une macro de données qui capture l’événement Après suppression, procédez comme suit.

  1. Ouvrez la table pour laquelle vous souhaitez capturer l’événement Après suppression.

  2. Sous l’onglet Table, dans le groupe Événements Après, cliquez sur Après suppression.

Une macro de données vide s’affiche dans le concepteur de macros.

Exemple

L'exemple de code suivant utilise l'événement Après suppression pour effectuer un traitement lorsqu'un enregistrement est supprimé de la table Donations. Lorsqu'un enregistrement est supprimé, le montant d'un don est soustrait du champ DonationsReceived dans la table DonationsReceived et du champ TotalDonatedField dans la table Donors.

Cliquez ici pour afficher une copie de la macro que vous pouvez coller dans le Concepteur de macros.

Pour afficher cet exemple dans le concepteur de macros, procédez comme suit.

  1. Ouvrez la table pour laquelle vous souhaitez capturer l’événement Après suppression.

  2. Sous l’onglet Table, dans le groupe Événements Après, cliquez sur Après suppression.

  3. Sélectionnez le code ci-dessous et appuyez sur Ctrl+C pour le copier dans le Presse-papiers.

  4. Activez la fenêtre du concepteur de macros, puis appuyez sur 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