现在有一种传销人员表,表结构入下:
create table T
( id char(4),
name char(10),
fatherId char(4))
三个字段分别表示:编号、姓名、介绍人编号现在根据比如有下面几条记录:
id name fatherid
0001 张一 0000
0002 李一 0000
0003 张二 0001
0004 李二 0002
0005 张三 0003
0006 李三 0004
现在用树形结构表示他们关系应该是:张一
张二
张三 李一
李二
李三
我想通过程序实现这样的功能,好像要用到很复杂的递归算法。
在oralce里,好像可以通过sql语句实现,但是其它数据库的sql功能没有那么强大,
最好还是通过delphi程序解决, 就是如何把他们的父子关系用treeview表示出来。 希望大家能够提供算法或者代码.
create table T
( id char(4),
name char(10),
fatherId char(4))
三个字段分别表示:编号、姓名、介绍人编号现在根据比如有下面几条记录:
id name fatherid
0001 张一 0000
0002 李一 0000
0003 张二 0001
0004 李二 0002
0005 张三 0003
0006 李三 0004
现在用树形结构表示他们关系应该是:张一
张二
张三 李一
李二
李三
我想通过程序实现这样的功能,好像要用到很复杂的递归算法。
在oralce里,好像可以通过sql语句实现,但是其它数据库的sql功能没有那么强大,
最好还是通过delphi程序解决, 就是如何把他们的父子关系用treeview表示出来。 希望大家能够提供算法或者代码.
T=record
id:string;
name:string;
fatherid:string;
end;const
aryT:Array[0..4] of T=((id:'0001';name:'al1';fatherid:'0000'),
(id:'0002';name:'al2';fatherid:'0000'),
(id:'0003';name:'al3';fatherid:'0001'),
(id:'0004';name:'al4';fatherid:'0002'),
(id:'0005';name:'al5';fatherid:'0003'));procedure TForm1.CreateTreeNode(ParentNode:TTreeNode;t1:T);
var
i:integer;
TreeNode:TTreeNode;
begin
for i:=0 to 4 do
if aryT[i].fatherid=t1.id then
begin
TreeNode:=TreeView1.Items.AddChild(ParentNode,aryT[i].name);
CreateTreeNode(TreeNode,aryT[i]);
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
TreeNode:TTreeNode;
begin
for i:=0 to 4 do
if aryT[i].fatherid='0000' then
begin
TreeNode:=TreeView1.Items.AddChild(nil,aryT[i].name);
CreateTreeNode(TreeNode,aryT[i]);
end;
end;
type
T=record
id:string;
name:string;
fatherid:string;
end;const
aryT:Array[0..4] of T=((id:'0001';name:'al1';fatherid:'0000'),
(id:'0002';name:'al2';fatherid:'0000'),
(id:'0003';name:'al3';fatherid:'0001'),
(id:'0004';name:'al4';fatherid:'0002'),
(id:'0005';name:'al5';fatherid:'0003'));procedure TForm1.CreateTreeNode(ParentNode:TTreeNode;parentid:string);
var
i:integer;
TreeNode:TTreeNode;
begin
for i:=0 to 4 do
if aryT[i].fatherid=parentid then
begin
TreeNode:=TreeView1.Items.AddChild(ParentNode,aryT[i].name);
CreateTreeNode(TreeNode,aryT[i].id);
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
CreateTreeNode(nil,'0000');
end;