【问题标题】:DCount using two CriteriaDCount 使用两个 Criteria
【发布时间】:2020-01-01 01:48:06
【问题描述】:

我有一个包含两个组合框的访问表单,即 PO 编号和供应商编号。供应商编号将自动过滤以仅显示与所选 PO 编号匹配的那些(遗憾的是,PO 编号不是唯一的;例如,多个不相关的供应商可能将 2180965 作为其 PO 编号)。

某些 PO 不受我们的检查流程的约束,我们将它们的列表保存在名为 ZeroAudit 的表中。该表同时包含豁免交货的采购订单编号和供应商编号。

在我发现采购订单编号不是唯一的之前,我曾使用此代码告诉我们的团队给定采购订单是否需要检查。如何更新它以要求 PO 编号和供应商编号都与 ZeroAudit 表条目匹配才能免于 QA?

Private Sub VendorNumber_AfterUpdate()
Dim IntX As Integer
IntX = DCount("*", "ZeroAudit", "PONumber=" & Chr(34) & Me.PONumber.Value & Chr(34))
Debug.Print Me.PONumber.Value

If IntX = 0 Then
  MsgBox "Needs QA"
  Me.PONumber.SetFocus
ElseIf IntX > 0 Then
  MsgBox "Does NOT Need QA — DIM and RETAIL CHECK REQUIRED"
  Me.PONumber.SetFocus

End If
End Sub

【问题讨论】:

    标签: vba ms-access dcount


    【解决方案1】:

    假设您的表/查询ZeroAudit 包含一个名为VendorNumber 的字段,并且您的表单还包含一个名为VendorNumber 的字段,那么下面提供了两种可能的方法:

    使用DCount

    If DCount("*", "ZeroAudit", "PONumber='" & Me.PONumber & "' and VendorNumber='" & Me.VendorNumber & "'") = 0 Then
        MsgBox "Needs QA"
    Else
        MsgBox "Does NOT Need QA — DIM and RETAIL CHECK REQUIRED"
    End If
    Me.PONumber.SetFocus
    

    使用DLookup

    If IsNull(DLookup("PONumber", "ZeroAudit", "PONumber='" & Me.PONumber & "' and VendorNumber='" & Me.VendorNumber & "'")) Then
        MsgBox "Needs QA"
    Else
        MsgBox "Does NOT Need QA — DIM and RETAIL CHECK REQUIRED"
    End If
    Me.PONumber.SetFocus
    

    请注意,ElseIf 不是必需的,因为DCount 的返回值将是正数或零;因此,如果您测试为零,则所有其他可能性都包含在 Else 语句中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-09
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      相关资源
      最近更新 更多