下面这个sql语句:SELECT id,(SELECT Sum(iCMark)/count(inum) FROM CourseMark  GROUP BY iCourseid) AS iCMarkP,iMainid,sTeacher FROM ClassCourse .在access中可以查询,但在adoDataSet中执行提示:‘数据提供程序或其他服务返回E_FAIL错误'.
   但把上面的sum该为Count,或是iCMark是整数而不是小数,就不会出错,或是不用子查询也不会出错。一天都没搞定这个问题,真是抓狂了。奇怪的是为什么在Access中执行不会出错,而在Delphi的程序中执行却会出错呢。
   还有就是,ADODataSet在Open的时候是正常的,但在执行adoDataSet.RecordCount的时候提示以上错误!
   高人,帮帮忙呀,快崩溃了

解决方案 »

  1.   

    adoDataSet.MoveLast;
    adoDataSet.MoveFirst;
    然后再访问adoDataSet.RecordCount看看。
    极有可能是Cursor的类型不支持回翻。如果是的,现象可能是adoDataSet.MoveLast是正常的,但是adoDataSet.MoveFirst;
      

  2.   

    adoDataset.last;
    adoDataset.first;
    没有出错,但在执行adoDataset.recordcount还是出错。
    在单步调试时,取adoDataset.recordcount出来,单独跟踪它的值是‘Delphi exception EOleException at $8B2F94D’但adoDataset这个值好像是正常的。
      

  3.   

    http://blog.csdn.net/ddangerous169/archive/2006/04/24/675496.aspx