powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Список родителей и потомков узла дерева
5 сообщений из 5, страница 1 из 1
Список родителей и потомков узла дерева
    #40074431
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заранее извините за идиотский вопрос.

В Dephi есть датасет, который получает данные из иерархической таблицы БД:

cData: TDataSet;

cData.FiledByName('ID').AsInteger - даёт значение ID узла дерева
cData.FiledByName('PARENT_ID').AsInteger - даёт значение ID родительского узла дерева
PARENT_ID корня = null

есть список prList: TStringList;
есть список chList: TStringList;

нужно написать функцию GetParentsList(selID: Integer), которая вытаскивает по указанному ID в список prList ID-шники всех родительских по иерархии по отношению к нему узлов до самого корня.

а так же, обратную функцию GetChildsList(selID: Integer), которая вытаскивает по указанному ID в список chList ID-шники всех узлов дерева, являющихся его потомками по всей иерархии.
...
Рейтинг: 0 / 0
Список родителей и потомков узла дерева
    #40074437
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
verter,

А через хранимку не проще будет?
...
Рейтинг: 0 / 0
Список родителей и потомков узла дерева
    #40074438
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp
verter,

А через хранимку не проще будет?


нужно именно на клиенте
...
Рейтинг: 0 / 0
Список родителей и потомков узла дерева
    #40074440
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Должно рекурсией решаться, как-то делал получение родителей и потомков именно через рекурсию
...
Рейтинг: 0 / 0
Список родителей и потомков узла дерева
    #40074500
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
verter
нужно именно на клиенте

Ну тогда рекурсивный запрос, если БД в них умеет.

Либо что-то вроде:
Код: pascal
1.
2.
3.
4.
5.
6.
  varParent := DataSet['PARENT_ID'];
  while not VarIsNull(varParent) and DataSet.Locate('ID', varParent) do
  begin
    prList.Add(DataSet['ID']); // считаем что ID не может быть Null, иначе через FieldByName().AsString
    varParent := DataSet['PARENT_ID'];
  end;    
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Список родителей и потомков узла дерева
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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