none
Duda con valor Interval de un Timer vb6 RRS feed

  • 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.
    jueves, 11 de diciembre de 2014 22:24

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
    jueves, 11 de diciembre de 2014 22:54

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.

    jueves, 11 de diciembre de 2014 22:33
  • Hola, estoy haciendo una especie de bot que envía un mensaje cada 2 horas. No entendí mucho lo que has escrito
    jueves, 11 de diciembre de 2014 22:40
  • 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
    jueves, 11 de diciembre de 2014 22:54
  • 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:

    Timer.Interval Property

    Para lograr esto que deseas existe el evento Tick del control Timer

    Timer.Tick Event

    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!!!



    jueves, 11 de diciembre de 2014 22:54