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

1

Portanto, 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 construídos usando a visualização de design do Access). Então, nos próximos dias, talvez eu execute as 6 consultas para maio, como maio acabou. Eu só quero os dados do mês que acaba de terminar, então a consulta tem critérios definidos como o nome do mês (por exemplo, maio). Agora, não é muito demorado para mudar todos estes a cada mês, mas existe alguma maneira de automatizar isso? Atualmente, eles estão todos prontos para abril e eu quero mudá-los todos para maio, quando eu os executo em poucos 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ê souber uma maneira melhor) apenas uma vez e alterá-lo todas as 6 consultas, sem precisar abrir manualmente todas as 6, para o campo direito e altere os Critérios.

Observação (sobre o VBA) : usei o VBA do Excel para conhecer o básico do VBA, mas realmente não sei nada específico do Access (além de ver o código algumas vezes). E outros usarão isso, que não sabem nada sobre o Access VBA. Então, acho que encontrei uma pergunta / resposta semelhante que poderia faça isso no VBA, mas prefiro fazer de outra maneira. Se a consulta precisar ser um pouco redesenhada posteriormente, provavelmente por alguém que não conhece o Access VBA, seria bom ter uma solução que não envolva o VBA, se isso for possível.

    
por Graphth 03.06.2012 / 23:08

1 resposta

2

Há uma maneira simples de fazer a consulta solicitar o mês em que você a executa: Na consulta, coloque [Digite o mês] no mesmo lugar em que você tem o nome do mês.

Quandoaconsultaéexecutada,umacaixadediálogoapareceráparainseriromês.Vocêpodecolocarqualquertextoquevocêquiserentrecolchetes-nãoprecisadizer"mês"; isso simplesmente define o que a caixa de diálogo dirá. Essa técnica é chamada de "consulta de parâmetro".

Aexecuçãodetodasas6consultascomumaúnicaetapaexigirácódigoVBA-masumcódigomuitosimples.SeususuáriosfinaisnãoprecisamsabernadasobreoVBA-elessóprecisamabrirumformulárioeclicaremumbotão.

Crieumformulário,coloqueumbotãonele.Nalistadepropriedadesdessebotão,escolhaaguiaEventose,emseguida,oevento"Ao clicar". Clique no botão "..." para o evento On Click.

IssoabreajaneladecódigoVBAcomocursornolocalcorreto-SubComandoPrivado0_Clique-emqueComando0éonomedobotão.Digiteocódigoconformemostrado...

Substitua os nomes corretos por 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 só 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 do VBA, crie um código "Module". Clique com o botão direito do mouse no painel Project da janela e escolha Inserir / Módulo:

Nonovomódulo,adicioneestecódigo:

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

Agora, altere o código do Form1 para este:

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

NocódigoCommand0(botão),adicionamosAskForMonthantesqueaconsultasejaexecutada.Novamente,repitaalinha"DoCmd" para cada consulta com os nomes de consulta corretos.

O passo final é substituir o parâmetro nas consultas por uma chamada para a função "GetMonth". Em vez de [Inserir mês] nos critérios da consulta, coloque "GetMonth ()".

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

    
por 03.06.2012 / 23:33