Orden de eventos para objetos de base de datos

Importante:  Este artículo se ha traducido con traducción automática; vea la declinación de responsabilidades. Para su referencia, puede encontrar la versión en inglés de este artículo aquí.

Una sola acción (como mover de un control en un objeto a otro control) puede desencadenar varios eventos distintos, que se producen en una secuencia específica. Conocer cuándo se producirán los eventos y el orden en que se ejecutarán es importante, ya que puede afectar a cómo y cuándo se ejecutarán las macros o procedimientos de eventos. Por ejemplo, si hay dos procedimientos de eventos que se ejecutarán en un orden específico, asegúrese de que los eventos asociados se ejecuten en ese mismo orden.

En este artículo...

Orden de eventos para controles en formularios

Orden de eventos para registros en formularios

Orden de eventos para formularios y subformularios

Orden de eventos para pulsaciones de teclas y clics de mouse

Orden de eventos para informes y secciones de informes

Orden de eventos para controles en formularios

Los eventos se producen para los controles en los formularios al mover el foco a un control y al cambiar y actualizar datos en un control.

Nota: Microsoft Office Access muestra los nombres de evento de una forma ligeramente distinta en el Editor de Visual Basic que en la hoja de propiedades y en el Generador de macros. Por ejemplo, el evento denominado On Got Focus en la hoja de propiedades del formulario y en el Generador de macros se denomina GotFocus en el Editor de Visual Basic. En los ejemplos de este artículo se usa el formato de Visual Basic para Aplicaciones (VBA) para los nombres de evento.

Colocar el foco en un control

Al colocar el foco en un control de formulario (por ejemplo, al abrir un formulario que contiene uno o más controles activos, o bien al colocar el foco en otro control del mismo formulario), los eventos Enter y GotFocus se ejecutan en este orden:

Enter flecha GotFocus

Al abrir un formulario, los eventos Enter y GotFocus se ejecutan después de los eventos asociados con la apertura del formulario (Open, Activate y Current), de esta forma:

Open (formulario) flecha Activate (formulario) flecha Current (formulario) flecha Enter (control) flecha GotFocus (control)

Cuando el foco abandona un control de un formulario (por ejemplo, al cerrar un formulario que contiene uno o más controles activos, o bien al desplazarse a otro control del mismo formulario), los eventos Exit y LostFocus se ejecutan en este orden:

Exit flecha LostFocus

Al cerrar un formulario, los eventos Exit y LostFocus se ejecutan antes de los eventos asociados con el cierre del formulario (Unload, Deactivate y Close), de esta forma:

Exit (control) flecha LostFocus (control) flecha Unload (formulario) flecha Deactivate (formulario) flecha Close (formulario)

Cambiar y actualizar datos en un control

Al especificar o cambiar datos en un control de formulario y, después, colocar el foco en otro control, se ejecutan los eventos BeforeUpdate y AfterUpdate:

BeforeUpdate flecha AfterUpdate

Los eventos Exit y LostFocus de un control cuyos cambios de valores se producen después de los eventos BeforeUpdate y AfterUpdate:

BeforeUpdate flecha AfterUpdate flecha Exit flecha LostFocus

Al cambiar el texto de un cuadro de texto (o de una sección de cuadro de texto en un cuadro combinado), se ejecuta el evento Change. Este evento se ejecuta cada vez que cambia el contenido del control, pero antes de colocar el foco en otro control o registro (y, por lo tanto, antes de que se ejecuten los eventos BeforeUpdate y AfterUpdate). La siguiente secuencia de eventos se produce por cada tecla que presione en un cuadro de texto (o en la sección de cuadro de texto de un cuadro combinado):

KeyDown flecha KeyPress flecha Dirty flecha Change flecha KeyUp

El evento NotInList se ejecuta después de escribir un valor en un cuadro combinado que no se encuentra en la lista de cuadro combinado y, después, intentar colocar el foco en otro control o registro. El evento NotInList se ejecuta después de los eventos de teclado y de los eventos Change del cuadro combinado, pero antes de los eventos de cualquier otro control o del formulario. Si la propiedad LimitToList del cuadro combinado se establece en Yes, el evento Error del formulario se ejecutará inmediatamente después del evento NotInList:

KeyDown flecha KeyPress flecha Dirty flecha Change flecha KeyUp flecha NotInList flecha Error

Principio de página

Orden de eventos para registros en formularios

Los eventos se ejecutan para los registros en los formularios al mover el foco a otro registro, actualizar datos en un registro, eliminar registros existentes o crear un registro.

Colocar el foco en registros y actualizar datos en registros

Al colocar el foco en un registro existente de un formulario, escribir o cambiar datos en el registro y, después, mover el foco a otro registro, se produce la secuencia siguiente de eventos para el formulario:

Current (formulario) flecha BeforeUpdate (formulario) flecha AfterUpdate (formulario) flecha Current (formulario)

Al salir del registro cuyos datos cambiaron, pero antes de escribir el registro siguiente, se producen los eventos Exit y LostFocus para el control que tiene el foco. Estos eventos se producen después de los eventos BeforeUpdate y AfterUpdate del formulario, de esta forma:

BeforeUpdate (formulario) flecha AfterUpdate (formulario) flecha Exit (control) flecha LostFocus (control) flecha RecordExit (formulario) flecha Current (formulario)

Al mover el foco entre los controles de un formulario, se ejecutan los eventos de cada control. Por ejemplo, las siguientes secuencias de eventos solo se producen al realizar lo siguiente:

  • Abrir un formulario y cambiar los datos de un control:

    Current (formulario) flecha Enter (control) flecha GotFocus (control) flecha BeforeUpdate (control) flecha AfterUpdate (control)

  • Colocar el foco en otro control:

    Exit (control1) flecha LostFocus (control1) flecha Enter (control2) flecha GotFocus (control2)

  • Colocar el foco en otro registro:

    BeforeUpdate (formulario) flecha AfterUpdate (formulario) flecha Exit (control2) flecha LostFocus (control2) flecha RecordExit (formulario) flecha Current (formulario)

Eliminar registros

Al eliminar un registro, los eventos siguientes se ejecutan para el formulario y en Microsoft Office Access se muestra un cuadro de diálogo para pedirle que confirme la eliminación:

Delete flecha BeforeDelConfirm flecha AfterDelConfirm

Si cancela el evento Delete, no se ejecutarán los eventos BeforeDelConfirm y AfterDelConfirm, ni se mostrará el cuadro de diálogo.

Crear un registro

Al colocar el foco en un nuevo registro (en blanco) de un formulario y, después, crear un registro escribiendo datos en un control, se ejecuta la siguiente secuencia de eventos:

Current (formulario) flecha Enter (control) flecha GotFocus (control) flecha BeforeInsert (formulario) flecha AfterInsert (formulario)

Los eventos BeforeUpdate y AfterUpdate de los controles del formulario y del nuevo registro se ejecutan después del evento BeforeInsert y antes del evento AfterInsert.

Principio de página

Orden de eventos para formularios y subformularios

Los eventos se ejecutan para los formularios al abrir o cerrar un formulario, desplazarse entre formularios o al trabajar con datos en un formulario o subformulario.

Abrir y cerrar un formulario

Al abrir un formulario, se ejecuta la siguiente secuencia de eventos para el formulario:

Open flecha Load flecha Resize flecha Activate flecha Current

Si no hay ningún control activo en el formulario, el evento GotFocus se ejecuta para el formulario después del evento Activate, pero antes del evento Current.

Al cerrar un formulario, se ejecuta la siguiente secuencia de eventos para el formulario:

Unload flecha Deactivate flecha Close

Si no hay ningún control activo en el formulario, el evento LostFocus se ejecuta para el formulario después del evento Unload, pero antes del evento Deactivate.

Desplazarse entre formularios

Al cambiar entre dos formularios abiertos, el evento Deactivate se ejecuta para el primer formulario, mientras que el evento Activate se ejecuta para segundo formulario:

Deactivate (formulario1) flecha Activate (formulario2)

El evento Deactivate de un formulario también se ejecuta al cambiar del formulario a otra ficha del objeto en Access. Pero el evento Deactivate no se ejecuta al cambiar a un cuadro de diálogo, a un formulario cuya propiedad PopUp se establece en Yes o a una ventana de otro programa.

Nota:  El evento Open no se ejecuta si coloca el foco en un formulario que ya está abierto, incluso si coloco el foco en ese formulario con una acción OpenForm.

Trabajar con datos en un formulario

Los eventos de formulario y control se ejecutan al desplazarse entre los registros del formulario y modificar datos. Por ejemplo, al abrir por primera vez un formulario, se ejecuta la siguiente secuencia de eventos:

Open (formulario) flecha Load (formulario) flecha Resize (formulario) flecha Activate (formulario) flecha Current (formulario) flecha Enter (control) flecha GotFocus (control)

De forma similar, al cerrar un formulario, se ejecuta la siguiente secuencia de eventos:

Exit (control) flecha LostFocus (control) flecha Unload (formulario) flecha Deactivate (formulario) flecha Close (formulario)

Si cambió datos en un control, los eventos BeforeUpdate y AfterUpdate del control y el formulario se ejecutarán antes del evento Exit del control.

Trabajar con subformularios

Al abrir un formulario que contiene un subformulario, el subformulario y sus registros se cargan antes que el formulario principal. Por lo tanto, los eventos del subformulario y sus controles (como Open, Current, Enter y GotFocus) se ejecutan antes de los eventos del formulario. Pero el evento Activate no se ejecuta para los subformularios. Por lo tanto, al abrir un formulario principal, se desencadena un evento Activate solo para el formulario principal.

De forma similar, al cerrar un formulario que contiene un subformulario, el subformulario y sus registros se descargan después del formulario. El evento Deactivate no se ejecuta para los subformularios. Por lo tanto, al cerrar un formulario principal, se desencadena un evento Deactivate solo para el formulario principal. Los eventos para los controles, formularios y subformularios se ejecutan en el orden siguiente:

  1. Eventos para los controles de subformulario (como Exit y LostFocus)

  2. Eventos para los controles de formulario (incluido el control de subformulario)

  3. Eventos para el formulario (como Deactivate y Close)

  4. Eventos para el subformulario

Nota:  Como los eventos para un subformulario se ejecutan después de cerrar el formulario principal, algunos eventos (como cancelar el cierre del formulario principal desde un evento en el subformulario) no se ejecutarán. Puede que necesite mover estos tipos de pruebas de validación a un evento del formulario principal.

Principio de página

Orden de eventos para pulsaciones de teclas y clics de mouse

Los eventos de teclado se ejecutan para formularios y controles al presionar teclas o enviar pulsaciones de teclas mientras el formulario o control tiene el foco. Los eventos de mouse se ejecutan para formularios, secciones de formulario y controles en formularios al hacer clic en los botones del mouse mientras el puntero del mouse se encuentra sobre un formulario, sección o control. Los eventos de mouse también se ejecutan al colocar el puntero del mouse sobre un formulario, sección o control.

Eventos de teclado

Al presionar y soltar una tecla mientras el control de un formulario tiene el foco (o usar la acción SendKeys o instrucción para enviar una pulsación de tecla), se ejecuta la siguiente secuencia de eventos:

KeyDown flecha KeyPress flecha KeyUp

Al presionar y soltar una tecla o enviar una pulsación de tecla en el juego de caracteres ANSI, se ejecutan los eventos KeyDown, KeyPress y KeyUp. Si mantiene presionada una tecla ANSI, los eventos KeyDown y KeyPress se alternarán repetidamente (KeyDown, KeyPress, KeyDown, KeyPress, etc.) hasta que suelte la tecla; después, se ejecutará el evento KeyUp.

Si presiona y suelta una tecla distinta de ANSI, se ejecutarán los eventos KeyDown y KeyUp. Si mantiene presionada una tecla distinta de ANSI, el evento KeyDown se ejecutará repetidamente hasta que suelte la tecla y, después, se ejecutará el evento KeyUp.

Si, al presionar una tecla, se desencadena otro evento para un control, ese evento se ejecutará después del evento KeyPress, pero antes del evento KeyUp. Por ejemplo, si una pulsación de tecla cambia el texto de un cuadro de texto (lo que desencadena un evento Change), se ejecutará la siguiente secuencia de eventos:

KeyDown flecha KeyPress flecha Change flecha KeyUp

Si una pulsación de tecla hace que el foco se desplace de un control a otro, se ejecutará el evento KeyDown para el primer control, mientras que los eventos KeyPress y KeyUp se ejecutarán para el segundo control. Por ejemplo, si cambia los datos de un control y, después, presiona la tecla TAB para desplazarse hasta el siguiente control, se ejecutarán las siguientes secuencias de eventos:

  • Primer control:

    KeyDown flecha BeforeUpdate flecha AfterUpdate flecha Exit flecha LostFocus

  • Segundo control:

    Enter flecha GotFocus flecha KeyPress flecha KeyUp

Eventos de mouse

Al hacer clic y soltar un botón del mouse mientras el puntero del mouse se encuentra sobre un control en un formulario, se ejecutará la siguiente secuencia de eventos para el control:

MouseDown flecha MouseUp flecha Click

Si un control tiene el foco y hace clic en otro control para desplazar el foco a este segundo control, se ejecutarán las siguientes secuencias de eventos:

  • Primer control:

    Exit flecha LostFocus

  • Segundo control:

    Enter flecha GotFocus flecha MouseDown flecha MouseUp flecha Click

Si se desplaza a otro registro y, después, hace clic en un control, el evento Current del formulario también se ejecutará antes del evento Enter del control.

Al hacer doble clic en un control, se ejecutarán los eventos Click y DblClick. Por ejemplo, al hacer doble clic en un control distinto de un botón de comando, se ejecutará la siguiente secuencia de eventos para el control:

MouseD own flecha MouseUp flecha Click flecha DblClick flecha MouseUp

Al hacer doble clic en un botón de comando, se ejecutará la secuencia de eventos anterior, seguida de un segundo evento Click.

El evento MouseMove de un formulario, sección o control se ejecuta al colocar el puntero del mouse sobre el formulario, sección o control. Este evento es independiente del resto de los eventos de mouse.

Principio de página

Orden de eventos para informes y secciones de informes

Los eventos se ejecutan para informes y secciones de informes al abrir un informe para imprimirlo o generar una vista previa, o bien al cerrar un informe.

Eventos para informes

Al abrir un informe para imprimirlo o generar una vista previa y, después, cerrar el informe o cambiar a otra ficha del objeto en Access, se ejecutará la siguiente secuencia de eventos para el informe:

Open flecha Activate flecha Close flecha Deactivate

Al cambiar entre dos informes abiertos, el evento Deactivate se ejecuta para el primer informe, mientras que el evento Activate se ejecuta para el segundo informe:

Deactivate (informe1) flecha Activate (informe2)

El evento Deactivate de un informe también se ejecuta al cambiar desde el informe a otra ficha del objeto en Access. Pero el evento Deactivate no se ejecuta al cambiar a un cuadro de diálogo, a un formulario cuya propiedad PopUp se establece en Yes o a una ventana de otro programa.

Al abrir un informe basado en una consulta, Access desencadena el evento Open para el informe antes de ejecutar la consulta subyacente. Como resultado, puede establecer los criterios para el informe con una macro o procedimiento de evento que responda al evento Open. Por ejemplo, la macro o el procedimiento de evento puede abrir un cuadro de diálogo personalizado donde puede especificar los criterios del informe.

Eventos para secciones de informe

Al imprimir o generar la vista previa de un informe, los eventos Format y Print se ejecutan para las secciones del informe después de los eventos Open y Activate del informe y antes de los eventos Close o Deactivate del informe:

Open (informe) flecha Activate (informe) flecha Format (sección de informe) flecha Print (sección de informe) flecha Close (informe) flecha Deactivate (informe)

Además, los eventos siguientes se pueden ejecutar durante o después de aplicar formato, pero antes del evento Print:

  • El evento Retreat se ejecuta cuando Access vuelve a una sección anterior al aplicar formato al informe.

  • El evento NoData se ejecuta si en el informe no se muestra ningún registro.

  • El evento Page se ejecuta después de aplicar el formato, pero antes de la impresión. Puede usar este evento para personalizar la apariencia del informe impreso.

Principio de página

Nota: Declinación de responsabilidades de traducción automática: Este artículo se ha traducido con un sistema informático sin intervención humana. Microsoft ofrece estas traducciones automáticas para que los hablantes de otros idiomas distintos del inglés puedan disfrutar del contenido sobre los productos, los servicios y las tecnologías de Microsoft. Puesto que este artículo se ha traducido con traducción automática, es posible que contenga errores de vocabulario, sintaxis o gramática.

Ampliar sus conocimientos
Explorar los cursos
Obtener nuevas características primero
Únase a los participantes de Office Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

Gracias por sus comentarios. Quizá le interese ponerse en contacto con uno de nuestros agentes de soporte de Office.

×