访问报告忽略查询中的 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
中做额外的连接吗?如果您根据查询创建一个新的空白报告,它是否只返回不同的行?
针对您的评论,如果基于查询的空白报告返回不明确的行,则问题出在查询上。您是否检查了记录计数以查看它们是否匹配?也许它“看起来”像查询返回不同的行,但实际上并非如此。 另一方面,如果基于查询的空白报告返回不同的行,则可以确定您的查询没有问题,并且在报告中引入了其他行。
另外,DISTINCT
和 DISTINCTROW
返回不同的结果 - 你想要的是 DISTINCT
,而不是 DISTINCTROW
。检查查询的'unique values'
属性。
'unique values'
和'unique rows'
是两个不同的东西,你可以查看帮助文件。你想要'unique values'
。
【讨论】:
sql 查询以 SELECTSELECT DISTINCTROW
开头,并且报告“recordsource”未加入。我在一个空白查询上试过了,它仍然得到数据,好像DISTINCTROW
不在查询中
不管Unique Records
,记录数都是一样的。但是,一列中的数据发生了显着变化(数字要小得多)。但是,其他列没有变化。
无论unique values
是on / off
,数据都不会改变。只有Unique Rows
更改数据
好的,让我们重新开始。我假设查询和报告之间的行数不同,报告更高,好像没有应用 distinctRow。是这样吗?您在查询中没有看到的新报告中看到重复行?
我用示例查询结果编辑了主帖。报告始终显示来自DISTINCT / ALL
的结果,无论我更改了什么。【参考方案3】:
在查询中,将 DISTINCTROW 替换为 DISTINCT。
参考:Prédicats ALL, DISTINCT, DISTINCTROW, TOP
【讨论】:
以上是关于访问报告忽略查询中的 DISTINCROW的主要内容,如果未能解决你的问题,请参考以下文章