powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Сортировка символьного поля
19 сообщений из 19, страница 1 из 1
Сортировка символьного поля
    #39015286
Vladimir1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть реестр накладных с номерами 07/01...07/120,07/01z...07/120z,07/01zz...07/120zz. Как их отсортировать, чтобы были по возрастанию/убыванию (неважно) и группами по префиксам z и zz и без оных?
...
Рейтинг: 0 / 0
Сортировка символьного поля
    #39015386
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir1968,
этот список в одном поле или в первой записи 07/11, во второй 07/11-1 и тд?
...
Рейтинг: 0 / 0
Сортировка символьного поля
    #39015394
Vladimir1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
каждый номер - одна запись
...
Рейтинг: 0 / 0
Сортировка символьного поля
    #39015408
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir1968,

Index on str(occur('z',pole),1)+strt(pole, 'z', '') orde tag ind1 asce
Index on str(occur('z',pole),1)+strt(pole, 'z', '') orde tag ind1 desc
...
Рейтинг: 0 / 0
Сортировка символьного поля
    #39015410
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir1968,
Пардон,
Index on str(occur('z',pole),1)+strt(pole, 'z', '') orde tag ind2 desc
...
Рейтинг: 0 / 0
Сортировка символьного поля
    #39015412
Vladimir1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо! буду пробовать.
...
Рейтинг: 0 / 0
Сортировка символьного поля
    #39016563
Vladimir1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал, но проблема осталась. Сортировка по группам работает, но внутри группы - бардак, а именно, как и при сортировке символьных полей 9,10,11,110,111,12,13 и т.д. Как их упорядочить?
...
Рейтинг: 0 / 0
Сортировка символьного поля
    #39016578
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir1968,

не понял. приведи пример записей
...
Рейтинг: 0 / 0
Сортировка символьного поля
    #39016601
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
Index on str(occur('z',pole),1);
 + Padl(GetWordNum(pole,1,'/'),3,'0');
 + Padl(strtran(GetWordNum(pole,2,'/'),'z',''),3,'0');
 tag ind2 desc

тройки заменить на макс. длины соответствующих фрагментов
...
Рейтинг: 0 / 0
Сортировка символьного поля
    #39016603
T1gRa_NT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам необходимо перевести символы в цифры. На сколько понял у вас сейчас сортировка:
1
11
13
2
23
3
55
А необходимо:
1
2
3
11
13
23
55

при символьном поле вариант сортировки первый.
Вам поможет Val в варианте
glamisVladimir1968,
Пардон,
Index on str(occur('z',pole),1)+strt(pole, 'z', '') orde tag ind2 desc
...
Рейтинг: 0 / 0
Сортировка символьного поля
    #39016622
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
T1gRa_NTВам поможет ValАга, val от значения вида "ЧислоДробьЧисло". Уж поможет так поможет... примерно как жгут от носового кровотечения
...
Рейтинг: 0 / 0
Сортировка символьного поля
    #39016636
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir,

так лихо не получится - так можно отсортировать только по одному полю.
надо тогда сортировать типа так:

str(occur('z',pole),1)+str(val(strt(pole, 'z', '')),10)
...
Рейтинг: 0 / 0
Сортировка символьного поля
    #39016643
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamis,

либо
str(occur('z',pole),1)+padl(allt(strt(pole, 'z', '')),10)
...
Рейтинг: 0 / 0
Сортировка символьного поля
    #39016680
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamisтак лихо не получится - так можно отсортировать только по одному полю.А у ТСа и так одно поле.
glamisнадо тогда сортировать типа так:

str(occur('z',pole),1)+str(val(strt(pole, 'z', '')),10)Ну вот, и вы туда же :( У ТСа двухкомпонентное поле (нарушение 1нф, кстати, ну да неважно), какой ещё val, ну в самом деле...
...
Рейтинг: 0 / 0
Сортировка символьного поля
    #39016694
Vladimir1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В принципе первые три символа всегда на месте - это номер месяца. если однозначный, значит с нулем. поэтому, мне кажется можно смело играть со второй часть после слеша. я уже по всякому пробовал. или глаз замылился или я тупой.
...
Рейтинг: 0 / 0
Сортировка символьного поля
    #39016731
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir1968В принципе первые три символа всегда на месте - это номер месяца. если однозначный, значит с нулем. поэтому, мне кажется можно смело играть со второй часть после слеша. я уже по всякому пробовал. или глаз замылился или я тупой.
Код: sql
1.
2.
3.
4.
Index on str(occur('z',pole),1);
 + GetWordNum(pole,1,'/');
 + Padl(strtran(GetWordNum(pole,2,'/'),'z',''),максимальная_длина_второго_куска,'0');
 tag ind2
...
Рейтинг: 0 / 0
Сортировка символьного поля
    #39016737
Vladimir1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробую, спасибо. О результатах отпишусь.
...
Рейтинг: 0 / 0
Сортировка символьного поля
    #39016820
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если есть возможность, то надо просто создать 3 дополнительных поля, куда и положить "части" номера. Разбор сложной строки на фрагмент - задача не тривиальная и всегда остается некий процент ошибок, который требует ручного вмешательства. А с отдельными полями - никаких проблем.

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

Например, если вместо 07/01 Вы будет формировать 07/001, то не будет накладок в порядке сортировки с 07/120.

PS: У функции GetWordNum() можно указать несколько разделителей. Т.е. для выделения второго "слова" можно использовать такой синтаксис

Код: sql
1.
padl(GetWordNum(pole,2,'z/'),максимальная_длина_второго_куска,'0')



В таком синтаксисе, в качестве разделителей выступает символ 'z' ИЛИ символ '/'
...
Рейтинг: 0 / 0
Сортировка символьного поля
    #39017269
Vladimir1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
разделитель всегда "/". Мне очень понравилась идея с дополнительными нулями. Спасибо. Ведь максимальный размер второй части не может превысить 3-х знаков, не считая префиксов z и zz.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Сортировка символьного поля
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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