Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск по базе данных 
V
    Опции темы
Pavelbej
Дата 1.8.2008, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 419
Регистрация: 5.7.2005

Репутация: нет
Всего: 6



Приветствую вас, хранящие данные в базах!  smile 

Я только начал изучать базы, как столкнулся с проблемой, причем весьма непонятной: нужно сформировать древовидную структуру на основе данных из базы. То есть читаю из определенных полей данные которые указывают кто в кого вложен и формирую дерево.
Пример:
В базе есть несколько папок и выглядит их структура так:
Код

- Bookmarks
       - Mozilla
             - Home page
         My bookmarks
         Music
       +Video


А вот что я наваял:
Код

procedure TForm1.ImportTable(parentId: integer);
begin
    Table1.First;
    while not Table1.eof do
    begin
          if Table1.fieldbyname('parent').AsInteger=parentId then//Если есть нужная запись, значит нашли что-то вложенное
              if Table1.fieldbyname('type').AsInteger=2 then  //нашли папку
              begin
                  ...Add(ZTable1.fieldbyname('title').AsString);//Добавляем папку в дерево
                  ImportTable(ZTable1.FieldbyName('id').AsInteger);//Ищем уже вложения в найденную папку
              end
              else    //нашли ссылку
              begin  
                        //с папками пока не разобрался, так что ссылки пока идут лесом
              end;
          Table1.Next;
    end;
end;


В результате я получаю:
Код

- Bookmarks
       - Mozilla
             - Home page

То есть находит только папку Mozilla и вложенные в нее папки, а остальные нет.

Что-то мне подсказывает, что я чего-то не понимаю и ошибся. Помогите исправить положение и не пинайте сильно за тупой код!
PM MAIL   Вверх
Kesh
Дата 1.8.2008, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 3
Всего: 54



Ну, раз с Delphi вы уже разобрались, то смотирте в сторону рекурсии smile
У вас же пока только один цикл while...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Pavelbej
Дата 2.8.2008, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 419
Регистрация: 5.7.2005

Репутация: нет
Всего: 6



Цитата(Kesh @  1.8.2008,  23:51 Найти цитируемый пост)
Ну, раз с Delphi вы уже разобрались, то смотирте в сторону рекурсии smile
У вас же пока только один цикл while... 

Но ведь с цикле я вызываю эту же процедуру, если я нахожу папку.  Даже продублировал процедуру - также не работает.  smile 
Почему не продолжает поиск, а только находит первую (и ее дочерние), непонятно.  smile 
PM MAIL   Вверх
Pavelbej
Дата 3.8.2008, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 419
Регистрация: 5.7.2005

Репутация: нет
Всего: 6



Kesh,  спасибо!
Вот что значит правильная подсказка, даже в виде одного слова.

Решение здесь
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0422 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.