工号  姓名   上级工号
   01     张1   01
   02     张2   01
   03     张3   01
   04     李1   02
   05     李2   02树型结构
        01 
   02         03
04     05   
   
现在计算下属有多少人,并且需要出一张树型图。
例如:  输入01,结果有4人
       输入02,结果有2人
不知哪位有现成的程序?高分相送.

解决方案 »

  1.   

    参考
    可能需要把工号和上级工号转换为int
    procedure TForm1.FormCreate(Sender: TObject);
    Var
      idrug:integer;
      v:Variant;  procedure FillTree(TreeNode:TTreeNode;Fathercode:string);
      Var
        i:integer;
      begin
        with TADOQuery.Create(NIL) do
        begin
          Connection :=ADOQuery_title.Connection;
          Close;
          SQL.Text :='select * from ch_kind';
          Open;      Filtered:=False;
          Filter:='kind_parent='''+Fathercode+'''';
          Filtered:=True;      for i:=0 to RecordCount-1 do
          begin
            v:=FieldValues['kind_id'];
            Node:=ADT_tree.Items.AddChild(TreeNode,VarToStr(FieldValues['kind_name']));
            drugrecord[idrug].drugcode:=VarToStr(v);
            drugrecord[idrug].drug_int:=idrug;
            Node.Data:=Pointer(v);
            idrug:=idrug+1;
            FillTree(Node,VarToStr(v));
            Next;
          end;
          Free;
        end;
      end;begin
        idrug:=0;
        FillTree(nil,'0');
    end;
      

  2.   


     
     
     首页 - 进入论坛 - 全文检索 - 联系方式   
     
     
     
    加入收藏>>
    帮助手册>>
    服务指南>>    
     
        
       
    当前位置:中文开发在线 -> 首页 -> 黄金文章 -> 正文  
       
    将数据表连接到TreeView中  
    foxfox
    摘 要:将数据表连接到TreeView中
    关键字:数据表 TreeView
    类 别:API
    CoDelphi.com版权所有,未经允许,不得进行任何形式转载procedure AddDataToTree(TreeView:TTreeView;DataSet:TDataSet) 
    var 
      TreeNodes:TTreeNodes     
      TreeNode:array[0..100] of TTreeNode;   
       i:Integer; 
    begin   
       DataSet.Close;   
       DataSet.Open;  
       TreeNodes=TTreeView.Items;   
       if DataSet.RecordCount>0 then    
       begin        
          DataSet.First;        
          while not DataSet.Eof do         
                   begin           
                     TreeNode[0]=TreeNodes.Add(Nil,DataSet.Fields[0].AsString);   
                     for i=1 to DataSet.Fields.Count-1 do        
                         TreeNode[i]=TreeNodes.AddChild(TreeNode[i-1],DataSet.Fields[i].AsString);       
                     DataSet.Next;        
                   end;     
         end; 
    end;      
      

  3.   

    procedure TForm1.AddSubChild(FNodeName: String; Node: TTreeNode=nil);
    var
      LocalName:String;
      AddChild:TTreeNode;
      ADOQueryTemp:TADOQuery;
    begin
      ADOQueryTemp:=TADOQuery.Create(nil);
      ADOQueryTemp.Connection:=ADOConnection1;
      with ADOQueryTemp do
       begin
           ADOQueryTemp.Close;
           ADOQueryTemp.SQL.Clear;
           ADOQueryTemp.SQL.Add('select * from master where updep='''+FNodeName+'''');
           ADOQueryTemp.Open;
           ADOQueryTemp.First;
           while not eof do
             begin
               LocalName:=ADOQueryTemp.fieldByName('Depid').AsString;
               AddChild:=TreeView1.Items.AddChild(Node,FieldByName('name').AsString);
               AddSubChild(LocalName,AddChild);
               Next;
             end;
       end;
    end;procedure TForm1.FormShow(Sender: TObject);
    begin
        AddSubChild('S',nil);
    end;