数据表视图中的 MS Access 表单交叉表查询

Posted

技术标签:

【中文标题】数据表视图中的 MS Access 表单交叉表查询【英文标题】:MS Access Form in Datasheet view Crosstab query 【发布时间】:2020-02-26 21:36:28 【问题描述】:

我有一个 Access 表单,允许用户从多个来源提取预测数据和历史数据。历史数据使用交叉表查询 qryHistoricalOverview 进行汇总,以管理可以选择的可变日期数。然后,我使用选择查询 qryODLaneSummary 将历史数据和预测数据连接在一起。如何将此查询用作记录源以在数据表视图中显示所有历史字段?我尝试从另一个解决方案修改的当前代码未返回任何内容。

Dim i As Integer
Dim db As DAO.Database
Dim rs As DAO.Recordset

Set db = CurrentDb()
Set rs = db.OpenRecordset("qryODLaneSummary", dbOpenDynaset)
i = 0
While i < rs.Fields.count - 1
    Debug.Print rs.Fields(i).Name
    i = i + 1
Loop

我看到的另一个选项涉及添加控件,但我担心删除然后添加所有控件的处理时间。

我在下面发布了一些示例数据。日期列是可变金额。我让用户选择他们想要查看的日期。我可以限制日期的数量,但如果可能的话,我想提供灵活性。

Orig  Dest  Plan Plan Pos 12/10/2019 12/11/2019 12/12/2019 12/13/2019  
8711L 7649N 0.38   0.38      0.2        0.2        0.1        0.3   
8719T 7649N 0.38   0.38      0.25       0.25       0.3        0.3 

【问题讨论】:

基于动态交叉表查询构建一个稳定的报表很棘手,但可以做到。查看access.hookom.net/DynamicMthlyCrosstabRpt.htm。您的代码在哪里?提供示例数据和 SQL 语句。 编辑问题以将数据显示为文本表以及 SQL 语句。 如果底层记录源有子查询或堆叠多个查询,则访问交叉表查询会出错。错误消息各不相同且无济于事。修复方法是用表替换 Cross-Tab 查询的记录源。在设计器中,从 Select 选项卡切换到 Make Table 选项卡,并将生成的表用作跨表查询的记录源。如果有帮助,请点赞此评论。 抱歉回复延迟。 Mazoula 我仍在处理制作表的下线效果。 @mazoula 制作表格是我能找到解决问题的唯一方法,但现在我似乎无法将问题标记为已回答。 【参考方案1】:

如果基础记录源具有子查询或堆叠多个查询,则 Access Cross-Tab 查询会出错。错误消息各不相同且无济于事。

解决方法是将交叉表查询的记录源替换为表。在设计器中,从 Select 选项卡切换到 Make Table 选项卡,并将生成的表用作跨表查询的记录源。

【讨论】:

以上是关于数据表视图中的 MS Access 表单交叉表查询的主要内容,如果未能解决你的问题,请参考以下文章

基于包含子查询的查询的 ms-access 交叉表查询

TSQL 等效于 MS Access 交叉表查询

MS Access - 使用子表单过滤时禁止保存提示

仅重新查询数据表视图表单中的一条记录 (MS Access)

MS Access 参数查询导致错误

将 Access 交叉表查询转换为 SQL Server