MS Access 报告字段值作为标题,表下方有其他字段值

Posted

技术标签:

【中文标题】MS Access 报告字段值作为标题,表下方有其他字段值【英文标题】:MS Access Report Field Value as Heading with Other Field Values Beneath in Table 【发布时间】:2017-08-10 16:16:00 【问题描述】:

在 Microsoft Access 报表中,如何将字段的每条记录显示为列标题,而该列中其他字段的记录位于其下方。

我的查询提供了以下格式的数据:

| ID |  Item  | Item Characteristic 1 | Item Characteristic 2 | Other Fields |
|:--:|:------:|:---------------------:|:---------------------:|--------------|
| 22 | Code 1 |          Blue         |           48          | …            |
| 22 | Code 2 |          Red          |           50          | …            |
| 22 | Code 3 |         Green         |           99          | …            |

我希望我的报告看起来像这样:

|        Heading        | Data True to All Records1 | More Data True to All Records2 |              |
|:---------------------:|:-------------------------:|:------------------------------:|:------------:|
|      ------------     |        ------------       |          ------------          | ------------ |
|          Item         |           Code 1          |             Code 2             |    Code 3    |
| Item Characteristic 1 |            Blue           |               Red              |     Green    |
| Item Characteristic 2 |             48            |               50               |      99      |
|      Other Fields     |             …             |                …               |       …      |
|      ------------     |        ------------       |          ------------          | ------------ |
|         Footer        | Data True to All Records3 | More Data True to All Records4 |              |

目前,我只能获取以下格式的数据:

| Heading |       |    |
|:-------:|:-----:|:--:|
|   ----  |       |    |
|  Code 1 |  Blue | 48 |
|         |       |    |
|  Code 2 |  Red  | 50 |
|         |       |    |
|  Code 3 | Green | 99 |
|   ---   |       |    |
|  Footer |       |    |

每条记录在报告中产生一个新的“行”。

谁能帮忙?

【问题讨论】:

【参考方案1】:

表需要一个唯一的记录标识符 - 应提供自动编号类型字段,然后考虑以下内容。

查询1:

SELECT RecID, ID, "Item" AS Category, Item AS Data FROM Tablename
UNION SELECT RecID, ID, "ItemChar1", ItemChar1 FROM Tablename
UNION SELECT RecID, ID, "ItemChar2", ItemChar2 FROM Tablename;

查询2:

TRANSFORM First(Query1.Data) AS FirstOfData
SELECT Query1.ID, Query1.Category
FROM Query1
GROUP BY Query1.ID, Query1.Category
PIVOT Query1.RecID;

【讨论】:

【参考方案2】:

为了后代,我通过设置一个未绑定标签表来解决这个问题。

我给这些标签中的每一个都赋予了 x-y 的控件名称,其中 x 是列号,y 是行号。

然后我遍历每一列和每一行并将标签的标题更改为我的 RecordSet 中的值。

(Form("FormName").Controls.Item(x & "-" & y)).Caption = .Fields("FieldName")

【讨论】:

以上是关于MS Access 报告字段值作为标题,表下方有其他字段值的主要内容,如果未能解决你的问题,请参考以下文章

生成包含多个表/查询的 MS Access 报告

基于表的 MS Access 报告引发“查询太复杂”错误

如何以格式化 ID 值作为报告名称将 MS Access 报告导出为 PDF?

MS Access 使用表字段作为查询条件

如何在 MS Access 2007 中使用查询作为报告源?

MS Access:突出显示 MS Access 报告中的特定字段