使用两个标准的 DCount

DCount using two Criteria

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

一些 PO 免于我们的检查流程,我们在名为 ZeroAudit 的 table 中保留了一份清单。 table 包含豁免交付的 PO 编号和供应商编号。

在我发现 PO 编号不是唯一的之前,我使用此代码告诉我们的团队某个给定的 PO 是否需要检查。我如何更新它以要求 PO 编号和供应商编号都匹配 ZeroAudit table 条目以免除 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

假设您的 table/query 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 的 return 要么为正,要么为零;因此,如果您要测试零,所有其他可能性都包含在 Else 语句中。