我准备查询一个表,在DBlistbox中显示表中的一个字段的值,然后通过鼠标点击选中其中一条纪录字段值,点击一按钮,在一dbgrid控件和一dbmemo控件中分别显示同一条纪录的其他字段值。有如下问题讨教
1,如何在dblistbox中实现显示所需的字段值(如name)。我用一QUERY进行查询。希望有详细代码。
2,点选dblistbox中的一条字段值后,如何在按钮的CLICK事件中实现同一条纪录在dbgrid及dbmemo中的显示,也希望代码能详细一点.
请各位高手指点一下,拜托,拜托。

解决方案 »

  1.   

    她只是用来控制DataSource的当前记录的DataField的取值的,取值范围是列表所列的值。
    她并不会列出所有记录的当前字段。
    要想列出所有记录的当前字段值,用TDBLookupListBox。
      

  2.   

    很普通的方法1、
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      //因为要同时显示三组不同的数据集,所以用3个TADOQuery
      DBListBox1.DataSource := DataSource1;
      DataSource1.DataSet := ADOQuery1;
      DBGrid1.DataSource := DataSource2;
      DataSource2.DataSet := ADOQuery2;
      DBMemo1.DataSource := DataSource3;
      DataSource3.DataSet := ADOQuery3;
      DBListBox1.DataField := 'name';
      //显示DBListBox
      with ADOQuery1 do
      begin
        ConnectionString := '...';
        Close;
        SQL.Clear;
        SQL.Add('SELECT * FROM table');
        Open;
      end;
    end;
    2、
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      //显示DBGrid
      with ADOQuery2 do
      begin
        ConnectionString := '...';
        Close;
        SQL.Clear;
        SQL.Add('SELECT * FROM table WHERE name='''+ DBListBox1.Items.Strings[DBListBox1.ItemIndex] +'''');
        Open;
      end;
      //显示DBMemo
      with ADOQuery3 do
      begin
        ConnectionString := '...';
        Close;
        SQL.Clear;
        SQL.Add('SELECT 字段名 FROM table WHERE name='''+ DBListBox1.Items.Strings[DBListBox1.ItemIndex] +'''');
      end;
    end;
      

  3.   

    用你的dblistbox和dbedit设成同一个数据集adoquery,这样就会自动相匹配,只需直接使用
      

  4.   

    严重同意
     回复人: luke5678(奇异)  
    的方法