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

max*_*gen 2 ms-access

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

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

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

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

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

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

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

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

MTIA

Dal*_*ale 6

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

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

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

  • 呃,我明白了.如何定义主报告的过滤器?在"选择要查看的报告"中,使用选项列表输入过滤器表单?或者您是否使用不同的过滤器或WHERE条件打开报告?您实际上只需要能够在子表单中引用过滤条件,就像在主窗体中引用它一样.您可以通过使用表单上隐藏的"过滤条件"字段的绝对引用(例如Form_MyFilterForm.MyReportCriteria)来执行此操作,其中用户设置条件,或直接引用主报表的过滤器属性. (3认同)