Se puede detener Hourglass en tiempo de ejecución?

Quiero detener la ejecución del mouse (dando vueltas) mientras se ejecuta un código porque me ralentiza la escritura.

Pongo al principio del procedimiento:

Docmd.Hourglass False

Pero nada, el mouse da vueltas.

También pongo:

Screen.MousePointer =0

Y nada. ¿Es posible lo que quiero?

2 Respuestas

Respuesta

Pruebe con

DoEvents

Esto deja que el sistema siga con otros procesos. Al no conocer el código, no es posible dar otro concpeto

Respuesta

El puntero del mouse no es el problema -lo controla el sistema operativo-, lo que permite ganar tiempo es el bloqueo del refresco de la pantalla (el cursor estático o girando no le afecta).

Se puede bloquear la actualización de la pantalla solo si se esta seguro de que se mantiene el control sobre la aplicación que se esta ejecutando.
Si salta un error o se necesita interactuar con la aplicación (y se tiene bloqueada la pantalla) no se podrá recuperar el control (habrá que 'matar' la tarea y puede producir daños colaterales).

Utilizar DoEvents solo generara mayor retraso en la ejecución del código.
Es cierto que DoEvents permite interactuar, para hacerlo introduce pausas en la ejecución del código y poder recibir ordenes externas, pero esas interrupciones prolongaran mucho mas el tiempo necesario para finalizar esa tarea.

En principio DoEvents es incompatible con el bloqueo de pantalla (al estar bloqueada no se visualizan mensajes de retorno y eso impide el dialogo con la maquina).

Access recomienda este método para aplicar la función Echo:
Application.Echo False
DoCmd.Hourglass True
--- Tareas a ejecutar ---
Application.Echo True
DoCmd.Hourglass False
Nota (por si se desea validar las mejoras):

Si antes de ejecutar el código se guarda el Timer en una variable y se le resta al valor del Timer obtenido al finalizar el proceso, se puede controlar el tiempo empleado.
Si se ejecuta la misma tarea varias veces consecutivas (para obtener una media), hay que tener en cuenta que posiblemente utilice el cache de datos lo que falsea los resultados (cambiar algún dato en cada ciclo le obligara a regenera el cache y será mas fiel el resultado).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas