none
Problema al insertar un dato double en c# usando una base de datos Sql Server 2008, usando procedimientos almacenados RRS feed

  • Pregunta

  • Buenas que tal, soy nuevo programando en c# y estoy teniendo un problema al ingresar un porcentaje desde una caja de texto, estoy usando visual studio 2010, en el sistema convierto el dato de la caja de texto a double, y lo envio a una clase y desde la clase se envia a un procedimiento almacenado en la base de datos que es sqlserver 2008.

    En la tabla y en el procedimiento almacenado declare el campo como numeric(10,2)

    Pero al enviarle el dato en la aplicacion me muestra un error diciendo Error converting data type varchar to decimal, pero en el sistema si paso el dato a double, la verdad soy nuevo y no se porque me esta dando ese error, si alguien pudiera ayudarme se lo agradeceria mucho.

     
    miércoles, 12 de septiembre de 2012 20:47

Todas las respuestas

  • podria ser que lo estes convirtiendo erroneamente, postea tu codigo de conversion y como insertas en el stored procedure,

    yo solo lo convierto asi

    incentivo = Convert.ToDouble(txt_incentivot1.Text);
    y lo inserto en el sp igual con valor decimal(10,2), te recomiendo intenta convertirlo a float en ves de double, nos cuentas, mas al rato te posteo el codigo como inserto en el sp, saludos

    miércoles, 12 de septiembre de 2012 22:24
  • en la aplicacion asi convierto a double:

    double porc;               

    porc = Convert.ToDouble(txt_porc.Text);


    luego asi le mando los valores a la clase:       

    	

    Class_Descuentos desc = new Class_Descuentos();

    desc.InsertarDescuento(int.Parse(lbl_codigo.Text), txt_des.Text, porc, estado);

    Y asi le mando los valores desde la clase al store procedure:

       public string InsertarDescuento(int codigo, string des, double porc, string estado)
            {
                // Se abre la conexion para guardar la informacion en el procedimiento almacenado
                string strQuery = "Ven_Desc_Ins'" + codigo + "' , '" + des + "' , '" + porc + "' , '" + estado + "'";
                SqlCommand comando = new SqlCommand(strQuery, con_to_db);
                int resultado;
                con_to_db.Open();
                resultado = comando.ExecuteNonQuery();
                con_to_db.Close();
                return "Ingresado con éxito";
    
            }
    

    Siempre me ha funcionado bien, hasta ahora que tope con estos decimales

    Saludos

                    
    miércoles, 12 de septiembre de 2012 23:07
  • en tu insert veo que haces en esta parte:

     stringstrQuery = "Ven_Desc_Ins'" +codigo + "' , '" +des + "' , '" +porc + "' , '" +estado + "'";
     

    en la parte donde concatenas "porc" le pones comillas y asi el procedimiento te lo tomara como cadena y por eso te marca el error, quitale las comillas y lo ejecutas y nos cuentas, saludos.

    si la respuesta de ayudo votala como util, si resolvio tu duda marcala como respuesta

    jueves, 13 de septiembre de 2012 13:22
  • Gracias por la respuesta amigo, pero ese no era el problema, todo el codigo estaba bien, el problema era con el SO, tenia configurado que para los simbolos de decimales usara "," y asi lo mandaba hacia la base de datos, lo que hice fue cambiar eso poner "." en la configuracion y eso fue todo. Pero gracias igual por intentar ayudarme.
    jueves, 13 de septiembre de 2012 15:49