我在包含搜索词的表单上有一个组合框。用户选择一个搜索项,这将查找一个包含数字X的表。如果类别等于字符串'PHYS‘,则在另一个表中查找X的RVU (一个数字)。我使用嵌套的DLOOKUP语句查找数字X,然后使用该数字X和字符串条件查找RVU。这是我的密码:
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的数据库复制了这段代码,但是它只有一个条件,因此可以工作。我不知道我缺少哪种语法,或者类型错配在哪里才能让它正常工作。
发布于 2014-10-27 17:37:04
您需要一个有效的字符串作为DLookup条件选项。使用“立即”窗口检查最后一个DLookup示例中的条件。
Debug.Print "[Cost Category] = 'PHYS'" And "[IP] = " & a这实际上是两个字符串的“逻辑连接”。(如果您查看And操作符的访问帮助主题,这将更有意义。)
由于您使用的是带有两个字符串表达式的And,所以Access会抱怨类型不匹配,就像对这个简单示例所做的那样:
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)https://stackoverflow.com/questions/26592768
复制相似问题