![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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;Все бы ничего, но дерево почему-то состоит из одной веточки. ![]() Помогите найти ошибку. |