Jump to content

POWERED BY:

Archived

This topic is now archived and is closed to further replies.

André Freitas

[Resolvido] Erro - "Input string was not in a correct format&

Recommended Posts

Pessoal, este erro ta me arrebentando no meio...

 

Tenho uma tabela onde criei na maioria campos tipo Money, e no Page_Load eu defino um valor padrao para os textbox... O codigo funciona, mas quando cliclo no botao INSERIR ele gera o erro "Input string was not in a correct format".

Segue abaixo o codigo que implementei no Page_Load:

 

protected void Page_Load(object sender, EventArgs e)
        {
            //ACESSA OBJETOS NO FORMVIEW E CRIA VARIAVEIS
            TextBox DATA_CADASTRO = (TextBox)FormView1.FindControl("TextBox3");
            TextBox PRECO_CUSTO = (TextBox)FormView1.FindControl("TextBox6");
            TextBox PERCENTUAL_LUCRO = (TextBox)FormView1.FindControl("TextBox7");
            TextBox VALOR_LUCRO = (TextBox)FormView1.FindControl("TextBox8");
            TextBox PRECO_VENDA = (TextBox)FormView1.FindControl("TextBox9");
            TextBox ESTOQUE_MINIMO = (TextBox)FormView1.FindControl("TextBox14");
            TextBox ESTOQUE_MAXIMO = (TextBox)FormView1.FindControl("TextBox15");

            
            if (!IsPostBack)
            {
                DATA_CADASTRO.Text = Convert.ToString(DateTime.Now);
                PRECO_CUSTO.Text = "0,00";
                PERCENTUAL_LUCRO.Text = "0,00";
                VALOR_LUCRO.Text = "0,00";
                PRECO_VENDA.Text = "0,00";
                ESTOQUE_MINIMO.Text = "0,00";
                ESTOQUE_MAXIMO.Text = "0,00";
            }
            Decimal DPRECO_CUSTO;
            Decimal DPERCENTUAL_LUCRO;
            Decimal DVALOR_LUCRO;
            Decimal DPRECO_VENDA;

            if (PRECO_CUSTO.Text != "")
            {
                //CALCULO DO VALOR DO LUCRO
                DPRECO_CUSTO = Decimal.Parse(PRECO_CUSTO.Text);
                DPERCENTUAL_LUCRO = Decimal.Parse(PERCENTUAL_LUCRO.Text);
                DVALOR_LUCRO = (DPRECO_CUSTO / 100) * DPERCENTUAL_LUCRO;
                VALOR_LUCRO.Text = Convert.ToString(DVALOR_LUCRO);

                //CALCULO DO PREÇO DE VENDA
                DPRECO_VENDA = DPRECO_CUSTO + DVALOR_LUCRO;
                PRECO_VENDA.Text = Convert.ToString(DPRECO_VENDA);

           }
       }

Share this post


Link to post
Share on other sites

Em qual linha exatamente?

 

Abraços...

 

Cara, percebi que em todas as paginas que eu faço essas conversoes gera o mesmo erro...

Segue outro exemplo , com erro apontando para "DPRECO = Convert.ToDecimal(PRECO.Text);" no evento selectedindex de um dropdpwnlist

 

//CALCULA VALOR TOTAL

TextBox TOTAL = (TextBox)FormView2.FindControl("TextBox4");

TextBox PRECO = (TextBox)FormView2.FindControl("TextBox1");

TextBox QTDE = (TextBox)FormView2.FindControl("TextBox3");

 

Decimal DTOTAL;

Decimal DPRECO;

Decimal DQTDE;

 

DPRECO = Convert.ToDecimal(PRECO.Text);

DQTDE = Convert.ToDecimal(QTDE.Text);

 

DTOTAL = DPRECO * DQTDE;

TOTAL.Text = Convert.ToString(DTOTAL);

Share this post


Link to post
Share on other sites

 

Em qual linha exatamente?

 

Abraços...

 

Cara, percebi que em todas as paginas que eu faço essas conversoes gera o mesmo erro...

Segue outro exemplo , com erro apontando para "DPRECO = Convert.ToDecimal(PRECO.Text);" no evento selectedindex de um dropdpwnlist

 

 

Bom, isto está ocorrendo por que sua string, não esta no formato correto para ser transformada para Decimal.

Para não gerar o erro, você pode utilizar Decimal.TryParse(), ele retorna um booleano se a conversão foi feita com sucesso.

Porém, você deve verificar quais são os simbolos decimais, se é virgula ou ponto, e é uma boa pratica informar isto ao usuario, caso ele coloque num formato invalido a conversao nao ira funcionar. Para verificar isto você pode utilizar esta propriedade.

System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat

Dentro dela você encontra todas as informações de que precisa.

Share this post


Link to post
Share on other sites

cara, valeu pela atençao...

 

Na verdade eu tinha um campo tipo int que eu estava tentando salvar valores com virgula...

Nao sei se é uma boa pratica... mas eu criei todos os campos com o tipo money para evitar problemas desse tipo...

 

Por ex: Preco, Qtde e Total sao do tipo money...

 

Existe algum incoveniente em trabalhar dessa forma?

 

Obrigado

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.