访问报告 - 显示周结束日期

时间:2009-05-11 03:14:20

标签: vba ms-access access-vba

我有一个基于像这样的查询的Access 2000报告

SELECT 
...
FROM Clients AS wc INNER JOIN ...
WHERE ((wo.OfferStatusID)=3) AND 
((DatePart("ww",[wo.StatusTimeStamp]))=DatePart("ww",[Enter Week End Date])) 
AND ((Year([wo.StatusTimeStamp]))=Year(Date())));

where子句允许您输入“周结束日期”,它会查找包含结束日期的周日周六周的所有记录。

我的问题是我需要在报告中包含星期六结束日期,以便标题为“...截止到2009年5月9日的一周”,我无法弄清楚如何在没有查询的情况下获取该日期第二次问我这件事。

有没有办法强制Access返回在结果中作为另一个字段输入的参数,或者另一种方式来获取该周结束日期?

3 个答案:

答案 0 :(得分:4)

继续在查询设计器中探讨我发现我可以将它添加到SELECT子句中并将输入的值添加到每一行:

[Enter Week End Date] AS WeekEndDate

这有效,但我仍然愿意接受其他建议。

答案 1 :(得分:0)

您可以堆叠两个查询(使一个查询成为另一个查询的来源)。这将是非常MS Access'y。但是,如果你现在有工作,我会坚持你所拥有的。它可能更干净。

答案 2 :(得分:0)

另一种方法是首先使用表单来获取查询参数,并在查询中引用表单控件。例如,使用您的示例,创建一个名为frmGetDateParam的表单,并添加一个名为txtDate的文本框。将格式更改为日期,也许添加一些验证,无关紧要。将命令按钮添加到打开报告的表单。然后,将查询更改为: -

SELECT 
...
FROM Clients AS wc INNER JOIN ...
WHERE ((wo.OfferStatusID)=3) AND 
((DatePart("ww",[wo.StatusTimeStamp]))=DatePart("ww",Forms!frmGetDateParam!txtDate)) 
AND ((Year([Forms!frmGetDateParam!txtDate]))=Year(Date())));

您还可以在报表中引用Forms!frmGetDateParam!txtDate作为字段。

这种方法的唯一缺点是,如果您尝试打开查询/报告而不打开参数表单,则查询仍会提示您输入日期值。