【发布时间】:2016-10-28 15:27:20
【问题描述】:
我为一家小型企业创建了一个访问数据库。在这个数据库中,我经常使用 VBA 根据关键字段自动填充一些文本框:
me.textboxvalue0.value = Nz(DLookup("VALUE0", "tblsomething", "lookedfield = '" & Me.keyfield.Value & "'"), "")
me.textboxvalue1.value = Nz(DLookup("VALUE1", "tblsomething", "lookedfield = '" & Me.keyfield.Value & "'"), "")
me.textboxvalue2.value = Nz(DLookup("VALUE2", "tblsomething", "lookedfield = '" & Me.keyfield.Value & "'"), "")
这段代码对我所有的自动填充文本框重复,范围从 2 到 15 个文本框。 我的问题是: 打开 DAO 记录集并找到包含所有字段的特定行是否更快,或者继续使用多个 Dlookup 逐个字段提取该行的字段是否更快(执行时间)。
【问题讨论】:
-
我将使用带有“select value0,value1,value2 wherelookupfield="me.lookupid 的 ADO 记录集,为您提供更多选项,包括如何操作、放回数据、处理克隆、采取数组,计数等。但它们可以被绑定吗?
-
记录集肯定更快,但是否值得实施取决于它发生的频率、数据库的大小(将达到)等。
-
@SunKnight0 搜索的表比较小,最多1000条记录。只是一个一个地拉字段对于拉相关行听起来效率低下。可惜 Dlookup 不能返回多个字段。
-
不使用绑定控件有什么原因吗? -- “遗憾的是 Dlookup 不能返回多个字段。” 这是设计使然,要返回多个字段,您使用一个记录集。
-
@Lybren:实际上它可以,在某种程度上。像这样:
DLookup("Field1 & ';' & Field2","Table","Condition"),然后将结果拆分成一个数组。笨重,但如果您必须使用 DLookup 并且无法正确访问该表,这是可能的。
标签: database ms-access vba dao