Automatizando consultas do Access 2007 (alterando um critério)

Automatizando consultas do Access 2007 (alterando um critério)

Então, tenho 6 consultas e quero executá-las todas uma vez no final de cada mês. (Eu sei um pouco sobre SQL, mas eles são simplesmente criados usando a visualização de design do Access). Então, nos próximos dias, talvez eu execute as 6 consultas de maio, já que maio acabou de terminar. Quero apenas os dados do mês que acabou de terminar, por isso a consulta tem Critérios definidos como nome do mês (por exemplo, maio). Agora, não é muito demorado alterar tudo isso a cada mês, mas existe alguma maneira de automatizar isso? Atualmente, eles estão todos configurados para abril e quero alterá-los para maio quando executá-los em alguns dias. E a cada mês, eu gostaria de digitar o mês (talvez em uma caixa de texto em um formulário ou em outro lugar, se você conhecer uma maneira melhor) apenas uma vez e alterar todas as 6 consultas, sem precisar abrir manualmente todas as 6, rolar para o campo certo e altere os Critérios.

Nota (sobre VBA): Eu usei o Excel VBA, então conheço o básico do VBA, mas não sei nada específico sobre o Access (além de ver o código algumas vezes). E outros usarão isso que não sabem nada sobre Access VBA. Então, acho que encontrei um semelhanteResposta da questãoisso poderia fazer isso no VBA, mas prefiro fazer de outra maneira. Se a consulta precisar ser ligeiramente redesenhada posteriormente, provavelmente por alguém que não conhece o Access VBA, seria bom ter uma solução que não envolvesse VBA, se isso fosse possível.

Responder1

Há uma maneira simples de fazer com que a consulta pergunte o mês ao executá-la: Na consulta, coloque [Enter Month] no mesmo lugar onde agora está o nome do mês.

insira a descrição da imagem aqui

Quando a consulta for executada, uma caixa de diálogo aparecerá para inserir o mês. Você pode colocar qualquer texto que desejar entre colchetes - não precisa dizer "mês"; isso simplesmente define o que a caixa de diálogo dirá. Essa técnica é chamada de "consulta de parâmetro".

insira a descrição da imagem aqui

A execução de todas as 6 consultas em uma única etapa exigirá código VBA - mas um código muito simples. Seus usuários finais não precisam saber nada sobre VBA – eles só precisam abrir um formulário e clicar em um botão.

Crie um formulário, coloque um botão nele. Na lista de propriedades desse botão, escolha a guia Eventos e depois o evento "Ao clicar". Clique no botão "..." para o evento On Click.

insira a descrição da imagem aqui

Isso abre a janela do código VBA com o cursor no local correto - Private Sub Command0_Click - onde Command0 é o nome do botão. Digite o código conforme mostrado...

insira a descrição da imagem aqui

Substitua os nomes corretos para suas consultas e repita a linha de código quantas vezes forem necessárias. Abrir o formulário e clicar no botão agora executará todas as consultas de uma vez.

O próximo passo

A melhoria final seria inserir o parâmetro uma vez e aplicá-lo a todas as consultas automaticamente. Isso requer várias etapas.

Na janela de código VBA, crie um código "Módulo". Clique com o botão direito no painel Projeto da janela e escolha Inserir/Módulo:

insira a descrição da imagem aqui

No novo módulo, adicione este código:

insira a descrição da imagem aqui

gstrMonth é uma string variável global para armazenar o nome do mês. A função GetMonth será utilizada nas consultas para recuperar esse valor.

Agora altere o código do Form1 para isto:

insira a descrição da imagem aqui

O sub "AskForMonth" exibe uma caixa de diálogo para o usuário digitar o nome do mês. Essa entrada é atribuída à variável gstrMonth.

insira a descrição da imagem aqui

No código Command0 (botão), adicionamos AskForMonth antes da consulta ser executada. Novamente, repita a linha “DoCmd” para cada consulta com os nomes de consulta corretos.

A etapa final é substituir o parâmetro nas consultas por uma chamada à função “GetMonth”. Em vez de [Inserir mês] nos critérios de consulta, coloque "GetMonth()".

insira a descrição da imagem aqui

Espero que isso incentive você a usar alguns dos recursos do VBA para automatizar suas tarefas do Access!

informação relacionada