none
Subtotal de uma consulta MySql e C# RRS feed

  • Pergunta

  • Estou desenvolvendo um sistema de orçamento onde cada produto é adicionado a uma tabela MySQL. Nesta tabela o campo Subtotal de cada produto é atualizado conforme é atualizada a quantidade deste produto. 
    No meu form adicionei um campo txtTotal onde gostaria de listar o total do pedido, ou seja, a soma de todos os campos Subtotal da consulta MySQL. Está ocorrendo um erro no calculo dos campos e o campo esta sendo listado como inteiro e depois convertido para decimal. Segue o código abaixo. Alguem poderia me ajudar?
    public void ValorTotalPedido(string codigoPedido)
            {
                MySqlDataReader D = null;
                MySqlCommand Sel = new MySqlCommand();
                MySqlConnection Conn = new MySqlConnection(VarS.DadosConectLocal); 
                Sel.Connection = Conn;
                Conn.Open();
                string SqlTotal = "SELECT * FROM produtosdoPedidos WHERE cod='" + codigoPedido + "'";
                Sel.CommandText = SqlTotal;
                D = Sel.ExecuteReader();
                while (D.Read())
                {
                    decimal Valor = Convert.ToDecimal(D["subtotal"].ToString());
                    Valor++;
                    txtTotal.Text = Convert.ToString(Valor);
    
                }
                
            }
    Gostaria que o txtTotal
    sábado, 9 de junho de 2012 18:52

Respostas

  • Olá Carvalho,

    Algumas modificações no seu código:

    public void ValorTotalPedido(string codigoPedido)
            {
                MySqlDataReader D = null;
                MySqlCommand Sel = new MySqlCommand();
                MySqlConnection Conn = new MySqlConnection(VarS.DadosConectLocal); 
                Sel.Connection = Conn;
                Conn.Open();
                string SqlTotal = "SELECT * FROM produtosdoPedidos WHERE cod='" + codigoPedido + "'";
                Sel.CommandText = SqlTotal;
                D = Sel.ExecuteReader();
                decimal Valor = 0;
                while (D.Read())
                {
                    Valor += Convert.ToDecimal(D["subtotal"]);                
    
                }
                txtTotal.Text = Convert.ToString(Valor);
            }

    Veja se isso ajuda.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    domingo, 10 de junho de 2012 15:21
    Moderador

Todas as Respostas

  • Voce diz que esta ocorrendo um erro, que tipo de erro, podes postar aki por favor?


    O Amor que Sinto por Ti, Apenas Deus e capaz de sentir e superar tal amor!

    domingo, 10 de junho de 2012 14:01
  • O campo txTotal aparece com apenas um subtotal, e nos valores tipo 10,58, aparece 11,00. Esta arredondando os números e preços.
    domingo, 10 de junho de 2012 15:00
  • Olá Carvalho,

    Algumas modificações no seu código:

    public void ValorTotalPedido(string codigoPedido)
            {
                MySqlDataReader D = null;
                MySqlCommand Sel = new MySqlCommand();
                MySqlConnection Conn = new MySqlConnection(VarS.DadosConectLocal); 
                Sel.Connection = Conn;
                Conn.Open();
                string SqlTotal = "SELECT * FROM produtosdoPedidos WHERE cod='" + codigoPedido + "'";
                Sel.CommandText = SqlTotal;
                D = Sel.ExecuteReader();
                decimal Valor = 0;
                while (D.Read())
                {
                    Valor += Convert.ToDecimal(D["subtotal"]);                
    
                }
                txtTotal.Text = Convert.ToString(Valor);
            }

    Veja se isso ajuda.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    domingo, 10 de junho de 2012 15:21
    Moderador
  • Não é mais fácil somar direto pelo mysql?

    public void ValorTotalPedido(string codigoPedido)
            {
                MySqlCommand Sel = new MySqlCommand();
                MySqlConnection Conn = new MySqlConnection(VarS.DadosConectLocal); 
                Sel.Connection = Conn;
                Conn.Open();
                string SqlTotal = "SELECT SUM(subtotal)
    FROM produtosdoPedidos WHERE cod='" + codigoPedido + "'"; Sel.CommandText = SqlTotal;
    	decimal Valor = Sel.ExecuteScalar();
    txtTotal.Text = Valor.ToString(); }

    domingo, 10 de junho de 2012 22:21
  • Fernando Henrique , testei o código que me enviou, esta dando o certo, porém o valor que retorna continua sem os numeros após a virgula. Verifiquei o Update e estou com problemas na gravação do valor em questão no banco de dados. 
    Está sendo gravado como inteiro. Ex: Valor correto 32,25  ->Valor gravado 32,00.
    Mas minha dúvida principal foi respondida. 

    Anderson, não testei o que mandou, mas vou verificar, simplificaria muito o código.

    Agradeço a ajuda 


    segunda-feira, 11 de junho de 2012 00:37