如下SQL语句,在SQL2000的查询分析器和VisualFoxpro9.0都可以执行,可在BDE中用Query就不能执行,咋回事哟?该如何解决?
SELECT * FROM zc04c WHERE xm+xb in (SELECT xm+xb FROM zc04c GROUP BY xm,xb HAVING COUNT(*)>=2) ORDER BY xm,xb

解决方案 »

  1.   

    报什么错误信息?
    ------------------------------------
    体验速度,体验CSDN论坛助手:http://community.csdn.net/Expert/TopicView.asp?id=4700683
      

  2.   

    问题不是很清楚,如果你用是bde连access数据库,肯定有问题(bde不支持子查询),建议改用sql2000(你既然有这个数据库)
    如果你是用bde连sql2000/vfoxpro(有9.0版吗?我只用到过6.0)出现问题,建议改bde为ado,因为用ado连microsoft的数据库肯定比BDE好
      

  3.   

    SELECT * FROM zc04c WHERE rtrim(xm)+rtrim(xb) in (SELECT rtrim(xm)+rtrim(xb) FROM zc04c GROUP BY xm,xb HAVING COUNT(*)>=2) ORDER BY xm,xb
      

  4.   

    看看是不是有什么字符串,这种情况要注意单引号的用法
    如:
    var
      s: String;
    begin
      Edit1.Text := 'Test';
      s := 'Test1(' + Edit1.Text + ')Test2'; 
                         //执行后s的值变为Test1(Test)Test2 
      s := 'Test1(Edit1.Text)Test2'; 
                        //执行后s的值变为Test1(Edit1.Text)Test2
      s := 'Test1(' + '''' + Edit1.Text + '''' + 'Test2'; 
                        //执行后s变为Test1('Test')Test2
    end;
      

  5.   

    可能是BDE的问题,如果将XM+XB直接用XM就不会出问题。
    因为项目需要,数据必须用DBF,用ADO,很多DBF又会有乱码。
    郁闷中..........
      

  6.   

    用Delphi自带的SQL Explorer执行一下SQL语句,如果不行只能说明BDE不支持该语句,如果行则是你语法的问题