Note: Forums will be making significant UX changes to address key usability improvements surrounding search, discoverability and navigation. To learn more about these changes please visit the announcement which can be found HERE.

Respondida Calcular horas en un periodo?

  • domingo, 21 de junio de 2009 2:51
     
     
    Hola, es un ejercicio de la facultad que necesito ayuda.
    La consigna dice..
    Agente tiene nombre y dni
    Un agente que puede asistir a trabajar más de una vez en el día
    1. Registrar la hora de entrada de un agente, en el momento que ingresa a trabajar
    2. Registrar la hora de salida de un agente, en el momento en que retira del trabajo. Para esto deberá buscar un registro de horario que tenga hora de entrada registrada, pero no contenga hora de salida, para la fecha actual.
    3. Seleccionar un agente e ingresar un periodo, y mostrar el tiempo (expresado en horas y minutos ) que trabajó el agente seleccionado en el periodo dado.

    Mi problema es PRINCIPALMENTE en el "pto 3" calcular la cantidad de horas en un periodo dado.
    Si alguno me tira una mano. Se lo agradeceria muchisimo!

    Desde ya gracias Patriota. San juan. Argentina

Todas las respuestas

  • domingo, 21 de junio de 2009 19:10
     
     Respondida
    Hola patriota.

    Esto como siempre se puede realizar de multiples formas.

    No obstante si comentas como tienes el punto 1 y 2 te podremos contestar el 3 de forma que cuadre con los 2 primeros.

    De todas formas te expongo lo que yo haria basicamente

    guardar en una tabla la persona, fecha y hora de entrada, fecha y hora de salida, cada vez que alguien ficha se inserta la correspondiente entrada en la tabla.
    En el punto 3 basandonos en la tabla anterior, tan solo tienes que realizar una consulta o crear un filtro para una persona con un rango de fechas.

    realmente esta forma se haria con la tabla en la BD y se guardarian los datos, luego con una simple consulta sql se podria obtener los registros entre un rango de fechas.

    Si usas esta forma y tienes problemas con la consulta, comenta que tabla tienes y te podremos ayudar (en el caso de que lo hagas de esta forma).




    Saludos
    David González
  • domingo, 21 de junio de 2009 19:18
    Moderador
     
     
    hola,

    asi es coincido con David lo ideal es el registrod e la actividad del agente en una db.

    entonces la consulta seria tienes un modelo DER armado ?
    o sea el diseño de la db lo tienes planteado ?

    el resto de tus consultas se resuelve simple con consultas sql, como te comenta David


    por ahi un diseño podria ser:

    Tabla: Agentes
    AgenteId PK
    Nombre

    Tabla RegistroActividad
    RegistroActId PK
    AgenteId FK
    Fecha
    HoraIngreso
    HoraEgreso


    analiza si este diseño te sirve, y luego se podria ver como armar la consulta para recuperar lo que necesitas de esta.

    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
  • domingo, 21 de junio de 2009 20:41
     
     
    Coincido con lo que te comentaron hasta ahora.
    Te sugiero además que guardes la "HoraIngreso" y "HoraEgreso" en minutos. Luego calculas el total restando.
    Convertir una fecha a minutos:

    int minIng = (int)dpHoraIng.Value.TimeOfDay.TotalMinutes;  //dpHoraIng: control DateTimePicker
    int minEgr = (int)dpHoraEgr.Value.TimeOfDay.TotalMinutes;

    //int total = HoraEgreso - HoraIngreso ;

    Saludos
    • Editado Anti_Work domingo, 21 de junio de 2009 20:44
    •  
  • domingo, 15 de abril de 2012 21:37
     
     

    hola a todos yo estoy en la misma la duda qeu se plantea es en dos turnos uno mañana y uno noche donde en el segundo turno  entran a las 18 hs y salen a las 3 de la mañana del dia siguiente como calcular en este caso la cantidad de horas que esta persona trabajo ya sea en el turno tarde como en el turno mañana  en este caso es de  9 hs 

    muchas gracias