none
Error repetitivo en BD SQL Server RRS feed

  • Pregunta

  • Muy buenos días, estaba trabajando en un programita simple en el que guardo datos en una bd local como nombres, tiempos, etc.

    El problema surgió cuando sin querer en un campo donde tenia que llenar numeros puse letras y ahi me salio el error "La conversión de la cadena "fghfgh" en el tipo 'integer' no es valida". Sin embargo no termina ahí, cada vez que intento hacer lo que sea con la base de datos, ya sea querer escribir, leer, actualizar (borrar me deja), me sale el mismo error y no se completa la acción.

    Como podría resolver esto?

    Desde ya muchas gracias :)

    domingo, 2 de octubre de 2016 10:49

Respuestas

  • Utiliza las herramientas de depuración. Con el debugger de Visual Studio, ejecuta el programa paso a paso hasta que localices la instrucción exacta en la que se produce el error. Casi seguro que será algún sitio donde toma ese campo que tiene letras y realiza con él alguna operación que requiere convertirlo a numérico, y por eso falla. Como medida provisional para salir del paso puedes modificar manualmente ese campo usando las herramientas de administración de SQL Server. Después, y para que no te vuelva a pasar, asegúrate de que corriges ese campo de la base de datos para que no sea de tipo carácter sino de tipo numérico, y también revisa la aplicación que accede a la base de datos para que no acepte datos no numéricos en ese campo.
    domingo, 2 de octubre de 2016 13:25
  • SalvadorB,

    El error es por demás descriptivo, obtienes el tipo de excepción 'FormatException' porque se intenta convertir una cadena a un tipo numérico, es claro que no puedes convertir el valor 'fghfgh' a una representación numérica.

    Siempre que operes con un valor capturado a partir del ingreso de un usuario debes de asegurarte que contenga el formato adecuado, si esperas un valor numérico debes de restringir al usuario el ingreso de sólo números, caso contrario debes de validar como última instancia el valor posterior al ingreso y para ello tienes algunos métodos como por ejemplo TryParse().

    Dim result As Integer = 0
    
    If Int32.TryParse(txtNumero.Text, result) Then
    	'El valor ingresado corresponde a un valor numérico (Int32)
    Else
    	'El valor ingresado es incorrecto
    End If

    Finalmente, ¿qué tipo de dato es la columna que almacena los valores numéricos? es de esperar que sea un tipo integer o alguna variante ya que si es un tipo que permite valores alfanuméricos (varchar(n)) quizá el problema no lo estás obteniendo al grabar el valor sino al intentar leer y asignar a una variable de tipo numérico.



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    domingo, 2 de octubre de 2016 18:39

Todas las respuestas

  • Utiliza las herramientas de depuración. Con el debugger de Visual Studio, ejecuta el programa paso a paso hasta que localices la instrucción exacta en la que se produce el error. Casi seguro que será algún sitio donde toma ese campo que tiene letras y realiza con él alguna operación que requiere convertirlo a numérico, y por eso falla. Como medida provisional para salir del paso puedes modificar manualmente ese campo usando las herramientas de administración de SQL Server. Después, y para que no te vuelva a pasar, asegúrate de que corriges ese campo de la base de datos para que no sea de tipo carácter sino de tipo numérico, y también revisa la aplicación que accede a la base de datos para que no acepte datos no numéricos en ese campo.
    domingo, 2 de octubre de 2016 13:25
  • SalvadorB,

    El error es por demás descriptivo, obtienes el tipo de excepción 'FormatException' porque se intenta convertir una cadena a un tipo numérico, es claro que no puedes convertir el valor 'fghfgh' a una representación numérica.

    Siempre que operes con un valor capturado a partir del ingreso de un usuario debes de asegurarte que contenga el formato adecuado, si esperas un valor numérico debes de restringir al usuario el ingreso de sólo números, caso contrario debes de validar como última instancia el valor posterior al ingreso y para ello tienes algunos métodos como por ejemplo TryParse().

    Dim result As Integer = 0
    
    If Int32.TryParse(txtNumero.Text, result) Then
    	'El valor ingresado corresponde a un valor numérico (Int32)
    Else
    	'El valor ingresado es incorrecto
    End If

    Finalmente, ¿qué tipo de dato es la columna que almacena los valores numéricos? es de esperar que sea un tipo integer o alguna variante ya que si es un tipo que permite valores alfanuméricos (varchar(n)) quizá el problema no lo estás obteniendo al grabar el valor sino al intentar leer y asignar a una variable de tipo numérico.



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    domingo, 2 de octubre de 2016 18:39
  • Hola @SalvadorB

    Quiero agreagar a las recomendaciones de Alberto y Willams

    El problema surgió cuando sin querer en un campo donde tenia que llenar numeros puse letras y ahi me salio el error "La conversión de la cadena "fghfgh" en el tipo 'integer'

    Que debes validar los conbtroles donde ingresas los datos para que acepten números, letras si estas trabajando en una app Windows Forms te puede servir unos controles personalizados que te validan estos tipos de errores TextBox-ComboBox

    Espero te sea de utilidad...


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    lunes, 3 de octubre de 2016 16:42