Access - Introducir filtros en una consulta desde los campos de un formulario

He creado una serie de consultas que van en "cascada". Voy añadiendo filtros una tras otra poniéndo en el campo que quiero filtrar, por ejemplo: [Cantidad], en la siguiente [Cantidad mínima por palet] y así en las 5.

Cuando ejecuto la última consulta, me pide los 5 valores de los filtros que le he puesto y los voy tecleando en las ventanitas emergentes que van saliendo.

La cascada de consultas funciona, pero me gustaría crear un formulario donde introducir esos valores, darle a un botón en el mismo formulario y que se ejecute la consulta.

Soy muy novata en esto y muy posiblemente me haya expresado mal. Con este lenguaje he buscado en internet algún tutorial pero no lo encuentro. ¿Podéis decirme de alguno si me habéis entendido?

1 Respuesta

Respuesta
2

Si como criterio en tu consulta tienes [Cantidad mínima por palet], te pedirá que lo escribas.

Si en vez de eso pones como criterio: Formularios! NombreFormulario! NombreCuadroTexto, te cogerá los que haya en el formulario llamado "NombreFormulario" en el cuadro de texto llamado "NombreCuadroTexto", siempre y cuando el formulario esté abierto, si no lo está, te saldrá la ventana para que escribas el valor.

Entonces, para tus consutlas en cascada, debes cambiar los criterios existentes por las referencias a los distintos cuadros de texto (u otros controles) de tu formulario, siguiendo el esquema indicado anteriormente.

Disculpa mi ignorancia, pero que quiere decir que el "formulario este abierto"?

Pues precisamente eso, que tenga el formulario abierto cuando ejecutas la consulta.

Tu dices: "me gustaría crear un formulario donde introducir esos valores, darle a un botón en el mismo formulario y que se ejecute la consulta"

Si ejecutas la consulta directamente, sin tener ese formulario abierto (o cargado), te saldrá una ventana pidiéndote los valores que quieres usar como filtros (como ahora, pero con otro texto en las ventanas). Si abres el formulario y en él pones los valores que quieres usar como filtro en las distintas consultas, no te pedirá nada y mostrará la consulta filtrada por esos valores.

Por cierto, que se me pasó, en el botón de eso formulario o le asocias una macro que te abra la consulta, o le generas un código cómo este para abrirla:

DoCmd. OpenQuery "NombreConsulta"

Donde solo has de cambiar NombreConsulta por el nombre que tenga tu consulta.

Muchas gracias! Intentaré el botón con la macro, he hecho alguna y eso creo que sé hacerlo. Meter código por el momento no me atrevo.

Por cierto, ya dándole una vuelta, ¿es posible que salgan los resultados en ese mismo formulario?

Apenas he hecho nada con formularios, hasta le fecha me quedo contenta con obtener los resultados sin tener que filtrar el mismo excel 30 veces todos los días.

Poder se puede, pero necesitas algo de código. La cosa iría así:

1/ Creas un formulario sobre la consulta final

2/ le añades en el encabezado ( o pie) los cuadros de texto y el botón

3/ en el botón le generas el siguiente código: Me. Requery

¡Muchísimas Gracias! 

Hoy me siento muy crecida, voy a intentarlo !! Menudo fin de semana me espera, jajajaja.

Anímate y cualquier cosa, me comentas

Hola,

llevo dos días dándole vueltas a esto. Primero me decía que los corchetes no valían y los cambié por paréntesis, después me daba error en el símbolo "!", pero bueno, metiendo las comillas y separando parecía que podía valer, pero ahora me sale el error "No coinciden los datos con la expresión de los criterios.

He puesto esto:

<("Formularios! F - 1! CANTIDAD MAX POR PEDIDO")

El formulario se llama F - 1 y el texto del recuadro lo que pone. He pensado que era porque no estaba definico el cuadro de texto del formulario como número, pero lo he cambiado y sale el mismo error... ¿qué hago mal?

Gracias de antemano.

Ponlo así :

<Formularios![F - 1]![CANTIDAD MAX POR PEDIDO]

A ver si te funciona. Si no prueba con:

<Forms![F - 1]![CANTIDAD MAX POR PEDIDO]

Como comentario, no deberías usar espacios en los nombres de los objetos (tablas, campos, formularios, cuadros de texto...), porque complican la escritura de códigos y expresiones

Al final he puesto: <[Formularios]![F - 1]![CANTIDAD MAX POR PEDIDO] y parece que ejecuta la consulta pero sale vacía, como si no cogiese los datos que meto en el cuadro de texto...

Cuando le doy a propiedades de uno de los cuadros de texto he de configurar algo???

Gracias por aguantar mi turra.

Te he preparado un mini-ejemplo para que veas que funciona, utilizando los mismos nombres que indicas (el formulario "F - 1" y el cuadro de texto (Propiedades->Otras->Nombre) "CANTIDAD MAX POR PEDIDO")

http://www.filebig.net/files/ivAaucv6sy 

Buah que bien! Muchas gracias. Con el ejemplo ya he conseguido que funcione.

He estado "enredando" en lo de que salgan los resultados en el propio formulario, pero me comentas que lo tengo que hacer en el pie o encabezado. No veo esa opción en los formularios pero sí en los informes.

Me he ido a un informe con el asistente y he creado un botón en el encabezado pero no consigo que salgan los resultados.

He puesto "Me .Requery" después del DoCmd.OpenReport "nombre del informe" y me pide que meta a mano el dato que debería coger del cuadro de texto que le he añadido... 

Si abro primero el formulario y lo dejo abierto, puedo meter el valor en el campo de texto y le doy al botón, pero me sale para imprimir en PDF un montón de hojas... en fin, mira que lo intento, pero lo mismo esto me viene grande para lo poco que sé.

Para poner encabezado o pie al formulario, tienes que hacer clic en el cuadradito que señalo en la imagen y luego marcar la opción adecuada (para los de página o formulario):

En cuanto a visualizar los registros en el propio formulario, te envío un nuevo ejemplo: http://www.filebig.net/files/cQqJU9YVvx

El formulario "F - 2" está hecho sobre la Consulta3 (que es idéntica a las otras dos), pero le añadí un pequeño detalle al criterio:

<Nz([Formularios]![F - 2]![CANTIDAD MAX POR PEDIDO];10000)

Le he puesto la función Nz() para que si no hay nada escrito en el formulario te muestre "todos" los registros (en realidad solo mostraría los de menos de 10000 unidades pedidas, pero en el ejemplo son todos, jejeje). Esto lo hago porque así al abrir el formulario la primera vez, muestra los registros. Si el criterio lo hubiera dejado como (te animo a que lo cambies y lo veas):

<[Formularios]![F - 2]![CANTIDAD MAX POR PEDIDO]

Al abrir el formulario te saldría vacío (sin registros) hasta que pongas un número en el cuadro de texto y pulses el botón.

Por comentarte más cosas, podrías omitir el botón, y poner el código (el Me. Requery) en el evento "después de actualizar" del cuadro de texto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas