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

How to make sure that MS Access displays the correct subreport data of the current record?

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

我能够在主报告的页脚显示 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 的数据,然后对其求和。