Access - A ver si alguien me puede ayudar con esto...

 
Vista:

A ver si alguien me puede ayudar con esto...

Publicado por Miguel Angel (2 intervenciones) el 12/10/2001 16:47:11
A ver si alguien me ayuda con esto, no creo que sea muy dificil pero es que todavía no domino mucho Access. Tengo que hacer lo siguiente:

Tengo un formulario con un código de trabajador, fecha y unas horas de presencia más unos campos calculados. En el mismo formulario tengo un subformulario que contiene las tareas que hace en la fecha dada en el formulario el trabajador y el tiempo que duran. Por ejemplo:

(Formulario)
Codigo:00001 ; Fecha: 12/09/2001 ; HTotal:----------- (Campo calculado)
(Subformulario)
Tarea:1; Hora Inicio:09:00 ; Hora Fin:10:00 ; Presencia=01:00
Tarea:2; Hora inicio:10:00 ; Hora Fin:11:30; Presencia=01:30
Tarea:3; Hora inicio:11:30 ; Hora Fin:12:00; Presencia=0:30
.......

Mis preguntas son:
¿Como puedo hacer que la hora de inicio sea la hora final de la tarea anterior?
La suma de todas las horas de presencia son HTotal del formulario
¿Como puedo hacer el sumatorio de todos?

Sólo esto, Gracias de antemano a todos.

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

A ver si alguien me puede ayudar con esto...

Publicado por Alejandro (4142 intervenciones) el 18/04/2023 23:36:32
Para hacer que la hora de inicio sea la hora final de la tarea anterior, puedes utilizar el evento "Al cambiar" del subformulario. En el código del evento, puedes buscar el registro anterior al registro actual y establecer la hora de inicio como la hora de fin del registro anterior.

Aquí hay un ejemplo de código que puedes utilizar:

1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Form_Current()
    Dim rs As DAO.Recordset
    Set rs = Me.RecordsetClone
 
    rs.FindFirst "[ID] < " & Me.ID
    If Not rs.NoMatch Then
        Me.HoraInicio = rs!HoraFin
    End If
 
    rs.Close
    Set rs = Nothing
End Sub

Para hacer la suma de todas las horas de presencia, puedes utilizar la función "DSum" en el evento "Al cambiar" del subformulario. En el código del evento, puedes calcular la suma de todas las horas de presencia y establecer el valor en el campo "HTotal" del formulario.

Aquí hay un ejemplo de código que puedes utilizar:

1
2
3
Private Sub Form_Current()
    Me.HTotal = DSum("[Presencia]", "[NombreTabla]", "[Codigo] = " & Me.Codigo & " AND [Fecha] = #" & Me.Fecha & "#")
End Sub

Reemplaza "NombreTabla" con el nombre de la tabla que contiene las tareas y "Codigo" y "Fecha" con los nombres de los campos en los que se almacena el código de trabajador y la fecha en la tabla de tareas.

Espero que esto te ayude a resolver tus preguntas.
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