我有一個查詢條件界面.
里面有五到十個的edit和兩個時間控件datetimepicker和一個checkbox.
我的想法是這樣的.
我想取出這些edit中不為空來作查詢條件.且每個edit代表一個字段的值.
如果checkbox為真的話時間就用between來連接這兩個datetimepicker作條件.
如果為false則只是day為第一個datetimepicker為條件.
能否給出完整代碼.

解决方案 »

  1.   

    var
      Str:string;
    begin
      if Edit1.Text<>'' then str:=str+'(and xxx='''+Edit1.text+''')';
      ...
      if Edit10.Text<>'' then str:=str+'(and xxx10='''+Edit10.text+''')';  if checkbox.checked then
      begin
        Str:=Str+'(and (ddd between '''+DateToStr(d1.date)+''' and '''+DateToStr(d2.date)+''')';
      end else
      begin
        Str:=Str+'(and ddd= '''+DateToStr(d1.date)+''')';
      end;  //传递这个str
    end;ado.sql.text:='select * from table where 1=1 '+str;
      

  2.   

    with query do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select * from Table (nolock)');
      SQL.Add('where 1= 1');
      if Edit1.Text <> '' then
        SQL.Add('and xxx = '''+Edit1.Text+'''');
      if Edit2.Text <> '' then
        SQL.Add('and xxx = '''+Edit2.Text+'''');
      ..................
      if checkbox.checked then
      begin
        SQL.Add(and (ddd between '''+DateToStr(d1.date)+''' and '''+DateToStr(d2.date)+''')';
      end else
      begin
        SQL.Add(and ddd= '''+DateToStr(d1.date)+''')';
      end;
    end;
      

  3.   

    对每个EDIT 判断以下就可以了