MS Access 多报告参数

Posted

技术标签:

【中文标题】MS Access 多报告参数【英文标题】:MS Access Multiple Report Parameter 【发布时间】:2016-06-28 19:44:22 【问题描述】:

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

祝朋友们好运,提前致谢。

【问题讨论】:

您的参数现在如何在查询中声明? 我在原始查询(联合查询从中提取的查询)中将它们设置为标准参数。 你能举个例子吗?您可能只引用表单控件而不是参数。这通常是最简单的事情(尽管有时不是最好的),但让我们看看您的查询。 我应该发布哪个查询?我有一个最多允许 5 个项目代码的员工表格。然后将代码提取到 5 个不同的查询(具有参数)中,然后将它们合并到当前月份的查询中,该查询的 SQL 调整了两次以创建下个月和上个月。 我只是做了一些假设并发布了答案。 【参考方案1】:

你可能有类似的查询

Select * 
From SomeTable ST
Where ST.aColumn = YourParameter

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

您可以改为引用控件。因此,假设打开您的报告的表单名为ReportOpener,那么您可以在表单上有一个名为txtParameter 的文本框(您在单击按钮后但在打开报告之前对其进行验证)。现在您的查询可能如下所示

Select * 
From SomeTable ST
Where ST.aColumn = Forms!ReportOpener!txtParameter

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

你可以有一个隐藏的文本框,默认为=Date() 一个在你的查询中的duse

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 

您的日期列是否会受到

的限制
DateColumns >= 5/1/2016 and DateColumn < 8/1/2016 

上个月、本月和下个月。

即使此参数可以完全由Date 替换,它仍然是下一个使用参数,因为这样您可以更改您正在查看的 3 个月间隔。

【讨论】:

而不是未知列,我在开头有一个声明:PARAMETERS [Month] Text ( 255 ), [Year] Short; @Dhill 我不确定你的意思?一份声明?开头是什么? 抱歉不清楚,SQL开头,SELECT语句前:PARAMETERS [Month (Abbreviate to 3 Letters)] Text ( 255 ), [Year (YYYY)] Short;选择员工。[职位].... 您的意思是您有PARAMETERS 声明声明?我认为这是“选择”之前唯一允许的想法。如果是这种情况,那么您可以放弃它。如果您将通过 DAO 或 ADO 提供参数,那才是真正必要的(即使这样也不是真的)。​​ 没错,对不起!那么我现在应该添加 WHERE 吗?

以上是关于MS Access 多报告参数的主要内容,如果未能解决你的问题,请参考以下文章

MS Access 将报告导出为 pdf

ms-access:仅显示特定日期内记录的报告

MS Access:如何过滤非报告字段的报告?

MS Access - VBA 中报告的参数

MS Access 报告给出“数据类型不匹配”错误,但基础查询没有

MS Access中的单参数多查询