none
Acrescentar Valor - C# RRS feed

  • Pergunta

  • Bom estou com dúvidas com um sistema de controle de Estoque, onde eu tenho numa tabela tblProduto os campos codProduto, descricaoProduto e quantidadeProduto.

     

    Bom no formulário eu tenho um comboBox que mostra as descricoes dos produtos ja cadastrados.

    e tenho o botão acrescentar e retirar.

     

    No botão acrescentar eu estou tentando fazer um jeito para que quando o usuario selecionar algum produto do comboBox ele verificar se ja há alguma quantidade para aquele produto, se não houver ele iria inserir a quantidade informada pelo textbox, se ja tiver ele pegasse o valor do banco de dados e somar com o valor do txt.

     

    Preciso de ajuda nos ifs não consigo pegar o valor do banco de dados e verificar se é preenchido ou não

    segue uma imagem do meu form para melhor compreensão

    http://img18.imageshack.us/img18/3465/estoquei.jpg

    Desde ja agradeço
    sábado, 9 de julho de 2011 00:02

Respostas

  • João segue um simples exemplo de como pode ser feito o que deseja o código está todo comentado:

     

     public Form1()
        {
          InitializeComponent();
        }
    
        //Classe produto
        public class Produto
        {
          public int CodProduto { get; set; }
          public string DescricaoProduto { get; set; }
          public int QuantidadeProduto { get; set; }
        }
    
        private void Form1_Load(object sender, EventArgs e)
        {
          //Chamo o método que carrega o combo
          CarregaCombo();
        }
    
        //Método que carrega o combo
        private void CarregaCombo()
        {
          //seto o value e o dysplay
          //onde o value sera o id do produto
          cbxProdutos.ValueMember = "CodProduto";
          cbxProdutos.DisplayMember = "DescricaoProduto";
          //chamo o método que retorna um list
          //de produtos ao datasource do combo
          cbxProdutos.DataSource = ObterLista().OrderBy(x => x.DescricaoProduto).ToList();
        }
    
        //método que retorna um list de produto
        //cujo retorno é vinculado ao datasource do combo
        private List<Produto> ObterLista()
        {
          //instancia da lista que será retoirnada
          List<Produto> lista = new List<Produto>();
          //conexão
          SqlConnection conn = new SqlConnection(@"Data Source=ZÉGOIABA-PC\sqlexpress;Initial Catalog=DBTeste;Integrated Security=True;Pooling=False");
          //string com o comando select
          string comando = "SELECT codProduto,descricaoProduto FROM tblProduto";
          //instancia do coamndo
          SqlCommand cmd = new SqlCommand(comando, conn);
          //abroi conexão
          conn.Open();
          //instancia do leitor
          SqlDataReader leitor = cmd.ExecuteReader();
          //se há linhas
          if (leitor.HasRows)
          {
            //enquanto leitor lê
            while (leitor.Read())
            {
              //instancia de um novo produto
              Produto p = new Produto();
              p.CodProduto = Convert.ToInt32(leitor["codProduto"].ToString());
              p.DescricaoProduto = leitor["descricaoProduto"].ToString();
              //adiciono o produto ao list
              lista.Add(p);
            }
          }
          //fecho conexão
          conn.Close();
          //retorno a lista
          return lista;
        }
    
        //Método que retorna a quantidade atual
        //do produto no bd que recebe o código como parâmetro
        //que será o value do combo
        private int ObterQuantidadeProduto(int codigo)
        {
          int qtde = 0;
          SqlConnection conn = new SqlConnection(@"Data Source=ZÉGOIABA-PC\sqlexpress;Initial Catalog=DBTeste;Integrated Security=True;Pooling=False");
          //busco =a quantidade onde o codigo do produto for
          //igual ao codigo vindo do parâmetro
          string comando = "SELECT quantidadeProduto FROM tblProduto where codProduto=@codProduto";
          SqlCommand cmd = new SqlCommand(comando, conn);
          //preencho o parâmetro do comando
          cmd.Parameters.AddWithValue("@codProduto", codigo);
          conn.Open();
          SqlDataReader leitor = cmd.ExecuteReader();
          if (leitor.HasRows)
          {
            leitor.Read();
            qtde = Convert.ToInt32(leitor["quantidadeProduto"].ToString());
          }
          conn.Close();
          //retorno a quantidade atual
          return qtde;
        }
    
        //método para atualizar a quantidade do produto
        //que retorna um booleano e recebe o código do 
        //produto que deseja alterar
        private bool AtualizarQuantidade(int quantidade, int codigo)
        {
          int aux = -1;
          SqlConnection conn = new SqlConnection(@"Data Source=ZÉGOIABA-PC\sqlexpress;Initial Catalog=DBTeste;Integrated Security=True;Pooling=False");
          //comando para atualizar a quantidade
          string comando = "UPDATE tblProduto SET quantidadeProduto=@quantidadeProduto where codProduto=@codProduto";
          SqlCommand cmd = new SqlCommand(comando, conn);
          //preencho os parâmetros do comando
          cmd.Parameters.AddWithValue("@quantidadeProduto", quantidade);
          cmd.Parameters.AddWithValue("@codProduto", codigo);
          conn.Open();
          //e faço aux receber o resultado do 
          //execução do comando 
          aux = Convert.ToInt32(cmd.ExecuteNonQuery());
          conn.Close();
          //retorno true se for maior que zero
          return aux > 0;
        }
    
        //click do botão acrescentar
        private void btnAcrescentar_Click(object sender, EventArgs e)
        {
          //declarei uma variavel int e fiz ela
          //receber a quantidade atual do produto
          //selecionado na combo veja qua chamo o método e preencho
          //os parâmetros necessários
          int qtdeAtual = ObterQuantidadeProduto(Convert.ToInt32(cbxProdutos.SelectedValue.ToString()));
          //faço a quantidade atual receber ela mesma(que tinha no bd)
          //e acrescento a quantidade do textbox
          qtdeAtual = qtdeAtual + Convert.ToInt32(txtQuantidade.Text);
          //Aqui chamo o método para atualizar
          //preenchendo os parametros necessários
          //e se ele retornar true exibo a mensagem de sucesso pois
          //foi realizada a alteração
          if(AtualizarQuantidade(qtdeAtual,Convert.ToInt32(cbxProdutos.SelectedValue.ToString())))
          {
            MessageBox.Show("Acrescimo completada com sucesso");
          }
          else
          {
            MessageBox.Show("Falha!");
          }
        }
    
        //Aqui a mesma coisa só que diminuindo a quantidade
        private void btnRetirar_Click(object sender, EventArgs e)
        {
        int qtdeAtual = ObterQuantidadeProduto(Convert.ToInt32(cbxProdutos.SelectedValue.ToString()));
          qtdeAtual = qtdeAtual - Convert.ToInt32(txtQuantidade.Text);
          if(AtualizarQuantidade(qtdeAtual,Convert.ToInt32(cbxProdutos.SelectedValue.ToString())))
          {
            MessageBox.Show("Retirada completada com sucesso");
          }
          else
          {
            MessageBox.Show("Falha!");
          }
        }
    
    
    

    Faça um bom proveito deste código e estude pois o mesmo é simples porém contém vários conceitos e elementos importantes.

     

    abraços e espero ter ajudado!


    Estudar, Estudar e Estudar! Não existe caminho curto.
    sábado, 9 de julho de 2011 14:16

Todas as Respostas

  • ja tens o inserir  feito?

    e o update?

    se ja tens precisas de fazer um select a base de dados.

    igual ao que utilizas para prencher a grid mas com a condição where id='textbox.text'

    fazes um

     

    eu nao sei se estas

     

    se nao tens vê este projecto

     

    http://www.macoratti.net/10/04/ef_crdb1.htm

    sábado, 9 de julho de 2011 11:24
  • João segue um simples exemplo de como pode ser feito o que deseja o código está todo comentado:

     

     public Form1()
        {
          InitializeComponent();
        }
    
        //Classe produto
        public class Produto
        {
          public int CodProduto { get; set; }
          public string DescricaoProduto { get; set; }
          public int QuantidadeProduto { get; set; }
        }
    
        private void Form1_Load(object sender, EventArgs e)
        {
          //Chamo o método que carrega o combo
          CarregaCombo();
        }
    
        //Método que carrega o combo
        private void CarregaCombo()
        {
          //seto o value e o dysplay
          //onde o value sera o id do produto
          cbxProdutos.ValueMember = "CodProduto";
          cbxProdutos.DisplayMember = "DescricaoProduto";
          //chamo o método que retorna um list
          //de produtos ao datasource do combo
          cbxProdutos.DataSource = ObterLista().OrderBy(x => x.DescricaoProduto).ToList();
        }
    
        //método que retorna um list de produto
        //cujo retorno é vinculado ao datasource do combo
        private List<Produto> ObterLista()
        {
          //instancia da lista que será retoirnada
          List<Produto> lista = new List<Produto>();
          //conexão
          SqlConnection conn = new SqlConnection(@"Data Source=ZÉGOIABA-PC\sqlexpress;Initial Catalog=DBTeste;Integrated Security=True;Pooling=False");
          //string com o comando select
          string comando = "SELECT codProduto,descricaoProduto FROM tblProduto";
          //instancia do coamndo
          SqlCommand cmd = new SqlCommand(comando, conn);
          //abroi conexão
          conn.Open();
          //instancia do leitor
          SqlDataReader leitor = cmd.ExecuteReader();
          //se há linhas
          if (leitor.HasRows)
          {
            //enquanto leitor lê
            while (leitor.Read())
            {
              //instancia de um novo produto
              Produto p = new Produto();
              p.CodProduto = Convert.ToInt32(leitor["codProduto"].ToString());
              p.DescricaoProduto = leitor["descricaoProduto"].ToString();
              //adiciono o produto ao list
              lista.Add(p);
            }
          }
          //fecho conexão
          conn.Close();
          //retorno a lista
          return lista;
        }
    
        //Método que retorna a quantidade atual
        //do produto no bd que recebe o código como parâmetro
        //que será o value do combo
        private int ObterQuantidadeProduto(int codigo)
        {
          int qtde = 0;
          SqlConnection conn = new SqlConnection(@"Data Source=ZÉGOIABA-PC\sqlexpress;Initial Catalog=DBTeste;Integrated Security=True;Pooling=False");
          //busco =a quantidade onde o codigo do produto for
          //igual ao codigo vindo do parâmetro
          string comando = "SELECT quantidadeProduto FROM tblProduto where codProduto=@codProduto";
          SqlCommand cmd = new SqlCommand(comando, conn);
          //preencho o parâmetro do comando
          cmd.Parameters.AddWithValue("@codProduto", codigo);
          conn.Open();
          SqlDataReader leitor = cmd.ExecuteReader();
          if (leitor.HasRows)
          {
            leitor.Read();
            qtde = Convert.ToInt32(leitor["quantidadeProduto"].ToString());
          }
          conn.Close();
          //retorno a quantidade atual
          return qtde;
        }
    
        //método para atualizar a quantidade do produto
        //que retorna um booleano e recebe o código do 
        //produto que deseja alterar
        private bool AtualizarQuantidade(int quantidade, int codigo)
        {
          int aux = -1;
          SqlConnection conn = new SqlConnection(@"Data Source=ZÉGOIABA-PC\sqlexpress;Initial Catalog=DBTeste;Integrated Security=True;Pooling=False");
          //comando para atualizar a quantidade
          string comando = "UPDATE tblProduto SET quantidadeProduto=@quantidadeProduto where codProduto=@codProduto";
          SqlCommand cmd = new SqlCommand(comando, conn);
          //preencho os parâmetros do comando
          cmd.Parameters.AddWithValue("@quantidadeProduto", quantidade);
          cmd.Parameters.AddWithValue("@codProduto", codigo);
          conn.Open();
          //e faço aux receber o resultado do 
          //execução do comando 
          aux = Convert.ToInt32(cmd.ExecuteNonQuery());
          conn.Close();
          //retorno true se for maior que zero
          return aux > 0;
        }
    
        //click do botão acrescentar
        private void btnAcrescentar_Click(object sender, EventArgs e)
        {
          //declarei uma variavel int e fiz ela
          //receber a quantidade atual do produto
          //selecionado na combo veja qua chamo o método e preencho
          //os parâmetros necessários
          int qtdeAtual = ObterQuantidadeProduto(Convert.ToInt32(cbxProdutos.SelectedValue.ToString()));
          //faço a quantidade atual receber ela mesma(que tinha no bd)
          //e acrescento a quantidade do textbox
          qtdeAtual = qtdeAtual + Convert.ToInt32(txtQuantidade.Text);
          //Aqui chamo o método para atualizar
          //preenchendo os parametros necessários
          //e se ele retornar true exibo a mensagem de sucesso pois
          //foi realizada a alteração
          if(AtualizarQuantidade(qtdeAtual,Convert.ToInt32(cbxProdutos.SelectedValue.ToString())))
          {
            MessageBox.Show("Acrescimo completada com sucesso");
          }
          else
          {
            MessageBox.Show("Falha!");
          }
        }
    
        //Aqui a mesma coisa só que diminuindo a quantidade
        private void btnRetirar_Click(object sender, EventArgs e)
        {
        int qtdeAtual = ObterQuantidadeProduto(Convert.ToInt32(cbxProdutos.SelectedValue.ToString()));
          qtdeAtual = qtdeAtual - Convert.ToInt32(txtQuantidade.Text);
          if(AtualizarQuantidade(qtdeAtual,Convert.ToInt32(cbxProdutos.SelectedValue.ToString())))
          {
            MessageBox.Show("Retirada completada com sucesso");
          }
          else
          {
            MessageBox.Show("Falha!");
          }
        }
    
    
    

    Faça um bom proveito deste código e estude pois o mesmo é simples porém contém vários conceitos e elementos importantes.

     

    abraços e espero ter ajudado!


    Estudar, Estudar e Estudar! Não existe caminho curto.
    sábado, 9 de julho de 2011 14:16
  • Muito Obrigado Pablo Batista Cardoso, vou estudar sim, cada vez mais.

     

    Abraço

    sábado, 9 de julho de 2011 16:45