Cómo hacer consultas usando formularios

Tengo una base de datos y he creado consultas basada en esa base de datos.
Hago consultas por medio de rangos de fecha Entre #fecha nicial# y #fecha final#, la consulta funciona bien, pero lo que quiero hacer es usar un formulario que me permita introducir fecha inicial, fecha final y seleccionar mi tabla de consulta con un control combo.
Me supongo que en algún lugar deben almacenarse los datos de los controles texto y combo para poder usarlos de parámetros en la consulta, ¿pero dónde se guardan? Ya intente indicándole a la consulta que tome los datos refereciando el nombre del formulario, el nombre del control que tiene los datos, pero no me hace nada, ¿alguien me podría ayudar con esto por favor?
También he consultado el manual de access 2007 en la página de microsoft, pero nada de eso funciona.

1 respuesta

Respuesta
1
Lo primero es definir como independientes los controles del formulario. PAra eso, borra la propiedad "Origen de datos", de los controles, y dales un nombre, en la propiedad "Nombre", que sea fácil de recordar. Por lo que me dices, podríamos denominarlos: FechaInicialElegida, FechaFinalElegida, TablaElegida. El formulario lo podemos denominar FormularioEleccion.
Así, lo único que necesitarías es que en el filtro de la consulta escribieras:
Entre [Formularios]![FormularioEleccion]![FechaInicialElegida] Y [Formularios]![FormularioEleccion]![FechaFinalElegida]
En cuanto a la forma de elegir la tabla, hay opción para hacerlo utilizando Visual Basic. Si es necesario, te envío el código y te explico como hacerlo. Pero si las tablas entre las que vas a elegir son pocas (dos o tres), creo que te compensa copiar y pegar tres veces la consulta, dirigiéndola a cada una de las tablas. Después, cuando le das al botón del formulario, en función del valor que tenga el COMBO, ejecutas una u otra consulta. Si no sabes como hacer esto último, dímelo y te explico.
Hola experto, me gustaría, de ser posible me explicaras las dos formas de elegir tablas, no entiendo mucho viual basic me acomodo más con los formularios.
Pero sería interesante intentarlo de las dos formas y ver cual me acomoda mejor, con respecto a tu respuesta la aplicare hoy mismo y en cuanto tenga algún comentario te lo hago saber.
Muchas gracias por tu ayuda.
Hola amigo experto, apliqué lo que me indicaste, pero el formulario de consulta no hace nada supongo por que no se le ha indicado al formulario que tabla seleccionar.
Realice lo siguiente:
Mi formulario se llama: Formulario_eleccion
Mi primer control independiente: txt_fecha inicio
Mi segundo control independiente: txt_fecha final
Mi combo: elección: eleccion_tabla
Tengo un boto que se llama aceptar
A todas mis tablas de consulta les he aplicado lo siguiente: Entre [Formularios]! [Formulario_eleccion]![txt_fecha inicio] Y [Formularios]! [Formulario_eleccion]![txt_fecha final] Me supongo que el problema radica en que no he elegido la tabla a consultar, tengo las siguientes tablas a elegir:
Emitidas
Pagadas
Todas
Reservadas
Canceladas
Vamos a por lo fácil (y que funcione) y después lo hacemos más bonito con VB.
Primero tendrías que tener una consulta para cada una de esas tablas. Por ejemplo: Consulta_Emitidas, Consulta_Pagadas, etc... En cada una de esas consultas, tienes que indicar en las condiciones del campo por el que quieras filtrar, el filtro que marcas en negrita (está bien escrito).
Abre el formulario, introduce dos fecha validas (acuérdate de darle al enter al meter la segunda fecha para que coja el dato). Una vez que las dos fechas están metidas en el formulario, SIN CERRARLO, vete a la ventana de objetos de la base de datos y ejecuta cualquiera de las consultas. Si todo va bien, debería funcionar el filtrado.
En cuanto a como hacer la elección entre una y otra, una vez que funcionen, lo más sencillo es hacer una macro. En esa macro, despliegas la columna de la izquierda (que por defecto está oculta) Condiciones. Y vas poniendo en cada una de las casillas la condición:
[Formularios]![Formulario_eleccion]![eleccion_Tabla] = "Emitidas"
[Formularios]![Formulario_eleccion]![eleccion_Tabla] = "Pagadas"
ETc...
A la derecha de cada una de estas condiciones tienes que escribir la acción ABRIR CONSULTA y en los argumentos el nombre de la consulta que corresponda a la tabla elegida. Por ejemplo, Consulta_pagadas, etc...
Con esto debería funcionar. Vamos a intentar esto y luego lo vemos con VB.
El filtro no esta funcionando, estoy haciendo todo lo que me indicas para comprobar si el filtrado funciona pero no.
Introduzco los datos de búsqueda entre las dos fechas, doy enter en la fecha final, al momento de ejecutar la consulta me aparece un mensaje en una ventana que trae como titulo " introduzca valor de parámetro" con una etiqueta "Formularios!Formulario_eleccion!txt_fecha inicio" esto me indica que no esta guardado la información para realizar el filtro, ¿qué crees que esté pasando?
Si te pide el valor de esos parámetros es que no los reconoce como objetos. Comprueba por si acaso, el nombre del formulario y el nombre de los controles (pestaña OTROS en las propiedades). Para asegurar que el formato de fecha lo estás metiendo bien, dale a los controles el formato Fecha Corta. De esa manera te aparecerá automáticamente la posibilidad de introducir la fecha picando el calendario.
Si los nombres están bien puestos en su sitio (no en Origen, recuerda, en Nombre de la pestaña OTROS), no entiendo porqué no lo reconoce, así que me la puedes mandar a mi correo y le echo un ojo que seguro que es un detalle pequeño). [email protected]. Avísame cuando lo hayas enviado (envíala comprimida en RAR.
Hola Experto ya he enviado el archivo a tu corre.
Gracias
El error está en que:
-El control con la fecha inicial se llamaba txt_fecha incial (fíjate en el error entre n y c)
-El formulario donde están las fechas no se llama Formulario_Eleccion como habíamos quedado, sino [Consulta de facturas]. El filtro tendría que haber sido:
Entre [Formularios]![Consulta de facturas]![txt_fecha inicio] Y [Formularios]![Consulta de facturas]! [txt_fecha final]
Te devolví la base de datos al correo corregida:
- Copié los controles de las fechas al formulario principal: Consulta de facturas.
- Corregí los filtros en todas las consultas.
Míralo, para comprobar lo que habíamos hablado. Para siguientes ocasiones, a la hora de meter los filtros o cualquier otra expresión, te recomiendo usar el generador de expresiones. Así se evitan fallos.
Perdona. Un fallo en el texto. Tal y como tu la tenías, el formulario donde inicialmente estaban los controles era Formulario rangos, por lo que el filtro debería haber sido:
Entre [Formularios]![Formulario rangos]![txt_fecha inicio] Y [Formularios]![Formulario rangos]! [txt_fecha final].
Ahora al cambiártelo al otro formulario, es cuando vale el nuevo filtro.
Listo amigo ya funciono te lo agradezco mucho, ¿ahora dime si me podrás ayudar también con el objeto combo para la selección de consultas o le intento con la macro que me habías comentado antes?
Por lo que vi, ya tienes distintos botones para cada consulta. ¿Por qué no lo haces directamente así?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas