ms-access - 操作方法:在由键组织的字段中包含串联文本的报告
问题描述
我正在尝试在 MS Access 中创建一个具有以下形式的报告:
此处创建的示例将由下表填充:
“FK”列指的是另一个表中的一个键,我将从中填充标题文本。SysID 列包含我将填充到每个单元格中的系统文本的 ID。
我有限的理解是我需要在主报告中使用子报告。子报表将从“FK”中提取密钥并使用它来选择与单元格的相应类型匹配的“SysID”条目,即类型 1、类型 2 等。每个单元格中的文本将是找到的匹配条目的文本。
非常感谢任何示例代码或指向先前相关答案的链接。我很迷茫如何让这个工作。
谢谢!
解决方案
这将需要 VBA 代码。Allen Browne 在http://allenbrowne.com/func-concat.html提供的一种常用函数
假设有一个 Titles 表,其中 ID 是与示例表中的 FK 关联的唯一主键 - 使用该表作为查询源,然后调用该函数 4 次(也假设只有 4 种类型)。
SELECT TitleID, "Title_" & TitleID AS Title,
ConcatRelated("'Sys_' & [sysID]", "sampleTable", "FK=" & [TitleID] & " AND Type=1", "sysID") AS Type1,
ConcatRelated("'Sys_' & [sysID]", "sampleTable", "FK=" & [TitleID] & " AND Type=2", "sysID") AS Type2,
ConcatRelated("'Sys_' & [sysID]", "sampleTable", "FK=" & [TitleID] & " AND Type=3", "sysID") AS Type3,
ConcatRelated("'Sys_' & [sysID]", "sampleTable", "FK=" & [TitleID] & " AND Type=4", "sysID") AS Type4
FROM Titles;
替代方案是 CROSSTAB(再次假设只有 4 种类型):
TRANSFORM Max(ConcatRelated("'Sys_' & [sysID]","sampleTable","FK=" & [FK] & " AND Type=" & [Type], "sysID")) AS SysType
SELECT [FK], "Title_" & [FK] AS Title
FROM sampleTable
GROUP BY [FK], "Title_" & [FK]
PIVOT [Type] IN (1,2,3,4);
请注意,大型数据集的性能可能会很慢。两者在样本数据上似乎具有相同的性能。
不需要子报告。但是,基于 CROSSTAB 构建稳定的报告,其中返回的列是动态的,这可能是一个挑战。
推荐阅读
- python - 如何避免 Python 编码中的外部错误、安全错误?
- css - 用改变数量的子视频元素填充父容器,每个元素都有纵横比
- html - 在 p-panel 内居中对齐 p-chart
- reactjs - 如何以最简洁的方式处理错误和成功响应?
- tweepy - Tweeter API:如何使用 Tweepy.cursor 按关键字搜索(例如 trump)和按关注者数量搜索(例如大于 10000)
- r - highcharter - 如何在地图上的国家/地区显示我的数据值?
- resharper - 有没有办法让 ReSharper 检查正确的文件头
- ruby-on-rails - RSpec:请求规范中的存根控制器方法
- python - 打印数组中的每个单独元素
- image - CachedNetworkImage 和 CachedNetworkImageProvider 有什么区别?应该分别用在哪种情况下?