Ms access 链接不带LinkChild/LinkMaster的子报表

Ms access 链接不带LinkChild/LinkMaster的子报表,ms-access,Ms Access,我正在维护并偶尔修改Access 97程序,它仍然是一家非常大的美国公司的重要部门工具 许多报告使用总计子报告,我无法使用LinkChildFields\LinkMasterFields链接该子报告。在每种情况下,主报告都可以通过Reports Manager表单按多种标准或无标准进行筛选 我通过使用一个通用函数来解决这个问题,该函数在设计视图中打开任何子报表,并编辑.Filter属性。工作100%正常 但是,这使我无法将应用程序作为.mde文件分发,因为设计视图在mde中不可用 我已经尝试了我

我正在维护并偶尔修改Access 97程序,它仍然是一家非常大的美国公司的重要部门工具

许多报告使用总计子报告,我无法使用LinkChildFields\LinkMasterFields链接该子报告。在每种情况下,主报告都可以通过Reports Manager表单按多种标准或无标准进行筛选

我通过使用一个通用函数来解决这个问题,该函数在设计视图中打开任何子报表,并编辑.Filter属性。工作100%正常

但是,这使我无法将应用程序作为.mde文件分发,因为设计视图在mde中不可用

我已经尝试了我能想到的所有选择:

将打开事件期间的子窗体筛选器设置为父级错误的筛选器 在打开事件期间使用Docmd.ApplyFilter在子窗体中根本不起任何作用 虽然这个“老”应用程序非常适合使用it的部门,但他们的it部门希望实现一个“全局解决方案”,而且我真的不希望竞争对手能够免费访问我多年来一直努力研究的大量复杂业务规则

是否有人对子表单筛选有任何建议,以便我可以使用mde


MTIA

为什么不能使用链接子/主链接链接到总计子报表?它应该运行与主报告相同的记录源,并对记录进行聚合。在任何情况下,如果可以指定筛选条件,则应该能够指定返回相同值的条件dsum、dcount、dlookup等

在“设计”视图中动态编辑过滤器属性以使其正常工作是一个难题。这有一个困难的原因,不是因为Access设计者想让您难以嵌入具有动态条件的子报表,而是因为这是一个坏主意。不要这样做。如果您不能在记录字段上加入子报表,或者完全删除子报表,则报表记录源有问题。您可能已经知道这一点,但是您可以在报表/页面/组页眉/页脚中对报表中的详细信息进行合计、计数等,并以这种方式给出总计


例如,如果要为可打印发票编写报告,则可以将行项目上方的所有内容移动到报告标题中,将行项目保留为报告详细信息,并将行项目下方的所有内容移动到报告页脚中。然后,您可以对明细字段进行汇总,生成小计,然后添加税费、运费等。另一种方法是对行项目使用子报表,然后尝试从外部计算总计,如果子报表发生更改,那么就不那么简单,而且更加脆弱。

您是否考虑过重写子报表所基于的查询?查询的SQL字符串很容易更改,您可以使用此方法生成mde。

在多个级别上显示主报告组,然后显示详细信息。子报告也进行分组,但仅在最高级别进行分组,没有详细说明。在主要报告的末尾有一页的“总结”。因此,它不适合“正常”聚合函数。每个组都可能是筛选器的主题,因此子报表必须使用相同的筛选器。啊,我明白了。如何定义主报告的筛选器?在“选择要查看的报告”中,键入带有选取列表的筛选表单?或者您是否使用不同的筛选器或WHERE条件打开报告?实际上,您只需要能够引用子窗体中的筛选条件,就像在主窗体中引用它一样。您可以通过使用表单上隐藏的“筛选条件”字段的绝对引用来实现这一点,例如用户在其中设置条件的表单_MyFilterForm.MyReportCriteria,或直接引用主报表的筛选属性。是的,我的“报表管理器”表单允许用户从多个组合中选择条件。预览和打印按钮引用一个函数,该函数连接必需的WHERE子句,然后使用该子句打开报表。但是,可能根本没有任何条款。一个典型的子句可能是:region_id=2,area_id=32,subcontractor_id=397等等。即使我将其保存到报表表单中的一个隐藏字段中,我也看不出如何在子报表的查询中使用它。我应该提到,有许多报表可以从列表框中选择。每个报告可用的过滤器各不相同,因此选择报告时,仅显示相关的过滤器选项。我以前在设计视图中过滤子报表的方法允许泛型函数应用适用于主报表的任何条件。感谢Remou,这是最好的“泛型”解决方案!您是否尝试过在子报表的OnOpen事件中更改recordsource?您必须在父窗体中使用包含您正在筛选的值的控件,或者使用全局变量从中提取值,但这应该可以工作。谢谢David。这是Remou建议的一个变体,但具有不改变的优点 正在初始化基础查询。我试试看。