Access - Busqueda de registros a traves de varios campos

 
Vista:

Busqueda de registros a traves de varios campos

Publicado por david (22 intervenciones) el 23/02/2004 08:55:04
Hola a todos, a ver si me explico,
tengo un formulario, PEDIDOS (q viene de la tabla PEDIDOS y q tiene
estos campos: ID_Pedidos, Fecha, ID_Cliente) al q le he incrustado dos
SUBFORMULARIOS, uno q viene de la tabla DETALLES_PEDIDOS_PRODUCTOS (formulario continuo q viene de la tabla con el mismo nombre y q tiene de campos: ID_Detalles_Pedidos_Productos, ID_Pedidos (relacionado con la
tabla PEDIDOS) y ID_Productos), y otro q se llama
DETALLES_PEDIDOS_SUCURSALES (formulario continuo q viene de la tabla con el mismo nombre y q tiene de campos: ID_Detalles_Pedidos_Sucursales,
ID_Pedidos (relacionado con la tabla PEDIDOS) y ID_Sucursales).

Resumiendo:

FORMULARIO:

PEDIDOS (ID_Pedidos, Fecha, ID_Cliente)

SUBFORMULARIOS INCLUIDOS EN FORMULARIO PEDIDOS:

DETALLES_PEDIDOS_PRODUCTOS (ID_Detalles_Pedidos_Productos, ID_Pedidos y ID_Productos)

DETALLES_PEDIDOS_SUCURSALES (ID_Detalles_Pedidos_Sucursales, ID_Pedidos y ID_Sucursales)

Y lo q querria hacer, si es posible, es crearme un formulario de
BUSQUEDA en el q aparezca por ejemplo un CUADRO DE LISTA con todos los ID_Productos y q yo pueda seleccionar varios productos de dicha lista y, a través de una consulta, filtrar el formulario PEDIDOS y q me aparezcan aquellos registros donde aparezca todos los productos q he seleccionado en el cuadro de lista anterior. El filtro, por tanto, es por los datos de un SUBFORMULARIO q hay incrustado en un formulario. Y si no es mucho pedir, tener tb otro cuadro de lista en el formulario de BUSQUEDA con todos los ID_Sucursales en donde tb pueda seleccionar las sucursales q quiera y q la consulta me permita filtrar por ambos criterios a la vez (ID_Productos y ID
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Busqueda de registros a traves de varios campos

Publicado por Alejandro (4142 intervenciones) el 04/05/2023 20:21:25
Para realizar la búsqueda de registros a través de varios campos en Access, puedes utilizar una consulta que una las tres tablas: PEDIDOS, DETALLES_PEDIDOS_PRODUCTOS y DETALLES_PEDIDOS_SUCURSALES.

En primer lugar, crea un formulario de búsqueda que contenga dos cuadros de lista, uno para los productos y otro para las sucursales. En la propiedad RowSource de cada cuadro de lista, especifica una consulta que seleccione los ID_Productos o ID_Sucursales respectivamente. Por ejemplo:

Para el cuadro de lista de productos:
1
SELECT DISTINCT ID_Productos FROM DETALLES_PEDIDOS_PRODUCTOS;

Para el cuadro de lista de sucursales:
1
SELECT DISTINCT ID_Sucursales FROM DETALLES_PEDIDOS_SUCURSALES;

A continuación, crea una consulta que una las tres tablas. En la vista SQL, utiliza una cláusula WHERE para filtrar los registros según los productos y sucursales seleccionados en los cuadros de lista. Por ejemplo:

1
2
3
4
SELECT PEDIDOS.ID_Pedidos, PEDIDOS.Fecha, PEDIDOS.ID_Cliente
FROM (PEDIDOS INNER JOIN DETALLES_PEDIDOS_PRODUCTOS ON PEDIDOS.ID_Pedidos = DETALLES_PEDIDOS_PRODUCTOS.ID_Pedidos)
INNER JOIN DETALLES_PEDIDOS_SUCURSALES ON PEDIDOS.ID_Pedidos = DETALLES_PEDIDOS_SUCURSALES.ID_Pedidos
WHERE DETALLES_PEDIDOS_PRODUCTOS.ID_Productos IN (1, 2, 3) AND DETALLES_PEDIDOS_SUCURSALES.ID_Sucursales IN (4, 5, 6)

En esta consulta, los valores 1, 2, 3 corresponden a los ID_Productos seleccionados en el cuadro de lista de productos, y los valores 4, 5, 6 corresponden a los ID_Sucursales seleccionados en el cuadro de lista de sucursales.

Por último, en el evento AfterUpdate de los cuadros de lista del formulario de búsqueda, establece la propiedad RecordSource del formulario PEDIDOS con la consulta que acabas de crear:

1
Me.Parent.RecordSource = "SELECT PEDIDOS.ID_Pedidos, PEDIDOS.Fecha, PEDIDOS.ID_Cliente FROM (PEDIDOS INNER JOIN DETALLES_PEDIDOS_PRODUCTOS ON PEDIDOS.ID_Pedidos = DETALLES_PEDIDOS_PRODUCTOS.ID_Pedidos) INNER JOIN DETALLES_PEDIDOS_SUCURSALES ON PEDIDOS.ID_Pedidos = DETALLES_PEDIDOS_SUCURSALES.ID_Pedidos WHERE DETALLES_PEDIDOS_PRODUCTOS.ID_Productos IN (" & Me.lstProductos & ") AND DETALLES_PEDIDOS_SUCURSALES.ID_Sucursales IN (" & Me.lstSucursales & ")"

En esta línea de código, lstProductos y lstSucursales son los nombres de los cuadros de lista del formulario de búsqueda. La propiedad RecordSource del formulario PEDIDOS se establece con la consulta que une las tres tablas y filtra los registros según los productos y sucursales seleccionados en los cuadros de lista del formulario de búsqueda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar