Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2018, 09:11   #1
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию сортировка в TreeView

помогите пожалуйста отсортировать правильно данные в TreeView.
есть некоторый набор данных в ноде, например,
ГОСТ 4250 - М14
ГОСТ 4250 - М8
ГОСТ 4250 - М5
ГОСТ 4250 - М10
...
необходимо следующее:
ГОСТ 4250 - М5
ГОСТ 4250 - М8
ГОСТ 4250 - М10
ГОСТ 4250 - М14.
спасибо!
Etsareva вне форума Ответить с цитированием
Старый 01.02.2018, 09:18   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Etsareva Посмотреть сообщение
необходимо следующее:
нужно выделять числовую часть и сортировать по ней.
(при этом универсально, скорее всего, не получится).
я бы предложил в БД завести два отдельных поля NUMGOST и MSIZE,
сортировать по ним. Это будет просто и эффективно.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.02.2018, 09:27   #3
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
завести два отдельных поля NUMGOST и MSIZE
в бд у меня и так два поля: ГОСТ 4250 - поле Gost; М5 - поле Mark
Etsareva вне форума Ответить с цитированием
Старый 01.02.2018, 09:44   #4
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

нашла ссылку http://www.dexsoft.ru/ru/articlesdel...w_i_ttreeview/. хорошая ссылка, но нет события OnColumnClick у TTreeView...
Etsareva вне форума Ответить с цитированием
Старый 01.02.2018, 09:46   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Etsareva Посмотреть сообщение
в бд у меня и так два поля: ГОСТ 4250 - поле Gost; М5 - поле Mark
отлично. значит осталось пустяки - удалить из поля mark буквы, перевести полученное значение в число и по нему уже сортировать.

СУБД у Вас какая?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.02.2018, 09:48   #6
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
СУБД у Вас какая?
MS SQL Server.


Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
удалить из поля mark буквы
это как?
Etsareva вне форума Ответить с цитированием
Старый 01.02.2018, 10:11   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Etsareva Посмотреть сообщение
это как?
см SUBSTRING или REPLACE

потом полученное значение - привести к числу через Функции CAST и CONVERT

запросы лучше проверять/отлаживать в самой СУБД.

не знаю, насколько это допустимо в вашем случае, но ещё можно функцию на T-SQL написать и использовать её в запросе.
в функции удалять все буквы из строки - см. Как средствами T-SQL удалить из строки все символы кроме цифр?

а сколько записей возвращает запрос вида
Код:
SELECT MARK from ВашаТАблица GROUP BY MARK;
и там есть строчки, где в начале НЕ "М" ?

Последний раз редактировалось Serge_Bliznykov; 01.02.2018 в 10:18.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.02.2018, 10:16   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А потом окажется, что в других случаях марка совсем не 'M10', а например '12Х18Н10Т'. Не?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.02.2018, 10:28   #9
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А потом окажется, что в других случаях марка совсем не 'M10', а например '12Х18Н10Т'
может и такое быть, вначале просто пример дала, но это будет в другом разделе дерева
Etsareva вне форума Ответить с цитированием
Старый 01.02.2018, 10:29   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А потом окажется, что в других случаях марка совсем не 'M10', а например '12Х18Н10Т'. Не?
скорее всего, так и будет.

Но, если взять функцию, которая оставляет в строке только цифры, удаляет всех не цифровые символы, тогда сортировка по числу 121810 вполне себе приемлема. Но это не точно.

вообще, подобные задачи требуют или подробного детального ТЗ (где описаны все возможные варианты значений в полях и как они должны сортироваться) или решения в данном конкретном случае (для данного набора значений). Чтобы пользователя/заказчика это решение удовлетворяло.

не удивлюсь, если следующей проблемой будет:
есть
ГОСТ 12309
ГОСТ 4250
ГОСТ 750

нужно, чтобы было
ГОСТ 750
ГОСТ 4250
ГОСТ 12309



Последний раз редактировалось Serge_Bliznykov; 01.02.2018 в 10:33.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка Treeview BenZeR C# (си шарп) 0 18.05.2013 22:11
Сортировка строки символов. TreeView novicepro Помощь студентам 0 08.03.2013 20:13
ASP.NET C# компонент TreeView. Перетащить какой - либо пункт меню из TreeView в TextBox Claster ASP.NET 0 02.01.2013 18:59
Сортировка TreeView из программы Pavel229 Компоненты Delphi 2 12.01.2011 15:19
Сортировка узлов дерева treeview gool Общие вопросы Delphi 1 06.11.2009 09:20