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

问题描述 投票:0回答:2
  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,那么无论其他列如何,我们都有一个重复的行。我希望它从报告中计算,而不是从表或查询中计算。这是因为报告将根据组合框中的用户选择和其他表单的列表框显示。当单击搜索按钮时,它将生成报告。

因此,我想在报告中有一个“摘要”按钮,它可以显示如下结果(基于报告表格):

the result

等等 ....

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

以下是我用于生成报告的代码:

Code for button report

access-vba ms-access-2013 ms-access-reports
2个回答
0
投票

在不传递多个参数的情况下执行此操作的一种方法是将摘要放在子报表中,并通过按下按钮显示该子报表。不幸的是,页脚中的子报表存在访问错误,因此您必须手动过滤子报表。我们从一个类似的简单规范化数据库开始:enter image description here然后我添加了一个带有多选系列列表的简单表单和一个打开过滤报表的按钮。 enter image description here

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,带有一个显示重复项摘要的按钮:enter image description here

该按钮根据查找重复项的查询显示隐藏的子报告:enter image description here

重复查询是通过基于族和测试进行分组来进行的,其中familyID和TestID的计数都至少为1:enter image description here通常,摘要报告将通过主子关系链接到主报告,但摘要看起来很自然。主要报告页脚,其中子报告碰巧被窃听并且未正确过滤。为了解决这个错误,我们提供了过滤摘要报告的代码:

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

同样,为了解决这个问题,请不要将子报告与主/子关系的主报告链接起来。而是使用代码设置过滤器。


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.