... Assinatura do site por 3 anos + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$145,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Combobox/Listbox dependentes

Para se criar Combobox/Listbox dependentes é preciso que haja um campo comum entre as mesmas.  Como exemplo, observe na figura abaixo, o relacionamento entre as tabelas tblEstados e tblCidades, em que o campo comum é o idEstado.  Este campo, que é do tipo numeração automática, identifica de forma exclusiva, o Estado cadastrado.  Na tabela tblCidades, o campo idEstado permite identificar quais cidades pertencem a um determinado estado.

Usando Access - relacionamento Um para Muitos

Para melhor compreensão, imagine o primeiro cadastro na tabela tblEstados sendo a cidade de São Paulo.  O campo idEstado receberá automaticamente o número 1.  Ao lançar as cidades de São Paulo na tabela tblCidades, bastará indicar no campo IdEstado o valor 1 para associar que as cidades cadastradas  pertencem ao estado de São Paulo. 

Ao lançar a segunda cidade na tabela tblEstados, por exemplo - Rio de Janeiro, automaticamente idEstado receberá o número 2.  Ao acrescentar as cidade na tabela tblCidades, pertencentes ao estado do Rio de Janeiro, bastará informar o número 2.  Assim, teremos a seguinte lista de cadastros:

tblEstados:

1 | São Paulo

2 | Rio de Janeiro

tblCidades:

1 | Campinas

1 | Campos do Jordão

1 | São Caetano

2 | Duque de Caxias

2 | São Gonçalo

No exemplo fornecido, a primeira Combobox lista os estados e a segunda Combobox lista as cidades.  A segunda Combobox, que lista as cidades, será dependente da informação da primeira Combobox, ou seja, o usuário deverá selecionar o Estado para que a segunda Combobox liste apenas as cidades do estado selecionado. 

Ao selecionar o estado na primeira Combobox, temos a informação do campo idEstado, que identifica o Estado de forma exclusiva. 

O campo idEstado está oculto nas Combobox, pois não faz sentido para o usuário a visualização deste.  Usamos então, a técnica de esconder a coluna, conforme apresentado na Dica 47 acima.

Usando Access - combobox dependente

Usamos o evento Após atualizar da primeira Combobox para montagem da consulta, origem da segunda Combobox.  Para filtragem usamos o campo idEstado que é comum as duas tabelas e  assim sendo, podemos identificar de forma exclusiva as cidades pertencentes ao estado selecionado.  Observe bem, os comentários no código abaixo:

Private Sub cboEstado_AfterUpdate()
Dim strSql as string
'---------------------------------------------------------------------------
'Montando a consulta filtrada da segunda Combobox, que lista as cidades.
'Observe que a filtragem é feita pela campo idEstado, comum as duas tabelas.
'Observe que o campo idEstado da Combobox Estado está sendo extraído da
'primeira coluna, que começa do ZERO(0).
'A função nz() retorna o valor 0, caso não tenha sido selecionado o Estado
'na primeira Combobox e assim, a segunda Combobox, apresentará uma lista vazia.
'---------------------------------------------------------------------------
rSql = "SELECT idEstado,Cidade,População FROM tblCidades "
strSql = strSql & "WHERE idEstado = " & Nz(Me!cboEstado.Column(0), 0)
 
'----------------------------------------------------------------
'Carregando a consulta filtrada na Combobox que lista as cidades
Me!cboCidade.RowSource = strSql 
'----------------------------------------------------------------
Me!cboCidade.SetFocus 'Combobox das cidades recebe o foco
Me!cboCidade.Dropdown 'Abre automaticamente a lista

End Sub

Segue o arquivo exemplo para você praticar e estudar as linhas de código:

Bom estudo!


 

 


2 comentário(s)

Ferracine   16/02/2017 05:08:52

A dica é muito bacana, porém, estou tendo problemas no armazenamento de valor no campo, por exemplo, crei a tabela (folha de dados) onde nessa tabela as combos com os mesmos nomes do exemplo e colunas, meu objetivo é armazenar vários registros. No primeiro registro da certo quando seleciono Estado e Cidade, mas nos próximos registros da tabela o negócio fica maluco, eu seleciono o Estado de SP e ele me retorna a lista normal das cidades, e quando seleciono uma cidade de SP ele armazena uma cidade do RJ. O que eu fiz de errado?

Ferracine   16/02/2017 05:10:58

A dica é muito bacana, porém, estou tendo problemas no armazenamento de valor no campo, por exemplo, crei a tabela tblITENS (folha de dados) onde nessa tabela criei as combos com os mesmos nomes do exemplo e colunas, meu objetivo é armazenar vários registros. No primeiro registro da certo quando seleciono Estado e Cidade, mas nos próximos registros da tabela o negócio fica maluco, eu seleciono o Estado de SP e ele me retorna a lista normal das cidades, e quando seleciono uma cidade de SP ele armazena uma cidade do RJ. O que eu fiz de errado?


Envie seu comentário: