El evento Timer «Al cronómetro»

El evento Timer permite configurar un evento para que se lance al final de un intervalo. En castellano viene a significar que poder realizar cualquier cosa que imaginemos al final de un tiempo especificado.

Un ejemplo que me viene a la cabeza es el típico formulario de bienvenida de nuestra aplicación que a los pocos segundos de mostrarlo se cierra solo.

Otro ejemplo, rizando el rizo, imaginad que el administrador de la aplicación, que está trabajando en red, necesita desconectar a los usuarios para realizar labores de mantenimiento en el programa, para ello, a habilitado un campo “SI/NO” en una tabla y cuando va a realizar el mantenimiento le cambia el estado a “Si”, ¿Cómo sabrían los programas de los clientes que tienen que desconectarse para que el administrador pueda realizar el mantenimiento? Pues con nuestro evento Timer se podría comprobar el estado de dicho campo cada X tiempo, programado por nosotros,  y en el momento en que compruebe que está marcado a “Si” podemos lanzar un aviso al usuario para indicarle que se cerrará la aplicación.

Otro ejemplo que nos podría ilustrar el uso de Timer, supongamos que por cuestiones técnicas necesitamos hacer una copia de seguridad automática cada X tiempo de ciertos datos de nuestra aplicación. Una vez más podríamos hacer uso del evento Timer para programar los comandos necesarios para realizar la copia de seguridad, por ejemplo, cada media hora o cada cinco horas.

Así se me ocurren miles de ejemplos, seguro que vosotros, una vez que aprendáis lo fácil que es su uso le encontraréis su aplicación práctica.

Para ilustrar su uso voy a emplear el ejemplo más sencillo, un formulario que se muestra al abrir nuestra aplicación y se cierre en unos segundos, sin pasarnos en ellos para que el usuario no se desespere.

Vamos a crear un formulario modal para que se muestre su ventana en pantalla por encima de cualquier otra que tengamos abierta y no se pueda manipular cualquier otro formulario hasta que este no se cierre.

 

Al formulario que nos crea automáticamente Access vamos a darle el nombre de “Bienvenida” y eliminaremos los botones de “Aceptar y Cancelar” que crea por defecto el asistente y que, en nuestro caso, no utilizaremos. Al mismo tiempo le ponemos una etiqueta de texto de bienvenida con alguna información importante y, si sois perfeccionistas, una imagen de fondo con algún logo de la aplicación. Más o menos así:

 

Vamos a vista diseño de nuestro formulario, pestaña “Eventos” y localizamos, OJO CON ESTO, el evento “al cronómetro” y su compañero “Intervalo de cronómetro”. En alguna ocasión hemos hablado de las diferencias entre los nombres que usa Access en los formularios, en nuestro caso en español, y el tratamiento que se le da en VBA, que aparecerá en inglés “Timer”.

 

Vamos a configurar primero el valor de “Intervalo de cronómetro” que definirá cada cuanto tiempo se ejecuta, si lo hubiera, el evento “Al cronómetro”. Este valor se da en milisegundos, por tanto para que nuestro formulario se cierre al cabo, por ejemplo de 3 segundos, pondremos el valor de 3.000.

Matizaremos un detalle, el evento se REPITE en los segundos que le hallamos especificado mientras el formulario esté abierto. En nuestro caso, no le vamos a dar tiempo a repetirlo una segunda vez pues en cuanto se dispare la primera vez lo que haremos será cerrar el formulario y dicho evento no se repite hasta que se vuelva a abrir.

Ahora nos situamos sobre el evento “Al cronómetro”, pulsamos el botón de la derecha con tres puntitos y elegimos “Procedimiento de evento”, en el editor de VBA escribimos la acción que vamos a realizar al cabo de los tres segundos:

 

Ya podéis cerrar el formulario, guardar los cambios, volver a abrirlo y comprobaréis que a los tres segundo se cerrará sin intervención alguna por nuestra parte.

Como último paso, y para este ejemplo concreto, deberemos configurar nuestra base de datos para que el primer formulario que se abra al iniciar el programa sea este. Para ello vamos al botón de “inicio” de Access, “Opciones”, “Base de datos actual” y en “Mostrar formulario” seleccionamos nuestro formulario “Bienvenida”.

 

Como siempre digo, el uso práctico de la herramienta depende de la imaginación del programador.

Como recomendaciones finales os diría que no olvidéis el funcionamiento del evento, siempre que pongáis un valor en el campo “Intervalo de cronómetro” el formulario, mientras esté abierto, repetirá el evento cíclicamente mientras no se modifique su valor a través de VBA o se cierre el formulario.

Por ejemplo, imaginemos que tenemos un evento que ocurre a la media hora, intervalo (1.800.000), de abrir la aplicación y solo queremos que ocurra una sola vez. En el evento, después de realizar todas las acciones que queremos que haga a la media hora podemos terminar con la línea “TimerInterval=0”:

 

En este caso, tras mostrar un mensaje de texto informativo a la media hora de abrir el formulario, modificaremos su “intervalo de cronómetro de 1.800.000 por 0 de esta forma ya no se repetirá mas. Destacar que este cambio por VBA, mientras ejecutamos el formulario, no modifica realmente el valor por defecto que pusimos en sus propiedades de (1.800.000), por lo que al cerrar y volver a abrir el formulario volverá a ejecutarse nuestro código a la media hora, según lo indicado.

Si estás interesado en aprender mas puedes solicitar información sobre nuestros cursos de programación orientada a objetos con Visual Basic para Access.

Me interesa tener algo mas de información sobre este curso. Contáctame directamente y disfruta de la oportunidad de hablar con el profesor directamente antes de decidirte.

5 comentarios

  1. FANTÁSTICO APORTE……..HICE TANTOS INTENTOS CON ACCESS 2013 QUE TUVE QUE OPTAR POR OTROS MÉTODOS……..PERO ESTO ES LO QUE YO QUERÍA…..MUCHÍSIMAS GRACIAS…

  2. Muchas gracias. Había encontrado información anteriormente, pero no la entendía. Eres muy explícito. Me ayudó mucho.

  3. Quisiera que el programa completo access se cierre cuando pasen 5 minutos que no se mueve el mouse, ¿puedes ayudarme a realizarlo? no se como se hace desde los codigos.Muchas GRacias

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.