Ciao ragazzi!
Sto popolando una combobox in questo modo per ottenere performance migliori rispetto al metodo AddItem:
codice:
Public Sub subPopolaComboAPI(cmbNomeCombo As ComboBox, _
strNomeTabella As String, _
strNomeCampo)
Dim strValore As String
cmbNomeCombo.Visible = False
Call SendMessage(cmbNomeCombo.hwnd, CB_RESETCONTENT, 0&, ByVal 0&)
cmbNomeCombo.AddItem ""
' *************************************************************
' Popolo la lista delle aziende
' *************************************************************
Dim rsPopolaCombo As Recordset
Set rsPopolaCombo = New Recordset
rsPopolaCombo.Open "SELECT ID," & strNomeCampo & " FROM " & strNomeTabella & _
" ORDER BY " & strNomeCampo, Connessione
Do While Not rsPopolaCombo.EOF
' ********************************************************
' Assegno l'indice all'elemento della list box uguale
' all'ID che trovo all'interno della tabella.
' ********************************************************
strValore = rsPopolaCombo(strNomeCampo)
Call SendMessage(cmbNomeCombo.hwnd, CB_ADDSTRING, _
ByVal rsPopolaCombo!ID, ByVal strValore)
rsPopolaCombo.MoveNext
Loop
rsPopolaCombo.Close
Set rsPopolaCombo = Nothing
' *************************************************************
cmbNomeCombo.Visible = True
End Sub
Quando però vado ad interpellare la combo per vedere quale valore è stato selezionato dall'utente, ovvero:
codice:
msgbox cmbNomeCombo.ItemData(cmbNomeCombo.ListIndex)
l'applicazione mi restituisce sempre e solo 0.
Dove sto sbagliando?
Sicuramente l'inghippo sta qua:
codice:
Call SendMessage(cmbNomeCombo.hwnd, CB_ADDSTRING, _
ByVal rsPopolaCombo!ID, ByVal strValore)
Io credevo che con
codice:
ByVal rsPopolaCombo!ID
si potesse passare alla combobox il valore da assegnare ad ogni singola selezione, ma così non è.
Qualcuno mi può aiutare?
Ciao!