Recordset.FindFirst 方法:为什么它适用于我的一些 Table 类型的记录集?

Recordset.FindFirst method: why DOES it work with some of my Table-type recordsets?

我试图在 Access VBA 中对 DAO 记录集使用 Recordset.FindFirst 方法,但遇到错误:

Error 3251: "Operation is not supported for this type of object."

在对 MSDN 进行一些简短调查后,我发现该方法仅适用于 dynaset-typesnapshot-type 记录集。我改变了我的代码:

Set rs2 = db.OpenRecordset("table_name")
rs2.FindFirst [search criteria]</pre>

对此:

Set rs2 = db.OpenRecordset("table_name", <b>dbOpenDynaset</b>)
rs2.FindFirst [search criteria]</pre>

一切正常。


然而,我有另一个数据库,我在 table-type 记录集上使用 FindFirst 没有错误。

Set rs = db.OpenRecordset("tblUsers")
rs.FindFirst [search criteria]

我的问题是

  1. 为什么这适用于一个数据库而不适用于另一个数据库,并且
  2. 是否建议更改代码以改用 dbOpenDynaset 类型记录集?

当您在查询或附加 table 上使用 OpenRecordset() 时,Access 默认为 Dynaset 类型 (dbOpenDynaset)。

当您在本地 table 上使用 OpenRecordset() 时,它默认为 Table 类型 (dbOpenTable。)