Inicio > Microsoft Access > blaky76 > Suma de celda formato horas

Suma de celda formato horas

Experto:
Usuario:
Fecha: 19/08/2008
Valoración: (5,00 sobre 5) Categoría: Microsoft Access
15/08/2008
sapalma, usuario preguntando en Microsoft Access
Usuario
Buenas, que tal? tengo un problemita, tengo una base de datos que guarda, ademas de varios datos, una celda en formato hora corta (hh:mm) el caso es que en determinado momento necesito crear un informe y sumar el total de horas de todos los registros. Aqui es cuando esta el problema porque access cuenta hasta 24 horas y luego arranca de cero. En concreto necesito que el resultado sea del tipo, como ej: 200hs:58mm
Espero tengas alguna solucion o alternativa. Ten en cuenta que no es necesario que los datos de registro sean en hh:mm, si no que tambien podria ser un valor entero (minutos) y luego formatear a hh:mm en el informe. De cualquier forma no se como hacerlo, espero su ayuda.
Saludos y gracias!
18/08/2008
sapalma, experto respondiendo en Microsoft Access
Experto
Hola,
Estos datos se guardan como un valor de 0 a 0.999. Si realizas un consulta en la que te sumen las horas lo que estaras sumando realmente son todos estos valores. Si luego lo que te salga lo multiplicas por 24 tendras el valor total en horas. Ej:
15:32+12:37=1.173     1.173*24=28,15, es decir 28 horas y 9 minutos
Pero ninguno de estos valores los podras poner en el formato que tu quieres ya que se traduciria a una hora entre las 0:00 y las 23:59, si lo hicieras con el 1.173 serian las 4:09, es decir, 24 horas mas 4:09 horas.
Otra opcion es obviar el formato hora del access y crearte una cadena de texto con el formato que a ti te guste. Imagina un campo llamado horas que seria donde se almacenan las horas de cada uno de los registros, lo que te propongo seria algo asi:
Cad(Ent(24*Suma([horas])))++"hs:"++Cad(Ent(60*((24*Suma([horas]))-Ent(24*Suma([horas])))))++"mm"
con Suma([horas]) lo que te calcula es la suma total de horas en el formato que te he dicho, en nuestro caso 1.173Al multiplicar por 24 estamos pasandolo a nuestra escala diaria de 0 a 24 en lugar de 0 a 0.9999. En nuestro caso 28,15
Al ponerle delante la funcion Ent nos devolvera el entero, es decir la horas completas.
(24*Suma([horas]))-Ent(24*Suma([horas]) lo que hace es devolvernos la parte decimal, es decir 0,15 en nuestro caso, que al multiplicarlo por 60 nos darian los minutos.
Luego he añadido funciones Cad() para transformar los numeros en texto y poder encadenarlos junto con el resto del texto que tu sugieres "hs:" y "mm"
Espero que te sirva, si no lo entiendes o si tienes cualquier otra duda me lo dices. Saludos
Angel
19/08/2008
sapalma, usuario preguntando en Microsoft Access
Usuario
Hola Angel, muchas gracais por el tiempo dedicado. Te cuento que estoy probando lo que me propones, esta muy bien, lo unico que no me queda bien claro es como almaceno los datos en la columna horas de una tabla. Mi intencion era con un numero entero (30) para 30 minutos, (120) para dos horas, me explico? bueno, en todo caso puedes decirme como pretendias hacerlo segun la formula que me pasas.
Saludos,
19/08/2008
sapalma, experto respondiendo en Microsoft Access
Experto
La columna horas a la que yo me refiero es la que tú ya tengas diseñada, en la que incluyes los valores de cada registro.
Si te sirve simplemente con el valor entero de los minutos haz una consulta con la suma que te digo suma([horas]) y lo multiplicas por 24 si lo quieres en horas, o por 24*60 si lo quieres en minutos.
Cuando lo pruebes me dices si tienes alguna otra duda. Saludos
19/08/2008
sapalma, usuario preguntando en Microsoft Access
Usuario
Sisi, es tal cual como tu dices, ya tengo la tabla con la colunma horas y almaceno los datos en numeros enteros (minutos) Bien, hago la suma del campo en un formulario y obtengo el resultado en n° entero. ¿donde es que debo utilizar la formula?: Cad(Ent(24*Suma([horas])))++"hs:"++Cad(Ent(60*((24*Suma([horas]))-Ent(24*Suma([horas])))))++"mm"
Yo la inserte en el el campo "origen del control" del cuadro de texto donde pretendo que salga el resultado en hh:mm
Si no entendi mal, esta formula estaria haciendo el calculo total. Pero no me da un resultado incorrecto. Estoy sumando 30,20,30,55,22 (de la colunma horas) y me da 3768hs: 0mm
¿que estoy haciendo  mal?
19/08/2008
sapalma, experto respondiendo en Microsoft Access
Experto
La fórmula que he te puesto es para una columna (horas) en la que los datos vengan en el formato hora corta, es decir hh:mm, que es la que tú tenías.
Los datos que tú me comentas en la columna horas (30,20,30,55,22) están en formato número por lo tanto los estás sumando todos y además los multiplicas por 24.
Si ya los tienes en formato número olvídate de la fórmula que te dije, sólo tienes que sumarlos, sin complicar la fórmula mucho más.
Saludos
19/08/2008
sapalma, usuario preguntando en Microsoft Access
Usuario
Pero claaaarro, Genio! Perdon, yo estaba sumando los datos incorrectos para tu formula.
Esta mas que perfecto. Hago el cuadro de texto que suma la columna horas en formato hora corta e ingreso la formula que me propones y funciona corectamente.
Muchas gracias!!!
Enlaces patrocinados