Si bien te digo que no lo haría así, primero, te explico el proceso y luego te diré el problema de la suma de horas. Supongamos que tengo una tabla Empleados
Y una tabla Horas
Con ella construyo un informe agrupado y ordenado como tu dices. A la izquierda está el cuadro de texto IdHorario.
Verás que le he añadido un cuadro de texto Dif
En el evento Al dar formato de la sección Detalle le digo
Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer)
Dif = Hora - Nz(DLast("hora", "horas", "idempleado=" & Me.IdEmpleado & " and fecha=reports!horas!fecha and idhorario<" & Me.IdHorario & ""))
End Sub
Es decir, que el valor del control Hora sea igual a la hora que hay en el control Hora menos la última que hay en la tabla horas en el registro en que el empleado sea el mismo, la fecha la misma pero que el Idhorario sea menor que el que figura en ese momento en ese registro.
Luego selecciono el control Dif y le digo que sus bordes sean transparentes y pulso Formato-Formato condicional-Nueva regla la expresión es
[[dif]=[hora] y le digo que el color del texto sea igual al del fondo( blanco) con lo cual no se distingue ningún valor y parece que no hay nada escrito. El cuadro de texto Idhorario lo puedes poner como visible=no.
El problema de sumar horas es que no existen como tal, como tampoco los días. Las horas en realidad son decimales de día. Si las sumas y dicha suma supera las 24 horas te va a dar un valor falseado, porque lo que hace en "añadirle" un día. Ahora mismo cuando estoy escribiendo esto la hora real es
43695,4830440
Es decir, el día 43695 a contar desde el 01/01/1900 y la parte decimal es la hora.
Por eso tendrías que hacer la suma de horas en decimal y luego "convertirlo" al formato hora.
Como es sencillo de hacer, pero largo y tedioso explicarlo, si quieres, repito, si quieres, mándame un mensaje(sólo el mensaje) a [email protected] y te mando un ejemplo
Si lo haces, en el asunto del mensaje pon tu alias Toni Bodtail, ya que si no sé quien me escriba ni los abro.