【发布时间】:2020-05-25 17:08:44
【问题描述】:
当我尝试从 Access 查询中加载和使用记录集时,我看到不一致的结果并得到下标超出范围错误。我正在从这个查询中加载: record source
这是我的代码的相关部分:
Option Compare Database
Option Explicit
Function StoreStockoutEmail()
Dim objOutlook As Outlook.Application
Dim objOutlookMsg As Outlook.MailItem
Dim objOutlookRecip As Outlook.Recipient
Dim dtStr As String
Dim rstData As DAO.Recordset
Dim v As Variant
Dim i, j, k, x, y As Integer
Dim mymsg As String
mymsg = ""
Set rstData = CurrentDb.OpenRecordset("Select * From Store_Stockouts")
v = rstData.GetRows(rstData.RecordCount)
If Not rstData.EOF And Not rstData.BOF Then
rstData.MoveLast
i = rstData.RecordCount
rstData.MoveFirst
MsgBox (v(0, 2))
...
MsgBox 是我得到运行时错误 9“下标超出范围”的地方,但我的数据源的数据点位于 0,2(和 2,0)。 (我根据另一个答案添加了 EOF 和 BOF 运动,但没有帮助。)我觉得这可能是一个错误,因为这对某些记录集有效,而对其他记录集无效。适用于 Micosoft 365 32 位的 MS Access。为 MS DAO 3.6 对象库添加了参考。谢谢!
【问题讨论】:
-
CurrentDb来自哪里?这段代码中没有定义,我想知道它是否被正确回收。 -
在运行 GetRows 之前尝试
Debug.Print rstData.RecordCount- 输出是什么?