¿Cómo obtengo resultados por omisión?

Mi sistema de control de accesos de trabajadores, crea con cada fichaje un registro en una base de datos en el que figura el nº de trabajador día, mes año y hora.
Quiero saber cuando NO ha fichado un trabajador y pese a haber hecho todo lo posible, solo obtengo resultados de los que SI han fichado.
¿Cómo puedo hacer una consulta o nueva tabla o informe o lo que sea, que me reporte qué trabajador o trabajadores NO han fichado un determinado día o una serie de días en un mes?
En la base de datos que crea no hay campos vacíos ni registros vacíos y estoy ya auténticamente loco, porque tengo que mover más de 100 trabajadores.

1 respuesta

Respuesta
1
Bien,
Dime el nombre de la tabla que usas para controlar los fichajes y el nombre de los campos (y su uso)
Gracias por la respuesta tan rápida.
Veamos:
Tabla con todos los datos:"MOVIMIENTOS"
Campos:
Hora: marca la hora de fichaje
Minuto: marca el minuto de fichaje
Mes: marca el mes de fichaje
Año: año en curso
NumeroTarjeta: número de tarjeta individual y única para cada trabajador
Todos ellos con valor Texto.
Espero que te sirva esta aclaración.
Un saludo
Bien, ¿entiendo pues que numero tarjeta esta vinculado con una tabla de trabajadores no?
Buenas,
Así es.
Gracias
Me falta saber el nombre de la tabla vinculada con todos los trabajadores y sus campos.
Buenos días,
La tabla con los nombres se llama "Tarjetas" y sus campos son:
NumeroTarjeta
Apellido1
Apellido2
Nombre
DNI
Departameto
Todos ellos con valor Texto.
Gracias nuevamente.
Bien,
Tu no me lo has puesto pero he supuesto que en la tabla movimientos hay un campo llamado día.
Para lo que quieres hay que hacer 2 consultas.
La Consulta1, es la que nos filtrará el día mes y año que deseamos mirar:
SELECT Movimientos.NumeroTarjeta, Movimientos.Hora, Movimientos.Minuto, Movimientos.Dia, Movimientos.Mes, Movimientos.Año
FROM Movimientos
WHERE (((Movimientos.Dia)=[Pon dia]) AND ((Movimientos.Mes)=[Pon mes]) AND ((Movimientos.Año)=[Pon año]));
Y luego una consulta de no coincidentes con esta consulta nos dirá que trabajadores no ficharon (no hace falta abrir la Consulta1, solo tenerla):
SELECT Tarjetas.NumeroTarjeta, Tarjetas.Apellido1, Tarjetas.Apellido2, Tarjetas.Nombre, Tarjetas.DNI, Tarjetas.Departamento
FROM Tarjetas LEFT JOIN Consulta1 ON Tarjetas.NumeroTarjeta = Consulta1.NumeroTarjeta
WHERE (((Consulta1.NumeroTarjeta) Is Null));
Buenos días,
Gracias por todo el interés demostrado y por el trabajo empleado en solucionar mi problema.
Ahora viene la parte en la que me sonrojo y paso un apuro enorme, puesto que he hecho las dos consultas siguiendo tus indicaciones, pero (cosa de lego total) en la segunda consulta no se donde insertar el texto que me has sugerido; es decir, no se como trasladar a la consulta la condición que me has diseñado tan amablemente. Créeme que hasta he dudado en preguntar por el bochorno que me da hacerlo, pero ya donde estamos, de perdidos al rio...
Gracias.
Tranquilo es normal.
Abre una consulta nueva en vista diseño, y le das al triangulo que hay al lado de cambiar la vista.
Elige SQL, y pega ese código. Luego cuando vuelvas a Vista Diseño ya lo veras todo en su sitio

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas