2014-10-27 61 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