none
En la consulta SQL me cambia el ".(punto)" por la ",(coma)" , ayuda por favor ayuda RRS feed

  • Pregunta

  • Amigos buenas les explico.

    resulta que estoy programando en C# y  necesito guardar un decimal, en la base de datos, el tipo de datos es "float" 

    tengo este codigo; 

    string porcentajetarea = Tareascom.Rows[0][0].ToString();

    string contador = dttrabajo.Rows[0][0].ToString();              

                   

               

    double calculoporcentaje = (double)(Convert.ToInt16(contador) * 100) / (double)Convert.ToInt16(porcentajetarea);           

    estadopauta(Convert.ToDouble(calculoporcentaje.ToString("0.00")));//Aqui le doy el formato de dos decimales y el formato es con “.” (punto)"

    Dando un ejemplo, "estadopauta= 16.67" CON PUNTO (.) Y tengo una query para actualizar este dato en la base de datos que es así 

    queryEPauta.Append("UPDATE EstadoPauta SET Estado_Cierre = 'EJECUCION', Porc_Pauta =" + estadopauta);

    queryEPauta.Append(" WHERE Id_Pauta ="+Id_Pauta.ToString()+"AND Estado_Cierre = 'PENDIENTE'OR (Id_Pauta="+Id_Pauta.ToString()+"AND Estado_Cierre= 'EJECUCION')");

    el valor de la query seria este {UPDATE EstadoPauta SET Estado_Cierre = 'EJECUCION', Porc_Pauta =16,67 WHERE Id_Pauta =1AND Estado_Cierre = 'PENDIENTE'OR (Id_Pauta=1AND Estado_Cierre= 'EJECUCION')}

    el 16.67 se me cambia a coma(,) y aquí es el problema, ya que me da error por que la query tiene que ser con punto.

    Cual puede ser el error, si después de eso no hago mas manipulaciones del numero que vienen con punto (.)

    Me digieren que podía ser el formato que tiene mi PC pero no se como arreglar eso

    Muchísimas gracias desde ya.

    lunes, 25 de marzo de 2013 15:45

Respuestas

  • Ninguna sentencia SQL admite como float números decimales con coma...basicamente porque se usa para separar campos en las selects,updates...dicho esto lo que ocurre es que tu mandas el decimal con punto siempre y luego cuando recuperas ese campo con una consulta,según tengas configurado el idioma en el SQL servr así veras el campo decimal...

    Esoro haber aclarado algo de esto.

    Si probadas la consulta que tu dices veras que te da un erro de sintaxis...

    Saludos


    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos

    • Marcado como respuesta Omar Ortiz miércoles, 15 de mayo de 2013 18:08
    lunes, 25 de marzo de 2013 18:09
    Moderador

Todas las respuestas

  • Hola Ruben revisa este enlace acerca de la referencia cultural te puede ser útil:

    Culture


    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos

    lunes, 25 de marzo de 2013 15:53
  • hola

    lo primero que podria comentar es que deberias usar parametros, la forma que aplicas concatenando los valores en un string no es recomendable

    si tienes una variable decimal y aisgnas a un parametro no se vera afectada por la puntuacion

    using (SqlConnection conn = new SqlConnection("<connection string>")) { conn.Open(); string query = "UPDATE EstadoPauta SET Estado_Cierre = 'EJECUCION', Porc_Pauta = @estadopauta ..."; SqlCommand cmd = new SqlCommand(query, conn); cmd.Parameters.AddWithValue("@param1", estadopauta);

    .

    . cmd.ExecuteNonQuery(); }


    por supuesto reemplaza el resto de los valores por parametros

    si puedes convertir a un decimal respetando los decimales al asignarlo los parametros sera transparente

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    lunes, 25 de marzo de 2013 15:59
  • Puede parecer algo fuera de lo comun, pero te fijastes en la configuracion Regional?

    ¿Cómo establecer la configuración regional de Windows XP?

    En el paso 5, al costado izquierda hay un boton que dice "Perzonalizar", entras y el primer item dice "Simbolo de decimal", fijate ahi y comentas.

    Saludos.

    • Propuesto como respuesta tmpDASH miércoles, 27 de marzo de 2013 19:08
    lunes, 25 de marzo de 2013 17:33
  • Ninguna sentencia SQL admite como float números decimales con coma...basicamente porque se usa para separar campos en las selects,updates...dicho esto lo que ocurre es que tu mandas el decimal con punto siempre y luego cuando recuperas ese campo con una consulta,según tengas configurado el idioma en el SQL servr así veras el campo decimal...

    Esoro haber aclarado algo de esto.

    Si probadas la consulta que tu dices veras que te da un erro de sintaxis...

    Saludos


    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos

    • Marcado como respuesta Omar Ortiz miércoles, 15 de mayo de 2013 18:08
    lunes, 25 de marzo de 2013 18:09
    Moderador