我的报告包含多个子报告以及其中一个子报告的子报告。
关注我的那个:
rptProgressReport - > rptEmployee(rptProgressReport的子) - > rptSubEmployeeProject(rptEmployee的子)
到目前为止,一切都在按需生成。员工按顺序列出,子报告提取各种项目详细信息。除了我需要将从一个表中花费的时间加在一起。
tblProject(主表) - > tblProjectHistory(通过projectID-> fldProjectID与tblProject相关的表)。
tblProjectHistory具有以下字段。 [historyID],[fldProjectID],[历史信息],[历史日期],[花费的时间],[员工]。
我需要为所有[时间花费]计算项目,这些项目等于显示的内容,只要员工匹配并且日期在指定的日期范围内。
指定的日期范围是通过启动表单(frmReportGeneration),其中包含字段txtStartDate和txtEnd Date。
子报告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中设置tempvars并在整个报告/子报告中使用它们。
答案 0 :(得分:1)
不建议通过此构造“Forms!....”(或“Reports!...”)来引用其他对象
我用它做了一些不好的经历。我建议将值放入变量并制作一个
获取-的Funktion:
在您定义的模块中:
Publicg dtStart As Date
Public gdtEnd As Date
在表单中,您可以在触发报告的按钮中指定开始日期和结束日期
gdtStart = Me!txtStartDate
gdtEnd = Me!txtEndDate
现在获取功能:
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,您可以避免代码中的括号: - )