Access 2007 - 从子子报表引用子报表值

Posted

技术标签:

【中文标题】Access 2007 - 从子子报表引用子报表值【英文标题】:Access 2007 - Referring to sub-report value from sub-sub-report 【发布时间】:2014-04-22 17:53:54 【问题描述】:

我的报告包含多个子报告以及其中一个子报告的子报告。

与我有关的:

rptProgressReport ->rptEmployee(rptProgressReport 的子)-> rptSubEmployeeProject(rptEmployee 的子)

到目前为止,一切都根据需要生成。员工按顺序排列,子报表拉出各种项目细节。除了我需要将一张桌子花费的时间加在一起。

tblProject(主表)-> tblProjectHistory(通过 projectID->fldProjectID 与 tblProject 相关的表)。

tblProjectHistory 具有以下字段。 [historyID]、[fldProjectID]、[History Information]、[History Date]、[Time Spent]、[Employee]。

只要员工匹配且日期在指定的日期范围内,我需要对与正在显示的项目相同的所有 [花费时间] 进行总和。

指定的日期范围是通过带有字段 txtStartDate 和 txtEnd Date 的启动表单 (frmReportGeneration)。

子报告 rptSubEmployeeProject 有一个文本框 (txtTimeSpent),我有以下控制源。

=Sum(DLookUp("[Time Spent]","tblProjectHistory","[Employee]='" & [Reports]![rptEmployee].[txtTempEmployee] & "' AND [History Date] > " & [Forms]![frmReportGeneration].[txtStartDate] & " AND " & [History Date]<" & [Forms]![frmReportGeneration].[txtEndDate] & "))

txtTempEmployee 的 rptEmployee 字段正确显示当前员工以匹配该子报告。

问题是我收到上述代码的每个值部分的提示 - txtTempEmployee 和 txtStartDate/txtEndDate,即使我将报告值更改为 [Reports]![rptProgressReport]![rptEmployee].[txtTempEmployee]

知道如何从父报表或第一个子报表中正确提取变量吗?

谢谢。

+++++ 更新 +++++ 好的更新/关闭这个。我最终需要做一些类似于接受的答案中建议的事情。我无法将这个想法发布到工作中 - 但我能够在 vba 中设置临时变量并在整个报告/子报告中使用它们。

【问题讨论】:

【参考方案1】:

不建议通过此构造“Forms!....”(或“Reports!...”)引用其他对象 我做了一些不好的经历。我建议将这些值放入一个变量中并制作一个 获取功能: 在您定义的模块中:

Publicg dtStart As Date
Public gdtEnd As Date

在表单中,您在触发报告的按钮中指定开始和结束日期

gdtStart = Me!txtStartDate
gdtEnd = Me!txtEndDate

现在是 Get-Function:

Public Function Get_Date_Start () As Date 
    Get_Date_Start = gdtStart
End Function

Public Function Get_Date_End () As Date 
    Get_Date_End = gdtEnd
End Function

在查询中,您现在可以像这样使用它:

... AND [History Date] > " & Get_Date_Start() & " AND " & [History Date] <" & Get_Date_End()

顺便说一句:不要在任何对象名称中使用空格:代替 [历史日期] 将其命名为 History_Date,您可以避免代码中的括号:-)

【讨论】:

谢谢。我很沮丧,最后做了一个查询,把所有的信息都拉到了一个 - 看起来很丑 - 时尚,但似乎正在工作。我对您所发表的内容的有用性表示赞赏。 所以我尝试使用它,因为我决定拥有打印到 PDF 的能力。虽然我可以在主报告中获取日期(设置公共功能),但我无法让它在子报告中起作用。 (它不会让我突出显示代码)如果我直接运行子报告,我会收到错误“数据类型不匹配”。我尝试在日期字段的两侧放置井号,但无济于事。我删除了引号,我得到了未定义函数的错误。我还尝试将公共功能放在子报告的顶部。以下是我的子报表 RecordSource。

以上是关于Access 2007 - 从子子报表引用子报表值的主要内容,如果未能解决你的问题,请参考以下文章

从子报表导航到父书签

确定子表单/子报表是不是在 MS Access 中加载了表单或报表

滚动到表单中的子报表底部 (Access 2016)

访问 2007-#Name?错误

基于另一个子报表的 MS Access 子报表过滤器

如何将 Access 报表(包括子报表)保存为 Excel 兼容文件和可读 PDF?