Может у кого есть примеры или идеи как хранить иерархические структуры в базе данных. К примеру некую виртуальную файловую систему (типа вложенных папок). Желательно чтоб использовался язык триггеров и хранимых процедур. Структура из базы должна загружаться в компонент типа TTreeView Заранее благодарен!
kayaker (13.04.01 18:11)
Наверное есть какие-нибудь компоненты, но я вручную деревья храню. У каждого объекта есть предок, номер уровня в структуре и т.п.
После чего достаточно перегрузить OnNodeExpanding - зная ресурс ветки которую мы распахиваем можно
отфильтровать table1 - table1.Filter:='Владелец='+ресурс этой ветки table1.Filtere
d=true
while not table.EOF do begin и здесь дел!
аем AddC
hild к распахиваемой ветке (создавая для каждой структуру TNodeData)
Примерно так, ну а вообще я могу поделится своим компонентом, пиши if u wish Алексей (16.04.01 08:46)
Должны обязательно быть два поля предок и на кого он ссылается. Например id Naim Parent 1 Область1 -1 2 Область2 -1 3 Город1 1 4 Город2 1 5 Город3 2 4 Город4 2 Следовательно - область верхний уровень ерархии. Города нижний, то есть города1-2 относяься к первой области, города3-4 к второй. Обычно по таким принципам и строится вся ерархия. Для этого существуют компоненты типа DBTreeList. Они есть в пакетах Polaris, ExpressQuantumGrid. Либо простенкий можно написать самому.
Комментарий от "Konstantin R.Beliaev" (konst@nt.ru) На ib.demo.ru есть несколько статей на этот счет. Если вкратце, то есть 3 подхода: 1) уже упоминался: у объекта указывается родитель, недостаток в том, что если надо найти всех потомков, то приходится делать рекурсивный запрос 2) указывается не родитель, а путь (типа "/1/7/24"),
недостатки - длина поля (а соответственно и пути) ограничена, и обработку строк на с
ервере организовать не совсем просто 3) метод Joe Celko, !
очень по
хож на вложенные множества: (a (bb) (c(dd)c) a) - здесь одинаковые буквы принадлежат одинаковым объектам, т.е. B и C потомки A, D - потомок С. Если теперь буквы заменить цифрами по порядку (1 (23) (4(56)7) 8), то у каждого объекта получится 2 свойства (left, right), по которым легко организовать выбор всех потомков. Недостаток - невозможно выбрать ближайших предков или потомков. Видимо, оптимальной будет комбинация 1 и 3 методов. Вот реализовать это...
DirectX (Игровой SDK) Часть 5-6
Часть 5 (Разные подходы к написанию кода восстановления поверхностей, Рисование на поверхностям DirectDraw, Пример DDDemo4) Часть 6 (Непригодность основной формы, Мощь Delphi: пользовательский класс полотна (Canvas))
Переход на Kylix для Delphi-программистов
Задача этой книги — познакомить программистов с мощным инструментом разработки приложений — средой Kylix, а также представить готовые решения, которые позволят созданным приложениям нормально работать. Для тех, кто не имеет опыта «общения» с Linux, изложены основы программирования в этой операционной системе. Необходимые для работы с Kylix знания в области синтаксиса языка C, подробное рассмотрение вопросов создания и подключения библиотек, управления процессами, работы с файловой системой и других ключевых для программирования вопросов, а также множество хорошо прокомментированных образцов программного кода делают эту книгу необходимым помощником любого Kylix-программиста.
Автор: Тэйлор Д., Мишель Дж., Джентри Т.
Опрос населения :)
Новый журнал для программистов "RSDN Magazine". Ваше мнение, нужен ли он вообще?
Афоризмы
Человек сожалеет о потерянных деньгах, но не задумывается о прожитых днях, на которые жизнь его стала короче.......
Фраза дня
Объявление: общительная, симпатичная девушка без комплексов продаст вагон цемента
Дурацкие законы (информация предоставлена сайтом kurilka.com)
В Огайо (США) особым законом запрещено предлагать рыбам спиртные напитки.
В Германии по закону подушка может считаться "пассивным" оружием .
И на закуску коротенький анекдот
- В чем вы любите спать? В пижаме или майке? - В валенках. - Почему? - Приходится часто из окон выпрыгивать...