strsel:='select * from tablename';
strcon:='where 1=1 ';if edit1.text<>'' then
strcon:=strcon+'or name='+''''+edit1+'''';
.
.
.以此类推.

解决方案 »

  1.   

    噢,刚睡醒,不太清醒,我以为你要查询呢.^o^问题是不难,可这位仁兄也不见得就是作业吧?我看到在SQL区已经有人回答你这个问题了.
      

  2.   

    如果不对,权当灌水:)
    with Query do
    begin
      CLose;
      with SQL do
      begin
        Clear;
        Add('select * from TableName where xm like := Value or xh like :Value2 or nl like :Value3');
      end;
        Params.Items[0].AsString := Edit1.Text;//BDE
        ....//BDE
        Parameters.Items[0] . AsString := '%' + Edit1.Text + '%';//ADO
        ...//ADO
      Open;
        //就这样了;
      end;
    eng;
      

  3.   

    如sabre(沙漠军刀)所說
    if edit1.text<>'' or edit2.text<>'' or edit3.text<>'' then
    begin
    With Query1 do begin
     sql.clear;
     sql.Add('Select * from mytable');
     sql.Add('where 1=1');  <-------- 注意這行的用途 
      if Edit1.text <> '' then
        sql.Add('and 姓名 ='+ edit1.text);
      if Edit2.text <> '' then
        sql.Add('and 年龄 ='+ edit2.text);
      if Edit3.text <> '' then
        sql.Add('and 学号=' + edit3.text);
      prepare;
      open;
    end;
    end;