2014-10-27 63 views
1

我在包含搜索項的表單上有一個組合框。用戶選擇一個搜索項,並查找包含數字X的表格。如果類別等於字符串'PHYS',則在另一個表格中查找X的RVU(一個數字)。我使用嵌套的DLOOKUP語句查找數字X,然後使用數字X和字符串條件查找RVU。這裏是我的代碼:帶有文本和嵌套DLOOKUP條件的MS Access DLOOKUP

FH_array(0) = Val(Nz(DLookup("[RVU]", "[FORES IP Picker]", "[IP]= " & Val(Nz(DLookup("[FORES]", "[IP Number Xwalk]", "[Reference Name] = '" & Me.Ref_Name & "'"), 0))), "")) 

我沒有運氣,所以我把它弄壞了下來調試:

a = Val(Nz(DLookup("[FORES]", "[IP Number Xwalk]", "[Reference Name] = '" & Me.Ref_Name & "'"), 0)) 
Debug.Print "a:"; a 'returns value 279 
aa = Val(nz(DLookup("[RVU]", "[FORES IP Picker]", "[IP] = " & a & " and [Cost Category] = 'PHYS'))) 
Debug.Print "aa:"; aa 

我對變量AA線得到一個語法錯誤。如果我從

aa = DLookup("[RVU]", "[FORES IP Picker]", "[IP] = " & a & " and [Cost Category] = 'PHYS') 

改變了代碼

aa = DLookup("[RVU]", "[FORES IP Picker]", "[Cost Category] = 'PHYS'" And "[IP] = " & a) 

我得到一個運行時錯誤13類型不匹配

所有的變量聲明爲變體,並呼籲正確。數組FH_array大小正確。我從另一個執行相同類型的嵌套DLOOKUP的數據庫複製此代碼,但它只有一個標準,因此可以工作。我無法弄清楚我錯過了什麼語法,或者類型不匹配是爲了讓它起作用。

+0

@HansUp第一的結果是'[IP] = 279 [費用類別] =「PHYS''和第二的結果是錯誤類型13 – 2014-10-27 17:14:32

回答

2

您需要一個有效的字符串作爲DLookup條件選項。使用「立即」窗口查看最終DLookup示例中的標準。

Debug.Print "[Cost Category] = 'PHYS'" And "[IP] = " & a 

即實際上是串的 「邏輯與」。 (如果您查看的And運算訪問幫助主題會更有意義。)

而且由於你使用And有兩個字符串表達式,訪問抱怨類型不匹配,同樣因爲它與這確實簡單的例子:

Debug.Print "a" And "b" 

所以,你需要創建的標準選擇一個有效的字符串...

a = 279 
Debug.Print "[Cost Category] = 'PHYS' And [IP] = " & a 
[Cost Category] = 'PHYS' And [IP] = 279 

翻譯是回到最後DLookup在你的問題......

Dim strCriteria As String 
strCriteria = "[Cost Category] = 'PHYS' And [IP] = " & a 
Debug.Print strCriteria ' <- just to make sure you got what you need 
aa = DLookup("[RVU]", "[FORES IP Picker]", strCriteria) 
+1

謝謝你的詳細解答!它完美實現,我明白我現在希望做的事情。 – 2014-10-27 17:59:35