none
carga múltiple en datagridview y sql

    Pregunta

  • Hola a todos.

    Tengo una duda que me está mareando..

    Tengo esta función:

    Public Function insertar(ByVal dts As vcuotas) As Boolean
            Try
                conectado()
                cmd = New SqlCommand("crear_cuota")
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Connection = cnn
    
                cmd.Parameters.AddWithValue("@iddeudac", dts.giddeudac)
                cmd.Parameters.AddWithValue("@cuota", dts.gcuota)
                cmd.Parameters.AddWithValue("@fecha", dts.gfecha)
                cmd.Parameters.AddWithValue("@pagado", dts.gpagado)
    
                If cmd.ExecuteNonQuery Then
                    Return True
                Else
                    Return False
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
                Return False
            Finally
                desconectado()
            End Try
        End Function


    Esta función es llamada desde el form cuando guardo. Lo que necesito es que dependiendo de un combobox donde selecciono la cantidad de cuotas, esta función me guarde tantas filas en el sql como la cantidad seleccionada.

    Si selecciono 1 sola cuota no hay drama, pero si selecciono 8, por ejemplo, necesito que me guarde 8 filas con los campos que le estoy enviando.

    Y aquí es donde me pierdo...

    If cbcuotas.Text = "1" Then
                    Dim dts As New vcuotas
                    Dim func As New fcuotas
    
                    dts.giddeudac = txtiddeudac.Text
                    dts.gcuota = txtcuota.Text
                    dts.gfecha = dtfecha1.DateTime
                    dts.gpagado = txtpagado.Text
    
                    If func.insertar(dts) Then
    
                    End If

    Agradezco cualquier ayuda que me puedan brindar.

    Saludos cordiales.

    jueves, 15 de diciembre de 2016 10:19

Respuestas

  • Puedes hacer un bucle que se repita el nº de veces seleccionado en el combo. Algo como esto:

    Dim NumeroDeCuotas as Integer = 0

    Integer.TryParse(cbcuotas.Text,NumeroDeCuotas)

    For n As Integer = 1 to NumeroDeCuotas 

        If func.insertar(dts) Then

        End If

    Next n


    Saludos, Javier J

    • Marcado como respuesta dynamicuy jueves, 15 de diciembre de 2016 11:27
    jueves, 15 de diciembre de 2016 10:26

Todas las respuestas

  • Puedes hacer un bucle que se repita el nº de veces seleccionado en el combo. Algo como esto:

    Dim NumeroDeCuotas as Integer = 0

    Integer.TryParse(cbcuotas.Text,NumeroDeCuotas)

    For n As Integer = 1 to NumeroDeCuotas 

        If func.insertar(dts) Then

        End If

    Next n


    Saludos, Javier J

    • Marcado como respuesta dynamicuy jueves, 15 de diciembre de 2016 11:27
    jueves, 15 de diciembre de 2016 10:26
  • Gracias por tu respuesta Javier!

    Mirá, me está tirando un error en esta línea:

    For n As Integer = 1 To NumeroDeCuotas

    Me dice que esperaba una expresión - BC302001

    y un BC30037, el carácter no es válido.

    jueves, 15 de diciembre de 2016 10:47
  • La instrucción está bien ¿Qué valor tiene NumeroDeCuotas?

    For n As Integer = 1 To NumeroDeCuotas

    Next n


    Saludos, Javier J

    jueves, 15 de diciembre de 2016 10:58
  • El valor del cbcuotas va de 1 a 12, por defecto está en 1

    Private Sub chcuotas()
            Dim dts As New vcuotas
            Dim func As New fcuotas
    
            dts.giddeudac = txtiddeudac.Text
            dts.gcuota = txtcuota.Text
            dts.gfecha = dtfecha1.DateTime
            dts.gpagado = txtpagado.Text
    
            Dim NumeroDeCuotas As Integer = 0
            Integer.TryParse(cbcuotas.Text, NumeroDeCuotas)
            For n As Integer = 1 To NumeroDeCuotas
    
                If func.insertar(dts) Then
                    MessageBox.Show("Cuotas cargadas con éxito!", "Gestión de cuotas de la cuenta", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If
            Next n
        End Sub

    jueves, 15 de diciembre de 2016 11:09
  • Tiene que estar mal escrito. Vuelve a copiar la línea

    For n As Integer = 1 To NumeroDeCuotas


    Saludos, Javier J

    jueves, 15 de diciembre de 2016 11:25
  • Vés! eso pasa cuando uno lleva mas de 48 horas despierto!

    Muchas gracias!

    jueves, 15 de diciembre de 2016 11:27