小弟数据库是Access 2000,有部门表DepartTable,多级部门如何设置字段呢,怎么处理?用Treeview如何显示? 谢谢了1!!

解决方案 »

  1.   

    在departTable中加个字段,如“等级”,值为1时表示为一级部门,为2时表示是二级部门,也就是一级部门的下级部门。一级部门内又用不同的代号区分,如A1,B1,C1表示三个一级部门,A2(二级部门)表示A1(一级部门)下的子部门,看这样行不?
      

  2.   

    三个字段
    creat table departTable(No1 int,name varchar(50),NoParent)
    建立一个字段,用来记录它的父结点?试试看
      

  3.   

    表字段
    Departmentid,Name,UpDepartmentid,
    Type
      PNodeInfo=^TNodeInfo;    //指针类型,存储对应节点信息
      TNodeInfo=Packed Record
         NodeId:String;        //节点
         NodeName:string;      //节点名称
         ParentId:string;      //父节点
      end;
    构造
    var
      QryTmp:TClientDataSet;
      MyNode:TTreeNode;
      TmpNodeInfo:PNodeInfo;
    begin
      try
      QryTmp:=TClientDataSet.Create(self);
      QryTmp.Data:= ClientDataSet1.Data;
      QryTmp.Filter:= 'UPDEPARTMENTID=''' + Id + '''';
      QryTmp.Filtered:= True;
      QryTmp.First;
      while not QryTmp.Eof do
      begin
        New(TmpNodeInfo);
        TmpNodeInfo.Nodeid:=Trim(QryTmp.Fields[0].AsString);
        TmpNodeInfo.Parentid:=Trim(QryTmp.Fields[1].AsString);
        TmpNodeInfo.Nodename:=Trim(QryTmp.Fields[2].AsString);
        MyNode:=DTree.Items.AddChildObject(ParentNode,QryTmp.Fields[2].AsString,TmpNodeInfo);  //把所有节点当作子节点遍历
        CreateTree(QryTmp.Fields[0].AsString,MyNode,dtree); //递归调用
        QryTmp.Next;
      end;
      finally
        freeandnil(QryTmp);
      end;遍历
    var
      I:Integer;
    begin
       //处理
        if vNode.HasChildren then
        for I := 0 to vNode.Count-1 do
        begin
          preorderDel(vNode.Item[i]);
        end;
      

  4.   

    过程原型
    procedure TFrm_department.CreateTree(Id: String; ParentNode: TTreeNode ;DTree:TTreeView);