我的数据表的结构及字段如下:      a1                   a2                    a3
      ...
      应付股利
      应交税金             应交增值税              进项税额
      应交税金             应交增值税              已交税金
      应交税金             应交营业税              
      应交税金             应交消费税 
      ....在树中应这样表示:      应付股利 
      应交税金             
                          应交增值税              
                                                 进项税额
                                                 已交税金
                          应交营业税              
                          应交消费税 两层的我已做出,三层的怎么也做不出来了.
两层的代码如下:procedure Tkemugl_w.tree_fzl_Refresh;
var
 MyTreeNode:Ttreenode;
 jl1,jl2,jl3,km_last,km_last2,km_next,yjkm,ejkm:string;
 i:integer;
 begin
ADOQuery1.Close;
ADOQuery1.sql.Clear;
ADOQuery1.sql.Add('select * from kemuku where type=''负债类'' order by yjkm_bianma,ejkm_bianma');
ADOQuery1.Open;
TreeView2.Items.Clear;
i:=0;
km_last:='QQ';//对上个科目编号进行赋值;
while not ADOQuery1.Eof do
  begin
     yjkm:=ADOQuery1.fieldbyname('yjkm_bianma').asstring;
     ejkm:=ADOQuery1.fieldbyname('ejkm_bianma').asstring;
     jl1:=ADOQuery1.fieldbyname('yjkm_bianma').asstring+ADOQuery1.fieldbyname('yjkm_name').asstring;
     jl2:=ADOQuery1.fieldbyname('ejkm_bianma').asstring+ADOQuery1.fieldbyname('ejkm_name').asstring;
     //如果当前的科目编号<>上级科目编号,在树的根目录添加一节点;
     if yjkm<>km_last then
       begin
          TreeView2.Items.Add(nil,jl1);
          MyTreeNode := TreeView2.Items[i];
          i:=i+1;
       end;
     //如果当前的记录的二级科目还有值,那么在节点的下方增加一支节点;
     if not ADOQuery1.fieldbyname('ejkm_bianma').IsNull then
        begin
          TreeView2.Items.AddChild(MyTreeNode,jl2);
          i:=i+1;
        end;     //对上个科目编号进行赋值;
     km_last:=yjkm;     ADOQuery1.Next;
  end;
end;               
    
                                                             
      

解决方案 »

  1.   

    且不说程序里如何写,首先你的这种表结构应用在树型列表中,使程序太复杂。改用如下结构试试
    表:
    flag     name    FID
    0        百货       
    1       洗涤类     0 
    2       食品类     0
    3       膨化食品   2 
    4       方便面类   2
    5       儿童类     3
    6       干脆类     5
    7       爽口类     5
    方法是:某记录的FID等于表中另一记录的FLAG值,则说明该记录是另一记录的子节点。