MS Access多报告参数

时间:2016-06-28 19:44:23

标签: ms-access

我有3个子报告基于它们各自的联合查询(上个月,当月和下个月),并且都具有相同的2个参数(月和年)。当我将3个子报表放在整个报表上时,我必须输入3次每个参数。有没有办法实现它所以我只需要输入一次月份和年份,并且能够传递给其他参数?最好没有视觉基础,因为其他将使用它的人对编码知之甚少......

干杯配偶并提前致谢。

1 个答案:

答案 0 :(得分:0)

您可能有像

这样的查询
$stmt

URISyntaxException显示在弹出对话框中的内容。 Access要求这样做,因为它不是列的名称,并且无法将其解析为控件,并且您没有提供值(您可以通过VBA执行此操作。稍微强一些,因为它让我们指定未绑定到特定表单的参数。也可以从外部调用Access)

但您可以引用控件。因此,让我们说打开报告的表单称为Select * From SomeTable ST Where ST.aColumn = YourParameter ,然后您可以在表单上设置一个名为YourParameter的文本框(您在点击按钮后但在打开报告之前验证) 。现在您的查询看起来像这样

ReportOpener

这仅在表格txtParameter已打开时才有效,否则您将获得相同的弹出窗口。对每个参数重复相同的逻辑。

您可以在查询中隐藏一个默认为Select * From SomeTable ST Where ST.aColumn = Forms!ReportOpener!txtParameter 的隐藏文本框

ReportOpener

例如,今天的日期是=Date(),这是Select * From SomeTable ST Where ST.aDateColumn >= DateSerial(Year(Forms!ReportOpener!txtParameter), Month(Forms!ReportOpener!txtParameter) - 1, 1) and ST.aDateColumn < DateSerial(Year(Forms!ReportOpener!txtParameter), Month(Forms!ReportOpener!txtParameter) +2 1, 1) 的值,这意味着

6/28/2016

Date()

您的日期列是否受

限制
DateSerial(Year(Date), Month(Date) - 1, 1) = 5/1/2016 

这是上个月,本月和下个月。

尽管此参数可以完全由DateSerial(Year(Date), Month(Date) + 2, 1) = 8/1/2016 替换,但仍然可以使用参数,因为这样您可以更改您正在查看的3个月间隔。