Visual Basic - AUXILIOOOO (Datediff)

Life is soft - evento anual de software empresarial
 
Vista:

AUXILIOOOO (Datediff)

Publicado por David Benavides (19 intervenciones) el 25/04/2006 18:37:26
Saludos a todos!

Necesito ayuda referente a Datediff.
Tengo un proigrama que calcula importes($) a partir de lapsos de tiempo calculados a su vez, con Datediff. Pero resulta que tengo el siguiente problema: Si la hora de inicio de mi lapso de tiempo es 11:00PM y la hora final del lapso es cualquiera del DIA SIGUIENTE (por ejemplo la 1:00AM) mi programa se vuelve loco y arroja datos incorrectos.

Mientras el lapso de tiempo se encuentre en un mismo dìa, todo està bien. PERO SI DURANTE MI LAPSO DE TIEMPO HTERMINA UN DIA Y COMIENZA OTRO TENGO PROBLEMAS.

Alguien sabe còmo lo puedo resolver???

2 Ejemplos para ilustrar mejor:

Hora de inicio de lapso 11:00AM y la hora de fin de lapso es 1:00pm, DATEDIFF ME DEVUELVE COMO RESULTADO 120 min, LO CUAL ES CORRECTO, PERO...

Si la hora de inicio de lapso es 11:00PM y la hora de fin de lapso es 1:00AM del sig dia, DATEDIFF ME DEVUELVE COMO RESULTADO datos incorrectos...

GRACIAS!!!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:AUXILIOOOO (Datediff)

Publicado por Esteban (1144 intervenciones) el 25/04/2006 19:13:56
Qué son datos incorrectos?

-XXXX minutos en vez de mostrar XXXX minutos?

O sea, salen valores negativos?

Y la fecha, estás indicando la fecha de cada una de las horas? #25/04/2006 23:00# como hora inicial y #26/04/2006 01:00# como hora final.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:AUXILIOOOO (Datediff)

Publicado por Daniel (27 intervenciones) el 25/04/2006 19:53:10
Entiendo perfectamente tu problema,

mira lo que debes hacer es muy sencillo,
ejemplo

<<<< valores que tienes para realizar la resta
FInicio = 12/04/06
Hinicio = 1:15:00 pm
FTermino = 16/04/06
Htermino = 11:12:14 pm

<<<<<<< variables para englobar un total
inicio = format( Finicio & " " & Hinicio , "dd/mm/yy HH:mm:ss")
final = format( Finicio & " " & Hinicio , "dd/mm/yy HH:mm:ss")

<<<<<<<<<<<< de tal modo que tus varibales queden asi

inicio = 12/04/06 13:15:00
final = 16/04/06 23:12:14

Ahora en una variable mete la diferecia de entre estas dos fechas.
OJOOOOO el intervalo dalo en SEGUNDOS "S"

tiempo = DateDiff("s", final, inicio)

¿por que en segundos?, por que asi puedes manipular los valores de tal modo que te de hora, minutos y segundos.
x ejemplo

tiempo = 4800 (segundos)
dividelo entre 60 (minutos)
te da 80 minutos
dividelo entre 60 (minutos)
te da 1.333 horas

ese. 3333 conviertelo en minutos nuevamente,y asi suscesivamente
para que saques el total de las horas acumuladas

Este formato de horas lo encuantras en excel y es [h]:mm:ss, en accers y visual tu lo tienes que fabricar, la manera en como te la explique es la mas facil y sencilla, la otra es que hagas un modulo para que lo haga en toda tu aplicacion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Gracias!!!!

Publicado por David Benavides (19 intervenciones) el 25/04/2006 23:02:12
Gracias por la ayuda Daniel y Esteban!

Sucede que para efectos reales, mi programa solo ocupa lapsos de tiempo comenzados y finalizados el mismo dìa (son lapsos pequeños de pocas horas). El problema surgìa en situaciones extraordinarias en que durante ese lapso de tiempo se llevaba a cabo el fin de un dìa e incio del otro.

Estaba utilizando TIME en vez de NOW, por lo cual la hora no llevaba como referencia la fecha correspondiente y allì era donde mi programa se volvìa loco.

El còdigo quedò igualito, solo tuve que sustituir el TIME por el NOW y listo.

Gracias!!!
David Benavides
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar