0
  1. 在该用户需要选择之前形成表单,当单击搜索按钮时,它将根据用户选择显示一个报告

  2. 这是点击搜索按钮后的报告

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

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

结果

等等 ....

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

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

按钮报告代码

4

2 回答 2

0

您可以基于您的报告查询构建聚合查询,并基于此查询构建报告。

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

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

于 2019-02-19T10:43:56.973 回答
0

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

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: 在此处输入图像描述 通常摘要报告将通过主子关系链接到主报告,但摘要在主报告中看起来很自然报告页脚,其中子报告碰巧被窃听并且没有正确过滤。为了解决这个错误,我们提供了过滤摘要报告的代码:

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

同样,要解决这个错误,不要将子报告链接到具有主/子关系的主报告。而是使用代码设置过滤器。

于 2019-02-23T14:24:40.410 回答