• Miércoles 24 de Abril de 2024, 17:08

Autor Tema:  Problema con los Itemdata de un Listbox  (Leído 2206 veces)

donramone

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Problema con los Itemdata de un Listbox
« en: Miércoles 3 de Marzo de 2010, 04:49 »
0
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
  1.  
  2. While Not rs.EOF = True
  3.     lstcorrelativas.AddItem rs!nombre_materia
  4.     lstcorrelativas.ItemData(lstcorrelativas.NewIndex) = rs!id_materia
  5.     rs.MoveNext
  6. Wend
  7. rs.Close
  8.  
.

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
  1. ' Cuando el usuario seleccione las materias correspondientes y haga click en un boton
  2. For w = 0 To lstcorrelativas.ListCount - 1
  3.    If lstcorrelativas.Selected(w) = True Then
  4.        rs.AddNew
  5.        rs!mat_correlativa = lstcorrelativas.ItemData(lstcorrelativas.ListIndex) 'Aca creeria que esta mi problema
  6.        rs!id_materia = LstMaterias.ItemData(LstMaterias.ListIndex) ' este dato actualizando desde otro list (Me funciona bien)
  7.        rs.Update
  8.    End If
  9.  Next
  10.  
  11.  

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

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Problema con los Itemdata de un Listbox
« Respuesta #1 en: Jueves 4 de Marzo de 2010, 15:30 »
0
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
  1. rs!mat_correlativa = lstcorrelativas.ItemData(lstcorrelativas.ListIndex)
  2. rs!id_materia = LstMaterias.ItemData(LstMaterias.ListIndex)
  3.  
  4.  
Debes poner el puntero al elemento deseado:
Código: Visual Basic
  1.  
  2. rs!mat_correlativa = lstcorrelativas.ItemData(w)
  3. rs!id_materia = LstMaterias.ItemData(w)
  4.  
  5.  

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
  1. LstMaterias.ListIndex = w
  2.  
, pero como digo esto no interesa, sólo interesa cuando realmente debas seleccionar un elemento específico.
«Ma non troppo»
----> ModoVacaciones = False<----

donramone

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: Problema con los Itemdata de un Listbox
« Respuesta #2 en: Jueves 4 de Marzo de 2010, 18:26 »
0
Nebire te Agradesco mucho tu respuesta , el error era ese "lstcorrelativas.ItemData(w)" en vez de "lstcorrelativas.ItemData(lstcorrelativas.ListIndex)"
Muchas gracias por responder