有这样的数据:
11000000 A
11010000 AA
11010001 AAA
11010002 AAB
11010003 AAC
11020000 AB
11020001 ABA
12000000 B
12010000 BA
12010001 BAA
........ ...如何生成这样的目录树
A+
|+AA+
| |+AAA
| |+AAB
| |+AAC
|+AB+
| |+ABA
| |+ABB
B+
|+BA+
|+BAA如何判断数据自动生成树形?
11000000 A
11010000 AA
11010001 AAA
11010002 AAB
11010003 AAC
11020000 AB
11020001 ABA
12000000 B
12010000 BA
12010001 BAA
........ ...如何生成这样的目录树
A+
|+AA+
| |+AAA
| |+AAB
| |+AAC
|+AB+
| |+ABA
| |+ABB
B+
|+BA+
|+BAA如何判断数据自动生成树形?
select like 'xxxx0000'//这是二级节点
select like 'xxxxxxxx'//这是3 级节点
用3个sql查出,然后加节点就好了
select like 'xxxx0000'//这是二级节点
select like 'xxxxxxxx'//这是3 级节点
用3个sql查出,然后加节点就好了使用这个方法,我如何知道那个3级节点属于那个2级节点的下级啊?
请各位给个代码示列号码?
begin
i:=0;
TreeView1.Items.Clear;
Add(nil, ziduan); MyTreeNode1 := TreeView1.Items[i];
while not adoquery1.Eof do
begin
AddChild(MyTreeNode1,adoquery1.fieldbyname('ziduanming').AsString);
i:=i+1;
MyTreeNode1 := TreeView1.Items[i];
adoquery1.next;
end;
你可以稍微改一下
看了这么多,还是不明白啊?
bm dm
-------------------------
620100000000 甘肃省
620101000000 兰州市
620101001000 城关区
620101001001 雁滩乡
620101001002 东岗镇
620101002000 七里河区620102000000 嘉峪关市大家给帮个忙啊!!!多谢了!
但我想还是分字段比较好,象上面的SN(NN-NN-NNNN)可以分成SN1(NN),SN2(NN),SN3(NNNN),这样的话设条件就很容易了,而且层次也很清楚,生成树就不成问题了。
在生成每一层节点的每一个节点时,也要生成下一层节点,循环就OK了
不知道具体改如何做啊,我还是不明白,能不能给个相对具体的列子啊!
多谢了!
strsql := 'select DISTINCT CompanyCode,Company from Code_Company '
+' where CompanySort+CompanySequence='''+fcomID+''' and deptcode=''0'' order by Company '//第一层 ADoDS := Persist.OpenDataset(strsql) ;
with ADoDS do
begin
last ;
first ;
while not eof do
begin
newnode := tvdept.Items.addchild(cnode,fieldbyname('Company').AsString);
adddatatorec(FieldByname('CompanyCode').asstring,FieldByname('Company').AsString,newnode) ; AddDeptItem(NewNode) ; //第二层
next ;
end ;
end ;
end ;procedure tSelPersonForm.adddeptitem(cNode:TTreeNode) ;
var
strsql: string ;
newnode:ttreenode ;
AdoDS:Tadodataset ;
begin
strsql := 'select DISTINCT CompanyCode,Company from code_company where '
+' companycode in (select distinct dep_id from personnel_set '
+' where com_id='''+pMyRec(cNode.Data)^.no+''')'
+' order by CompanyCode' ;
ADoDS := Persist.OpenDataset(strsql) ;
with ADoDS do
begin
last ;
first ;
while not eof do
begin
newnode := tvdept.Items.addchild(cnode,fieldbyname('Company').AsString);
adddatatorec(FieldByname('CompanyCode').asstring,FieldByname('Company').AsString,newnode) ; AddManItem(NewNode) ; //第三层
next ;
end ;
end ;
end ;procedure TSelPersonForm.AddManItem(cNode:TTreeNode);
var
strsql: string ;
AdoDS : TAdoDataSet ;
newnode : TTreeNode ;
begin
strsql := 'select Per_id,Per_Name from personnel_set where dep_ID='''+pMyRec(cnode.data)^.no+''' '
+' order by Per_no' ;
AdoDs := Persist.OpenDataSet(strsql) ;
with AdoDs do
begin
last ;
first ;
while not eof do
begin
newnode := tvdept.Items.addchild(cnode,fieldbyname('per_name').AsString);
adddatatorec(FieldByname('per_id').asstring,FieldByname('per_name').AsString,newnode) ; next ;
end ;
end ;
end ;