Principales respuestas
Duda con valor Interval de un Timer vb6

Pregunta
-
Hola, estoy haciendo un programa y necesito poner un tiempo mayor de 2 horas, pero he buscado y dicen que el interval del un timer no tiene hasta esa capacidad. ¿Alguien me sugiere qué hacer?
Uso el Visual Basic 6.0
saludos.
- Cambiado Enrique M. Montejo lunes, 15 de diciembre de 2014 19:31 Pregunta relacionada con Visual Basic 6.0.
Respuestas
-
Hola,
A ver, esto podríamos hacer en VB6 ya que en versiones superiores llámese .NET hay formas más simples. Puedo tener una variable pública donde guarde el último acceso del bot. Por ejemplo, si iniciaste a las 12:00 a.m. el bot revisará sus procesos a las 2:00 am. y luego a las 4:00 am y luego a las 6:00 a.m. y así sucesivamente, la última hora de acceso la podemos guardar.
Bueno, entonces un timer revisará cada minuto por si ya hay una diferencia de 2 horas entre la última fecha guardada y este momento (función Date). De ser así, realiza los procesos y guarda el nuevo registro de hora.
Te dejo un código simple que quizá puedas mejorarlo
Option Explicit Public UltimaHora As Date Private Sub ProgramarBot() 'Aquí pregunto si entre ahora y la última hora grabada hay una diferencia de 2 horas pues realizo le proceso y almaceno la nueva hora If (DateDiff("h", UltimaHora, Date) = 2) Then 'Realizar proceso UltimaHora = Date End If End Sub Private Sub Form_Load() 'Inicializo la variable con la fecha y hora en que se ejecuta la app UltimaHora = Date Timer1.Interval = 60000 End Sub Private Sub Timer1_Timer() 'Cada segundo se verificará si ya se cumplio 2 horas ProgramarBot End Sub
Espero haberte ayudado con mi respuesta, si te fue útil no olvides marcarla como correcta.
- Editado Willams Morales jueves, 11 de diciembre de 2014 23:04
- Marcado como respuesta Jecsham jueves, 11 de diciembre de 2014 23:17
Todas las respuestas
-
Hola,
La propiedad interval está dada en milisegundos y efectivamente el máximo es de 65535 milisegundos que viene a ser un poco más de 1 minuto.
No necesitas que el interval sea cada 2 horas, sino que dentro de un intervalo que puede ser incluso 1 segundo preguntar si hay una diferencia de 2 horas entre ahora y el registro guardado anteriormente (el de dos horas atrás).
Podrías explicarnos un poco lo que estás buscando hacer? Quizá así podamos apoyarte mejor.
Espero haberte ayudado con mi respuesta, si te fue útil no olvides marcarla como correcta.
-
-
Hola,
A ver, esto podríamos hacer en VB6 ya que en versiones superiores llámese .NET hay formas más simples. Puedo tener una variable pública donde guarde el último acceso del bot. Por ejemplo, si iniciaste a las 12:00 a.m. el bot revisará sus procesos a las 2:00 am. y luego a las 4:00 am y luego a las 6:00 a.m. y así sucesivamente, la última hora de acceso la podemos guardar.
Bueno, entonces un timer revisará cada minuto por si ya hay una diferencia de 2 horas entre la última fecha guardada y este momento (función Date). De ser así, realiza los procesos y guarda el nuevo registro de hora.
Te dejo un código simple que quizá puedas mejorarlo
Option Explicit Public UltimaHora As Date Private Sub ProgramarBot() 'Aquí pregunto si entre ahora y la última hora grabada hay una diferencia de 2 horas pues realizo le proceso y almaceno la nueva hora If (DateDiff("h", UltimaHora, Date) = 2) Then 'Realizar proceso UltimaHora = Date End If End Sub Private Sub Form_Load() 'Inicializo la variable con la fecha y hora en que se ejecuta la app UltimaHora = Date Timer1.Interval = 60000 End Sub Private Sub Timer1_Timer() 'Cada segundo se verificará si ya se cumplio 2 horas ProgramarBot End Sub
Espero haberte ayudado con mi respuesta, si te fue útil no olvides marcarla como correcta.
- Editado Willams Morales jueves, 11 de diciembre de 2014 23:04
- Marcado como respuesta Jecsham jueves, 11 de diciembre de 2014 23:17
-
Hola:
Lo que te comenta Willam, es muy cierto la propiedad interval del control Timer de .Net, esta expresando el milisengundos por lo cual el valor de 2 horas seria una cantidad representaba en milisegundos superior al tipo de datos que soporta este que es double.
En este link podrás encontrar una mayor información:
Para lograr esto que deseas existe el evento Tick del control Timer
El cual te permite se ejecutar una acción cada por cada lapso de tiempo establecido en la propiedad interval, es decir, si a interval le estableces un valor de 1000 (equivalente a 1 segundo) y usas el evento tick para escribir un valor en algún lugar, obtendrás que por cada segundo pasado tu aplicación escribirá un valor, entonces lo que debes de hacer es usar el evento Tick con un interval establecido a cierto valor inferior a su capacidad máxima para que te sea mas fácil trabajar.
Espero te haya quedado un poco mas claro sobre como trabajar con este control, de cualquier manera las fuentes de lecturas recomendadas contienen toda la información oficial sobre este control y sus alcances, no dudes en leerlos.
Nota: Suponiendo que el titulo de tu pregunta esta equivocada y que en realidad apuntes a Vb.Net, te respondí basándome en este lenguaje, si tu inquietud esta relacionado a Vb6 entonces estas en el foro incorrecto.
Saludos desde Monterrey, Nuevo León, México!!!
- Editado JoséLuisGarcía jueves, 11 de diciembre de 2014 22:58 ed