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 多报告参数的主要内容,如果未能解决你的问题,请参考以下文章