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

Posted

技术标签:

【中文标题】Microsoft Access - 具有来自不同表的多个条件的 Dlookup【英文标题】:Microsoft Access - Dlookup with multiple criteria from different tables 【发布时间】:2017-02-21 21:04:43 【问题描述】:

我的数据库中有 2 个表。一个称为制造,另一个称为产品。

Manufacture 表有 2 个字段:

号码 姓名

Product 表有 3 个字段:

号码 姓名 制造商编号

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

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

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

仅当与已创建的产品和制造商相同时,我才能创建新记录。

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

【问题讨论】:

【参考方案1】:

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

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

您的制造商输入控件更有可能是一个组合框,但这也有效 - 只需将 txtMfrNumber 替换为您用于获取此编号的控件名称即可。

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

【讨论】:

【参考方案2】:

你必须像这样嵌套DLookups

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

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

【讨论】:

以上是关于Microsoft Access - 具有来自不同表的多个条件的 Dlookup的主要内容,如果未能解决你的问题,请参考以下文章

在不同的设置上使 SQL Server 中的 Microsoft Access 表相同

将 12 个具有不同“where”条件的 MS Access 查询组合到一个查询中

从 XCode 连接到 Microsoft Access 数据库

Microsoft Access - 合并具有相同字段的多个表

查找计数差异 - Microsoft Access 和 SQL

Microsoft Access 查询 - 将两个查询合并为一个