none
Multiplicação entre TextBox RRS feed

  • Pergunta

  • Estou fazendo um projeto e ele requer uma multiplicação entre Textboxes. Já entrei aqui no forum e fiz vários exemplos de códigos mas nenhum deu certo, continua aparecendo uma mensagem de erro. Apesar de ter várias questões respondidas não resolveu a minha dúvida. Não encontrei nada recente então talvez a linhagem tenha mudado quanto a isso.

    segue o meu código:

    private void TxtValor_Compra_TextChanged(object sender, EventArgs e)
            {
                TxtValor_Total.Text = Convert.ToString(Convert.ToInt32(TxtQuantidade.Text) * Convert.ToDouble(TxtValor_Compra.Text));
            }

    Os tipos de dados no Banco são os seguintes: TxtValor_Total = Decimal, TxtQuantidade = int, TxtValor_Compra = Decimal;

    Essa conversão foi a ultima que fiz. Já tentei várias e nada.

    Mesmo assim está gravando a informação no banco e me devolve uma mensagem de gravado com exito, mas logo em seguida entra na exceção e dispara uma mensagem de erro.

     Agradeço se alguém conseguir entender porque está dando esse erro e onde eu estou errando

    quarta-feira, 17 de outubro de 2018 00:52

Respostas

  • Olá Marcelo,

    Você precisa melhorar só um pouquinho o teu código, vê o exemplo a seguir:

    int quantidade;
    decimal valorCompra, valorTotal;
    decimal valorVenda;


    private void TxtValor_Compra_TextChanged(object sender, EventArgs e)
            {
        quanitidade = int.Parse(TxtQuantidade.Text);
        valorCompra = decimal.Parse(TxtValor_Compra.Text);
        valorTotal = quantidade * valorCompra;
        valorVenda = decimal.Parse(TxtValor_Venda.Text);
            }

    ___________________________________________________________________________
    objProduto.InserirProd(TxtCodigo_Produto.Text, TxtCod_Fornecedor.Text, TxtDescricao_Produto.Text, CmbUnidade.Text, quantidade, valorCompra), valorTotal, valorVenda, Convert.ToDateTime(DtpDataCompra.Text));

    ___________________________________________________________________________
    Isso é o que eu usei na minha Regra de Negócios:

     public void InserirProd(string codigoProduto, string codProd_Fornecedor, string descricao, string unidade, int quantidade, decimal valorCompra, decimal valorTotalCompra, decimal valorVenda, DateTime dataCompra)
            {
                objProdutoDados.InserirProduto(codigoProduto, codProd_Fornecedor, descricao, unidade, quantidade, valorCompra, valorTotalCompra, valorVenda, dataCompra);//Não é necessário converter de novo os parâmetros por que já vem em seus valores próprios.
            } 

    Espero que te ajudou, se sim marque a resposta.

    quarta-feira, 17 de outubro de 2018 06:41

Todas as Respostas

  • Opa
    O seu problema não está necessariamente no calculo, mas sim na inserção dos dados (ao que entendi).

    Primeiramente fazer o calculo correto.

    TxtValor_Total.Text = Convert.ToString(Convert.ToDouble(TxtQuantidade.Text) * Convert.ToDouble(TxtValor_Compra.Text));

    Agosta posta aqui  o seu codigo de inserção no banco.

    Beleza

    quarta-feira, 17 de outubro de 2018 01:58
  • Essa é a forma que usei no Botão Salvar :

     objProduto.InserirProd(TxtCodigo_Produto.Text, TxtCod_Fornecedor.Text, TxtDescricao_Produto.Text, CmbUnidade.Text, Convert.ToInt32(TxtQuantidade.Text), Convert.ToDecimal(TxtValor_Compra.Text), Convert.ToDecimal(TxtValor_Total.Text), Convert.ToDecimal(TxtValor_Venda.Text), Convert.ToDateTime(DtpDataCompra.Text));

    Isso é o que eu usei na minha Regra de Negócios:

     public void InserirProd(string codigoProduto, string codProd_Fornecedor, string descricao, string unidade, int quantidade, decimal valorCompra, decimal valorTotalCompra, decimal valorVenda, DateTime dataCompra)
            {
                objProdutoDados.InserirProduto(codigoProduto, codProd_Fornecedor, descricao, unidade, Convert.ToInt32(quantidade), Convert.ToDecimal(valorCompra), Convert.ToDecimal(valorTotalCompra), Convert.ToDecimal(valorVenda), Convert.ToDateTime(dataCompra));
            }

    quarta-feira, 17 de outubro de 2018 02:11
  • Olá Marcelo,

    Você precisa melhorar só um pouquinho o teu código, vê o exemplo a seguir:

    int quantidade;
    decimal valorCompra, valorTotal;
    decimal valorVenda;


    private void TxtValor_Compra_TextChanged(object sender, EventArgs e)
            {
        quanitidade = int.Parse(TxtQuantidade.Text);
        valorCompra = decimal.Parse(TxtValor_Compra.Text);
        valorTotal = quantidade * valorCompra;
        valorVenda = decimal.Parse(TxtValor_Venda.Text);
            }

    ___________________________________________________________________________
    objProduto.InserirProd(TxtCodigo_Produto.Text, TxtCod_Fornecedor.Text, TxtDescricao_Produto.Text, CmbUnidade.Text, quantidade, valorCompra), valorTotal, valorVenda, Convert.ToDateTime(DtpDataCompra.Text));

    ___________________________________________________________________________
    Isso é o que eu usei na minha Regra de Negócios:

     public void InserirProd(string codigoProduto, string codProd_Fornecedor, string descricao, string unidade, int quantidade, decimal valorCompra, decimal valorTotalCompra, decimal valorVenda, DateTime dataCompra)
            {
                objProdutoDados.InserirProduto(codigoProduto, codProd_Fornecedor, descricao, unidade, quantidade, valorCompra, valorTotalCompra, valorVenda, dataCompra);//Não é necessário converter de novo os parâmetros por que já vem em seus valores próprios.
            } 

    Espero que te ajudou, se sim marque a resposta.

    quarta-feira, 17 de outubro de 2018 06:41
  • Timóteo fiz as melhorias que você indicou, e realmente o código ficou melhor de ler. Mas a mensagem de exceção continuava. Daí tirei o TxtValor_Compra.Text do Método Limpar que eu havia feito e a mensagem parou de aparecer.

    Ainda não é o correto pois o certo seria limpar todas as informações depois de inseridas no banco, mas, pelo menos a mensagem de erro não aparece mais.

    Obrigado a todos!

    quarta-feira, 17 de outubro de 2018 16:50