将表存储为动态集类型的记录集

我正在将当前数据库中的表传递给具有2维的记录集。当前:

Public Sub MySub(obj As Variant)
   Dim dbs As DAO.Database
   Dim tbl As DAO.Recordset

   Set dbs = CurrentDb
   Set tbl = dbs.OpenRecordset("TABLE")
   tbl.MoveLast
   Records = tbl.GetRows(tbl.RecordCount)

Stop
...
End Sub

在我的本地窗口中逐步执行(并在立即窗口中检查),我可以看到tbl.RecordCount = 1074,但是Records仍然只获得具有所有字段的活动记录,即Records Type是Variant(0 to 37,0 to 0)

存储查询时,我可以执行类似的方法。我也尝试过语法:

Set tbl = dbs.OpenRecordset("TABLE",dbOpenDynaset)

Set tbl = dbs.OpenRecordset("TABLE",dbOpenTable)

前者有相同的问题,而后者返回了运行时错误'3219'。


编辑:带有查询的GetRows示例(请参阅注释)

Set dbs = CurrentDb
Set rsQuery = dbs.OpenRecordset("QUERY",dbOpenDynaset)
varRecords = rsQuery.GetRows(rsQuery.RecordCount) 
china_lwj 回答:将表存储为动态集类型的记录集

如果您已阅读GetRows文档,您将认识到GetRows从实际光标位置返回记录,并将光标移至未检索到的下一行(例如.Move )。

将光标移到最后一条记录(tbl.MoveLast)时,不再有剩余记录可获取。

解决方案:

只需将光标移动到Recordset的开头,一切都很好

tbl.MoveLast
tbl.MoveFirst
Records = tbl.GetRows(tbl.RecordCount)
如果非本地表的默认值是.OpenRecordset("TABLE",dbOpenDynaset),因为打开的表不是本地的,并且.OpenRecordset("TABLE")等于dbOpenDynaset,则

dbOpenTable会引发错误3219。 (文档也显示了这一点;)

本文链接:https://www.f2er.com/2939380.html

大家都在问