如何动态地从DAO记录集中检索值?

时间:2016-04-08 15:40:10

标签: vba access-vba ms-access-2007

我有一个DAO记录集,例如

    Set rst = CurrentDb.OpenRecordset("Select * from EMPLOYEES")

记录集包含以下字段 - NAME,AGE,SALARY,TITLE

现在我已经创建了一个包含特定字段列表的数组 -

     Dim Fields As Variant
     Fields = Array("NAME", "SALARY")

想要使用数组元素

动态地从记录集中检索字段
     rst.MoveNext

     MsgBox(rst![Array(0)])

我收到一条错误消息,说明未在集合中找到项目'。

我知道我在这里缺少的是在感叹号('!')标志后传递字段名称变量的正确方法,但我无法弄清楚如何。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

rst!FieldName

该语法实际上是以下语法糖:

rst.Fields("FieldName").Value

换句话说,通过撰写rst![Array(0)],您正在寻找一个名为[Array(0)]的字段 - 感叹号之后的部分就是字面意思。

只需使用低糖语法: - )

rst.Fields(Fields(0)).Value

请注意,Array不是您的数组变量的名称,因此[Array(0)]并不像您可能认为的那样引用Fields(0)(而Array(0) 1}}将创建一个新的值数组,包含值0)。如果名称Fields令人困惑,请尝试以下操作:

Dim fieldList As Variant
fieldList = Array("NAME", "SALARY")

...

MsgBox rst.Fields(fieldList(0)).Value

答案 1 :(得分:0)

rst.Fields(Fields(0)) or rst.Fields(Array(0))