使用什么逻辑来排序包含排序列中重复项的PowerBuilder DataWindow的排序行?

时间:2011-11-09 14:02:00

标签: powerbuilder

众所周知,PowerBuilder中的数据窗口可以根据列值对行进行排序。如果该列中的值是唯一的,则此方法可以正常工作。然而;我正在研究这些列并不总是唯一的情况,因此,当Sort()函数应用于DataWindow时,重复项将按其他行排序,但不会以任何方式排序。

更好的说法是通过图表。

想象一下以下数据窗口:

排序应用一次
ID DESCR ACTIVE
1 ABC 1
2 BCD 0
3 BCD 1
4 CDE 1

分类应用两次
ID DESCR ACTIVE
1 ABC 1
3 BCD 1
2 BCD 0
4 CDE 1

排序应用三次
ID DESCR ACTIVE
1 ABC 1
2 BCD 0
3 BCD 1
4 CDE 1

如果我将升序排序应用于DESCR列,则两个BCD行将切换位置。我只是在DESCR专栏上应用排序记住。似乎排序功能随机地为重复的值分配位置。在我的示例中,如果我继续将排序函数应用于该数据窗口,并在DESCR上按升序排序,则BCD行将来回切换位置。

对于我的问题,有谁知道它为什么会这样运作?我知道如何通过将二级排序应用于一组重复值的隐藏列来解决它。在我的情况下,ID 1将被分配1. ID 2将获得1而ID 3将获得2。这样,BCD值可以在DESCR上排序,然后在这个隐藏列上排序。

然而;将行保持为相同的顺序会更麻烦。只需在Stack上查看PowerBuilder开发人员社区,看看他们是否遇到过此问题以及他们是否已修复它,或者确定PB只是随机分配一个命令来复制排序行中的值。

1 个答案:

答案 0 :(得分:1)

只需将列ACTIVE添加到排序条件中(即使您不需要对其进行排序 - 它也不会有害!),问题就解决了!