【问题标题】:Access 2003 Report detail访问 2003 年报告详细信息
【发布时间】:2015-10-28 19:03:02
【问题描述】:

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

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

【问题讨论】:

    标签: vba ms-access report


    【解决方案1】:

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

    1. 单独创建一个较小的零件报告,其中包含仅绑定到Parts 表的所有列出的字段(PartNumberPartDescriptionPartQty 等)。确保不要在此子表单的页眉/页脚中放置任何控件(因为它们不会显示在主报表上)。将字段标题放在此子报表的报表标题部分。
    2. 然后,在您的主订单报告中展开详细信息部分,并将“零件”子报告放在记录下方,就像您的屏幕截图一样。子表单是控制部分中靠近最后的报纸图标,它自动执行漫游向导 - 在 AC2003 .mdb 文件中可能略有不同。
    3. 在向导中,选择上面创建的 Parts 子报表并确认父表单和子子表单之间匹配的OrderID。如果设置了关系,则应自动链接匹配的键,等待用户确认。

    执行此操作后,您的原始主报告现在将正确对齐 Order 表中每个不同的 OrderIDOrdersParts

    【讨论】:

    • 呃。我创建了带有零件子表单的订单表单。我为报告考虑到了这一点吗?以林换树……感谢您的建议。
    【解决方案2】:

    需要一些 VBA 来做到这一点,或者基于查询。这里的关键是您需要在 OrderID 上将表INNER JOIN 相互连接。此外,添加 DISTINCT 限定符只会返回唯一值,从而消除欺骗。所以,像这样(需要根据您的实际表名和字段名进行更改):

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

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

    【讨论】:

    • 谢谢,我刚刚使用了 Parfait 提到的一个子报告,因为它也会为另一个报告加倍,所以它已经解决了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多