Tiempos timers fechas horas

Les traigo 2 preguntas sencillas pero que sin el archivo .hlp de visual se me hizo imposible de solucionar.
1º Tengo que obtener diferencias de tiempo en min o seg entre 2 fechas con formato largo dd/mm/aa hh:mm:ss. ¿Cómo puedo hacer?
Estuve probando con datediff pero no se que parámetro ponerle en interval. Supuestamente es en lo que quieres que te lo devuelva entre "s" segundos "m" minutos etc, pero a mi me devolvía parte de la fecha.
2º esta es un poco más difícil
Tengo que calcular el tiempo que transcurre desde que se hace click en un botón que completa un listview.
Para probarlo use un reloj y un contador. En cada evento timer le sumaba uno al contador, lo hacia en intervalos de segundos y milisegundos, me lo mostraba en un label, todo muy lindo, cuando ponía que pare el reloj mantenía el valor de la variable del contador. Excelente. Esto cuando lo probé en un formulario aparte.
Cuando lo puse en el botón del formulario del listview. Por más que tardaba lo suficiente como para que yo pueda contar hasta 5, el timer siempre aparecía en 1, por más que le pusiera intervalos en milisegundos.
Yo con mi ignorancia arrancaba el timer en la primera instrucción del click y lo paraba en la ultima. Pero esto no daba resultado porque entraba solamente una vez al evento del timer.
Probé también poniendo todo lo que hacia el botón en un procedimiento menos el arrancar timer y parar timer, pero tampoco funciono, seguía mostrando 1.
Tal vez se exista algún evento delcontrol ado para cuando termina de realizar una operación.
O lo mismo en el listview, como lo cargaba por código, le puse que se pare el timer al final pero esto tampoco funciono.
Estoy seguro que podes ayudarme con esto, ya que nunca me dejaste sin responder mis preguntas, por más tontas o confusas que sean...
Desde ya una vez más MUCHÍSIMAS GRACIAS por tu tiempo.

1 respuesta

Respuesta
1
DateDiff se usa así
DateDiff(intervalo, fecha1, fecha2) as Integer
En intervalo, hay que poner una cadena del siguiente tipo:
"yyyy" Año
"q" Trimestre
"m" Mes
"y" Día del año
"d" Día
"w" Día de la semana
"ww" Semana
"h" Hora
"n" Minuto
"s" Segundo
Así que si pones
DateDiff("d","10/11/1976","20/11/1976")
Te va a devolver 10, que son los días de diferencia entre ambas fechas (el formato de fecha por aquí es día/mes/año).
En el punto dos, si no he entendido mal, tienes que calcular el tiempo transcurrido entre que pulsas un botón, y se rellena un listview ¿no?.
Si es eso, el timer sólo lo puedes necesitar porque el asunto será cuestión de milisegundos, no de segundos. Entonces, al hacer click en el botón correspondiente, tendrás que hacer:
Timer.Interval=1
Timer.Enabled=True;
Label="0"
Siendo Label, la etiqueta donde quieras que aparezca el paso del tiempo.
En el evento Timer_Timer() tendrás que poner algo así
Private sub Timer_Timer()
Label=Cint(Label)+1
End Sub
El problema ahora está en parar el Timer. El listview lo tienes que rellenar a mano, ya que no tiene ninguna propiedad "DataSource", por lo que todo se vuelve muy fácil. Si usas un ADODB. Recordset (al que voy a llamar RS) se haría así:
do while not RS.Eof
...'Código para añadir un elemento al listview
DoEvents ' IMPORTANTE, si no lo pones, no vuelve a entrar en el TIMER_TIMER()
RS.Movenext
loop
Timer.Enabled=False
---
Supongo que tu problema está en que no pones el DoEvents. Si no lo pones, no se vuelve a procesar el evento Timer() hasta que termina el bucle.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas