1、数据库是这样的
DEPID ParentID DepName IndexLevel
1 6907 1
2 合美 1
3 天地宽 1
9 离退让 1
11 1 公司办公室 2
13 1 财务部 2
15 1 规划发展部 2
17 1 市场部 2
19 1 企业管理部 2
21 1 十五工程办 2
23 1 机动部 2
25 1 技术中心 2
27 1 质量部 2
29 1 物业部 2
31 1 物资部 2
33 1 生产制造部 2
41 1 其他人员 2
51 2 三佳 2
53 2 合美公司 2
60 2 武赛 2
91 9 内部退养 2
92 9 退休 2
93 9 离休 2
111 11 汽车队 3
171 17 军品销售室 3
172 17 市场营销室 3
173 17 北京办事处 3
211 21 现场管理 3
231 23 综合管理室 3
232 23 电修室 3
233 23 机修室 3
234 23 运行班 3
251 25 电器设计室 3
252 25 工艺设计室 3
253 25 结构设计室 3
254 25 整机设计室 3
255 25 综合管理室 3
256 25 总体设计室 3
271 27 电器检验室 3
272 27 计量室 3
273 27 结构检验室 3
274 27 质量管理室 3
275 27 综合试验室 3
291 29 保卫室 3
292 29 居委会 3
293 29 物业管理室 3
294 29 医务室 3
311 31 仓库管理班 3
312 31 计划采购室 3
331 33 一车间 3
332 33 二车间 3
333 33 三车间 3
334 33 车辆工段 3
335 33 计划调度室 3
336 33 技术工艺室 3
411 41 借调 3
412 41 待岗 3
511 51 办公室 3
513 51 采购部 3
515 51 市场部 3
517 51 技术部 3
519 51 生管部 3
521 51 SMN 3
523 51 生技 3
525 51 品管 3
527 51 生产部 3
3311 331 办公室 4
3312 331 车工班 4
3313 331 冲剪班 4
3314 331 窗框班 4
3315 331 焊工班 4
3316 331 钳工一班 4
3317 331 钳工二班 4
3318 331 铣工班 4
3321 332 办公室 4
3322 332 磷化班 4
3323 332 喷漆班 4
3324 332 喷塑班 4
3331 333 办公室 4
33310 333 粘接层压班 4
3332 333 电调班 4
3333 333 电准班 4
3334 333 缝纫班 4
3335 333 骨架班 4
3336 333 木工班 4
3337 333 内装班 4
3338 333 外装班 4
3339 333 准备班 4
2、IndexLevel表示节点深度,DepName部门名称,ParentID父节点的DepID,DEPID表示部门的ID
3、如何形成一个树,求一个树的算法
DEPID ParentID DepName IndexLevel
1 6907 1
2 合美 1
3 天地宽 1
9 离退让 1
11 1 公司办公室 2
13 1 财务部 2
15 1 规划发展部 2
17 1 市场部 2
19 1 企业管理部 2
21 1 十五工程办 2
23 1 机动部 2
25 1 技术中心 2
27 1 质量部 2
29 1 物业部 2
31 1 物资部 2
33 1 生产制造部 2
41 1 其他人员 2
51 2 三佳 2
53 2 合美公司 2
60 2 武赛 2
91 9 内部退养 2
92 9 退休 2
93 9 离休 2
111 11 汽车队 3
171 17 军品销售室 3
172 17 市场营销室 3
173 17 北京办事处 3
211 21 现场管理 3
231 23 综合管理室 3
232 23 电修室 3
233 23 机修室 3
234 23 运行班 3
251 25 电器设计室 3
252 25 工艺设计室 3
253 25 结构设计室 3
254 25 整机设计室 3
255 25 综合管理室 3
256 25 总体设计室 3
271 27 电器检验室 3
272 27 计量室 3
273 27 结构检验室 3
274 27 质量管理室 3
275 27 综合试验室 3
291 29 保卫室 3
292 29 居委会 3
293 29 物业管理室 3
294 29 医务室 3
311 31 仓库管理班 3
312 31 计划采购室 3
331 33 一车间 3
332 33 二车间 3
333 33 三车间 3
334 33 车辆工段 3
335 33 计划调度室 3
336 33 技术工艺室 3
411 41 借调 3
412 41 待岗 3
511 51 办公室 3
513 51 采购部 3
515 51 市场部 3
517 51 技术部 3
519 51 生管部 3
521 51 SMN 3
523 51 生技 3
525 51 品管 3
527 51 生产部 3
3311 331 办公室 4
3312 331 车工班 4
3313 331 冲剪班 4
3314 331 窗框班 4
3315 331 焊工班 4
3316 331 钳工一班 4
3317 331 钳工二班 4
3318 331 铣工班 4
3321 332 办公室 4
3322 332 磷化班 4
3323 332 喷漆班 4
3324 332 喷塑班 4
3331 333 办公室 4
33310 333 粘接层压班 4
3332 333 电调班 4
3333 333 电准班 4
3334 333 缝纫班 4
3335 333 骨架班 4
3336 333 木工班 4
3337 333 内装班 4
3338 333 外装班 4
3339 333 准备班 4
2、IndexLevel表示节点深度,DepName部门名称,ParentID父节点的DepID,DEPID表示部门的ID
3、如何形成一个树,求一个树的算法
酷得组件仓库 - 第三方软件开发组件下载\试用
www.cookcode.net
//procedure TreeAddChild(Node:TTreeNode;DataSet:TDataSet;KeyName,TextName:string;Sign:integer;ImageIndex,SelectIndex,StateIndex:integer);
//功 能:在树视图中增加主子节点
//参 数:Node:增加到节点
// DataSet:数据集
// KeyName:主键名称
// TextName:显示的字段名称
// Sign:节点标志
// ImageIndex:节点默认图标索引
// SelectIndex:节点选中图标索引
// StateIndex:节点状态图标索引
//返回值:无
//======================================
procedure TreeAddChild(TV:TTreeView;Node:TTreeNode;DataSet:TDataSet;KeyName,TextName:string;Sign:integer;ImageIndex,SelectIndex,StateIndex:integer);
var
AddNode:TTreeNode;
NodeText:String;
i:Integer;
NodePtr:PNodeIntKey;
TempNode:array of TTreeNode;
NodeNum:integer;
DeptNO:string;
begin
if Node = nil then
begin
NodeNum:=0;
with DataSet do
begin
Dataset.Filter:='MasterID=0';
while not Eof do
begin
New(NodePtr);
NodePtr^.KeyID:=FieldByName(KeyName).AsInteger;
NodePtr^.Sign:=Sign;
NodePtr^.SignType:=0;
if KeyName='DeptID' then
begin
DeptNO:=Trim(FieldByName('DeptNO').AsString);
NodeText:='['+DeptNO+']'+Trim(FieldByName(TextName).AsString);
end
else
NodeText:=Trim(FieldByName(TextName).AsString);
AddNode:=TV.Items.AddObject(nil,NodeText,NodePtr);
AddNode.ImageIndex:=ImageIndex;
AddNode.SelectedIndex:=SelectIndex;
AddNode.StateIndex:=StateIndex;
NodeNum:=NodeNum+1;
SetLength(TempNode,NodeNum);
TempNode[NodeNum-1]:=AddNode;
Next;
end;
end;
for i:=0 to NodeNum-1 do TreeAddChild(TV,TempNode[i],DataSet,KeyName,TextName,Sign,ImageIndex,SelectIndex,StateIndex);
end
else begin
if not Node.HasChildren then
begin
with DataSet do
begin
Dataset.Filter:='MasterID='+IntTostr(PNodeIntKey(Node.Data)^.KeyID);
while not Eof do
begin
New(NodePtr);
NodePtr^.KeyID:=FieldByName(KeyName).AsInteger;
NodePtr^.Sign:=Sign;
NodePtr^.SignType:=0;
if KeyName='DeptID' then
begin
DeptNO:=Trim(FieldByName('DeptNO').AsString);
NodeText:='['+DeptNO+']'+Trim(FieldByName(TextName).AsString);
end
else
NodeText:=Trim(FieldByName(TextName).AsString);
AddNode:=Node.Owner.AddChildObject(Node,NodeText,NodePtr);
AddNode.ImageIndex:=ImageIndex;
AddNode.SelectedIndex:=SelectIndex;
AddNode.StateIndex:=StateIndex;
Next;
end;
end;
end;
for i:=0 to Node.Count-1 do TreeAddChild(TV,Node.Item[i],DataSet,KeyName,TextName,Sign,ImageIndex,SelectIndex,StateIndex);
end;
end;不懂问我QQ:396638838