怎样通过读取数据库的数据建立三级目录数(100分)

  • 主题发起人 主题发起人 zgp
  • 开始时间 开始时间
Z

zgp

Unregistered / Unconfirmed
GUEST, unregistred user!
建立一个带三级目录的目录数,由于涉及到目录树的排序问题,所以只能采取读取数据库数据

的方法。为此建立三个数据库:table1,table2,table3。其结构如下:

table1: 一级目录 0 5 9

table2: 一级目录 0 0 9 0 0 5
二级目录 0 0 0 1 2 1

table3: 一级目录 0 0 5 5 0 9 9 0
二级目录 0 0 0 0 0 0 0 1
三级目录 0 1 0 1 2 0 1 0

想通过编程在TREEVIEW中得到如下结果:

0
|__0
| |__0
| |__1
| |__2
|
|__1
| |__0
|__2
|
5__0
| |__0
| |__1
|__1
|
9__0
|__0
|__1

但编程结果一,二级目录没错,但第三级目录总是不对,现将源程序帖如下,请高手

查看错在那里。

procedure TForm1.FormCreate(Sender: TObject);
var s1,s2,s3,s4,s5:string;
parentnode,childnode:TTreenode;
begin
table1.First;
while not table1.EOF do
begin
s1:=table1.Fields[0].AsString;
parentnode:=treeview3.Items.AddChild(nil,table1.Fields[0].AsString);
table2.First;
while not table2.EOF do
begin
s2:=table2.Fields[0].AsString;
s5:=table2.Fields[1].AsString;
if s1=s2 then
childnode:=treeview3.Items.AddChild(parentnode,table2.Fields[1].AsString);
table3.First;
while not table3.EOF do
begin
s3:=table3.Fields[0].AsString;
s4:=table3.Fields[1].AsString;
if (s5=s4)and(s2=s3)
then treeview3.Items.AddChild(childnode,table3.Fields[2].AsString);
table3.Next;
end;
table2.Next;
end;
table1.Next;
end;
treeview3.FullExpand;
end;
 
table1.First;
while not table1.EOF do begin
s1:=table1.Fields[0].AsString;
parentnode:=treeview3.Items.AddChild(nil,table1.Fields[0].AsString);
table2.First;
while not table2.EOF do begin
s2:=table2.Fields[0].AsString;
s5:=table2.Fields[1].AsString;
if s1=s2 then <font color=ff0000>begin</font>
childnode:=treeview3.Items.AddChild(parentnode,table2.Fields[1].AsString);
table3.First;
while not table3.EOF do begin
s3:=table3.Fields[0].AsString;
s4:=table3.Fields[1].AsString;
if (s5=s4)and(s2=s3)
then treeview3.Items.AddChild(childnode,table3.Fields[2].AsString);
table3.Next;
<font color=ff0000>end;</font>
end;
table2.Next;
end;
table1.Next;
end;
 
不怎么高明,看看李维怎么做的吧.只需一个表,
三个字段,当然最好用一个递归...
ID Name Parent
 
最简单的问题解决是,用一个表,
ID Name Parent
1 0 -1
2 5 -1
3 9 -1
4 0 0
5 1 0
6 2 0
7 0 2
8 1 2

.....
-1 为root
父接点为 -1 的是一级目录,。。。
 
suny的方法较附合数据结构的原理及要求。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
937
SUNSTONE的Delphi笔记
S
I
回复
0
查看
676
import
I
后退
顶部