在 Access VBA 中打开 RecordSet 时,如果类型是 dbOpenSnapshot,是否会使选项 dbReadOnly 变得多余?

spi*_*tor 4 ms-access vba dao

在 Access VBA 中,将记录集作为快照打开时,是否会使只读选项变得多余?起初这似乎是正确的,因为快照本质上已经是只读的,但似乎总是有一些警告。

例子:

Dim acc      as Access.Application
Dim db       as DAO.Database
Dim rs       as DAO.Recordset
Dim sqltext  as String

sqltext = "SELECT * FROM SOMESOURCE"

Set rs = db.OpenRecordset(sqltext, dbOpenSnapshot, dbReadOnly)

'Because the type is dbOpenSnapshot, does dbReadOnly become redundant?
Run Code Online (Sandbox Code Playgroud)

Han*_*sUp 5

检查记录集的Updatable属性。这个打印False

sqltext = "SELECT * FROM TABLE_01"
Set db = CurrentDb
Set rs = db.OpenRecordset(sqltext, dbOpenSnapshot)
Debug.Print rs.Updatable
Run Code Online (Sandbox Code Playgroud)

所以,是的,dbOpenSnapshot因为记录集类型选项为您提供了只读记录集。

  • `.Updateable` 属性受很多因素的影响,例如查询的内容、主键的存在以及表是否链接。但是,根据 [MSDN](https://msdn.microsoft.com/en-us/library/office/ff197799.aspx),dbOpenSnapshot 永远无法更新:_Snapshot-type Recordset—您所创建的一组记录的静态副本可用于查找数据或生成报告。快照类型的 Recordset 对象可以包含来自数据库中一个或多个表的字段,但不能更新。此类型对应于 ODBC 静态游标。_ (3认同)