15- Orden Cronológico Eventos
Autor: Javier Gomez "javier.mil"
Al Abrirse un formulario la secuencia de Eventos es la siguiente:
(en Ingles) On Open --> On Load --> On Resize --> On Activate --> On Current
(en castellano) Al abrir -> Al cargar -> Al cambiar el tamaño -> Al activar -> Al activar registro
Al Cerrarse un formulario la secuencia de Eventos es la siguiente:
Para un
Formulario
No
maximizado:
(en Ingles)
On Unload
--> On
Deactivate
--> On Close
(en
castellano)
Al descargar
--> Al
desactivar
--> Al
cerrar
Para un
Formulario
maximizado:
(en Ingles)
On Unload
--> On
Desactivate
--> On Close
--> On
Resize
(en castellano) Al descargar --> Al desactivar --> Al cerrar --> Al cambiar el tamaño
Orden de eventos para controles en formularios
Fuente: Microsoft Access
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 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) Activate
(formulario) Current
(formulario) Enter (control)
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 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) LostFocus
(control) Unload (formulario)
Deactivate (formulario) 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 AfterUpdate
Los eventos Exit y LostFocus de
un control cuyos cambios de
valores se producen después de
los eventos BeforeUpdate y
AfterUpdate:
BeforeUpdate AfterUpdate Exit
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 KeyPress Dirty Change
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 KeyPress Dirty Change
KeyUp NotInList Error
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)
BeforeUpdate (formulario)
AfterUpdate (formulario) 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)
AfterUpdate (formulario) Exit
(control) LostFocus (control)
RecordExit (formulario) 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) Enter
(control) GotFocus (control)
BeforeUpdate (control)
AfterUpdate (control)
• Colocar el foco en otro
control:
Exit (control1) LostFocus
(control1) Enter (control2)
GotFocus (control2)
• Colocar el foco en otro
registro:
BeforeUpdate (formulario)
AfterUpdate (formulario) Exit
(control2) LostFocus (control2)
RecordExit (formulario) 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 BeforeDelConfirm
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) Enter
(control) GotFocus (control)
BeforeInsert (formulario)
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.
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 Load Resize Activate
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 Deactivate 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)
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) Load
(formulario) Resize (formulario)
Activate (formulario) Current
(formulario) Enter (control)
GotFocus (control)
De forma similar, al cerrar un
formulario, se ejecuta la
siguiente secuencia de eventos:
Exit (control) LostFocus
(control) Unload (formulario)
Deactivate (formulario) 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.
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 KeyPress 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 KeyPress Change 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 BeforeUpdate AfterUpdate
Exit LostFocus
• Segundo control:
Enter GotFocus KeyPress 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 MouseUp 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 LostFocus
• Segundo control:
Enter GotFocus MouseDown MouseUp
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 MouseUp Click
DblClick 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.
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 Activate Close 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) 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) Activate
(informe) Format (sección de
informe) Print (sección de
informe) Close (informe)
Deactivate (informe)
Seguridad Puede usar la vista
informe para habilitar el
filtrado de usuarios de
informes. Pero, a diferencia de
la vista previa de impresión,
los eventos formato e Imprimir
de cualquier sección no se
producen en la vista informe.
Esto también se aplica a los
resultados de las funciones de
VBA y los procedimientos
definidos por el usuario que se
muestran en controles (como
títulos de etiquetas, estado de
visualización, formato
condicional, cambio de tamaño de
controles, etc.) dentro de esos
eventos. Por lo tanto, no use
código en este evento para dar
formato, ocultar o imprimir
datos confidenciales, que pueden
quedar expuestos. Se recomienda
filtrar previamente los datos o
deshabilitar la vista previa del
informe si se establece la
propiedad AllowReportView en no.
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.