2010-03-09 47 views
2

我正在尝试制作一个通用的notInList函数,当用户在不是列表的组合框中键入一个值时调用。在该函数的中间,我想将新值插入到表中。将可变数量的变量放入表中的字段

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

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

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

我能够从表格中获得变量的名称,但后来我卡住了。我怎样才能得到存储在该变量中的值(字符串)?

回答

1

您可能对Dlookup()函数感兴趣。基本上,你只要传递一个字段名称,一个表名和一些可选的标准,它会给你找到的第一个结果。

考虑例如:

=DLookUp("[LastName]", "Employees", "[EmployeeID] = 7") 

这将进入“员工”表中,找到的第一条记录,其中“[雇员] = 7”,并返回到你的[姓氏]。希望这可以帮助。

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

1

“AddVar是记录集中包含变量名称的列,我尝试获取其值。我尝试了eval(rs!AddVar),但这不起作用。

尝试:

rs.Fields(AddVar).Value 

编辑: 对不起,我没看过不够密切---我想你的问题仅限于检索变量的名称。但是您想要检索在运行时提供其名称的变量的值。我不知道VBA有多可能。请参见Access World Forums ---“VBA不支持按名称对变量进行运行时评估”。

考虑用于存储键/值对的字典数据结构。

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 
+0

谢谢你的回答。但是,您的建议只会检索存储在表格中的变量的名称。我想检索变量的名称,但是然后获取存储在该变量中的值。 – dmr 2010-03-09 15:11:31

+0

我希望我没有在这里击败死马,但eval(rs.Fields(AddVar).Value)怎么样? – PowerUser 2010-03-09 16:06:05