【问题标题】:Access Crosstab Multiple Rows as column headers?访问交叉表多行作为列标题?
【发布时间】:2020-09-06 15:46:41
【问题描述】:

我正在尝试使用交叉表查询来模仿 MS Access 中的电子表格布局(图 1)。使用查询生成器设置多个行标题非常简单,但我似乎无法找到一种方法来仅交换 X 和 Y 轴来获得相同的信息。

我是 SQL 的新手,所以如果我的方向正确,我可能会想出一些新的查询技术。

【问题讨论】:

  • Access CROSSTAB 无法做到这一点。我认为旧的数据透视表工具可以。访问交叉表必须为单个列标题连接字段。商店的数量将是一个单独的查询计算。
  • 很好地设置了问题,但您没有包括两个关键步骤。您拥有的数据和您想要的查询结果(请简化)。例如,访问表没有元素 ID,而 excel 表有。
  • 尊敬的,mazoula,我想你只是没有理解我的问题。 Access 交叉表屏幕截图的顶部有元素 ID。三行标题“Prekit”、“Vendor”和“No of Stores”都是静态的、非聚合的数据点。我应该注意,电子表格中的元素 ID 是 ITEM_NO 在访问中。

标签: sql ms-access


【解决方案1】:

简短的回答是,除非您知道您的数据中有多少 Prekit,否则您无法执行此操作。我的官方回答是,通常当您建立一个数据库时,您希望向任何利益相关者展示该数据库可以复制他们的文书工作。然而,虽然访问可以进行交叉表查询,但访问报告功能不能很好地与交叉表查询一起使用。您的交叉表确实包含所有信息,因此我建议您查看 Access 的导出功能。 Access 可以重新创建原始 Excel 文件并将数据插入到该文件中,尽管您可能需要编写一些 VBA 代码以获得详细信息。 现在回答您的实际问题,Excel 文件具有清晰的标题和数据部分,我们在交叉表中拥有所有数据,问题是格式化,这是 Access Reports 的工作。然而,访问报告是固执己见的。访问报告预计将在设计时绑定,这使得绑定到交叉表查询变得困难。这是一个更详细解释的链接,以及一种数据类型的解决方法。
https://www.microsoft.com/en-us/microsoft-365/blog/2012/05/23/using-crosstab-queries-in-reports/ 但是对于我的示例数据,我知道列数:

Query1 对数据进行分组,因此报表的标题部分可以获取正确的数字。 Query2 完成交叉表。报表标题部分的文本框通过 dlookup 函数绑定到 Query1。

Query2 以 query1 开头:

查询 2 是报表的数据源,我们从查询 1 中查找标题值。以下是报告:

'control source for kitting vendor textbox 1:
=DLookUp("VENDOR_NAME","Query1","ROW_ID = 1")

'control source for # of stores textbox 7:
=DLookUp("NO_OF_STORES","Query1","ROW_ID = 7")

同样,除非您知道有多少列来自交叉表,否则您无法制作此报告。每次有人制作新套件时,都需要更新报告。

【讨论】:

  • 感谢您花这么多时间来撰写此答案,Mazoula。这非常有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-18
  • 1970-01-01
  • 1970-01-01
  • 2014-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多