Avaliação do Usuário

Estrela ativaEstrela ativaEstrela ativaEstrela ativaEstrela ativa
 

{ads1}

CAMPOS DO FORMULÁRIO

Para que possamos realizar a filtragem dos dados vamos inserir duas caixas de combinação e uma caixa de listagem no nosso formulário, que poderão ser posicionadas de acordo com a imagem anterior.

As propriedades dos campos deverão obedecer às seguintes características:

Caixa de Combinação do País

Nome: cbxPais
Tipo de Origem da Linha: Tabela/Consulta
Origem da Linha: SELECT Cidade.pais FROM Cidade GROUP BY Cidade.pais ORDER BY Cidade.pais;
Valor Padrão: "Escolha um País"

Veja que o código SQL da propriedade Origem da Linha, o qual realiza a busca dos paises da tabela Cidade, está agrupando os dados pelo campo pais. Isto fará com que não sejam exibidos paises repetidos em nossa caixa de combinação.

Caixa de Combinação do Estado

Nome: cbxEstado
Tipo de Origem da Linha: Tabela/Consulta
Origem da Linha: SELECT Cidade.estado FROM Cidade GROUP BY Cidade.estado, Cidade.pais HAVING (((Cidade.pais)=[Formulários]![FCascata]![cbxPais])) ORDER BY Cidade.estado;
Valor Padrão: "Escolha um Estado"

Veja que no código SQL da propriedade Origem da Linha o critério para preenchimento dos dados está baseado no campo cbxPais do formulário FCascata:

HAVING (((Cidade.pais)=[Formulários]![FCascata]![cbxPais]))

Este critério será o responsável por filtrar os estados de acordo com o país escolhido anteriormente. Além disso o código está agrupando os estados e países para evitar exibir dados duplicados no momento da escolha.

Caixa de Listagem da Cidade

Nome: lstCidade
Tipo de Origem da Linha: Tabela/Consulta
Origem da Linha: SELECT Cidade.codCidade, Cidade.nomeCidade AS Cidade, Cidade.estado AS Estado, Cidade.pais AS País FROM Cidade WHERE (((Cidade.estado)=[Formulários]![FCascata]![cbxEstado])) ORDER BY Cidade.nomeCidade;
Coluna Acoplada: 1
Número de Colunas: 4
Larguras das Colunas: 0cm;5cm;4cm;3cm
Cabeçalhos das Colunas: Sim
Largura: 12cm

Perceba que o código SQL responsável por buscar os dados das cidades utiliza como critério o estado escolhido no campo cbxEstado do formulário FCascata:

WHERE (((Cidade.estado)=[Formulários]![FCascata]![cbxEstado]))

A caixa de listagem também apresenta os dados completos de cada cidade, com exceção do código, cuja coluna fica oculta (0cm) durante a exibição. Entretanto ao escolher uma cidade na lista, na verdade estamos escolhendo o seu código, pois o campo codCidade é que está na posição da coluna acoplada da caixa de listagem.

CODIFICAÇÃO DOS CAMPOS

Até o momento criamos a tabela, o formulário e os campos caixa de combinação e caixa de listagem que exibirão os dados. Contudo as propriedades que ajustamos nos campos estão prontas apenas para exibir os valores iniciais, ou seja, aqueles escolhidos ao abirmos o formulário.

Assim, para que o nosso filtro em cascata funcione devemo incluir os códigos que farão a atualização dos dados no momento em que escolhermos algum novo valor no campo País ou no campo Estado.
Primeiramente vamos inserir o código que será acionado ao escolhermos um novo país. Este código fará a atualização da origem de dados do campo cbxEstado, incluindo também o texto "Escolha um Estado" novamente no campo, além de atualizar a origem dos dados do campo lstCidade.

O código abaixo deverá ser inserido no evento Após Atualizar do campo cbxPais:

Private Sub cbxPais_AfterUpdate()
 
 'Atualizando a listagem
 'de estados
 cbxEstado.Requery
 
 'Reajustando o valor do campo
 'para solicitar a escolha
 'de um estado
 cbxEstado = "Escolha um Estado"
 
 'Atualizando a listagem
 'de cidades
 lstCidade.Requery
 
End Sub


Em seguida vamos codificar o procedimento que fará a atualização das cidades após escolhermos um estado. Este código será responsável pelo preenchimento da caixa de listagem, de acordo com o valor atual do campo Estado.

O código deverá ser inserido no evento Após Atualizar do campo cbxEstado:

Private Sub cbxEstado_AfterUpdate()
 
 'Atualizando a listagem
 'de cidades
 lstCidade.Requery
 
End Sub


O exemplo criado neste artigo estará disponível na seção de downloads do Mabesi.com para que você possa estudar sua implementação, apesar de ser um aplicativo bem simples. O recomendado é que você tente montá-lo apenas seguindo as instruções, pois assim o aprendizado será muito mais eficiente.

Exemplo para download: FiltroCascata.zip

Por favor, caso tenham dúvidas a respeito desta implementação ou da utilização desta abordagem em seu sistema em particular, crie um tópico em nosso fórum. Esta é a maneira mais adequada de conseguir ajuda de nossos millhares de usuários.

Mais uma vez obrigado pela visita e continue conosco!
Não se esqueça de comentar e compartilhar o artigo nas redes sociais... 

Seja social. Compartilhe!