Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/04/2010, 07:48
Avatar de erbuson
erbuson
 
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: Sumar filas en un MSFlexgrid

Hola Xyon

Como dice la célebre frase: Con la iglesia hemos topado, amigo Sancho.

Hasta ahora no he tenido necesidad de hacer este tipo de cálculos que tu estas haciendo como el de Sumar horas, pero te comento que por ejemplo si pruebas a efectuar esta suma:

Msgbox Format(cdate("12:25") + cdate("15:40"),"hh:mm") veras que el resultado devuelto es 04:05 y tu preguntaras ¿ Porque ? pues porque gracias a Dios para los currantes los días tienen sólo 24 horas he ahí el problema.

Los valores de fechas pueden sumarse y restarse pero obviamente no es tan fácil y debe determinarse como. Como no se trata de reinventar la rueda, debemos utilizar las herramientas de VB para que haga el trabajo sucio y después nosotros actuar en consecuencia.

Si prevees que la hora de inicio y la hora de fin pueden estar en días diferentes, debes guardar el valor de Now que es la fecha AHORA con fecha y hora y de este modo puedes calcular el tiempo transcurrido entre hora de inicio y hora de fin.

Minutos = DateDiff("n", HoraInicio, HoraFin) esta función te devolverá el número de minutos transcurridos entre las dos fecha, a partir de ahí toca dividir para saber las horas enteras y los minutos.

Se trata de hacer una función que agilice el trabajo, tal vez alguien la tenga ya hecha pero si no tendremos que ponernos a ello.

En cuenta al error de tipos en la suma que efectúas en el Grid el error puede deberse a problema de datos de fecha.

Antes de Sumar o Restar fechas es conveniente hacer la comprobación IsDate en la función para confirmar que los valores que utilizamos son Fechas

A ver quien nos da antes con esta función, aunque estoy casi seguro que nuestro amigo pkj ya esta en ello.

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...