现在我的数据库要求按以下字段中的内容进行筛选:
  (1)depart_no : 部门,要求筛选出部门号首位为‘D’(D///,D1//,D11/, D2//,D21/,D22/,D3//,D31/,D32/))
  (2)class_code : 职务级别, 要求筛选出C级所有职工(如:C1,C2,C3,C4)
  (3)in_comp: 进厂年月, 要求筛选出某一时间段内进厂的职工
   以上三个条件不一定同时有,或许只有其中一个,或许有其中两个,或许三个都要满足。请问如何写出出表达式并赋给ADOTABLE的FILTER属性,或者如何写出SQL语句。

解决方案 »

  1.   

    SELECT *
    FROM yourTable
    WHERE (depart_no LIKE 'D%') OR (class_code LIKE 'C%') 
       OR (in_comp BETWEEN '2003/03/01' AND '2004/03/01')ADOTABLE的FILTER属性就和SQL文的WHERE条件是一样的.
      

  2.   

    SELECT *
    FROM yourTable
    WHERE left(depart_no,1)='D' OR left(class_code,1)='C' 
       OR (in_comp BETWEEN '2003/03/01' AND '2004/03/01')这句应该也是可以的。
      

  3.   

    很久以前写过一个类似的:
    qyda031.Close;
        qyda031.SQL.Clear ;
        qyda031.SQL.Add('select * from da030 where (Date>=:d1)and(Date<=:d2)');
        qyda031.SQL.Add('and(fileId like ''%'+EfileID.text+'%'')');
        qyda031.SQL.Add('and(zutici like ''%'+Ezutici.text+'%'')');
        qyda031.SQL.Add('and(timu like ''%'+Etimu.Text+'%'')');
        qyda031.SQL.Add('and(Company like ''%'+Ecompany.Text+'%'')');
        qyda031.SQL.Add('and(Note like ''%'+Enote.text+'%'')');
        qyda031.ParamByName('d1').AsDateTime :=DateTimePicker1.DateTime ;
        qyda031.ParamByName('d2').AsDateTime :=DateTimePicker2.DateTime ;
        qyda031.Open;