Consultando CEP utilizando componente ACBrCEP
Vamos fazer uma aplicação simples para consulta de CEP de uma maneira bem simples sem utilizar banco de dados dos correis ultrapassado ou como já vi por ai deixar o banco de dados sobre carregado com todas cidades e bairros cadastrados.
Vamos utilizar o componente AcBrCEP, com esse componente podemos consumir um WebServices disponível na Internet para consultar endereços completos.
Vamos utilizar:
- 7 - TEdit "para exibirmos o resultado da consulta"
- 6 - TLabel "para identificar os campos"
- 1 - TACBrCEP
Existem várias opções de WebServices de pesquisa para CEP eu normalmente utilizo wsRepublicaVirtual onde automaticamente será preenchida a propriedade URL com o respectivo endereço.
Agora para fazer a consulta no componente que acabamos de configurar vamos colocar no OnExit do campo do dbedCEP (O TEdit que e preenchido o CEP ) o seguinte código;
procedure TFCEP.dbedCEPExit(Sender: TObject); begin if Trim(dbedCEP.Text) <> EmptyStr then ACBrCEP.BuscarPorCEP(dbedCEP.Text); end;
Vamos pegar o retorno do WebService e jogar para nossos TEdit:
procedure TFCEP.ACBrCEPBuscaEfetuada(Sender: TObject); var li : integer; begin if Trim(dbedCEP.Text) <> EmptyStr then begin for li := 0 to ACBrCEP.Enderecos.Count - 1 do begin dbedbairro.Text := ACBrCEP.Enderecos[li].Bairro; dbedCidade.Text := ACBrCEP.Enderecos[li].Municipio; edUF.Text := ACBrCEP.Enderecos[li].UF; dbedTipo.Text := ACBrCEP.Enderecos[li].Tipo_Logradouro; dbedt_endereco.Text := ACBrCEP.Enderecos[li].Logradouro; dbedt_referencia.Text := ACBrCEP.Enderecos[li].Complemento; end; end; end;
O resultado é o seguinte
Meu muito obrigado, nunca pensei que fosse fácil assim resgatar as informações de Cep. É, tem que conhecer os componentes bem a fundo só assim para se tornar fácil. Obrigado mesmo.
ResponderExcluirFico feliz por ter ajudado. :)
ExcluirHa varias formas de fazer a consulta de CEP alguns programadores mantem um banco de dados com todos os CEPs cadastrados e fazem a pesquisa outros consulto direto do site mas esse com o componente do ACBr acho que é um dos melhores modos de fazer essa consulta e retornar todos os campo corretos.
ResponderExcluirCerto, tenho uma Base aqui de Cep, mas é antiga. Pretendo consultar no Banco e caso não encontre o Cep, faço a Busca no Site e aí gravo a informação no Banco.
ExcluirOpa olha eu denovo kkk.
ResponderExcluirSeguindo o exemplo, coloquei um botão para fechar o form, e ai clicar nele dá a mensagem de que o Cep deve ser informado.
Coloquei ao final do código: ACBrCEP.Free para ver se era isso, mesmo assim continua com a mensagem. Teria alguma dica de como resolver isso? Mais uma vez, meu muito obrigado.
Será que essa mensagem não esta aparecendo ao sair do campo do CEP? Ao sair da tela não teria o porque fazer a validação se existe o CEP.
ExcluirEstou fazendo desta forma:
ResponderExcluirprocedure TForm1.ACBrCEPBuscaEfetuada(Sender: TObject);
var I: Integer;
begin
try
for I := 0 to ACBrCEP.Enderecos.Count -1 do
begin
EdtCep.Text := ACBrCEP.Enderecos[I].CEP;
EdtTipo.Text := ACBrCEP.Enderecos[I].Tipo_Logradouro;
EdtLogradouro.Text := ACBrCEP.Enderecos[I].Logradouro;
EdtBairro.Text := ACBrCEP.Enderecos[I].Bairro;
EdtCidade.Text := ACBrCEP.Enderecos[I].Municipio;
EdtUF.Text := ACBrCEP.Enderecos[I].UF;
EdtNumero.SetFocus;
end;
finally
ACBrCEP.Free;
end;
end;
Boa Noite! O componente "ACBrCEP" esta sendo criado em tempo de execução? Se não tiver tem que ser removido a linha "ACBrCEP.Free" pois senão vai dar erro na segunda tentativa.
ExcluirOlá bom dia eu de novo estou usando Delphi XE5 e nos meus testes aqui, a consulta funciona perfeitamente.
ResponderExcluirProblemas:
1 - Ao abrir o form e em seguida clicar no botão sair ou tentar mudar de campo ele me dá a mensagem: Cep Deve ser informado. Se clicar no X do form ele fecha normalmente.
2 - Ao efetuar uma consulta de Cep e logo em seguida tentar consultar outro Cep me dá Access Violation.
Teria uma dica de como solucionar estes problemas? Desde já obrigado pela atenção.
Boa Noite! Acredito que o problema esta na linha "ACBrCEP.Free" pois esta finalizando um componente que não esta sendo recriado...
ExcluirPeço desculpas pela ignorância, eu tinha programado no evendo onexit do componente, Comentei a linha e funcionou, não dá o primeiro erro. Mas o erro 2 ainda persiste, se consultar um cep e logo em seguinda consultar outro sem ter saido do form ele dá access violation.
ResponderExcluirO access violation acontece pois você esta dando um free no componente e depois tenta utilizar novamente;
ExcluirO free poderia ser utilizada no OnDestroy do formulário (Se bem que não é necessário eliminar o componente pois o formulário que faz isso)
Bom dia, como faço para instalar o componente ACBrCEP, baixei o compomente mais da erro ao abrir CEPTeste1
ResponderExcluirerro: Class TACBrCEP not found e TACBrIBGE
A instalação do ACBrCEP é bem simples esta nesse link
Excluirhttp://anaprogramadorajunior.blogspot.com.br/2015/08/componente-acbrcep.html
Ficou perfeito amigo que sua luz brilhe cada vez mais
ResponderExcluirObrigada!
ExcluirBoa noite faltando o componente RzDBCmbo para instalar
ResponderExcluirBoa tarde! Pode remover das uses, esse componente não esta sendo usado nessa aplicação
Excluir