访问交叉表报告

时间:2014-07-25 19:37:37

标签: excel report crosstab

我是一个相当新的访问并且有一个数据库报告问题我似乎无法弄清楚(即使有关于该主题的几篇帖子:/)

该数据库包含200多家商店的审计信息。审核答案是文本,而不是数字,审核日期可以是任何一天。我想创建一个报告,将审核问题列为行标题,将最近的三个审核日期列为列标题,将审核答案列为数据。

我有一个表单,允许用户选择商店,并提供交叉表查询。它有效,但不限于最近三个日期。提供查询的表格还列出了访问次数,所以我认为我可以使用最大访问次数做一些事情,但无济于事。

现在的主要问题是我无法获得交叉表报告来生成任何数据。我已经在我尝试过的那天发现了几个示例代码片段,但每个代码都尝试生成一行和一个总计。由于这些是文本数据字段,总计不起作用,虽然我尝试删除我认为合适的代码片段,但它仍然无法生成正确的报告。

我想尝试的第二个选项是将交叉表查询导出为ex​​cel,但我也被卡在那里。

任何帮助都会非常感激。谢谢!

1 个答案:

答案 0 :(得分:0)

根据您的技能水平,这可能很难。我的方法是一堆子查询,但它不会很漂亮。假设您的商店由StoreID唯一标识,您的审核日期为审核日期,您的审核结果位于单个文本字段AuditResults中。你需要弄清楚细节,但这是一个粗略的概述:

将所有数据放入一个表中,每个StoreID 1-3行(每个审核日期1个):

  1. 创建一个按StoreID分组并返回max(AuditDate)的简单查询。称之为Qry1a
  2. 将Qry1a加入审核表以返回最近审核的结果。包含硬编码为1的daterank列。将其命名为Qry1b
  3. 重复a和b两次以获得最近第二次和第三次审核的结果(您可以将连接加入Qry1和Qry2以删除这些结果)。请致电Qry2bQry3b
  4. 对源表和Qry1bQry2bQry3b使用内部联接,创建一个每个StoreID最多返回3行的查询。
  5. 使用此新表,按StoreID创建一个新查询和分组:

    1. 对于第一列,您将使用LastAudit: max(iif(DateRank=1,AuditResults,""))
    2. 之类的内容
    3. 重复上一步以获得接下来的2次审核,分别将daterank更改为2和3。
    4. 这种方法的优点是它可以处理少于3次审计的商店,或者如果你有不断变化的商店列表(因为storeIDs在任何地方都没有硬编码)。