Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2007, 10:52   #1
MAcK
Форумчанин
 
Регистрация: 09.11.2006
Сообщений: 274
Плохо Дерево

Буду очень признателен если подскажите как можно сохранить дерево в базе, любыми методами, главное что бы можно было легко его модифицировать, т. есть вставлять новые записи и удалять
Единственный приличный формат, разработанный Microsoft'ом, - format c:
MAcK вне форума Ответить с цитированием
Старый 24.10.2007, 12:56   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Посмотрите темку
http://www.programmersforum.ru/showthread.php?t=8004
Я там давал пример. Если мало, начните свой топик. Не понял, при чем тут раздел "Свободное общение"? Тема вроде бы вполне конкретная...
mihali4 вне форума Ответить с цитированием
Старый 24.10.2007, 15:53   #3
FlatronLooker
Новичок
Джуниор
 
Регистрация: 17.10.2007
Сообщений: 2
По умолчанию

Если хранить только родителя, ситуация такая: при выборке от потомка к родителю все OK, но от родителя вниз по дереву идет перетряхивание всей базы. Поэтому желательно хранить и ближайших потомков. Это выливается в большое число пустых полей при резервировании на максимальное ожидаемое их число и вылет за пределы этого числа. Зато топология дерева летает как пчёлка.
Реально надо смотреть на задачу. Может и родителя хватит, если некритична быстрота вниз.
FlatronLooker вне форума Ответить с цитированием
Старый 25.10.2007, 11:29   #4
MAcK
Форумчанин
 
Регистрация: 09.11.2006
Сообщений: 274
По умолчанию

Что бы не создавать новую тему, прошу админов перенести тему в общее!!!
mihali4 Проблема не в посторении дерева, это работает без проблем. Проблема заключается в хранении дерева в базе, т. есть пользователь создал дерево и потом его сохранил, потом опять загрузил и и добавил узлы вставил узел между узлами и т. п. Вот как правильно сохранить дерево в базе, что бы потом можно было востановить его в прежнем виде.
Думал для каждой ветки ставить номер, но при вствке нового узла на ум приходит только одно - удалить с базы данные и заново проиндексировать и сохранить в базе, этого хочется меньше всего, если подскажите другой вариант, буду рад
Единственный приличный формат, разработанный Microsoft'ом, - format c:
MAcK вне форума Ответить с цитированием
Старый 25.10.2007, 12:39   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от MAcK Посмотреть сообщение
Что бы не создавать новую тему, прошу админов перенести тему в общее!!!
mihali4 Проблема не в посторении дерева, это работает без проблем. Проблема заключается в хранении дерева в базе, т. есть пользователь создал дерево и потом его сохранил, потом опять загрузил и и добавил узлы вставил узел между узлами и т. п. Вот как правильно сохранить дерево в базе, что бы потом можно было востановить его в прежнем виде.
Думал для каждой ветки ставить номер, но при вствке нового узла на ум приходит только одно - удалить с базы данные и заново проиндексировать и сохранить в базе, этого хочется меньше всего, если подскажите другой вариант, буду рад
Ну раз вам лень сходить по предложенной ссылке, то еще раз, вкратце:
чтобы сохранить дерево в базе, нужна таблица с 2-мя полями всего лишь. Эти поля - код родителя и код потомка.
Именно поэтому вот это - бред! См. ниже...
Цитата:
Сообщение от FlatronLooker
Это выливается в большое число пустых полей при резервировании на максимальное ожидаемое их число и вылет за пределы этого числа.
Далее.
К ней привязывается еще одна таблица, тоже с двумя полями - код родителя (или потомка) из первой таблицы и поле наименования (т.е. капшен соответствующего узла дерева).
Все!
mihali4 вне форума Ответить с цитированием
Старый 05.11.2007, 11:50   #6
MAcK
Форумчанин
 
Регистрация: 09.11.2006
Сообщений: 274
По умолчанию

Ещё вопросик по дереву: мне нужно скопировать ветку и вставить, подскажите как?
Единственный приличный формат, разработанный Microsoft'ом, - format c:
MAcK вне форума Ответить с цитированием
Старый 05.11.2007, 20:13   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от MAcK Посмотреть сообщение
Ещё вопросик по дереву: мне нужно скопировать ветку и вставить, подскажите как?
Смотрите методы работы c TreeView, там все вполне прозрачно. Как добавить итемс, как удалить, как вставить в нужное место... Хэлп никто не отменял.
mihali4 вне форума Ответить с цитированием
Старый 13.06.2008, 17:30   #8
MAcK
Форумчанин
 
Регистрация: 09.11.2006
Сообщений: 274
По умолчанию

2 mihali4, тут начал работать над сохранением дерева и возник вопрос насчёт удаления узла, если в нём есть подузлы, это тогда надо рекурсивно удалять с базы все подузлы? или есть другой способ?
Единственный приличный формат, разработанный Microsoft'ом, - format c:
MAcK вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дерево Rifler Паскаль, Turbo Pascal, PascalABC.NET 1 06.05.2008 08:42
Экономическое дерево Droid Общие вопросы Delphi 8 26.04.2008 16:05
Дерево Yoger БД в Delphi 3 25.01.2007 01:24