我希望迭代一组字段作为遵循特定格式的表的一部分。该表包含N对这些字段(Var_1,Value_1,Var_2,Value_2等)。
我需要遍历这些字段并提取数据以将其写入文本文件。我想使用循环,我宁愿不将每个字段硬编码到我的VBA中,因为字段可能会及时增长,并且不会为每个记录填充每个字段。我想如果有一种方法来“评估”一个字段,当它的名字是在一个字符串中动态创建的时候,这将解决我的问题。
所以,例如......
For i = 1 to FieldCount
' Write data to each field
最初我想过这样的事情
For i=1 to FieldCount
myStr = "!Var_"+CStr(i) + " = " + "!Value_" + CStr(i)
WriteLine(myStr)
但是,当然,它按字面打印文本...任何方式让Access首先评估该文本?
也许有更好的方法来完全解决这个问题?
答案 0 :(得分:2)
您可以使用记录集的Fields集合,并通过引用字段名称来引用任何单个字段的值。
rs.Fields("field_name").Value
您通常可以删除显式.Value,因为这是字段的默认属性。
Public Sub printFieldPairs()
Dim strSql As String
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim N As Long
strSql = "SELECT * FROM tblJoeS;"
Set db = CurrentDb
Set rs = db.OpenRecordset(strSql)
With rs
Do While Not .EOF
For N = 1 To 3
Debug.Print .Fields("Var_" & N) & " = " & _
.Fields("Value_" & N)
Next N
.MoveNext
Loop
End With
rs.Close
Set rs = Nothing
Set db = Nothing
End Sub
这就是我认为你要求的。但是,如果字段对的数量增加,则必须修改表结构。所以我倾向于使用不同的表结构。
row_identifier fKey fValue
1 Var_1 foo
1 Var_2 bar
1 Var_3 baz
2 Var_1 abcd
答案 1 :(得分:0)
根据HansUp建议的改进回答:
....
Dim fld as DAO.Field
For Each fld in rs.fields
debug.? fld.value
Next fld