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

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

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

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

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

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


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

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

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

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

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

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



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

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

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

Это реально на практике применяется сейчас? Не считается ошибкой проектирования?
Не надо так (по крайне мере в этом случае). Ключи потом могут резко скакнуть по какой-то причине и всё, кирдык придет, причем глюки тяжело будет отловить. Лично я использую для объединения плюс и минус (например, id отдела с минусом, id сотрудников с плюсом -- плюс отдельные колонки с реальными ID и типом записи).
...
Рейтинг: 0 / 0
22.09.2017, 17:16:12
    #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
22.09.2017, 17:27:49
    #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
22.09.2017, 19:10:06
    #39525112
wsnet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод древовидной структуры
JaDi,
опутно вопрос такой, как получить число всех записей в cxGrid, наивным образом думал, что подойдет
AView.DataController.DataSet.RecordCount;

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

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

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

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

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


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

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


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