Access - Restar Horas?

 
Vista:

Restar Horas?

Publicado por Jose (11 intervenciones) el 04/04/2007 15:19:58
Buenas a todos. Os planeto mi problema:

Tengo una base de datos en access para que mis empleados me pongan las horas que están con un determinado trabajo. Tengo una tabla en la que el empleado Pepito inicia un trabajo 1 a las 12:00h y lo finaliza a las 18:00h. Todo esto lo hacen mediante dos formularios, uno para iniciar el trabajo y otro para finalizar dicho trabajo, donde introducen la hora actual.
Ahora quiero saber como, en otra tabla, donde tengo los datos de los trabajos y acabo de añadir un nuevo campo llamado tiempoTotal, puedo hacer que cada vez que un trabajador finalice su trabajo diario, se sume automaticamente la diferencia entre las horas de inicio y final de la jornada.

Gracias a todos...
Jose
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Cómo calcular y guardar la diferencia de tiempo en una tabla al finalizar un trabajo

Publicado por Alejandro (4142 intervenciones) el 07/08/2023 21:53:00
Hola, José.

Para realizar la suma automática de la diferencia entre las horas de inicio y final de la jornada y guardarla en el campo "tiempoTotal" de la tabla, puedes hacer lo siguiente:

1. Agrega un evento AfterUpdate a los campos de hora de inicio y hora de finalización en el formulario de finalización del trabajo. Esto se hace abriendo el formulario en modo diseño, haciendo clic derecho en el campo de hora de inicio (por ejemplo) y seleccionando "Propiedades". Luego, en la pestaña "Eventos", busca el evento AfterUpdate y haz clic en el botón de los tres puntos para abrir el editor de código.

2. En el editor de código, escribe el siguiente código para calcular la diferencia entre las horas de inicio y finalización y guardarla en el campo "tiempoTotal":

1
2
3
4
5
6
7
8
9
10
11
Private Sub HoraInicio_AfterUpdate()
    If Not IsNull(Me.HoraInicio) And Not IsNull(Me.HoraFin) Then
        Me.TiempoTotal = DateDiff("n", Me.HoraInicio, Me.HoraFin)
    End If
End Sub
 
Private Sub HoraFin_AfterUpdate()
    If Not IsNull(Me.HoraInicio) And Not IsNull(Me.HoraFin) Then
        Me.TiempoTotal = DateDiff("n", Me.HoraInicio, Me.HoraFin)
    End If
End Sub

En este código, asumimos que los campos de hora de inicio y hora de finalización se llaman "HoraInicio" y "HoraFin" respectivamente, y que el campo para almacenar el tiempo total se llama "TiempoTotal". DateDiff es una función de VBA que calcula la diferencia entre dos fechas o horas en minutos ("n").

Con este código, cada vez que un trabajador finalice su trabajo diario y actualice la hora de finalización, la diferencia entre las horas de inicio y finalización se calculará automáticamente y se guardará en el campo "TiempoTotal" de la tabla.

Espero que esta solución te sea de ayuda. ¡Buena suerte con tu base de datos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar