begin
  // ...
  with qryAudit do
  begin
    Filtered := False;
    Filter   := '((车号 = ''0'' AND 始发港 LIKE ''%上海%'') OR (车号 = ''达驳'' AND 目的港 LIKE ''%上海%'')) AND (运单号 LIKE ''%SH102238%'')';
    Filtered := True;
  end;  
end;不知道为什么这段代码老报错,错误如下:"参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。"
但是,分别执行Filter := '((车号 = ''0'' AND 始发港 LIKE ''%上海%'') OR (车号 = ''达驳'' AND 目的港 LIKE ''%上海%''))'或者Filter := '(运单号 LIKE ''%SH102238%'')'可以,不知道为什么合到一起就不行了,TADOQuery的Filter有长度限制或者因为逻辑过于复杂?知道的高手指点一下,谢谢了!

解决方案 »

  1.   

    TO hongqi162: 就是阿,不明白所以然!
      

  2.   

    filter不能写like ....跟where不完完全等价的
      

  3.   

    < Less than
    > Greater than
    >= Greater than or equal to
    <= Less than or equal to
    = Equal to
    <> Not equal to
    AND Tests two statements are both True
    NOT Tests that the following statement is not True
    OR Tests that at least one of two statements is True
    + Adds numbers, concatenates strings, adds numbers to date/time values (only available for some drivers)
    - Subtracts numbers, subtracts dates, or subtracts a number from a date (only available for some drivers)
    * Multiplies two numbers (only available for some drivers)
    / Divides two numbers (only available for some drivers)
    * wildcard for partial comparisons (FilterOptions must include foPartialCompare)这些是filter支持的算符
      

  4.   

    TO Harryfin: Filter :=  '(运单号 LIKE  ' '%SH102238% ' ')' 单独执行是可以的
    TO tianhuo_soft: 是啊,上海一家物流公司的
    TO 24782882: ''不是双引号,是2个单引号,转义用的
      

  5.   

    是否你在过滤的字段没有在AdoQuery包涵呢,,,那样也会引起错误,,
      

  6.   

    TO WANGXUELLD: 过滤的字段肯定是包含的,不然单独执行不了啦!可能真是其他原因造成的.
      

  7.   

    ‘SH102238’和 ‘上海’一个String,一个WideString ,会不会是这个原因哦,楼主看看是不是这个原因,汉字和字母所占的不一样。
      

  8.   

    TO agui: 字段名用双引号括起来,每次都报:"参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。" 
    汗死了...