Orden de eventos para objetos de base de datos

Una acción cualquiera, como pasar de un control (control: objeto de interfaz gráfica para el usuario, como un cuadro de texto, una casilla de verificación, una barra de desplazamiento o un botón de comando, que permite a los usuarios controlar el programa. Utilice los controles para mostrar datos y opciones, realizar una opción o facilitar la lectura de la interfaz.) en un objeto a otro control, puede desencadenar distintos eventos (evento: acción reconocida por un objeto, como un clic del mouse o pulsaciones de tecla, para la que se puede definir una respuesta. Un evento puede tener lugar por una acción del usuario o una instrucción de Visual Basic; o bien, puede desencadenarlo el sistema.), los cuales se sucederán en un orden particular. Conocer los eventos que tendrán lugar y el orden en que lo harán es importante porque puede afectar a cómo y cuándo han de ejecutarse las macros (macro: acción o conjunto de acciones utilizados para automatizar tareas.) o los procedimientos de eventos (procedimiento de evento: procedimiento que se ejecuta automáticamente en respuesta a un evento iniciado por un usuario o código de programa o el sistema desencadena.). Por ejemplo, si dos procedimientos de evento deben ejecutarse en cierto orden, deberá asegurarse de que los eventos a los que están asociados ocurren en el mismo orden.

En este artículo


Orden de eventos para controles en formularios

Los eventos ocurren para controles en formularios al desplazar el enfoque (foco: capacidad para recibir entradas del usuario a través de acciones del mouse o del teclado, o del método SetFocus. Tanto el usuario como la aplicación pueden establecer el foco. El objeto que tiene el foco suele indicarse con un título o barra de título resaltados.) a un control y al cambiar y actualizar datos en un control.

 Nota   Microsoft Office Access muestra los nombres de evento de forma ligeramente distinta en el Editor de Visual Basic en relación a la hoja de propiedades y 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 llama GotFocus en el Editor de Visual Basic. Los ejemplos de este artículo usan el formato de Visual Basic para Aplicaciones (VBA) para especificar nombres de evento.

Mover el enfoque a un control

Cuando se mueve el enfoque a un control en un formulario (por ejemplo, al abrir un formulario que contiene uno o varios controles activos o mover el enfoque a otro control en el mismo formulario), los eventos Enter y GotFocus se producen en este orden:

EnterFlecha GotFocus

Al abrir un formulario, los eventos Enter y GotFocus se producen después de los eventos asociados a la apertura el formulario (como por ejemplo Open, Activate y Current), de este modo:

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

Cuando el enfoque abandona un control en un formulario (por ejemplo, al cerrar un formulario que contiene uno o varios controles activos o cuando se alterna a otro control en el mismo formulario), los eventos Exit y LostFocus se producen en este orden:

ExitFlecha LostFocus

Al cerrar un formulario, los eventos Exit y LostFocus se producen antes que los eventos asociados con el cierre del formulario (como por ejemplo Unload, Deactivate y Close), de este modo:

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

Cambiar y actualizar datos en un control

Al escribir o cambiar datos en un control de un formulario, y después mover el enfoque hacia otro control, se producen los eventos BeforeUpdate y AfterUpdate:

BeforeUpdateFlecha AfterUpdate

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

BeforeUpdateFlecha AfterUpdateFlecha ExitFlecha LostFocus

Cuando se modifica el texto de un cuadro de texto o de la sección de cuadro de texto de un cuadro combinado, se produce el evento Change. Este evento se desencadena siempre que cambian los contenidos del control, pero antes de desplazar el enfoque a otro control o registro (y por lo tanto, antes de los eventos BeforeUpdate y AfterUpdate). Cada vez que se presiona una tecla en un cuadro de texto o en la sección de cuadro de texto de un cuadro combinado se produce la siguiente secuencia de eventos:

KeyDownFlecha KeyPressFlecha DirtyFlecha ChangeFlecha KeyUp

El evento NotInList ocurre después de escribir un valor en un cuadro combinado que no está en la lista de dicho cuadro combinado y, a continuación, intentar desplazar el enfoque a otro control o registro. El evento NotInList se produce después de los eventos de teclado y los eventos Change para el cuadro combinado, pero antes de los eventos para cualquier otro control o formulario. Si la propiedad LimitarALista del cuadro combinado está establecida en , el evento Error para el formulario se produce inmediatamente después del evento NotInList:

KeyDownFlecha KeyPressFlecha DirtyFlecha ChangeFlecha KeyUpFlecha NotInListFlecha Error

Volver al principio Volver al principio

Orden de eventos para registros en formularios

Los eventos ocurren para registros en formularios al desplazar el enfoque (foco: capacidad para recibir entradas del usuario a través de acciones del mouse o del teclado, o del método SetFocus. Tanto el usuario como la aplicación pueden establecer el foco. El objeto que tiene el foco suele indicarse con un título o barra de título resaltados.) a un registro distinto, actualizar datos de un registro, eliminar un registro o registros existentes o crear un registro nuevo.

Mover el enfoque a registros y actualizar datos en registros

Cuando se mueve el enfoque a un registro existente en un formulario, se escriben o cambian los datos en un registro y a continuación se desplaza el enfoque a otro registro, se produce la siguiente secuencia de eventos en un formulario:

Current (formulario) Flecha BeforeUpdate (formulario) Flecha AfterUpdate (formulario) Flecha Current (formulario)

Al abandonar el registro cuyos datos han cambiado, pero antes de especificar el siguiente registro, se producen los eventos Exit y LostFocus para el control en el que se centra el enfoque. Ocurren después de los eventos BeforeUpdate y AfterUpdate para el formulario, de la manera siguiente:

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

A medida que se desplaza el enfoque entre los controles de un formulario, se producen eventos para cada control. Por ejemplo, al llevar a cabo las siguientes acciones se desencadenan las secuencias de eventos también especificadas a continuación:

  • Abrir un formulario y cambiar datos en un control:

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

  • Desplazar el enfoque a otro control:

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

  • Desplazar el enfoque a otro registro:

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

Eliminar registros

Cuando se elimina un registro, se producen los siguientes eventos para el formulario, y Microsoft Office Access muestra un cuadro de diálogo solicitando confirmación para la eliminación:

DeleteFlecha BeforeDelConfirmFlecha AfterDelConfirm

Si cancela el evento Delete, los eventos BeforeDelConfirm y AfterDelConfirm no se producen y el cuadro de diálogo no aparece.

Crear un nuevo registro

Al desplazar el enfoque a un nuevo registro (en blanco) en un formulario y, a continuación, crear un nuevo registro escribiendo datos en un control, ocurre la siguiente secuencia de eventos:

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

Los eventos BeforeUpdate y AfterUpdate para los controles en el formulario y para el nuevo registro se producen después del evento BeforeInsert y antes del evento AfterInsert.

Volver al principio Volver al principio

Orden de eventos para formularios y subformularios

Los eventos tienen lugar para formularios al abrir o cerrar un formulario, desplazarse entre formularios o trabajar con datos en un formulario o subformulario.

Abrir y cerrar un formulario

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

OpenFlecha LoadFlecha ResizeFlecha ActivateFlecha Current

De no existir controles activos en el formulario, el evento GotFocus se produce para el formulario después del evento Activate pero antes de Current.

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

UnloadFlecha DeactivateFlecha Close

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

Desplazarse entre formularios

Al cambiar de un formulario abierto a otro, se desencadena el evento Deactivate para el primer formulario y Activate para el segundo:

Deactivate (formulario1) Flecha Activate (formulario2)

El evento Deactivate para un formulario también se produce al desplazarse desde el formulario hacia otra ficha de objeto de Access. Sin embargo, el evento Deactivate no se produce al cambiar a un cuadro de diálogo, un formulario cuya propiedad Emergente está establecida en o una ventana de otro programa.

 Nota    El evento Open no ocurre al desplazar el enfoque a un formulario ya abierto, incluso si lo ha desplazado mediante la acción AbrirFormulario.

Trabajar con datos en un formulario

Los eventos de formularios y controles se desencadenan a medida que se desplaza entre registros en un formulario y se modifican los datos. Por ejemplo, al abrir un formulario por primera vez, se produce 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, cuando se cierra un formulario, se produce la siguiente secuencia de eventos:

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

Si cambió los datos de un control, los eventos BeforeUpdate y AfterUpdate tanto para el control como el formulario ocurren antes que el evento Exit para el control.

Trabajar con subformularios

Cuando se abre un formulario que contiene un subformulario, el subformulario y sus registros se cargan antes que el formulario principal. Por lo tanto, los eventos se producen para el subformulario y sus controles (como Open, Current, Enter y GotFocus) antes que los eventos para el formulario. Sin embargo, el evento Activate no se produce para subformularios. De esta manera, abrir un formulario principal desencadena el evento Activate sólo para el formulario principal.

Análogamente, cuando se cierra un formulario que contiene un subformulario, el subformulario y sus registros se descargan después del formulario. El evento Deactivate no se produce para subformularios. Por lo tanto, cerrar un formulario principal desencadena el evento Deactivate sólo para el formulario principal. Los eventos para controles, formulario y subformulario se producen en el orden siguiente:

  1. Eventos para los controles del subformulario (como Exit y LostFocus)
  2. Eventos para los controles del formulario (incluyendo el control del subformulario)
  3. Eventos para el formulario (como Deactivate y Close)
  4. Eventos para el subformulario

 Nota    Debido a que los eventos para un subformulario se producen después de cerrar el formulario principal, ciertos eventos, como cancelar el cierre del formulario principal desde un evento en el subformulario, no tendrán lugar. Quizás tenga que mover estos tipos de pruebas de validación a un evento en el formulario principal.

Volver al principio Volver al principio

Orden de eventos para pulsaciones de teclas y clics con el mouse

Los eventos de teclado se producen para formularios y controles cuando se presionan teclas o se envían pulsaciones de teclas mientras el formulario o control posee el enfoque (foco: capacidad para recibir entradas del usuario a través de acciones del mouse o del teclado, o del método SetFocus. Tanto el usuario como la aplicación pueden establecer el foco. El objeto que tiene el foco suele indicarse con un título o barra de título resaltados.). Los eventos de mouse ocurren para formularios, secciones de un formulario y controles en formularios al hacer clic con los botones del mouse mientras el puntero del mouse se encuentra en un formulario, sección o control. Los eventos de mouse también se desencadenan al mover el puntero del mouse sobre un formulario, sección o control.

Eventos de teclado

Cuando se presiona y libera una tecla mientras un control en un formulario tiene el enfoque (o se usa la acción o instrucción (instrucción: unidad sintácticamente completa que expresa un tipo de operación, declaración o definición específico. Normalmente, una instrucción es una línea en un procedimiento o sección Declaraciones, pero dos o más pueden estar en una línea separadas por un signo de dos puntos (:).)EnviarTeclas para enviar una pulsación de tecla), se produce la siguiente secuencia de eventos:

KeyDownFlecha KeyPressFlecha KeyUp

Cuando se presiona y suelta una tecla o se envía una pulsación de tecla en el juego de caracteres ANSI (juego de caracteres ANSI: juego de caracteres de 8 bits utilizado por Microsoft Windows que permite representar hasta 256 caracteres (0-255) usando el teclado. El juego de caracteres ASCII es un subjuego del juego ANSI.), se desencadenan los eventos KeyDown, KeyPress y KeyUp. Si presiona y mantiene presionada una tecla ANSI, los eventos KeyDown y KeyPress se alternarán uno tras otro (KeyDown, KeyPress, KeyDown, KeyPress y así sucesivamente) hasta que suelte la tecla; a continuación se producirá el evento KeyUp.

Si presiona y suelta una tecla no ANSI, se producen los eventos KeyUp y KeyDown. Si presiona y mantiene presionada una tecla no ANSI, el evento KeyDown tiene lugar una y otra vez hasta que suelta nuevamente la tecla y, a continuación, se produce el evento KeyUp.

En caso de que presionar una tecla desencadene otro evento para un control, dicho evento se produce después del evento KeyPress pero antes del evento KeyUp. Por ejemplo, si una pulsación de tecla modifica el texto en un cuadro de texto, lo cual desencadena el evento Change, se produce la siguiente secuencia de eventos:

KeyDownFlecha KeyPressFlecha ChangeFlecha KeyUp

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

  • Primer control:

KeyDownFlecha BeforeUpdateFlecha AfterUpdateFlecha ExitFlecha LostFocus

  • Segundo control:

EnterFlecha GotFocusFlecha KeyPressFlecha KeyUp

Eventos de mouse

Al hacer clic con un botón del mouse y a continuación soltarlo, mientras el puntero del mouse está en un control en un formulario, se produce la siguiente secuencia de eventos para el control:

MouseDownFlecha MouseUpFlecha Click

Si un control tiene el enfoque y se hace clic en otro control para desplazar el enfoque a este segundo control, tienen lugar las siguientes secuencias de eventos:

  • Primer control:

ExitFlecha LostFocus

  • Segundo control:

EnterFlecha GotFocusFlecha MouseDownFlecha MouseUpFlecha Click

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

Hacer doble clic en un control hace que se produzcan tanto el evento Click como el evento DblClick. Por ejemplo, cuando se hace doble clic en un control que no sea un botón de comando, se produce la siguiente secuencia de eventos para dicho control:

MouseDownFlecha MouseUpFlecha ClickFlecha DblClickFlecha MouseUp

Cuando se hace doble clic en un botón de comando, se produce la secuencia de eventos anterior, seguida por un segundo evento Click.

El evento MouseMove para un formulario, sección o control ocurre cuando se desplaza el puntero del mouse sobre el formulario, sección o control. Este evento es independiente de los otros eventos de mouse.

Volver al principio Volver al principio

Orden de eventos para informes y secciones de informes

Los eventos se producen para informes y secciones de informes cuando abre un informe para imprimirlo u obtener su vista previa, o de lo contrario cuando lo cierra.

Eventos para informes

Cuando se abre un informe para imprimirlo u obtener una vista previa del mismo, y más adelante se cierra dicho informe o se comienza a trabajar en otra ficha de Access, se produce la siguiente secuencia de eventos para el informe:

OpenFlecha ActivateFlecha CloseFlecha Deactivate

Al alternar entre dos informes abiertos, se produce el evento Deactivate para el primer informe y Activate para el segundo:

Deactivate (informe1) Flecha Activate (informe2)

El evento Deactivate para un informe también se produce al desplazarse desde el informe hacia otra ficha de objeto de Access. Sin embargo, el evento Deactivate no se produce al cambiar a un cuadro de diálogo, un formulario cuya propiedad Emergente está establecida en o una ventana de otro programa.

Cuando se abre 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 del informe mediante una macro o procedimiento de evento que responda al evento Open. Por ejemplo, la macro o procedimiento de evento puede abrir un cuadro de diálogo personalizado en el cual han de escribirse los criterios del informe.

Eventos para secciones de informes

Cuando se imprime u obtiene la vista previa de un informe, los eventos Format y Print se producen para las secciones del informe después de los eventos Open y Activate para el 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, pueden producirse los siguientes eventos durante o después de la aplicación de formato pero antes del evento Print:

  • El evento Retreat se produce cuando Access regresa a una sección anterior mientras se le aplica formato al informe.
  • El evento NoData se produce en caso de que el informe no muestre ningún registro.
  • El evento Page se produce después del formato pero antes de la impresión. Puede usar este evento para personalizar la apariencia del informe impreso.

Volver al principio Volver al principio

 
 
Corresponde a:
Access 2007