bollywood actresses hair loss hair rehab london contact number cheap hair extensions brazilian curly hair with closure hair extension fails human hair wigs black ponytail hairstyles 2018 sunny hair extensions uk hair extensions remy hair extensions weft koko one piece hair extensions clip hair
Combobox/Listbox dependentes
Combobox/Listbox dependentes

Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 2x no Cartão de Crédito. 

Veja como comprar e saiba mais sobre o material oferecido,  clicando aqui.

Open v3

 

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!


 

 


3 comentário(s)

Eriston Mattos   03/01/2024 07:31:20

Mestre Avelino, como fazer isso funcionar em um subformulário contínuo no formulário?

Ressaltando que não funciona se eu alterar o ex para:

Formulário: frmTeste (com outros campos)
Subformulário contínuo: frmTesteSub com os campos Estado e Cidade:

usar uma consulta na "Origem da Linha" do campo Cidade, onde eu colocaria
[Formulários]![frmTeste]![frmTesteSub]![Estado] no critério do campo Estado

Só funciona até o segundo item do subformulário contínuo, depois as Cidades somem após atualizar o campo Estado.

Conhece outra forma para subformulários contínuos em formulários, sem ser:
[Formulários]![frmTeste]![frmTesteSub]![Estado]?

Att,

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?

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?


Envie seu comentário: