【问题标题】:Getting data from different queries in a single report in MS Access在 MS Access 的单个报告中从不同查询中获取数据
【发布时间】:2014-06-03 19:45:50
【问题描述】:

我在 MS 访问中有一个数据表,其中包含以下列: 身份证 |姓名 |调查员 |开放日期 |关闭日期 |打开/关闭

我正在尝试创建一个报告,其中包含按调查员姓名分组的未结案件、已结案件和未决案件的总数。问题是这三列是根据不同的事情过滤的:未结案件(在未结日期},已结案件(在结案日期)和未决案件(没有日期过滤器)。有没有合适的方法可以获取所有数据在一份报告中而不使事情复杂化?谢谢!

【问题讨论】:

  • 使用每个查询生成一个子报表,每个子报表都出现在一个合并报表中。
  • 谢谢,但我正在寻找不涉及子报告的出路。
  • 这是子报告的目的。这将是最简单的解决方案。
  • 我这样做有问题。在主报告中,我在过滤器中给出了开始和结束日期。此日期过滤器需要应用于打开和关闭的案例子报告。在两个子报告中,我都给出了开始和结束日期占位符。默认情况下,主报告的开始和结束日期仅传播到第一个子报告占位符。如何使主报表的开始和结束日期过滤器值传播到其他子报表?
  • 使用每个查询的“构建...”功能在其条件中使用开始和结束日期字段。例如,类似(不保证语法)=Reports("mainReport").startdate

标签: sql ms-access group-by report


【解决方案1】:

你可以这样做:

SELECT Investigator, 
       Sum(Abs(Not IsNull([Open Date]) And IsNull([Closed Date]))) AS OpenCases, 
       Sum(Abs(Not IsNull([Closed Date]))) AS ClosedCases, 
       Sum(Abs(IsNull([Closed Date]) And IsNull([Open Date]))) AS PendingCases
FROM MyTable
GROUP BY Investigator

将其放入查询中并保存; qInvestigatorSummary 什么的。然后根据查询构建您的报告。

几点说明。
我假设空日期字段为空。如果它不为空,您可以通过其他方式 ([Open Date]='') 或 IsDate([Open Date]) 对其进行测试。根据空单元格中的内容,它们的反应都会有所不同。

另外,我希望您没有像您所指出的那样命名您的字段。作为一般规则,您最好在字段名称中仅使用字母数字字符,必要时使用下划线。例如,只需删除空格,“OpenDate”就会比“Open Date”好得多。 'open_date' 也可以。应该不惜一切代价避免使用斜线“打开/关闭”之类的东西。您还应该避免使用保留字,例如“名称”。数据库对这样的词有特殊用途,它可以在未来为你做更多的工作。尽量给你的字段命名不那么含糊,例如“名称”指的是什么的名称? UserName 或 CaseName 会好得多。描述性将服务于你,以及任何追随你的人,比简短和不清楚更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    相关资源
    最近更新 更多