Imprimir página | Cerrar ventana

Suma Horas

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84537
Fecha de impresión: 23/Julio/2019 a las 18:04


Tema: Suma Horas
Publicado por: Nomada
Asunto: Suma Horas
Fecha de publicación: 04/Junio/2019 a las 10:51
Buenas.
Tengo un formulario continuo con un campo de Fecha/Hora (C_Horas).
En el pie del formulario un campo independiente con Origen de control:
=Suma([C_Horas]) cuyo nombre es vSumaTotalHoras

otra campo también independiente con Origen de control:
=Redondear(([vSumaTotalHoras]-Int([vSumaTotalHoras]))*60;0) de nombre vMInutos

por último el campo donde muestro la suma de horas de todos los registros:
=Int([vSumaTotalHoras]) & ":" & Format(([vMinutos]);"00")

Pues la suma de tres registros donde el campo C_Horas tenga 5 minutos cada registro me da 14.

Alguna sugerencia?

Gracias y un saludo.





Respuestas:
Publicado por: xavi
Fecha de publicación: 04/Junio/2019 a las 12:54
Se supone que el control vSumaTotalHoras contiene horas y minutos.
Se supone que el control vMinutos es para mostrar solo los minutos (sospecho que el redondeo es la causa de que no te cuadre)

No entiendo la necesidad de crear un tercer campo para mostrar la parte entera de horas y los minutos de forma formateada. ¿No es lo mismo que aparece en vSumaTotalHoras?

En cualquier caso, para mostrar una hora:minutos disponemos de TimeSerial



-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: Nomada
Fecha de publicación: 04/Junio/2019 a las 13:26
Gracias Xavi.
Realmente el campo vSumaTotalHoras, viene del código:
vHorasRealizadas = Round(DateDiff("n", (HEntrada], [HSalida]) / 60, 2)
con lo cual no tiene exactamente horas y minutos, sino como ves la diferencia de entrada salida con el redondeo y 2 decimales.

Probe también con este otro código, con la diferencia de que no suma las horas de los registros, sino en un mismo registro las horas de los distintos días de la semana, pero hace lo mismo:
Dim vHorasRealizadasL, vHorasRealizadasM As Variant, vTotal As Single, vMinutosRealizados As Double
'Calculo Lunes
vHorasRealizadasL = Nz(Round(DateDiff("n", [EntradaL], [SalidaL]) / 60, 2), 0)
'Calculo Martes
vHorasRealizadasM = Nz(Round(DateDiff("n", [EntradaM], [SalidaM]) / 60, 2), 0)
vTotal = vHorasRealizadasL + vHorasRealizadasM
vMinutosRealizados = Round((TOTAL - Int(TOTAL)) * 60, 0)
Me.Horas.Value = Int(TOTAL) & ":" & Format((vMinutosRealizados), "00")
Me.J_TotHoras.Value = Me.Horas.Value
Sinceramente me gusta más este último código, pero como digo tampoco funcionada correctamente.



Publicado por: mounir
Fecha de publicación: 04/Junio/2019 a las 14:54
Hola!

Sí nos dijeras, ¿que es lo que quires hacer? y los campos y algun dato ficticio, a lo mejor podríamos intentar ayudarte.

-------------
Un Saludo.


Publicado por: Nomada
Fecha de publicación: 04/Junio/2019 a las 17:32
Perdón por no explicarme bien.
En un formulario continuo tengo 10 campos Fecha/Hora para cada día de la semana (5 para "EntradaX" y 5 para "SalidaX").
Ahora mediante el siguiente código obtengo el tiempo de cada día en el campo correspondiente (vL, vM, etc.), lo sumo y el resultado lo paso a un campo de texto de nombre TotalHoras:
Este es el código:
Dim vL, vM, vX, vJ, vV As Variant
Dim vTotal As Single, vMinutosRealizados As Double
'Calculo Lunes
vL = Nz(Round(DateDiff("n", [EntradaL], [SalidaL]) / 60, 2), 0)
'Calculo Martes
vM = Nz(Round(DateDiff("n", [EntradaM], [SalidaM]) / 60, 2), 0)
'Calculo Miercoles
vX = Nz(Round(DateDiff("n", [EntradaX], [JSalidaX]) / 60, 2), 0)
'Calculo Jueves
vJ = Nz(Round(DateDiff("n", [EntradaJ], [SalidaJ]) / 60, 2), 0)
'Calculo Viernes
vV = Nz(Round(DateDiff("n", [EntradaV], [SalidaV]) / 60, 2), 0)
vTotal = vL + vM + vX + vJ + vV
vMinutosRealizados = Round((vTotal - Int(vTotal)) * 60, 0)
Me.TotalHoras.Value = Int(vTotal) & ":" & Format((vMinutosRealizados), "00")

Con este código, si por ejemplo los 3 primeros días ha trabajado de 7:00 a 7:35, cada día ha trabajado 35 minutos, lo que da como resultado 1:45 minutos. Pues el campo "TotalHoras" me muestra 1:44.
Qué es lo que está mal?
Espero haberme explicado un poquito mejor.
Gracias y saludos.


Publicado por: mounir
Fecha de publicación: 04/Junio/2019 a las 18:34
Hola!

Mírate este ejemplo, es muy sencillo:

http://www.filebig.net/files/qVcSE2gEYR" rel="nofollow - http://www.filebig.net/files/qVcSE2gEYR

-------------
Un Saludo.


Publicado por: Nomada
Fecha de publicación: 04/Junio/2019 a las 18:44
Gracias.
Voy a probarlo y te cuento.


Publicado por: Nomada
Fecha de publicación: 05/Junio/2019 a las 10:56
Perfecto.
Muchas gracias.
Este hilo se puede cerrar satisfactoriamente




Imprimir página | Cerrar ventana