Consulta sobre Form_Timer |
Responder |
Autor | |
emijas
Asiduo Unido: 03/Junio/2004 Localización: España Estado: Sin conexión Puntos: 399 |
Tema: Consulta sobre Form_Timer Enviado: 24/Enero/2020 a las 12:03 |
Buenos Dias
Tengo varios eventos que se ejecutan a horas distintas, tengo la leve impresión de que la forma como lo tengo diseñado está constantemente verificando que se cumpla la condición de hora. por ejemplo If (Hour(Time) = 14 And Minute(Time) = 25) Then y otro If (Hour(Time) = 19 And Minute(Time) = 30) Then Y desde el formulario en las propiedades tengo el intervalo en 50000. Hay alguna manera mas eficiente que esta para ejecutar las acciones dentro del IF? Saludos y gracias de antemano
|
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14738 |
Enviado: 27/Enero/2020 a las 12:54 |
Hola, Se supone que ese código está en el evento "Al cronómetro". Y, por el valor que indicas de la propiedad intervalo, se ejecutara cada 50 segundos. Eso significa que cada vez que se cumpla el intervalo se evaluará la hora y minuto del momento. ¿Se puede ser más eficiente? Pues depende... Se puede evaluar de otra forma (en programación siempre hay más de 1 camino): If Format(Time, "hh:nn") = "14:25" Then .... ¿Obligatoriamente a las 14:25 y a las 19:30? Si la respuesta es "no" puedes ampliar el intervalo y trabajar con tiempos iniciales y finales --> si HoraActual > "14:25" y HoraActual < 14:30 ... lanzas proceso Otra opción es dejar eso en manos del programador de tareas de windows. En lugar de tener una aplicación con 2 procesos, tienes 2 miniaplicaciones con un proceso cada una que se lanza en el Autoexec. Añades 2 tareas al programador de tareas de Windows y listo. Un saludo
|
|
emijas
Asiduo Unido: 03/Junio/2004 Localización: España Estado: Sin conexión Puntos: 399 |
Enviado: 27/Enero/2020 a las 14:34 |
Hola Xavi
Gracias por la respuesta. Si o si se tienen que lanzar los procesos a las horas indicadas. Son procesos internos de la aplicación de Access que envían a mi email reportes de lo ocurrido en horario de mañana y tarde respectivamente. Lo que me refiero como mas eficiente es que no tenga que chequear cada 50 segundos si se cumplen las condiciones, sino otra forma de encarar el lanzamiento de los procesos. Saludos
|
|
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
Enviado: 27/Enero/2020 a las 15:52 |
Hola!
Precisamente tengo guardado un ejemplo desarrollado por el maestro "Xavi" que se llama timer (lo descargué hace tiempo desde su página web creo) para lanzar un email en un tiempo determinado cronometrando el tiempo cada segundo. Pienso que lo puedes adaptar a tu necesidad restando la hora actual de la hora que quieras lanzar un aviso. Te dejo el ejemplo:- https://onedrive.live.com/?cid=70302728F05A12E3&id=70302728F05A12E3%21802&parId=70302728F05A12E3%21136&o=OneUp |
|
Un Saludo.
|
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14738 |
Enviado: 27/Enero/2020 a las 17:27 |
¡Pues menudo ejemplo si se lanza cada segundo! ¡Que derroche de recursos!
Si el momento es muy relevante (como parece) o lo haces como lo tienes ahora, o lo haces con programador de tareas. Desde mi punto de vista, no hay otra.
|
|
emijas
Asiduo Unido: 03/Junio/2004 Localización: España Estado: Sin conexión Puntos: 399 |
Enviado: 27/Enero/2020 a las 17:38 |
Gracias por ambas respuestas
Una última pregunta para Xavi. Veo que utilizas DateAdd("s", -Me.TimerInterval , ¿Ves factible usar Dateadd en vez de con segundos "s" con horas "h" de manera tal que no haya tanto uso/derroche de recursos? Saludos
|
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14738 |
Enviado: 27/Enero/2020 a las 19:03 |
La utilización de "s" es una aberración en términos de consumo...
Se me ocurre otra técnica: cambiar el intervalo de cronometro en función de cuando se está ejecutando. No tiene ningún sentido lanzar el evento cada 50 segundos cuando quedan horas para la siguiente ejecución "interesante". Sería algo como esto en el intervalo al cronómetro:
Escrito al vuelo. Los experimentos, con gaseosa. Un saludo |
|
emijas
Asiduo Unido: 03/Junio/2004 Localización: España Estado: Sin conexión Puntos: 399 |
Enviado: 27/Enero/2020 a las 21:40 |
Gracias Xavi por tomarte el tiempo y la molestia de escribir un codigo especial para responder a mi pregunta.
Voy a adaptarlo a mi aplicacion. Un Saludo
|
|
emijas
Asiduo Unido: 03/Junio/2004 Localización: España Estado: Sin conexión Puntos: 399 |
Enviado: 21/Febrero/2020 a las 12:19 |
Buenas Tardes
he usado el codigo subido por Xavi "escrito al vuelo" y salvo un pequeño retoque funciona perfectamente. Pueden cerrar el hilo,
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |