Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Visual Basic clásico (http://www.forosdelweb.com/f69/)
-   -   Objeto timer (http://www.forosdelweb.com/f69/objeto-timer-556553/)

guif 13/02/2008 10:29

Objeto timer
 
Estoy intentando poner un tiempo al objeto timer de 10 minutos.

Cuando voy a la pestaña Interval solo me deja poner 59999


El caso es que tengo:

Private Sub Timer1_Timer()
actualiza_Click
End Sub

y entonces en la funcion actualiza_Click tengo una funcion que consulta a una BBDD SQL cada 1000msg

Que puedo hacer?

vbx3m 13/02/2008 12:19

Re: Objeto timer
 
No modifiques el interval, colocalo en 1000 y trabaja con el evento Timer. En ese evento colocas un acumulador que se actualiza cada segundo sumando de uno en uno. Y como dices que al pasar 10 minutos quieres llamar a una funcion solo tienes que colocar la condicion del acumulador cuando llegue a 600 segundos llame la funcion... Me entiendes?

guif 14/02/2008 08:00

Re: Objeto timer
 
no mucho...
Bueno poner el Timer a 1000 no hay problem, pero os cuento mas como lo tengo.

Tengo un boton que se llama "actualiza" y dentro pues llamo a la funcion "Funcion_update"

La funcion "Funcion_update" tiene dentro:

Código:

Timer1.Enabled = True
por lo que entonces, dentro del timer1 tengo:

Código:

Private Sub Timer1_Timer()
    actualitza_Click
End Sub

entonces... como amplio el tiempo y donde?

vbx3m 14/02/2008 09:42

Re: Objeto timer
 
Bueno primero declara una variable por ejemplo xseg como Integer y en el load del Form le asignas el valor 0...

Código:

Private Sub Timer1_Timer()
  xseg = xseg + 1
  If xseg = 600 Then  actualiza_Click  '600 seg que son 10 minutos
End Sub

Con esto despues de pulsar el boton actualizar que llama la funcion que activa el timer, al cabo de 10 minutos llamara al evento click del boton... Ahora solo resta desactivar el timer y asignar el valor de la variable a 0...

guif 03/03/2008 07:44

Re: Objeto timer
 
me lio un poco... os cuento como lo tengo:

Código:

Private Sub Funcion_update()
    Timer1.Enabled = True
End Sub

Código:

Private Sub actualitza_Click()
(realizo una serie de consultas SQL)
End Sub

Código:

Private Sub Timer1_Timer()
    actualitza_Click
End Sub

Entonces, al dar al boton actualitza_Click, donde tendria que poner el codigo que comentas para que me actualize cada 10 minutos???

gracias!

vbx3m 03/03/2008 12:54

Re: Objeto timer
 
Mi pregunta es donde llamas a Funcion_update?

Quedaria como esto:

Código:

Private Sub Funcion_update()
    Timer1.Enabled = True
End Sub

Private Sub actualitza_Click()
'consultas SQL
End Sub

Private Sub Timer1_Timer()
  xseg = xseg + 1
  If xseg = 600 Then 
      xseg=0
      actualitza_Click  '600 seg que son 10 minutos
  end if
End Sub


guif 04/03/2008 01:34

Re: Objeto timer
 
se me olvido poner la Funcion_update!
Lo pongo dentro del boton actualitza_Click.
Código:

Private Sub actualitza_Click()
Funcion_update
'consultas SQL
End Sub

entonces, segun tu codigo ya me funcionaria?

guif 12/03/2008 08:35

Re: Objeto timer
 
he modificado la función un poco.
El interval del timer1 lo he puesto a 1000. Luego, he puesto lo siguiente en TIMER1.:

Código:

Static Temp_Seg As Long
Temp_Seg = Temp_Seg + 1
If (Temp_Seg * 60) >= (5 * 60) * 60 Then
  Temp_Seg = 0
  actualitza_Click 'mi funcion
End If

en la linia:

Código:

If (Temp_Seg * 60) >= (5 * 60) * 60 Then
donde pongo 5, me actualizaria cada 5 minutos, pero si pongo 10 me da error. Porque sucede esto??

seba123neo 12/03/2008 10:32

Re: Objeto timer
 
hola,guif no es tan complicado,mira el Timer de visual basic 6 solo aguanta ese valor porque es el valor de 64 bits...en visual basic net esto aguanta mas porque el valor de las variable y de los tipos de datos se incrementaron muchisimo..con esto podes hacer que el timer aguante lo que vos quieras:

Código:

Dim Tiempo As Double

Private Sub Timer1_Timer()
Tiempo = Tiempo + 1
If Tiempo = 240 Then
'aca el codigo que queres hacer al llegar al tiempo que queres
Tiempo = 0
End If
End Sub


tambein podes usar las api's SetTimer,killTimer para crearte un timer mediante las api's de windows,que no tiene un limite tan poco como el timer y es mas exacto tambien.

vbx3m 12/03/2008 11:11

Re: Objeto timer
 
Cita:

If (Temp_Seg * 60) >= (5 * 60) * 60 Then
Por que no lo colocas la condicion directa y sencilla como te respondio seba123neo??


Cita:

Dim Tiempo As Double

Private Sub Timer1_Timer()
Tiempo = Tiempo + 1
If Tiempo = 240 Then
'aca el codigo que queres hacer al llegar al tiempo que queres
Tiempo = 0
End If
End Sub

guif 13/03/2008 09:59

Re: Objeto timer
 
al final lo he solucionando con esto y poniendo el interval a 1000:

lSeg = lSeg + 1
If lSeg > 600 Then '10 minutos
lSeg = 0
MI FUNCION_CLICK
End If

gracias!


La zona horaria es GMT -6. Ahora son las 03:23.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.