其中的字段值是:
   pid    父极点字段
   code   子极点字段  代号
   name   姓名
   
我没有写代码,只是用ADOQuery来连接其中:
设置的字段为:
           displayfield:=name
           keyfield    :=code
           listfield   :=name
           parentfield :=pid
在dxDBTreeView 中显示的结果是:
           ---名称一
           -------名称二 
现在我是想把代号(code)和姓名(name)这两个字段的值在dxDBTreeView 的目录中显示出来,请大家帮帮忙
我现在想得到的结果是
    ---00100:名称一
    ------0010001:名称二

解决方案 »

  1.   

    在ADOQuery 的SQL中下功夫 字样相加
      

  2.   

    说实话,建议你用treeview自己写代码把你数据库中信息加载上来,那样你可以随便建立你的树
      

  3.   

    下面这段代码你先参考一下。
    unit MainFrm;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, ADODB, ComCtrls, ImgList, StdCtrls;type
       PNodedata=^TNodeData; //需要申明
        TNodeData = record
        id:integer;
        nodetype: integer;
        end;
      TMainForm = class(TForm)
        ADOQuery1: TADOQuery;
        TreeView1: TTreeView;
        ImageList1: TImageList;
        Edit1: TEdit;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure TreeView1Click(Sender: TObject);
        procedure FormShow(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      MainForm: TMainForm;
    implementationuses Linkbank;{$R *.dfm}
    //展开树形
    procedure TMainForm.FormShow(Sender: TObject);
    var
      RootNode, FirstDeptNode,SecondDeptNode,ThreeDeptNode: TTreeNode;
      PFirstDeptdata,PSecondDeptdata,ThreeDeptdata:PNodedata;
      FirstDeptName,SecondDeptname,ThreeDeptname:string;  
      ado1,ado2,ado3:Tadoquery;
    begin
      treeview1.Items.Clear;
      RootNode:=treeview1.Items.Add(nil,'我的树形结构');
      RootNode.ImageIndex := 0;
      RootNode.SelectedIndex := 0;
      ado1:=Tadoquery.Create(self);
      ado1.Connection:=dataform.conn;
      ado1.Close;
      ado1.SQL.Clear;
      ado1.SQL.Add('select * from tt'); //表结构为tt1 int,tt2 varchar;
      ado1.Open;
      ado1.First;
      while not ado1.Eof do
         begin
            PFirstDeptdata := new(PNodedata);
            PFirstDeptdata.id := ado1.fieldByName('tt1').AsInteger;
            PFirstDeptdata.nodetype := 0;
            FirstDeptName := ado1.FieldByName('tt2').AsString;
            FirstDeptNode := treeview1.Items.AddChildObject(RootNode, FirstDeptName,PFirstDeptdata);//注意展开时需要改成上一级的树的节点。
            ado1.Next;
                ado2:=Tadoquery.Create(self);
                ado2.Connection:=dataform.conn;
                ado2.Close;
                ado2.SQL.Clear;
                ado2.SQL.Add('select * from bb where bb1=:bb1');//表结构为:yy1 int,yy2 int,yy3 varchar;tt1与yy2关联。
                ado2.Parameters.ParamByName('bb1').Value:=PFirstDeptdata.id ;
                ado2.Open;
                ado2.First;
                while not ado2.Eof do
                       begin
                          if ado2.FieldByName('bb1').AsInteger=PFirstDeptdata.id then
                                  begin
                                         PSecondDeptdata := new(PNodedata);
                                         PSecondDeptdata.id := ado2.fieldByName('bb2').AsInteger;
                                         PSecondDeptdata.nodetype := 1;
                                         SecondDeptName := ado2.FieldByName('bb3').AsString;
                                         SecondDeptNode := treeview1.Items.AddChildObject(FirstDeptNode,SecondDeptName, PSecondDeptdata);
                                         ado2.Next;
                                           ado3:=Tadoquery.Create(self);
                                           ado3.Connection:=dataform.conn;
                                           ado3.Close;
                                           ado3.SQL.Clear;
                                           ado3.SQL.Add('select * from ss where ss0=:ss0 and ss1=:ss1');
                                           ado3.Parameters.ParamByName('ss0').Value :=PFirstDeptdata.id ;
                                           ado3.Parameters.ParamByName('ss1').Value :=PSecondDeptdata.id ;
                                           ado3.Open;
                                           ado3.First;
                                           while not ado3.Eof do
                                              begin
                                                if (ado3.FieldByName('ss0').AsInteger=PFirstDeptdata.id) and (ado3.FieldByName('ss1').AsInteger=PSecondDeptdata.id) then
                                                   begin
                                                    ThreeDeptdata:= new(PNodedata) ;
                                                    ThreeDeptdata.id:=ado3.fieldByName('ss2').AsInteger;
                                                    ThreeDeptdata.nodetype := 2;
                                                    ThreeDeptName := ado3.FieldByName('ss3').AsString;
                                                    ThreeDeptNode := treeview1.Items.AddChildObject(SecondDeptNode,ThreeDeptName, ThreeDeptdata);
                                                    ado3.Next;
                                                   end;
                                              end;
                                   end ;
                          end ;
                end ;
         RootNode.Expanded := true; //设置根目录默认打开
      end;
    //根据节点查询相应数据。
    procedure TMainForm.TreeView1Click(Sender: TObject);
    var
       cournode:Ttreenode;
    begin
    cournode:=treeview1.Selected;
    case cournode.Level of
    2:
      begin
      adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.SQL.Add('select * from bb where bb3=:bb3');
      adoquery1.Parameters.ParamByName('bb3').Value:=treeview1.Selected.Text;
      adoquery1.Open;
      end;end;end;end.
      

  4.   

    学习学习,非常十分以及极其不会用TreeView