Ms access 选择要数组的表数据-仅获取一行
我正试图从表Ms access 选择要数组的表数据-仅获取一行,ms-access,vba,Ms Access,Vba,我正试图从表EmailList中提取数据,并将其放入数组中,数组将被传递到outlook电子邮件的“收件人:”字段(电子邮件脚本已生成)。我计划使用Join()函数将数组组合成一个字符串:Join(varEmailList,“;”) 我的代码: Private Sub Propose_Click() Dim MyDB As DAO.Database Dim rstEmails As DAO.Recordset Dim varEmails() As Variant Dim intRowNu
EmailList
中提取数据,并将其放入数组中,数组将被传递到outlook电子邮件的“收件人:”字段(电子邮件脚本已生成)。我计划使用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条记录。根据:
使用GetRows方法从记录集中复制记录。GetRows返回一个二维数组。第一个下标标识字段,第二个下标标识行号
实际上,您需要第二维度中的项目数:
UBound(varEmails, 2)
DAO.Recordset.GetRows
方法只返回一行,除非您明确告诉它返回更多
要求GetRows
检索所有行:
“让我们检索rstEmails记录集中的所有行
'varEmails=rstEmails.GetRows()
带回信
.最后一个
.先走一步
varEmails=.GetRows(.RecordCount)
.结束
以
还有一个问题
MsgBox(“检索的字段数:”&UBound(varEmails,1)+1)
该数组的第一个维度是字段——在本例中只有一个字段。第二个维度具有以下字段的值:
MsgBox(“检索的字段数:”&UBound(varEmails,2)+1)
如果您向GetRows
等提供说明
rs.GetRows(100)
但是您的记录集中有一个错误,例如被零除(
#NUM
),并且该错误位于第50行,只返回49行,并且GetRows
将自动提前停止 请尝试从varEmails
调用中删除rstEmails.RecordCount
。@Gareth同样的问题-尽管知道这不是必需的还是很好的。