Hacer una consulta access cuyo criterio tiene que comprobarlo en una tabla

Tengo la siguiente pregunta que explico a continuación:

1- Tengo una TABLA de "clientes" que contiene los siguientes campos "código", "nombre" y "factura"

Código nombre factura
----------- ----------- -----------
CL0001 Nombre 1 factura 00A
CL0001 Nombre 1 factura 00B
CL0002 Nombre 2 factura 00C
CL0003 Nombre 3 factura 00D

...
...

2- Tengo una segunda TABLA llamada "clientes a ocultar" que contiene el siguiente campo "código"

Código
-----------
CL0002

CL0025

Lo que quiero es crear una CONSULTA simple sobre la tabla "clientes" donde el campo "código" de dicha tabla tiene que ser <> de cualquier "código" de la tabla "clientes a ocultar"

En definitiva, quiero tener como resultado: la tabla "clientes" sin los clientes que puedan aparecer en la tabla "clientes a ocultar"

No se como tengo que crear el criterio de dicha consulta.

3 respuestas

Respuesta
1

Lo más sencillo es que uses el asistente de consultas. Hay una que es Asistente búsqueda de no coincidentes. Eliges esa, seleccionas las dos tablas, marcas el campo codigo (el que vas a comparar%

Lo más sencillo es que uses el asistente de consultas. Hay una que es Asistente búsqueda de no coincidentes. Eliges esa, seleccionas las dos tablas, marcas el campo codigo (el que vas a comparar), y siguiente hasta el final. Es muy sencillo.
Si lo quieres hacer "a las bravas", la SQL sería así:
SELECT Clientes.Codigo, Clientes.Nombre, Clientes.Factura
FROM Clientes LEFT JOIN [Clientes a ocultar] ON Clientes.[Codigo] = [Clientes a ocultar].[Codigo]
WHERE ((([Clientes a ocultar].Codigo) Is Null));
O usando la vista diseño de consulta, seleccionas los 3 campos de clientes, el de clientes a ocultar, a este último le desmarcas la casilla para que no se muestre en la cosnulta, y le pones como criterio Es Nulo. Y para acabar, arrastras el campo código de clientes sobre el de clientes a ocultar, con lo que te aparece una linea de relacion entre ambas tablas. Si haces click con el boton derecho encima de ella, y eliges propiedades de la combinacion, te sale un nuevo menu. Ahí eliges "Incluir TODOS los registros de Clientes y solo aquellos de Clientes a ocultar donde los campos combiandos sean iguales". Aceptas guradas y ya tienes tu consulta.

Respuesta
1

Prueba con esto

select * from clientes, tabla_ocultar where código is null

Yo lo hubiese hecho en la misma tabla cliente, creo un campo status en la tabla clientes, con dos valores si es 0 no esta oculto si es 1 esta oculto y la consulta seria

select * from clientes where status=0;

Y listo sin necesidad de crear otra tabla

he probado una solución que es igual a la tuya utilizando el asistente de consultas y eligiendo la opción de "Asistente búsqueda de no coincidentes".

el resultado que me dio el asistente es lo que buscaba y es muy parecido a lo que me has propuesto.

muchas gracias

Respuesta
1

Perdona la tardanza pero he tenido una serie de preguntas bastante difíciles de contestar y me han absorbido todo el tiempo libre.

Te voy a pedir en qué forma lo quieres.

Uno sería usando las funciones de Excel, tendrías que crear unos autofiltros que puedo decirte como se hacen. La ventaja sería que la la renovación sería automática al cambiar datos y estarían todos los datos aunque solo se mostrarían los que no están en la tabla de clientes a ocultar.

La otra forma sería con una macro. Habría que invocarla pulsando un botón por ejemplo. Y en este caso no sé qué se debería hacer con los clientes que se deben ocultar, lo lógico sería que desaparecieran. Aunque lo que podría hacerse es dejarlos en la hoja clientes y crear la tabla de los válidos solamente en otra hoja.

Espero me digas que te parece y que opción tomamos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas