var sqltext,ss,tt:string;
begin
  sqltext:=query1.sql.text;
  ss:='';
  if checkbox1.checked then  ss:=ss+checkbox1.caption+'='+edit1.text+' and ';
 if checkbox2.checked then ss:=ss+checkbox2.caption+'='+edit2.text;
   .
   .
   .
ss:=trim(ss);
tt:=copy(ss,length(ss)-3,3);
if pos('and',tt,[])>0 then ss:=copy(ss,1,length(ss)-3);  
if pos('where',sqltext)>0 then sqltext:=sqltext+' and '+ss
else sqltext:=sqltext+' where '+ss;
query1.close;
query1.sql.clear;
query1.sql.add(sqltext);
query1.open;
end;

解决方案 »

  1.   

    我有一个Source,你要吗?   
      

  2.   

    方法如下:
    设定一个Query1,其SQL为:Select * from KCXX Where 1>0
    设KCXX为你要检索的数据表,可设定一按钮在其Click事件中写如下代码:
    Query1.Close;
    While Query1.SQL.Count>1 do
          Query1.SQL.Delete(1);
    If CheckBox1.checked Then
       Query1.SQL.Add('And 字段1='+#39+Edit1.Text+#39);
    If CheckBox2.Checked Then
       Query1.SQL.Add('And 字段2='+#39+Edit2.Text+#39);
    .....同理
    Query1.Open;
    其中的比较方式可自已更换,若想用模糊查询,则可将‘=’换成Like