2016-01-13 125 views
0

我有Excel VBA代碼在訪問數據庫上運行選擇查詢並返回記錄集。連接工作正常。當我獲得記錄集時,我可以很好地訪問每行中的每個字段。以下是我目前正在使用:VBA:如何將整行記錄集添加到表單列表

Sub accessSelect(sql) 
Set rs = New ADODB.Recordset 
Call accessConnection 

With rs 
    .Open sql, conn 
End With 

Do While Not rs.EOF 
    'rtvEditForm.rtvList is a list box. 
    rtvEditForm.rtvList.AddItem rs(1) & " - " & rs(2) 
    rs.MoveNext 
Loop 
End Sub 

我希望能夠給扔在rtvEditForm.rtvList整個rs,而不必請參閱各領域。我試過rtvEditForm.rtvList.AddItem rs,但這不起作用,因爲我得到「類型不匹配」錯誤。

看起來很簡單,但我無法弄清楚這一點。我現在的代碼怎麼做?

+1

'rtvList'是什麼樣的控件? – Brad

+0

'rtvList'是一個列表框。更新了我原來的帖子。 – aCarella

+0

我不相信有,但你可以做f = 0到rs.fields.count-1:strToAdd = strToAdd&rs.fields(f).value&「,」:next:cbo.AddItem strToAdd –

回答

1

不需要做任何循環。列表框有一個記錄集屬性,可以是bound to an ADO recordset

Dim cn As ADODB.Connection 
Dim rs As ADODB.Recordset 

Set cn = New ADODB.Connection 

Set cn = CurrentProject.Connection 

Set rs = New ADODB.Recordset 

With rs 
    Set .ActiveConnection = cn 
    .Source = sql 
    .LockType = adLockOptimistic 
    .CursorType = adOpenKeyset 
    .Open 
End With 

Set Me.rtvList.Recordset = rs 
rtvList.ColumnCount = rs.Fields.Count