Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];

Вниз

База данных и 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.047 c
3-1085419004
Duch
2004-05-24 21:16
2004.06.13
При запуске не находит базу данных


3-1084372623
Юрий
2004-05-12 18:37
2004.06.13
Связь приложения и базы данных


4-1084036275
Artix
2004-05-08 21:11
2004.06.13
Зазита проги


3-1085127282
Евгений
2004-05-21 12:14
2004.06.13
My Sql


14-1085420205
Мазут Береговой
2004-05-24 21:36
2004.06.13
Новые вирусы... может я отстаю от жизни...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский