Compartir a través de


Después de eliminar (evento de macro)

Se aplica a: Access 2013, Office 2013

El evento Después de eliminar se produce después de eliminar un registro.

Nota:

El evento Después de eliminar solo está disponible en macros de datos.

Comentarios

Utilice el evento Después de eliminar para realizar cualquier acción que desee que se produzca cuando se elimina un registro. Después de eliminar se suele utilizar para exigir reglas de negocio, flujos de trabajo, actualizar un total agregado y enviar notificaciones.

Cuando se produce el evento Después de eliminar, los valores contenidos en el registro eliminado siguen estando disponibles. Es posible que quiera usar un valor eliminado para incrementar o reducir un total, crear un seguimiento de auditoría o compararlo con un valor existente en un argumento WhereCondition .

Puede utilizar la función Updated("Nombre del campo") para determinar si un campo ha cambiado. En el ejemplo de código siguiente se muestra cómo utilizar una instrucción If para determinar si se ha cambiado el campo PaidInFull.

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

Puede obtener acceso a un valor del registro eliminado mediante la sintaxis siguiente.

[Old].[Field Name]

Por ejemplo, para tener acceso al valor del campo QuantityInStock en el registro eliminado, utilice la sintaxis siguiente.

[Old].[QuantityInStock]

Cuando finaliza el evento Después de eliminar, se eliminan permanentemente los valores contenidos en el registro eliminado.

Los siguientes comandos de macro se pueden usar en el evento After Delete .

Tipo de comando

Comando

Flujo de programas

Comentario (instrucción de macro)

Flujo de programas

Grupo (instrucción de macro)

Flujo de programas

If...Then...Else (bloque de macro)

Bloque de datos

CrearRegistro (acción de macro)

Bloque de datos

EditarRegistro (acción de macro)

Bloque de datos

ParaCadaRegistro (acción de macro)

Bloque de datos

BuscarRegistro (bloque de datos)

Acción de datos

CancelarCambioDeRegistro (acción de macro)

Acción de datos

BorrarErrorDeMacro (acción de macro)

Acción de datos

EliminarRegistro (acción de macro)

Acción de datos

SalirDeCadaRegistro (acción de macro)

Acción de datos

RegistrarEvento (acción de macro)

Acción de datos

AlOcurrirError (acción de macro)

Acción de datos

ProvocarError (acción de macro)

Acción de datos

EjecutarMacroDeDatos (acción de macro)

Acción de datos

EnviarCorreoElectrónico (acción de macro)

Acción de datos

EstablecerCampo (acción de macro)

Acción de datos

EstablecerVariableLocal (acción de macro)

Acción de datos

DetenerTodasMacros (acción de macro)

Acción de datos

DetenerMacro (acción de macro)

Para crear una macro de datos que capture el evento Después de eliminar, utilice los pasos siguientes.

  1. Abra la tabla en la que desee capturar el evento Después de eliminar.

  2. En la ficha Tabla, en el grupo Eventos posteriores, haga clic en Después de eliminar.

Una macro de datos vacía se muestra en el Diseñador de macros.

Ejemplo

En el ejemplo de código siguiente se utiliza el evento Después de eliminar para realizar algún procesamiento cuando se elimina un registro de la tabla Donativos. Cuando se elimina un registro, la cantidad del donativo se resta del campo DonativosRecibidos de la tabla DonativosRecibidos y del campo TotalDonado de la tabla Donantes.

Haga clic aquí para ver una copia de la macro que puede pegar en el Diseñador de macros.

Para ver este ejemplo en el Diseñador de macros, utilice los pasos siguientes.

  1. Abra la tabla en la que desee capturar el evento Después de eliminar.

  2. En la ficha Tabla, en el grupo Eventos posteriores, haga clic en Después de eliminar.

  3. Seleccione el código que aparece debajo y a continuación, presione CTRL+C para copiarlo al Portapapeles.

  4. Active la ventana del Diseñador de macros y, a continuación, presione 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