[A BÍBLIA DO VBA NO ACCESS]: MACROS E PROGRAMAÇÃO VBA NO ACCESS - CURSO COMPLETO

Páginas: 1164 | Autor: Júlio Battisti | 50% de Desconto e 21 Super Bônus

Você está em: PrincipalArtigosAccess 2007 Avançado › Capítulo 1 : 09
Quer receber novidades e e-books gratuitos?
›››
« Anterior Δ Página principal ¤ Índice Próxima »

Curso Grátis - Access 2007 Avançado, Macros e Programação VBA
Autor: Júlio Battisti
Lição 09 - Capítulo 01 - Utilização de Macros para Automação de Tarefas - Parte 3

6.6 - Associando Macros a Eventos

            Neste item veremos alguns exemplos de macros e a associação das mesmas com eventos de formulários e relatórios. Utilizaremos algumas das ações apresentadas na tabela do ítem anterior. Através da utilização de exemplos práticos, poderemos perceber melhor a utilização das Macros.

Exemplo 1: Vamos começar com um exemplo bem simples. Vamos criar uma macro chamada Maximiza, com uma única ação "Maximizar". Vamos associar esta macro a propriedade de evento "Ao Abrir", dos formulário "Clientes", no qual já foi fornecido junto com o banco de dados curso_av.

Para criar uma macro com uma ação Maximizar:

  • Dê um clique na Guia Criar -> Macro;
  • Na coluna Ação Escolha "Maximizar". Na coluna comentários digite: "Maximiza um objeto. Associada ao Evento Ao Abrir";
  • Dê um clique no botão Curso completo de Access 2007 Avancado - Julio Battisti para salvar a macro. Ao ser solicitado o nome digite: Maximiza, e dê um clique em OK.
  • Feche a Macro.

Para associar a macro Maximiza com o evento "Ao abrir" do formulário Clientes:

  • Dê um clique na Guia Formulários,  dê um clique no formulário Clientes para marcá-lo e depois um clique no Modo Design. Jamais podemos esquecer que toda e qualquer alteração sempre é feita no Modo Design.
  • No Modo Design, dê um clique com o botão direito do mouse na área cinza, fora da grade quadriculada, e no menu que surge dê um clique em propriedades. Na janela que surge, clique na guia Evento. Gostaria de chamar a atenção para este detalhe. O Evento que queremos é o evento Ao Abrir do formulário, o qual é acessível através das propriedades do formulário. Para acessar estas propriedades, devemos clicar com o direito na área azul e não na grade quadriculada. A grade quadriculada é chamada de "Seção Detalhe".  Após clicar em propriedades, surge a janela indicada na figura a seguir. No título da Janela deve aparecer Formulário, para você ter certeza que está acessando as propriedades do formulário e não da Seção Detalhe.

Curso completo de Access 2007 Avancado - Julio Battisti
Figura 82 – Propriedades de Evento do Formulário.

  • Dê um clique no evento Ao abrir. Esse campo oferece uma listagem de todas as Macros e Módulos disponíveis. Clique na flechina para baixo para abrir esta listagem, e depois clique em Maximiza, conforme indicado pela figura abaixo:

Curso completo de Access 2007 Avancado - Julio Battisti
Figura 83 – Evento ao Abrir - Maximiza.

  • Com isto você estará associando a Macro "Maximiza" com o evento "Ao abrir" do formulário clientes. Na prática isso significa que toda vez que o formulário for aberto, ocorre o evento "Ao abrir", o qual por sua vez executa a macro Maximiza.
  • Salve o formulário e vá para o modo Folha de Dados. Se o formulário não estiver maximizado, o mesmo será maximizado pela ação da macro Maximiza.

Este foi um exemplo simples, com o objetivo da salientar a associação de uma macro com um evento de formulário. Agora veremos alguns exemplos mais elaborados.
           
Exemplo2 : Vamos supor que todo o final de mês você precisa gerar duas planilhas do Excel para enviar para o seu chefe. Uma das planilhas ( vendas.xls) deve apresentar o total de vendas por CidadeDestino. A outra planilha ( pedidos.xls) deve apresentar o quantitativo de pedidos por vendedor ( CódigoDoFuncionário). Para atender a esta solicitação você teria que fazer o seguinte:

  • Criar uma consulta que calcula o total por CidadeDestino;
  • Criar uma consulta que contabiliza o quantitativo por CódigoDoFuncionário;
  • Executar a primeira consulta e salvar o resultado como uma planilha do Excel;
  • Executar a segunda consulta e salvar o resultado como uma planilha do Excel.

Com a utilização de macros podemos facilitar um pouco este processo. As duas consultas não tem jeito, precisamos criá-las. Após criadas as consultas, iremos utilizar uma macro para executá-las e exportar o resultado para as planilhas respectivas: vendas.xls e pedidos.xls. Esta macro deverá ser executada no final do expediente do último dia útil do mês.

Para criar as consultas:

  • Utilizando os conhecimentos apresentados no tópico sobre consultas, crie a seguinte consulta. Calcular a quantidade de pedidos por CidadeDestino, conforme indicado na figura a seguir:
  • Salve as consultas como: Totais de Pedidos e Quantidade por CidadeDestino.

Curso completo de Access 2007 Avancado - Julio Battisti
Figura 84 – Exemplo Consulta.

  • Agora é a hora de criarmos a nossa macro, a qual conterá as seguintes ações:
  • Uma Caixa de Mensagem;
  • Uma ação SaídaPara que exporta o resultado da consulta para o arquivo Totais de Pedidos.xls
  • Outra Caixa de Mensagem informando que a macro chegou ao fim

            Iremos pedir que a macro crie os arquivos de Excel, na pasta C:\Meus Documentos. Também poderíamos pedir para que fosse salvo diretamente em um drive de rede, no qual o chefe tem acesso, por exemplo, X:\relatorios\chefe.

Para criar a macro "Gera planilhas para o chefe":

  • Clique em Criar -> Macros. Será exibida a janela macros com uma macro em branco.
  • Adicione quatro ações, conforme indicado na abaixo:

Ação 1:

Ação : CaixaDeMensagem

Comentário: "Inicializando a macro Relatórios do Chefe"

Parâmetros da Macro:

Mensagem: Geração de Relatórios Totais de Pedidos e Quantidade por CidadeDestino.

Alarme sonoro: Sim

Tipo: Aviso !

Título: Relatório Totais de Pedidos

Ação 2:

Ação : SaídaPara

Comentário: " Gera o arquivo c:\meus documentos\ Pedidos.xls

Parâmetros da Macro:

Tipo de objeto: Consulta

Nome do Objeto: Totais de Pedidos e Quantidade por CidadeDestino

Formato de saída: Microsoft Excel (*.xls)

Arquivo de saída: c:\Pedidos.xls

Auto Iniciar: Não

Arquivo Modelo:

Ação 3:

Ação : CaixaDeMensagem

Comentário: Mensagem de macro concluída com sucesso

Parâmetros da Macro:

Mensagem: Geração de relatórios concluída com sucesso !!!

Alarme sonoro: Sim

Tipo: Aviso !

Título: Macro finalizada.

  • Salve a macro com o nome de Gera planilhas para o chefe.
  • Execute a macro, depois verifique se foram criados os arquivos Pedidos.xls na pasta C:\.
  • Ao executar a macro, se já existir um arquivo Pedidos.xls, o Microsoft Office Access 2007 pergunta se você deseja substituir o arquivo existente. Se você responder que Sim o arquivo é substituído, se você responder que não, o Microsoft Office Access 2007 abre uma janela para que você digite um nome diferente para o arquivo.

Exercício: Crie uma consulta do tipo Criação de Tabela, que selecione somente os pedidos para o ano da Data do Pedido igual a 2010 e cujo valor do frete seja superior a R$10,00. Incluir os campos NúmeroDoPedido, DataPedido, CidadeDestino e Frete. Essa consulta deve criar uma tabela chamada "Pedidos para 2010". Salve esta consulta com o nome de "Gera Pedidos para 2010". Crie uma segunda consulta do tipo Atualização, a qual aumenta em 20 % o valor do campo Frete na tabela "Gera Pedidos para 2010". Criar uma macro que executa estas duas consultas em seqüência e depois exporta os dados da tabela "Pedidos para 2010" para um documento do Word na pasta C:\. O nome do arquivo será pedidos.doc. Após exportar para o documento do Word, a macro deverá excluir a tabela "Pedidos para 2010" e emitir uma Mensagem:" Macro concluída com sucesso !!!!".

6.7 - Grupos de Macros e Macros com Condições

            Grupos de Macros e Macros com Condições, são algumas das opções avançadas que podemos utilizar na criação de nossas macros. Neste ítem iremos aprender a utilizar estas duas opções para refinar mais a maneira com que nossas macros são executadas. Veremos a aplicação destes conceitos, através de exemplos práticos passo-a-passo.

Grupos de Macros:

            A utilização de Grupos de Macros é uma maneira de organizar o nosso trabalho. Na prática utilizamos um grande número de macros para automatizar uma série de tarefas nos formulários e relatórios. Se formos gravar cada uma como uma macro separadamente, acabaremos com um número excessivo de macros, e com uma dificuldade de identificar qual macro é responsável por qual ação. Podemos utilizar Grupos de Macros para melhorar esta situação.

            Por exemplo, ao automatizar um formulários, ao invés de criar cada macro separadamente, gravo todas elas em uma única macro com o mesmo nome do formulários. Com isso tenho somente uma macro para a automatização do formulário. Porém diferentes eventos no formulário estão associados a diferentes ações e não a todas as ações da macro. Ai é que entra o conceito de grupo de Macros. Dentro da macro principal, temos Grupos de uma ou mais ações, sendo que estes grupos são nomeados e cada grupo responde a um ou mais evento. Posso criar uma macro chamado Pedidos, onde estarão todos os grupos de macros que irão automatizar o formulário Pedidos. Dentro crio um grupo com uma ação única de Maximizar e chamo este grupo de Maximiza.

Na hora de associar com o evento Ao abrir do formulário, não vou associar toda a macro Pedidos, mas somente o grupo Maximiza. O Microsoft Office Access 2007 utiliza a representação de grupos de macros da seguinte forma: Primeiro o nome da macro, depois um ponto e finalmente o nome do grupo. Por exemplo o grupo maximiza, dentro da macro Pedidos seria representado da seguinte forma:

Pedidos.maximiza

            Para criar uma macro com Grupos de macros, você precisa exibir a coluna "Nome da macro", para isso basta dar um clique no botão "nomes de macro" Curso completo de Access 2007 Avancado - Julio Battisti, conforme indicado na próxima figura:

Curso completo de Access 2007 Avancado - Julio Battisti
Figura 85 – Clique no botão "Nomes de macro" para exibir a coluna "Nome da macro".

Vamos a um exemplo: Vamos criar uma macro chamada Clientes, a qual conterá algumas macros associadas a eventos no formulário Clientes. Nesta macro teremos três grupos de macros:

  • Uma macro associada ao evento Ao abrir do formulário que emite uma mensagem "INICIANDO O FORMULÁRIO PEDIDOS" e maximiza o formulários. Nomearemos este grupo como "Abertura"
  • Uma macro associada ao evento "Ao clicar" de um botão de comando "Busca Pedidos", que iremos adicionar ao formulário. Ao clicar neste botão, será aberta uma consulta que exibe somente os Pedidos para o cliente do registro atual. Além disso essa macro deve dimensionar esta janela de tal forma que a mesma fique a 2 cm do canto superior esquerdo e tenha 10cm de largura, por 10cm de altura. Chamaremos esta macro de Busca_Pedidos.
  • Uma macro associada ao evento "Ao Fechar" do formulário, a qual emite uma mensagem "CLIQUE EM OK PARA FECHAR O FORMULÁRIO CLIENTES" e também fecha o banco de dados curso_av.mdb. Vamos chamá-la de Encerra.

Bem, vamos passo-a-passo, na construção deste grupo de macros.

Para criar o grupo de macros Clientes:

  • Dê um clique na guia Criar - > Macros;
  • Na janela que surge, dê um clique no botão "Nomes de macro" , para que seja exibida a coluna "Nome da macro";
  • Na primeira linha, na coluna Nome da macro, você digita o nome da primeira macro do grupo de Macros Clientes. No nosso caso digite: Abertura;
  • Esta macro terá duas ações: CaixaDeMensagem e Maximizar, configuradas conforme abaixo indicado:

Macro Abertura, Ação CaixaDeMensagem:

Ação : CaixaDeMensagem

Comentário: "Macro Abertura do Grupo de Macro clientes."

Parâmetros da Macro:

Mensagem: INICIANDO O FORMULÁRIO PEDIDOS

Alarme sonoro: Sim

Tipo: Aviso !

Título: Ação CaixaDeMensagem da Macro Abertura do Grupo de Macros Clientes

Macro Abertura, Ação Maximizar :

Ação : Maximizar

Comentário: "Maximiza o Formulário na Abertura"

Parâmetros da Macro:

Não Possui parâmetros.

            Observe que quando temos mais de uma ação em uma macro dentro de um grupo de macros, o nome da macro somente vai na primeira ação. As ações subsequentes onde a coluna Nome da macro estiver em branco fazem parte da macro recém nomeado. Quando colocamos outro nome na coluna Nome da macro, estamos iniciando uma nova macro dentro do grupo.

            Sua tela deve estar conforme indicado na figura a seguir:

Curso completo de Access 2007 Avancado - Julio Battisti
Figura 86 – Grupo de macros Clientes, com a primeira macro "Abertura" já definida com duas ações.

  • Dê um clique no botão Curso completo de Access 2007 Avancado - Julio Battisti para salvar o grupo de macros. Ao ser solicitado o nome, digite Clientes e dê um clique em OK.
  • Agora vamos criar as demais macros do grupo de macros clientes.

Para criar a macro Busca_Pedidos no Grupo de macros Clientes:

  • Antes de criarmos esta macro, temos que criar uma consulta que lista somente os Pedidos para o cliente, cujo CódigoDoCLiente seja igual ao CódigoDoCliente do registro que está sendo exibido, isto é, se estamos exibindo o registro do seu José da Silva, cujo código é 40, a consulta deve retornar todos os pedidos onde no campo CódigoDoCliente, tivermos o valor 40;
  • Feche o grupo de Macros Clientes. Dê um clique na guia Criar -> Design da Consulta e crie a sua consulta baseada na tabela Pedidos. Adicione os campos: NúmeroDoPedido, CódigoDoCliente, DataPedido e Frete;
  • Na linha critério, do campo CódigoDoCliente, coloque o seguinte critério:

[Formulários]![Clientes]![CódigoDoCliente]

  • Com isso, estamos informando ao Microsoft Office Access 2007 para exibir apenas os pedidos, cujo CódigoDoCliente for igual ao CódigoDoCliente do registro atual do formulário Clientes. Veremos maiores detalhes sobre esta nomenclatura na parte sobre Técnicas Avançadas em Formulários. Salve a consulta com o nome de Busca_Pedidos e feche a consulta;
  • Para facilitar a visualização, crie um formulário chamado Busca_Pedidos. Este formulário é baseado na consulta Busca_Pedidos. Utilize o layout "Tabela" para este formulário;
  • Salve o formulário com o nome de Busca_Pedidos, depois feche-o;
  • Agora que temos a consulta e o formulário Busca_Pedidos, vamos construir a macro Busca_Pedidos;
  • Dê um clique na Macro Clientes para marcá-la e depois dê um clique com o botão direito do mouse -> clique em Modo Design para alterá-la;
  • Na primeira linha em branco, na coluna Nome da macro, digite Busca_Pedidos;
  • Esta macro terá três ações: AbrirFormulário, Restaurar e MoverDimensionar configuradas conforme a seguir:

Macro Busca_Pedidos, ação AbrirFormulário:

Ação : AbrirFormulário

Comentário: "Abre o Formulário  Busca_Pedidos"

Parâmetros da Macro:

Nome do Formulário: Busca_Pedidos
Exibir: Formulário

Nome do Filtro:

Condição Onde:

Modo de Dados: Editar
Janela: Normal

Macro Busca_Pedidos, ação Restaurar:

Ação :  Restaurar

Comentário: " Restaura o formulário ao seu tamanho origina"

Parâmetros da Macro:

Não Possui Parâmetros

              OBS: Utilizamos a ação Restaurar, pois caso contrário a ação seguinte MoverDimensionar, não teria efeito.

Macro Busca_Pedidos, ação MoverDimensionar:

Ação : MoverDimensionar

Comentário: " Dimensiona o formulário na tela."

Parâmetros da Macro:

Direita: 1cm
Abaixo: 1cm

Largura: 15cm

Altura: 10cm

Para criar a macro Encerra no Grupo de macros Clientes:

  • Ainda na janela de macros, na primeira linha em branco, na coluna Nome da Macro, digite Encerra;
  • Esta macro terá duas ações: CaixaDeMensagem e uma ação Sair, conforme indicado abaixo:

Macro Encerra, ação CaixaDeMensagem:

Ação : CaixaDeMensagem

Comentário: "Macro Encerra,  do Grupo de Macro clientes."

Parâmetros da Macro:

Mensagem: Finalizando o banco da dados curso_av.mdb. Todos os dados serão salvos.

Alarme sonoro: Sim

Tipo: Aviso !

Título: CURSO DE ACCESS AVANÇADO - MACROS !

Macro Encerra, ação Sair:

Ação : Sair

Comentário: "Fecha o Banco de Dados curso_av.mdb."

Parâmetros da Macro:

Opções: Salva tudo

  • Salve o grupo de macros clientes e feche-o. A etapa final é associar as macros com os respectivos eventos do formulário Clientes;
  • Antes precisamos adicionar um Botão de Comando ao formulário Clientes. Abra o formulário Clientes no Modo Design e adicione um Botão de Comando, arrastando a partir da Barra de Ferramentas. Quando o Microsoft Office Access 2007 iniciar o assistente de botão de comando, clique em cancelar. Será adicionado um botão com um nome parecido com Botãoxx, onde xx é um número. Altere a legenda do botão para Pesquisar Pedidos;
  • Associe as macros aos respectivos eventos, conforme indicado na tabela abaixo:

Elemento

Evento

Macro Associada

Formulário

Ao Abrir

Clientes.Abertura

Botão Pesquisar Pedidos

Ao Clicar

Clientes.Busca_Pedidos

Formulário

Ao Fechar

Clientes.Encerra

  • Salve o formulário e vá para o Modo Formulário, e observe que já na abertura do formulário, entra em ação a macro Clientes.Abertura. Dê um clique no botão Busca Pedidos, isso acionará a macro Clientes.Busca_Pedidos, a qual irá abrir o formulário Busca_Pedidos ( O qual é baseado na consulta Busca_Pedidos) com os Pedidos para o cliente atual;
  • Observe que neste exemplo utilizamos diversos elementos do Microsoft Office Access 2007: Consultas, Formulários e Macros. Quando partimos para desenvolver soluções mais complexas, um bom conhecimento da estrutura do Microsoft Office Access 2007 é de fundamental importância para que possamos visualizar e implementar a melhor solução em cada caso.

6.8 - Macros com Condições

         Podemos fazer com que as macros sejam executadas, somente se uma determinada condição for satisfeita. Por exemplo podemos criar uma macro que executa uma consulta de atualização, somente se o dia do mês for maior ou igual a 25.          

Para adicionar condições as macros, devemos exibir a coluna condição, para isto basta dar um clique no botão condições, conforme indicado na figura a seguir:

         

Curso completo de Access 2007 Avancado - Julio Battisti

         

         Ao clicar neste botão, passa a ser exibida a coluna condição, na qual podemos colocar os testes para a execução da macro. Caso uma macro tenha diversas ações e você queira que a mesma condição de execução seja aplicada a todas as ações, basta digitar a condição na primeira linha e nas linhas seguintes digite apenas três pontinhos ( ... ). Caso você não digite os três pontos nas demais ações, o Microsoft Office Access 2007 executa estas ações independentemente da condição colocada na primeira linha.

         

         Você também pode colocar diferentes condições para cada uma das ações de macro dentro de uma macro com diversas ações.

Exemplo: Vamos criar uma consulta de atualização que reajusta em 20% o valor do campo Frete na tabela Pedidos. Vamos criar uma macro para executar esta consulta, a qual somente será executada se o dia do mês for maior do que 25.

Para criar uma macro com condições faça o seguinte:

  • Crie uma consulta de atualização que aumenta em 20% o valor do Frete. Salve esta consulta com o nome de "Aumenta frete em 20 por cento" e feche esta consulta.
  • Vá para a guia macros e dê um clique no botão Novo. Dê um clique no botão condições, para exibir a coluna de condições. Crie uma ação conforme indicado abaixo:

Ação : AbrirConsulta

Condição: Dia(Data())>=25
Comentário: "Abre a consulta Aumenta Frete em 20 por cento"

Parâmetros da Macro:

Nome da consulta: Aumenta Frete em 20 por cento
Exibir: Folha de Dados

Modo de Dados: Editar

  • Salve a macro com o nome de "Macro com condição";
  • Observe o usa das funções Data() e Dia(). A função Data() retorna a data atual do computador, e a função Dia() extrai apenas o dia da data, o qual deve ser maior ou igual a 25 para que a macro seja executada;
  • A possibilidade de utilizar operadores e funções para os testes de condição em macros, nos propiciam uma flexibilidade bastante grande.

Vamos exercitar um pouco.

Exercícios:

  • Crie uma consulta que calcula o somatório dos pedidos por cliente, inclua o CódigoDoCliente e o Total de pedidos para este cliente. No campo CódigoDoCliente, coloque como critério uma referência para o campo CódigoDoCliente do formulário Clientes. Salve esta consulta como "Totais por Clientes". Crie um formulário com layout de tabela baseado nesta consulta. Salve este formulário com o nome de Busca_Total_Por_Cliente. Abra o formulário Clientes no Modo Design, adicione um Botão de Comando. Quando o Microsoft Office Access 2007 apresentar a primeira tela do assistente para o botão de comando clique em Cancelar. Altere o rótulo do Botão de Comando para Busca Total do Cliente. Salve o formulário clientes e feche-o. Crie uma nova macro com duas ações: Uma ação CaixaDeMensagem que exibe a mensagem "SERÁ EXIBIDO O TOTAL DE PEDIDOS PARA O CLIENTE DO REGISTRO ATUAL". Uma ação AbrirFormulário que abre o formulário Busca_Total_Por_Cliente. Salve esta macro com o nome de Busca_Total_Por_Cliente e feche-a. Abra o formulário Clientes no Modo Design e associe a macro Busca_Total_Por_Cliente ao evento ao Clicar do botão Busca Total do Cliente. Vá para o Modo Formulário e teste a macro Busca_Total_Por_Cliente, dando um clique no botão Busca Total do Cliente.
  • Altere a macro criada do ítem anterior e adicione a ação MoverDimensionar para que o formulário Busca_Total_Por_Cliente seja exibido no canto superior esquerdo da tela.
  • O Microsoft Office Access 2007 reconhece uma macro chamada Autoexec. Caso você crie uma macro chamada Autoexec, o Microsoft Office Access 2007 irá executá-la automaticamente quando você abrir o Banco de Dados. Esta macro normalmente é utilizada para abrir o formulário principal do sistema e aplicar algumas configurações de segurança, conforme veremos nas próximas seções. Crie uma macro chamada Autoexec com uma única ação CaixaDeMensagem com a seguinte mensagem: "CURSO DE TÉCNICAS AVANÇADAS DO Microsoft Office Access 2007!!!!!!". Salve a macro, feche o banco de dados curso_av.mdb e abra-o novamente Observe que a macro Autoexec é automaticamente executada, conforme indicado pela Mensagem que surge na tela.

6.8.1 - Referenciando nome de controles em expressões

Quando trabalhamos com macros, é muito comum a necessidade de nos referirmos a controles de formulários ou relatórios . Devemos usar a seguinte sintaxe para nos referirmos a controles em expressões

Formulários![NomedoFormulário]![nomedocontrole]

Relatórios![NomedoRelatório]![nomedocontrole]

Sempre devemos colocar os nomes dos objetos entre colchetes, embora os colchetes somente sejam obrigatórios quando o nome do campo, formulário ou relatório, possuir espaços em branco. Considere os exemplos:

            Formulários![Fornecedores]![Identificação do Fornecedor]

se refere ao controle Identificação do Fornecedor do formulário Fornecedores aberto .

Obs.: Para referenciarmos um controle ,o respectivo  Formulário ou Relatório deve estar aberto, caso contrário, ao executar a Macro, será gerada uma mensagem de erro .

O Microsoft Access 2007 proporciona um atalho que você pode usar quando o controle ao qual você está se referindo estiver no formulário ou relatório a partir do qual a macro foi executado. Nesse caso , você pode usar esta sintaxe :

[nomedocontrole]

Por exemplo ,[Identificação do Fornecedor] refere-se ao controle Identificação do Fornecedor no formulário ou relatório a partir do qual a macro foi executada .

Obs.: Se você não estiver certo a partir de onde uma macro será executada ou se ela será executada de vários formulários, relatórios ou eventos diferentes , use a sintaxe completa ao se referir a um controle .

Você também pode se referir ao valor de um campo de uma tabela na qual um formulário aberto esteja baseado e aos valores da maioria das propriedades de controles, relatórios e formulários . Se você se referir ao valor de um campo de uma tabela em que um formulário aberto esteja baseado, deverá haver no formulário um controle vinculado a esse campo ou o campo terá que estar referido em um controle calculado do formulário.

Dica: Você pode usar o construtor de expressões para ajudá-lo a inserir referências a controles de formulários e relatórios .

6.8.2 - Usando condições em macros com referência a controles:

Em alguns casos , você pode querer executar uma ação ou uma série de ações em uma macro somente se uma determinada condição for verdadeira. Por exemplo, se você está usando uma macro para validar dados em um formulário, você pode querer exibir uma mensagem em resposta a um conjunto de valores inseridos em um registro e uma outra mensagem em resposta a um conjunto diferente da valores . Em casos como esses , você pode usar condições para controlar o fluxo da macro.
Uma condição é uma expressão lógica . A macro segue caminhos diferentes se a condição for verdadeira ou falsa. Para que possamos introduzir condições em uma macro devemos dar um clique no botão Condição (Curso completo de Access 2007 Avancado - Julio Battisti) .

A seguir temos alguns exemplos de condições que podem ser colocada nessa coluna :

Formulários![Pedido]![NumeroDoPedido] < 4000

A macro somente será executada se no controle NumeroDoPedido do formulário Pedido, o valor for menor do que 4000.
[Cidade]=”Castanhal” .

        Se o valor do controle Cidade do formulário a partir do qual a macro foi chamado for igual a Castanhal, então a macro é executada .

Formulários![Clientes]![Cidade]=”Castanhal”
E
Formulários![Clientes]![Códigodo Cliente] < 31

        Se o valor no controle Cidade do formulário Clientes for Castanhal e o valor do controle CódigodoCliente do formulário Clientes for menor do que 31 , então a macro é executada.

Você insere condições na coluna Condição na janela Macro . Se uma condição for verdadeira, o Microsoft Access 2007 executa a ação naquela linha . Você pode fazer com que o Microsoft Access 2007 execute uma série da ações se a condição for verdadeira digitando três pontos (...) na coluna Condição das ações que seguem imediatamente a condição .

                        Observe a Figura a seguir:

Curso completo de Access 2007 Avancado - Julio Battisti
Figura 86  – Expressão definindo uma condição.

Quando você executa a macro, o Microsoft Access 2007 avalia cada expressão na coluna Condição. Se a expressão for falsa, o Microsoft Access 2007 ignora a ação e move para a próxima linha de ação que não tenha os três pontos.

Se a expressão for verdadeira, o Microsoft Access executa 2007 a ação ao lado da expressão e todas as ações seguintes que tenha os três pontos (...) na coluna condição . Se o Microsoft Access 2007 atingir uma célula vazia na coluna condição, ele executará a ação daquela coluna sem se preocupar com a expressão condicional. Se o Microsoft Access 2007 atingir uma outra expressão condicional , ele avaliará a nova expressão para determinar se executa ou não a ação ao lado.

EXEMPLO:  Vamos ver um exemplo em que utilizamos uma macro para interceptar uma mensagem de erro do Microsoft Access e colocar uma mensagem programada por nos em substituição a mensagem padrão do Microsoft Access. A macro que iremos analisar é acionada pelo evento Ao clicar do botão Revisar produtos do formulário Fornecedores do Banco de Dados Nwind.mdb que está disponível na pasta Semana2 .Esse botão deve abrir o formulário Lista de Produtos ,que exibe os produtos disponíveis para o fornecedor do registro que está sendo exibido.

6.9 - Usando macros para otimizar o trabalho com formulários

Quanto mais automação e personalização você puder colocar em seus formulários para fazê-los trabalhar em conjunto de uma maneira inteligente, mais fáceis de usar eles ficarão. Com macros, você pode dar a seus formulários características personalizadas que vão além das que você obtém definindo propriedades do formulário e dos seus controles. Você pode associar uma macro a um formulário ou controle e fazer com que a macro seja executada quando um determinado evento ocorrer, quando você pressionar um botão de comando no formulário, por exemplo, ou quando alguém usar o formulário para atualizar um registro.
Veremos como usar macros para responder a eventos de formulários , juntamente com alguns exemplos para personalização de formulários utilizando macros.

6.9.1 - Respondendo a eventos em formulários - Mais alguns exemplos:

Já havíamos visto anteriormente que os formulários, relatórios e seus controles podem ser programados para responder a determinados Eventos. Por exemplo, ao movermos de um registro para o outro em um formulário estamos gerando um evento (No Atual); bem como clicar duas vezes em um controle gera o evento Ao duplo clique. Podemos usar uma macro para responder a um evento. Para uma lista completa de eventos, consultar o Ajuda do Microsoft Access 2007.
Para criar uma resposta a um evento, primeiro você identifica o evento do formulário ou de controle ao qual você deseja que a macro responda, por exemplo, o evento Ao atualizar de um controle do formulário, ou o evento Ao Carregar de um formulário. Depois você escreve uma macro que contenha as ações que devem ser executadas quando o evento ocorrer e define a propriedade de evento com o nome da macro, como no exemplo da macro Aumenta definida na propriedade de evento Ao carregar de um formulário. Você pode usar o Construtor de Macros para criar uma macro e definir automaticamente a propriedade de evento. O Construtor de Macros está disponível para cada propriedade do evento.
Podemos observar na figura a seguir, o botão ConstruirCurso completo de Access 2007 Avancado - Julio Battisti, clicando nesse botão abrimos a janela mostrada na figura seguinte, perguntando se você quer criar uma Expressão, Uma Macro em resposta ao evento.

Curso completo de Access 2007 Avancado - Julio Battisti

Figura 88  – Macro em resposta ao evento.

6.9.2 - O processo de associar uma macro a um evento é bastante simples:

Abra a lista de propriedades de eventos do controle ou formulário desejado . Para isto basta dar um clique duplo no controle ou em uma área em branco do formulário, ou marcar o controle e escolher Propriedades do menu Exibir, isto tudo no modo Estrutura do Formulário. Para selecionar um formulário, clique no fundo do formulário (fora de quaisquer seções do formulário, na área cinza) ou escolha Selecionar Formulário no menu Editar.

Clique na propriedade de evento a qual você deseja associar a macro, depois no botão com os três pontos, escolha Construtor de Macros. Feito isso será aberta a Janela Macro a qual já conhecemos, é só escolher as ações desejadas e salvar a macro com um determinado nome. Após a macro ser salva ela pode ser usada por qualquer outro evento do formulário ou de um de seus controles. Para associar uma macro já gravada a um evento, basta abrir a lista que aparece na propriedade e clicar sobre o nome da macro previamente gravada.

Feito isso, quando o evento for disparado no Formulário ou controle em questão, o Microsoft Access 2007 executará a macro.

A partir de agora passaremos a ver um série de exemplos de use de macros associadas a eventos de formulários.

Veremos situações comuns que ocorrem com bastante freqüência nos aplicativos do dia a dia .

6.9.3 - Usando Macros para fazer os formulários trabalharem em conjunto

Se você tem um formulário com um subformulário em seu Banco de Dados, essa é uma das maneiras de fazer o com que dois formulários trabalhem juntos com o Microsoft Access. Um subformulário é na realidade um formulário separado inserido em um formulário principal, conforme vimos na primeira semana do curso. Na maioria dos casos, você usa subformulários para mostrar registros relacionados a um registro do formulário principal. Por exemplo, um subformulário poderia conter uma lista de todas as partes integrantes de um produto montado a partir de peças individuais e o formulário principal poderia conter informações sobre o próprio produto. Quando você movesse para um novo registro no formulário principal, o subformulário passaria a mostrar os registros relacionados ao do formulário principal.

Usando macros você pode mostrar registros relacionados de uma outra maneira. Você pode mostrar registros relacionados em dois formulários ao mesmo tempo, cada um em sua própria janela (Nos vimos um exemplo disso no formulário Fornecedores em que havia um botão Revisar Produtos). Isso nos dá a conveniência de podermos redimensionar, mover e fechar qualquer um dos formulários independentemente um do outro.

Exibir dados relacionados não é a única maneira de usar as macros para fazer seus formulários trabalharem juntos. Você pode responder a um evento ocorrido em um formulário fazendo com que algo ocorra em outro formulário.

Por exemplo, pode-se abrir um formulário, redimensioná-lo ou movê-lo, exibir ou ocultar controles e atualizar seus dados, entre outras coisas. É possível também abrir uma caixa de diálogo personalizada para coletar informações necessárias para completar uma tarefa. Por exemplo, você poderia usar uma caixa de diálogo para perguntar qual dos vários relatórios diários imprimir .

6.9.4 - Sincronizando Formulários

Suponha que você esteja observando registros relacionados em dois formulários ao mesmo tempo. Enquanto observa um cliente em um formulário Clientes, por exemplo , você também deseja ver um formulário Pedidos que mostre os pedidos do cliente selecionado no formulário Clientes.Para fazer isso, você usa uma macro que sincroniza os dois formulários. Quando a macro abre o formulário Pedidos, este mostra pedidos relacionados ao registro atual do formulário Clientes. Antes de escrever a macro você precisa decidir qual formulário controla a sincronização. Nesse caso, o formulário Clientes é o formulário controlador, porque o cliente atual determina quais pedidos serão exibidos. Então você anexa a macro ao formulário controlador. A macro abre o formulário relacionado, o formulário Pedidos, e determina quais pedidos exibir.

A ação AbrirFormulário tem dois argumentos importantes, conforme indicado na Figura a seguir,  argumentos estes que você pode usar para dizer ao Microsoft Access 2007 quais registros exibir no formulário relacionado: Nome do Filtro, que usa consultas e Condição Onde, que usa expressões. Cada argumento funciona como um filtro nos registros do formulário relacionado.

Curso completo de Access 2007 Avancado - Julio Battisti
Figura 89  – Propriedades "Nome do Filtro" e "Condição Onde".

Para usar uma consulta a fim de filtrar os registros , você define o argumento Nome do Filtro como o nome da consulta. A consulta que você especifica não substitui a tabela ou consulta que o formulário se baseia; ela simplesmente atua como um filtro sobre os registros. Você estabelece critérios, os quais irão determinar exatamente quais registros serão exibidos.

Se você usar o argumento condição onde, o critério será definido na própria macro. Você insere uma expressão no argumento Condição Onde que diz ao Microsoft Access 2007 quais registros deseja exibir.

Um bom exemplo de sincronização de formulários é o formulário Fornecedores, do Banco de Dados Northwind.mdb. Nesse formulário a macro associada ao evento Ao Clicar do botão Revisar produtos, aciona a macro indicada na Figura a seguir. Nessa macro, na ação Abrir Formulário ,nos temos a seguinte expressão na condição Onde:

Curso completo de Access 2007 Avancado - Julio Battisti 

A parte esquerda da expressão identifica o campo [Identificação do Fornecedor] na tabela Produtos, que é a origem do formulário Lista de Produtos. A parte da direita indica a Identificação do Fornecedor atual do formulário Fornecedores. A ação Abrir Formulário encontre o registro ou registros do Formulário Lista de Produtos com a mesma Identificação do Fornecedor. Por exemplo, suponha que você esteja vendo o registro da Stuart Glasson no formulário Fornecedores. A Identificação do Fornecedor da Stuart Glasson é 7. Quando você executa a macro o Microsoft Access 2010 avalia o argumento Condição Onde, sendo que a expressão fica da seguinte maneira:

  [Identificação do Fornecedor] = 7

A ação AbrirFormulário exibe os registros do formulário Lista de Produtos onde a Identificação do Fornecedor seja 7.

A parte esquerda da expressão Condição Onde identifica um campo na tabela ou consulta de origem do formulário que está sendo aberto cujo valor se iguala à parte direita da expressão, no nosso exemplo , todos os registros do formulário Lista de Produtos onde o campo Identificação do Fornecedor tiver o valor 7. Esse campo não necessita obrigatoriamente ser exibido no formulário que está sendo aberto, (embora nesse exemplo esteja sendo exibido).

Quando você passar para um registro de fornecedor diferente, no formulário Fornecedores, você pode clicar de novo no botão Revisar Produtos para ver os produtos do fornecedor. Se o formulário Lista de Produtos já estiver aberto , a ação AbrirFormulário da macro Revisar Produtos o tornará a janela ativa e exibirá os registros relacionados com a nova Identificação do Fornecedor.

Existem mais alguns detalhes que devemos observar no nosso exemplo, para garantir a perfeita sintonia entre os dois formulários em questão. O botão de comando Revisar Produtos abre o formulário Lista de Produtos e mostra os produtos do fornecedor atualmente exibido no formulário Fornecedores. É possível também fazer com que o formulário Lista de Produtos fique automaticamente sincronizado com o registro do fornecedor atual a medida que você move de registro para registro no formulário Fornecedores.

Para que possamos solucionar o problema proposto , vamos utilizar a propriedade de evento No atual do formulário fornecedores. Esse evento ocorre sempre que o foco é movido para um registro, tornando-o o registro atual do formulário ou quando os dados de origem do formulário são reconsultados . Esse evento ocorre quando um formulário é aberto pela primeira vez e sempre que o foco deixa um registro e move-se para outro. Esse é exatamente o evento que precisamos para sincronizar os dois formulários, pois o que nos desejamos, é que sempre que o registro de fornecedor mude no formulário Fornecedores, os dados exibidos pelo formulário Lista de Produtos mude para exibir os produtos relacionados com o novo fornecedor.

Sabendo qual evento devemos utilizar , só nos resta construir uma macro , a qual associaremos com esse evento , sendo que está macro será a responsável por atualizar a exibição do formulário Lista de Produtos. Essa macro terá somente duas ações, sendo que ambas possuem um teste de condição.

A primeira ação testa se o campo Identificação do Fornecedor é nulo - (É nulo [Identificação do Fornecedor])), e em caso afirmativo executa uma ação PararMacro e a execução da macro é suspensa.

A segunda ação testa se o formulário Lista de Produtos já esta carregado (EstáCarregado (“Lista de Produtos”)), e se o formulário Lista de Produtos estiver carregado, traz ele para frente e mostra o produto atual. Para garantir que o formulário Lista de Produtos exiba os produtos relacionados com o Fornecedor exibido no formulário Fornecedores, utilizamos a condição Onde com a expressão:

[Identificação do fornecedor] = [Formulários]![Fornecedores]![Identificação do Fornecedor]

A definição da macro "Mostrar Produtos Relacionados" , pode ser vista na Figura a seguir. Nos podemos notar que para o teste da primeira ação, usamos a função interna do Microsoft Access 2007 Énulo( ). Toda função no Microsoft Access 2007 possui um ou mais parâmetros, colocados entre parênteses (conforme descrito na primeira semana do treinamento). No caso da função Énulo(), ela exige um único parâmetro, que é exatamente o campo a ser testado. Para a segunda ação de macro, temos a função EstáCarregado(), que recebe como único parâmetro o nome do formulário ou relatório a ser testados se está ou não carregado. Observe que o nome do formulário vem entre aspas.
 
Curso completo de Access 2007 Avancado - Julio Battisti
Figura 90  – Exemplo Macro.

Nota: A Macro "Mostrar Produtos Relacionados" está disponível no banco de dados Northwind.mdb.

« Anterior Δ Página principal ¤ Índice Próxima »

ESTA LIÇÃO FAZ PARTE DO SEGUINTE LIVRO DO JÚLIO BATTISTI:

 

Se você não quiser aguardar até que todas as lições sejam publicadas aqui no site (previsão de conclusão para o final de 2017), você pode ter acesso a todas as lições comprando o livro a seguir e ainda receber, de bônus, mais de 37 horas de Vídeo Aulas de Access.

 

Aprenda com Júlio Battisti: Access 2007 Avançado,

Macros e Introdução à Programação VBA

  • Crie campos calculados, critérios avançados e Consultas Parametrizadas.

  • Aprenda os comandos SQL em detalhes.

  • Criação e Utilização de Macros.

  • Configurações de Segurança do Banco de dados.

  • Exemplos práticos explicados passo a passo.

  • Introdução à programação VBA com exemplos.

  • BôNUS: 37,5 horas de Vídeo Aulas de Excel e Acc.ess +  DVD com 3167 E-books + 2400 Planilhas Profissionais Editáveis do Excel de bônus.

Aprenda com Júlio Battisti: Access 2007 Avançado, Macros e Introdução à Programação VBA

Aprenda com Júlio Battisti: Access 2007 Avançado, Macros e Introdução à Programação VBA

Na compra deste livro você recebe, via Download, todos os Bônus a Seguir:

  • Bônus 01: Vídeo Aula: Access 2007 - Básico e Prático - 5:30 horas

  • Bônus 02: Vídeo Aula: Access 2007 - Consultas - 4:30 horas

  • Bônus 03: Vídeo Aula: Access 2007 - Intermediário - 5:00 horas

  • Bônus 04: Vídeo Aula: Access 2007 - Formulários e Macros - 6:00 horas

  • Bônus 05: Vídeo Aula: Access 2007 - Avançado e VBA - 11:30 horas

  • Bônus 06: Pacote com 3167 E-books com Cursos de Informática.


Livros e Vídeo Aulas sobre Banco de Dados:

A Bíblia de Banco de Dados SQL e o Modelo Relacional de Dados

Apre.nda com Júlio Battisti: Acc.ess 2010 Avançado, Macros e Programação VBA - Passo a Passo

Apre.nda com Júlio Battisti: Banco de Dados e Acc.ess 2010 - Através de Exemplos Práticos - Passo a Passo

[186 Vídeo Aulas em 3 DVDs - Frete Grátis]: Linguagem SQL + Banco de Dados + Análise e Modelagem de Banco de Dados - Curso Completo - 186 Vídeo Aulas - 3 DVDs

  [Vídeo Aula - Frete Grátis:] Oracle PL SQL Procedures Functions Triggers Forms Reports - Curso Completo - 182 Vídeo Aulas - 3 DVDs

Best Sellers de Access do Julio Battisti

Todos com Vídeo Aulas, E-books ou Exemplos de Brinde!

Programação VBA no Access 2010 - Exemplos Práticos - Passo a Passo

 Aprenda com Júlio Battisti: Access 2010 Básico em 140 Lições - Através de Exemplos Práticos

 

Autor: Júlio Battisti | Páginas: 1164 | Editora: Instituto Alpha

 

[Livro]: Aprenda com Júlio Battisti: Access 2010 Básico em 140 Lições - Através de Exemplos Práticos

Access 2010 Avançado, Macros e Programação VBA - Passo a Passo

Livro: Aprenda com Júlio Battisti: Access 2010 Avançado, Análise de Dados, Tabelas Dinâmicas, Funções Avançadas, Macros e Programação VBA - Passo a Passo

 

Autor: Júlio Battisti | Páginas: 828 | Editora: Instituto Alpha

 

Livro: Aprenda com Júlio Battisti: Access 2010 Avançado, Análise de Dados, Tabelas Dinâmicas, Funções Avançadas, Macros e Programação VBA - Passo a Passo

Todos os livros com dezenas de horas de vídeo aulas de bônus, preço especial (alguns com 50% de desconto). Aproveite. São poucas unidades de cada livro e por tempo limitado.

Dúvidas?

Utilize a área de comentários a seguir.

Me ajude a divulgar este conteúdo gratuito!

Use a área de comentários a seguir, diga o que achou desta lição, o que está achando do curso.
Compartilhe no Facebook, no Google+, Twitter e Pinterest.

Indique para seus amigos. Quanto mais comentários forem feitos, mais lições serão publicadas.

Quer receber novidades e e-books gratuitos?
›››

Novidades e E-books grátis

Fique por dentro das novidades, lançamento de livros, cursos, e-books e vídeo-aulas, e receba ofertas de e-books e vídeo-aulas gratuitas para download.



Institucional

  • Quem somos
  • Garantia de Entrega
  • Formas de Pagamento
  • Contato
  • O Autor
  • Endereço

  • Júlio Battisti Livros e Cursos Ltda
  • CNPJ: 08.916.484/0001-25
  • Rua Vereador Ivo Cláudio Weigel, 537 Universitário
  • Santa Cruz do Sul/RS
  • CEP 96816-208
  • Todos os direitos reservados, Júlio Battisti 2001-2017 ®

    [LIVRO]: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2010 - PASSO-A-PASSO

    APRENDA COM JULIO BATTISTI - 1124 PÁGINAS: CLIQUE AQUI