2016-01-13 62 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 
相关问题