使用两个条件进行DCount

时间:2019-08-27 20:54:17

标签: vba ms-access access-vba dcount

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

某些采购订单免于我们的检查过程,我们将它们的列表保存在称为ZeroAudit的表中。该表同时包含免税交货的PO编号和供应商编号。

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

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

1 个答案:

答案 0 :(得分:2)

假设您的表/查询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语句将涵盖所有其他可能性。