|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
База данных в виде дерева
Здравствуйте!!!!!
Немного опишу мою проблему… Дело в том, что необходимо связать БД MSSQL с компонентами Delphi TreeView, ListView. Цель программы создать виртуальный проводник, то есть считывается дерево каталогов с Бд и в ListView заполняются файлы(которые тоже хранятся в БД). Помогите связать TreeView с таблицей Folder, и при нажатии на строку в этом компоненте отобразить список дочерних каталогов с файлами в ListView. Заранее благодарю!!! P.S: нужно использовать стандартные компоненты Delphi 2007 (от RAD Studio), и использовать TADOQuery (не ADOTable). |
#3
|
|||
|
|||
а где именно, не могу разобраться что за статья с кодом 03088?
|
#4
|
|||
|
|||
Читал я ту статью. Автрор Америки не открыл.
За 30 минут все это делается руками без особых проблем. Вопрос в том, как у тебя организованна БД. Я бы все положил в одну табличку: Код:
CREATE TABLE DIRECTORY ( ID INTEGER PRIMARY KEY AUTOINCREMENT, -- тут надо синтаксис проверить PARENT_ID INTEGER REFERENCES ON DIRECTORY(ID), -- тут тоже NAME VARCHAR(255), REC_TYPE INTEGER CHECK REC_TYPE IN (0,1) -- forlder (0) or file (1) ); ну и далее запросами получаем все, что нужно: Код:
SELECT * FROM DIRECTORY WHERE PARENT_ID = :ID В параметр ID помещаешь ID родительского узла. |
#5
|
|||
|
|||
У меня 2 таблицы. Folder и Files.
Folder для хранения папок, поля: IDfolder numeric IDParent int NameF nvarchar DTCR datetime //дата создания DTMOD datetime //дата изменения Files для хранения файлов, поля: IDFile numeric IDFolder numeric NameFile nvarchar SizeFile float DTCR datetime DTMOD datetime Как связать TreeView с таблицей Folder, и при нажатии на строку в этом компоненте отобразить список дочерних каталогов с файлами в ListView? |
#6
|
||||
|
||||
У меня такая же проблема, помогите пожалуйста)))
|
#7
|
|||
|
|||
Та же проблема.
Из процедуры: Код:
Select -g.GroupID, null as Parent, g.GroupCode, g.GroupName From Group g -- группа UNION ALL Select sg.SubGroupID as GroupID, -wg.GroupID as Parent, sg.SubGroupCode as GroupCode, sg.SubGroupName as GroupName From SubGroup sg -- подгруппа Я использую следующий код: Код:
procedure TForm1.FormCreate(Sender: TObject); var i: integer; begin try // получение набора данных ADOStoredProc except // end; // строим дерево ADOStoredProc.First; TreeView.Items.AddObject(nil, ADOStoredProc['GroupName'], Pointer(Integer(ADOStoredProc['GroupID']))); ADOStoredProc.Next; while not ADOStoredProc.Eof do begin i:=0; while i < TreeView.Items.Count do begin if TreeView.Items.Item[i].Data = Pointer(Integer(ADOStoredProc['Parent'])) then TreeView.Items.AddChildObject(TreeView.Items.Item[i], ADOStoredProc['GroupName']), Pointer(Integer(ADOStoredProc['GroupID']))) else Inc(i); ADOStoredProc.Next; end; end; end; Все бы ничего, но дерево почему-то состоит из одной веточки. Помогите найти ошибку. |