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

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

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

【问题讨论】:

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

标签: ms-access


【解决方案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 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多