MS Access 如何计算过滤报告上的唯一记录或值

Posted

技术标签:

【中文标题】MS Access 如何计算过滤报告上的唯一记录或值【英文标题】:MS Access How to Count Unique Records or Values On a Filtered Report 【发布时间】:2018-11-07 00:35:34 【问题描述】:

全部,

我有一个名为“WCR_Q”的查询和一个基于此查询的名为“WCR_R”的报告。我的报告是根据从表单中选择的记录进行过滤的。当我使用表达式 =Count[FacilityID] 时,因为我得到了查询中的记录总数,而不是报告中显示的记录总数。该查询有 (6) 个 [FacilityID] 记录,但我的报告中只有 (2) 个 [FacilityID]。这是由于查询有重复。我需要一个表达式公式放在我的控件中,它只计算查询中的唯一记录或只计算报告中表达的记录

我试过了:

 =Count([FacilityID])
 =DCount("[FacilityID]","WCR_Q",DCount("[FacilityID]","WCR_Q","FacilityID =" & [FacilityId])>0)
 =DCount("[FacilityID]","WCR_Q","FacilityID =" & [FacilityID])
 =DCount("[FacilityID","[WCR_Q]","[FacilityID]=" & [FacilityID])>0
 =Count(IIf("FacilityID <>" & [FacilityID],0))
 =DCount("[FacilityID]","WCR_Q",[FacilityID])
 =DCount("[FacilityID]","WCR_Q","FacilityID <>" & [FacilityID])

我尝试了 Facility 分组和 Campaign 分组中的计数函数,它返回的值是 (6) 而不是报告中表示的 (2)。

我是在 Access 中编写表达式和设计报表的新手,所以如果有人知道如何计算控件框中的唯一值,请提供帮助。谢谢!!!

【问题讨论】:

信息太多。不需要报告图像,无论是设计版本还是打印版本,因为这些实际上不会向您想要记录计数的基础记录源的信息添加任何内容。如果有的话,报告 RecordSource 中的实际 SQL 查询文本将是合适的。 我想这些尝试都没有奏效,因为您将所有计数尝试都建立在查询 WCR_Q 的基础上,您已经声明该查询对于要计数的字段具有重复值。不要通过变体进行编程,直到它工作(因为如果你不明白它为什么工作,它可能在以后的运行中可能不正确),考虑你要求函数返回什么:不能调用 Count 或 DCount请求计数不同。您将需要另一个计算不同值的查询。见utteraccess.com/forum/dcount-distinct-values-t1831303.html 另见***.com/questions/5084318/…。基本思想是在分组标题中创建一个“虚拟”控件,然后将虚拟控件包含在报告中的每个实例相加(即计数)。该总和将代表分组字段的计数。但是,我认为这仅适用于报告页脚中的计数。 【参考方案1】:

非常感谢 C. Perkins。我花了很多时间试图找出解决方案。感谢您抽出时间发布回复。

这是我所做的:在组标题中添加一个文本框,并将 Running Sum 属性设置为 Over Group,Visible 属性设置为 No,Control Source 设置为 =1,Name 设置为 GroupCount。我在标题中创建了另一个文本框并将控制源设置为 =GroupCount。

【讨论】:

【参考方案2】:

我用过

DCount("[ITEM_BAL_QRY]![ITEM_CD] ","[ITEM_BAL_QRY]"," [ITEM_BAL_QRY]![ITEM_CD] = [ITEM_Code]")>1

从表单的源查询算起,我有很好的结果

【讨论】:

以上是关于MS Access 如何计算过滤报告上的唯一记录或值的主要内容,如果未能解决你的问题,请参考以下文章

MS Access 点击信过滤报告

如何过滤 3 个文本框,然后在 MS Access VBA 中根据它们运行报告

ms-access:仅显示特定日期内记录的报告

报告上的 MS Access 绘图表

如何在 ms Access 报告中使用别名

如何在 MS Access 2007 中创建报告?