访问 2003 报告详细信息

Access 2003 Report detail

我有两个 table 用于创建报告。一个是 Orders,键名为 OrderID。 我还有一个名为 Parts 的 table,也包含 OrderID。他们也有关系。在我的订单表格上,我有一个列表框并根据两个 OrderID 填充它。

现在,我有一个数据源为订单的报表。我还添加了一个列表框并将行 Source/Type 设置为 Table/Query 指向我的部分 table。但是,当我将两个 OrderID 的条件设置为匹配以显示在每个订单的相应部件上时,它只会在 first 详细信息中选择订单,并为每个连续的重复细节。我怎样才能让列表框只显示两个 OrderID 匹配的地方> Code used Report results

需要一些 VBA 才能做到这一点,或者以查询为基础。这里的关键是您需要在 OrderID 上 INNER JOIN table 彼此。此外,添加 DISTINCT 限定符只会 return 唯一值,从而消除重复。所以,像这样(需要根据您的实际 table 名称和字段名称进行更改):

SELECT DISTINCT Orders.OrderID
FROM tblOrders Orders
INNER JOIN tblParts Parts
ON tblOrders.OrderID = tblParts.OrderID

然后,如果您要查找特定订单,则可以通过添加 WHERE 子句对其进行过滤。

考虑使用子报表。以下是步骤:

  1. 单独创建一个更小的零件报告,其中包含您列出的所有字段(PartNumberPartDescriptionPartQty 等)绑定只到Partstable。请确保不要在此子表单的第 Header/Footer 页中放置任何控件(因为它们不会显示在主报表中)。将字段 headers 放入此子报表的报表 Header 部分。
  2. 然后,在您的主订单报告 中展开详细信息部分并将零件子报告放在记录正下方,方式与您的屏幕截图相同。子表单是靠近末尾的控制部分中的报纸图标,它会自动执行 walk-through 向导 - 在 AC2003 .mdb 文件中可能略有不同。
  3. 在向导中,select 上面创建的 Parts 子报表并确认 parent 表单和 child 子表单之间匹配的 OrderID。如果建立了关系匹配键应该auto-linked等待用户确认。

执行此操作,您的原始主报告现在将正确对齐订单 table 的每个不同 OrderIDOrdersParts