Ir ao conteúdo

Posts recomendados

Postado

Bom dia/tarde/noite,

 

Estou aos poucos desenvolvendo meu sisteminha aqui. Fiz uma caixa de combinação com os dados que se encontram no meu banco de dados no access, no caso aqui, cidade, estado e CEP, mas como a maior parte das cidades nao são CEP unico, acaba se repetindo as cidades e estados nas listas do banco de dados. como faço para nao mostrar repetido nas combobox?

 

Logo a baixo está o codigo usado para carregar as combo box. coloquei a call das macros no initialize do formulario

Sub Carrega_CEP()
ConectDB
    rs.Open "select * FROM tb_cep order by Codigo", db, 3, 3
    
    Do Until rs.EOF
    Me.ComboBox_Cep.AddItem rs!Codigo
    rs.MoveNext
    Loop
    FechaDb
End Sub

Sub Carrega_Estado()
ConectDB
    rs.Open "select * FROM tb_cep order by UF", db, 3, 3
    
    Do Until rs.EOF
    Me.ComboBox_Estado.AddItem rs!UF
    rs.MoveNext
    Loop
FechaDb
End Sub

Sub Carrega_Cidade()
ConectDB
    rs.Open "select * FROM tb_cep order by Cidade", db, 3, 3
    
    Do Until rs.EOF
    Me.ComboBox_Cidade.AddItem rs!Cidade
    rs.MoveNext
    Loop
FechaDb
    
End Sub

 

 

 

tela.png

 

Postado

Pelo código do SQL em Sub Carrega_Estado() vai trazer uma linha pra cada registro na tabela de cep... se tiver 5000 registros vai gerar um combo com 5000 registros duplicando... o mesmo vai ocorrer no combo de cidade

 

 A solução elegante.. é ter uma tabela de CEP, uma tabela de cidades e uma tabela de estados... na tabela de CEP você só grava a cidade... na tabela de cidade teria uma chave para a tabela de estado.. e cada combo carregaria a tabela correspondente, embora não aconselho um combo pra cidade pois terá muitos registros...

 

Ficaria assim + ou -:

 

tb_estado: id_estado, nome_estado

tb_cidade: id_cidade, nome_cidade, id_estado (FK de tb_estado)

tb_cep: id_cep, cep, id_cidade

 

 

Solução Pratica:

select distinct UF  FROM tb_cep order by UF , você tira o * que traz todos os campos e traz só a UF usando Distinct para que não se repitam... 

 

  • Curtir 1
Postado
6 minutos atrás, bngomes disse:

Pelo código do SQL em Sub Carrega_Estado() vai trazer uma linha pra cada registro na tabela de cep... se tiver 5000 registros vai gerar um combo com 5000 registros duplicando... o mesmo vai ocorrer no combo de cidade

 

 A solução elegante.. é ter uma tabela de CEP, uma tabela de cidades e uma tabela de estados... na tabela de CEP você só grava a cidade... na tabela de cidade teria uma chave para a tabela de estado.. e cada combo carregaria a tabela correspondente, embora não aconselho um combo pra cidade pois terá muitos registros...

 

Ficaria assim + ou -:

 

tb_estado: id_estado, nome_estado

tb_cidade: id_cidade, nome_cidade, id_estado (FK de tb_estado)

tb_cep: id_cep, cep, id_cidade

 

 

Solução Pratica:

select distinct UF  FROM tb_cep order by UF , você tira o * que traz todos os campos e traz só a UF usando Distinct para que não se repitam... 

 

Funcionou perfeitamente amigo, obrigado

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...