Str : String;
Str := 'select * from table where 条件1';//条件1为一个绝对成立的条件,比如编号大于0什么的.
if Edit会议.text <>'' then Str := Str+ ' and ....';
if Edit姓名.text <>'' then Str := Str+ ' and ....';
......

解决方案 »

  1.   

    var
     hymc,xm:String;
     rq1,rq2:TDatetime;  
    begin
     hymc:=trim(hymc.text);
     xm:=trim(xm.text);
     rq1:=trim(rq1.text);
     rq2:=trim(rq2.text);
     
     Query1.Close;
     Query1.SQL.Clear;
     Query1.SQL.Add('Select * from 表名 ');
     if hymc<>'' then
        begin
           Query1.SQL.Add('Where 会议名称字段名=:hymc');
           Query1.SQL.ParamByName('hymc').AsString:=hymc;
        end;
     if xm<>'' then
        begin
           Query1.SQL.Add(' and 姓名字段名=:xm');
           Query1.SQL.ParamByName('xm').AsString:=xm;
        end;
     if rq1<>'' then
        begin
           Query1.SQL.Add(' and 日期1字段名=:rq1');
           Query1.SQL.ParamByName('rq1').AsDateTime:=StringToDateTime(rq1);
        end;
     if rq2<>'' then
        begin
           Query1.SQL.Add(' and 日期2字段名=:rq1');
           Query1.SQL.ParamByName('rq2').AsDateTime:=StringToDateTime(rq2);
        end;
     Query1.Open;
      

  2.   

    cul(恐龙++) 你好 请你把+ ' and ....';写的详细点好么,谢谢!
      

  3.   

    不好意思刚才写掉了一点
    var
     hymc,xm:String;
     rq1,rq2:TDatetime;  
     flag:boolean;
    beginflag:=false; 
    hymc:=trim(hymc.text);
    xm:=trim(xm.text);
    rq1:=trim(rq1.text);
    rq2:=trim(rq2.text);Query1.Close;
    Query1.SQL.Clear;
    Query1.SQL.Add('Select * from 表名 ');
    if hymc<>'' then
        begin
          Query1.SQL.Add('Where 会议名称字段名=:hymc');
          Query1.SQL.ParamByName('hymc').AsString:=hymc;
          falg:=true;
        end;if xm<>'' then
       begin
        if flag then
           Query1.SQL.Add(' and 姓名字段名=:xm')
        else
          Query1.SQL.Add('where 姓名字段名=:xm');
        Query1.SQL.ParamByName('xm').AsString:=xm;
        flag:=true;
       end;if rq1<>'' then
        begin
          if flag then
             Query1.SQL.Add(' and 日期1字段名=:rq1')
          else
             Query1.SQL.Add('where 日期1字段名=:rq1');
          Query1.SQL.ParamByName('rq1').AsDateTime:=StringToDateTime(rq1);
          flag:=true;
        end;
    if rq2<>'' then
        begin
          if flag then
             Query1.SQL.Add(' and 日期2字段名=:rq1')
          else
             Query1.SQL.Add('where 日期2字段名=:rq1');
          Query1.SQL.ParamByName('rq2').AsDateTime:=StringToDateTime(rq2);
        end;
    Query1.Open; end;
      

  4.   

    Str : String;
    Str := 'select * from table where 条件1';//条件1为一个绝对成立的条件,比如编号大于0什么的.
    if Edit会议.text <>'' then Str := Str+ ' and 会议名称='''+Edit会议.text+ '''';
    if Edit姓名.text <>'' then Str := Str+ ' and 姓名='''+Edit姓名.text+ '''';
    if 日期.text <>'' then Str := Str+ ' and 日期 between ......';
    Query.SQL.Add(Str);
      

  5.   

    cul(恐龙++) :你好datetimepicker没有.text  属性我该怎么办?
      

  6.   

    不好意思,才看到.
    在DateTimePicker每个检索条件前面加个CheckBox做选择条件吧,如果没有选中,则不加条件,选中的话,加条件进去,不好吗?
    如果你不用的话,可以在DateTimePicker的OnChange事件里面标记一个变量做是否加条件的选择,或者前一个时间设得很前,后一个时间很后,以便用户如果不改时间,也能查出全部.
    方法太多啦,你看怎么好用怎么用吧.