Ms access 如何确保MS Access显示当前记录的正确子报表数据?
我有一个工资单主报告和3个子报告,所有报告都通过员工的序列号链接: rptPayslipPay-用于显示常规薪资 RPTPSDES-用于显示扣除额 rptPayslipOpay-用于显示补充付款。这 仅为少数选定员工显示子报表。 我能够在主报告的页脚上显示3个子报告的总数。由于我的上一个子报告rptPayslipOpay可能有也可能没有任何数据,我将其显示在名为[txtOpay]的文本框中,如下所示:Ms access 如何确保MS Access显示当前记录的正确子报表数据?,ms-access,subreports,Ms Access,Subreports,我有一个工资单主报告和3个子报告,所有报告都通过员工的序列号链接: rptPayslipPay-用于显示常规薪资 RPTPSDES-用于显示扣除额 rptPayslipOpay-用于显示补充付款。这 仅为少数选定员工显示子报表。 我能够在主报告的页脚上显示3个子报告的总数。由于我的上一个子报告rptPayslipOpay可能有也可能没有任何数据,我将其显示在名为[txtOpay]的文本框中,如下所示: =IIf([rptPayslipOPay].[Report].[HasData],[rptPa
=IIf([rptPayslipOPay].[Report].[HasData],[rptPayslipOPay].[Report]![sumOpay],"")
我的问题是,[txtOpay]的值会显示出来,即使页面已转移到另一名员工,也会显示上一名员工向下一名员工支付的补充款项。
有没有办法防止这种情况发生?
非常感谢。您可以通过摆弄子报表来让它工作,但是假设顶级报表和子报表之间的关系为1:1,并且假设serialNumber是一个字符串;代替IIF语句,您可以考虑沿着以下方式尝试:
=DLookup("sumOpay", [rptPayslipOPay].Report.RecordSource, "serialNumber='" & [serialNumber] & "'")
我不确定您的对象是如何命名的,但我认为这应该与您要查找的内容接近
根据您的描述,sumOpay可能是rptPayslipOPay报告中的一个计算字段。如果是,您可以使用:
=DSum("<field containing data to sum>", [rptPayslipOPay].Report.RecordSource, "serialNumber='" & [serialNumber] & "'")
诚然,这些将运行得更慢,但这可能是一种更容易让它工作的方法
另一种选择是将rptPayslipOPay的数据从左侧加入顶级查询,然后求和。谢谢!DSUM方法有效。你知道为什么我以前的方法会将值传递给下一条记录吗?如果不让应用程序在我面前调试它,我很难说。您是否将子报表的链接主字段设置为与父报表的serialNumber同步?是的。我将链接主字段和链接子字段设置为serialNumber