No entrare en detalles, solo indicar que el diseño de esa tabla no me parece el optimo
Tal como se intenta calcular, creo que lo correcto seria invertir los términos (en lugar de multiplicar por la unidad en negativo) … yo en ese detalle estoy de acuerdo con Access: los relojes solo caminan en una dirección.
Unos cálculos efectuados en la ventana de inmediato:
Le asignamos valores a las variables de tipo Date
Hora1= cdate("10:45")
Hora2= cdate("18:05")
Calculamos la diferencia
?hora2 - hora1
0,305555555555556
Que es la misma si invertimos los terminaos (lo que invierte es el signo)
?hora1 - hora2
-0,305555555555556
le aplicamos un formato NORMALIZADO (el que se guardaría como valor calculado)
?format(hora2 - hora1, "hh:nn")
07:20
?format(hora2 - hora1, "short time")
07:20
?format(0.305555555555556, "hh:nn")
07:20
Lo mismo invirtiendo los términos:
?format(hora1 - hora2, "hh:nn")
07:20
?format(hora1 - hora2, "short time")
07:20
?format(-0.305555555555556, "hh:nn")
07:20
Conclusión: el error lo genera el guardar el dato calculado, ese mismo calculo efectuado en la consulta no daría problemas (algo que se puede hacer en una consulta con un clásico IIF)
Antes:
Después (y en la consulta, incluso como sumatorio):
OJO, ATENCION: si el calculo devuelve mas de 24 horas, devolverá días + horas + minutos (no horas + minutos) como resultado