Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/05/2008, 06:21
grupouno
 
Fecha de Ingreso: mayo-2008
Mensajes: 1
Antigüedad: 16 años, 11 meses
Puntos: 0
Listbox. Itemdata no funciona si hay dos items con el mismo texto?

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(0tiene el Id del Registro
        ItemDataSeleccionado se lo he pasado a la función
        
If (RstTemp(0) = ItemDataSeleccionadoThen
            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 ObjectQuery As StringItemDataSeleccionado As IntegerBaseElegida 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