在VBA中使用CurrentDb.OpenRecordset

Gag*_*awa 2 ms-access vba

我在MS访问中编辑VBA中的内容.有人可以告诉我下面两个陈述之间的区别.

1. Set rs1 = CurrentDb.OpenRecordset("tblOPCEPLTB")
2. Set rs = CurrentDb.OpenRecordset("SELECT * FROM tblOPCEPLTB")
Run Code Online (Sandbox Code Playgroud)

我猜测的是第二行从表tblOPCEPLTB获取所有行并存储在rs变量中.那么1st会做什么?在执行1st之后应该有什么?

请帮忙

Eri*_*k A 9

如果该表是本地Access表,则第一个语句打开表类型记录集(因为传递的参数是表,dbOpenTable是默认值)

第二个语句打开动态集类型记录集(因为传递的参数是查询,dbOpenDynaset是默认值)

动态集类型和表类型记录集之间的主要区别在于表类型记录集支持索引.

以下代码将成功并查找主键值为5的条目

Set rs = CurrentDb.OpenRecordset("tblOPCEPLTB")
rs.Index = "PrimaryKey"
rs.Seek "=", 5
Run Code Online (Sandbox Code Playgroud)

以下操作将失败,因为仅在表类型记录集上支持搜索:

Set rs = CurrentDb.OpenRecordset("SELECT * FROM tblOPCEPLTB")
rs.Index = "PrimaryKey"
rs.Seek "=", 5
Run Code Online (Sandbox Code Playgroud)

如果您只想将记录追加到表中,请在打开记录集时指定:

Set rs = CurrentDb.OpenRecordset("tblOPCEPLTB", Options:=dbAppendOnly)
Run Code Online (Sandbox Code Playgroud)

这样,没有记录会被锁定或加载,因为记录集只支持附加