La Web del Programador: Comunidad de Programadores
 
    Pregunta:  66539 - ELEGIR PARÁMETRO CADA VEZ QUE EJECUTE UNA CONSULTA
Autor:  Mónica M
Hola,
Mi problema es que tengo una base de datos, con varias tablas, consultas y formularios. Quiero en el panel de control añadir un informe que, por ejemplo, si tengo una tabla con cliente, direccion, pedido, proveedor y provincia, pueda elegir que me saque los clientes de Barcelona que han consumido de x proveedor. Pero no una específica, si no que cada vez que vaya a abrir el informe me pida los datos que yo meteré para hacer la consulta.
Lo mismo no se puede, y si es así, lo siento. Pero necesito poder ir seleccionando los campos de múltiples formas, y no puedo hacer una consulta por cada informe específico porque serían muchísimas.
Gracias,

  Respuesta:  Nicolás Pailhé
Hola Mónica, para tu caso lo ideal sería crear un formulario (no debe estar vinculado a ninguna tabla)
En este formulario tendrías que crear todos los campos en los cuales te resulte necesario ingresar un parámetro, por ejemplo:

- Creamos el formulario "Informe de consumo por Ciudad"
- Creamos los campos "Ciudad" y "Proveedor"
* Siempre es conveniente que estos campos sean combos, en donde el usuario sólo esté limitado a seleccionar un valor y no dejarlo tipear texto, para limitar al máximo los errores de tipeo (por ejemplo: el usuario podría tipear "Barclona" y obviamente no encontrará ninguna coincidencia.) para solucionar esto simplemente tomamos los valores existentes en la tabla.
* Otro dato importante, no confundir el nombre de la etiqueta con el nombre real de estos campos, para asegurarnos que cada campo tendrá el nombre "Ciudad" y "Proveedor" entramos a las propiedades de los campos y en la solapa "Otras" el primer valor es el nombre "real" del campo.
- Creamos un botón "Ejecutar consulta" el cual abrirá el Informe

Una vez que tenemos creado el formulario y los campos a donde ingresaremos nuestros parámetros, creamos la consulta "Generar Informe", agregas la/s tabla/s sobre las cuales se va a consultar, y vas "agregando" los campos a los cuales vamos a pasarle los parámetros del formulario, para obtener los datos seleccionados en el formulario ponemos en la fila "Criterios" lo siguiente:
=forms![Informe de consumo por Ciudad].form![Ciudad] (obviamente para el campo Ciudad)
Y haces lo mismo con el resto de los campos colocando el nombre que le corresponda a cada uno.

Para ir finalizando la idea quedaría así: en el panel de control creas un botón que abra el formulario "Informe de consumo por Ciudad", luego de ingresar los parámetros de búsqueda haces click en el botón "Ejecutar consulta", este botón debe abrir el Informe (que debe obtener los datos de la consulta "Generar informe")
* Para que la consulta pueda obtener los datos del formulario, éste no debe cerrarse, ya que no podrá obtener los datos, para asegurarnos que esto no suceda lo que hacemos es "ocultar" el formulario al abrir el Informe.
En las propiedades del Informe, en la solapa "Eventos" colocamos el siguiente procedimiento de evento "al abrir":

Forms![Informe de consumo por Ciudad].visible = false

Con esto nos aseguramos que la consulta pueda obtener los parámetros.

Finalmente es necesario cerrar el formulario que actualmente permanece oculto, para que al volver a abrirlo para ejecutar un nuevo informe no estén los parámetros seleccionados anteriormente, simplemente debemos agregar un procedimiento de evento "al cerrar" el informe:

DoCmd.Close acForm, "Informe de consumo por Ciudad"

Espero haber sido claro en la explicación, cualquier duda que tengas no dudes en escribirme, saludos
Nico