问题:数据库:id  , name ,sex
      我想用一个树结构把所有的name都显示出来,并且当选某条数据的时候,在下面的
edit框中得到这条数据的所有信息!但是当有相同的name 时显示的总是数据库中的第一条,
     所以我想将查询的时候将所有的id ,然后通过在节点上显示id 所对应的name.
就这一句话,我该怎么写啊!!!
    原代码: 
  
xx[w]:=Treeview1.Items.AddChild(ww[k],AdoQuery1.Fieldbyname(' name').AsString );for i:=0 to  w-1  do
      begin
          if treeview1.Selected=xx[i] then
          begin
                                ADOQuery1.First ;
                      for j:=0 to ADOQuery1.RecordCount-1 do
                      begin
                        if  ADOQuery1.FieldByName('username').AsString =xx[i].Text then
                      //if ADOQuery1.FieldByName('Truename').AsString =xx[i].Text  then
           

解决方案 »

  1.   

    先把ID加到树里面,然后按ID检索就行!
      

  2.   

    在节点的DATA属性中保存ID值,每次点节点的时候用ID值去查询所对应的记录,就可以了,
    TTreenode.data:=(自定义一个指针类型,)
      

  3.   

    我希望能够在树上直接显示的是 name 啊!
     回复人: l_xiaofeng(≈流水≈不腐≈) ( ) 信誉:100  2003-06-05 09:09:00  得分:0 
     
     
      先把ID加到树里面,然后按ID检索就行!
     
      您能够具体一点马!!能够提供一点代码马???谢谢了!!!!
     
      

  4.   

    这个问题很简单,往树上添加接点时,保存ADOQuery1的书签
    Treeview1.Items.AddChildObject(ww[k],AdoQuery1.Fieldbyname('name').AsString,ADO,ADOQuery1.getbook );
    然后在treeview1.ONclick事件中加一句
    ADOQuery1.gotobook(Node.data);(Node为当前接点)
    就行了
      

  5.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, ADODB, StdCtrls, ComCtrls, Grids, DBGrids;type
      TForm1 = class(TForm)
        ADOConnection1: TADOConnection;
        Button1: TButton;
        ADOQuery1: TADOQuery;
        Button2: TButton;
        PageControl1: TPageControl;
        TabSheet1: TTabSheet;
        TreeView1: TTreeView;
        TabSheet2: TTabSheet;
        DataSource1: TDataSource;
        ADOQuery1ID: TAutoIncField;
        ADOQuery1ParentID: TIntegerField;
        ADOQuery1Name: TWideStringField;
        DBGrid1: TDBGrid;
        Memo1: TMemo;
        procedure Button2Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        procedure FillTreeView(TreeView: TTreeView);
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button2Click(Sender: TObject);
    begin
      Close;
    end;procedure TForm1.FillTreeView(TreeView: TTreeView);
      procedure CreateSubTree(FNodeName: string; Node: TTreeNode = nil);
      var
        mLocalName: string;
        TreeNode: TTreeNode;
        Ads_Tmp: TADODataSet;
      begin
        ADS_Tmp := TADODataSet.Create(Self);
        ADS_Tmp.Connection := ADOConnection1;
        with ADS_Tmp do
        try
          Close;
          CommandText := 'Select * from Type Where ParentID =' + FNodeName;
          Open;
          First;
          while not Eof do
          begin
            mLocalName := FieldbyName('ID').Asstring;
            TreeNode := TreeView.Items.AddChild(Node, FieldByName('Name').AsString);
            CreateSubTree(mLocalName, TreeNode); // 此处循环递归
            Next;
          end;
        finally
          ADS_Tmp.Free;
        end;
      end;
    begin
      TreeView.Items.BeginUpdate;
      TreeView.Items.Clear;
      with TreeView.Items.Add(nil, '所有目录') do
      begin
        ImageIndex := 1;
        SelectedIndex := 1;
      end;
      CreateSubTree('0', TreeView.Items[0]);
      TreeView.Items.EndUpdate;
      TreeView.Items[1].Selected := True;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      FillTreeView(TreeView1);
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      ADOQuery1.Close;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      ADOQuery1.Open;
    end;end.