Documente Academic
Documente Profesional
Documente Cultură
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:
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)
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
Evento MouseDown
El evento MouseDown se produce cuando el usuario presiona un botn del mouse.
Comentarios
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:
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
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
Pgina
160
Comentarios
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:
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
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
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
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
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:
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
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
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:
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
Evento ViewChange
Ocurre cuando se vuelve a dibujar la vista Grfico dinmico o Tabla dinmica.
Pgina
177
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