Automatización de consultas de Access 2007 (cambiando un criterio)

Automatización de consultas de Access 2007 (cambiando un criterio)

Entonces, tengo 6 consultas y quiero ejecutarlas todas una vez al final de cada mes. (Sé un poco sobre SQL, pero simplemente se crean utilizando la vista de diseño de Access). Entonces, en los próximos días, tal vez ejecute las 6 consultas de mayo, ya que mayo acaba de terminar. Sólo quiero los datos del mes que acaba de terminar, por lo que la consulta tiene Criterios establecidos como el nombre del mes (por ejemplo, mayo). Ahora bien, no lleva mucho tiempo cambiarlos todos cada mes, pero ¿hay alguna forma de automatizar esto? Actualmente, están todos configurados para abril y quiero cambiarlos todos a mayo cuando los ejecute dentro de unos días. Y cada mes, me gustaría escribir el mes (tal vez en un cuadro de texto en un formulario o en otro lugar si conoce una mejor manera) solo una vez y hacer que cambie las 6 consultas, sin tener que abrir manualmente las 6, desplazarse al campo derecho y cambie los Criterios.

Nota (sobre VBA): He usado Excel VBA, por lo que conozco los conceptos básicos de VBA, pero realmente no sé nada específico de Access (aparte de ver el código varias veces). Y otros que no saben nada sobre Access VBA usarán esto. Entonces creo que he encontrado algo similar.pregunta respuestaEso podría hacer esto en VBA, pero prefiero hacerlo de otra manera. Si es necesario rediseñar ligeramente la consulta más adelante, probablemente por parte de alguien que no conoce Access VBA en absoluto, sería bueno tener una solución que no involucre VBA, si es que eso es posible.

Respuesta1

Hay una forma sencilla de hacer que la consulta solicite el mes cuando la ejecute: en la consulta, escriba [Ingresar mes] en el mismo lugar donde ahora tiene el nombre del mes.

ingrese la descripción de la imagen aquí

Cuando se ejecute la consulta, aparecerá un cuadro de diálogo para ingresar el mes. Puede poner cualquier texto que desee entre corchetes; no es necesario que diga "mes"; esto simplemente define lo que dirá el cuadro de diálogo. Esta técnica se denomina "consulta de parámetros".

ingrese la descripción de la imagen aquí

Ejecutar las 6 consultas con un solo paso requerirá código VBA, pero un código muy simple. Sus usuarios finales no necesitan saber nada sobre VBA; solo necesitan abrir un formulario y hacer clic en un botón.

Crea un formulario, ponle un botón. En la lista de propiedades de ese botón, elija la pestaña Eventos y luego el evento "Al hacer clic". Haga clic en el botón "..." para el evento Al hacer clic.

ingrese la descripción de la imagen aquí

Esto abre la ventana del código VBA con el cursor en el lugar correcto: Private Sub Command0_Click, donde Command0 es el nombre del botón. Ingrese el código como se muestra...

ingrese la descripción de la imagen aquí

Sustituya los nombres correctos para sus consultas y repita la línea de código tantas veces como sea necesario. Al abrir el formulario y hacer clic en el botón, se ejecutarán todas las consultas a la vez.

El siguiente paso

La mejora final sería ingresar el parámetro una vez y aplicarlo a todas las consultas automáticamente. Esto requiere varios pasos.

En la ventana de código VBA, cree un código "Módulo". Haga clic derecho en el panel Proyecto de la ventana y elija Insertar/Módulo:

ingrese la descripción de la imagen aquí

En el nuevo módulo, agregue este código:

ingrese la descripción de la imagen aquí

gstrMonth es una cadena de variable global que contiene el nombre del mes. La función GetMonth se utilizará en las consultas para recuperar ese valor.

Ahora cambie el código de Form1 a esto:

ingrese la descripción de la imagen aquí

El sub "AskForMonth" muestra un cuadro de diálogo para que el usuario escriba el nombre del mes. Esa entrada se asigna a la variable gstrMonth.

ingrese la descripción de la imagen aquí

En el código Command0 (botón) agregamos AskForMonth antes de ejecutar la consulta. Nuevamente, repita la línea "DoCmd" para cada consulta con los nombres de consulta correctos.

El último paso es reemplazar el parámetro en las consultas con una llamada a la función "GetMonth". En lugar de [Ingresar mes] en los criterios de consulta, escriba "GetMonth()".

ingrese la descripción de la imagen aquí

¡Espero que esto te anime a utilizar algunas de las capacidades de VBA para automatizar tus tareas de Access!

información relacionada