![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 19.05.2011
Сообщений: 116
|
![]()
Собственно есть таблица БД MS Access структура: id, tname, p_id
Вопрос как правильно присвоить корневым элементам дочерние по значению полей id и p_id. Что смог осилить прилагаю. p.s.: с этим компонентом ранее не работал. |
![]() |
![]() |
![]() |
#2 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
Проект не поднял, ибо надо ставить вст, лениво, поглядел код и базу только.
Есть просто как идеи: 2 способа: 1 в лоб, непроизводительный но простой - берём пилим запрос , в нём все элементы сортируем сперва по пид , потом по ид, и в цикле из датасета генерим дерево - запоминаем первый пид и начинаем вставлять элементы под айдишниками в вст, как только пид текущей записи изменился от запомненого, перезапоминаем пид и находим узел с этим идом и внего вставляем всех детей аналогично, и так пока датасет не закончится. Если дерево с кучей веток и листов, то поиск родителя в которого вставлять очередную порцию будет бить производительность. Плюс я не могу сказать, не сломается ли тут профит от виртуальности вст, честно сказать, вообще сложно представляю виртуальность древовидности (список то легко), это же многоуровневая структура и динамически перегрузить её кусок и отобразить, без перечитывания взаимосвязей текущего куска со всей массой данных мне видится сложным. 2 способ - более гуманный и, возможно, даже позволяющий профит от виртуальности - написать иерархический запрос (гуглим способы для аксеса), при котором дерево как бы развернётся в список, где просто будет указание как перескакнуть по уровням при обработке текущей "строчки" для древовидности. Но способ во-первых сложен самим фактом написания такого запроса под аксес, во-вторых, я не знаю как приспособлен вст к такой вставке элементов, может он как бы позволяет указывать сразу уровень, на который сдвинуть элемент и как к нему линии прочертить лишь по циферке, которую как раз выдаст иерархический запрос. |
![]() |
![]() |
![]() |
#3 | |
Форумчанин
Регистрация: 19.05.2011
Сообщений: 116
|
![]()
У Вас есть пример для второго способа?
Цитата:
|
|
![]() |
![]() |
![]() |
#4 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
Примера нет, с аксесом и вст\втв не работаю. Видел на хабре неплохую статью по иерархическим запросам, там по сути в виде чистого sql можно найти, который аксес мог бы прожевать.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопрос по Virtual Treeview | Lauri | Компоненты Delphi | 8 | 04.04.2013 00:09 |
Incremental Search в Virtual Treeview | kettanaito | Компоненты Delphi | 4 | 21.11.2011 22:19 |
Virtual Treeview и несколько изображений | grafgrial | Общие вопросы Delphi | 2 | 04.07.2011 19:57 |
Virtual TreeView | Шульц | Общие вопросы Delphi | 3 | 25.10.2009 09:48 |
Virtual Treeview | iLya84a | Компоненты Delphi | 3 | 01.08.2008 12:49 |