adoquery,adoconnection,datasource分别连接成功
使用两个combobox,一个是班级名称查询的,一个是按性别查询查询;
如果用户选择班级查询,dbgrid会显示班级信息,再按性别查询 结果为该班级的所有男生(女生)信息;
反之,先按性别查询,会出现所有的男生(女生)的信息,再按班级查询,在显示的信息中进行筛选,
求解求解

解决方案 »

  1.   

    在窗口建立时,先将所有班级名称加到第一个ComboBox,然后将性别加到第二个ComboBox。注意这两个ComboBox都加上一条"All“。然后用一个“查询”按钮。在这个按钮事件中写下列语句。begin
      if (trim(ComboBox1.Text)='All') and (trim(ComboBox2.Text)='All') then
      begin
        ADOQuery.Close;
        ADOQuery.SQL.Clear;
        ADOQuery.SQL.Add('select * from TableName'); //查所有记录
        ADOQuery.Open;
      end
      else if trim(ComboBox1.Text)='All' then
      begin
        ADOQuery.Close;
        ADOQuery.SQL.Clear;
        ADOQuery.SQL.Add(Format('select * from TableName where 性别=''%s''',[trim(ComboBox2.Txext)])); //查所有班级的男或女生记录。
        ADOQuery.Open;
      end
      else if trim(ComboBox2.Text)='All' then
      begin
        ADOQuery.Close;
        ADOQuery.SQL.Clear;
        ADOQuery.SQL.Add(Format('select * from TableName where 班级=''%s''',[trim(ComboBox1.Txext)])); //查一个班级的所有记录
        ADOQuery.Open;
      end
      else
      begin
        ADOQuery.Close;
        ADOQuery.SQL.Clear;
        ADOQuery.SQL.Add(Format('select * from TableName where 班级=''%s'' and 性别=''%s''',[trim(ComboBox1.Txext),trim(ComboBox2.Text)]));//查某个班级的男生或女生记录。
        ADOQuery.Open;
      end;
    end;
        
        
      

  2.   

    这有撒难的啊,组合查询呗
    var
      sqlstr:string;
    begin
      if (combobox1.text='')and(combobox2.text='') then
      begin
        showmessage('请选择查询条件')
        exit;
      end;
      sqlstr := 'select * from table where (1=1)';
      if combox1.text<>'' then
        sqlstr := sqlstr +' and bjname=:bjname';
      if combox2.text<>'' then
        sqlstr := sqlstr +' and xb=:xb';
      with adoquery1 do
      begin
        close;
        sql.clear;
        sql.add(sqlstr);
        if combox1.text<>'' then
          parameter.parambyname('bjname').value := combobox1.text;
        if combobox2.text<>'' then
          parameter.parambyname('xb').value := combobox2.text;
        open;
      end;
    end;
      

  3.   

    注意SQL语句,先一MSSQL2000数据库测试一下看看,有没有问题,
    再在DLEPHI编程中以字符串方式传递给变量让ADO控件去执行这
    些语句,并引用其显示数据的控件显示出来就可以了