Botón que cambie criterio de una consulta existente (Access 2007)

Tengo elaborada y casi finalizada una base de datos con múltiples consultas e informes.

Los informes dependen de consultas que tienen entre otros criterios uno que es el campo "Año"=2013
El problema es que para el año que viene, debería recorrer todas las consultas y cambiar este criterio a "2014".

Para solucionar esto pensé en que si ponía en el criterio = Año(Fecha()) que me devuelve en el año que estamos, lo tendría solucionado.

Pero esto no me resolvería el poder ver los informes de 2013 otra vez (sin pasar por cada una de las consultas y cambiar el criterio otra vez).

Así que mi idea (si es posible), es que a través de un botón preguntara para que año actualizar las consultas existentes.

Para ello necesitaría la ayuda de algún experto sobre que código debería introducir para modificar un criterio de una consulta ya existente y que pusiera para el campo año el resultado del inputbox que es introducido.

Toda la parte de la pregunta y como guardar un valor introducido en el inputbox ya lo se hacer. Tengo miles de consultas así que tampoco que alguien me lo haga por mi, solo me gustaría saber la parte de código para entregar en una consulta ya creada, y modificarle el valor del criterio a un cierto campo (algún ejemplo me sera suficiente).

Respuesta
1

Hasta donde yo sé no es posible hacer lo que pides. Es decir, no se puede acceder a un criterio de un objeto-consulta. Lo dicho... hasta donde yo sé.

Tienes dos soluciones posibles para tu problema: la primera es trabajar sobre la SQL de las consultas y la segunda es hacer una "trampilla" a través de un formulario.

Para la primera opción deberías:

1.- Poner la consulta en vista SQL y copiarla

2.- En un botón, por ejemplo, deberías escribir un código similar a este:

...

Private Sub...

Const miAno as Integer = 2014

Dim miQry as querydef

For each miQry in currentdb.Querydefs

If miQry.name="Nombre de la consulta 1" then

miQry.SQL = "SELECT..." & " WHERE NomTabla.Año=" & miAno

End if

If miQry.name=Nombre de la consulta 2" then

miQry.SQL = "SELECT..." & " WHERE NomTabla.Año=" & miAno
End if

'Y así sucesivamente con cada una de las consultas

Next miQry

End Sub

...

En miQry.SQL deberías adaptar la SQL del objecto consulta que has copiado a la misma SQL, pero con las características de código en VBA.

Como ves, un pequeño "trabajillo" según el número de consultas que tengas.

Como segunda opción podrías utilizar el sistema de formulario chivato, que puedes encontrar en este ejemplo: http://goo.gl/eNSf5

Así, en el filtro de tus consultas, deberías hacer referencia al control del formulario chivato que te recoge el año para que te filtrara por el valor de ese control.

Es un poco complicado explicarlo aquí. Si quieres mírate el ejemplo e intentas adaptarlo a tu BD. Si tienes algún problema pues me comentas y le echamos un vistazo.

http://neckkito.siliconproject.com.ar_

http://neckkito.siliconproject.com.ar

Gracias de nuevo neckkito!

Gran rapidez y muy buenas ideas alternativas.

Optaré por la segunda, parece mas sencilla y es algo que una vez leído no se cómo no se me ha ocurrido antes hacer ese "truco"! jajaj

Lo dicho, gracias una vez mas!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas