【问题标题】:Access Crosstab Report访问交叉表报告
【发布时间】:2014-09-17 18:06:37
【问题描述】:

我对访问还很陌生,并且遇到了一个我似乎无法弄清楚的数据库报告问题(即使有几篇关于该主题的帖子:/)

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

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

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

我想尝试的第二个选项是将交叉表查询导出到 excel,但我也被困在那里。

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: excel report crosstab


    【解决方案1】:

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

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

    1. 进行按 StoreID 分组并返回最大值 (AuditDate) 的简单查询。叫它Qry1a
    2. 将 Qry1a 加入审核表以返回最近审核的结果。包括一个硬编码为 1 的 daterank 列。将其命名为 Qry1b
    3. 再重复两次 a 和 b 以获得最近的第二次和第三次审核的结果(您可以离开加入 Qry1 和 Qry2 以删除这些结果)。打电话给Qry2bQry3b
    4. 对源表和Qry1bQry2bQry3b 使用内部联接,进行查询,每个StoreID 最多返回3 行。

    使用这个新表,进行新的查询并按 StoreID 分组:

    1. 对于第一列,您将使用 LastAudit: max(iif(DateRank=1,AuditResults,"")) 之类的内容
    2. 重复上一步,让接下来的 2 次审核分别将 daterank 更改为 2 和 3。

    这种方法的优点是它可以处理少于 3 次审核的商店,或者如果您有不断变化的商店列表(因为 storeID 没有在任何地方硬编码)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 2014-02-05
      • 2018-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多