Suma de celda formato horas

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. Aquí 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 solución o alternativa. Ten en cuenta que no es necesario que los datos de registro sean en hh:mm, si no que también podría ser un valor entero (minutos) y luego formatear a hh:mm en el informe. De cualquier forma no se como hacerlo.

1 respuesta

Respuesta
1
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 estarás sumando realmente son todos estos valores. Si luego lo que te salga lo multiplicas por 24 tendrás 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 podrás poner en el formato que tu quieres ya que se traduciría 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 más 4:09 horas.
Otra opción 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 así:
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 pasándolo a nuestra escala diaria de 0 a 24 en lugar de 0 a 0.9999. En nuestro caso 28,15
Al ponerle delante la función Ent nos devolverá 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 darían los minutos.
Luego he añadido funciones Cad() para transformar los números 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.
Hola Angel, muchas gracias por el tiempo dedicado. Te cuento que estoy probando lo que me propones, esta muy bien, lo único que no me queda bien claro es como almaceno los datos en la columna horas de una tabla. Mi intención era con un numero entero (30) para 30 minutos, (120) para dos horas, ¿me explico? Bueno, en todo caso puedes decirme como pretendías hacerlo según la fórmula que me pasas.
Saludos,
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.
Sisi, es tal cual como tu dices, ya tengo la tabla con la columna horas y almaceno los datos en números enteros (minutos) Bien, hago la suma del campo en un formulario y obtengo el resultado en n° entero. ¿Dónde es que debo utilizar la fórmula? : 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 entendí mal, esta fórmula estaría haciendo el calculo total. Pero no me da un resultado incorrecto. Estoy sumando 30,20,30,55,22 (de la columna horas) y me da 3768hs: 0mm
¿Qué estoy haciendo mal?
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.
Pero claaaarro, Genio! Perdón, yo estaba sumando los datos incorrectos para tu fórmula.
Esta más que perfecto. Hago el cuadro de texto que suma la columna horas en formato hora corta e ingreso la fórmula que me propones y funciona correctamente.
Muchas gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas