Страница 1 из 1
					
				Сортировка цифр в поле String
				Добавлено: 11 Декабрь 2015, 9:00
				 yuriy
				Доброе время суток
Clarion 5.5  В файле DAT есть поле объявленное как String 
в нём будет храниться информация о пунктах плана например:
 1.1 
 1.2 
 1.3 
 1.4
Пока уровня всего 2 сортировка работает корректно, если добавляется 3 уровень то сортировка сбивается
 1.1.1
 1.1.10
 1.1.11 
 1.1.2 
 1.1.3 
 1.1.4
Подскажите пожалуйста можно ли это исправить?
С уважением
Юрий
			 
			
					
				Сортировка цифр в поле String
				Добавлено: 11 Декабрь 2015, 9:38
				 vd-vuf
				сортировку не исправить, и в 2 уровнях она тоже слетит как только появятся значения десятков и более.
можно поправить ситуацию если форматировать числа, заранее определившись с рязрядностью уровней
то есть, к примеру, по 2 разряда на 2й и 3й  уровень.
1.1.1   --> 1.01.01
1.1.2 --> 1.01.02
1.1.10 --> 1.01.10
1.1.11 --> 1.01.11
			 
			
					
				Сортировка цифр в поле String
				Добавлено: 11 Декабрь 2015, 10:00
				 Shur
				Сортировку вы конечно же исправить не сможете, да она здесь и не виновата.
И, если ничего не менять в таблице, то ничего не получится. 
Надо либо прибегнуть к тому, что сказал вам vd-vuf, 
либо, если это смотрится как-то не хорошо, 
такое поле иметь скрытым и не отображать его на экране, но после каждой модификации основного поля осуществлять его вычисление и сохранение, сделать по нему ключ и по нему-то сортировать записи. И, если это поле будет скрытым, то фантазия может разыграться, и вы сможете под каждый уровень отвести не по два, а по три, а ещё лучше четыре разряда.
			 
			
					
				Сортировка цифр в поле String
				Добавлено: 11 Декабрь 2015, 10:12
				 kreator
				Shur писал(а):Надо либо прибегнуть к тому, что сказал вам vd-vuf,
либо, если это смотрится как-то не хорошо,
такое поле иметь скрытым и не отображать его на экране, но после каждой модификации основного поля осуществлять его вычисление и сохранение, сделать по нему ключ и по нему-то сортировать записи. И, если это поле будет скрытым, то фантазия может разыграться, и вы сможете под каждый уровень отвести не по два, а по три, а ещё лучше четыре разряда.
А какое поле? Тоже стринговое? Только с другим форматированием?
На мой взгляд, здесь классическое дерево по одной таблице. Вариант - либо вести её как дерево. Либо иметь поля Long для каждого уровня, сортировать по этим полям. а для удобства заполнять их вскрытую, делая разбор строки в момент записи.
 
			 
			
					
				Сортировка цифр в поле String
				Добавлено: 11 Декабрь 2015, 10:30
				 Shur
				kreator писал(а):  Либо иметь поля Long для каждого уровня, сортировать по этим полям.
 
Так не очень -- ты сразу ограничиваешь себя этим количеством уровней. Плюс имеешь головняк с перенумерацией, если нужно что-то вставить в середину. 
kreator писал(а): Тоже стринговое? Только с другим форматированием?
 
Да, я бы завёл так. Назовём его скрытое стринговое поле с разрядным форматированием.
kreator писал(а): Вариант - либо вести её как дерево.
 
Понятно, что это иерархия. Понятно, что по одной таблице. Но список как-то легче построить, отсортировав по полю, нежели рекурсивно искать сыновей-родителей.
 
			 
			
					
				Сортировка цифр в поле String
				Добавлено: 11 Декабрь 2015, 11:53
				 Губин Игорь
				Sort(queue,function)
Или ввести в файл некое числовое поле, в которое будет ПРАВИЛЬНО записываться индекс
			 
			
					
				Сортировка цифр в поле String
				Добавлено: 11 Декабрь 2015, 12:07
				 kreator
				Shur писал(а):Да, я бы завёл так. Назовём его скрытое стринговое поле с разрядным форматированием.
В принципе, да. Заложиться на 4 разряда, к примеру. Кстати, и буквенные индексы должны прокатить.
 
			 
			
					
				Сортировка цифр в поле String
				Добавлено: 11 Декабрь 2015, 13:30
				 Shur
				Губин Игорь писал(а): Sort(queue,function)
 
По условию задачи имеем файл данных и С55.
А это сортировка очереди, а не таблицы.
Так что не прокатит.
 
			 
			
					
				Сортировка цифр в поле String
				Добавлено: 11 Декабрь 2015, 15:22
				 Admin
				Shur писал(а): А это сортировка очереди, а не таблицы.
 
Любые таблицы отображаются в бровзе через очередь.
 
			 
			
					
				Сортировка цифр в поле String
				Добавлено: 11 Декабрь 2015, 15:29
				 Shur
				Admin писал(а): Любые таблицы отображаются в бровзе через очередь.
 
Даже не спорю. В любом случае в C55 этой фичи не было.
 
			 
			
					
				Сортировка цифр в поле String
				Добавлено: 11 Декабрь 2015, 16:18
				 kreator
				Shur писал(а):В любом случае в C55 этой фичи не было.
Эта "фича" изначально существует. Другое дело, может неудобно с этим работать (надо выкачивать весь набор и т.д.). Да и вот это - "Sort(queue,function)", что-то не человеческое. Вот если бы в Order (prop:Order) можно было чего загнать.
 
			 
			
					
				Сортировка цифр в поле String
				Добавлено: 11 Декабрь 2015, 16:27
				 Губин Игорь
				kreator писал(а): Вот если бы в Order (prop:Order) можно было чего загнать.
 
Загнать можно: 
клаколсек
Вопрос только в том, что он действует на всё, а не только на конкретный файл
 
			 
			
					
				Сортировка цифр в поле String
				Добавлено: 11 Декабрь 2015, 17:22
				 Shur
				kreator писал(а): Эта "фича" изначально существует
 
Угу! Даже в C6.3 этого не было.
А вообще yuriy ещё ни разу нам фидбэк свой не прислал. А мы тут...!
 
			 
			
					
				Сортировка цифр в поле String
				Добавлено: 11 Декабрь 2015, 18:06
				 yuriy
				Большое всем спасибо 
так как надо сделать очень быстро вполне подошел вариант предложенный  vd-vuf 
С Уважением
Юрий
			 
			
					
				Сортировка цифр в поле String
				Добавлено: 11 Декабрь 2015, 18:32
				 Shur
				yuriy писал(а): Большое всем спасибо 
 
You are welcome!