2011-07-21 34 views
1

我正在开发基于查询有怎样包括开始日期输入值的日期范围作为参数, 这样打印参数

Between [Enter Start Date (mm/dd/yyyy)] And [Enter End Date (mm/dd/yyyy)] 

Access报表和报告中的结束日期?

在此先感谢。

GRB

+1

如何将参数发送到报告?从一个表单? – Taryn

回答

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)] 

你可以使用任何别名你要为输入值(我用StartDateEndDate),只要实际列名([Enter Start Date (mm/dd/yyyy)][Enter End Date (mm/dd/yyyy)])都是,就好像一样。

当然,这意味着查询将包含每一行中输入值,但你并不需要向他们展示报表中的每个排。
只要把页眉或报告的页脚势必StartDateEndDate领域,和值将在报告中显示只有一次。

+0

参数还应该在SELECT语句开始之前显式定义。 –

+0

感谢Christian,我目前正在使用你的方法,它工作得很好。再次感谢您的及时回复。 – GRB

0

DoCmd.OpenReport有过滤器,where子句和最重要的OpenArgs一些额外的参数。在报告加载事件期间,您可以捕获这些参数以自定义报告的数据源(EG:可选范围),并将报告上的标签值设置为在打开报告前提供的输入。

http://msdn.microsoft.com/en-us/library/bb238032%28v=office.12%29.aspx提供此功能的overfiew。

我想象一个表单,用户从中选择一个日期范围并点击OK。通过按钮单击事件调用报告打开,日期范围(一旦经过验证)通过OpenArgs传入。

此外,您可以使用重载在where/filter参数中设置日期范围,并将完整日期范围传递到OpenArgs中,如“1月1日 - 1月31日”,并将其分配给Label.Text报告上的标签

+2

为了更明确地说明这一点,是不是建议报告没有在记录源中硬连接的参数?如果是这样,我绝对同意。 –

+0

是的,确切的说:) – Mohgeroth

+0

谢谢Mohgeroth, – GRB