2010-03-09 50 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