0

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

  • rptPayslipPay - 用于显示定期工资
  • rptPSDeds - 用于显示扣除
  • rptPayslipOpay - 用于显示补充付款。此子报告仅针对少数选定员工显示。

我能够在我的主报告的页脚上显示 3 个子报告的总数。由于我的上一个子报告 rptPayslipOpay,可能有也可能没有任何数据,我将其显示在一个名为 [txtOpay] 的文本框中,如下所示:

=IIf([rptPayslipOPay].[Report].[HasData],[rptPayslipOPay].[Report]![sumOpay],"")

我的问题是,即使页面转移到另一位员工,[txtOpay] 的值也会显示,从而显示前一位员工对下一位员工的补充付款。
有没有办法防止这种情况发生?
非常感谢。

4

1 回答 1

0

您可以通过摆弄子报表来使其工作,但假设顶级报表和子报表之间存在 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 的数据,然后对其求和。

于 2015-09-29T18:17:20.400 回答