有这样的数据:
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如何判断数据自动生成树形?   

解决方案 »

  1.   

    select like 'xx000000'//这是一级节点
    select like 'xxxx0000'//这是二级节点
    select like 'xxxxxxxx'//这是3 级节点
    用3个sql查出,然后加节点就好了
      

  2.   

    select like 'xx000000'//这是一级节点
    select like 'xxxx0000'//这是二级节点
    select like 'xxxxxxxx'//这是3 级节点
    用3个sql查出,然后加节点就好了使用这个方法,我如何知道那个3级节点属于那个2级节点的下级啊?
    请各位给个代码示列号码?
      

  3.   

    with TreeView1.Items do
       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;
    你可以稍微改一下
      

  4.   

    我这个编码就是固定的长度,就和邮政编码差不多,主要标识地名,如何生成目录树啊?
    看了这么多,还是不明白啊?
    bm                   dm
    -------------------------
    620100000000         甘肃省
    620101000000         兰州市
    620101001000         城关区
    620101001001         雁滩乡
    620101001002         东岗镇
    620101002000         七里河区620102000000         嘉峪关市大家给帮个忙啊!!!多谢了!
      

  5.   

    看你左边的编码还是很有规律的,生成树就根据编码来好了。
    但我想还是分字段比较好,象上面的SN(NN-NN-NNNN)可以分成SN1(NN),SN2(NN),SN3(NNNN),这样的话设条件就很容易了,而且层次也很清楚,生成树就不成问题了。
    在生成每一层节点的每一个节点时,也要生成下一层节点,循环就OK了
      

  6.   

    to: iknowwn(changle[滨滨]_二级厨师) 
    不知道具体改如何做啊,我还是不明白,能不能给个相对具体的列子啊!
    多谢了!
      

  7.   

    给个列子:我的层次是单位——部门——人员
        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 ;