Sie sind auf Seite 1von 3

USANDO ACCESS – 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.

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.

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:


ComboSinc.zip
Bom estudo!

Das könnte Ihnen auch gefallen