none
C# - Problemas na hora de localizar um registro. RRS feed

  • Pergunta

  • Boa tarde,

    Estou com uma dúvida meio estranha em C#:

    Foi criado um botão para localizar os registros de cliente e o de  fabricante, porém os de cliente está buscando normal, mas o de fabricante, ele só mostra o nome quando vou realizar a segunda busca de outro cliente(nada a ver) , e o fabricante acaba ficando com outro fabricante solicitado anteriormente, será que instanciei corretamente ou errado, vou deixar o código abaixo para dar uma olhada:

    private void btnCliente_Click(object sender, System.EventArgs e)
            {
                IcepexLibrary.Cliente cliente = new IcepexLibrary.Cliente();
                IcepexLibrary.Fabricante fabricante = new IcepexLibrary.Fabricante();
                frmPesquisaCliente pesquisa = new frmPesquisaCliente();
                DataSet dsCliente = new DataSet ();
                DataSet dsFabricante = new DataSet();
                //frmPesquisaClienteFabricanteCe pesquisa2 = new frmPesquisaClienteFabricanteCe();
                //IcepexLibrary.TipoCertificacao tipoCertificacao = new IcepexLibrary.TipoCertificacao();

                listbox = false;

                //pesquisa2.ShowDialog();
                pesquisa.ShowDialog ();

                if (pesquisa.IdPesquisa > 0)
                {
                    cliente.GetOne (pesquisa.IdPesquisa);
                    fabricante.GetOne(idCliente, idTipoCertificacao);

                    idCliente = cliente.Id;
                    lblRazao.Text = cliente.Razao;
                    lblFantasia.Text = cliente.Fantasia;
                    lblDocumento.Text = cliente.Documento;
                    lblInscricao.Text = cliente.Inscricao;
                    lblEndereco.Text = cliente.Endereco;
                    lblNumero.Text = cliente.Numero;
                    lblComplemento.Text = cliente.Complemento;
                    lblBairro.Text = cliente.Bairro;
                    lblCep.Text = cliente.Cep;
                    lblCidade.Text = cliente.cidade.Cidade;
                    lblUf.Text = cliente.cidade.Uf;

                    if(fabricante.NomeFabricante != null)
                    {
                        idCliente = cliente.Id;
                        txtFabricante.Text = fabricante.NomeFabricante;
                        txtFabricanteFantasia.Text = fabricante.Fantasia;
                        txtFabricanteEndereco.Text = fabricante.Endereco;
                        mskFabricanteDocumento.InputMask = "00.000.000/0000-00" ;
                        optFabricanteMesmo.Enabled = false;

                        if(fabricante.Documento != null)
                        {
                            mskFabricanteDocumento.Text = fabricante.Documento;
                        }
                    }
                    else
                    {
                        txtFabricante.Text = String.Empty;
                        txtFabricanteFantasia.Text = String.Empty;
                        txtFabricanteEndereco.Text = String.Empty;
                        mskFabricanteDocumento.InputMask = "00.000.000/0000-00";
                        optFabricanteMesmo.Enabled = true;
                    }

    Milton Honji

    quinta-feira, 1 de outubro de 2015 19:02

Respostas

  • @Milton Honji

    Eu nao gosto da estrutura do teu codigo, e confuso, por isso fica dificil ver onde esta o erro. 

    Aki esta o erro, provavelmente:

     if(fabricante.NomeFabricante != null)
                    {
                        idCliente = cliente.Id;

    }

    Aki esta outra confusao:

     if (pesquisa.IdPesquisa > 0)
                {
                    cliente.GetOne (pesquisa.IdPesquisa);
                    fabricante.GetOne(idCliente, idTipoCertificacao);

                    idCliente = cliente.Id;

    }

    Voce criou relacao entra as tabelas na Base-de-Dados ente Fabricante e Cliente?

    Remove este codigo :

       if (pesquisa.IdPesquisa > 0)

    e coloca assim:    if (pesquisa.IdPesquisa.Length> 0) e a melhor forma de programar...com Length

    Isto e uma pesquiza, acho que esta no lugar errado:  fabricante.GetOne(idCliente, idTipoCertificacao);

    Deveria estar aki....   if(fabricante.NomeFabricante != null)
                    {

    fabricante.GetOne(idCliente, idTipoCertificacao);

    resto do codigo...

    }Tens de aprender a organizar a tua logica...


    A flower cannot blossom without sunshine, and man cannot live without love.

    • Marcado como Resposta Marcos SJ sexta-feira, 2 de outubro de 2015 16:49
    sexta-feira, 2 de outubro de 2015 16:36
    Moderador

Todas as Respostas

  • Olá, Milton!

       Você está passando como parâmetro o idCliente antes de populá-lo. Tente esta alteração:

     fabricante.GetOne(cliente.Id, idTipoCertificacao);
    
    Bom trabalho!

    quinta-feira, 1 de outubro de 2015 20:05
  • Muito Obrigado,

    Já tentei fazer isso e ainda assim não resolveu. Vou verificar direito.


    • Editado Marcos SJ sexta-feira, 2 de outubro de 2015 13:02 Edição
    quinta-feira, 1 de outubro de 2015 20:14
  • Mostra o seu método GetOne 

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    sexta-feira, 2 de outubro de 2015 12:59
  • Olá Milton Honji,

    Tudo bem?


    Quando você diz que "os de cliente está buscando normal", você quer dizer que está tendo um retorno de quais informações referentes ao cliente?

    Fiz esta pergunta para confirmar o tipo de retorno que a busca cliente deve trazer.

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 2 de outubro de 2015 13:05
  • Marcos Roberto,

    Antes de colocar uma instância do fabricante, o desenvolvedor anterior ele já fez para localizar as classes do cliente, depois de um tempo foi passado para localizar os fabricantes, como pode ver, já está instanciado e já está chamando.

    O problema que está ocorrendo no testes, é que quando vou fazer uma busca do cliente, ele está fazendo a busca no banco de dados corretamente, mas na hora de incluir o fabricante ele está puxando as informações que foram solicitadas na busca anteriormente(APENAS A CLASSE FABRICANTE).

    Milton Honji.

    sexta-feira, 2 de outubro de 2015 13:33
  • @Milton Honji

    Eu nao gosto da estrutura do teu codigo, e confuso, por isso fica dificil ver onde esta o erro. 

    Aki esta o erro, provavelmente:

     if(fabricante.NomeFabricante != null)
                    {
                        idCliente = cliente.Id;

    }

    Aki esta outra confusao:

     if (pesquisa.IdPesquisa > 0)
                {
                    cliente.GetOne (pesquisa.IdPesquisa);
                    fabricante.GetOne(idCliente, idTipoCertificacao);

                    idCliente = cliente.Id;

    }

    Voce criou relacao entra as tabelas na Base-de-Dados ente Fabricante e Cliente?

    Remove este codigo :

       if (pesquisa.IdPesquisa > 0)

    e coloca assim:    if (pesquisa.IdPesquisa.Length> 0) e a melhor forma de programar...com Length

    Isto e uma pesquiza, acho que esta no lugar errado:  fabricante.GetOne(idCliente, idTipoCertificacao);

    Deveria estar aki....   if(fabricante.NomeFabricante != null)
                    {

    fabricante.GetOne(idCliente, idTipoCertificacao);

    resto do codigo...

    }Tens de aprender a organizar a tua logica...


    A flower cannot blossom without sunshine, and man cannot live without love.

    • Marcado como Resposta Marcos SJ sexta-feira, 2 de outubro de 2015 16:49
    sexta-feira, 2 de outubro de 2015 16:36
    Moderador