none
InsertCommand.Parameters (Ayuda) RRS feed

  • Pregunta

  • Hola que tal a todos, bien estaria trabado en una parte del proyecto con el codigo InsertCommand.Parameters que es el que designe para hacer una Insert en Tablas. Bien, tengo que seleccionar un Datagrid en el cual uso la linea:

    dabol1.InsertCommand.Parameters("@descon").Value = Me.grddetalle.Item(a, 1).Value


    Donde lo que necesito es seleccionar del datagrid "grddetalle" la 2da Columna que es Descripcion.

    Es al grabar una Tabla, tengo los siguientes codigos

       'graba boleta
            dabol1.InsertCommand.Parameters("@numbol").Value = Me.txtnum.Text
            dabol1.InsertCommand.Parameters("@cod_abo").Value = Me.txtcodabo.Text
            dabol1.InsertCommand.Parameters("@nom_abo").Value = Me.txtnomabo.Text
            dabol1.InsertCommand.Parameters("@apel_abo").Value = Me.txtapelabo.Text
            dabol1.InsertCommand.Parameters("@fecemi").Value = Me.dtfecemi.Text
            dabol1.InsertCommand.Parameters("@total").Value = Me.txttotal.Text                
            dabol1.InsertCommand.Parameters("@descon").Value = Me.grddetalle.Item(a, 1).Value
    
            'graba tempboleta
    
            datembol.InsertCommand.Parameters("@numbol1").Value = Me.txtnum.Text
            datembol.InsertCommand.Parameters("@cod_abo1").Value = Me.txtcodabo.Text
            datembol.InsertCommand.Parameters("@apelabo1").Value = Me.txtapelabo.Text
            datembol.InsertCommand.Parameters("@nomabo1").Value = Me.txtnomabo.Text
            datembol.InsertCommand.Parameters("@dniabo1").Value = Me.txtdniabo.Text
            datembol.InsertCommand.Parameters("@dirabo1").Value = Me.txtdirabo.Text
            datembol.InsertCommand.Parameters("@total1").Value = Me.txttotal.Text
            datembol.InsertCommand.Parameters("@fecemi1").Value = Me.dtfecemi.Text
            datembol.InsertCommand.Parameters("@estado1").Value = Me.txtestado.Text
    
            ''fin graba tempboleta
    
            cn.Open()
            iresultado = dabol1.InsertCommand.ExecuteNonQuery()
            iresultado1 = datembol.InsertCommand.ExecuteNonQuery()
            lblregistro.Visible = True
            lblregistro.Text = iresultado & " " & "Registro Guardado "
            'fin graba boleta
    
            Try
    
                Dim i As Integer
                For i = 0 To grddetalle.Rows.Count - 1
    
                    'llena tabla detalle
    
                    Dim cmd As New SqlCommand("INSERT into detalle(numbol,cod_con,mespago, montocon) VALUES(@numbol,@cod_con,@mespago, @montocon)", cn)
                    With cmd
    
                        .Parameters.Add(New SqlParameter("@numbol", SqlDbType.NVarChar, 12)).Value = txtnum.Text
                        .Parameters.Add(New SqlParameter("@cod_con", SqlDbType.NVarChar)).Value = grddetalle.Item(0, i).Value
                        .Parameters.Add(New SqlParameter("@mespago", SqlDbType.DateTime)).Value = grddetalle.Item(2, i).Value
                        .Parameters.Add(New SqlParameter("@montocon", SqlDbType.Float)).Value = grddetalle.Item(3, i).Value
                    End With
    
                    'llena la tabla tempdetallebol
                    Dim cmd1 As New SqlCommand("INSERT into tempdetallebol(numbol,cod_con,descon,mespago, montocon) VALUES(@numbol1,@cod_con1,@descon1,@mespago1, @montocon1)", cn)
                    With cmd1
    
                        .Parameters.Add(New SqlParameter("@numbol1", SqlDbType.NVarChar, 12)).Value = txtnum.Text
                        .Parameters.Add(New SqlParameter("@cod_con1", SqlDbType.NVarChar)).Value = grddetalle.Item(0, i).Value
                        .Parameters.Add(New SqlParameter("@descon1", SqlDbType.NVarChar)).Value = grddetalle.Item(1, i).Value
                        .Parameters.Add(New SqlParameter("@mespago1", SqlDbType.DateTime)).Value = grddetalle.Item(2, i).Value
                        .Parameters.Add(New SqlParameter("@montocon1", SqlDbType.Float)).Value = grddetalle.Item(3, i).Value
                    End With
    
                    
                    '---llena la tabla reporte---'
                    Dim cmd2 As New SqlCommand("INSERT into reporte(numbol,cod_con,descon,mespago, montocon) VALUES(@numbol2,@cod_con2,@descon2,@mespago2, @montocon2)", cn)
                    With cmd2
    
                        .Parameters.Add(New SqlParameter("@numbol2", SqlDbType.NVarChar, 12)).Value = txtnum.Text
                        .Parameters.Add(New SqlParameter("@cod_con2", SqlDbType.NVarChar)).Value = grddetalle.Item(0, i).Value
                        .Parameters.Add(New SqlParameter("@descon2", SqlDbType.NVarChar)).Value = grddetalle.Item(1, i).Value
                        .Parameters.Add(New SqlParameter("@mespago2", SqlDbType.DateTime)).Value = grddetalle.Item(2, i).Value
                        .Parameters.Add(New SqlParameter("@montocon2", SqlDbType.Float)).Value = grddetalle.Item(3, i).Value
    
                    End With
    
    
                    '---fin codigo reporte---'
    
                    Dim cmd2 As New SqlCommand("INSERT into boleta(descon) VALUES(@descon2)", cn)
                    With cmd2
    
                        .Parameters.Add(New SqlParameter("@descon2", SqlDbType.NVarChar)).Value = grddetalle.Item(a, 1).Value
    
                    End With
    
                    cmd.ExecuteNonQuery()
                    cmd1.ExecuteNonQuery()
                    cmd2.ExecuteNonQuery()
                Next
    
    
            Catch sqlExc As SqlException
                MsgBox("Registros Insertados Correctamente", MsgBoxStyle.Exclamation, "Registro de la boleta")
                cn.Close()
            End Try

    Este es el Datagrid grddetalle.

    Me sale este error al darle Clic en Guardar:

    Desde ya muchas gracias, y un gran saludo!


    ID: GranJK! S2!

    lunes, 13 de mayo de 2019 12:56

Respuestas

  • El error que te sale puede ocurrir por dos razones:

    Una, puede ser culpa de Parameters("@descon"). Si en la coleccion de parametros del command no existe @descon, dara el error que estas viendo.

    Dos, puede ser por culpa de Item(a, 1). Si en el grid no existe la fila "a" o la columna 1 dara el error de indice.

    Para saber cual de las dos cosas esta ocurriendo, utiliza el debugger cuando se te pare en la fila del error y examina los valores de los datos. Empieza por la variable "a", a ver que valor tiene, no vaya a ser que sea menor que cero o mayor o igual que el numero de filas del grid (recuerda que se numeran desde cero). Si el valor es correcto, revisa la estructura del grid a ver si tiene la columna 1 (no vaya a ser que estes accediendo a otra instancia que no sea la misma que se ve en pantalla). Y revisa tambien la coleccion de parametros del command a ver si realmente contiene @descon. No te fies del hecho de que lo definiste correctamente con ese parametro. Revisa el valor real que contiene en ese momento, no vaya a ser que a lo largo de la ejecucion del programa pase por algun punto donde se borren los parametros o se cree una nueva instancia.
    • Marcado como respuesta GranJK lunes, 13 de mayo de 2019 13:52
    lunes, 13 de mayo de 2019 13:23

Todas las respuestas

  • El error que te sale puede ocurrir por dos razones:

    Una, puede ser culpa de Parameters("@descon"). Si en la coleccion de parametros del command no existe @descon, dara el error que estas viendo.

    Dos, puede ser por culpa de Item(a, 1). Si en el grid no existe la fila "a" o la columna 1 dara el error de indice.

    Para saber cual de las dos cosas esta ocurriendo, utiliza el debugger cuando se te pare en la fila del error y examina los valores de los datos. Empieza por la variable "a", a ver que valor tiene, no vaya a ser que sea menor que cero o mayor o igual que el numero de filas del grid (recuerda que se numeran desde cero). Si el valor es correcto, revisa la estructura del grid a ver si tiene la columna 1 (no vaya a ser que estes accediendo a otra instancia que no sea la misma que se ve en pantalla). Y revisa tambien la coleccion de parametros del command a ver si realmente contiene @descon. No te fies del hecho de que lo definiste correctamente con ese parametro. Revisa el valor real que contiene en ese momento, no vaya a ser que a lo largo de la ejecucion del programa pase por algun punto donde se borren los parametros o se cree una nueva instancia.
    • Marcado como respuesta GranJK lunes, 13 de mayo de 2019 13:52
    lunes, 13 de mayo de 2019 13:23
  • Hola Alberto, gracias por tu pronta respuesta, y bien si como decias a no genera ningun valor o mejor dicho es igual a 0. Por ende estoy haciendo mal la consulta. Como corroboro el nombre correto de la columna (1, x) se que es 1 porque (0, x) es CODCON. Seria correcto usar (1, i) ?

    NOTA: Me acabo de responder solo, muchas gracias Alberto, era una tonteria delante de mis ojos! Un gran abrazo!


    ID: GranJK! S2!



    • Editado GranJK lunes, 13 de mayo de 2019 13:55
    lunes, 13 de mayo de 2019 13:39