Imprimir página | Cerrar ventana

Consulta dependiendo de datos secundarios

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84640
Fecha de impresión: 19/Abril/2024 a las 23:05


Tema: Consulta dependiendo de datos secundarios
Publicado por: LuisR
Asunto: Consulta dependiendo de datos secundarios
Fecha de publicación: 09/Agosto/2019 a las 18:02
Buenas tardes, 

No sé si el título es comprensible la cuestión.

Tengo una tabla "cliente" con una hoja secundaria de datos "facturas". Necesito hacer una consulta que extraiga por ejemplo, los clientes a los que no se les ha facturado nada en determinado tiempo.

Agradezco la ayuda, un saludo

Luis



Respuestas:
Publicado por: pitxiku
Fecha de publicación: 09/Agosto/2019 a las 18:41
Con el asistente de consultas puedes crear una consulta de no coincidentes:

- https://support.office.com/es-es/article/comparar-dos-tablas-y-buscar-registros-no-coincidentes-cb20ad48-4eba-402a-b20d-eaf10a5d1cb4


Publicado por: LuisR
Fecha de publicación: 09/Agosto/2019 a las 19:59
Te agradezco la respuesta.

Podemos cerrar el hilo.


-------------




Publicado por: LuisR
Fecha de publicación: 13/Agosto/2019 a las 18:31
Buenas tardes,

Siguiendo las instrucciones he creado la consulta, buscando registros no coincidentes.
El problema es que me devuelve los datos a los que nunca se les ha hecho factura, lo que necesito es que la respuesta sean los datos de los clientes a los que no se les ha hecho factura en los últimos 6 meses, por ejemplo.


Esto es lo que tengo, en slq... 

SELECT Pedidos.Id, Clientes.Cliente, Pedidos.[ID cliente], Pedidos.[ID producto], Pedidos.[Tipo Gestión], Pedidos.Fecha, Facturas.Id_pedido, Pedidos.[Estado pedido]
FROM Clientes INNER JOIN (Pedidos LEFT JOIN Facturas ON Gestiones.[Id] = Facturas.[Id_pedido]) ON Clientes.Id = Pedidos.[ID cliente]
WHERE (((Pedidos.Fecha)<Date()-180) AND ((Facturas.Id_pedido) Is Null) AND ((Pedidos.[Estado pedido])="activa"));

Creo que la clave está en...

((Facturas.Id_pedido) Is Null)



Agradezco la ayuda, un saludo


-------------




Publicado por: pitxiku
Fecha de publicación: 14/Agosto/2019 a las 00:28
Como precisas datos de varias tablas, yo lo haría paso a paso (o con varias consultas):

1. Una consulta que devuelva las facturas de los últimos 180 días y, si es necesario, con estado activo.

2. Con la consulta anterior y la tabla de los clientes, usar el asistente para encontrar los clientes que no tienen facturas.

3. A partir de la consulta anterior, agregar las tablas que sean necesarias para ver todos los datos que necesites.


Publicado por: LuisR
Fecha de publicación: 15/Agosto/2019 a las 16:37
¡No se me había ocurrido!!!

Creo que es buena idea, mañana lo pruebo y te confirmo que es la solución.

Te agradezco la respuesta

-------------




Publicado por: LuisR
Fecha de publicación: 19/Agosto/2019 a las 19:54
Resuelto. Podemos cerrar el post.

He hecho como sugería Pitxiku,

1 una consulta: facturas emitidas en los últimos X días (X, es un campo en determinado formulario)
2 otra consulta: datos no coincidentes, extrae los clientes cuyo Id no está en el listado de la consulta anterior. Dentro de ésta, otro criterio, el de fecha. No queremos que los clientes recién insertados (a los que todavía no se les ha emitido factura) dejen de estar en el listado de clientes activos, por caducidad.

Asombrado por el acertado criterio de Pitxiku y orgulloso por el resultado en la base de datos.

Gracias, un saludo a todos.


-------------





Imprimir página | Cerrar ventana