Ir ao conteúdo
  • Cadastre-se

Não consigo usar o mesmo TextBox para consultas


Posts recomendados

Crie uma Procedure de pesquisar tanto por nome ou codigo da pessoaFisica, agora para fazer funcionar no C#, não consigo!!
Já tentei de todas as formas!!

Quero que o usuário Consulte no mesmo txtBox ou por Cod ou Nome.

Segue o código, Na camada Negocio: (Tentei sobrecarregar os metodos)

                                                                                                              

public  PessoaFisicaColecao ConsultarPorCodigoNome(int codigo)
        {

            try
            {

                PessoaFisicaColecao pessoaFisicaColecao = new PessoaFisicaColecao();
                acessoDadosSqlServer.LimparParametros();
                acessoDadosSqlServer.AdicionarParametros("@IDPessoaFisica", codigo);
                DataTable dataTable = acessoDadosSqlServer.ExecutarConsulta(CommandType.StoredProcedure, "uspPessoaFisicaConsultarPorCodigoNome");
                foreach (DataRow linha in dataTable.Rows)
                {
                    PessoaFisica pessoaFisica = new PessoaFisica();
                    pessoaFisica.IDPessoaFisica = Convert.ToInt32(linha["IDPessoaFisica"]);
                    pessoaFisica.Nome = Convert.ToString(linha["Nome"]);
                    pessoaFisica.CPF = Convert.ToString(linha["CPF"]);
                    pessoaFisica.RG = Convert.ToString(linha["RG"]);
                    pessoaFisica.DataNascimento = Convert.ToDateTime(linha["DataNascimento"]);


                    pessoaFisicaColecao.Add(pessoaFisica);

                }

                  return pessoaFisicaColecao;


               }
            catch (Exception erroOcorrido)
            {

                 throw new Exception("Erro ao consultar pessoa física. Detalhe: " + erroOcorrido.Message);
            }
        }


        public PessoaFisicaColecao ConsultarPorCodigoNome(string nome)
         {

            try
            {


                PessoaFisicaColecao pessoaFisicaColecao = new PessoaFisicaColecao();
                acessoDadosSqlServer.LimparParametros();
                acessoDadosSqlServer.AdicionarParametros("@Nome", nome);
                DataTable dataTable = acessoDadosSqlServer.ExecutarConsulta(CommandType.StoredProcedure, "uspPessoaFisicaConsultarPorCodigoNome");
                foreach (DataRow linha in dataTable.Rows)
                {
                    PessoaFisica pessoaFisica = new PessoaFisica();
                    pessoaFisica.IDPessoaFisica = Convert.ToInt32(linha["IDPessoaFisica"]);
                    pessoaFisica.Nome = Convert.ToString(linha["Nome"]);
                    pessoaFisica.CPF = Convert.ToString(linha["CPF"]);
                    pessoaFisica.RG = Convert.ToString(linha["RG"]);
                    pessoaFisica.DataNascimento = Convert.ToDateTime(linha["DataNascimento"]);

                    pessoaFisicaColecao.Add(pessoaFisica);

                }

                return pessoaFisicaColecao;



            }
            catch (Exception erroOcorrido)
            {

                throw new Exception("Erro ao consultar pessoa física. Detalhe: " + erroOcorrido.Message);
            }
        }

    Na camada apresentação: (TextBox não diferencia um metodo do outro, por exemplo, se eu pesquisar por nome ele acha, mas se eu pesquisar por cod não!! mas se eu colocar um Convert.ToInt32 ele acha por codigo e  por nome não!!

   Não consigo usar o mesmo TextBox para os dois tipos de Consulta.

private void btnPesquisarPorCodigo_Click_1(object sender, EventArgs e)
        {


            PessoaFisicaNegocios pessoaFisicaNegocios = new PessoaFisicaNegocios();
            PessoaFisicaColecao pessoaFisicaColecao = new PessoaFisicaColecao();
            pessoaFisicaColecao = pessoaFisicaNegocios.ConsultarPorCodigoNome(txtCodigoNome.Text);
            dgwPessoaFisica.DataSource = null;
            dgwPessoaFisica.DataSource = pessoaFisicaColecao;
            dgwPessoaFisica.Update();
            dgwPessoaFisica.Refresh();

Link para o comentário
Compartilhar em outros sites

O que acontece é que txtCodigoNome.Text retorna sempre uma String, dessa forma o compilador entende que a assinatura a ser chamada é sempre a que recebe uma String. Ele não avalia o conteúdo, que tem que avaliar é você

PessoaFisicaNegocios pessoaFisicaNegocios = new PessoaFisicaNegocios();Int32 valor = 0; PessoaFisicaColecao pessoaFisicaColecao = new PessoaFisicaColecao();if (Int32.TryParse(textbox.ToString(),out valor)){pessoaFisicaColecao = pessoaFisicaNegocios.ConsultarPorCodigoNome(valor);}else {pessoaFisicaColecao = pessoaFisicaNegocios.ConsultarPorCodigoNome(txtCodigoNome.Text);}dgwPessoaFisica.DataSource = null;dgwPessoaFisica.DataSource = pessoaFisicaColecao;dgwPessoaFisica.Update();dgwPessoaFisica.Refresh();

Outra forma seria dentro da sua 'ConsultarPorCodigoNome'  você fazer algo do tipo:

public PessoaFisicaColecao ConsultarPorCodigoNome(string nome)         {Int32 valor = 0;if (Int32.TryParse(nome, out valor)){ return ConsultarPorCodigoNome(valor);}            try            {                PessoaFisicaColecao pessoaFisicaColecao = new PessoaFisicaColecao();                acessoDadosSqlServer.LimparParametros();                acessoDadosSqlServer.AdicionarParametros("@Nome", nome);                DataTable dataTable = acessoDadosSqlServer.ExecutarConsulta(CommandType.StoredProcedure, "uspPessoaFisicaConsultarPorCodigoNome");                foreach (DataRow linha in dataTable.Rows)                {                    PessoaFisica pessoaFisica = new PessoaFisica();                    pessoaFisica.IDPessoaFisica = Convert.ToInt32(linha["IDPessoaFisica"]);                    pessoaFisica.Nome = Convert.ToString(linha["Nome"]);                    pessoaFisica.CPF = Convert.ToString(linha["CPF"]);                    pessoaFisica.RG = Convert.ToString(linha["RG"]);                    pessoaFisica.DataNascimento = Convert.ToDateTime(linha["DataNascimento"]);                    pessoaFisicaColecao.Add(pessoaFisica);                }                return pessoaFisicaColecao;            }            catch (Exception erroOcorrido)            {                throw new Exception("Erro ao consultar pessoa física. Detalhe: " + erroOcorrido.Message);            }        }
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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...