Access - CONSULTA SUMA CAMPO HORAS

   
Vista:

CONSULTA SUMA CAMPO HORAS

Publicado por Javier (2 intervenciones) el 28/03/2018 18:03:18
Buenas tardes,

Sé que es un tema ya comentado pero no consigo aclararme. Tengo una tabla con un campo (TIEMPO) con formato fecha/hora y máscara de entrada de hora corta (HH:MM). En este campo pongo las horas trabajadas.
La cuestión es que quiero hacer una consulta que me sume las horas trabajadas. Aparte agruparía el total por otro campo llamado SERIE (pero esto es secundario)
Ejemplo: 10:00 + 10:30 + 10:40 y que de como resultado 30:10
Al hacer una suma pura y dura del campo TIEMPO el resultado que da son unos números enteros con muchos décimales.
Sé que el problema deriva en el tema de como trata access las fechas y este tipo de formato.
Si me pudieran arrojar un poco de luz os lo agradecería.

Un saludo 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 Norberto

CONSULTA SUMA CAMPO HORAS

Publicado por Norberto (592 intervenciones) el 10/04/2018 11:39:36
Hola.

El problema es que Access no tiene el formato [HH]:MM de Excel que evita que el exceso de horas a partir de 24 se convierta en días.

Las fechas en ambos casos se almacenan como números, siendo la parte entera el día y la parte decimal la hora. Así pues, ahora son las 10/04/2018 12:26:24, o lo que es lo mismo, 43200,5183333333.

El formato hace que el valor numérico se visualice como fecha, hora o combinación de ambas. Así pues, si sumamos 10:00 (0,416666666666667) + 10:30 (0,4375) + 10:40 (0,444444444444444) obtenemos 1,29861111111111 o lo que es lo mismo, 1 día y una fracción de día. Este valor con un formato D HH:MM mostraría 31 07:10 . ¿Cómo es esto posible? Porque el valor de fecha 1 corresponde al 31/12/1899. Cosas de Microsoft.

Ahora vamos a la solución. Crea un módulo y le pones el siguiente código:
1
2
3
4
5
6
7
8
9
10
Public Function FormatHHH(Hora As Date, Optional Segundos As Boolean = False) As String
    Dim HH As Long, MM As Integer, SS As Integer
 
    HH = Int(Hora) * 24 + Hour(Hora)
    MM = Minute(Hora)
    SS = Second(Hora)
 
    FormatHHH = Format(HH, "00") & ":" & Format(MM, "00") & IIf(Segundos, ":" & Format(SS, "00"), "")
 
End Function

Para usarlo utiliza la expresión TotalHoras: FormatHHH(Suma(Tiempo)) en tu consulta de totales. También tienes que tener en cuenta que este resultado es de tipo texto y que no podrás hacer operaciones con él.

Un saludo,

Norberto.
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

CONSULTA SUMA CAMPO HORAS

Publicado por Xabis (2 intervenciones) el 10/04/2018 18:07:08
Muchas gracias!! Voy a intentarlo...
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