none
Convertir la coma decimal, a un punto, en una caja de texto, con la clase Culture

    Question

  • Como puedo convertir la coma decimal, a un punto, quisera hacerlo con la clase Culture, pero no le entiendo al ejemplo que me dieron, desearia un ejemplo detallado de como realizar dicha conversion. Al colocar como en el ejemplo

    Ej: 128,00 ---> 128.00

    Me muestre 128.00, por cada coma decimal me coloque el punto.

    Gracias por su tiempo


    • Edited by RealMaster Monday, October 03, 2011 5:04 AM
    Monday, October 03, 2011 4:46 AM

Answers

  • "RealMaster" escribió:

    > es que si el cliente coloca Ej: 128,00, pues
    > en el sistema da error en adicion de la
    > informacion, no como de esta manera Ej:128.00

    Yo siempre escribo 128,00 (con la coma) y mi sistema no da un error a la hora de insertar nuevos registros. Habrá que ver lo que estás haciendo para que obtengas un error, que si es así, desde luego está mal.

    Si utilizaras parámetros para especificar los valores decimales en las consultas SQL de acción (INSERT, UPDATE o DELETE), verás como no tendrías problemas a la hora de insertar nuevos registros, aunque el usuario haya escrito la coma o el punto decimal.

    > ademas el cliente desea ver los numeros con puntos
    > decimales tanto en el lenguaje de programacion
    > como en la base de datos.

    También tu cliente ve los datos en la propia base de datos. ;-)

    Si tu cliente quiere ver así los números decimales, pienso que la solución es bien fácil. Simplemente tienes que decirle que modifique la configuración regional de su sistema operativo y que eliga una configuración basada en el idioma inglés, y verá los números decimales, tanto en tu aplicación como en la base de datos, con el punto decimal como separador decimal, con lo que no tienes que hacer nada en tu aplicación.

    Si modifica la configuración regional, lo mismo tiene problemas con otros programas que no respeten la configuración regional que en cada momento tenga establecida el usuario en la configuración regional de su sistema operativo. Por éste motivo es por el que siempre digo que es nuestra aplicación la que se tiene que adaptar a las preferencias del usuario (incluida la configuración regional), no al revés. :-)


    Enrique Martínez
      [MS MVP - VB]

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.

    Tuesday, October 04, 2011 6:00 AM
  • claro el tema es que no deberias ahber concatenado el valor en un string, sino que deberias suar parametros

    Dim connstring As String = "connection string"
    Using cn As New SqlConnection(connstring)
        cn.Open()
       
        Dim sql As String = "INSERT INTO ventas (venta) VALUES (@monto)"
        Dim cmd As New SqlCommand(sql, cn)
        cmd.Parameters.AddwithValue("@monto", monto )
       
        cmd.ExecuteNonQuery()
    
    End Using
    

    de esta forma si deberia funcionar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Tuesday, October 04, 2011 2:39 AM

All replies

  • "RealMaster" preguntó:

    > Como puedo convertir la coma decimal, a un punto

    Si no es mucho preguntar, ¿cual es el motivo que te lleva a querer hacer eso?

    Te comento que tu aplicación se tiene que adaptar a las preferencias que el usuario tenga establecidas en su sistema operativo, pero no al contrario.

    Si el usuario utiliza la 'coma' como separador decimal, será con éste carácter con el que trabaje tu aplicación, por lo que no tienes que convertir la 'coma decimal' en el 'punto decimal'.

     


    Enrique Martínez
      [MS MVP - VB]

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.

    Monday, October 03, 2011 6:40 AM
  • hola

    pero esto donde es que neceitas hacerlo ?

    podrias suar la cultura de esta forma

    Dim numero As String = "128,00"

    Dim val As Double = Convert.ToDouble(numero, CultureInfo.CreateSpecificCulture("es-ES"))

    con eso ya tienes el valor numerico correctamente representado en una variable del tipo correcto, despues de eso si la cultura de tu aplciacion es por ejemplo en-US solo agregara el punto decimal cuando lo muestres en algun control

     

    igual lo que recomendaria es que no pases de coma a punto, sino que lo valides, solo aplcia eso una validacion

    Dim val As Decimal = 0

    If Not Decimal.TryParse(txtNumero.Text, val) Then

        MessageBox.Show("El valor numerico es incorrecto, valide el formato ingresado")

        Return

    End If

    como veras si el usuario ingreeso un valor numerico que no respecta la cultura actual de la aplciacion se lo informas, ya que no pasara el TryParse()

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Monday, October 03, 2011 10:32 AM
  • ¿cual es el motivo que te lleva a querer hacer eso?

    Te comento que tu aplicación se tiene que adaptar a las preferencias que el usuario tenga establecidas en su sistema operativo, pero no al contrario

    Bueno es que si el cliente coloca Ej: 128,00, pues en el sistema da error en adicion de la informacion, no como de esta manera Ej:128.00, ademas el cliente desea ver los numeros con puntos decimales tanto en el lenguaje de programacion como en la base de datos.


    • Edited by RealMaster Tuesday, October 04, 2011 2:11 AM
    Tuesday, October 04, 2011 2:10 AM
  • Gracias Leandro, utilice esta parte del codigo:

    Dim numero As String = "128,00"

    Dim val As Double = Convert.ToDouble(numero, CultureInfo.CreateSpecificCulture("es-ES"))

    me funciona hasta la parte del:

    comando =

    New SqlCommand("INSERT INTO ventas (venta) VALUES (" & monto & ")", objconexion)

    nose que le hace el comando a clausula de la adcion que me lo convierte de nuevo en coma y me da un error, porque hay que mandar con punto decimal esta consulta.

    Tuesday, October 04, 2011 2:15 AM
  • claro el tema es que no deberias ahber concatenado el valor en un string, sino que deberias suar parametros

    Dim connstring As String = "connection string"
    Using cn As New SqlConnection(connstring)
        cn.Open()
       
        Dim sql As String = "INSERT INTO ventas (venta) VALUES (@monto)"
        Dim cmd As New SqlCommand(sql, cn)
        cmd.Parameters.AddwithValue("@monto", monto )
       
        cmd.ExecuteNonQuery()
    
    End Using
    

    de esta forma si deberia funcionar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Tuesday, October 04, 2011 2:39 AM
  • "RealMaster" escribió:

    > es que si el cliente coloca Ej: 128,00, pues
    > en el sistema da error en adicion de la
    > informacion, no como de esta manera Ej:128.00

    Yo siempre escribo 128,00 (con la coma) y mi sistema no da un error a la hora de insertar nuevos registros. Habrá que ver lo que estás haciendo para que obtengas un error, que si es así, desde luego está mal.

    Si utilizaras parámetros para especificar los valores decimales en las consultas SQL de acción (INSERT, UPDATE o DELETE), verás como no tendrías problemas a la hora de insertar nuevos registros, aunque el usuario haya escrito la coma o el punto decimal.

    > ademas el cliente desea ver los numeros con puntos
    > decimales tanto en el lenguaje de programacion
    > como en la base de datos.

    También tu cliente ve los datos en la propia base de datos. ;-)

    Si tu cliente quiere ver así los números decimales, pienso que la solución es bien fácil. Simplemente tienes que decirle que modifique la configuración regional de su sistema operativo y que eliga una configuración basada en el idioma inglés, y verá los números decimales, tanto en tu aplicación como en la base de datos, con el punto decimal como separador decimal, con lo que no tienes que hacer nada en tu aplicación.

    Si modifica la configuración regional, lo mismo tiene problemas con otros programas que no respeten la configuración regional que en cada momento tenga establecida el usuario en la configuración regional de su sistema operativo. Por éste motivo es por el que siempre digo que es nuestra aplicación la que se tiene que adaptar a las preferencias del usuario (incluida la configuración regional), no al revés. :-)


    Enrique Martínez
      [MS MVP - VB]

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.

    Tuesday, October 04, 2011 6:00 AM