2015-11-05 52 views
0

我有一張客戶端表。每個客戶都有一個ID。我從SQL Server加載組合框,只顯示名字和姓氏。我創建了這個簡單的select語句。如何從組合框中檢索ID ItemData

sql= Select ID, FirstName, LastName 
sql =From dbo.tblClients order by LastName 
g_rs.open, sql, g_Database 
cboNames.AddItem vbNullString 
cboNames.ItemData(cboNames.NewIndex) = 0 
While Not g_RS.EOF 
    cboNames.AddItem g_RS("LastName") & ", " & g_RS("FirstName") & 
    g_RS.MoveNext 
Wend 

我的問題是關於當我真正選擇從組合框中的名稱。我如何知道分配給該客戶端的ID。

+1

我不知道我在控制倒是緩存行ID值是辦法。信息可能會過時,並且ID可能無效,甚至在您嘗試使用它時可能會重新分配給新的表格行。除非您擁有單用戶,單進程應用程序,否則保留Collection或斷開連接的記錄集中的關鍵值可能會更好。 – Bob77

回答

1

您沒有在循環中分配ItemData。你的代碼應該是這樣的:

While Not g_RS.EOF 
    cboNames.AddItem g_RS("LastName") & ", " & g_RS("FirstName") 
    cboNames.ItemData(cboNames.NewIndex) = g_RS("ID") 
    g_RS.MoveNext 
Wend 

然後,在其他代碼,您可以檢索所選項目的ItemData的ID:

Private Sub cboNames_Click() 
    Dim selectedID as Integer 
    If cboNames.ListIndex > 0 Then 
     selectedID = cboNames.ItemData(cboNames.ListIndex) 
    End If 
End Sub