none
CONVERTIR MINUTOS A HH:MM:SS EN SQL ACCESS RRS feed

  • Pregunta

  • Buenos días,

    Mi consulta es la siguiente, miren tengo dos campos INGRESO Y SALIDA en mi tabla de ASISTENCIA de las cuales quiero calcular las horas trabajadas de los trabajadores, este reporte se genera a través de un sistema que a decir verdad no se porque algunas veces me saca dicho reporte con formato de horas 'hh:mm' y otras veces  'hh:mm:ss ampm'. La cuestión es que yo ya había restado las horas fácilmente y me había salido las horas laboradas de los trabajadores, pero al generar un nuevo reporte ahora ese simple código no me sale y solo muestra '#Error'.

    Entonces yo necesito calcular la diferencia de esas dos horas en formato 'hh:mm' en SQL ACCESS. Una de las soluciones que he podido pensar es obtener los MINUTOS entre esas dos horas con el siguiente código:

    DateDiff('n',INGRESO,SALIDA)) AS TOTAL_LAB

    Este código se encuentra en una consulta llamada 'GENERAR_ASISTENCIA' que da formato a mi tabla de asistencia.

    Y luego he creado otra consulta llamada 'REPORTE' que toma los MINUTOS de la consulta GENERAR_ASISTENCIA para realizar otros cálculos, etc. Estos minutos debo darle formato 'hh:mm' y he realizado lo siguiente:

    FORMAT(GENERAR_ASISTENCIA.MINUTOS,'hh:mm') as HORAS_LAB

    Este código solo me muestra '00:00' en toda la columna de mi consulta y de ahi ya no se que hacer.

    Alguna idea mejor para realizar este calculo?

    Mi código:

    SELECT

    GENERAR_ASISTENCIA.VENDOR AS CODIGO,

    GENERAR_ASISTENCIA.sorteoporapellido AS APELLIDOS_Y_NOMBRES,

    GENERAR_ASISTENCIA.DIA,

    GENERAR_ASISTENCIA.FECHA,

    GENERAR_ASISTENCIA.HORARIO,

    IIf(IsNull(GENERAR_ASISTENCIA.INGRESO),GENERAR_ASISTENCIA.INTER1,GENERAR_ASISTENCIA.INGRESO) AS INGRESO,

    IIf(IsNull(GENERAR_ASISTENCIA.SALIDA),GENERAR_ASISTENCIA.INTER2,GENERAR_ASISTENCIA.SALIDA) AS SALIDA, 

    format(GENERAR_ASISTENCIA.HORAS_LAB,'hh:mm') AS HORAS_LABORADAS,

    agencias.MACROREGION,

    agencias.AGENCIA,

    IIf(GENERAR_ASISTENCIA.INGRESO<GENERAR_ASISTENCIA.TOL_INI OR GENERAR_ASISTENCIA.SALIDA>GENERAR_ASISTENCIA.TOL_FIN, 'HORARIO NO ESTABLECIDO','') AS OBSERVACIONES

    FROM GENERAR_ASISTENCIA, agencias, HORARIOS
    WHERE (((GENERAR_ASISTENCIA.HORARIO)='part') And ((IIf(IsNull(GENERAR_ASISTENCIA.TERMINAL1),GENERAR_ASISTENCIA.TERMINAL3,GENERAR_ASISTENCIA.TERMINAL1))=agencias.coddispositivo)) AND GENERAR_ASISTENCIA.DIA=HORARIOS.DIA_SEM AND GENERAR_ASISTENCIA.HORARIO=HORARIOS.codigohojatiempo
    ORDER BY GENERAR_ASISTENCIA.sorteoporapellido;

    GRACIAS


    Juan Pastor

    miércoles, 22 de enero de 2014 15:32

Todas las respuestas

  • ¿Por qué no preguntas en el foro de Access? allí seguro que te ayudarán mejor
    miércoles, 22 de enero de 2014 16:35
  • Hola

    La función format no te vale para lo que quieres hacer. Usa éste código para generar el número de horas y minutos a partir de la función DateDiff

    Public Function CalculoHHMM(lMinutos As Long) As String
        Dim lHoras As Long, lRestoMinutos As Long
        lHoras = lMinutos / 60
        lRestoMinutos = lMinutos Mod 60
        
        CalculoHHMM = CStr(lHoras) & ":" & Format(lRestoMinutos, "00")
    End Function

    Salu2,


    José Mª Fueyo [MS MVP Access]

    lunes, 27 de enero de 2014 11:38