none
Inserir CEP em uma TextBox e ir no banco e trazer o Endereço,bairro e cidade RRS feed

  • Discussão Geral

  • Olá a todos,

    Espero que me consigam ajudar a resolver uma questão que tenho, pois sou iniciante em c#.

    Tenho um Form de cadastros, nele quando eu digitar o cep quero que mostre nas outras textbox

    Endereço , bairro e cidade.

    ps: Estou usando procedure. 

    desde já agradeço quem puder ajuda 

    terça-feira, 28 de junho de 2016 07:24

Todas as Respostas

  • Poderia detalhar, pois não sabemos se está trabalhando com classes, ou os dados estão ido direto para os textbox:

    De qualquer forma vc vai criar uma procedure comum com um select onde o cep for igual a @cep...

    Abaixo a operação responsável por chamar a procedure.

     public ExemploColecao Consultar(string CEP)
            {
                try
                {
                    ExemploColecao exemploColecao = new ExemploColecao();
    
                    acessoDadosSqlServer.LimparParametros();
                    acessoDadosSqlServer.AdcionarParametros("@CEP", CEP);
    
                    DataTable dataTableCliente = acessoDadosSqlServer.ExecutarConsulta(CommandType.StoredProcedure, "uspConsultaPorCpf");
    
                    foreach (DataRow linha in dataTableCliente.Rows)
                    {
    
    
                        Setor setor = new Setor();
    
    
                        setor.EX_cod_exemplo = Convert.ToInt32(linha["EX_cod_exemplo"]);
                        setor.EX_endereco = Convert.ToString(linha["EX_endereco"]);
                        setor.EX_cidade = Convert.ToString(linha["EX_cidade"]);
    
                        exemploColecao.Add(setor);
    
                    }
    
                    return exemploColecao;
    
                }
                catch (Exception ex)
                {
                    throw new Exception("Não foi possível fazer a consulta pelo CEP. Detalhes: " + ex);
                }
            }


    terça-feira, 28 de junho de 2016 11:44
  • Tem um projeto completo no GitHub para a busca por CEP, o projeto é de uso livre e busca os dados na base oficial dos correios (via internet). Desta forma vc não precisa de nenhuma base de dados para a pesquisa, além de garantir que os dados estão sempre atualizados.

    Não tem segredo, acesse o link abaixo e faça os testes. Basta adicionar os itens disponibilizados no seu projeto e utilizar. Utilizo em alguns projetos de clientes e funciona perfeitamente a bastante tempo, aliás o GitHub tem diversas soluções prontas para uso, além disso vc pode contribuir para os projetos. 

    LINK para o GitHub do projeto Correios.Net 
    https://github.com/hamboldt/Correios.Net

    terça-feira, 28 de junho de 2016 13:41
  • Ok. vou tentar
    quarta-feira, 29 de junho de 2016 05:57
  • eu usava tb uma busca nos correios, mas no começo desse ano (ou fim do ano passado) o link que eu entrava nos correios parou de responder. Não sei se o Correios.Net mudou o endereço para um que funcione. Vale dar uma olhada.

    Como alternativa, atualmente estou buscando (com a mesma biblioteca - e alguns ajustes) na republica com o link http://cep.republicavirtual.com.br/web_cep.php?cep=XXXXXXXX ; esse retorna um XML com cada campo de endereço.

    quarta-feira, 29 de junho de 2016 11:37
  • Pode usar o Correios.Net sem medo, se vc observar o endereço utilizado nas classes vai perceber que é o mesmo utilizado pelo app mobile oficial dos Correios (http://m.correios.com.br/movel/index.do) e pelo tempo que eu já utilizo não vejo porque seria alterado.

    No caso de qualquer alteração basta alterar na classe, o consumo das informações é totalmente permitido pelos Correio. Na minha opinião é bem mais confiável utilizar o endereço oficial dos correios do que outras alternativas, mas vai de cada um.


    quarta-feira, 29 de junho de 2016 12:52
  • Vou tentar desse modo.

    Uma pergunta. O que  seria esse "ExemploColecao e Setor"? 

    quinta-feira, 30 de junho de 2016 21:07
  • O exemplo foi orientado a objetos.

    A classe setor é onde estão os atributos encapsulados que são acessíveis através dos métodos GETs e SETs

    A coleção nada mais é do que uma lista de setores.

    quinta-feira, 30 de junho de 2016 21:51
  • Deividy  me baseei na sua resposta e fiz de outra maneira ... Segue pra que tiver a mesma dúvida 

                    

     //MÉTODO PARA RETORNAR O ENDEREÇO PELO CEP
            //by weyd
            public EnderecoPessoa retornaEndereco(string cep) 
            {
                try
                {
                    EnderecoPessoa enderecoPessoa = new EnderecoPessoa();
                    enderecoPessoa.Cep = new Logradouro();
                    enderecoPessoa.Cep.Bairro = new Bairro();

                    acessoDadosSqlServer.LimparParametros();
                    acessoDadosSqlServer.AdicionarParametros("@Cep", cep);
                    DataTable dataTableEnderecoPessoa = acessoDadosSqlServer.ExecutarConsulta(CommandType.StoredProcedure, "uspLogradouroConsultaCep");
                    foreach (DataRow linha in dataTableEnderecoPessoa.Rows)
                    {
                        //ADICIONAR VALORES DA CONSULTA NO enderecoPessoa
                        enderecoPessoa.Cep.Cep = Convert.ToString(linha["Cep"]);
                        enderecoPessoa.Cep.Descricao = Convert.ToString(linha["DESCRICAO"]);
                        enderecoPessoa.Cep.Bairro.Descricao = Convert.ToString(linha["Bairro"]);
                        enderecoPessoa.Cep.Bairro.Cidade.Descricao = Convert.ToString(linha["Cidade"]);
                        enderecoPessoa.Cep.Bairro.Cidade.Uf.Sigla = Convert.ToString(linha["Uf"]);                 

                    }
                    return enderecoPessoa;
                }
                catch (Exception ex)
                {

                    throw new Exception(ex.Message);
                }

    e no evento do TextBox

     private void txtCep_TextChanged(object sender, EventArgs e)
            {
                //CONSULTA ENDEREÇO PELO CEP AO DIGITAR
                int valor = txtCep.Text.Length;
                if (valor == 8)
                {
                    //ADICIONAR DO TEXTBOX
                    EnderecoPessoaNegocio enderecoPessoaNegocio = new EnderecoPessoaNegocio();
                    EnderecoPessoa enderecoPessoa = new EnderecoPessoa();
                    enderecoPessoa = enderecoPessoaNegocio.retornaEndereco(txtCep.Text);
                    txtEndereco.Text = enderecoPessoa.Cep.Descricao;
                    txtBairro.Text = enderecoPessoa.Cep.Bairro.Descricao;
                    txtCidade.Text = enderecoPessoa.Cep.Bairro.Cidade.Descricao;
                    cbUf.Text = enderecoPessoa.Cep.Bairro.Cidade.Uf.Sigla;
                }

    Desse jeito funcionou do jeito que eu queria. Obrigado á todos pelas respostas abçss

    segunda-feira, 4 de julho de 2016 00:57