我要做一个条件组合查询,就是列出很多条件,让用户自由选择组合查询,我不知道该怎么实现,望高手赐此方面代码给我,不胜感激!

解决方案 »

  1.   

    var sql_string:string;开始查询时,逐个判断Edit的内容,如果不为空,则:  if Edit1.text<>'''' then    begin      sql_string:=sql_string+''driver_name like ''''%''+edit1.text+''%''''''+'' and '';      china_condition:=china_condition+''驾驶员姓名:''+Trim(edit1.text)+''/'';    end;全部判断完成后,删除字符串最后的'' and''  delete(sql_string,(length(sql_string)-4),4);调用Query:  if sql_string<>'''' then    with driver_query_form do      begin          query1.close;          query1.sql.clear;          query1.sql.add(''select * '');          query1.sql.add(''from in_base '');          query1.sql.add(''where ''+sql_string);          query1.Open;       end;
      

  2.   

    procedure TForm1.Button7Click(Sender: TObject);
    begin
      with adoquery1 do
      begin
      close;
      sql.Clear;
      sql.Add('select * from 表 where ');
      if edit1.text <> '' then
      sql.Add(Format(' edit1对应的字段 like ''%s''',['%'+edit1.text+'%']));
        if edit2.text <> '' then
        sql.add(format('and (edit2对应的字段 like ''%s'')',['%'+edit2.text+'%']));
      open;
      end;
    end;
      

  3.   

    with adoquery1 do
      begin
        close;
        sql.Clear;
        strSql:='select * from 表 where '+ComboBox1.text'
               +ComboBox2.text+''''+edit1.text+'''';           
        sql.Add(strSql); 
        open;
      end;
    combobox1.text 为字段名
    combobox2.text 为运算符
    edit1.text     为过滤值
      

  4.   

    sqlstr:string;
    begin
       sqlstr:='select * from hjgl.jbqk where (1=1)';
       if edit1.Text <>'' then
       sqlstr:=sqlstr+'and (jb_name='''+edit1.text+''')';
       if edit3.text<>'' then
       sqlstr:=sqlstr+'and (jb_jg='''+edit3.text+''')';
       if combobox1.Text<>'' then
       sqlstr:=sqlstr+'and (jb_sex='''+combobox1.text+''')' ;   ADOQuery1.Close ;
       ADOQuery1.SQL.Clear ;
       ADOQuery1.SQL.Add(sqlstr);
       ADOQuery1.Open ;