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



我正在将当前数据库中的表传递给具有 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类型为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) 

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

当您将光标移动到最后一条记录(tbl.MoveLast(,没有更多的记录可以获取。

溶液:

只需将光标移动到记录集的开头,一切正常

tbl.MoveLast
tbl.MoveFirst
Records = tbl.GetRows(tbl.RecordCount)

dbOpenTable 引发错误 3219,如果打开的表不是本地表,并且.OpenRecordset("TABLE",dbOpenDynaset)等于.OpenRecordset("TABLE"),因为对于非本地表dbOpenDynaset默认值。(文档显示这也太;)

相关内容

  • 没有找到相关文章

最新更新