我正在尝试创建一个通用的notInList函数,当用户在不属于列表的组合框中键入值时调用该函数。在该函数的中间,我想将新值插入表中。
对于某些组合框,必须在表格中填写多个字段。 (向用户询问关于非列表值的后续问题,并且还必须将后续的答案放入表中)。必须在表中插入的值存储在代码中的变量中。
到目前为止我处理这个问题的方法是通过一个表,每个组合框id,字段和变量名都有一条记录(包含要插入字段的值的变量名)组合。代码循环遍历与此组合框相关的所有记录,并构建一个字段名列表和一个要在SQL语句中使用的变量名列表(插入...值...)。
但是,我无法弄清楚如何使用变量的名称(从表中检索)来获取存储在变量中的值。 AddVar是记录集中的列,它包含我试图获取值的变量的名称。我尝试了eval(rs!AddVar),但这不起作用。
我能够从表中获取变量的名称,但后来我被卡住了。如何获取存储在该变量中的值(字符串)?
答案 0 :(得分:1)
“AddVar是记录集中的列,其中包含我试图获取值的变量的名称。我尝试了eval(rs!AddVar)但这不起作用。”
尝试:
rs.Fields(AddVar).Value
修改强>: 对不起,我没有仔细阅读 - 我认为你的问题仅限于检索变量的名称。但是,您希望检索其名称在运行时提供的变量的值。我不知道VBA怎么可能。请参阅Access World Forums ---“VBA不支持按名称对变量进行运行时评估。”
考虑使用Dictionary数据结构来存储键/值对。
Public Sub MyDict()
Dim d As Object
Set d = CreateObject("Scripting.Dictionary")
d.Add "var1", 1
d.Add "var2", 2
Debug.Print "Value of 'var1' is " & d("var1")
Set d = Nothing
End Sub
答案 1 :(得分:1)
您可能对Dlookup()函数感兴趣。基本上,您只需传递一个字段名称,一个表名和一些可选标准,它将为您提供它找到的第一个结果。
考虑一下这个例子:
=DLookUp("[LastName]", "Employees", "[EmployeeID] = 7")
这将进入“Employees”表,找到“[EmployeeID] = 7”的第一条记录,并返回[LastName]。希望这会有所帮助。