vba - CurrentDb.OpenRecordset 在 VBA 中的使用

标签 vba ms-access

我正在 MS Access 中用 VBA 编辑一些东西。谁能告诉我以下两个陈述之间的区别。

1. Set rs1 = CurrentDb.OpenRecordset("tblOPCEPLTB")
2. Set rs = CurrentDb.OpenRecordset("SELECT * FROM tblOPCEPLTB")

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

请帮忙

最佳答案

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

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

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

下面的代码会成功,查找主键值为5的条目

Set rs = CurrentDb.OpenRecordset("tblOPCEPLTB")
rs.Index = "PrimaryKey"
rs.Seek "=", 5

以下将失败,因为查找仅在表类型记录集上受支持:

Set rs = CurrentDb.OpenRecordset("SELECT * FROM tblOPCEPLTB")
rs.Index = "PrimaryKey"
rs.Seek "=", 5

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

Set rs = CurrentDb.OpenRecordset("tblOPCEPLTB", Options:=dbAppendOnly)

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

关于vba - CurrentDb.OpenRecordset 在 VBA 中的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52767338/

相关文章:

excel - Excel 单元格有 GotFocus 事件吗?

Excel VBA 让用户输入新工作表名称

database - 尝试将记录添加到数据表,代码不起作用?

sql - MS ACCESS : selecting only one record per "person" per date 中的子查询

VBA Excel 进度条表单不更新。我可以放慢处理速度吗?

vba - 使用表中的值在 excel vba 中动态构建名称管理器条目

java - 多个数据库操作出现 JVM 错误 : EXCEPTION_ACCESS_VIOLATION

delphi - 如何根据包含空格的字段名对 ADO 表进行排序?

mysql - 如何存储数值的 unicode 字符,这就像简单的数据类型 int 一样工作

excel - VBA循环结合Lastrow并查找空白值