Principales respuestas
Error repetitivo en BD SQL Server

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 :)
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.
- Marcado como respuesta Enrique M. MontejoModerator viernes, 7 de octubre de 2016 8:31
-
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.- Marcado como respuesta Enrique M. MontejoModerator viernes, 7 de octubre de 2016 8:31
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.
- Marcado como respuesta Enrique M. MontejoModerator viernes, 7 de octubre de 2016 8:31
-
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.- Marcado como respuesta Enrique M. MontejoModerator viernes, 7 de octubre de 2016 8:31
-
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
Pedro Ávila
"El hombre sabio querrá estar siempre con quien sea mejor que él."
Lima - Perú