将可变数量的变量放入表中的字段中

时间:2010-03-09 14:29:37

标签: sql ms-access vba

我正在尝试创建一个通用的notInList函数,当用户在不属于列表的组合框中键入值时调用该函数。在该函数的中间,我想将新值插入表中。

对于某些组合框,必须在表格中填写多个字段。 (向用户询问关于非列表值的后续问题,并且还必须将后续的答案放入表中)。必须在表中插入的值存储在代码中的变量中。

到目前为止我处理这个问题的方法是通过一个表,每个组合框id,字段和变量名都有一条记录(包含要插入字段的值的变量名)组合。代码循环遍历与此组合框相关的所有记录,并构建一个字段名列表和一个要在SQL语句中使用的变量名列表(插入...值...)。

但是,我无法弄清楚如何使用变量的名称(从表中检索)来获取存储在变量中的值。 AddVar是记录集中的列,它包含我试图获取值的变量的名称。我尝试了eval(rs!AddVar),但这不起作用。

我能够从表中获取变量的名称,但后来我被卡住了。如何获取存储在该变量中的值(字符串)?

2 个答案:

答案 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]。希望这会有所帮助。

http://support.microsoft.com/kb/208786