Principales respuestas
La conversión de la cadena "PROYECTOS" en el tipo 'Integer' no es válida

Pregunta
-
Buenos dias,
Estoy trabajando en visual basic 2005 pero tengo un error y por mas que busco no lo encuentro y espero me puedan ayudar llevo dos dias buscando una solucion.
Mi problema es cuando lo ejecuto todo corre bien sin incidentes ni errores pero despues de llenar los datos en los respectivos textbox y combobox le doy clic al boton Agregar y me marca el error con el mensaje "La conversión de la cadena "PROYECTOS" en el tipo 'Integer' no es válida" tengo este codigo:
Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
Dim cn As New SqlConnection(servlng)
cn.Open()
Dim cm As New SqlCommand
Dim dt As New DataTable
Dim mon As String
mon = cmbMon.Text
With cm
.Connection = cn
.CommandType = CommandType.Text
.CommandText = "INSERT INTO PARTIDAS (ROWNUM, IDREQ, DEPTO, PARTNUM, IDCOMPRA, CANTIDAD, TIPO, DESCRIP, PREUNI, IVAPER, SUBTOTAL, IVA, IEPS, REITVA, RETISR, TOTAL, PROVREAL, FACTPROV, ESTATUS, MONEDA, COMENTA, RECIBIDO, PENDIENTE, REQCER) VALUES (@ROWNUM, @IDREQ, @DEPTO, @PARTNUM, @IDCOMPRA, @CANTIDAD, @TIPO, @DESCRIP, @PREUNI, @IVAPER, @SUBTOTAL, @IVA, @IEPS, @RETIVA, @RETISR, @TOTAL, @PROVREAL, @FACTSPROV, @ESTATUS, @MONEDA, @COMENTA, @RECIBIDO, @PENDIENTE, @REQCER)"
.Parameters.Add("@ROWNUM", SqlDbType.Int)
.Parameters.Add("@IDREQ", SqlDbType.Int)
.Parameters.Add("@DEPTO", SqlDbType.Char, cmbDep.Text)
.Parameters.Add("@PARTNUM", SqlDbType.Int, "")
.Parameters.Add("@IDCOMPRA", SqlDbType.Int, cmbOC.Text)
.Parameters.Add("@CANTIDAD", SqlDbType.Float, txtCan.Text)
.Parameters.Add("@TIPO", SqlDbType.VarChar, cmbTipo.Text)
.Parameters.Add("@DESCRIP", SqlDbType.VarChar, rtbDescr.Text)
.Parameters.Add("@PREUNI", SqlDbType.Float, txtPreUni.Text)
.Parameters.Add("@IVAPER", SqlDbType.VarChar, "")
.Parameters.Add("@SUBTOTAL", SqlDbType.Float, txtsubtot.Text)
.Parameters.Add("@IVA", SqlDbType.Float, cmbIVA.Text)
.Parameters.Add("@IEPS", SqlDbType.Float, "")
.Parameters.Add("@RETIVA", SqlDbType.Float, "")
.Parameters.Add("@RETISR", SqlDbType.Float, "")
.Parameters.Add("@TOTAL", SqlDbType.Float, txtTot.Text)
.Parameters.Add("@PROVREAL", SqlDbType.VarChar, cmbProv.Text)
.Parameters.Add("@FACTSPROV", SqlDbType.VarChar, "")
.Parameters.Add("@ESTATUS", SqlDbType.Int, "")
.Parameters.Add("@MONEDA", SqlDbType.Char, cmbMon.Text)
.Parameters.Add("@COMENTA", SqlDbType.VarChar, "")
.Parameters.Add("@RECIBIDO", SqlDbType.Float, "")
.Parameters.Add("@PENDIENTE", SqlDbType.Float, "")
.Parameters.Add("@REQCER", SqlDbType.Int, "")
.ExecuteNonQuery()
End With
MsgBox("Partida agregada exitosamente", MsgBoxStyle.Information, "Mensaje del Sistema")
cn.Close()
End Sub
Respuestas
-
"La conversión de la cadena "PROYECTOS" en el tipo 'Integer' no es válida"
¿Es que acaso el error que obtienes no es por demás descriptivo? Algún valor de parámetro intenta establecer una cadena "PROYECTOS" en una columna que es de tipo entero (numérico).
Por otro lado, cada tipo que defines debe de corresponder con el valor que contiene, ¿es correcto lo siguiente?
.Parameters.Add("@PARTNUM", SqlDbType.Int, "")
¿Estás asignando una cadena vacía a un tipo numérico?. Revisa cada parámetro y corrobora que los valores ingresados sean del tipo que lo define, créeme que la revisión tomará menos de los 2 días que llevas intentando "cazar" al error. La estructura debe ser la siguiente:
.Parameters.Add("@PARTNUMD", SqlDbType.Int).Value = 0;
Coméntanos como te fue.
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
- Marcado como respuesta Enrique M. MontejoModerator miércoles, 10 de agosto de 2016 4:52
-
Que tal amigo, podes verificar estos tipos de datos. En caso que sea int si acepta null, pasas null o DBNull.Value o 0(cero), de tal modo no pases vacio.
.Parameters.Add("@ROWNUM", SqlDbType.Int) .Parameters.Add("@IDCOMPRA", SqlDbType.Int, cmbOC.Text) .Parameters.Add("@PARTNUM", SqlDbType.Int, "") .Parameters.Add("@PARTNUM", SqlDbType.Int, "") .Parameters.Add("@ESTATUS", SqlDbType.Int, "") .Parameters.Add("@REQCER", SqlDbType.Int, "")
_________________________________________________________________________________________
OBS: Favor vota si te es útil la información.
Saludos
Bader Molinas - Paraguay
https://deveintel.wordpress.com/
- Editado Bader Molinas martes, 9 de agosto de 2016 15:33
- Marcado como respuesta Enrique M. MontejoModerator miércoles, 10 de agosto de 2016 4:52
-
Hola Monserrat Núñez
al parecer estás intentando asignar un valor string a un integer, podrías comentarnos en que parámetro va el texto "PROYECTOS" por favor, para poder ayudarte verificando el problema.
Saludos
Javier
- Marcado como respuesta Enrique M. MontejoModerator miércoles, 10 de agosto de 2016 4:52
Todas las respuestas
-
Hola Monserrat Núñez
al parecer estás intentando asignar un valor string a un integer, podrías comentarnos en que parámetro va el texto "PROYECTOS" por favor, para poder ayudarte verificando el problema.
Saludos
Javier
- Marcado como respuesta Enrique M. MontejoModerator miércoles, 10 de agosto de 2016 4:52
-
"La conversión de la cadena "PROYECTOS" en el tipo 'Integer' no es válida"
¿Es que acaso el error que obtienes no es por demás descriptivo? Algún valor de parámetro intenta establecer una cadena "PROYECTOS" en una columna que es de tipo entero (numérico).
Por otro lado, cada tipo que defines debe de corresponder con el valor que contiene, ¿es correcto lo siguiente?
.Parameters.Add("@PARTNUM", SqlDbType.Int, "")
¿Estás asignando una cadena vacía a un tipo numérico?. Revisa cada parámetro y corrobora que los valores ingresados sean del tipo que lo define, créeme que la revisión tomará menos de los 2 días que llevas intentando "cazar" al error. La estructura debe ser la siguiente:
.Parameters.Add("@PARTNUMD", SqlDbType.Int).Value = 0;
Coméntanos como te fue.
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
- Marcado como respuesta Enrique M. MontejoModerator miércoles, 10 de agosto de 2016 4:52
-
Que tal amigo, podes verificar estos tipos de datos. En caso que sea int si acepta null, pasas null o DBNull.Value o 0(cero), de tal modo no pases vacio.
.Parameters.Add("@ROWNUM", SqlDbType.Int) .Parameters.Add("@IDCOMPRA", SqlDbType.Int, cmbOC.Text) .Parameters.Add("@PARTNUM", SqlDbType.Int, "") .Parameters.Add("@PARTNUM", SqlDbType.Int, "") .Parameters.Add("@ESTATUS", SqlDbType.Int, "") .Parameters.Add("@REQCER", SqlDbType.Int, "")
_________________________________________________________________________________________
OBS: Favor vota si te es útil la información.
Saludos
Bader Molinas - Paraguay
https://deveintel.wordpress.com/
- Editado Bader Molinas martes, 9 de agosto de 2016 15:33
- Marcado como respuesta Enrique M. MontejoModerator miércoles, 10 de agosto de 2016 4:52
-
-