在没有LinkChild / LinkMaster的情况下链接子报表

时间:2009-11-24 01:19:31

标签: ms-access

我正在维护并偶尔修改Access 97程序,这对于一家非常大的美国公司来说仍然是一个至关重要的部门工具。

许多报告使用“总计”子报告,我无法使用LinkChildFields \ LinkMasterFields进行链接。在每种情况下,主报告都可以通过“报告管理器”表单按多种(或没有)标准进行过滤。

我通过使用在设计视图中打开任何子报表的通用函数来处理此问题,并编辑.Filter属性。 100%正常工作。

但是,这会阻止我将应用程序作为.mde文件分发,因为设计视图在mde中不可用。

我已经尝试了我能想到的每一种选择:

  • 在Open事件期间将子窗体过滤器设置为Parent(错误)
  • 在Open事件期间使用Docmd.ApplyFilter(在子窗体中什么都不做)

虽然这个“旧”应用程序非常适合部门使用它,但他们的IT部门想要实施“全局解决方案”,而且我真的不希望竞争对手免费获得大量复杂的解决方案业务规则多年来我一直在努力工作。

有没有人对子窗体过滤有任何建议,所以我可以使用mde?

MTIA

2 个答案:

答案 0 :(得分:6)

为什么不能使用Link Child / Master链接到“totals”子报告?它应该与主报告运行相同的记录源并聚合记录。在任何情况下,如果您可以指定过滤条件,则应该能够指定返回相同值的domain aggregate条件(dsum,dcount,dlookup等)。

在设计视图中动态编辑过滤器属性以使其工作是一个障碍。有一个原因很难,不是因为Access设计者想让你很难用动态标准嵌入子报表,而是因为这是一个坏主意。不要这样做。如果您不能在记录字段上加入子报表,或者完全删除子报表并aggregate within the main report,则报表记录源可能有问题。您可能已经知道这一点,但您可以在报表/页面/组页眉/页脚中的报表中对详细信息进行汇总(总和,计数等),并以此方式提供总计。

例如,如果您要为可打印的发票撰写报告,则可以将订单项上方的所有内容移动到报表标题中,将订单项留作报表详细信息,并将订单项下方的所有内容移动到报表页脚中。然后,您可以在详细信息字段上sum()生成小计,然后添加税,运费等。另一种方法是使用子项目的子项目,然后尝试从外部计算总计,而不是简单如果子报告发生变化,则会更加脆弱。

答案 1 :(得分:4)

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