Microsoft Access - 具有来自不同表的多个条件的Dlookup

时间:2017-02-21 21:04:43

标签: ms-access access-vba ms-access-2010 ms-office

我的数据库中有2个表。一个叫做制表和另一个产品。

制表有两个字段:

  • 数字
  • 名称

Product表有3个字段:

  • 名称
  • Manufacture_Number

我想要的是当我创建新产品时,它会告诉我产品是否已经存在。我目前正在使用此代码:

DLookup("[Name]", "Product", "[Name] = '" & me.txtName.value & "'")

它工作正常,但曾经发生过一个名称相同但制造不同的产品。因此我无法创建记录。

如果与已创建的产品和制造商相同,我只能创建新记录。

如何在不同的表中为多个条件创建一个Dlookup?

2 个答案:

答案 0 :(得分:2)

我怀疑你并不想看到不同的牌桌。您希望阻止添加与现有产品具有相同名称和制造商的产品,因此您要检查Product表中的两个字段:

DLookup("[Name]", "[Product]", "[Name] = '" & me.txtName & "' And Manufacture_Number = " & me.txtMfrNumber)

制造商的输入控件更可能是组合框,但也可以这样做 - 只需将txtMfrNumber替换为您正在使用的控件的名称得到这个号码。

请注意,您不需要在.Value末尾指定me.txtName,因为Value是文本框的默认属性。

答案 1 :(得分:1)

你必须像这样嵌套DLookups

DLookup("[Name]","Product","[Name]='" & me.txtName.value & "' AND Manufacture_Number=" & Nz(DLookup("Number","Manufacture","[Name]='" & me.txtManufactureName.value & "'" ,0)))

Nz返回null时,我使用DLookup来避免错误。