我有两个表,第一表里的字段是:DataId(序号),Name(名称)
            第二个表里字段是:id(序号),patrsid(父节点), patrsName,(节点名称) parentId,(子节点)DataId (上表的序号)
就是这样两个表。第一个表是固定的。我在取树时,先把第一个表的(名称)作为树
的第一层。最主要就是第二表。可以说是没有固定的层次的。      id      patrsid    patrsName   Parentid,   Dataid
       1         1         xuxiao       -1         001
       2         2          jidian       1          001
       3         3           huaxue       2         001
就是我上面的结构图。我如何遍历我下一个表的层次。请高手指点。

解决方案 »

  1.   

    怎么说第二个表没有层次呢?你的Patrsid,Parentid不是代表层次的吗?你到底想要干什么呢?有点儿不明白,你想要结果呢,还是要怎样?
      

  2.   

    代码如下:但是只有两层
      with dmfrm.QryComType do
      begin
        Close;
        Sql.Clear;
        Sql.Add('Select * From Com_Data_Mf where data_type_id = ''RUN0102''');
        Open;
        First;
        while not eof do
        begin
          s_DataId := trim(dmfrm.QryComType.FieldByName('Data_id').AsString);
          s_DataName := dmfrm.QryComType.FieldByName('Data_Content').AsString;
          TreeNode1:= tvCatalog.Items.Addchild(TreeNode0,s_DataId+'-'+s_DataName);
          with dmfrm.QryPartsCatalog do
          begin
            Close;
            Sql.Clear;
            Sql.Add('Select * from Fix_partsCatalog where Pc_Engineid='''+s_DataId+''' and Pc_parentPartsId =''-1''');
            Open;
            First;
            while not dmfrm.QryPartsCatalog.eof do
            begin
              s_partsId := Dmfrm.QryPartsCatalog.FieldByName('Pc_PartsId').AsString;
              s_PartsName := Dmfrm.QryPartsCatalog.FieldByName('Pc_PartsName').AsString;
              i_Pid := Dmfrm.QryPartsCatalog.fieldByName('Pid').AsInteger;
              NodeText := s_partsId + '-' + s_PartsName;
              TreeNode2 := tvCatalog.Items.AddChild(TreeNode1, NodeText);
            Next;
            end;
            Close;
          end;
          Next;
       end;
        Close;
      end;
    如何把第二个表中的其他层次也显示出来