Programación General > Visual Basic 6.0 e inferiores

 Problema con los Itemdata de un Listbox

(1/1)

donramone:
Hola a todos, soy nuevo en el foro  espero que me puedan dar una mano, les cuento mi situacion:

Tengo un Listbox (lstcorrelativas) que lleno desde una tabla (materias) con nombres de materias y en la propiedad Itemdata de dicho list agrego el Id (primare key) correspondiente a cada nombre de materias que tengo en mi base de datos.
Esto lo realizo de la siguiente forma:

--- Código: Visual Basic --- While Not rs.EOF = True    lstcorrelativas.AddItem rs!nombre_materia    lstcorrelativas.ItemData(lstcorrelativas.NewIndex) = rs!id_materia    rs.MoveNextWendrs.Close .

El list (lstCorrelativas) tiene activado los CheckBoxes,  lo que necesito es que el usuario pueda seleccionar por ejemplo 4 materias y guardar en otra tabla (correlativas) de mi base de datos, los "Id" de esas materias (los que tengo agregado en el Itemdata, no el nombre de la materia)
Les muestro mi codigo y mas abajo explico el error que tengo, a ver si alguien me puede dar una mano.

--- Código: Visual Basic ---' Cuando el usuario seleccione las materias correspondientes y haga click en un botonFor w = 0 To lstcorrelativas.ListCount - 1   If lstcorrelativas.Selected(w) = True Then       rs.AddNew       rs!mat_correlativa = lstcorrelativas.ItemData(lstcorrelativas.ListIndex) 'Aca creeria que esta mi problema       rs!id_materia = LstMaterias.ItemData(LstMaterias.ListIndex) ' este dato actualizando desde otro list (Me funciona bien)       rs.Update   End If Next  
Bueno el problema que tengo es que me graba los datos, pero me repite siempre el mismo itemdata
especifico mejor:
Si el usuario selecciono 3 materias del list, por ej: Matematica (id:25), Ingles (id:33), Contabilidad (id:14)
en mat_correlativas siempre me guarda el primer dato, en el ejemplo seria 25.
Alguien me podria dar una mano y orientarme como deberia hacerlo?.

Pd: Estoy haciendo un plan de estudios de un colegio, carga de carreras (abogacia, medicina), carga de materias, (quimica, ingles) y la carga de sus correlativas, para los no Argentinos las correlativas son las materias que tenes que tener aprobadas obligatoriamente para podes anotarte en otras materias: ejemplo Ingles I es correlatvia de ingles II.
Espero que me puedan dar una mano, desde ya muchas gracias para todos

Nebire:
Listindex se refiere al índice actualmente seleccionado en la interfaz. Tu no lo  cambias en ningún momento, luego el programa te funcionacorrectamente acorde lo que tienes programado.

El error está en la linea que indicas. Es un error de sujeto, tu le dices Rs, toma el valor seleccionado, cuando le debes decir Rs, toma el valor w, puesto que estás recorriendo un bucle...

Así, en vez de esto:

--- Código: Visual Basic ---rs!mat_correlativa = lstcorrelativas.ItemData(lstcorrelativas.ListIndex)rs!id_materia = LstMaterias.ItemData(LstMaterias.ListIndex)  Debes poner el puntero al elemento deseado:

--- Código: Visual Basic --- rs!mat_correlativa = lstcorrelativas.ItemData(w)rs!id_materia = LstMaterias.ItemData(w)  
Desde luego podrías cambiar el elemento actualmente seleccionado, pero sería 'tonto', además el usuario se sentiría extrañado de que le hayan cambiado el ítem que él tenía señalado...

--- Código: Visual Basic ---LstMaterias.ListIndex = w , pero como digo esto no interesa, sólo interesa cuando realmente debas seleccionar un elemento específico.

donramone:
Nebire te Agradesco mucho tu respuesta , el error era ese "lstcorrelativas.ItemData(w)" en vez de "lstcorrelativas.ItemData(lstcorrelativas.ListIndex)"
Muchas gracias por responder

Navegación

[0] Índice de Mensajes

Ir a la versión completa