none
Problemas con los decimales con "comas" RRS feed

  • Pregunta

  • PD : tengo que cambiar la SQL con parámetros ahora lo hago , antes de que nadie me riña por eso :)

    Buenas tengo una función que recibe por parámetro unos valores que cuando recibe los valores yo veo que los valores de esfera y cilindro són por ejemplo "0.25" con el punto, pero de todas formas me creo unas variables que són esfera1 y cilindro1 donde fuerzo el "." tal como esta imagen

    Pongo el breakpoint en esfera1 y vemos que el valor es "0.25"

    Pero luego miro en la SQL que se construye y vuelvo a ver el valor con la "," y por lo tanto me da error



    • Editado golfgti6 sábado, 15 de noviembre de 2014 10:25
    sábado, 15 de noviembre de 2014 10:24

Respuestas

  • hola

    lo primero que puedo comentarte es que NUNCA concatnes en un string los valores que asignas a una query sql, es una pesima practica

    tienes que usar parametros, como ser

    DataTable dt = new DataTable();   
    using (SqlConnection conn = new SqlConnection("connection string"))   
    {   
        string query = "select * from <tabla> WHERE campo = @id";   
     
        SqlCommand cmd = new SqlCommand(query, conn);   
        cmd.Parameters.AddWithValue("@id", Convert.ToInt32(TextBox1.Text));   
     
        SqlDataAdapter da = new SqlDataAdapter(cmd);     
        da.Fill(dt);   
    }

    de esta forma es como se asignan los valores, no armando un string


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta golfgti6 sábado, 15 de noviembre de 2014 16:40
    sábado, 15 de noviembre de 2014 12:26
  • con respecto al problema es logico que si finas una cultura al convertir esta espere una coma como separador de decimales

    por eso quita de la conversion el CultureInfo.CreteSpecificCulture()

    deja que tome la cultura de la pc del usuario

    si en su pc defina la cultura en-US podra ingresar valores con punto y los convertira correctamente, pero si en la pc el usuario define es-ES entonces debera escribir una coma como separador

    si tu fijas la cultura entonces debes validar y limitar que haya ingresado una coma

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    • Editado Leandro TuttiniMVP sábado, 15 de noviembre de 2014 12:30
    • Marcado como respuesta golfgti6 sábado, 15 de noviembre de 2014 16:40
    sábado, 15 de noviembre de 2014 12:30

Todas las respuestas

  • hola

    lo primero que puedo comentarte es que NUNCA concatnes en un string los valores que asignas a una query sql, es una pesima practica

    tienes que usar parametros, como ser

    DataTable dt = new DataTable();   
    using (SqlConnection conn = new SqlConnection("connection string"))   
    {   
        string query = "select * from <tabla> WHERE campo = @id";   
     
        SqlCommand cmd = new SqlCommand(query, conn);   
        cmd.Parameters.AddWithValue("@id", Convert.ToInt32(TextBox1.Text));   
     
        SqlDataAdapter da = new SqlDataAdapter(cmd);     
        da.Fill(dt);   
    }

    de esta forma es como se asignan los valores, no armando un string


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta golfgti6 sábado, 15 de noviembre de 2014 16:40
    sábado, 15 de noviembre de 2014 12:26
  • con respecto al problema es logico que si finas una cultura al convertir esta espere una coma como separador de decimales

    por eso quita de la conversion el CultureInfo.CreteSpecificCulture()

    deja que tome la cultura de la pc del usuario

    si en su pc defina la cultura en-US podra ingresar valores con punto y los convertira correctamente, pero si en la pc el usuario define es-ES entonces debera escribir una coma como separador

    si tu fijas la cultura entonces debes validar y limitar que haya ingresado una coma

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    • Editado Leandro TuttiniMVP sábado, 15 de noviembre de 2014 12:30
    • Marcado como respuesta golfgti6 sábado, 15 de noviembre de 2014 16:40
    sábado, 15 de noviembre de 2014 12:30
  • Gracias por la aclaración !!!
    sábado, 15 de noviembre de 2014 16:41