Como crear control de presencia personal en access

Estoy creando un control de presencia de personal en access y tengo problemas cuando quiero generara una consulta ya que me duplica la información, lo he probado de todas las formas que conozco y no doy con la solución. Cree dos tablas una con entradas y otra con salidas y me duplica la información en la consulta, cree una sola tabla con dos campos, uno de entrada y otro de salida y también me duplica la información ya que al estar automática la hora, cuando marca la entrada me marca también la salida con la misma hora de entrada y al marcar la salida pasa lo mismo, conclusión, duplica la información. La solución sería que marcara en un mismo campo la entrada y la salida, ¿pero cómo podría restar las horas de un mismo código de empleados cuando en la tabla entran y salen constantemente empleados y no hay un orden? .

1 Respuesta

Respuesta
1

Por lo que comentas, me parece que no tienes bien estructurada tu BD.

Necesitarías una tabla para recoger los datos de los trabajadores, y dos tablas relacionadas con esta, una para las entradas y otra para las salidas. El sistema sería similar a éste para gestionar entradas y salidas de un almacén.

Para restar las horas, una vez tengas la consulta hecha, puedes añadir un nuevo campo a ésta que te calcule la diferencia entre la hora de salida y la de entrada, usando la función DifFecha.

Te agradezco el ejemplo pero tengo un problema y es que el cod producto, que sería el cod. empleado, en mi caso, en CEntradas2, me suma las horas cada vez que le pongo un día, por ejemplo, el día 20 el cod 100 entra a las 10 y se va a las 18, estos suman 8 horas, pero el día 21 entra nuevamente el cod 100 a las 10 y se va a las 18 entonces me hace una suma rara del 20 y 21 y yo necesito sacar día por día las horas que ha trabajado. como podría hacer para que el cod 100 me restara desde la hora de entrada hasta la de salida día por día?

gracias nuevamente

En las consultas tienes que añadir también el campo fecha, y en las consultas "2" (CEntradas2 y CSalidas2), en ese campo le pones en Total: Agrupar por. De este modo, la suma (el campo creado con diffecha) te la da para cada día.

Si, pero al hacer esto me duplica las filas, que es lo que me pasaba antes .

cuando entro mas de un día me lo duplica

A ver si esto te sirve. Tomando como base el ejemplo de la gestión de almacén, sobran las segundas consultas, si agrupas ya los valores en la primera, pues necesitas los cálculos por día, y no los totales como en el ejemplo. Además, has de relacionar las consultas CEntradas y CSalidas por el campo fecha.

Otra opción sería montar el sistema de este otro modo: Control2

Así recoges en una misma tabla las horas de entrada y salida en la misma tabla, con lo que te evitas tener que hacer las consultas "auxiliares".

El problema con el primer caso es que si un empleado entra y sale el mismo día, o sea, hace dos turnos, me vuelve a duplicar registros y en el segundo caso tengo ,el problema de que si un empleado entra el día 20 a las 22:00 y sale el día 21 a las 06:00, como lo registro en la misma tabla?

perdón por poner tantas pegas pero creo que poco a poco nos vamos acercando al resultado final. gracias por vuestro tiempo y dedicación.

¿Las horas como las necesitas: diarias, semanales, mensuales...?

diarias

¿Y en el caso que pones de que empiece un día y acabe el siguiente, como lo tratas? ¿Partes las horas entre los dos días?

si. por ejemplo, entra el día 20 a las 22:00 y sale el 21 a las 06:00

En ese caso obtendrías 2 horas para el día 20 y 6 para el 21, ¿correcto?

claro, pero en la consulta quisiera que me diera las 8 horas trabajadas igual que me las saca cuando entran y salen el mismo día

¿Y en que día querrías que te salieran esas 8 horas trabajadas? ¿En el de entrada o en el de salida?

Si me pones un el resultado que quieres que te de la consulta, para estos datos, me sería de ayuda para no andar dando vueltas:

No se como insertarte una imagen , cuando pico en imagen me pide una url, sino te ponía un ejemplo, me podrías decir como insertar la imagen? De todas formas te explico. En el trabajador uno, por ejemplo; entra el 21 a las 22:00 y sale el 22 a las 06:00, Esto en la consulta me saldría, - 16 horas, y ademas como elaboro el formulario para que entrada y salida estén el el mismo registro para que luego la consulta no se lie?

Para subir imagenens, mira este enlace:

http://wiki.todoexpertos.com/Como_puedo_incluir_imagenes_en_las_preguntas_y_en_las_respuestas.ashx

Para que la entrada y salida estén en el mismo registro tienes que tener en al misma tabla una fecha entrada, hora de entrada, fecha de salida y hora de salida, es decir, igual que en la imagen que te puse arriba. Luego haces el formulario sobre esa tabla.

En el ejemplo Control2 que te mandé ayer, tendrías que añadir el campo Fecha salida.

Luego, en la consulta, para evitar que te devuelva horas negativas, el cálculo sería:

Tiempo: Suma(DifFecha("n";[FechaE] & " " & [HoraE];[FechaS] & " " & [HoraS])/60)

Es decir, tienes que concatenar la fecha y la hora para que haga bien la diferencia horaria.

Si, pero cuando marquen la entrada en el formulario manda un registro a la tabla y cuando marquen la salida mandara otro registro de salida a la misma tabla, quedarían en dos filas diferentes, no quedaría como mandas en la imagen

Eso no es así:

Al marcar una entrada, el registro de TControlH del trabajador que sea queda con FechaS y HoraS en blanco. Al marcar una salida sólo tienes que rellenar esos dos campos del trabajador.

Cuando tenga un rato te preparo un ejemplo para que lo veas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas