Tienes que crearle un timer al screen para que chequee el horario. Cerca de tu horario de cierre, mandas un msgbox con timer para que avise que vas a cerrar. Si no hay usuario, pasado el delay del msgbox, empiezas a cerrar los formularios activos (hay una collection en _screen que apunta a todos los abiertos). Y luego haces un clear todo y en general esa es la solución.
Saludos: Miguel, La Pampa (RA)
.
Jorge:
evitar que las máquinas entren en suspensión no es posible
En realidad si puedes evitar que se suspendan e invernes con el administrador de energía de cada PC.
No he seguido el hilo desde el inicio, pero si cargas el entorno de la BD en el Load del formulario y pones un timer digamos t=1000*60*10 al formulario le puedes dar un tiempo máximo de vida de 10 minutos de inactividad, toda vez que cada vez que se presione un botón en el formulario reinicias el tiempo de tal forma que al alcanzar el t meta desencadenas el Thisform.Relesase() del formulario previo close data y descarte de la edición del usuario, con lo cual el tiempo máximo de espera de inactividad que espera el servidor al usuario es de 10 minutos a que cierra la BD (inactividad real en el sistema no cosas como mover el mouse o estar trabajando con el face con el sistema en segundo plano).
Suerte.
____________________________________
Carlos Omar Figueroa López
Ingeniero Industrial y de Sistemas
Hola Jorge :
Aquí otro "externo", aunque prestando servicio dentro del cliente :-)
Desde el lado del servidor podés hacer un programa que corra como servicio y que se ejecute con credenciales de administración (lo llamamos usuario-app), pero limitado, que tiene permisos solo dentro del servidor y no en toda la red, de forma que use un timer para realizar tareas administrativas o de mantenimiento para la aplicación, como reindexar o reemplazar algún archivo y matar las conexiones de los equipos clientes a la aplicación del servidor usando wmi al igual que hace Windows con la consola que muestra los recursos compartidos en uso y quién los tiene.
Pero lo que realmente te puede salvar es no dejar las tablas todo el tiempo abiertas, que suele ser el error más común y que más corrupción de datos ocasiona.
Las tablas solo deben abrirse para actualizar o consultar, y el resto debería trabajarse en cursores locales. De esta forma no se pierde nada.
Saludos