Calculo diferencia dBe horas en ACCESS

Tengo un control de horarios que lo he ido confeccionando con ayuda de este foro y necesito ir afinando un poco más.

Cada registro horario lo guarda en un registro nuevo.

Entonces necesito que cuando saque un informe que viene ordenado por código, luego por fecha y luego por hora, me calcula la diferencia de horas que hay entre la entrada y la salida y al final la suma total de todo lo calculado.

Adjunto foto de mas o menos como lo quiero.

Mil gracias.

1 respuesta

Respuesta
1

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.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas