--------中国长城公司
         |
         |------销售部
         |       |
         |       |----李大有
         |       |----黄二强
         |
         |
         |------生产部
         |       |
         |       |----王小兵
         |       |----张大为
         |
         |
         |------服务部
         |        |
         |        |----李小月
         |        |----胡小侠
         |
         |
         |------科研部//没有人员编制
////////////////////////////////////
表一部门          num
销售部         a
生产部         b
服务部         c
科研部         d
///////////////////
表二
人员          num
李大有         a1         
黄二强         a2
王小兵         b1
张大为         b2
李小月         c1
胡小侠         c2procedure TForm1.FormCreate(Sender: TObject);
var
 temnode,childnode:TTreeNode;
 i,j:integer;
 msg:string;
begin
TreeView1.Items.Clear;
temnode:=TreeView1.Items.Add(TreeView1.Selected,PChar('中国长城公司'));
adodataset1.first;
while not adodataset1.eof do
begin
childnode:=TreeView1.Items.AddChild(temnode,adodataset1.FieldValues['部门']);
adodataset2.first;
while not adodataset2.eof do
begin
  if adodataset1.FieldValues['num']=adodataset2.FieldValues['num'] then
    childnode:=TreeView1.Items.AddChild(childnode,adodataset2.FieldValues['单位']);
  adodataset2.next;
end;
adodataset1.next;
end;
adodataset2.first;
adodataset1.first;
end;
end.

解决方案 »

  1.   

    childnode:=TreeView1.Items.AddChild(childnode,adodataset2.FieldValues['单位']);
    单位字段没有?
      

  2.   

    procedure TPublicClass.TreeViewAddT(MFieldStr, DFieldStr,
      TableNameValue: String; Sender: TTreeView; ImageValue: TImageList);
    var
      PNode , CNode : TTreeNode;
      I : Integer;
    begin
      Sender.Items.Clear;
      Sender.Images := ImageValue;
      With DataModuleFrm.Temp1ADOQuery do
      begin
        if Active then
          Active := False;
        SQL.Clear;
        SQL.Add('Select Distinct ' + MFieldStr + ' from ' + TableNameValue);
        Prepared;
        Open;
        First;
        While Not Eof do
        begin
          PNode := Sender.Items.AddChild(Nil,Trim(FieldByName(MFieldStr).AsString));
          PNode.ImageIndex := 0;
          if PNode.Level = 1 then
          begin
            PNode.ImageIndex := 2;
            Pnode.StateIndex := 4;
          end; {}
          Next;
        end;
      end;
      With DataModuleFrm.LSB_ADOQuery do
      begin
        Sender.SetFocus;
        For I := Sender.Items.Count -1 DownTo 0 do
        begin
          PNode := TTreeNode.Create(Nil);
          PNode := Sender.Items[I];
          if Active then
            Active := False;
          SQL.Clear;
          SQL.Add('Select ' + DFieldStr + ' from ' + TableNameValue + ' Where ' +
            MFieldStr + ' = ' + #39 + Sender.Items[I].Text + #39);
          Prepared;
          Open;
          First;
          While Not Eof do
          begin
            CNode := Sender.Items.AddChild(PNode,Trim(FieldByName(DFieldStr).AsString));
            CNode.ImageIndex := 1;
            if PNode.Level = 1 then
            begin
              PNode.ImageIndex := 2;
              Pnode.StateIndex := 4;
            end;{}
            Next;
          end;
        end;
      end;
    end;参数你自己添去。
      

  3.   

    temnode:=TreeView1.Items.Add(nil,PChar('中国长城公司'));