【发布时间】:2021-02-03 12:22:25
【问题描述】:
我有一个按 3 个字段(字段 1、字段 2 和字段 3)分组的报告,我尝试按记录 ID 以不同方式对其进行排序但失败了。
下面是一个简单的例子:
| ID | Field1 | Field2 | Field3 | Field4 |
|---|---|---|---|---|
| 1 | Y | AA | MM | Item1 |
| 2 | Z | AA | PP | Item2 |
| 3 | Z | BB | NN | Item3 |
| 4 | Z | BB | MM | Item4 |
| 5 | Z | AA | DD | Item5 |
| 6 | A | AA | CC | Item6 |
| 7 | A | BB | DD | Item7 |
| 8 | A | BB | MM | Item8 |
| 9 | A | BB | CC | Item9 |
目标结果:
我希望分组的项目按 ID 排序;
字段1:
因为“Y”组 ID 为 1,所以它必须先出现,然后是“Z”组,然后是“A”组。
所有组以此类推。
几周前我在一个论坛上找到了一个解决方案(不记得在哪里),但昨天我测试它时,它在排序时出错了。
该解决方案使用查询来查找每个组名的相关 ID,然后使用这些排序器(我称之为 Sorter1、2、3)对报告进行分组(我将其合并到附加的访问示例中)
Sorter1: CInt(DMin("ID","[Master]","Field1='" & [Field1] & "'"))
Sorter2: CInt(DMin("ID","[Master]","Field2='" & [Field2] & "'"))
Sorter3: CInt(DMin("ID","[Master]","Field3='" & [Field3] & "'"))
它会减慢对大量数据的查询,但会给出完美的结果,除非 field3 中的项目在许多其他组中重复,如图所示。
Sample Access 我想我需要将 field3 的“Dmin”函数限制为仅那些 ID 大于 Sorter2 的值(我尝试过但失败了)。
【问题讨论】:
-
如果您不将分组数据放入相应的组部分,为什么还要分组?在 SortBy 属性或 Sorting & Grouping 中删除分组并应用排序顺序。
-
我投票结束这个问题,因为这是一个报告设计问题,而不是代码问题。需要下载并查看文件以分析问题。
-
其实在这样的报告中分组是需要这3个级别的,原来的报告是按Category, Class & Work Type分组的工程报告。但我需要以 ID 排序显示报告的详细信息,而不是按 3 级字母排序。
-
我不确定您所说的按 id 排序的分组项目是什么意思。字段 2 和字段 3 怎么样?我们需要一张想要的结果的图片。在字里行间阅读我开始认为您可能正在寻找交叉表。
-
如果您想按这 3 个级别进行分组,则不能按 ID 进行整体排序。它确实按第三组中的 ID 排序。如果您希望 ID 在字段 1 下排序,则不能对字段 2 和 3 进行分组。正如@mazoula 所说,编辑问题以说明您想要实现的目标。