VBA中CurrentDb.OpenRecordset的使用

问题描述 投票:0回答:2

我正在 MS Access 中用 VBA 编辑一些内容。有人可以告诉我以下两种说法之间的区别吗?

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

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

请帮忙

vba ms-access
2个回答
12
投票

第一个语句打开一个表类型记录集,如果该表是本地 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)

这样,不会锁定或加载任何记录,因为记录集仅支持追加


0
投票

选择产品.产品ID、产品.名称、产品.类别、产品.价格、产品.项目尺寸、[产品类别].ID、[产品类别].名称、[产品类别].类别 FROM [产品类别] INNER JOIN Product ON [产品类别].ID = Product.ProductID;

© www.soinside.com 2019 - 2024. All rights reserved.