Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.18;
Скачать: CL | DM;

Вниз

Как лучше считать дерево из таблицы БД в TreeView?   Найти похожие ветки 

 
alll_23   (2007-10-24 16:41) [0]

Здравствуйте это снова я со своим вопрос по TreeVew недавно Сергей М. дал мне ссылочку на вот этот документ

Как лучше считать дерево из таблицы БД в TreeView?

Говорят есть удобный компонент dbtreeview,
но я не смог достать нормально работающий и
потом их так много в разных библиотеках : polaris, rxlib, ralib и т.п.
Где лучше. Взял вроде из polaris, но там только pas файл и он просит
модуль Тooledit.dcu , который я найти не смог.
--------------
Можно не искать компоненты а самому считать дерево из таблицы вида :
Поля : id уникальный индекс, firstid ссылка на родителя, name название.
Затем пишешь процедуру :

procedure readtree( intrn : integer; treenodetemp: ttreenode; ttree : ttreeview );
var
qenode: tquery;
bflag: boolean;
begin
qenode := tquery.create( nil );
qenode.databasename := -- как там у тебя
qenode.close;
qenode.sql.clear;
bflag := false;
if intrn = -1 then
begin
qenode.sql.add("select id, firstid, name");
qenode.sql.add("from " work.db" ");
qenode.open;
qenode.first;
intrn := qenode.fieldbyname("id").asinteger;
qenode.close;
qenode.sql.clear;
bflag := true;
end;
qenode.sql.add("select id, firstid, name");
qenode.sql.add("from " work.db" where firstid = "+inttostr(intrn));
qenode.open;
qenode.first;
while not qenode.eof do
begin
if bflag = true then
readtree(qenode.fieldbyname("id").asinteger,
ttree.items.addobject(nil, inttostr(qenode.fieldbyname("id").asinteger)+":"+
inttostr(qenode.fieldbyname("firstid").asinteger)+":"+
qenode.fieldbyname("name").asstring, nil),
ttree)
else
readtree(qenode.fieldbyname("id").asinteger,
ttree.items.addchildobject(treenodetemp,
inttostr(qenode.fieldbyname("id").asinteger)+":"+
inttostr(qenode.fieldbyname("firstid").asinteger)+":"+
qenode.fieldbyname("name").asstring, nil),
ttree); //рекурсия
qenode.next;
end;
qenode.close;
qenode.destroy;
end;

Рекурсивно вызываешь у себя при формировании дерева и все
Вызов следующий :
readtree( -1, nil, {имя объекта treeview} );

Всё сделал так же только помял TQuery  на TIBQuery только я не создаю TIBQuery а он у меня заранее лежит на форме. И не работает у меня ничиге, помогите разобраться приз!


 
Сергей М. ©   (2007-10-24 16:47) [1]


> alll_23   (24.10.07 16:41)


И что толку оттого что ты клянчил "примеры" ?

Ну вот он, пример вожделенный .. И смотришь ты на него как баран на новые ворота)

Примеры даются не для тестирования на "работает - не работает", а для самостоятельного изучения логики !

Ну да ладно... Что говорит отладчик по этому поводу ?


 
alll_23   (2007-10-24 16:50) [2]

Ничего не говорит, неправильно строится дерево


 
Сергей М. ©   (2007-10-24 16:52) [3]

Ну так пройди пошагово по всей этой процедуре и контролируй, что происходит при выполнении каждого оператора !



Страницы: 1 вся ветка

Текущий архив: 2007.11.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.02 c
15-1192614681
исследователь
2007-10-17 13:51
2007.11.18
проблема с событием onSubmit


15-1192640155
@!!ex
2007-10-17 20:55
2007.11.18
поворот плоскости перпендикулярно точке.


2-1193236815
Alex_C
2007-10-24 18:40
2007.11.18
Снять аттрибут занятости файла в NTFS


15-1192004546
andreoman
2007-10-10 12:22
2007.11.18
прога для контроля инетовского трафика


6-1174411919
***(H@kker)***
2007-03-20 20:31
2007.11.18
Как написать сервер на Delphi типа Apach