Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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);

           }
       }

Compartilhar este post


Link para o post
Compartilhar em outros 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);

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.