powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Вывод древовидной структуры
20 сообщений из 20, страница 1 из 1
Вывод древовидной структуры
    #39524757
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача банальна-есть отделы, есть сотрудники, надо загрузить в дерево, каким компонентом в Devexpress пользоваться лучше для данной задача, до этого под мои задачи подходил cxDBTreeList, здесь же данные в разных табличках.
...
Рейтинг: 0 / 0
Вывод древовидной структуры
    #39524762
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо пользоваться двумя компонентами: слева -- дерево с отделами; справа -- список с сотрудниками.
...
Рейтинг: 0 / 0
Вывод древовидной структуры
    #39524779
Прогер123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wsnetЗадача банальна-есть отделы, есть сотрудники, надо загрузить в дерево, каким компонентом в Devexpress пользоваться лучше для данной задача, до этого под мои задачи подходил cxDBTreeList, здесь же данные в разных табличках .

А теперь сделайте запросик .
...
Рейтинг: 0 / 0
Вывод древовидной структуры
    #39524800
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiНадо пользоваться двумя компонентами: слева -- дерево с отделами; справа -- список с сотрудниками.
А почему, неужели неправильно все выводить в дереве?
...
Рейтинг: 0 / 0
Вывод древовидной структуры
    #39524806
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно, выводи, никто не мешает.
А данные из разных таблиц объединяются запросом
...
Рейтинг: 0 / 0
Вывод древовидной структуры
    #39524819
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetJaDiНадо пользоваться двумя компонентами: слева -- дерево с отделами; справа -- список с сотрудниками.
А почему, неужели неправильно все выводить в дереве?
Зависит от задачи -- для просмотра списков -- в разные, где во втором будет намного больше столбцов с данными (о сотрудниках). А вот для задачи поиска и выбора человека из справочника, например, при заполнении какого-то поля -- хватило бы одного единого древовидного списка с фильтрацией.
...
Рейтинг: 0 / 0
Вывод древовидной структуры
    #39524823
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вообще, если структура простая -- только отделы -- то можно банальный грид с группировкой по отделам использовать. Будет двухуровневое "дерево", где под каждым отделом лежит список его сотрудников. Короче, вариантов полно.
...
Рейтинг: 0 / 0
Вывод древовидной структуры
    #39524825
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В дереве лучше, можно открыть одновременно 2 узла, а 2 списка не увидишь
...
Рейтинг: 0 / 0
Вывод древовидной структуры
    #39524856
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrПравильно, выводи, никто не мешает.
А данные из разных таблиц объединяются запросом

Да, спасибо, сделаю как JaDi посоветовал!

А вот вопрос, если одним запросом, и планирую его загрузить в cxDBTreeList сделаю Union all между запросами, но ведь ID у полученных записей будут уже не уникальные, как здесь быть?
...
Рейтинг: 0 / 0
Вывод древовидной структуры
    #39524868
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetDimaBrПравильно, выводи, никто не мешает.
А данные из разных таблиц объединяются запросом

Да, спасибо, сделаю как JaDi посоветовал!

А вот вопрос, если одним запросом, и планирую его загрузить в cxDBTreeList сделаю Union all между запросами, но ведь ID у полученных записей будут уже не уникальные, как здесь быть?
Придётся делать суррогатный суррогатный ключ.
Например: 2000000345 - это ID=345 из второго запроса, а
4000012378 - это ID=12378 из четвёртого запроса
...
Рейтинг: 0 / 0
Вывод древовидной структуры
    #39524902
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zeon11wsnetпропущено...


Да, спасибо, сделаю как JaDi посоветовал!

А вот вопрос, если одним запросом, и планирую его загрузить в cxDBTreeList сделаю Union all между запросами, но ведь ID у полученных записей будут уже не уникальные, как здесь быть?
Придётся делать суррогатный суррогатный ключ.
Например: 2000000345 - это ID=345 из второго запроса, а
4000012378 - это ID=12378 из четвёртого запроса

Это реально на практике применяется сейчас? Не считается ошибкой проектирования?
...
Рейтинг: 0 / 0
Вывод древовидной структуры
    #39524908
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а почему бы не использовать Virtual Tree View ?

Корень грузит отделы верхнего уровня и рассовывает их по ветвям верхнего уровня.
Те ветви - грузят отделы второго уровня и создают ветви второго уровня.
И так далее, до отдельных сотрудников.

И не нужно один запрос использовать и грузить сразу всех сотрудников в память.
Можно честно использовать разные запросы.

Можно будет даже в одном отделе содержать и под-отделы, и сотрудников напрямую
...
Рейтинг: 0 / 0
Вывод древовидной структуры
    #39524974
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попутно вопрос такой, как получить число всех записей в cxGrid, наивным образом думал, что подойдет
Код: pascal
1.
AView.DataController.DataSet.RecordCount;



Но показывает только отфильтрованные записи...

Неужели только запросом? Или фильтр перед получением деактивировать?
...
Рейтинг: 0 / 0
Вывод древовидной структуры
    #39524984
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetzeon11пропущено...

Придётся делать суррогатный суррогатный ключ.
Например: 2000000345 - это ID=345 из второго запроса, а
4000012378 - это ID=12378 из четвёртого запроса

Это реально на практике применяется сейчас? Не считается ошибкой проектирования?
Не надо так (по крайне мере в этом случае). Ключи потом могут резко скакнуть по какой-то причине и всё, кирдык придет, причем глюки тяжело будет отловить. Лично я использую для объединения плюс и минус (например, id отдела с минусом, id сотрудников с плюсом -- плюс отдельные колонки с реальными ID и типом записи).
...
Рейтинг: 0 / 0
Вывод древовидной структуры
    #39525070
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiwsnetпропущено...


Это реально на практике применяется сейчас? Не считается ошибкой проектирования?
Не надо так (по крайне мере в этом случае). Ключи потом могут резко скакнуть по какой-то причине и всё, кирдык придет, причем глюки тяжело будет отловить. Лично я использую для объединения плюс и минус (например, id отдела с минусом, id сотрудников с плюсом -- плюс отдельные колонки с реальными ID и типом записи).

JaDi, не очень понял как будет выглядеть объединенный запрос в Вашем случаи, к примеру имеем:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
insert into dept (id, name) values (1,'Бухгалтерия')
insert into dept (id, name) values (2,'Юр.отдел')

insert into emp (id, name, dept_id) values (1,'Иванов',1)
insert into emp (id, name, dept_id) values (2,'Петров',2)

SELECT id, name, CONCAT(id,'+) as GUID, null FROM dept
UNION ALL
SELECT id, name, dept_id, CONCAT(id,'-') AS GID, dept_id FROM emp



Так что ли?
...
Рейтинг: 0 / 0
Вывод древовидной структуры
    #39525079
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet,

Если там уже GUID используются, то о повторении можно не беспокоиться -- они должны быть уникальны в рамках одной базы.

Если это обычный числовой ID (о чем и речь выше начали), то можно типа такого запроса:

Код: plsql
1.
2.
3.
4.
5.
SELECT -1 * id as fake_id, null as fake_parent_id, id as real_id, name FROM dept

UNION ALL

SELECT id as fake_id, -1 * dept_id as fake_parent_id, id as real_id, name FROM emp
...
Рейтинг: 0 / 0
Вывод древовидной структуры
    #39525112
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi,
опутно вопрос такой, как получить число всех записей в cxGrid, наивным образом думал, что подойдет
AView.DataController.DataSet.RecordCount;

Но показывает только отфильтрованные записи...

Неужели только запросом? Или фильтр перед получением деактивировать?
...
Рейтинг: 0 / 0
Вывод древовидной структуры
    #39525117
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet,

Это надо смотреть у компонентов датасета. Грид же тут ни причем -- к нему уже отфильтрованные данные попадают (если речь идет про фильтр у датасета).
...
Рейтинг: 0 / 0
Вывод древовидной структуры
    #39525174
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetzeon11пропущено...

Придётся делать суррогатный суррогатный ключ.
Например: 2000000345 - это ID=345 из второго запроса, а
4000012378 - это ID=12378 из четвёртого запроса

Это реально на практике применяется сейчас? Не считается ошибкой проектирования?
У меня знакомый подобным образом деревья строит.
Да, при перемещении ветвей приходится дофига данных апдейтить, но он все давно отладил и вообще гордится разработанной системой, хоть кол на голове теши.
...
Рейтинг: 0 / 0
Вывод древовидной структуры
    #39525176
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДwsnetпропущено...


Это реально на практике применяется сейчас? Не считается ошибкой проектирования?
У меня знакомый подобным образом деревья строит.
Да, при перемещении ветвей приходится дофига данных апдейтить, но он все давно отладил и вообще гордится разработанной системой, хоть кол на голове теши.В теории update = insert + delete .
По идее, такое легко провернуть локально, не затрагивая сервер.
На сервере, ясен пень, такие игры с ключами легко не пройдут.
Это даже в теории разъясняется, почему нельзя играть с индексными ключами.
_______________
"Не считается ошибкой проектирования?"

imho Нет (поправьте)
QNRegionIDPlaceIDLocalIDLongID 2003452000000345 400123784000012378...9998707101099987071010
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Вывод древовидной структуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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