Calculo de horas trabajadas por empleados

11/11/2011 - 17:29 por Luciano | Informe spam
Buenas tardes comunidad:
No soy experto en Access y estoy tratando de hacer unos cálculos en en
una base de datos en la que se almacenan los siguientes datos
provenientes de un Reloj de huellas dactilares:

La base se llama Checkinout y contiene los siguientes campos:

Logid (entero)
Userid (texto)
CheckTime (Fecha/hora)
CheckType (Texto)

El reloj almacena en la tabla la siguiente información:

Logid Usuerid CheckTime CheckType
174 1 2011-11-10 07:54:48 I
175 2 2011-11-10 07:55:31 I
176 3 2011-11-10 07:57:26 I
177 4 2011-11-10 07:59:48 I
178 3 2011-11-10 14:03:12 O
179 2 2011-11-10 14:55:31 O
180 4 2011-11-10 15:57:26 O
181 1 2011-11-10 19:58:24 O

Los datos están organizados por el Logid, el CheckType indica con "I"
si el empleado Ingresa y con "O" si se retira del trabajo.
También hay empleados que entran a la tarde de un día y salen a la
madrugada del día siguiente.
Problema:
No encuentro la manera de hacer los cálculos de horas trabajadas para
poder realizar un informe por empleado con esa información.

Analizando los datos anteriores puedo ver que el empleado con Userid=1
el 10/11/2011 trabajó 12 Horas. Este cálculo necesito poder hacerlo
desde Access 2003.

Espero que me puedan dar una idea de como hacerlo.

Muchas Gracias

Luciano

Preguntas similare

Leer las respuestas

#6 Luciano
26/11/2011 - 15:43 | Informe spam
Hola Juan:

He logrado implementar las consultas y obtener los resultados. El
único inconveniente que tengo es que me los muestra en forma de
números y no en forma de fecha.
Cuando quiero cambiar el formato en la "Consulta2" del campo "ctr" no
me aparece el formato fecha.

Los números que me arroja son de la siguiente manera:

Userid SumaDectr
1 530781,307708333
2 -40853,1607986111
100 -122505,648298611

También me llama la atención los el signo negativo delante de algunos
resultados.

Bueno, espero me puedas orientar con este problema.

Muchas gracias de antemano.

Luciano
On 15 nov, 03:45, Juan Español wrote:
Hola Luciano:
Una solución sencilla y fácil de entender es:
Creamos dos consultas:
Una consulta de selección llamada CONSULTA1
con esta sentencia SQL
Ojo a la tabla que contiene los datos yo la llamo Tabla1 cambia esto por el
nombre real de tu tabla

SELECT Tabla1.Logid, Tabla1.Userid, Tabla1.CheckTime, Tabla1.CheckType,
[CheckTime]*([CheckType]="I")-([CheckTime]*([CheckType]="O")) AS ctr
FROM Tabla1;

Otra consulta de selección que la puedes llamar como quieras
que es la que te dará los datos
con esta sentencia SQL

SELECT CONSULTA1.Userid, Sum(CONSULTA1.ctr) AS SumaDectr
FROM Tabla1 INNER JOIN CONSULTA1 ON Tabla1.Logid=CONSULTA1.Logid
GROUP BY CONSULTA1.Userid
HAVING (((CONSULTA1.Userid)=[QUE EMPLE]));

Bueno en cuanto veas el diseño de las consultas verás dónde está el "truco"
convendría poner un control previo al cálculo para que la cantidad de
registro con CheckType
= I es la misma que CheckType = O ( del empleado a calcular)
pues si no, el empleado está trabajando y el cálculo será negativo o la base
está corrupta.
El poner un criterio al campo CheckTime es cosa trivial que dejo a tu
necesidad.

Saludos.-

"Luciano" escribió en el mensaje de noticiasnews:
Buenas tardes comunidad:
No soy experto en Access y estoy tratando de hacer unos cálculos en en
una base de datos en la que se almacenan los siguientes datos
provenientes de un Reloj de huellas dactilares:

La base se llama Checkinout y contiene los siguientes campos:

Logid (entero)
Userid (texto)
CheckTime (Fecha/hora)
CheckType (Texto)

El reloj almacena en la tabla la siguiente información:

Logid  Usuerid   CheckTime                CheckType
174         1        2011-11-10 07:54:48     I
175         2        2011-11-10 07:55:31     I
176         3        2011-11-10 07:57:26     I
177         4        2011-11-10 07:59:48     I
178         3        2011-11-10 14:03:12     O
179         2        2011-11-10 14:55:31     O
180         4        2011-11-10 15:57:26     O
181         1        2011-11-10 19:58:24     O

Los datos están organizados por el Logid, el CheckType indica con "I"
si el empleado Ingresa y con "O" si se retira del trabajo.
También hay empleados que entran a la tarde de un día y salen a la
madrugada del día siguiente.
Problema:
No encuentro la manera de hacer los cálculos de horas trabajadas para
poder realizar un informe por empleado con esa información.

Analizando los datos anteriores puedo ver que el empleado con Userid=1
el 10/11/2011 trabajó 12 Horas. Este cálculo necesito poder hacerlo
desde Access 2003.

Espero que me puedan dar una idea de como hacerlo.

Muchas Gracias

Luciano
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida