Access 2003报告详细信息

时间:2015-10-28 19:03:03

标签: vba ms-access report

我有两个表,我正在创建一个报告。一个是Orders,密钥称为OrderID。 我有另一个名为Parts的表,也包含OrderID。他们也有关系。在我的订单表格中,我有一个列表框,并根据两个OrderID填充它。

现在,我有一个包含Orders数据源的报告。我还添加了一个列表框,并将Row Source / Type设置为Table / Query,指向我的Parts表。但是,当我将两个OrderID的条件设置为匹配以显示每个订单的相应零件时,它仅在第一个细节中选取订单,并为每个连续的细节重复它。如何让列表框仅显示两个OrderID匹配的位置> Code used Report results

2 个答案:

答案 0 :(得分:0)

需要一些VBA才能做到这一点,或者以查询为基础。这里的关键是你需要在OrderID上 INNER JOIN 彼此相邻。此外,添加 DISTINCT 限定符只会返回唯一值,从而删除欺骗。所以,像这样的东西(需要根据你的实际表名和字段名来改变):

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

然后,如果您正在寻找特定订单,可以通过添加WHERE子句来过滤它。

答案 1 :(得分:0)

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

  1. 分别创建较小的零件报告,其中包含仅限于{{PartNumberPartDescriptionPartQty等所有列出的字段1}}表。请务必不要在此子表单的页眉/页脚中放置任何控件(因为它们不会显示在主报表上)。将字段标题放在此子报表的“报表标题”部分中。
  2. 然后,在主要订单报告上展开详细信息部分,并以与屏幕截图相同的方式将部件子报告放在记录下方。子窗体是靠近最后一端的控制部分中的报纸图标,它可以自动执行漫游向导 - 在AC2003 .mdb文件中可能略有不同。
  3. 在向导中,选择上面创建的“部件”子报表,并确认父表单和子子表单之间匹配的Parts。如果设置了关系,则匹配键应自动链接,等待用户确认。
  4. 执行此操作时,您的原始主报告现在已针对订单表的每个不同OrderID正确对齐OrdersParts