Текущий архив: 2004.06.13;
Скачать: CL | DM;
ВнизБаза данных и TreeView Найти похожие ветки
← →
V l a d i m i r (2004-05-21 17:52) [0]Уважаемые мастера, третий день ломаю голову над следующей проблемой: необходимо, чтобы информация, содержащаяся в таблице БД, отображалась в виде древовидной струкутры. В качестве исходной информации берутся статьи доходов и расходов предприятия, которые содержатся в соответствующих таблицах. Как отобразить исходную информацию в виде дерева я знаю, но проблема состоит в том, что пользователь, находясь на определенной ветви дерева, может добавить/удалить определенный пункт в этой ветви (статью доходов/расходов), а может создать новую ветвь (раздел статей)…
Как внести эти изменения в таблицу БД (тк первые 19 записей таблицы– это пункты 1 ветви, следующие 4 – 2 ветвь и т.д.)?
← →
Vlad © (2004-05-21 18:05) [1]
> тк первые 19 записей таблицы– это пункты 1 ветви, следующие
> 4 – 2 ветвь и т.д
Что за ерунда ?
Стандартно, иерархические базы проектируются так:
ID, ID_PARENT, NAME.....
где ID - уникальный идентификатор записи
ID_PARENT - внешний ключ на ID этой же базы, тоесть на запись-родителя
....
итд.
← →
Vlad © (2004-05-21 18:07) [2]Сорри, везде под словом "базы" подразумевал "таблицы" конечно же
← →
V l a d i m i r (2004-05-21 18:21) [3]Дело в том, что первоначально информацию предполагалось выводить в StringGкid"e, но оказалось, что нужно использовать TreeView и плюс к этому необходимо предусмотреть добавление и удаление записей. Если не трудно, можно поподробнее про ID_PARENT, т.е как определить ветку и добавить запись в таблицу таким образом, чтобы было понятно, что это новая запись данной ветки.
С иерархическими базами столкнулся впервые, поэтому надеюсь на понимание и буду благодарен за помощь...
← →
Vlad © (2004-05-21 18:34) [4]
> V l a d i m i r (21.05.04 18:21) [3]
Представь что это - таблица начальников и подчиненных на предприятии - типичная иерархическая структура
ID ID_PARENT NAME
--------------------------
1 - Петя
2 1 Коля
3 2 Саша
4 2 Юра
5 4 Женя
Петя - самый главный, у него нет начальников
У Коли - начальник Петя (ID_PARENT = 1)
У Сашы и Юры - начальник Коля (ID_PARENT = 2)
У Жени начальник Юра (ID_PARENT = 4)
p.s. Только бы табличка не съехала
← →
Vlad © (2004-05-21 18:34) [5]Съехала все-таки :(
Ну ничего, разберешься думаю
← →
V l a d i m i r (2004-05-21 18:46) [6]Так, понятно. Ну предположим, что таким образом я забил все это в таблицу...
TreeView.Add(nil,"Петя");
TreeView.AddChild(TreeView.Items.Item[0],"Коля");
TreeView.AddChild(TreeView.Items.Item[1],"Саша");
TreeView.AddChild(TreeView.Items.Item[1],"Юра");
и т.д.. По-моему, так должно быть... (Delphi рядом нету, проверить не могу..).
А как использовать поля ID и ID_PARENT, чтобы взяв их из таблицы, отобразить NAME в TreeView?
← →
Соловьев © (2004-05-21 18:50) [7]http://www.delphikingdom.com/asp/viewitem.asp?catalogid=488
← →
Vlad © (2004-05-21 18:54) [8]
> V l a d i m i r (21.05.04 18:46) [6]
Нет, никаких ADD("Петя") ручками делать не надо.
Значит так. Поскольку глубина иерархии заранее неизвестна, ведь в таблице она теоретически может быть любая, то для построения дерева тебе нужно писать рекурсивную процедуру, которая будет делать запрос к базе, получать по ID_PARENT всех подчиненных, и сама прописывать их в TreeView, и далее вызывать сама себя снова.
Впринципе, механизм достаточно несложный.
Можешь еще почитать местный FAQ
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988622717&n=14
← →
V l a d i m i r (2004-05-21 18:59) [9]> Соловьев ©
> Vlad ©
ОГРОМНОЕ СПАСИБО! Уже послал на печать...
Страницы: 1 вся ветка
Текущий архив: 2004.06.13;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.035 c