强制表中的 2 列与另一个表中的 2 列匹配

问题描述 投票:0回答:2

这里是 Microsoft Access 的新手 - 所以这可能很简单。

我有3张桌子:

  • 供应商
  • 订单
  • 发票

我想要实现的流程工作是首先设置我的供应商,然后添加订单并为每个订单设置供应商,当我收到发票时添加发票并在订单中将其链接到发票。

现在我有以下关系:

Relationships

所有关系均由查找向导建立。

设置发票(Factura)时,我使用下拉菜单添加供应商(Proveedor)。

然后,在设置订单(Albaran)时,我首先使用下拉菜单添加供应商,然后选择发票。

我现在要解决的问题是如何让为订单选择发票的下拉菜单只显示与订单相同供应商的发票。

我尝试在订单和发票表中添加供应商之间的关系,但是当我强制数据完整性时,它显示“未找到唯一索引”

我无法直接在发票表中包含订单,因为同一张发票可以有多个订单(因为我每月收到一张发票,并且每月执行多个订单)。

ms-access ms-access-2016
2个回答
0
投票

您需要使发票下拉列表依赖于供应商下拉列表。您可以通过定义发票下拉列表的来源来完成此操作,在其中添加表单中的供应商下拉列表作为供应商的条件。

示例:

SELECT Factura FROM [Facturas Recibidas] WHERE Proveedor=Forms!mySupplierDropdown;

请选择正确的下拉名称。 对于供应商下拉列表,您创建一个 AfterUpdate 事件,您可以在其中写入

Me!myOrderDropdown.Requery

再次:选择订单下拉列表的正确名称。

其他建议:避免在表或字段名称中使用空格字符。这总是会导致问题,因为您总是必须将它们放入方括号中,以便 Access 将它们作为一个对象进行处理。请改用下划线字符,这样可以保持可读性。


0
投票

该解决方案需要内部联接

为了实现

Inner Join
,我进入订单表设计视图,选择发票字段,在屏幕底部有 2 个选项卡。选择查找并将行源更改为:

SELECT [Facturas Recibidas].Factura FROM [Facturas Recibidas] ORDER BY [Facturas Recibidas].Factura ; 

SELECT [Facturas Recibidas].Factura FROM [Facturas Recibidas] INNER JOIN Albaranes ON [Facturas Recibidas].Proveedor = Albaranes.Proveedor ORDER BY [Facturas Recibidas].Factura ; 

tldr:必须在

INNER JOIN
SELECT FROM
之间的两个表中为供应商添加
ORDER BY

© www.soinside.com 2019 - 2024. All rights reserved.