以下是运行正常的sql语句:
SELECT *
FROM 机票
WHERE (状态1 = '团队' OR
      状态1 = '团队头' OR
      状态1 = '团队,多页' OR
      状态1 = '团队,多页头' OR
      状态1 = '团队头,多页' OR
      状态1 = '团队头,多页头') AND (结算编号 = 0)
------
以下是我在delphi filter中的filter字符串:
                     Filter:='( 状态1='+QuotedStr('团队')+
                          ' or 状态1='+QuotedStr('团队头')+
                          ' or 状态1='+QuotedStr('团队,多页')+
                          ' or 状态1='+QuotedStr('团队,多页头')+
                          ' or 状态1='+QuotedStr('团队头,多页')+
                          ' or 状态1='+QuotedStr('团队头,多页头')+
        ' ) and (结算编号=0)';
-------
我用以上的字符串过滤数据回出现如下的错误:
变量或者类型不正确,或者不在可以接受的范围之内,要不与其他的数据冲突另:如果我去掉'结算编号=0‘ 这一句运行也正常,用showmessage显示filter字符串跟sqlserver中运行的sql 语句没有什么区别,可就是出错,真是奇怪,望高手指点迷津!

解决方案 »

  1.   

    你这样试试看。在SQL执行前。用SHOWMESSAGE()把语句
    吊出来看看。。有没有书写错误。特别是看看字段的。正确性
      

  2.   

    我赞成,用showmessage显示一下,看语句是否有错误
      

  3.   

    我看了,在message框中我也找不出毛病,跟运行正常的运距一样,真是奇怪啊,把and 跟or 都分开过滤都运行正常说明字段没有书写错误
      

  4.   

    我不肯定,可能是DELPHI的FILTER并不支持你的复合条件(好像反过来就可以:就是(* and * and * and *) OR (* and * and *)的样式),改在ONFILTERRECORD事件里过滤试试
      

  5.   

    这个问题是解决了,可关于filter的问题,还是没有明白他到底支不支持!