Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.02 c
14-1085835393
p.0$a
2004-05-29 16:56
2004.06.13
HELP plz


8-1080906407
Pa5ha
2004-04-02 15:46
2004.06.13
D3D, Местоположение точки


4-1082820190
Андрей2
2004-04-24 19:23
2004.06.13
Сервисы и Windows XP


1-1085995770
kostya
2004-05-31 13:29
2004.06.13
Проблема с компиляцией .pas файла под C++Builder 5


1-1085738342
RoadStar
2004-05-28 13:59
2004.06.13
Перечислитель окон