访问报告忽略查询中的 DISTINCROW

Posted

技术标签:

【中文标题】访问报告忽略查询中的 DISTINCROW【英文标题】:Access Report ignores DISTINCROW in query 【发布时间】:2011-03-30 20:37:21 【问题描述】:

我有一个从查询中获取数据的报告。查询本身在 SQL 中有 DISTINCTROW。但是,当我将查询用作报告的记录源时,它会输出数据,就好像 DINSTINCTROW 没有在查询中贴花(唯一记录)。

在选择查询作为报告的记录源时,是否有一些选项忘记添加? 我尝试将 SQL 代码复制并粘贴到报告记录源中,但没有任何区别。

查询结果:DISTINCT(同ALL)

A       B       C       D               
5669    7625    7625    $680.00
5677    7635    7635    $1,448.75
5757    7751    7751    $562.50
5776    7773    7773    $825.00
5796    7796    7796    $53.75
5810    7814    7814    $150.00

查询结果:DISTINCTROW

A       B       C       D           
5669    7625    7625    $156.25
5677    7635    7635    $30.00
5757    7751    7751    $180.00
5776    7773    7773    $15.00
5796    7796    7796    $31.25
5810    7814    7814    $120.00

【问题讨论】:

您从报告中得到什么结果? 如果这里的 SQL 语句中没有 JOIN,那么 DISTINCTROW 将毫无用处。如果没有 DISTINCT 或 DISTINCTROW 的版本中没有重复项,那么也没有理由使用 DISTINCT。您仅使用 DISTINCT 删除重复项。报告中定义了哪些排序和分组?这会对显示的数据产生重大影响。 ...我补充一下,如果你能给我们报告Recordsource的SQL,会节省很多时间。 【参考方案1】:

如果在报告中显示的字段不在详细信息部分,而是在分组部分(例如页眉部分或页脚部分)中,则可能会发生这种情况。如果是这样,则报告仅显示分组值,即不同的值。

【讨论】:

显示的字段在详细信息部分 Access 版本是什么?查询是否使用链接到非 Access 数据库的表?报表的属性 Source 是查询的名称还是与查询相同的 SQL 语句? Access 2007。查询运行一些其他查询,这些查询链接到 access 数据库表。编辑:报告的来源是查询的名称,但我也尝试过sql语句。【参考方案2】:

如果查询的'unique values' 属性设置为yes,或者查询的sql 以SELECT DISTINCT 开头,则应该是这样。你确定你没有在你的报告recordsource 中做额外的连接吗?如果您根据查询创建一个新的空白报告,它是否只返回不同的行?


针对您的评论,如果基于查询的空白报告返回不明确的行,则问题出在查询上。您是否检查了记录计数以查看它们是否匹配?也许它“看起来”像查询返回不同的行,但实际上并非如此。 另一方面,如果基于查询的空白报告返回不同的行,则可以确定您的查询没有问题,并且在报告中引入了其他行。


另外,DISTINCTDISTINCTROW 返回不同的结果 - 你想要的是 DISTINCT,而不是 DISTINCTROW。检查查询的'unique values' 属性。


'unique values''unique rows' 是两个不同的东西,你可以查看帮助文件。你想要'unique values'

【讨论】:

sql 查询以 SELECT SELECT DISTINCTROW 开头,并且报告“recordsource”未加入。我在一个空白查询上试过了,它仍然得到数据,好像DISTINCTROW 不在查询中 不管Unique Records,记录数都是一样的。但是,一列中的数据发生了显着变化(数字要小得多)。但是,其他列没有变化。 无论unique valueson / off,数据都不会改变。只有Unique Rows更改数据 好的,让我们重新开始。我假设查询和报告之间的行数不同,报告更高,好像没有应用 distinctRow。是这样吗?您在查询中没有看到的新报告中看到重复行? 我用示例查询结果编辑了主帖。报告始终显示来自DISTINCT / ALL 的结果,无论我更改了什么。【参考方案3】:

在查询中,将 DISTINCTROW 替换为 DISTINCT。

参考:Prédicats ALL, DISTINCT, DISTINCTROW, TOP

【讨论】:

以上是关于访问报告忽略查询中的 DISTINCROW的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBA 访问查询和报告?

访问报告中的绑定组合框为空

每天使用新数据刷新/更新/重新查询访问报告

VBA根据查询运行带有参数的访问报告

如何将sql查询放入ms访问报告中?

报表中的访问使用查询