powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Отсортировать данные
10 сообщений из 10, страница 1 из 1
Отсортировать данные
    #35282658
ННовичок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как отсортировать данные в символьном поле....если я сортирую, уау символьное, то получается следущее
1
1.1
1.1.1
....
10
10.1
10.1.1
2
2.1
2.1.1
ну и т.д.....
...
Рейтинг: 0 / 0
Отсортировать данные
    #35282669
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сначала надо привести к виду пригодному для сортировки в нужном тебе порядке. Например:
1 => 001.000.000
1.1.1 => 001.001.001
10.1.1 => 010.001.001

[SRC=http://www.sql.ru/forum/actualthread.aspx?tid=531522]Тут[/SRC] подобное обсуждали
...
Рейтинг: 0 / 0
Отсортировать данные
    #35282686
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ссылку неправильно оформил. Тут смотри
...
Рейтинг: 0 / 0
Отсортировать данные
    #35282703
ННовичок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, только, как я слышал, не рекомендуют приименять UDF в индексировании..., желательно через стандартные....вот родилось в результате эксперементов...
INDEX on STRTRAN(STR(VAL(SUBSTR(kod_usl,1,AT(".",kod_usl)-1)),3)," ","0");
+STRTRAN(STR(VAL(SUBSTR(kod_usl,1,AT(".",kod_usl)+1)),3)," ","0");
+STRTRAN(STR(VAL(SUBSTR(kod_usl,RAT(".",kod_usl)+1)),3)," ","0") TO x
...
Рейтинг: 0 / 0
Отсортировать данные
    #35282706
ННовичок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Правда, подумал сейчас нет в этом решении универсальности...текст загоняется с Excel, и сколько там будет подразделов неизветно..надо конечно додумывать...но будут претензии будем думать дальше....
...
Рейтинг: 0 / 0
Отсортировать данные
    #35282807
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ННовичокСпасибо, только, как я слышал, не рекомендуют приименять UDF в индексировании...
Вылазят проблемы из-за того что функция м.б. не всегда доступна. Но если используешь курсоры (или временные таблицы), то можно сначала выборку сделать потом курсор проиндексировать с UDF, тут можно самодельную функцию в индексное выражение вставить.

Чтобы универсально работало (независимо от кол-ва точек) функция должна преобразовывать примерно так:
1 => "001."
1.1.1 => "001.001.001."
10.1 => "010.001."
...
Рейтинг: 0 / 0
Отсортировать данные
    #35282822
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один вариант - хранить в отдельном поле порядок сортировки. Т.е. добавляешь поле int и проставляешь значения чтобы при сортировке по ним все вышло в нужном порядке.
1 => 1
1.1.1 => 10
10.1.1 => 5000

Минус - при любом добавлении/изменении надо это поле расчитывать. Если будешь делать - разрывы между соседними записями оставляй, чтобы в будущем между ними можно было вставку сделать.
...
Рейтинг: 0 / 0
Отсортировать данные
    #35282932
ННовичок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо...
...
Рейтинг: 0 / 0
Отсортировать данные
    #35282939
ННовичок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо...
...
Рейтинг: 0 / 0
Отсортировать данные
    #35283586
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЕще один вариант - хранить в отдельном поле порядок сортировки. Т.е. добавляешь поле int и проставляешь значения чтобы при сортировке по ним все вышло в нужном порядке.
1 => 1
1.1.1 => 10
10.1.1 => 5000

Минус - при любом добавлении/изменении надо это поле расчитывать. Если будешь делать - разрывы между соседними записями оставляй, чтобы в будущем между ними можно было вставку сделать.

Проще в этом дополнительном поле не порядковый номер хранить, а то же самое значение, но в виде удобном для сортировки

1 => 000000001
1.1.1 => 001001001
10.1.1 => 010001001

На каждый уровень 3 знака с ведущими нулями. Если уровней может быть больше 3, то выделяешь символьную строку длиной 3*х, где х - максимально возможное число уровней вложенности.

Далее сделать RULE уровня записи, которое автоматом будет преобразовывать введенное значение в значение для сортировки.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Отсортировать данные
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]