Los eventos de Access
Definición
Un evento permite ejecutar una o varias instrucciones como resultado de una acción por parte de un usuario. La acción desencadena la ejecución del código del procedimiento del evento correspondiente, que está relacionado con el objeto activo.
Para asociar un código VBA durante una acción sobre un objeto, podemos pasar por la pestaña Evento, en la pestaña de navegación Hoja de propiedades:
También es posible pasar en el editor VBE, por las zonas de listas desplegables (zona izquierda para seleccionar el objeto y zona derecha para seleccionar el evento).
El objetivo de este capítulo es revisar los diferentes tipos de eventos, mostrar cómo anular algunos y mencionar el orden en que se desencadenan los eventos durante acciones simples.
Tipos de eventos
Las descripciones también se aplican a los estados.
1. Los eventos durante la apertura
Evento (Propiedad) |
Se produce |
Anulable |
Open (durante la apertura) |
Durante la apertura del formulario, pero antes de que se muestre el primer registro. |
Sí |
Load (durante el cambio) |
Durante la apertura del formulario, una vez mostrado el primer registro. |
No |
Resize (durante el redimensionamiento) |
Cuando el formulario cambia de dimensiones, así como durante su primera visualización. |
No |
Activate (durante la activación) |
Cuando el formulario se hace activo. |
No |
Current (durante la activación) |
Durante la apertura del formulario, antes de que el primer registro se convierta en registro actual. |
No |
2. Los eventos durante el cierre
Evento (Propiedad) |
Se produce |
Anulable |
Unload (durante la liberación) |
Durante el cierre del formulario, una vez que se han liberado los registros, pero antes de la desaparición del formulario. |
Sí |
Deactivate (durante la desactivación) |
Durante el cierre del formulario, así como durante la activación de otra ventana, antes de que la otra ventana se active. |
No |
Close (durante el cierre) |
Cuando el formulario desaparece durante el cierre. |
No |
3. Los eventos de adición, eliminación o modificación de registros
Evento (Propiedad) |
Se produce |
Anulable |
BeforeInsert (antes de la inserción) |
Durante la escritura del primer carácter de un nuevo registro, pero antes la adición del nuevo registro. |
Sí |
AfterInsert (después de la inserción) |
Después de la adición de un nuevo registro en la tabla. |
No |
BeforeUpdate (antes actualización) |
Antes de la actualización de un registro o de un control (modificación de los datos). |
Sí |
Change (durante el cambio) |
Durante la modificación del contenido de una lista modificable o de una zona de texto. |
No |
Updated (durante la actualización) |
Cuando los datos de un objeto OLE se han modificado. |
No |
AfterUpdate (después actualización) |
Después de la actualización de un registro o de un control (modificación de las datos). |
No |
BeforeDelConfirm (antes eliminación) |
Después de que el usuario elimine los registros, pero antes de que Access pida confirmación de esta eliminación. |
Sí |
Delete (durante la eliminación) |
Antes de la eliminación efectiva (pulsar la tecla Supr del teclado, por ejemplo). |
Sí |
AfterDelConfirm (después de la eliminación) |
Antes de que el usuario haya respondido a la confirmación de la eliminación de los registros. |
No |
NotInList (durante la ausencia en la lista) |
Durante la introducción de un valor no disponible en una lista y cuando la lista está limitada. |
No |
4. Los eventos de detección de un error, modificación y anulación
Evento (Propiedad) |
Se produce |
Anulable |
Undo (durante la anulación) |
Cuando el usuario anula su modificación (pulsa la tecla [Esc] del teclado). |
Sí |
Dirty (si hay modificación) |
Cuando cambia el contenido de un formulario o una zona de lista desplegable. También tiene lugar cuando el usuario cambia de página en una pestaña. |
Sí |
Error (durante el error) |
Cuando se produce un error. |
No |
5. Los eventos relacionados con el foco
Evento (Propiedad) |
Se produce |
Anulable |
Enter... |
Anulación de un evento
Es posible, y algunas veces muy práctico, anular un evento. Los diferentes eventos listados anteriormente se pueden o no anular. Para anular un evento, es posible pasar como argumento AnularEvento a la macro, o poner a True la variable Cancel en el código VBA.
Orden de realización de los eventos
En algunas situaciones, tienen lugar varios eventos unos después de otros. Este capítulo especifica cómo funcionan. Los eventos se representan en orden cronológico de arriba abajo.
1. Durante la apertura de un formulario
2. Durante el cierre de un formulario
3. Durante la activación de un formulario ya abierto
4. Durante la actualización de un control
Tiene lugar cuando el usuario termina de escribir y pasa al siguiente control.
5. Durante la actualización de un registro
Tiene lugar cuando el usuario termina de escribir en un registro y pasa a otro registro.
6. Durante la eliminación de un registro
7. Durante la pulsación de una tecla
Orden de los eventos durante una actualización
En Microsoft Access, los eventos relacionados con la actualización se desencadenan a dos niveles diferentes:
1. A nivel del control
Durante la actualización de un control, se ejecutan los eventos BeforeUpdate y AfterUpdate del control. Preceden a los eventos del formulario.
2. A nivel de un registro
Durante la actualización de un registro, se ejecutan los eventos BeforeUpdate y AfterUpdate del formulario.