我正在尝试从表EmailList
中获取数据并将其放入一个数组中,该数组将传递到Outlook电子邮件消息的“To:”字段(电子邮件的脚本已生成)。我计划使用Join()
函数将数组合并为一个字符串,如下所示:Join(varEmailList, "; ")
。
我的代码:
Private Sub Propose_Click()
Dim MyDB As DAO.Database
Dim rstEmails As DAO.Recordset
Dim varEmails() As Variant
Dim intRowNum As Integer
Dim intColNum As Integer
Set MyDB = CurrentDb
Set rstEmails = MyDB.OpenRecordset("select email from EmailList", dbOpenSnapshot)
'Let's retrieve ALL Rows in the rstEmails Recordset
varEmails = rstEmails.GetRows()
MsgBox ("Number of Fields Retrieved: " & UBound(varEmails, 1) + 1)
rstEmails.Close
Set rstEmails = Nothing
End Sub
我遇到的问题是代码中只找到一条记录,一次至少应有10条记录。
答案 0 :(得分:2)
GetRows
方法返回的行不超过一行,除非您明确告诉它返回更多行。
要求'Let's retrieve ALL Rows in the rstEmails Recordset
'varEmails = rstEmails.GetRows()
With rstEmails
.MoveLast
.MoveFirst
varEmails = .GetRows(.RecordCount)
.Close
End With
检索所有行:
MsgBox ("Number of Fields Retrieved: " & UBound(varEmails, 1) + 1)
这是另一个问题......
MsgBox ("Number of Fields Retrieved: " & UBound(varEmails, 2) + 1)
该数组的第一个维度是字段---在这种情况下只有一个。第二个维度具有这些字段的值:
{{1}}
答案 1 :(得分:0)
根据MSDN:
使用GetRows方法从Recordset中复制记录。 GetRows返回一个二维数组。第一个下标标识字段,第二个下标标识行号。
您实际上想要第二维中的项目数:
UBound(varEmails, 2)
答案 2 :(得分:0)
如果您向GetRows
提供说明
rs.GetRows(100)
但是你的记录集中有一个错误,例如除以零(#NUM
),并且该错误在第50行,只返回49行,GetRows
将默默地提前停止。