Sunteți pe pagina 1din 24

Evento Load

El evento Load se produce cuando se abre un formulario y se muestran sus registros.

Comentarios
Para ejecutar una macro o un procedimiento de evento cuando se produzcan estos eventos,
establezca la propiedad AlCargar (OnLoad) en el nombre de la macro o en [Event
Procedure].
El evento Load lo provocan acciones del usuario tales como las siguientes:

Iniciar una aplicacin.


Abrir un formulario haciendo clic en Abrir en la ventana Base de datos.
Ejecutar la accin AbrirFormulario en una macro.

Ejecutando una macro o procedimiento de evento cuando se produce el evento Load de un


formulario, se puede especificar la configuracin predeterminada de los controles, o
mostrar datos calculados que dependan de los datos de los registros del formulario.
Ejecutando una macro o procedimiento de evento cuando se produce el evento Unload de
un formulario, se puede comprobar que el formulario debe transferirse, o especificar
acciones que deban tener lugar al transferir el formulario. Tambin puede abrir otro
formulario o mostrar un cuadro de dilogo solicitando el nombre del usuario para crear una
entrada en un registro de quienes utilizan un formulario.
La primera vez que se abre un formulario, se producen los eventos siguientes, en el orden
indicado:
Open Load Resize Activate Current
Si duda entre usar el evento Open o el evento Load para una macro o procedimiento de
evento, una diferencia significativa entre ellos es que el primero puede cancelarse, y el
segundo no. Por ejemplo, si va a generar dinmicamente un origen de registros para un
formulario en un procedimiento de evento Open, puede cancelar la apertura del formulario
si resulta que no hay registros que mostrar.
Al cerrar un formulario, se producen los eventos siguientes, en el orden indicado:
Unload Deactivate Close
El evento Unload se produce antes que el evento Close. El evento Unload puede cancelarse,
pero no as el evento Close.

Pgina

155

Nota Al crear macros o procedimientos de evento para eventos relacionados con Load,
como Activate y GotFocus, asegrese de que no estn en conflicto (por ejemplo, que no
ocurra en una macro o en un procedimiento de evento algo que se cancele en otro) y no
generan eventos en cascada.

Ejemplo
En el ejemplo siguiente se muestra la fecha actual en el ttulo de un formulario en el
momento de cargarlo.
Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario:
Private Sub Form_Load()
Me.Caption = Date
End Sub

Evento LostFocus
El evento LostFocus se produce cuando un formulario o control pierde el enfoque.

Comentarios
Para ejecutar una macro o un procedimiento de evento cuando se produzcan estos eventos,
establezca la propiedad AlPerderEnfoque (OnLostFocus) en el nombre de la macro o en
[Event Procedure].
Este evento se produce cuando el enfoque se desplaza como respuesta a una accin del
usuario, como presionar la tecla TAB o hacer clic en el objeto; o cuando se usa el mtodo
SetFocus en Visual Basic o la accin SeleccionarObjeto, IrARegistro, IrAControl o
IrAPgina en una macro.
Un control slo puede recibir el enfoque cuando en sus propiedades Visible y Activado
(Enabled) tiene establecido S. Un formulario slo podr recibir el enfoque cuando no
contenga controles, o cuando todos sus controles visibles estn deshabilitados. Si un
formulario contiene algn control visible y activado, el evento GotFocus no puede
producirse para l.
Nota Para personalizar el orden en que el enfoque pasa de control a control en un
formulario cuando se presiona la tecla TAB, establezca el orden de tabulacin o especifique
teclas de acceso para los controles.
El evento LostFocus se diferencia del evento Exit en que el primero se produce cada vez
que un control pierde el enfoque. El evento Exit slo se produce cuando el control pierde el

Pgina

156

enfoque en favor de otro control del mismo formulario. LostFocus se produce despus de
Exit.
Si desplaza el enfoque a un control de un formulario que no lo tena previamente, los
eventos Exit y LostFocus del control que tena el enfoque se producen antes que los eventos
Enter y GotFocus del control que lo recibe.
Si usa el mouse para desplazar el enfoque de un control de un formulario principal a un
control de un subformulario del mismo, se producirn los siguientes eventos:
Exit (para el control del formulario principal)

LostFocus (para el control del formulario principal)

Enter (para el control subformulario)

Exit (para el control del subformulario que tena el enfoque)

LostFocus (para el control del subformulario que tena el enfoque)

Enter (para el control del subformulario al que se mueve el enfoque)

GotFocus (para el control del subformulario al que se mueve el enfoque)


Si el control del subformulario elegido tena ya el enfoque, no se producen sus eventos
Enter ni GotFocus, aunque s ocurre el evento Enter para el control subformulario. Si
desplaza el enfoque de un control de un subformulario a un control del formulario
principal, no se producirn los eventos Exit y LostFocus del control del subformulario, sino
slo el evento Exit para el control subformulario y los eventos Enter y GotFocus para el
control del formulario principal.
Nota A menudo se usa el mouse o una tecla como TAB para trasladar el enfoque a otro
control. Esto hace que se produzcan eventos de mouse o de teclado, adems de los eventos
tratados en este tema.

Pgina

157

Al alternar entre dos formularios abiertos, el evento Deactivate se produce para el primer
formulario, y el evento Activate para el segundo. Si los formularios no contienen ningn
control visible y habilitado, se producir el evento LostFocus para el primer formulario
antes del evento Deactivate, y el evento GotFocus para el segundo despus del evento
Activate.

Ejemplo
En el ejemplo siguiente se muestra un mensaje en una etiqueta cuando el enfoque llega a un
botn de opcin.
Para probar el ejemplo, agregue los siguientes procedimientos de evento a un formulario
llamado Contactos que contenga un botn de opcin llamado OpcinS y una etiqueta
llamada EtiquetaS.
Private Sub OptionYes_GotFocus()
Me!LabelYes.Caption = "Option button 'Yes' has the focus."
End Sub
Private Sub OptionYes_LostFocus()
Me!LabelYes.Caption = ""
End Sub

' Clear caption.

Evento MouseDown
El evento MouseDown se produce cuando el usuario presiona un botn del mouse.

Comentarios

El evento MouseDown se aplica slo a formularios, secciones de formulario y


controles de formulario, y no a los controles de informes.
Este evento no se aplica a una etiqueta asociada a otro control, como la etiqueta de
un cuadro de texto. Slo se aplica a las etiquetas "independientes". La accin de
presionar y soltar un botn del mouse en una etiqueta asociada tiene el mismo efecto
que presionar y soltar el botn en el control asociado. Se producirn los eventos
normales para el control, y ninguno para la etiqueta adjunta.

Para ejecutar una macro o un procedimiento de evento cuando se produzcan estos eventos,
establezca la propiedad AlBajarMouse (OnMouseDown) en el nombre de la macro o en
[Event Procedure].
Puede usar un evento MouseDown para especificar lo que debe ocurrir cuando se presione
o suelte un botn determinado del mouse. A diferencia de los eventos Click y DblClick,
MouseDown permite distinguir entre los botones primario, secundario e intermedio del

Pgina

158

mouse. Tambin es posible escribir cdigo para combinaciones mouse-teclado que incluyan
las teclas MAYSCULAS, CTRL y ALT.
Para que se produzca un evento MouseDown en un formulario, presione el botn del mouse
en una zona en blanco o en el selector de registro en el formulario. Para que se produzca un
evento MouseDown en una seccin de formulario, presione el botn del mouse en una zona
en blanco de la seccin.
Lo siguiente se aplica a los eventos MouseDown:

Si se presiona un botn del mouse mientras el puntero se encuentra sobre un


formulario o control, ese objeto recibir todos los eventos de mouse que se
produzcan hasta el ltimo evento MouseUp, inclusive.
Si los botones del mouse se presionan en sucesin, el objeto que recibe el evento de
mouse despus de que se presione el primer botn recibir todos los eventos de
mouse hasta que se suelten todos los botones.

Para responder a un evento provocado al mover el mouse, utilice el evento MouseMove.

Ejemplo
En el ejemplo siguiente se indica la forma de determinar qu botn del mouse ha provocado
un evento MouseDown.
Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario:
Private Sub Form_MouseDown(Button As Integer, _
Shift As Integer, X As Single, _
Y As Single)
If Button = acLeftButton Then
MsgBox "You pressed the left button."
End If
If Button = acRightButton Then
MsgBox "You pressed the right button."
End If
If Button = acMiddleButton Then
MsgBox "You pressed the middle button."
End If
End Sub

Evento MouseMove
El evento MouseMove se produce cuando el usuario mueve el mouse.

Pgina

159

Comentarios
El evento MouseMove se aplica slo a formularios, secciones de formulario y controles de
formulario, y no a los controles de informes.
Este evento no se aplica a las etiquetas asociadas a otro control, como por ejemplo un las de
un cuadro de texto. Slo se aplica a las etiquetas "independientes". El mover el puntero del
mouse sobre una etiqueta adjunta tiene el mismo efecto que hacerlo sobre el control
asociado. Se producirn los eventos normales para el control, y ninguno para la etiqueta
adjunta.
Para ejecutar una macro o procedimiento de evento cuando se produzca este evento,
establezca la propiedad AlMoverMouse (OnMouseMove) al nombre de la macro o a
[Procedimiento de evento].
El evento MouseMove se genera continuamente mientras el puntero del mouse se mueve
sobre los objetos. Salvo en el caso de que otro objeto genere un evento de mouse, los
objetos reconocen los eventos MouseMove cuando el puntero del mouse se encuentra
dentro de su contorno.
Para provocar un evento MouseMove en un formulario, mueva el puntero del mouse sobre
una zona en blanco del mismo, sobre el selector de registro o sobre la barra de
desplazamiento. Para provocar un evento MouseMove en una seccin de un formulario,
mueva el puntero del mouse sobre una zona en blanco de esa seccin.
Notas

El movimiento de un formulario puede activar un evento MouseMove incluso


cuando el mouse est estacionario. Los eventos MouseMove se generan cuando el
formulario se mueve bajo el puntero. Si una macro o un procedimiento de evento
mueve un formulario como respuesta a un evento MouseMove, el evento puede
producirse en cascada, es decir, generar eventos MouseMove continuamente.

Si dos controles estn muy cerca y se mueve rpidamente el puntero del mouse
sobre el espacio que los separa, es posible que el evento MouseMove no se
produzca para ese espacio (por ejemplo, podra tratarse de un evento MouseMove
para esa seccin del formulario). En estos casos, puede ser necesario responder al
evento MouseMove en el control contiguo, adems de en la seccin de formulario.

Para ejecutar una macro o un procedimiento de evento como respuesta a presionar y soltar
los botones del mouse, utilice los eventos MouseDown y MouseUp.

Evento MouseUp

El evento MouseUp se produce cuando el usuario suelta un botn del mouse.

Pgina

160

Comentarios

El evento MouseUp se aplica slo a formularios, secciones de formulario y


controles de formulario, y no a los controles de informes.
Estos eventos no se aplican a una etiqueta asociada a otro control, como la etiqueta
de un cuadro de texto. Slo se aplican a las etiquetas "independientes". La accin de
presionar y soltar un botn del mouse en una etiqueta asociada tiene el mismo efecto
que presionar y soltar el botn en el control asociado. Se producirn los eventos
normales para el control, y ninguno para la etiqueta adjunta.

Comentarios
Para ejecutar una macro o un procedimiento de evento cuando se produzcan estos eventos,
establezca la propiedad AlSubirMouse (OnMouseUp) en el nombre de la macro o en
[Event Procedure].
Puede usar un evento MouseUp para especificar lo que debe ocurrir cuando se presione o
suelte un botn determinado del mouse. A diferencia de los eventos Click y DblClick,
MouseUp permite distinguir entre los botones primario, secundario e intermedio del mouse.
Tambin es posible escribir cdigo para combinaciones mouse-teclado que incluyan las
teclas MAYSCULAS, CTRL y ALT.
Para que se produzca un evento MouseUp en un formulario, presione el botn del mouse en
una zona en blanco o en el selector de registro en el formulario. Para que se produzca un
evento MouseUp en una seccin de formulario, presione el botn del mouse en una zona en
blanco de la seccin.
Lo siguiente se aplica a los eventos MouseUp:

Si se presiona un botn del mouse mientras el puntero se encuentra sobre un


formulario o control, ese objeto recibir todos los eventos de mouse que se
produzcan hasta el ltimo evento MouseUp, inclusive.
Si los botones del mouse se presionan en sucesin, el objeto que recibe el evento de
mouse despus de que se presione el primer botn recibir todos los eventos de
mouse hasta que se suelten todos los botones.

Para responder a un evento provocado al mover el mouse, utilice el evento MouseMove

Evento MouseWheel
Ocurre cuando el usuario gira la rueda del mouse en las vistas Formulario, Hoja de datos,
Grfico dinmico o Tabla dinmica.
Private Sub Form_MouseWheel(ByVal Pgina As Boolean, ByVal Recuento As Long)

Pgina

161

Pgina Verdadero si se ha cambiado la pgina.


Recuento Nmero de lnea que se ha desplazado la vista con la rueda del mouse.

Ejemplo
El ejemplo siguiente muestra la sintaxis de una subrutina que intercepta el evento
MouseWheel.
Private Sub Form_MouseWheel( _
ByVal Page As Boolean, ByVal Count As Long)
If Page = True Then
MsgBox "You've moved to another page."
End If
End Sub

Evento NoData
El evento NoData se produce despus de que Microsoft Access da formato para imprimir a
un informe que no tiene datos (el informe es dependiente de un conjunto de registros en
blanco), pero antes de imprimir el informe. Este evento se puede utilizar para cancelar la
impresin de un informe en blanco.

Comentarios
Para ejecutar una macro o procedimiento de evento cuando se produce este evento,
establezca la propiedad AlNoDatos (OnNoData) al nombre de la macro o a [Procedimiento
de evento].
Si el informe no es dependiente de una tabla o consulta (utilizando la propiedad
OrigenDelRegistro (RecordSource)), no se produce el evento NoData.
Este evento se produce despus que los eventos Format del informe, pero antes que el
primer evento Print.
Este evento no se produce en subinformes. Si desea ocultar controles en un subinforme
cuando ste no tiene datos, para que los controles no impriman en ese caso, puede utilizar la
propiedad ContieneDatos (HasData) en una macro o en un procedimiento de evento que
se ejecute al producirse el evento Format o Print.
El evento NoData se produce antes que el primer evento Page del informe.

Evento NotInList
Pgina

162

El evento NotInList se produce cuando el usuario introduce en el componente cuadro de


texto de un cuadro combinado un valor que no se encuentra en la lista del cuadro.

Comentarios
El evento NotInList slo se aplica a los controles de formularios, y no a los controles de
informes.
Para ejecutar una macro o procedimiento de evento cuando se produzca este evento,
establezca la propiedad AlNoEnLista (OnNotInList) al nombre de la macro o a
[Procedimiento de evento].
Este evento permite al usuario agregar un nuevo valor a la lista del cuadro combinado.
Para que se produzca el evento NotInList, es necesario que la propiedad LimitarALista
(LimitToList) tenga el valor S.
El evento NotInList no activa el evento Error.
El evento NotInList se produce para los cuadros combinados en cuya propiedad
LimitarALista (LimitToList) se ha establecido S al escribir un valor no incluido en la
lista e intentar pasar a otro control o guardar el registro. El evento ocurre despus de todos
los eventos Change del cuadro combinado.
Cuando la propiedad ExpansinAutomtica (AutoExpand) se ha establecido a S,
Microsoft Access selecciona los valores coincidentes en la lista a medida que el usuario
escribe caracteres en el cuadro de texto del cuadro combinado. Si los caracteres que escribe
el usuario coinciden con los primeros caracteres de un valor de la lista (por ejemplo, el
usuario escribe "Martn" y "Martnez" es un valor de la lista), el evento NotInList no se
producir cuando el usuario se mueva a otro control o guarde el registro. Sin embargo, los
caracteres que Microsoft Access agrega a los caracteres que escribe el usuario (en el
ejemplo, "ez") se seleccionan en el cuadro de texto del cuadro combinado. Si el usuario
desea que se produzca el evento NotInList en dichos casos (por ejemplo, el usuario desea
agregar el nuevo apellido "Martn" a la lista del cuadro combinado), el usuario puede
introducir un carcter BARRA ESPACIADORA, RETROCESO o SUPR despus del
ltimo carcter en el nuevo valor.
Cuando la propiedad LimitarALista (LimitToList) est establecida a S y la lista del
cuadro combinado est desplegada, Microsoft Access selecciona los valores coincidentes
en la lista a medida que el usuario escribe caracteres en la parte de cuadro de texto del
cuadro combinado, incluso aunque la propiedad ExpansinAutomtica (AutoExpand)
est establecida a No. Si el usuario presiona ENTRAR o se desplaza a otro control o
registro, el valor seleccionado aparece en el cuadro combinado. En este caso, el evento
NotInList no se producir. Para que el vento NotInList se produzca, el usuario no debe
desplegar la lista del cuadro combinado.

Pgina

163

Evento OnConnect
Ocurre cuando la vista Tabla dinmica especificada se conecta a un origen de datos.
Private Sub Form_OnConnect()

Ejemplo
El ejemplo siguiente muestra la sintaxis de una subrutina que intercepta el evento
OnConnect.
Private Sub Form_OnConnect()
MsgBox "The PivotTable View has " _
& "connected to its data source!"
End Sub

Evento OnDisconnect
Ocurre cuando la vista Tabla dinmica especificada se desconecta de un origen de datos.
Private Sub Form_OnDisconnect()

Ejemplo
El ejemplo siguiente muestra la sintaxis de una subrutina que intercepta el evento
OnDisconnect.
Private Sub Form_OnDisconnect()
MsgBox "The PivotTable View has " _
& "disconnected from its data source!"
End Sub

Evento Open
El evento Open se produce cuando se abre un formulario, pero antes de que se muestre el
primer registro. En el caso de los informes, este evento se produce antes de que el informe
se presente en vista preliminar o se imprima.

Pgina

164

Comentarios
Para ejecutar una macro o un procedimiento de evento cuando se produzcan estos eventos,
establezca la propiedad AlAbrir (OnOpen) en el nombre de la macro o en [Event
Procedure].
Mediante la ejecucin de una macro o un procedimiento de evento cuando se produce el
evento Open de un formulario puede, por ejemplo, cerrar otra ventana o situar el enfoque
en un control determinado del formulario. Tambin puede ejecutar una macro o
procedimiento de evento que solicite la informacin necesaria antes de abrir o imprimir el
formulario o informe. Por ejemplo, una macro o procedimiento de evento Open puede abrir
un cuadro de dilogo personalizado en el que el usuario especifique los criterios para
determinar el conjunto de registros que se van a mostrar en el formulario o el intervalo de
fechas que se van a incluir en un informe.
El evento Open no se produce al activar un formulario ya abierto (por ejemplo, al situarse
en el formulario desde otra ventana de Microsoft Access o al usar la accin
AbrirFormulario en una macro para traer al frente el formulario abierto). Sin embargo, el
evento Activate s se produce en estas situaciones.
Al abrir un formulario basado en una consulta base, Microsoft Access ejecutar la consulta
para el formulario antes de ejecutar la macro o procedimiento de evento Open. Sin
embargo, al abrir un informe basado en una consulta base, Microsoft Access ejecutar la
macro o procedimiento de evento Open antes de ejecutar la consulta para el informe. De
este modo el usuario puede especificar criterios para el informe antes de abrirlo (por
ejemplo, en un cuadro de dilogo personalizado que aparezca cuando se produce el evento
Open).
Si su aplicacin puede tener ms de un formulario cargado a la vez, utilice los eventos
Activate y Deactivate en lugar de Open para mostrar y ocultar las barras de herramientas
personalizadas cuando el enfoque pasa a otro formulario.
El evento Open se produce antes del evento Load, que se activa al abrir un formulario y
mostrar sus registros.
La primera vez que se abre un formulario, se producen los eventos siguientes, en el orden
indicado:
Open Load Resize Activate Current
El evento Close se produce despus del evento Unload, que se activa despus de cerrar el
formulario pero antes de que desaparezca de la pantalla.
Al cerrar un formulario, se producen los eventos siguientes, en el orden indicado:
Unload Deactivate Close
Pgina

165

Cuando se produzca el evento Close puede abrir otra ventana o solicitar el nombre del
usuario para crear una entrada de registro que indique quin ha utilizado el formulario o
informe.
Si duda entre usar el evento Open o el evento Load para una macro o procedimiento de
evento, una diferencia significativa entre ellos es que el primero puede cancelarse, y el
segundo no. Por ejemplo, si va a generar dinmicamente un origen de registros para un
formulario en un procedimiento de evento Open, puede cancelar la apertura del formulario
si resulta que no hay registros que mostrar. Del mismo modo, el evento Unload puede
cancelarse, pero el evento Close no.

Ejemplo
En el ejemplo siguiente se muestra la forma en que puede cancelar la apertura de un
formulario cuando el usuario hace clic en un botn llamado No. Un cuadro de mensaje
pregunta al usuario si desea introducir detalles del pedido. Si el usuario hace clic en No, no
se abre el formulario Detalles del pedido.
Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario.
Private Sub Form_Open(Cancel As Integer)
Dim intReturn As Integer
intReturn = MsgBox("Enter order details now?", vbYesNo)
Select Case intReturn
Case vbYes
' Open Order Details form.
DoCmd.OpenForm "Order Details"
Case vbNo
MsgBox "Remember to enter order details by 5 P.M."
Cancel = True
' Cancel Open event.
End Select
End Sub

Evento Page
El evento Page se produce despus de que Microsoft Access da formato a una pgina de un
informe para imprimirla, pero antes de imprimir la pgina. Este evento se puede utilizar
para dibujar un borde alrededor de la pgina o para agregar otros elementos grficos a la
pgina.

Comentarios

Pgina

166

Para ejecutar una macro o procedimiento de evento cuando se produce este evento,
establezca la propiedad AlPaginar (OnPage) al nombre de la macro o a [Procedimiento de
evento].
Este evento se produce despus de todos los eventos Format del informe y despus de todos
los eventos Print de la pgina, pero antes de imprimir realmente la pgina.
Normalmente se utilizan los mtodos Line, Circle o PSet en el procedimiento de evento
Page para crear los grficos deseados para la pgina.
El evento NoData se produce antes que el primer evento Page del informe.

Evento PivotTableChange
Ocurre cuando se agrega o elimina el campo, conjunto de campos o total especificado de la
vista Tabla dinmica.
Private Sub Form_PivotTableChange(ByVal Motivo As Long)
Motivo Especifica cmo cambia la lista de tabla dinmica. Puede ser una de las constantes
PivotTableReasonEnum.
plPivotTableReasonTotalAdded
plPivotTableReasonFieldSetAdded
plPivotTableReasonFieldAdded

Ejemplo
El ejemplo siguiente muestra la sintaxis de una subrutina que intercepta el evento
PivotTableChange. Para que funcione este ejemplo, se debe establecer una referencia a la
biblioteca de tipos de componentes Web de Microsoft Office 10.0.
Private Sub Form_PivotTableChange(Reason As Long)
Select Case Reason
Case OWC.plPivotTableReasonTotalAdded
MsgBox "A total was added!"
Case OWC.plPivotTableReasonFieldSetAdded
MsgBox "A field set was added!"
Case OWC.plPivotTableReasonFieldAdded
MsgBox "A field was added!"
End Select
End Sub

Pgina

167

Evento Print
El evento Print se produce despus de que se d formato a los datos de una seccin de un
informe para imprimirlos, pero antes de su impresin.

Comentarios
Para ejecutar una macro o procedimiento de evento cuando se produzca este evento,
establezca la propiedad AlImprimir (OnPrint) al nombre de la macro o a [Procedimiento
de evento].
En el caso de una seccin de detalle de un informe, el evento Print se ejecuta para cada
registro de la seccin inmediatamente antes de que Microsoft Access imprima los datos del
registro. La macro o procedimiento de evento Print tiene acceso a los datos de registro
actual.
En el caso de los encabezados de grupo de un informe, el evento Print se produce para cada
nuevo grupo, y la macro o el procedimiento de evento Print tiene acceso a los datos del
encabezado de grupo y a los del primer registro de la seccin de detalle. En el caso de los
pies de grupo de un informe, el evento Print se produce para cada nuevo grupo, y la macro
o el procedimiento de evento Print tiene acceso a los datos del pie de grupo y a los del
ltimo registro de la seccin de detalle.
Slo puede usar el evento Print para ejecutar una macro o un procedimiento de evento
despus de que Microsoft Access haya preparado los datos para su impresin en una
pgina. Por ejemplo, puede calcular totales parciales para imprimirlos en el encabezado o
en el pie de las pginas.
Para los cambios que afecten al diseo de la pgina, como por ejemplo mostrar u ocultar
controles, utilice el evento Format.
En evento Print slo se produce para las secciones que se imprimen realmente. Si necesita
tener acceso a datos de secciones que no se van a imprimir (por ejemplo, para mantener una
suma parcial, pero imprimiendo slo algunas pginas), utilice el evento Format.
El evento Page se produce despus de todos los eventos Format del informe y de todos los
eventos Print de una pgina, pero antes de que la pgina se imprima.

Evento Query
Pgina

168

Ocurre cuando la consulta especificada de la vista Tabla dinmica se convierte en


necesaria. Es posible que la consulta no ocurra de inmediato, puede retrasarse hasta que se
muestren los nuevos datos.
Private Sub Form_Query()

Ejemplo
El ejemplo siguiente muestra la sintaxis de una subrutina que intercepta el evento Query.
Private Sub Form_Query()
MsgBox "A query has become necessary."
End Sub

Evento RecordExit
Ocurre justo antes de que el usuario salga del registro actual.
Private Sub Form_RecordExit(Cancelar As Integer)
Cancelar Establezca este argumento en Verdadero para evitar que el usuario salga del
registro actual.

Comentarios
El evento ocurre despus de que el usuario haya hecho algo para moverse del registro
actual, ya sea desplazndose a otro registro, cerrando el formulario, actualizndolo o
consultndolo, pero antes de descartar la vista del registro actual. Utilice este evento para
examinar los registros antes de que ya no sean el registro actual para asegurarse de que se
cumplen las reglas de validacin de datos.
Nota Cuando se cierra un formulario que contiene un subformulario, el formulario
principal se cierra antes que el subformulario. Cualquier evento desencadenado por el
subformulario, incluido RecordExit, ocurre despus de cerrar el formulario principal. Como
consecuencia, el argumento Cancelar no tendr efecto alguno y se cerrar el formulario. Se
debe implementar por lo tanto la validacin controlada por eventos en el nivel del
formulario.

Ejemplo
El ejemplo siguiente muestra la sintaxis de una subrutina que intercepta el evento
RecordExit.
Private Sub Form_RecordExit(Cancel As Integer)

Pgina

169

Dim booValidated As Boolean


' Perform some sort of data validation.
If booValidated = True Then
Cancel = False
Else
MsgBox "Data validation failed!"
Cancel = True
End If
End Sub

Evento Resize
El evento Resize se produce al abrir un formulario, y siempre que cambia su tamao.

Comentarios
Para ejecutar una macro o procedimiento de evento cuando se produzca este evento,
establezca la propiedad AlCambiarTamao (OnResize) al nombre de la macro o a
[Procedimiento de evento].
Este evento se produce al cambiar el tamao del formulario en una macro o un
procedimiento de evento, como ocurre, por ejemplo, al usar la accin DesplazarTamao en
una macro para cambiar el tamao del formulario.
Ejecutando una macro o procedimiento de evento cuando se produce un evento Resize, se
puede mover o cambiar el tamao de un control cuando cambie el tamao del formulario al
que pertenece. Tambin puede usar el evento Resize para volver a calcular variables o
restablecer propiedades que puedan depender del tamao del formulario.
La primera vez que se abre un formulario, se producen los eventos siguientes, en el orden
indicado:
Open Load Resize Activate Current
Nota Tenga cuidado al usar la accin DesplazarTamao, Maximizar, Minimizar o
Restaurar (o los mtodos correspondientes del objeto DoCmd) en una macro o un
procedimiento de evento Resize. Estas acciones pueden provocar un evento Resize para el
formulario, causando as una sucesin de eventos en cascada.

Evento Retreat
Pgina

170

El evento Retreat se produce cuando Microsoft Access vuelve a una seccin de informe
anterior al dar formato a un informe.

Comentarios
El evento Retreat se aplica a todas las secciones de los informes, excepto los encabezados y
pies de pgina.
Para ejecutar una macro o procedimiento de evento cuando se produzca este evento,
establezca la propiedad AlRetirarse (OnRetreat) al nombre de la macro o a
[Procedimiento de evento].
En ciertas circunstancias, Microsoft Access tiene que volver a una seccin anterior de un
informe para determinar dnde se encuentran determinados controles y secciones, y si van a
caber en un espacio determinado. Ejemplos de estas situaciones son los siguientes:

Grupos (excepto encabezados y pies de pgina) cuya propiedad MantenerJuntos


(KeepTogether) est establecida a Grupo entero o Con el primer detalle.
Subinformes o subformularios cuya propiedad Autoextensible (CanGrow) y/o
Autocomprimible (CanShrink) est establecida a S.
Secciones de la ltima pgina de un informe.

En estos casos, se produce el evento Format cuando Microsoft Access determina la forma
en que se ajustarn las secciones a la pgina impresa (sin embargo, no se produce un evento
Print, ya que las secciones an no se van a imprimir). Si no es posible imprimir las
secciones, Microsoft Access retrocede hasta el lugar necesario para que las secciones
puedan imprimirse en la pgina siguiente. El evento Retreat se produce para cada seccin
ya procesada a la que regresa Microsoft Access. Al regresar, se produce de nuevo el evento
Format para cada seccin, mientras Microsoft Access prepara de nuevo su impresin.
Por ejemplo, siempre que Microsoft Access llega al final de la ltima pgina al dar formato
a un informe, se produce un evento Retreat por cada seccin anterior hasta que Microsoft
Access llega a la primera seccin de la ltima pgina. En este momento, el evento Format
se produce de nuevo para cada seccin de la pgina, seguido de los eventos Print.
Puede ejecutar una macro o procedimiento de evento cuando se produzca el evento Retreat
para deshacer los cambios efectuados cuando se produjo el evento Format para la seccin.
Esto es til cuando el procedimiento de evento Format ejecuta acciones tales como calcular
totales de pgina o controlar el tamao de una seccin, lo que conviene hacer una sola vez
por seccin.
El evento Retreat tambin es til para mantener la posicin de los elementos del informe.
Por ejemplo, el informe Ventas anuales de la base de datos de ejemplo Neptuno utiliza este
evento para determinar si el encabezado de pgina se imprime o no (el encabezado se
imprime en las pginas que siguen a una pgina en la que se ha impreso el encabezado de

Pgina

171

grupo, y no se imprime en las pginas que siguen a una pgina donde se ha impreso el pie
de grupo).

Evento RollbackTransaction
Ocurre justo antes de que Microsoft Access indique al servidor que se va a deshacer una
transaccin por lotes.
Private Sub Form_RollbackTransaction(Conexin As ADODB.Connection)
Conexin Conexin en la que tiene lugar la transaccin por lotes.

Comentarios
Este evento se aplica a formularios de un proyecto Access cuyas propiedades
BatchUpdates estn establecidas en Verdadero.
Este evento ocurre si una actualizacin por lotes no se ha realizado correctamente debido a
un error cuando intentaba confirmar la transaccin por lotes. Cualquier cambio en los datos
realizado en este punto se realiza fuera la transaccin por lotes.
No puede cancelar una transaccin deshecha; cualquier intento para corregir el error tiene
lugar dentro de una nueva transaccin por lotes.

Ejemplo
El ejemplo siguiente muestra la sintaxis de una subrutina que intercepta el evento
RollbackTransaction.
Private Sub Form_RollbackTransaction(Connection As ADODB.Connection)
MsgBox "Access has rolled back the batch transaction on " _
& Connection.Name & "."
End Sub

Evento SelectionChange
Ocurre cuando el usuario realiza una nueva seleccin en una vista Grfico dinmico o
Tabla dinmica.
Private Sub Form_SelectionChange()

Comentarios
Pgina

172

El usuario no puede cancelar este evento.

Ejemplo
El ejemplo siguiente muestra la sintaxis de una subrutina que intercepta el evento
SelectionChange.
Private Sub Form_SelectionChange()
MsgBox "The selection has changed!"
End Sub

Evento Timer
El evento Timer se produce a intervalos regulares en un formulario, segn especifique su
propiedad IntervaloDeCronmetro (TimerInterval).

Comentarios
Para ejecutar una macro o procedimiento de evento cuando se produzca este evento,
establezca el nombre de la macro o [Procedimiento de evento] en la propiedad
AlCronmetro (OnTimer).
Ejecutando una macro o procedimiento de evento cuando se produce un evento Timer, se
puede controlar lo que debe hacer Microsoft Access cada intervalo. Por ejemplo, puede ser
conveniente volver a consultar los registros bases o repintar la pantalla cada cierto tiempo.
El valor de la propiedad IntervaloDeCronmetro (TimerInterval) del formulario
especifica el intervalo, en milisegundos, entre los eventos Timer. El intervalo puede variar
entre 0 y 65.535 milisegundos. El valor 0 en la propiedad IntervaloDeCronmetro
(TimerInterval) impide que se produzca el evento Timer.

Evento Undo
Ocurre cuando el usuario deshace un cambio en un control cuadro combinado, formulario o
un control cuadro de texto.
Private Sub objeto_Undo(Cancelar As Integer)
objeto Variable que hace referencia a un objeto de uno de los tipos de la lista Se aplica a.
Cancelar Establezca este argumento en Verdadero para cancelar la operacin de
deshacer y dejar el control o formulario en el estado editado.

Pgina

173

Comentarios
El evento Undo para los controles ocurre cuando el usuario devuelve un control a su estado
original al hacer clic en el botn Deshacer, presionar la tecla ESC o llamar al mtodo
Undo del control especificado. El control requiere tener el enfoque en los tres casos. El
evento no ocurre si el usuario hace clic en el botn Deshacer escribir de la barra de
comandos.
El evento Undo para los formulario ocurre cuando el usuario devuelve un formulario a su
estado original al hacer clic en el botn Deshacer, presionar la tecla ESC o llamar al
mtodo Undo del formulario especificado.

Ejemplo
El ejemplo siguiente muestra la sintaxis de una subrutina que intercepta el evento Undo.
Private Sub Form_Undo(Cancel As Integer)
Dim intResponse As Integer
Dim strPrompt As String
strPrompt = "Cancel the undo operation?"
intResponse = MsgBox(strPrompt, vbYesNo)
If intResponse = vbYes Then
Cancel = True
Else
Cancel = False
End If
End Sub

Evento UndoBatchEdit
Ocurre cuando el usuario rechaza todos los cambios pendientes mediante el comando Undo
All Records.
Private Sub Form_UndoBatchEdit(Cancelar As Integer)
Cancelar Si establece este argumento en Verdadero, se cancela la operacin de deshacer
y se conservan todos los cambios pendientes en el formulario.

Comentarios

Pgina

174

Este evento se aplica a formularios de un proyecto Access cuyas propiedades


BatchUpdates estn establecidas en Verdadero.
Este evento es anlogo al evento Undo, pero para un lote completo en vez de para un
registro en particular. El evento ocurre despus del evento Undo para el formulario y el
control correspondiente al cambio de datos ms reciente.
El evento Undo para el formulario slo ocurre para la ltima fila editada. De igual modo,
slo ocurre el evento Undo ms reciente para el control correspondiente incluso aunque se
rechacen potencialmente los cambios para ms de un control cuando se realiza una
operacin de deshacer en el formulario.

Ejemplo
El ejemplo siguiente muestra la sintaxis de una subrutina que intercepta el evento
UndoBatchEdit.
Private Sub Form_UndoBatchEdit(Cancel As Integer)
Dim intResponse As Integer
Dim strPrompt As String
strPrompt = "Access is about to discard all pending changes. " _
& "Do you wish to continue?"
intResponse = MsgBox(strPrompt, vbYesNo)
If intResponse = vbNo Then
Cancel = True
Else
Cancel = False
End If
End Sub

Evento Unload
El evento Unload se produce despus de cerrar un formulario, pero antes de que
desaparezca de la pantalla. Cuando se vuelve a cargar el formulario, Microsoft Access lo
vuelve a mostrar e inicializa el contenido de todos sus controles.

Comentarios

Pgina

175

Para ejecutar una macro o un procedimiento de evento cuando se produzcan estos eventos,
establezca la propiedad AlDescargar (OnUnload) en el nombre de la macro o en [Event
Procedure].
El evento Unload lo provocan acciones del usuario tales como:

Hacer clic en el botn Cerrar de una ventana Formulario, o en el comando Cerrar


del men Archivo o del men Control de un formulario.
Ejecutar la accin Cerrar en una macro.

Salir de una aplicacin haciendo clic con el botn secundario en el botn de la


aplicacin de la barra de tareas y eligiendo Cerrar.

Salir de Windows con una aplicacin en ejecucin.

Ejecutando una macro o procedimiento de evento cuando se produce el evento Unload de


un formulario, se puede comprobar que el formulario debe transferirse, o especificar
acciones que deban tener lugar al transferir el formulario. Tambin puede abrir otro
formulario o mostrar un cuadro de dilogo solicitando el nombre del usuario para crear una
entrada en un registro de quienes utilizan un formulario.
Al cerrar un formulario, se producen los eventos siguientes, en el orden indicado:
Unload Deactivate Close
El evento Unload se produce antes que el evento Close. El evento Unload puede cancelarse,
pero no as el evento Close.
Nota Al crear macros o procedimientos de evento para eventos relacionados con Load,
como Activate y GotFocus, asegrese de que no estn en conflicto (por ejemplo, que no
ocurra en una macro o en un procedimiento de evento algo que se cancele en otro) y no
generan eventos en cascada.

Ejemplo
En este ejemplo se pide al usuario que compruebe que el formulario debe cerrarse.
Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario. En la
vista Formulario, cierre el formulario para que aparezca el cuadro de dilogo, y luego haga
clic en S o en No.
Private Sub Form_Unload(Cancel As Integer)
If MsgBox("Close form?", vbYesNo) = vbYes Then
Exit Sub
Else
Cancel = True

Pgina

176

End If
End Sub

Evento Updated
Es posible que parte del contenido de este tema no sea aplicable a algunos idiomas.
El evento Updated se produce cuando se ha modificado el contenido de un objeto OLE.

Comentarios
El evento Updated slo se aplica a los controles de los formularios, y no a los de los
informes.
Para ejecutar una macro o procedimiento de evento cuando se produzca este evento,
establezca la propiedad AlActualizar (OnUpdated) al nombre de la macro o a
[Procedimiento de evento].
Puede usar este evento para determinar si el contenido de un objeto se ha modificado desde
la ltima vez que se guard.
El evento Updated se produce cuando se ha modificado el contenido de un objeto OLE.
Esta actualizacin puede provenir de la aplicacin con la que se cre el objeto o desde una
de sus copias vinculadas. En consecuencia, este evento es asncrono con respecto a otros
eventos de control de Microsoft Access.
Notas

El evento Updated y los eventos BeforeUpdate y AfterUpdate de los marcos de


objetos dependientes e independientes no estn relacionados. El evento Updated se
produce cuando se ha modificado el contenido de un objeto OLE, y los eventos
BeforeUpdate y AfterUpdate ocurren cuando los datos se actualizan. Aunque no
estn relacionados, normalmente estos tres eventos se producen cuando se modifica
el contenido de un objeto OLE. Generalmente, el evento Updated ocurre antes que
BeforeUpdate y AfterUpdate, aunque puede no ser as siempre.
El control Calendar incluido con Microsoft Access 97 ya no soporta el evento
Updated. Si convierte una base de datos que incluye el control Calendar de una
versin anterior de Microsoft Access a Microsoft Access 97, debe mover el cdigo
del evento Updated del control Calendar al evento AfterUpdate.

Evento ViewChange
Ocurre cuando se vuelve a dibujar la vista Grfico dinmico o Tabla dinmica.

Pgina

177

Private Sub Form_ViewChange(ByVal Motivo As Long)


Motivo La constante PivotViewReasonEnum que indica cmo se cambi la vista. Motivo
siempre devuelve -1 para las vistas Grfico dinmico.

Ejemplo
El ejemplo siguiente muestra la sintaxis de una subrutina que intercepta el evento
ViewChange. Para que funcione este ejemplo, se debe establecer una referencia a la
biblioteca de tipos de Microsoft Office Web Components 10.0.
Private Sub Form_ViewChange(ByVal Reason As Long)
If Reason = OWC.plViewReasonShowDetails Then
MsgBox "You've opted to show details."
End If
End Sub

Pgina

178

S-ar putea să vă placă și