Access数据库为什么不能用过滤器Filter来查询呀?

解决方案 »

  1.   

    怎么不能,可以啊;不过没有OnFilter灵活:
    ADOQuery1.Filtered := false;
    ADOQuery1.Filter := '';  {中间写入过滤代码,不能用%在前而尾没有%的匹配}
    ADOQuery1.Filtered := true;
      

  2.   

    ‘中间写入过滤代码,不能用%在前而尾没有%的匹配’什么意思??OnFilter又怎么用呀?
      

  3.   

    我写的过滤代码执行时老出错,说“无法打开过滤器”,怎么回事?data.red.Filtered :=false;
    data.red.Filter:='id like '''+#37+formatdatetime('yymmdd',date)+#37+'''';
    data.red.Filtered:=true;
      

  4.   

    data.red.Filtered :=false;
    data.red.Filter:='id like '''+'%'+#39+formatdatetime('yymmdd',date)+#39+'%'+'''';
    data.red.Filtered:=true;注意:
    1、是#39
    2、LIKE要记得加'%'
      

  5.   

    table 的filter不能like 
    to楼上:是#37,37就是%
      

  6.   

    我没用Table,我用的是ADOTable和ADOQuery,都是可以用的:
    [第三次重发]
    我表达不是太清楚,你参照下面一些代码,假设想过滤sname字段的一些数据
    procedure TfrmEhlib.Button1Click(Sender: TObject);
    begin
      ADOTable1.Filtered := false;
      ADOTable1.Filter := 'sname like ''电%''';
      ADOTable1.Filtered := true;
    end;
    --中间写入过滤代码,不能用%在前而尾没有%的匹配’什么意思??OnFilter又怎么用呀?
    我想表达的意思是,如上面,可过滤出如[电脑][电视机]等以[电]开头的,但若写成这样, 如ADOTable1.Filter := 'sname like ''%机''';,可能本意想过滤出如[电视机][影碟机]等以[机]结尾的数据,这样是不行的,它会出现一个错误,是[参数类型不正确...]等反正都是错,若是写成ADOTable1.Filter := 'sname like ''%机%''';倒是可以正确过滤出数据;究其原因我想可能过滤是当你用在输入选择如药品类中你输入开头代码它就过滤以其开头代码一致的东西来;其它如'sname = ''电视机'''等倒是好办,若是数据型就不用多加引号就可以了。其中%可用*来代替,我是用%习惯了,反正道理大抵如此,多试几次吧
      

  7.   

    语法上面的问题不大,我想提醒一下,如果你是在主细表在细表中过滤就不行了,好像只能在主表中使用。如果没有这个问题,只能祝你好运了。frmdm.ADOTable1.Filtered:= False;
    frmdm.ADOTable1.Filter := 'ID= ' + '''' + edit1.text+ '''';
    frmdm.ADOTable1.Filtered := True;
      

  8.   

    Filter支持的函数有限。
    如果需要复杂的筛选条件,可以在onFilter中对每一个记录进行判断来实现