引用DAO Recordset字段有什么区别?

时间:2015-06-11 13:46:00

标签: ms-access access-vba

我很好奇以下内容之间的区别是什么?如果一方面有优势,那么

假设MS Access和DAO Recordset

rst![field]
rst.Fields("field")

1 个答案:

答案 0 :(得分:3)

rst![field]引用记录集默认集合中名为 field 的项目。 Fields集合是记录集的默认集合。因此!允许您引用该字段,而不明确表示您需要Field

根据我过去的阅读,!引用是访问集合成员的最快方式。我不确定性能影响的程度;我使用!因为它更简洁(与rst.Fields("field")相比)。

如果您要访问多个记录集字段,请考虑With块:

With rst
    Debug.Print !ID.Value
    Debug.Print !Last_Name.Value
End With

据说可以更快,因为Access不必每次都从rst再次到达目标字段。我再次不确定它提供了多少性能改进;我喜欢它,因为它使代码更简洁。

当您提前不知道字段名称时,

rst.Fields(<field name>)非常有用。在这些情况下,使用字符串变量来保存字段名称并将该变量提供给rst.Fields。但我认为rst.Fields和硬编码字段名称没有任何好处。这只是更多打字而没有收获。

作为一个侧面点,请考虑rst![field]实际给你的内容。通常,您需要.Value,这是字段的默认属性,因此您无需在这些情况下明确询问.Value。但是,在将记录集字段添加到VBA集合的情况下,实际字段对象而不是其.Value会添加到集合中。这可能是一个不受欢迎的惊喜! Gord Thompson说服我在.Value时始终包含.Value,这就是我尝试做的事情。