例如combobox1中包含水资源名、沙漠名等信息,DBGrid1中显示全部数据库中的信息,我点击水资源名后将数据库中符合的的信息都显示在DBGrid1中,并且不显示不符合的信息unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, DB, ADODB, StdCtrls;type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    Button1: TButton;
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    procedure ComboBox1DropDown(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.ComboBox1DropDown(Sender: TObject);
var
i : integer;
begin
ComboBox1.Clear;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select 统计年份 from qyshjj');
ADOQuery1.Open;
if ADOQuery1.RecordCount>0 then
begin
for i:=0 to ADOQuery1.RecordCount-1 do
begin
ComboBox1.Items.Add(ADOQuery1.FieldByName('统计年份').AsString);
ADOQuery1.Next;
end;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
if Trim(ComboBox1.Text)<>'' then
      if ADOTable1.Locate('统计年份',Trim(ComboBox1.Text),[loPartialKey]) then
  begin
   ADOQuery1.Active := false;
   ADOQuery1.SQL.Clear;
   if ComboBox1.Text<>''  then
   Adoquery1.SQL.Add('select * from qyshjj where 统计年份="'+Combobox1.Text+'"');
   Adoquery1.Active := true;
end;
end;
end.

解决方案 »

  1.   

    加一个数据源,设置数据源的数据集属性为:ADOQuery1,在界面上放置一个DBGrid,将其数据源属性设置为你加的数据源。
      

  2.   


    即就是用Filter属性
    Filter:= '统计年份 = '''+Trim(ComboBox1.Text)+'''';
      

  3.   

    datasource关联就好了
    设置过滤就可以了
      

  4.   

        在ComboBox1的OnChange事件中写查询条件就可以了。
        楼主在ComboBox1DropDown事件中给ComboBox1赋了统计年份,怎么又说在【combobox1中包含水资源名、沙漠名等信息】,有点不明白;
        查询的时间选择应该用DateTimePicker控件吧;procedure TForm1.ComboBox1Change(Sender: TObject);
    begin
      if ComboBox1.Text<>'' then begin
        ADOQuery1.Close;
        ADOQuery1.SQL.Clear;
        Adoquery1.SQL.Add('select * from qyshjj where 水资源名='''+Combobox1.Text+''' ');
        Adoquery1.SQL.Add('and 统计年份='''+datetostr(DateTimePicker1.Date)+'''');
        Adoquery1.Open;
      end;
    end;