I have read the posts re this subject and all I want to achieve is the equivalent of an Access Lookup i.e. a 2 column combo, the ID is hidden and the user sees the Description. Select the description and the update routine stores the ID.

I find it hard to believe this functionality is not simply available in VB.NET. I have gone thru Edneeis's Class (really great stuff but an overkill for what I want).

I decided on the folowing approach. Im just padding the description to 60 spaces and then adding the ID at the end - the user never sees it - I can access it at update time. Can anyone see any inherent problems with this - i know it's not pretty but with something like 60 Lookups on 20 Forms - it works. Is there a simple way to reproduce the Access Lookups ? - it appears not.

Open to comments - I have shown my ComboBuild code below for interest-

Public Function ComboBuild(ByVal sTable As String, ByVal cboCombo As ComboBox, ByVal nID As Long)
'fill the combo with the required details from the table specified
Dim dbcConnection As String = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = E:\Safework\SkeletonVBNet\Safework.MDB;"

Dim sSql As String
Dim sDesc As String
Dim nSelected As Integer

Dim cn As New OleDb.OleDbConnection(dbcConnection)
cn.Open()
cboCombo.Items.Clear()

nSelected = 0

sSql = "SELECT * FROM " & sTable & " ORDER BY Description"

'open the ADO.NET Datareader
Dim cmd As New OleDb.OleDbCommand(sSql, cn)
Dim drd As OleDb.OleDbDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)

'read the datareader and fill the Combo
Do While drd.Read
sDesc = drd!Description
cboCombo.Items.Add(sDesc.PadRight(60) & CStr(drd!ID))
If nID = drd!ID Then
nSelected = cboCombo.Items.Count - 1
End If
Loop
drd.Close()

cboCombo.SelectedIndex = nSelected

End Function