现在有一种传销人员表,表结构入下:
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表示出来。 希望大家能够提供算法或者代码.
解决方案 »
- 请教用zlib进行多文件压缩和解压缩的实现方法。
- 求救 在DLL中包含ADO组件
- 如何利用Delphi实现指定程序的窗口话???
- 请各位给解释一下!!很快结贴!!!
- 计算字段的合计问题,急!!!
- 谁给一个fastreprot的下载地址??????
- 还需要哪些文件?
- 如何在使用Tlientsocket与Tserversocket的C/S程序中发送与接收一个数组?
- *****俺女朋友的妹妹今年高考,小弟我想替她找到今年六月份的北京文科一模、二模试题,请教各位前辈指点一、二!*****
- 那里可以下载到delphi的安装盘?给分 !!!
- 百分比怎样搞出来的?
- 请问我现在想向数据库中插入30万条记录(ACCess),插入非常缓慢,请问有什么好的方法是操作速度提高,我可不可以将解析好的数据存起来,然
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;