Jump to content
Felipe Machado

[Resolvido] Inserção de campo double no banco de dados

Recommended Posts

Felipe Machado

Boa tarde gostaria de saber como inserir valor do tipo double no banco de dados

números inteiros estão indo normalmente mas quando vem a bendita  virgula (",")

http://image.prntscr.com/image/b8fac8b7ef714f58be4568599b92a032.png

o programa gera um erro

Citação

You have an error in your SQL syntax; check the manual that correspondes to your MariaDB server version for the right syntax to use near '9 where codigobarra = 70040040053' at line 1

Já tentei usar replace(",",".")

Mas ele retorna como numero inteiro

connection()
        Dim val As Double
        val = Valor.Text.Replace(",", ".")

        Try
            SQL = "UPDATE produtos set quantidade = " & val & " where codigobarra = " & Codigo.Text & ""
            cmd = New MySqlCommand(SQL, conn)
            cmd.ExecuteNonQuery()
            MsgBox(val)
            cmd = Nothing
        Catch ex As MySqlException
            MsgBox(ex.Message)
        End Try

        conn.Close()
        quant = Nothing
        val = Nothing

Se alguém puder me ajudar agradeceria muito.

Share this post


Link to post
Share on other sites
apocsantos

Boa noite,

Creio que isso se prende com as definições regionais do sistema operativo "regional settings"



connection()
        Dim val As Double
        ''val = Valor.Text.Replace(",", ".")
        double val = double.Parse(Valor.Text, NumberStyles.AllowDecimalPoint, CultureInfo.CurrentCulture); //parse com uso das regional settings"
        Try
            SQL = "UPDATE produtos set quantidade = " & val & " where codigobarra = " & Codigo.Text & ""
            cmd = New MySqlCommand(SQL, conn)
            cmd.ExecuteNonQuery()
            MsgBox(val)
            cmd = Nothing
        Catch ex As MySqlException
            MsgBox(ex.Message)
        End Try

        conn.Close()
        quant = Nothing
        val = Nothing

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Share this post


Link to post
Share on other sites
Felipe Machado
20 horas atrás, apocsantos disse:

Boa noite,

Creio que isso se prende com as definições regionais do sistema operativo "regional settings"




connection()
        Dim val As Double
        ''val = Valor.Text.Replace(",", ".")
        double val = double.Parse(Valor.Text, NumberStyles.AllowDecimalPoint, CultureInfo.CurrentCulture); //parse com uso das regional settings"
        Try
            SQL = "UPDATE produtos set quantidade = " & val & " where codigobarra = " & Codigo.Text & ""
            cmd = New MySqlCommand(SQL, conn)
            cmd.ExecuteNonQuery()
            MsgBox(val)
            cmd = Nothing
        Catch ex As MySqlException
            MsgBox(ex.Message)
        End Try

        conn.Close()
        quant = Nothing
        val = Nothing

Cordiais cumprimentos,

Apocsantos

Obrigado pela resposta.

está dando erro, 

http://image.prntscr.com/image/841573990ef64c33a734a0a9cf3bce9d.png

Estou usando visual basic 2010 epress

Share this post


Link to post
Share on other sites
apocsantos

Boa tarde,

Falta no inicio do código o imports

Imports System.Globalization

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Share this post


Link to post
Share on other sites
apocsantos

Boa tarde,

Ok, nesse caso o Mysql aparentemente estará a usar o "." como caracter de separação decimal e o sistema operativo o ","  .

 

Imports System.Globalization

connection()
        Dim val As Double
        ''val = Valor.Text.Replace(",", ".")
        double val = double.Parse(Valor.Text, NumberStyles.AllowDecimalPoint, new NumberFormatInfo() { NumberDecimalSeparator = "." }); //parse forçando o caracter decimal a ser o ponto
        Try
            SQL = "UPDATE produtos set quantidade = " & val & " where codigobarra = " & Codigo.Text & ""
            cmd = New MySqlCommand(SQL, conn)
            cmd.ExecuteNonQuery()
            MsgBox(val)
            cmd = Nothing
        Catch ex As MySqlException
            MsgBox(ex.Message)
        End Try

        conn.Close()
        quant = Nothing
        val = Nothing

Não deve estar muito longe disto, mas não tive oportunidade de testar.

 

Outra alternativa

 

Imports System.Globalization


NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ".";

connection()
        Dim val As Double
        ''val = Valor.Text.Replace(",", ".")
        double val = double.Parse(Valor.Text, NumberStyles.AllowDecimalPoint, new NumberFormatInfo() { NumberDecimalSeparator = "." }); //parse forçando o caracter decimal a ser o ponto
val.ToString(nfi); //força o ponto a ser o separador decimal

Try
            SQL = "UPDATE produtos set quantidade = " & val & " where codigobarra = " & Codigo.Text & ""
            cmd = New MySqlCommand(SQL, conn)
            cmd.ExecuteNonQuery()
            MsgBox(val)
            cmd = Nothing
        Catch ex As MySqlException
            MsgBox(ex.Message)
        End Try

        conn.Close()
        quant = Nothing
        val = Nothing

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Share this post


Link to post
Share on other sites
Felipe Machado

Olá Boa tarde desculpa pela demora na resposta.

é o seguinte minha query estava errada.

connection()
        Dim val As Double
        

Try							'O erro está aqui estava mandando alterar quantidade em vez do valor'	
  			'SQL = "UPDATE produtos set Valor = " & val & " where codigobarra = " & Codigo.Text & ""'
            SQL = "UPDATE produtos set quantidade = " & Valor.Text.Replace(",", ".") & " where codigobarra = " & Codigo.Text & ""
            cmd = New MySqlCommand(SQL, conn)
            cmd.ExecuteNonQuery()
            MsgBox(val)
            cmd = Nothing
        Catch ex As MySqlException
            MsgBox(ex.Message)
        End Try

        conn.Close()
        quant = Nothing
        val = Nothing

Obrigado pela ajuda e desculpa pela demora.

tópico resolvido.

Share this post


Link to post
Share on other sites
Dj Letomix
Em Tuesday, October 04, 2016 às 20:00, Felipe Machado disse:

Boa tarde gostaria de saber como inserir valor do tipo double no banco de dados

números inteiros estão indo normalmente mas quando vem a bendita  virgula (",")

http://image.prntscr.com/image/b8fac8b7ef714f58be4568599b92a032.png

o programa gera um erro

Já tentei usar replace(",",".")

Mas ele retorna como numero inteiro


connection()
        Dim val As Double
        val = Valor.Text.Replace(",", ".")

        Try
            SQL = "UPDATE produtos set quantidade = " & val & " where codigobarra = " & Codigo.Text & ""
            cmd = New MySqlCommand(SQL, conn)
            cmd.ExecuteNonQuery()
            MsgBox(val)
            cmd = Nothing
        Catch ex As MySqlException
            MsgBox(ex.Message)
        End Try

        conn.Close()
        quant = Nothing
        val = Nothing

Se alguém puder me ajudar agradeceria muito.

Boas...

Acrescenta cdbl  no textbox ficaria

Cdbl(codigo.text)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.