首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套的Dlookup VBA

嵌套的Dlookup VBA
EN

Stack Overflow用户
提问于 2019-08-30 03:00:23
回答 2查看 222关注 0票数 0

我正在尝试显示供应商名称和一条消息,表明选定的PO编号(从表单上的组合框中)不需要在消息框中提供QA。从PO编号中获取供应商编号的DLookup可以工作,但是我似乎不能嵌套它来从单独的表中获取供应商名称字符串。我在这个嵌套的DLookup中遗漏了什么?

采购订单编号、供应商编号、供应商名称都是字符串。

代码语言:javascript
复制
Private Sub VendorName_AfterUpdate()

    Debug.Print Me.VendorName.Value

    If DCount("*", "ZeroAudit", "PONumber='" & Me.PONumber & "' and VendorName='" & Me.VendorName & "'") = 0 Then
        MsgBox "Needs QA"
    Else
        MsgBox "Vendor " & DLookup("Vendor", "Vendors", "VendorNumber = " & (DLookUp("VendorNumber","POHeader","PONumber= [Forms]!QAChecker2!PONumber.Value"))) & " — Does NOT Need QA — DIM and RETAIL CHECK REQUIRED"
    End If
    Me.PONumber.SetFocus

End Sub
EN

回答 2

Stack Overflow用户

发布于 2019-08-30 05:22:02

你声明:

PO号、Vendor Number和Vendor Name 都是字符串

因此,您需要用单引号将DLookup条件括起来,例如,如下所示:

代码语言:javascript
复制
DCount("*", "ZeroAudit", "PONumber='" & Me.PONumber & "' and VendorName='" & Me.VendorName & "'")

您还需要在此处使用单引号:

代码语言:javascript
复制
DLookup("Vendor", "Vendors", "VendorNumber = '" & DLookUp("VendorNumber","POHeader","PONumber= [Forms]!QAChecker2!PONumber.Value") & "'")
                                             ^                                                                                        ^
                                             |                                                                                        |
                    Added single quotes -----+----------------------------------------------------------------------------------------+

但我也要回应@Mathieu Guindon关于使用局部变量代替内联DLookup表达式的评论。

考虑一下下面的代码是多么容易读懂-

代码语言:javascript
复制
Private Sub VendorName_AfterUpdate()
    Dim strVen As String
    Dim strVNo As String

    If DCount("*", "ZeroAudit", "PONumber='" & Me.PONumber & "' and VendorName='" & Me.VendorName & "'") = 0 Then
        MsgBox "Needs QA"
    Else
        strVNo = DLookup("VendorNumber", "POHeader", "PONumber = [Forms]!QAChecker2!PONumber")
        strVen = DLookup("Vendor", "Vendors", "VendorNumber = '" & strVNo & "'")
        MsgBox "Vendor " & strVen & " — Does NOT Need QA — DIM and RETAIL CHECK REQUIRED"
    End If
    Me.PONumber.SetFocus
End Sub

您还可以使用Nz表达式将DLookup表达式括起来,以捕获空值,并在继续之前测试空字符串。

票数 0
EN

Stack Overflow用户

发布于 2019-08-30 15:44:40

虽然鲜为人知,但您也可以在过滤器中使用SQL

代码语言:javascript
复制
DLookup("Vendor", "Vendors", "VendorNumber = (Select VendorNumber From POHeader Where PONumber = [Forms]!QAChecker2!PONumber.Value)")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57716382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档