none
Cadastrar um conta em um formulário ContasaReceber e buscar o código do cliente e nome na tabela Clientes RRS feed

  • Pergunta

    • Tenho uma tabela chamada Clientes com alguns campos, entres eles IdCliente e Nome;
    • Tenho uma tabela chamada ContaReceber com alguns campos, entres eles IdCliente e Nome;
    • IdCliente de Clientes é chave estrangeira com IdCliente de ContaReceber;
    • A tabela Clientes tem Stored Procedures para Alterar, Consultar por Nome, Incluir e Excluir e está tudo OK;
    • A tabela ContaReceber tem Stored Procedures para Alterar, Consultar por Nome, Incluir e Excluir e está tudo OK;
    • Criei um formulário chamado FrmContasReceberCadastrar onde pretendo utilizar a Stored Procedure ContaReceberInserir para cadastrar uma nova conta a receber;
    • Eu gostaria que o usuário tivesse a opção de inserir no campo Código no formulário FrmContasReceberCadastrar o código do cliente e automaticamente o nome do cliente fosse "puxado" lá da Tabela Clientes;
    • Gostaria também que quando o usuário clicasse no botão buscar ele conseguisse fazer uma busca na tabela Clientes e "jogasse" no formulário FrmContasReceberCadastrar o ID e Nome do Cliente vindo lá da tabela Clientes.

    Alguém poderia me ajudar por gentileza?

    *** o que já tentei fazer ***

    • Criei um formulário chamado FrmContaReceberSelCliente que quando o usuário clica em buscar abre este formulário e lá é possível fazer uma busca na tabela de Clientes;
    • Consigo filtrar, selecionar e tudo mais. Mas não consigo jogar o ID e o Nome do cliente lá no formulário FrmContaReceberCadastrar.

    Desde já muito obrigado!

    • Movido Roberto F Fonseca quarta-feira, 4 de dezembro de 2013 02:48 movido para um forum mais adequado
    terça-feira, 3 de dezembro de 2013 23:01

Respostas

  • Deu certo.

    Achei a resposta no site linhadecodigo .com .br

    procurar por "Trocando Informações entre Windows Forms em Csharp".

    • Marcado como Resposta Roger Nascimento sexta-feira, 6 de dezembro de 2013 10:58
    sexta-feira, 6 de dezembro de 2013 10:58

Todas as Respostas

  • Roger,

        Em primeiro lugar, eu verificaria sua normalização de dados, pois ter nome do cliente na tabela ContasReceber não é correto.

        eu também acho que sua pergunta é mais adequada em um fórum de desenvolvimento. Por este motivo, estou movendo para um fórum mais adequado.


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008

    quarta-feira, 4 de dezembro de 2013 02:47
  • Poste seu código!!!

    Fulvio Cezar Canducci Dias

    quarta-feira, 4 de dezembro de 2013 03:30
  • Desculpe-me Fulvio, sou iniciante.

    Qual código especificamente?

    quarta-feira, 4 de dezembro de 2013 04:13
  • Vamos lá, tentando entender.

    1) Primeiro, o Roberto já disse algo sumamente importante. Na tabela de ContasReceber, não deve nunca ter o Nome do cliente.

    2) Buscar o cliente, terá que ser feito por join, fazer um Join na Tabela Cliente com ContaReceber e amarrar pelo idCliente, tipo assim:

    select c.nome,c.idCliente, r.Campo1ContaReceber

    from Cliente c inner join ContaReceber r on c.idCliente = r.idCliente. Esse select é para saber o cliente q está na ContaReceber.  

    Bem, nesse caso eu faria o seguinte. Colocava uma DropDownList e carrega essa dropdown direto da tabela Cliente, o Código e o Nome(Display apenas nome). Ao selecionar o nome que gostaria, já passa esse código como parâmetro do argumento da Stored proc que vai inserir. Acho que isso resolve seu problema.

    quarta-feira, 4 de dezembro de 2013 10:46
  • Desculpe-me Fulvio, sou iniciante.

    Qual código especificamente?

    Então eu fico preocupado com você, porque, sua normalização ta errada e trazer o dados do cliente com o forma de pesquisa é simples, podendo ser por dropdownlist ou um outro form que com pesquisa retornando o nome e id como apresentação na tela de Contas a receber!

    Fica dificil falar algo sem que você conheça realmente  ... 

    E já pegando um bucha de contas a receber !!!


    Fulvio Cezar Canducci Dias

    quarta-feira, 4 de dezembro de 2013 13:17
  • Fúlvio, obrigado.

    Quanto à normalização, pelos comentários, é a coluna nome na tabela ContaReceber, quanto a isto eu não vejo dificuldades em acertar.

    O outro form com pesquisa eu já fiz, ele inclusive já está pesquisando e mostrando em um grid o código e o nome do cliente.

    No form de cadastro da Conta a Receber há um botão "Buscar" quando clica nele abre outro form que busca na tabela Clientes pelo nome. Ele está OK, consegui inclusive jogar em uma variável o ID do cliente selecionado.

    Preciso sabe como "capturar" este código e nome e jogar no outro formulário que é o de Cadastro de Contas a Receber.

    Obrigado, no aguardo de sua sugestão!

    Abraço.

    quarta-feira, 4 de dezembro de 2013 16:25
  • Pode ser por uma propriedade do Formulário que ta abrindo a busca ou mandar direto para o formulário que chamou o busca

    a primeira é mais fácil

    public int IdCliente {get;set;}, crie um propriedade no seu formulário de busca e quando encontrar o cliente

    repasse os dados por esse IdCliente, logo apos sair do Busca confira se o IdCliente tem valor se sim carrega no textbox

    exemplo:

    FrmBusca frm = new FrmBusca();

    frm.ShowDialog(); // aqui ele ta ativo na tela ao sair

    TxtIdCliente.Text =  frm.IdCliente.ToString(); //o valor tem que ser maior que Zero ... 


    Fulvio Cezar Canducci Dias

    quarta-feira, 4 de dezembro de 2013 19:25
  • Fúlvio, obrigado.

    Apareceu uma mensagem dizendo que não se pode converter objeto em int.

    Mas olha o que eu fiz.

    Consegui jogar o valor do id do cliente em "int" na variável CodCli e o nome do Cliente na variável "NomCli". Agora terei que "jogar estes valores nos campos .Text no formulário que chamou este

    *** Este é o Formulário de Busca, que é chamado quando o usuário clica no botão "Buscar" que está no formulário Cadastro Conta a Receber ***

                                                                  

    using System;
    using System.Windows.Forms;

    using Negocios;
    using ObjetoTransferencia;

    namespace SM
    {
        public partial class FrmContaReceberSelCliente : Form
        {

            private AcaoNaTela acaoNaTela;
            public int CodCli;
            public string NomCli;




            public FrmContaReceberSelCliente()
            {
                InitializeComponent();

                //Não gerar linhas automaticamente, não mostrando no grid
                dataGridViewPrincipal.AutoGenerateColumns = false;
            }

            public FrmContaReceberSelCliente(AcaoNaTela acaoNaTela)
            {
                // TODO: Complete member initialization
                this.acaoNaTela = acaoNaTela;
            }

            private void buttonBuscar_Click(object sender, EventArgs e)
            {
                ClienteNegocios clienteNegocios = new ClienteNegocios();

                ClienteColecao clienteColecao = new ClienteColecao();
                clienteColecao = clienteNegocios.ConsultarPorNome(textBoxPesquisa.Text);

                dataGridViewPrincipal.DataSource = null;
                dataGridViewPrincipal.DataSource = clienteColecao;

                dataGridViewPrincipal.Update();
                dataGridViewPrincipal.Refresh();

            }

            public void buttonSelecionar_Click(object sender, EventArgs e)
            {
                //Verificar se tem algum registro selecionado
                if (dataGridViewPrincipal.SelectedRows.Count == 0)
                {
                    MessageBox.Show("Favor selecionar um cliente.");
                    return;
                }

               // aqui dei um break bem no this.Close e vi que CodCli está com o código do cliente selecionado na busca e NomCli está com o nome do cliente selecionado na busca.

                CodCli = Convert.ToInt32(dataGridViewPrincipal.CurrentRow.Cells[0].Value);
                NomCli = Convert.ToString(dataGridViewPrincipal.CurrentRow.Cells[1].Value);



                this.Close();

            }

        }
    }

    *******************

    Fúlvio, obrigado por sua ajuda, aguardo sua sugestão.

    Abraço.

    quarta-feira, 4 de dezembro de 2013 21:12
  • Fúlvio, obrigado.

    Apareceu uma mensagem dizendo que não se pode converter objeto em int.

    Mas olha o que eu fiz.

    Consegui jogar o valor do id do cliente em "int" na variável CodCli e o nome do Cliente na variável "NomCli". Agora terei que "jogar estes valores nos campos .Text no formulário que chamou este

    *** Este é o Formulário de Busca, que é chamado quando o usuário clica no botão "Buscar" que está no formulário Cadastro Conta a Receber ***

                                                                  

    using System;
    using System.Windows.Forms;

    using Negocios;
    using ObjetoTransferencia;

    namespace SM
    {
        public partial class FrmContaReceberSelCliente : Form
        {

            private AcaoNaTela acaoNaTela;
            public int CodCli;
            public string NomCli;




            public FrmContaReceberSelCliente()
            {
                InitializeComponent();

                //Não gerar linhas automaticamente, não mostrando no grid
                dataGridViewPrincipal.AutoGenerateColumns = false;
            }

            public FrmContaReceberSelCliente(AcaoNaTela acaoNaTela)
            {
                // TODO: Complete member initialization
                this.acaoNaTela = acaoNaTela;
            }

            private void buttonBuscar_Click(object sender, EventArgs e)
            {
                ClienteNegocios clienteNegocios = new ClienteNegocios();

                ClienteColecao clienteColecao = new ClienteColecao();
                clienteColecao = clienteNegocios.ConsultarPorNome(textBoxPesquisa.Text);

                dataGridViewPrincipal.DataSource = null;
                dataGridViewPrincipal.DataSource = clienteColecao;

                dataGridViewPrincipal.Update();
                dataGridViewPrincipal.Refresh();

            }

            public void buttonSelecionar_Click(object sender, EventArgs e)
            {
                //Verificar se tem algum registro selecionado
                if (dataGridViewPrincipal.SelectedRows.Count == 0)
                {
                    MessageBox.Show("Favor selecionar um cliente.");
                    return;
                }

               // aqui dei um break bem no this.Close e vi que CodCli está com o código do cliente selecionado na busca e NomCli está com o nome do cliente selecionado na busca.

                CodCli = Convert.ToInt32(dataGridViewPrincipal.CurrentRow.Cells[0].Value);
                NomCli = Convert.ToString(dataGridViewPrincipal.CurrentRow.Cells[1].Value);



                this.Close();

            }

        }
    }

    *******************

    Fúlvio, obrigado por sua ajuda, aguardo sua sugestão.

    Abraço.

    dataGridViewPrincipal.CurrentRow.Cells[1].Value.ToString() porque Value é objeto se tem que transformar em String 

    Fulvio Cezar Canducci Dias

    quarta-feira, 4 de dezembro de 2013 21:14
  • Certo Fúlvio, obrigado novamente.

    Agora consegui guardar em duas variáveis públicas o "nome" e o "id" do cliente que foi selecionado.

    Estas variáveis estão declaradas no form que uso para a busca do cliente.

    Como farei agora para retornar para o form de cadastro da conta a receber e inserir estas duas informações nos seus respectivos campos Text's de tal forma que o usuário consiga ver preenchidos os campos Código e Nome?

    Abraço.

    quarta-feira, 4 de dezembro de 2013 21:32
  • Deu certo.

    Achei a resposta no site linhadecodigo .com .br

    procurar por "Trocando Informações entre Windows Forms em Csharp".

    • Marcado como Resposta Roger Nascimento sexta-feira, 6 de dezembro de 2013 10:58
    sexta-feira, 6 de dezembro de 2013 10:58