Hola
Estoy usando la propiedad ListBox.ItemData para crear listas dinámicas desde una base de datos
Para un listbox con unos productos utilizo la propiedad ItemData para almacenar el Id de cada producto
Tengo una funcion que me crea el ListBox o Combobox a partir de una SQL y me deja seleccionado un elemento
PROBLEMA: Creo que
Itemdata no funciona bien si hay 2 Items con el mismo texto en el ListBox...
Si hay varios elementos en el listbox con el mismo nombre, siempre me selecciona el primero de ellos, a pesar que uso el Id para referirme a ellos en el ItemData
A alguien le ha pasado?
Cuando los nombres son distintos funciona...
Os mando el procedimiento y la llamada
Un saludo
----------------------------------------------------------------
Codigo que me selecciona el elemento buscado
Código PHP:
'Seleccionamos el valor indicado, opcional
'RstTemp(0) tiene el Id del Registro
ItemDataSeleccionado se lo he pasado a la función
If (RstTemp(0) = ItemDataSeleccionado) Then
ComboBox.ListIndex = ComboBox.NewIndex
End If
ActualizaComboBox CIdProducto, "SELECT Id, Codigo FROM Unidades WHERE 1 ORDER BY Codigo ASC", IdSeleccionado, M.Base
Código PHP:
Public Sub ActualizaComboBox(ComboBox As Object, Query As String, ItemDataSeleccionado As Integer, BaseElegida As Database)
Dim RstTemp As Recordset
Dim x As Integer
'Recorremos el recordset
Set RstTemp = BaseElegida.OpenRecordset(Query)
If Not RstTemp.BOF Then
RstTemp.MoveFirst
End If
Do While Not RstTemp.EOF
'Añade elemento al ComboBox. (Texto y Valor)
'Meto la segunda columna de la query (nombre o codigo)
ComboBox.AddItem RstTemp(1)
'Meto la primera columna de la query (Id)
ComboBox.ItemData(ComboBox.NewIndex) = RstTemp(0)
'Seleccionamos el valor indicado, opcional
If (RstTemp(0) = ItemDataSeleccionado) Then
ComboBox.ListIndex = ComboBox.NewIndex
End If
RstTemp.MoveNext
Loop
'Selecciona el primer elemento
If ItemDataSeleccionado = 0 Then
ComboBox.ListIndex = 0
End If
Si ItemData es -1 no se encuentra y no selecciona nada
End Sub