【问题标题】:MS Access DLOOKUP with text and nested DLOOKUP for criteria带有文本的 MS Access DLOOKUP 和用于条件的嵌套 DLOOKUP
【发布时间】:2014-12-22 22:32:05
【问题描述】:

我在包含搜索词的表单上有一个组合框。用户选择一个搜索词并查找包含数字 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 的数据库中复制了这段代码,但它只有一个标准,因此可以工作。我无法弄清楚我缺少什么语法或类型不匹配的位置才能使其正常工作。

【问题讨论】:

  • @HansUp 第一个结果是[IP] = 279 and [Cost Category] = 'PHYS',第二个结果是错误类型13

标签: ms-access vba syntax-error type-mismatch


【解决方案1】:

您需要一个有效字符串作为DLookup 条件选项。使用“立即”窗口检查您对最终 DLookup 示例中的条件的了解。

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

这实际上是两个字符串的“逻辑合取”。 (如果您查看 And Operator 的 Access 帮助主题,这将更有意义。)

由于您将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)

【讨论】:

  • 感谢您的详细解决方案!它完美地实现了,我明白我现在希望做什么。
猜你喜欢
  • 2016-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-16
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
相关资源
最近更新 更多