fllx和flzlx均为整型,但在过滤时却出现问题.AQ_FLwx.Filter:='fllx<6 and flzlx=0';  //该句在程序执行时OKAQ_FLwx.Filter:='fllx1=3 and flzlx1>0'; //该句在执行时出现'参数类型不正确,或不在可以接受范围之内,或与其他参数冲突 '在运行环境为:Win2000 单机版、 Delphi7.0下会出现该问题,但在Win2003 或win2000 server版中测正常!大家是否遇到过此问题? 求解! 

解决方案 »

  1.   

    偶也是觉的奇怪,有点不能理解,该过虑语句也不怎么复杂,怀疑是否是Filter过程中使用大于号有问题?哪位如有可能的话可在多个运行环境测试下,看是否有同样的问题?
      

  2.   

    AQ_FLwx.Filter:='fllx1=3 and flzlx1>0'; 
    换一下位置:
    AQ_FLwx.Filter:='flzlx1>0'and fllx1=3;
    试试
      

  3.   

    弄个变量试试:
    变量1:='fllx1=3 and flzlx1>0'
    AQ_FLwx.Filter:='fllx1=3 and flzlx1>0'
      

  4.   

    AQ_FLwx.Filter:='fllx1=3 and flzlx1>0'; 
    AQ_FLwx.Filter:=AQ_FLwx.Filter+' and flzlx1>0 and fllx1=3 ';
      

  5.   

    楼上的方法试过也不可以,我发现当Filter条件中有大于号时会出现错误'参数类型不正确,或不在可以接受范围之内,或与其他参数冲突 '提示。
    我将AQ_FLwx.Filter:='fllx1=3 and flzlx1>0'; 
    改为AQ_FLwx.Filter:='fllx1=3 and flzlx1=0'; 或flzlx1<0 均没有问题,就是有大于时出现问题!
      

  6.   

    换成用事件OnFilterRecord过滤试试
      

  7.   

    OnFilterRecord事件中写AQ_FLwx.Filter:='fllx1=3 and flzlx1>0';查询时让AQ_Flwx.filtered:=true;结果还是如此,这有什么区别呢?哪位有环境可试试看,不可能只有我遇到该问题呀!
      

  8.   

    各位XDJM,请帮帮忙看看,我只是觉的奇怪的是为什么Filter不支持>号呢? 而且运行环境不一样,执行结果也不一样?欢迎大家讨论,分不够再加++++
      

  9.   

    Operator precedence rulesPrecedence of operators 
    Operators                   Precedence
    @, not                    first (highest)
    *, /, div, mod, and, shl, shr, as       second
    +, -, or, xor                 third
    =, <>, <, >, <=, >=, in, is           fourth (lowest)
    ==========================================================
    在fllx、flzlx、fllx1、flzlx1 均为AQ_FL中字段,并属于数值型,以下代码是楼主想要表达的。
    以后书写代码的时候记得缩进和空格,可读性是必要的。
    在无法摸清优先级的时候,括号能帮你解决这种问题,反正编译器会帮你优化掉不必要的括号。
    AQ_FLwx.Filter := '(fllx < 6) and (flzlx = 0)';AQ_FLwx.Filter := '(fllx1 = 3) and (flzlx1 > 0)';
      

  10.   

    加了括号也不行,
    AQ_FLwx.Filter := '(fllx < 6) and (flzlx = 0)';  //注:运行OK
    AQ_FLwx.Filter := '(fllx1 = 3) and (flzlx1 > 0)';  //只要有大于号均不行如果试着改为以下运行:
    AQ_FLwx.Filter := '(fllx > 6) and (flzlx = 0)';  //这句改为有大于号则不正常
    AQ_FLwx.Filter := '(fllx1 = 3) and (flzlx1<0)';  //这句如果改为不包括大于号则正常再次说明:该问题在Win2000server+D7运行均没有问题,在Win2000单机版下才会出现该问题!有环境的测试下便明白!