计算 2 列中具有相同数据的 ms 访问报告中的行

Count row in ms access report that have same data in 2 column

  1. form before that user need to select and when search button is clicked, it will show a report based on user selection

  2. this is the report after the search button is click

您好专家。我在 ms 访问报告中查找跨列系列和名称具有重复数据的行时遇到问题。因此,如果在第一行中的列 family = a 和 name = b,而在另一行中 family = a 和 name = b,那么无论其他列如何,我们都有一个重复的行。我希望它从报告中计算,而不是从 table 或查询中计算。这是因为报表将根据用户在其他表单的组合框和列表框中的选择来显示。单击搜索按钮时,它将生成报告。

因此,我希望在报告中有一个按钮 "Summary",它可以显示如下结果(基于报告表格):

the result

等等....

我希望能从你们那里得到积极的反馈。谢谢

下面是我用来生成报告的代码:

Code for button report

您可以根据您的报表查询构建聚合查询,并根据此查询构建报表。

SELECT Family, whichTest, Count(*) as ProductCount FROM Report_Query_Name GROUP BY Family, whichTest

这考虑到您已将报告查询另存为报告之外的单独查询。

在不传递超过 1 个参数的情况下执行此操作的一种方法是将摘要放在子报告中,然后按一下按钮显示该子报告。不幸的是,页脚中的子报告在访问时存在错误,因此您必须手动过滤子报告。 我们从一个类似的简单规范化数据库开始: 然后我添加了一个简单的表单,其中包含一个多 select 族列表框和一个用于打开过滤报告的按钮。

Private Sub cmdSearch_Click()
'Build Filter for report
Dim strFilter As String
Dim firstselectedfamily As Boolean
firstselectedfamily = True
For i = 0 To lstFamilys.ListCount - 1
If lstFamilys.Selected(i) = True Then
If firstselectedfamily = True Then
strFilter = "FamilyFK = " & lstFamilys.Column(0, i)
firstselectedfamily = False
Else
strFilter = strFilter & " OR FamilyFK = " & lstFamilys.Column(0, i)
End If
End If
Next i
'open report with filter
DoCmd.OpenReport "ExampleReport", acViewReport, "", strFilter, acNormal
End Sub

这是带有按钮的 ExampleReport,用于显示重复项的摘要:

该按钮根据找到重复项的查询显示隐藏的子报表:

重复查询是根据family和test分组进行的,其中familyID和TestID的个数都至少为1: 通常情况下,摘要报告会通过主子关系 link 编辑到主报告,但摘要在主报告页脚中看起来很自然,而子报告碰巧被窃听并且无法正确过滤。为了解决这个错误,我们提供了过滤摘要报告的代码:

Private Sub cmdSummary_Click()
'filter summary form by using the main reports filter
Me.subfrmSummary.Report.Filter = Me.Filter
Me.subfrmSummary.Report.FilterOn = True
Me.subfrmSummary.Requery
'show/hide summary form
If Me.subfrmSummary.Report.Visible = False Then
Me.subfrmSummary.Report.Visible = True
Else
Me.subfrmSummary.Report.Visible = False
End If
End Sub

再次强调,要绕过该错误,请不要 link 子报告与具有 master/child 关系的主报告。而是使用代码设置过滤器。