在如下三个表要在treview里显示一颗树....系/专业/班级   怎么写呀.....谢谢 /*系部表:包含学校所设系的相关资料*/
create table xbb
(
    xbbh char(6) primary key,  --系部编号
    xbmc char(20) not null,    --系部名称
    xzr  char(10) not null     --系主任名字
)/*专业表:包含学校所设专业*/
create table zyb
(
    zybh char(6) primary key,       --专业编号
    zymc char(30) unique,          --专业名称
    ssxb char(6) foreign key references xbb(xbbh)       --所属系别
)
/*班级表:包含学校所设班级以及该班级所属系部*/
create table bjb
(
    bjbh char(6) primary key,   --班级编号
    bjmc char(20) not null,     --班级名称
    zybh char(6) foreign key references zyb(zybh),
    szxbh char(6) foreign key references xbb(xbbh)  --所属系部编号 作为外键引用系部表中的系部编号
)

解决方案 »

  1.   

    CSDN有太多这样的贴子呢,你搜一下如何建树就有了
      

  2.   

    不知道对LZ有没帮助  反正我碰到树现在小CASE了----------------------------------------
    2张表:
    客户表(Tbl_Client):
    client_id(自增)  client_name   type_id
    1                小江          3
    2                小李          4客户类型表(Tbl_Client_Type):
    type_id(自增)  type_name    parent_id(父类型)
    1              国内         -1
    2              国外         -1
    3              北京          1
    4              上海          1现在在DELPHI里放一个树形控件(treeview1)  要求把客户类型表里的数据加到treeview1中  象下面:
    -- 客户资料
       --国内
         --北京
         --上海
       --国外
    要求:写一个递归调用函数 把客户类型表里的数据加到treeview1中procedure TForm1.Button1Click(Sender: TObject);
    begin
      ADOQuery1.Close;
      ADOQuery1.SQL.Text := 'select type_id,type_name,parent_id from Tbl_Client_Type order by parent_id';
      ADOQuery1.Open;
      InitTreeView;
    end;procedure TForm1.InitTreeView;
      procedure AddChildrenNode(pnode: TTreeNode);
      var
        i: Integer;
        _node: TTreeNode;
      begin
        //Set the Filter Condition
        ADOQuery1.Filtered := false;
        ADOQuery1.Filter := 'parent_id=' + IntToStr(pnode.OverlayIndex);
        ADOQuery1.Filtered := true;    ADOQuery1.First;    //Restore the rs-index
        
        //Add the Record to the ParentNode
        for i := 0 to ADOQuery1.RecordCount - 1 do  
        begin
          _node := TreeView1.Items.AddChild(pnode, ADOQuery1.FieldByName('type_name').AsString);
          _node.OverlayIndex := ADOQuery1.FieldByName('type_id').AsInteger;
          ADOQuery1.Next;
        end;
        //recursion
        for i := 0 to pnode.Count - 1 do
          AddChildrenNode(pnode.Item[i]);
      end;
    var
      _topNode: TTreeNode;
    begin
      TreeView1.Items.BeginUpdate;
      //---add the top parent node
      _topNode := TreeView1.Items.AddChild(nil,'TopNodeAddByXinhs');
      _topNode.OverlayIndex := -1;  //The casual ward for ParentID
      //end add
      AddChildrenNode(_topNode);
      TreeView1.Items.EndUpdate;
      _topNode.Selected := True;
    end;