我已经存在一棵部门结构树,现在要将人员表里面的人员信息添加到树里面,应该怎么进行?
我写的代码如下,但是出现死循环,请各位帮助解决!!!!
     dmMain.cdsQuery.First;//定位人员数据集到第一条记录
     while not dmMain.cdsQuery.Eof do
        begin
           for i:=0 to tveCode.Items.Count-1 do//遍离所有树接点
              begin
                Parent:=tveCode.items[i];//当前部门接点赋值给PARENT
                if Trim(GetTreeText(Parent.Text))=Trim(dmMain.cdsQuery.FieldValues['F_BMXX_BMBH']) then//树接点名称和,人员信息数据的部门名称进行比较,
                 begin
                    tveCode.Items.AddChild(Parent,dmMain.cdsQuery.FieldValues['F_RYXM']);
                    //满足条件将人员名称添加到该部门下,做为子接点
                 end;
              end;
           dmMain.cdsQuery.Next;
        end;  // while

解决方案 »

  1.   

    dmMain.cdsQuery.First;//定位人员数据集到第一条记录
         while not dmMain.cdsQuery.Eof do
            begin
               for i:=0 to tveCode.Items.Count-1 do//遍离所有树接点
                  begin
                    Parent:=tveCode.items[i];//当前部门接点赋值给PARENT
                    if Trim(GetTreeText(Parent.Text))=Trim(dmMain.cdsQuery.FieldValues['F_BMXX_BMBH']) then//树接点名称和,人员信息数据的部门名称进行比较,
                     begin
                        tveCode.Items.AddChild(Parent,dmMain.cdsQuery.FieldValues['F_RYXM']);
                        //满足条件将人员名称添加到该部门下,做为子接点
                        break;
                     end;
                  end;
               dmMain.cdsQuery.Next;
            end;  // while
      

  2.   

    加Break也不对啊,我试过了,只能加一条记录
      

  3.   

    你的代码完全正确,看来要重点检查表里的数据是否有问题,再就是GetTreeText函数是否有问题
    我写了测试代码,是通过的,列出备参考:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls, DB, ADODB;type
      TForm1 = class(TForm)
        ADOConnection1: TADOConnection;
        tblDep: TADOTable;
        tblPer: TADOTable;
        tveCode: TTreeView;
        Button1: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
     i:Integer;
     Parent: TTreeNode;
    begin
      tblDep.First;  while not tblDep.Eof do
      begin
        if tblDep.FieldByName('UpCode').AsString = '' then
          tveCode.Items.Add(nil, tblDep.FieldByName('DepCode').AsString)
        else
        begin
          for i:=0 to tveCode.Items.Count -1 do
          begin
            Parent := tveCode.Items.Item[i];
            if tblDep.FieldByName('UpCode').AsString = Parent.Text then
            begin
              tveCode.Items.AddChild(Parent, tblDep.FieldByName('DepCode').AsString);
              break;
            end;
          end;
        end;
        tblDep.Next;
      end;
      tveCode.FullExpand;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
     i:Integer;
     Parent: TTreeNode;
    begin
      tblPer.First;  while not tblPer.Eof do
      begin
        for i:=0 to tveCode.Items.Count -1 do
        begin
          Parent := tveCode.Items.Item[i];
          if tblPer.FieldByName('DepCode').AsString = Parent.Text then
          begin
            tveCode.Items.AddChild(Parent, tblPer.FieldByName('PersonNa').AsString);
            break;
          end;
        end;
        tblPer.Next;
      end;
      tveCode.FullExpand;
    end;end.