none
la cadena de entrada no tiene el formato correcto RRS feed

  • Pregunta

  • Hola buenas tardes , estoy haciendo un sistema en tres capas la cuestión es que me tira un error de el formato de la cadena no es correcta cuando le paso un textBox vacio cuando en el código tengo un Convert.toDecimal(this.textBox.text). la BD admite datos null y si paso un this.texbox1.Text (vacio) no me tira error es solo con los campos en que tengo los Convert.toInt32() y Convert.ToDecimal(), como puedo solucionarlo lo estoy haciendo que cuando detecte el error les pase 0 pero no se si es lo optimo .
    espero haberme explicado gracias ! 
    lunes, 24 de julio de 2017 20:17

Respuestas

  • Gracias Por resolver mis dudas , aunque lo resolvi seteando en los text en su propiedad Text 0.00 y si el usuario quiere pasar un dato vacio con una validacion de campo. 
    miércoles, 26 de julio de 2017 13:50

Todas las respuestas

  • Efectivamente, un valor vacío no es aceptable para las funciones Convert.ToInt32 y Convert.ToDecimal, que requieren un valor que realmente represente un número, y el "vacío" no lo consideran número.

    Puedes usar int.TryParse y decimal.TryParse, te te devuelven verdadero/falso según que la conversión sea o no exitosa, y así en caso de que te digan que no lo fue puedes salvar un cero usando un "if", si es que así quieres que se comporte.

    Documentación y ejemplo aquí:

    https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx


    int datoAGrabar;
    bool ok = int.TryParse(textBox1.Text, out datoAGrabar);
    if (!ok) datoAGrabar = 0;
    // Ahora grabas en la base de datos datoAGrabar

    lunes, 24 de julio de 2017 20:39
    Moderador
  • hola

    pero los campos int y decimal permiten null ? porque si lo permite deberias valor si tienes un numero valido y pasar ese valor o null

    si tienes algo como ser

    public void Insertar(int? param1){
    
    }



    podrias valor si pasas el valor o no

    int? param1 = null;
    
    int valor = 0;
    
    if(int.TryParse(TextBox1.Text, out valor)){
    
       param1 = valor;
    
    }
    
    Insertar(param1);

    la idea es que luego uses el null del parametro para asignar el parametro en el INSERT, pero ojo porque deberas convertirlo a DBNull.Value

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 25 de julio de 2017 2:13
  • Gracias Por resolver mis dudas , aunque lo resolvi seteando en los text en su propiedad Text 0.00 y si el usuario quiere pasar un dato vacio con una validacion de campo. 
    miércoles, 26 de julio de 2017 13:50