Es frecuente hacer una consulta SQL de referencias cruzadas en Microsoft Access basada en una primera consulta que prepara los datos y los filtra en función de unos parámetros.
Índice de contenidos
Consulta de referencias cruzadas con parámetros en un formulario
La 1ª consulta con parámetros funciona bien pero la 2ª da un error al ejecutarse del tipo: «El motor de base de datos Microsoft Jet no reconoce … como un nombre de campo o expresión válidos».
Hay que hacer lo siguiente:
- Suponemos que la 1ª consulta se basa en dos campos de fecha que están en un formulario y los campos se llaman: [Desde Fecha] y [Hasta Fecha]
- La primera consulta, la de selección, usa este dos campos para filtrar los datos.
- En la segunda consulta una vez construida y estando en el modo de diseño se debe ir a la barra de menús superior e ir a la opción Consulta->Parámetros y aparece una tabla de doble entrada donde pone Parámetro y Tipo de datos.
- Insertaremos tantas filas como parámetros tengamos, en nuestro caso serán dos:
- [Formularios]![NombreFormulario][Desde Fecha], tipo de datos Fecha/Hora
- [Formularios]![NombreFormulario][Hasta Fecha], tipo de datos Fecha/Hora
- Ahora podremos ejecutar la consulta sin que de errores.
Si los parámetros no están en un formulario si no directamente en la primera consulta el procedimiento en la 2ª consulta es el mismo. Para un criterio directo como True, False, mayor o menor, etc. no hace falta crear parámetros en la segunda consulta.
Consulta con parámetros en la primera consulta
Si lo que tenemos es un parámetro directo en la primera consulta el procedimiento es el mismo que en el punto anterior. La diferencia está que cuando vamos a Consulta>Parámetros en la primera columna pondremos el nombre del parámetro.
En la imagen inferior se puede ver como son las consultas y los parámetros. Como aclaración diré que la primera consulta del ejemplo es una consulta de agrupación en vez de un consulta normal. Esto no es relevante para el método pero mejor aclararlo. Con consultas normales se debe hacer lo mismo.
¿Qué es una tabla de referencias cruzadas en Access?
Una consulta de referencias cruzadas en Microsoft Access es una herramienta poderosa que transforma los datos de filas a columnas, permitiendo a los usuarios ver la información desde una perspectiva diferente. Es similar a una tabla dinámica en Excel y es particularmente útil para resumir, analizar o reportar datos agrupados.
Este tipo de consulta organiza los datos de manera que los valores únicos de una columna específica se convierten en los encabezados de columna de la tabla de resultados, mientras que otra columna determina las filas. Por ejemplo, puedes utilizar una consulta de referencias cruzadas para mostrar un resumen de ventas mensuales, donde las filas representan los productos y las columnas representan los meses.
Las consultas de referencias cruzadas pueden ser de gran utilidad cuando necesitas realizar un análisis comparativo o entender las tendencias en los datos. Por ejemplo, si tienes una base de datos con ventas de productos, puedes usar una consulta de referencias cruzadas para ver rápidamente cuánto se vendió cada producto en cada mes, o comparar las ventas totales de diferentes productos en un período de tiempo.
Para crear una consulta de referencias cruzadas en Access, puedes usar el Asistente para consultas de referencias cruzadas o escribir la consulta manualmente en SQL. En la vista SQL, la sintaxis básica para una consulta de referencias cruzadas incluiría cláusulas como TRANSFORM y PIVOT, donde TRANSFORM define la función de agregación aplicada a los datos (por ejemplo, SUM, AVG) y PIVOT establece las columnas que se crean dinámicamente a partir de los valores de datos.
Las consultas de referencias cruzadas facilitan la visualización de grandes cantidades de datos y ayudan en la toma de decisiones basadas en datos, proporcionando una vista clara de las relaciones y tendencias dentro de los datos de tu base de datos.
Las consultas de referencias cruzadas son una de las herramientas más potentes que nos ofrece Microsoft Access, si usas esta herramienta te aconsejo conocer bien esta técnica, te será muy útil.
Si estás interesado en conocer más temas relacionados con Microsoft Access te sugiero consultar los artículos sobre Microsoft Access o algunos trucos para VBA.
OK, PERFECTO!
Funciona. Ya había perdido 1 semana intentando hacer este filtro por fecha de multitud de formas.
Gracias por la respuesta 🙂
Me alegro de que te haya sido útil este tip de Access
Hola. He probado el procedimiento que expones y funciona. La consulta la hace correctamente sin errores, y si abro un formulario para ver la consulta en formato tabla la abre, pero si inserto ese formulario con la consulta de referencias cruzadas como subformulario en otro formulario, el subformulario de la consulta sale en blanco. ¿Sabes porqué?.
Gracias
Eso de poner la consulta de referencias cruzadas en un subformulario no lo he probado. Es un tema complejo porque una tabla de referencias cruzadas tiene columnas variables y eso hace difícil tanto ponerlo en formularios como en informes. Si quieres pásame un mdb de ejemplo con la consulta y el formulario/subformulario y le doy un vistazo
BUENAS NOCHES AL HACER UN INFORME ME PIDE VARIAS VECES QUE PONGA EL VALOR DEL PARAMETRO, POR QUE LO HACE?
Eso es porque no encuentra la segunda consulta no encuentra buen definido el parámetro. Sigue los pasos y en teoría no te debe fallar.
Excelente Mil y Mil Gracias!!!!!!!
Hola: Me pasa como a AquilezBaezaarturo. La segunda consulta funciona perfectamente (lo único extraño es que cuando hago «Guardar», me pide el parámetro…) pero he creado un informe a partir de la segunda consulta y me pide dos veces el parámetro.
¿Sabes a qué puede ser debido?
Josss
Hola como estas, tengo dos tablas, en la una tengo: numero de pedido, con su proveedor, y en la otra tengo el numero de pedido y los clientes a los que envié el producto (Hay veces se van en varios clientes).
Hice un informe cruzado, pero me salen tantas hojas como clientes, es decir si se fue un X pedido a 3 clientes me salen tres hojas, como hago para que en el informe me salga: NUMERO DE PEDIDOS, PROVEEDOR y CLIENTES (SE DETALLE EN LA MISMA HOJA). Muchas Gracias por tu ayuda, espero haberme explicado de la mejor manera.
¿podrías enviar un mdb de ejemplo en formato Access 2003 y le hecho un vistazo?
Seguro que es por la forma de poner el parámetro. Si se hace exactamente como se explica debería funcionar sin pedirlo.
Excelente muchas gracias, me fue muy útil su información
Hola, llegó un poco tarde pero espero me ayude. Hice el procedimiento pero me sale un mensaje de error q dice que uso corchetes no válidos en el nombre del parámetro, sin embargo lo puse exactamente igual al ejemplo.
Buenos dias, me funciona perfectamente. Gracias!!
llevaba ya dias intentando poner los parametros de todas las maneras posibles
Perfecto!
Gracias por la información, le doy un vistazo a vuestra página.
Pon aquí los parámetros con copia/pega y le hecho un vistazo.
Hola. He probado la solución que comenta pero me sale el error de «corchetes no validos en el nombre». Que podría ocurrir?
Lo más frecuente que me ha pasado es que haya un corchete de más al abrir o cerrar.