Se me duplica y mezcla la información al pedir consulta de dos tablas

Tengo dos tablas, una con entradas y otra con salidas y al pedir una consulta me duplica y mezcla la información, por ejemplo, Tablas:

                Entradas                                                              Salidas

Codigo        fechaE            HoraE                           Codigo            fechaS              HoraS

100         01/08/2104       10:00                                100           01/08/2014         18.00

100         02/08/2014       11:00                                100           02/08/2014         19.00

101         01/08/2014       20:00                                101           02/08/2017         04:00

y al generar la consulta me devuelve

Codigo      fechaE               horaE           fechaS           HoraS

100         02/08/2014         11:00          01/08/2014       18:00  

100         01/08/2014         10:00          01/08/2014       18:00

100         02/08/2014         11:00          02/08/2014       19:00

100        01/08/2014          10:00          02/08/2014       19:00

101        01/08/2014           20.00         02/08/2014       04:00

¿Cómo podría solucionar esto? Las relaciono por codigo, si las relaciono también por fecha me lo haría bien pero el problema es que hay gente que entra un dia y sale otro, y entonces en la consulta no me lo saca .

Respuesta

Si como entiendo a cada entrada de un código le corresponde una salida, ¿Por qué no tenerlo todo en la misma tabla?, al fin y al cabo, un código con su entrada y salida correspondiente forman un registro único. De esta manera solucionarias el problema, daría igual que entrase un día y saldría otro e incluso tendrías el control de los códigos que han entrado pero aún no tienen salida.

Visita Access fácil

Hola, gracias por contestar. El problema es que si lo hago en una tabla tengo el mismo problema, porque al hacer el registro de la salida me lo pone en otra línea diferente a la de entrada y me lo vuelve a duplicar y mezclar en la consulta. Se que hay formas de poner la salida en la misma línea de registro, buscando el registro de entrada en el formulario de salida por ejemplo, pero mi jefe quiere que el empleado marque el código y no lo tenga que buscar y de esa forma me marca siempre un registro nuevo. Pensé en crear un autonumérico en la tabla entrada y que ese mismo autonumérico me lo pudiera copiar en la tabla salida cuando marcara dicha salida y así podría vincularlos pero no se como hacer esto. Si tu lo supieras te lo agradecería mucho o tuvieras otra solución. Gracias.

Lo importante es el planteamiento, luego se puede hacer como lo necesites. Y en el planteamiento lo más importante es contestar a las siguientes preguntas: ¿A cada entrada le corresponde una única salida? ¿Puede haber una salida sin que previamente haya habido una entrada?

Si,a cada entrada le debe corresponder su salida, es decir la persona que entra con un codigo suyo de empleado debe de salir con su mismo código ese día u otro y si, puede haber una salida sin su correspondiente entrada y viceversa ya que a veces se olvidan de poner la entrada o la salida pero necesitamos que quede constancia de al menos una de las dos

Bien. Entonces te hago el planteamiento para ver si es correcto.

-- Si un empleado pone la entrada y su correspondiente salida, perfecto.

-- Si un empleado pone la entrada, pero no pone la salida, con la siguiente entrada de ese empleado "anotariamos" la salida anterior. (Con un, por ejemplo, "no consta salida")

-- Si un empleado pone la salida, pero no la entrada, no nos constara ninguna entrada sin salida de ese empleado, así que "anotariamos" su entrada como en el ejemplo anterior ("no consta entrada")

Se me ocurre que sólo queda en el aire una posibilidad, pero que desde luego Access no puede controlar, ni con una tabla ni con 10.000.

--- Un empleado pone la entrada, NO pone la salida. Vuelve a entrar y NO pone la entrada. Luego pone la salida.

Esa salida "colgaria" de la primera entrada, no constando la salida y la entrada intermedia. Lógicamente Access no es adivino y si no se pone...

Dime si este planteamiento es correcto.

Si es correcto, entonces lo mejor que se podría hacer es que no dejara marcar una nueva entrada si no tiene la salida correspondiente. ¿Así se podría hacer?

Yo lo que intento decir es que se puede (y además creo que es ´mejor) hacerlo con una sola tabla. Lo demás depende de como y quien de las entradas y las salidas.

Puede meter el codigo y que le de un listado ordenado desde la ultima entrada y así poder dar la salida y al tiempo ver si tiene alguna pendiente, o puede salirle si hay una entrada sin salida y en caso contrario un mensaje que le diga que no consta ninguna entrada, etc. Posibilidades hay muchas todo depende de lo que necesites y como lo quieras configurar.

Me da igual que sea solo en una tabla, lo que necesito es que un empleado marque una entrada en un formulario y luego una salida en otro formulario y que se registre en una o dos tablas, como sea mejor, pero necesito poner los códigos de empleados en un texbox del formulario,no buscarlos en una lista ni un combinado, y que al generar la consulta no me duplique ni me mezcle los registros, espero haber sido mas claro

El que no ha debido ser claro soy yo. Lo primero es que este bien estructurado, luego, como se meten los datos es lo de menos. En tu caso creo que la solución seria la que te he planteado. Un formulario dónde se mete el código directamente y un subformulario que te muestra el registro de ese código, bien pendiente por que no tiene salida pero si entrada, o bien uno nuevo cuando hablamos de entrada. Y si lo haces con un formulario de entrada y uno de salida, más fácil todavía.

El formulario de entrada le dará entrada directamente creando un nuevo registro y el formulario salida puede buscar la entrada más alta sin salida, dándole salida directamente. Si no tiene ninguno sin salida pues a un registro nuevo.

De esta manera los registros completos estarán completos y los que no lo están es porque no pueden estarlo al no haberles dado entrada o salida.

Vale, y como hago para que en el formulario salida al marcar el código de empleado, me lo marque en la misma línea de registro de la tabla donde entro, ¿para después poder hacer la consulta y no me duplique?

Pues de manera facil.  Creas un formulario, llamemosle "Salidas", con un cuadro de texto o combinado, que llamare "micodigo"  y un subformulario.  El subformulario basado en una consulta, con un parametro en "codigo"  :  [forms]![salidas]![micodigo]  y en el campo "salida" la condición "Es nulo".

Luego en el evento que te venga bien, o utilizando un botón de comando, una vez introducido un código, haces un "requery" del subformulario. Si ese código tiene alguna entrada sin salida, te lo mostrara y puedes rellenar la salida. Si no tuviera ninguno le haces ir a un registro nuevo.

Si necesitas un ejemplo visita mi página (te deje un enlace en un mensaje anterior, y lo comentas.

Perdona que no te he contestado antes pero estuve de pequeñas vacaciones. Te entiendo lo que dices pero el problema es que tengo que poner un código de empleado para la entrada y la salida en un formulario, no puedo ponerlo llamando a los códigos que no tienen salida de un subformulario. Esto ya lo he hecho pero mi jefe lo quiere como te explique. Pero bueno, veo que es más difícil de lo que pensaba. De todas formas muchas gracias por tu tiempo y visitare tu blog a ver si encuentro algo que me aclare.

Un saludo.-

De todas formas quiero hacerte una consulta que creo que con esto soluciono todo el problemas y veo que tu sabes bastante de access. Al marcar la entrada se genera un número en un campo autonumérico, hay alguna forma que cuando yo marque la salida me copie ese mismo número en algún campo de la tabla?

Nuevamente gracias

Si, visítalo y a ver si lo aclaramos, porque creo que o tu o yo no nos hemos entendido del todo, ya que yo te estoy exponiendo que ingresen un código, luego será la aplicación la que sepa que es lo que tiene que hacer.

1 respuesta más de otro experto

Respuesta

La solución más práctica es que lo haga en una sola tabla donde se registran las entradas y salidas. Y si lo hace en dos tablas debe haber una relación 1:1 y no 1:N

Yo hice un sistema de registro de asistencia donde el usuario ingresaba su código al entrar y quedaba registro de su ingreso y cuando salía buscaba su ingreso y registraba en el mismo registro su salida. Luego a través de un informe me calculaba las horas entre ingreso y salida e indicaba la cantidad de horas trabajadas semanalmente y mensualmente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas