none
Erro ao converter varchar em Float RRS feed

  • Pergunta

  • Olá Pessoal , estou com um problema a umas 3 semanas sem resolução...

    Estou com problemas ao inserir a venda :

    PRIMEIRA QUERY TESTADA: string cb = "insert Into Invoice_Info([InvoiceNo],[InvoiceDate],[SubTotal],[VATPer],[VATAmount],[DiscountPer],[DiscountAmount],[GrandTotal],[Cash],[Change]) VALUES ('" + txtBillNo.Text.ToString() + "','" + dtpBillDate.Text.ToString() + "','" + float.Parse(txtSubTotal.Text.ToString()) + "','" + float.Parse(txtTaxPer.Text.ToString()) + "','" + float.Parse(txtTaxAmt.Text.ToString()) + "','" + float.Parse(txtDiscountPer.Text.ToString()) + "','" + float.Parse(txtDiscountAmount.Text.ToString()) + "','" + float.Parse(txtTotal.Text.ToString()) + "','" + float.Parse(txtCash.Text.ToString()) + "','" + float.Parse(txtChange.Text.ToString()) + "')";

    SEGUNDA QUERY TESTADA: string cb = "insert Into Invoice_Info([InvoiceNo],[InvoiceDate],[SubTotal],[VATPer],[VATAmount],[DiscountPer],[DiscountAmount],[GrandTotal],[Cash],[Change]) VALUES ('" + txtBillNo.Text.ToString() + "','" + dtpBillDate.Text.ToString() + "','" + Convert.ToDouble(txtSubTotal.Text.ToString()) + "','" + Convert.ToDouble(txtTaxPer.Text.ToString()) + "','" + Convert.ToDouble(txtTaxAmt.Text.ToString()) + "','" + Convert.ToDouble(txtDiscountPer.Text.ToString()) + "','" + Convert.ToDouble(txtDiscountAmount.Text.ToString()) + "','" + Convert.ToDouble(txtTotal.Text.ToString()) + "','" + float.Parse(txtCash.Text.ToString()) + "','" + Convert.ToDouble(txtChange.Text.ToString()) + "')";

    Onde tenho a tabela Invoice_Info:

    InvoiceNo                  nchar(15)
    InvoiceDate          nchar(15)
    SubTotal                  float
    VATPer                  float
    VATAmount          float
    DiscountPer          float
    DiscountAmount  float
    GrandTotal          float
    Cash                          float
    Change                  float

    Estou obtendo o seguinte resultado antes do erro:

    "insert Into Invoice_Info([InvoiceNo],[InvoiceDate],[SubTotal],[VATPer],[VATAmount],[DiscountPer],[DiscountAmount],[GrandTotal],[Cash],[Change]) VALUES ('INV-45477767','24/jan/2015','12,3','0','0','0','0','12,3','20','7,7')"

    Obtendo o erro em ambas as querys...:

    {"Error converting data type varchar to float."}

    Podem me ajudar...

    Obridado !


    Jonathan R. Assunção

    sábado, 24 de janeiro de 2015 20:26

Respostas

  • Jonathan,

    Ao enviar a instrução para o banco, certifique-se de usar "." (ponto) ao invés de "," (vírgula) como separador decimal em valores numéricos. De antemão, notei valores como "12,3" e "7,7" que deveriam estar como "12.3" e "7.7".

    Apenas fazendo um adendo. A forma como vc está codificando, embora funcione após correções, não é o caminho ideal. Sugiro a você pesquisar sobre o uso das classes SqlCommand e SqlParameter para a execução de comandos em uma base. Todo esse esforço de conversão de valores seria desnecessário, sendo que o código também ficaria mais limpo.

    https://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlcommand.parameters(v=vs.110).aspx

    Espero ter ajudado.

    sábado, 24 de janeiro de 2015 21:16

Todas as Respostas

  • Jonathan,

    Ao enviar a instrução para o banco, certifique-se de usar "." (ponto) ao invés de "," (vírgula) como separador decimal em valores numéricos. De antemão, notei valores como "12,3" e "7,7" que deveriam estar como "12.3" e "7.7".

    Apenas fazendo um adendo. A forma como vc está codificando, embora funcione após correções, não é o caminho ideal. Sugiro a você pesquisar sobre o uso das classes SqlCommand e SqlParameter para a execução de comandos em uma base. Todo esse esforço de conversão de valores seria desnecessário, sendo que o código também ficaria mais limpo.

    https://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlcommand.parameters(v=vs.110).aspx

    Espero ter ajudado.

    sábado, 24 de janeiro de 2015 21:16
  • Boa tarde Jonathan,

    A resposta do nosso amigo Renato esta correta, só tem que saber se serve para o que você precisa. Vou marcar como resposta para você receber um alerta e nos avisar se deu certo ou não ok?

    Caso não tenha dado certo por favor desmarque que continuaremos trabalhando a fim de te ajudar ta?

    Abraço


    Ricardo Cortes Microsoft Contingent Staff

    Esse contedo e fornecido sem garantias de qualquer tipo, seja expressa ou implicita.

    MSDN Community Support

    segunda-feira, 26 de janeiro de 2015 17:33
    Moderador