Какая логика используется для упорядочения отсортированных строк в PowerBuilder DataWindow, которое содержит дубликаты в отсортированном столбце? - PullRequest
2 голосов
/ 09 ноября 2011

Как известно, окна данных в PowerBuilder могут быть выполнены с возможностью сортировки строк на основе значения столбцов.Это прекрасно работает, если значения в этом столбце уникальны.Тем не мение;Я работаю над ситуацией, когда эти столбцы не всегда уникальны, и в результате, когда функция Sort () применяется к окну данных, дубликаты упорядочиваются по отношению к другим строкам, но сами по себе не упорядочиваются.

Лучший способ сказать это будет через диаграмму.

Представьте себе следующее окно данных:

Сортировка применяется один разID DESCR ACTIVE1 азбука 12 BCD 03 BCD 14 CDE 1

Сортировка применяется дваждыID DESCR ACTIVE1 азбука 13 BCD 12 BCD 04 CDE 1

Сортировка применяется триждыID DESCR ACTIVE1 азбука 12 BCD 03 BCD 14 CDE 1

Если я применю сортировку по возрастанию к столбцу DESCR, две строки BCD поменяются местами.Я только применяю сортировку в столбце DESCR, помните.Похоже, что функция сортировки случайным образом назначает позицию для дублирующихся значений.В моем примере, если я постоянно применяю функцию сортировки к этому окну данных с сортировкой по возрастанию в DESCR, строки BCD будут переключаться назад и вперед.

Если у меня есть вопрос, кто-нибудь знает, почему это работаетсюда?У меня есть идея, как решить эту проблему, применив вторичную сортировку к скрытому столбцу, который нумерует наборы повторяющихся значений.В моем случае, ID 1 будет присвоено 1. ID 2 получит 1, а ID 3 получит два.Таким образом, значения BCD могут быть отсортированы в DESCR, а затем в этом скрытом столбце.

Однако;это намного больше хлопот, чтобы просто держать строки в том же порядке.Просто опросите сообщество разработчиков PowerBuilder здесь, в Stack, чтобы узнать, сталкивались ли они с этим и исправили ли они или точно знают, что PB просто случайным образом назначает порядок дублирования значений в отсортированной строке.

1 Ответ

1 голос
/ 16 ноября 2011

Просто добавьте столбец ACTIVE к критериям сортировки (даже если вам не нужно, чтобы он сортировался - это не повредит!), И проблема решена!

...