Cerrar formularios por falta de actividad

Quería saber la posibilidad de cerrar un formulario por falta de actividad.
Tengo una BD con usuarios y formularios con diferente niveles de acceso para dichos usuarios. Lo que busco es que cuando un usuario por falta de actividad ese formulario se cierre y quede abierto el principal.

1 respuesta

Respuesta
1
Lo que tienes que hacer es lo siguiente:
1.- Abres el formulario en cuestión en vista diseño
2.- Sacas sus propiedades
3.- Te vas a la pestaña Eventos->Al cronómetro. Si te sitúas en la parte blanca que hay a la derecha verás que te aparece un botón pequeño de puntos suspensivos. Si haces click sobre él se te abrirá una ventana. Le dices que quieres generar código.
4.- Se te abrirá el editor de VB, con dos líneas por defecto (Private Sub... y End Sub). Esas líneas no debes tocarlas. En medio de ellas escribes lo siguiente:
...
Private Sub Form_Timer()
DoCmd.Close acForm, Me.Name
End Sub
...
5.- Vuelves a las propiedades del formulario, a la pestaña Eventos->Intervalo de cronómetro. Ahí escribes, por ejemplo, 5000
5000 es un intervalo muy corto, pero que te da tiempo a ver el efecto. Vas haciendo pruebas de intervalos hasta encontrar el que dure el tiempo que quieres.
Y eso es todo. Si tienes algún problema me comentas.
He leído tu pregunta demasiado rápido, y por tanto te he dado una respuesta a medias.
Vamos a ver:
Lo que te he contestado en mi anterior respuesta cierra el formulario en el intervalo de tiempo que tú hayas fijado, independientemente de si hay actividad o no en el formulario.
El "problema" en lo que pides, al hablar de inactividad, se refiere a encontrar un evento adecuado para determinar cuándo comienza esa "inactividad".
Creo que un buen criterio sería utilizar el evento "Al activar registro", dentro de las propiedades del formulario (pestaña eventos). Este evento se "activa" cuando abres el formulario (porque se activa un registro) y también cuando vas pasando los registros (lo que sería registro nuevo o cualquier cambio de registro -siguiente, anterior, primero, etc.).
Para hacer eso pues yo te recomiendo:
1.- Que hagas lo que te he escrito en mi primera respuesta, a fin de que puedas determinar cuál es el intervalo que a ti te parece el correcto.
2.- Una vez tengas ese intervalo haces lo siguiente (voy a suponer que has determinado un intervalo de 150000):
.. Sigues lo puntos del 1 al 4 de mi anterior respuesta.
.. Vuelves a las propiedades del formulario, a la pestaña Eventos->Intervalo de cronómetro. Ahí escribes de nuevo el valor 0 (cero), que llevaba por defecto
.. Te vas a la propiedad "Al activar registro", y le generas el siguiente código:
...
Private Sub...
Me.TimerInterval = 150000
End Sub
...
Y eso es todo. Ahora, cada vez que se active el registro el contador empezará de nuevo en 150000, y al llegar a cero, si no se vuelve a activar ningún registro, se cerrará el formulario.
Ahora sí que creo que he contestado a tu consulta.
Muchas gracias por tu ayuda.
La opción que me das, me ha servido para los formularios en los cuales tengo que introducir registros, pero tengo otros en los cuales solo y exclusivamente tengo botones y para estos esta opción no es valida.
Ya te comentaba que el problema está en elegir el evento que active el timer. Si sólo tienes botones podrías colocar el código en el evento "Al hacer click" de los botones, o del botón que siempre utilices o utilices más.
Otra opción sería utilizar el evento del formulario "Al mover el mouse". De esta manera, si el mueves el mouse por el formulario, aunque no pulses botón alguno, te irá reiniciando el contador. Cuando deje de percibir que se mueve el mouse durante el tiempo que has establecido se te cerrará el formulario.
Bueno. Ya me dirás si te funciona bien.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas