Universidade do Access - Curso Completo - Do Básico Até a Criação de Sistemas Profissionais Completos - Passo a Passo
FORMAÇÃO ONLINE COM CERTIFICADO - 13 CURSOS - 574 VÍDEO-AULAS - 63:32 HORAS - CLIQUE AQUI
Você está em: PrincipalArtigosOffice : Access_caixas_p5
Quer receber novidades e e-books gratuitos?

Tudo Sobre Caixas de Combinação no Access - Parte 5
 
Objetivos:

Esta é a Parte 5 de uma série de tutoriais sobre o uso de Caixas de Combinação em Formulários do Access. Nesta série de tutoriais você aprenderá sobre a criação, configuração e uso de controles do tipo Caixa de combinação, em formulários do Access. Você aprenderá desde a criação destes controles, até operações mais sofisticadas, tais como a sincronização entre duas ou mais caixas de combinação.

Nesta parte do tutorial continuaremos com a criação do exemplo proposto na Parte 3. Nesta parte do tutorial, mostrarei como fazer a sincronização entre as duas caixas de combinação e a sincronização entre a segunda caixa de combinação e o formulário principal.

Pré-requisitos: Para acompanhar esta lição você deve dominar os conceitos apresentados no seguintes treinamentos: " Curso Básico de Access" e “Curso de Access Avançado e VBA”. .

Nota : Este tutorial faz parte do Curso: Tudo Sobre Formulários no Access – 328 páginas. Este curso terá seis módulos, com 20 lições por módulo o qual está disponível para aquisição, por apenas R$ 20,00 para envio através de Download ou por R$ 30,00 para envio através de CD. Para saber como adquirir este curso, Clique Aqui .

Sincronizando as Caixas de Combinação

Bem, até agora foi fácil, nada de novidades. Ou seja, criamos uma consulta, depois um formulário baseado na consulta e adicionamos e configuramos dois controles do tipo Caixa de Combinação. Nada de novo. Nesta parte do tutorial é que vem as novidades e que iremos criar a chamada “lógica do formulário”.

A primeira configuração a fazer é o sincronismo entre as duas caixas de combinação. Ou seja, ao selecionar um país na lista de países, a lista de Clientes deve ser atualizada, para exibir apenas os clientes para o país selecionado. Você verá que é extremamente simples fazer esta implementação.

Lógica para a sincronização entre as duas listas:

  • O valor selecionado no controle ListaDePaises será utilizado como um filtro para o controle ListaDeClientes.
  • Vamos inserir este filtro, configurando a propriedade Origem da linha, do controle ListaDeClientes.
  • O próximo passo é fazer com que o controle seja atualizado, toda vez que um país for selecionado na lista. Toda vez que um país é selecionado na lista de países, é disparado o evento Após atualizar, da caixa de combinação. Vamos utilizar este evento, para inserir o comando VBA que atualiza a lista de clientes, com base no novo valor selecionado na lista de paises.
  • Vamos a implementação. Você verá que é ainda mais fácil implementar do que explicar.

Passo 5: Fazer as configurações necessárias, para que, ao selecionar um país, na lista de países, sejam exibidos somente os clientes do respectivo país, na lista de clientes.

  1. Abra o formulário Totais por Pedido no modo estrutura.
  2. Clique com o botão direito do mouse na caixa de combinação ListaDeClientes.
  3. No menu de opções que é exibido, clique em propriedades.
  4. Clique na propriedade Origem da linha. Será exibido o botão (). Clique neste botão para alterar os dados que são exibidos na Caixa de combinação.
  5. Será exibida uma janela para que você defina quais campos serão exibidos na Caixa de combinação. Nesta janela é que vamos definir o valor selecionado na lista de países, como um critério de filtragem para a lista de clientes.
  6. Adicione o campo País e desmarque a opção Mostrar para a coluna do campo País. Isso é feito porque não queremos exibir o campo País. Vamos apenas utilizá-lo como um critério de filtragem.
  7. Na linha Critério, da coluna País, digite o seguinte:

[ListaDePaises]

  1. Com isso estou definindo que o valor selecionado na caixa de combinação ListaDePaises, será utilizado como critério de filtragem para a lista de clientes. Como ListaDePaises é um nome de um controle do formulário, este nome deve vir entre colchetes.
  2. Sua janela deve estar conforme indicado na Figura a seguir:

  1. Vamos fechar a janela de configuração da lista, sem criar uma nova consulta. Nunca salve essa consulta, pois se você fizer isso, irá gerar uma nova consulta desnecessariamente. Ao invés disso vamos gravar somente o comando SQL. Para isso clique no botão com o x (x mais de baixo, pois o de cima irá fechar o Microsoft Access). O Microsoft Access irá perguntar se você deseja salvar a Instrução SQL, dê um clique em Sim e pronto a propriedade Origem do controle já está alterada para não exibir valores repetidos e classificada em ordem crescente e você voltará a janela de propriedades da caixa de combinação.
  2. Agora vamos configurar o controle ListaDePaises, para atualizar o controle ListaDeClientes, sempre que um novo país for selecionado no controle ListaDePaises.
  3. Feche as propriedades do controle ListaDeClientes.
  4. Abra as propriedades do controle ListaDePaises.
  5. Clique na guia Evento.
  6. Clique no evento Após atualizar.
  7. Será exibido o botão (). Clique neste botão. Na janela de opções que é exibida clique em Construtor de código e clique em OK.
  8. Será aberta a Editor do VBA, o qual você aprendeu a utilizar no curso de Access Avançado e VBA.
  9. Observe que a estrutura para o evento Após atualizar já é criada automaticamente:

Private Sub ListaDePaises_AfterUpdate()

End Sub

  1. Tudo o que precisamos é uma única linha de código VBA, para que a lista de clientes seja atualizada. Para isso, basta utilizar o método Requery, do controle ListaDeClientes. Ou seja, toda vez que um novo país for selecionado, na lista de paises, o evento Após atualizar do controle ListaDePaises será disparado. Em resposta a este evento, será executado o método Requery, do controle ListaDeClientes. O método Requery atualiza o controle ListaDeClientes, usando o país selecionado na lista de paises, como critério de filtragem. É isso.
  2. Insira a linha de código indicada a seguir:

Private Sub ListaDePaises_AfterUpdate()

Me![ListaDeClientes].Requery

End Sub

  1. Clique no botão () para salvar o código VBA,
  2. Pressione Alt+Q, para fechar a janela de código e voltar ao formulário.
  3. Ainda temos que fazer pequenos ajustes para que as duas listas funcionem corretamente. Ao abrir o formulário, são exibidos todos os clientes. Ao selecionar um país, o primeiro cliente da lista, continuará sendo exibido, mesmo que ele não seja do país selecionado. Vamos inserir código para corrigir este problema.
  4. Acesse as propriedades do controle ListaDePaises e clique na guia Evento.
  5. Clique no evento Ao clicar.
  6. Será exibido o botão (). Clique neste botão. Na janela de opções que é exibida clique em Construtor de código e clique em OK.
  7. Digite o código indicado a seguir:

Private Sub ListaDePaises_Click()

Me![ListaDeClientes] = Null

End Sub

  1. Clique no botão () para salvar o código VBA,
  2. Pressione Alt+Q, para fechar a janela de código e voltar ao formulário.
  3. Agora é hora de testarmos o funcionamento das duas listas, ou seja, ao selecionar um país na lista, devem ser exibidos somente os paises para o respectivo cliente.
  4. Vá para o modo Formulário.
  5. Na lista de paises selecione. Bélgica.
  6. Abra a lista de clientes. Observe que são exibidos apenas os dois clientes da Bélgica, conforme indicado na figura a seguir:

  1. Vamos fazer mais um teste.
  2. Selecione Brasil, na lista de paises.
  3. Abra a lista de clientes e observe que são exibidos somente os clientes para o Brasil, conforme indicado na Figura a seguir:

Estamos quase lá. Falta pouco. O último passo é fazer com que sejam exibidos apenas os pedidos para o cliente selecionado na lista de clientes. O raciocínio é idêntico ao utilizado para a sincronização entre as listas de paises e de clientes. Vamos usar o valor selecionado na lista de clientes, como filtro para a consulta Totais por Pedido, consulta esta na qual é baseado o formulário. E vamos configurar o evento Após atualizar, da lista de clientes, para que execute o método Requery do formulário. Ou seja, sempre que um novo cliente for selecionado na lista de clientes, este cliente será utilizado como critério de filtragem para a consulta Totais por Pedido e o método Requery irá atualizar o formulário, fazendo com que sejam exibidos apenas os pedidos para o cliente selecionado. É isso. Vamos a implementação prática desta última etapa.

Passo 6: Fazer as configurações necessárias, para que, ao selecionar um cliente, na lista de clientes, sejam exibidos somente os pedidos para o cliente selecionado.

  1. Abra a consulta Totais por Pedido, no modo estrutura.
  2. Na linha critério, do campo CódigoDoCliente, digite a seguinte expressão:

[Formulários]![Totais por Pedido]![ListaDeClientes]

  1. Esta expressão deve ser lida de trás para frente, ou seja: O valor do campo ListaDeClientes, do formulário Totais por Pedido. Em outras palavras, estamos informando ao Access, que o valor selecionado no controle ListaDeClientes, do formulário TotaisPorPedido, deve ser utilizado como critério de filtragem, para a consulta Totais por Pedido.
  2. Salve a consulta.
  3. Abra o Formulário Totais por Pedido no modo Estrutura.
  4. Acesse as propriedades do controle ListaDeClientes.
  5. Clique na guia Evento.
  6. Clique no evento Após atualizar.
  7. Será exibido o botão (). Clique neste botão. Na janela de opções que é exibida clique em Construtor de código e clique em OK.
  8. Será aberta a Editor do VBA, o qual você aprendeu a utilizar no curso de Access Avançado e VBA.
  9. Observe que a estrutura para o evento Após atualizar já é criada automaticamente.
  10. Tudo o que precisamos são duas linhas de código VBA, para que a lista de pedidos do formulário seja atualizada. Para isso, basta utilizar o método Requery, do formulário. Ou seja, toda vez que um novo cliente for selecionado, na lista de clientes, o evento Após atualizar do controle ListaDeClientes será disparado. Em resposta a este evento, será executado o método Requery, do formulário. O método Requery executa novamente a consulta na qual o formulário é baseado, exibindo apenas os pedidos para o cliente selecionado. Após o método Requery, usamos o método Refresh, para atualizar a visualização do formulário. É isso.
  11. Insira a linha de código indicada a seguir:

Private Sub ListaDePaises_AfterUpdate()

Me.Requery

Me.Refresh

End Sub

  1. Clique no botão () para salvar o código VBA,
  2. Pressione Alt+Q, para fechar a janela de código e voltar ao formulário.
  3. Agora vamos testar o funcionamento do nosso formulário.
  4. Vá para o modo formulário.
  5. Selecione Bélgica na lista de países.
  6. Na lista de clientes, serão exibidos apenas os clientes para a Bélgica. Selecione o cliente Maison Dewey. Observe que serão exibidos apenas os pedidos para este cliente, conforme indicado na figura a seguir:

  1. Vamos fazer mais um teste. Na lista de paises selecione Portugal. Abra a lista de clientes. Observe que serão exibidos apenas os clientes para Portugal. Selecione o primeiro cliente da lista. Serão exibidos apenas os pedidos para o cliente selecionado, conforme indicado na figura a seguir:

  1. Muito bem, isso comprova que o exemplo proposto está funcionando, sem problemas. Observe que apenas com a configuração de algumas propriedades e com uma ou duas linhas de código VBA, conseguimos implementar um exemplo bastante funcional.
  2. Salve e feche o formulário Totais por Pedido.

Conclusão:

Nesta parte do tutorial, finalizamos a resolução do Exemplo proposto na Parte 3. O amigo leitor pode notar como, com umas poucas linhas de código VBA, foi possível fazer verdadeiros milagres.

Uma nota sobre VBA : Eu ainda recebo muitos e-mails de leitores que dizem que não querem nem saber de VBA, que para tudo tem que ter uma fórmula ou função, enfim, infelizmente leitores focados na lei do menor esforço, estudar o menos possível. O que temos que entender é que não existem milagres em Informática. As fórmulas, funções e macros vão até um limite. Para problemas mais complexos, só mesmo a programação VBA, não tem jeito. Não existe uma fórmula ou função mágica para resolver todo e qualquer problema. Aprender programação exige esforço, estudo e dedicação. Mas aí eu pergunto: “Que resultados podemos obter sem esforço, estudo e dedicação???”. Só mesmo esperar por um milagre e estes não existem em informática.




você conhece a universidade do access?

Universidade do Access - Curso Completo de Access
com tudo para você dominar o Access - do Básico ao
Avançado - até a Criação de Sistemas Profissionais
Completos - Passo a Passo - Tela a Tela

Capa da Universidade do Access

Aplica-se ao Access 2019, 2016, 2013 e 2010!

13 Cursos - 574 Vídeo-Aulas - 63:32 horas

Para todos os detalhes, acesse:

https://juliobattisti.com.br/universidade-do-access.asp


Quer receber novidades e e-books gratuitos?

 
 

Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

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-2024 ®

LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO

DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI