Cita:
Iniciado por J0rg3M4r10
Hola
saludos..
he realizado un sofware que registra la Hora de Entrada y la hora de Salida de un empleado, el programa calcula bien las horas laboradas por el empleado, el problema es cuando un empleado entra y sale varias al dia el programa calcula las horas por cada entrada y salida........un ejemplo
Tomasito==> FechaEntrada: 2010-07-14 09:00 FechaSalida: 2010-07-14 15:00
el programa calcula que Tomasito trabajo 6 horas
como calculo si entra y sale varias veces al dia....ej:
Tomasito ==> FechaEntrada: 2010-07-14 06:00 FechaSalida: 2010-07-14 10:00
FechaEntrada: 2010-07-14 12:00 FechaSalida: 2010-07-14 14:00
nesecito una idea
gracias de antemano (si puden explicarlo en c# seria mejor)
?? y cual es el problema? usa el mismo calculo y sumas las horas resultantes...
tienes registradas las horas en una base de datos?. puedes identificar si la marca de tiempo es de entrada o salida? en ese caso, solo debes rescatar los registros por usuario en forma cronologica, y por cada marca, calcular la diferencia de tiempo de cada segmento. adicionalmente vas sumando los segmentos de tiempo, y tienes las horas que trabajo en un dia... debes tener cuidado cuando hay marcas que comienzan en un dia A, y terminan un dia B (ejemplo personas que trabajan en el turno de noche), ya que en este caso, el calculo debe involucrar la fecha.
uno de los mejores metodos para calcular diferencias entre fechas, es calcularlo en la base de datos, mediante un query que te devuelva los datos ya calculados.
ejemplo :
abs(convert( decimal (5,2), datediff(minute, convert(datetime, substring(convert(char(23),inghorsal), 12, 8)), convert(datetime, substring(convert(char(23),inghorent), 12, 8))) / 60.0)) as 'Total_Horas',
con eso calculas en el SP, las horas entre 2 fechas.
espero te sirva
Plch