none
Obtener el valor de un Checklistbox marcado RRS feed

  • Pregunta

  • Buenas tardes.

    Tengo un bucle For Each para que recorra un Checklistbox, que está conectado a una tabla de Access, para que me encuentre los registros que tienen la marca "checked". Cada vez que me encuentra un registro con el "checked", quiero obtener el valor "Id" del registro y luego insertar ese registro en otra tabla de Access. Lo tengo así:

     For Each Item In CheckedListBoxCuentas.CheckedItems
                Dim fecha As DateTime = "01/01/2017"
                Do While fecha <= "01/12/2026"
                    comando30 = New OleDbCommand("INSERT INTO saldos (CodUsuario,CodPlan,CodCuenta,Fecha,Saldo) VALUES (@CodUsuario, @CodPlan, @CodCuenta, @Fecha, @Saldo)", bbdd.conexion)
                    comando30.Parameters.AddWithValue("@CodUsuario", usuarios.id)
                    comando30.Parameters.AddWithValue("@CodPlan", planes.id)
                    comando30.Parameters.AddWithValue("@CodCuenta", CheckedListBoxCuentas.SelectedValue)
                    comando30.Parameters.AddWithValue("@Fecha", fecha)
                    comando30.Parameters.AddWithValue("@Saldo", saldo)
                    comando30.ExecuteNonQuery()
                    fecha = fecha.AddMonths(+1)
                Loop
            Next

    La cuestión es que este código no me funciona como quiero. No sé si el problema lo tengo en la sentencia "For Each Item In CheckedListBoxCuentas.CheckedItems", o en la propiedad "CheckedListBoxCuentas.SelectedValue".

    Gracias.





    • Editado IvanBcn1982 martes, 14 de marzo de 2017 13:49
    martes, 14 de marzo de 2017 12:01

Respuestas

  • IvanBcn1982,

    ¿Las cuentas que contiene el control CheckedListBox los agregas al control mediante el método Add()/AddRange()?, de ser así debes hacer lo siguiente:

    For Each item In CheckedListBoxCuentas.CheckedItems
    	'...
    	comando30.Parameters.AddWithValue("@CodCuenta", item.ToString)
    	'...
    Next

    Por el contrario, si tienes vinculado los datos a un origen mediante la propíedad DataSource puedes hacer lo siguiente:

    For Each item As Object In CheckedListBoxCuentas.CheckedItems
    
    	Dim RowView As DataRowView = TryCast(item, DataRowView)
    
    	'...
    	comando30.Parameters.AddWithValue("@CodCuenta", RowView("ID"))
    	'...
    Next


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Propuesto como respuesta Joyce_ACModerator martes, 14 de marzo de 2017 15:22
    • Marcado como respuesta IvanBcn1982 martes, 14 de marzo de 2017 15:43
    martes, 14 de marzo de 2017 15:07

Todas las respuestas

  • IvanBcn1982,

    ¿Las cuentas que contiene el control CheckedListBox los agregas al control mediante el método Add()/AddRange()?, de ser así debes hacer lo siguiente:

    For Each item In CheckedListBoxCuentas.CheckedItems
    	'...
    	comando30.Parameters.AddWithValue("@CodCuenta", item.ToString)
    	'...
    Next

    Por el contrario, si tienes vinculado los datos a un origen mediante la propíedad DataSource puedes hacer lo siguiente:

    For Each item As Object In CheckedListBoxCuentas.CheckedItems
    
    	Dim RowView As DataRowView = TryCast(item, DataRowView)
    
    	'...
    	comando30.Parameters.AddWithValue("@CodCuenta", RowView("ID"))
    	'...
    Next


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Propuesto como respuesta Joyce_ACModerator martes, 14 de marzo de 2017 15:22
    • Marcado como respuesta IvanBcn1982 martes, 14 de marzo de 2017 15:43
    martes, 14 de marzo de 2017 15:07
  • Me sirve.

    Muchas gracias.

    martes, 14 de marzo de 2017 15:42