我正在根据以日期范围作为参数的查询开发Access报告, 像这样
Between [Enter Start Date (mm/dd/yyyy)] And [Enter End Date (mm/dd/yyyy)]
如何在报告中包含为开始日期和结束日期输入的值?
提前致谢。
GRB
答案 0 :(得分:0)
您必须使用Where
子句中的确切名称在查询中选择输入值作为列。
您的查询可能如下所示:
select
Column1,
Column2,
DateColumn
from
MyTable
where
DateColumn between [Enter Start Date (mm/dd/yyyy)]
and [Enter End Date (mm/dd/yyyy)]
要在查询中包含输入值,您必须更改查询,如下所示:
select
Column1,
Column2,
DateColumn,
[Enter Start Date (mm/dd/yyyy)] as StartDate,
[Enter End Date (mm/dd/yyyy)] as EndDate
from
MyTable
where
DateColumn between [Enter Start Date (mm/dd/yyyy)]
and [Enter End Date (mm/dd/yyyy)]
您可以使用输入值所需的任何别名(我使用StartDate
和EndDate
),只要实际的列名称为[Enter Start Date (mm/dd/yyyy)]
和[Enter End Date (mm/dd/yyyy)]
) 完全相同。
当然这意味着查询将包含每行中的输入值,但您不需要在报告的每一行中显示它们。
只需将StartDate
和EndDate
绑定的字段放在报表的页眉或页脚中,这些值只会在报表中显示一次。
答案 1 :(得分:0)
DoCmd.OpenReport有一些额外的过滤器参数,一个where子句,最重要的是OpenArgs。在报告加载事件期间,您可以捕获这些参数以自定义报告的数据源(EG:可供选择的范围),并将报告上的标签值设置为打开报告之前提供的输入。
http://msdn.microsoft.com/en-us/library/bb238032%28v=office.12%29.aspx提供了此功能的概述。
我设想了一个表单,用户从中选择日期范围并点击确定。调用报告以通过按钮单击事件打开,并通过OpenArgs传递日期范围(在该端验证后)。
此外,您可以使用重载来设置where / filter参数中的日期范围,并将完整的日期范围传递给OpenArgs,例如“1月1日 - 1月31日”,并将其分配给标签的Label.Text在报告上