将 table 存储为 Dynaset 类型的记录集
Store table as recordset of Dynaset type
我正在将当前数据库中的 table 传递给二维记录集。目前:
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
在我的本地人 window 中单步执行(并立即检查 window),我可以看到 tbl.RecordCount = 1074
但 Records 仍然只获取活动记录字段,即 Records
类型是 Variant(0 to 37, 0 to 0)
.
我能够在存储查询时执行类似的方法。我也试过语法:
Set tbl = dbs.OpenRecordset("TABLE",dbOpenDynaset)
和
Set tbl = dbs.OpenRecordset("TABLE",dbOpenTable)
前者同样问题,后者返回运行-time error '3219'.
编辑:带查询的 GetRows 示例(参见评论)
Set dbs = CurrentDb
Set rsQuery = dbs.OpenRecordset("QUERY", dbOpenDynaset)
varRecords = rsQuery.GetRows(rsQuery.RecordCount)
如果您阅读了 GetRows 文档,您会认识到,GetRows
returns 从实际游标位置记录并将游标移动到下一个未检索的行(喜欢.Move
).
当您将光标移动到最后一条记录(tbl.MoveLast
)时,没有更多的记录需要获取。
解决方案:
只需将光标移动到 Recordset 的开头就可以了
tbl.MoveLast
tbl.MoveFirst
Records = tbl.GetRows(tbl.RecordCount)
dbOpenTable 引发错误 3219,如果打开 table 不是本地的并且 .OpenRecordset("TABLE",dbOpenDynaset)
等于 .OpenRecordset("TABLE")
因为 dbOpenDynaset
是默认值,对于非本地 tables。 (文档也揭示了这一点;)
我正在将当前数据库中的 table 传递给二维记录集。目前:
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
在我的本地人 window 中单步执行(并立即检查 window),我可以看到 tbl.RecordCount = 1074
但 Records 仍然只获取活动记录字段,即 Records
类型是 Variant(0 to 37, 0 to 0)
.
我能够在存储查询时执行类似的方法。我也试过语法:
Set tbl = dbs.OpenRecordset("TABLE",dbOpenDynaset)
和
Set tbl = dbs.OpenRecordset("TABLE",dbOpenTable)
前者同样问题,后者返回运行-time error '3219'.
编辑:带查询的 GetRows 示例(参见评论)
Set dbs = CurrentDb
Set rsQuery = dbs.OpenRecordset("QUERY", dbOpenDynaset)
varRecords = rsQuery.GetRows(rsQuery.RecordCount)
如果您阅读了 GetRows 文档,您会认识到,GetRows
returns 从实际游标位置记录并将游标移动到下一个未检索的行(喜欢.Move
).
当您将光标移动到最后一条记录(tbl.MoveLast
)时,没有更多的记录需要获取。
解决方案:
只需将光标移动到 Recordset 的开头就可以了
tbl.MoveLast
tbl.MoveFirst
Records = tbl.GetRows(tbl.RecordCount)
dbOpenTable 引发错误 3219,如果打开 table 不是本地的并且 .OpenRecordset("TABLE",dbOpenDynaset)
等于 .OpenRecordset("TABLE")
因为 dbOpenDynaset
是默认值,对于非本地 tables。 (文档也揭示了这一点;)