【发布时间】:2014-09-17 20:02:51
【问题描述】:
我想创建一个可以在同一个父报表上多次用作子报表的报表。但是,每次出现的子报表都应该有不同的值。
例如,有一个名为 DailyReport 的表。 此表中的记录包含: 日期、成员、团队、描述
子报告应针对特定日期范围内的每个团队。但是,每个子报表/团队的日期范围不会相同。
因此,如果所有团队的日期范围是一致的,那么我可以创建一个子报表,并对结果记录进行一些排序,以将事物分成多个团队。 但是,由于日期范围不一致,我无法使用单个查询,因此我看到的最直接的解决方案是为每个团队的每个范围创建单独的子报表和查询。 这个解决方案的问题是,如果我决定更改子报表的格式,我必须在每个特定的子报表中都这样做——很多重复的工作。
我想创建一个通用查询和子报表。查询和子报表将调用将返回相关值的 VB 函数。 这意味着我的父报告多次具有相同的通用报告。在呈现每个子报表时,我想在幕后增加一个值,以便通用查询和子报表调用的函数知道返回不同的值。
但是,Access 中的工作方式似乎并非如此。报表上的子报表不是线性呈现的。创建一个子报表,然后在需要的地方“标记”到报表上。这意味着我所有的通用子报表都有相同的数据。
如何定义通用报告和查询?然后将不同的值插入报表并查询,同时在同一个父报表上多次重复使用报表。
【问题讨论】:
-
如果您放置同一个子报表的多个实例,它们每个都可以有自己的过滤条件。基础查询可能需要多个列来表示每个报告所需的日期范围。
-
您需要查看报表的 LinkMasterFields 和 LinkChildFields 属性。它们正是为此目的而设计的——根据主报表中的当前数据过滤子报表,无需任何代码甚至查询。
-
@pteranodon 是的,我现在明白了。这正是我需要的。谢谢。
-
@pteranodon 实际上,这似乎仅适用于过滤值,例如团队名称。但我不明白这如何适用于日期范围。我错过了什么吗?
-
@JeffO 这似乎是一个可行的解决方案。但是,我似乎无法为每个子报表实例设置过滤器,而只能在报表本身上设置。或者尝试通过 vb 做到这一点;看来我不能在父报告 Open 或 Load 事件中使用 Report.Filter 。你还有什么想法吗?
标签: ms-access