none
La conversión de la cadena "PROYECTOS" en el tipo 'Integer' no es válida RRS feed

  • 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

    martes, 9 de agosto de 2016 15:02

Respuestas

  • Monserrat Núñez,

    "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.

    martes, 9 de agosto de 2016 15:19
  • 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/


    martes, 9 de agosto de 2016 15:20
  • 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

    martes, 9 de agosto de 2016 15:07

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

    martes, 9 de agosto de 2016 15:07
  • Monserrat Núñez,

    "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.

    martes, 9 de agosto de 2016 15:19
  • 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/


    martes, 9 de agosto de 2016 15:20
  • Todos los parametros son del mismo tipo de dato de Sql server 2005 y Visual Basic 2005. y todos me marca que trae un valor es por eso que recurri a este foro

    miércoles, 10 de agosto de 2016 20:39
  • el valor "Proyectos" va en @DEPTO y se almacena en el cmbDep, son string los dos, corrobore campo por campo y todos coinciden en el tipo y nombre.
    miércoles, 10 de agosto de 2016 20:42