在 ms 访问中使用“IF”和“DLookup”
Posted
技术标签:
【中文标题】在 ms 访问中使用“IF”和“DLookup”【英文标题】:using "IF" with "DLookup" in ms access 【发布时间】:2021-07-08 07:12:28 【问题描述】:我正在 MS Access 中制作表格,我的版本是 Office 2019 的 2019。我遇到重复输入购买商品发票的问题。每个供应商都有自己定义“发票编号”的方式,有时他们使用相似的数字,因为有些使用“日期”来定义他们的发票编号,例如,公司 A 发票编号是 202107001,公司 B 也有 202107001,因为它是 7 月2021 年,恰好是他们当月的“第一张账单”……一些供应商没有“发票号”。因为他们是个人销售手工制品。
因此,我必须编写 vba 代码以防止输入我们供应商的“重复”发票号码!这是我的无效代码... 即使它不起作用,也会显示“未找到方法或数据”!请问有大神帮忙吗?
这是我打算用下面的代码做的条件 "如果输入的供应商发票号码根据自己的识别方案是重复值,则消息框应显示为vba代码的后半部分..."
Private Sub txtIMHead_supinvoicenumber_AfterUpdate()
Dim supinvoicenumberstring As String
supinvoicenumberstring = Me.IMHead_supinvoicenumber.Value
If Me.txtHead_supinvoicenumber = DLookup("[IMHead_supinvoicenumber]", "tbl_IMHead", txt_IMHead_supid) Then
MsgBox "This supplier's invoice number" & supinvoicenumberstring & ",has been recorded!" _
& vbCr & " Please stop the process and record another invoice!" & vbCr & "Thank you very much!"
Me.Undo
End If
End Sub
【问题讨论】:
【参考方案1】:WHERE CONDITION 参数需要指定条件适用的字段:
DLookup("[IMHead_supinvoicenumber]", "tbl_IMHead", "some field name here=" & Me.txt_IMHead_supid)
但是,该表达式将从与给定 supid 匹配的第一条记录返回 IMHead_supinvoicenumber。您需要知道所选 supid 的发票编号是否已经存在,因此也必须在条件中使用发票编号。
If Not IsNull(DLookup("[IMHead_supinvoicenumber]", "tbl_IMHead", _
"some field name here=" & Me.txt_IMHead_supid & _
" AND IMHead_supinvoicenumber='" & supinvoicenumberstring & "'")) Then
一个选项是 DCount:
If DCount("*", "tbl_IMHead", "some field name here=" & Me.txt_IMHead_supid & _
" AND IMHead_supinvoicenumber='" & supinvoicenumberstring & "'") > 0 Then
【讨论】:
您好 June7,请问您这里的“某个字段名称”是什么意思? 我不知道 tbl_IMHead 中适用此标准的字段名称。如果我猜的话,应该是 IMHead_supid。以上是关于在 ms 访问中使用“IF”和“DLookup”的主要内容,如果未能解决你的问题,请参考以下文章