Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 如何确保MS Access显示当前记录的正确子报表数据?_Ms Access_Subreports - Fatal编程技术网

Ms access 如何确保MS Access显示当前记录的正确子报表数据?

Ms access 如何确保MS Access显示当前记录的正确子报表数据?,ms-access,subreports,Ms Access,Subreports,我有一个工资单主报告和3个子报告,所有报告都通过员工的序列号链接: rptPayslipPay-用于显示常规薪资 RPTPSDES-用于显示扣除额 rptPayslipOpay-用于显示补充付款。这 仅为少数选定员工显示子报表。 我能够在主报告的页脚上显示3个子报告的总数。由于我的上一个子报告rptPayslipOpay可能有也可能没有任何数据,我将其显示在名为[txtOpay]的文本框中,如下所示: =IIf([rptPayslipOPay].[Report].[HasData],[rptPa

我有一个工资单主报告和3个子报告,所有报告都通过员工的序列号链接:

rptPayslipPay-用于显示常规薪资 RPTPSDES-用于显示扣除额 rptPayslipOpay-用于显示补充付款。这 仅为少数选定员工显示子报表。 我能够在主报告的页脚上显示3个子报告的总数。由于我的上一个子报告rptPayslipOpay可能有也可能没有任何数据,我将其显示在名为[txtOpay]的文本框中,如下所示:

=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