我很好奇以下内容之间的区别是什么?如果一方面有优势,那么
假设MS Access和DAO Recordset
rst![field]
rst.Fields("field")
答案 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
,这就是我尝试做的事情。