我执行SQL语句( select sum(cjsl) from table,select count(*) from table)等语句报非法的描述器索引,而执行(select * from table)没问题,有谁遇到过啊
谁帮我找出问题我给150分.......!!!

解决方案 »

  1.   

    是不是应该这样?
    select sum(cjsl),count(*) from table
      

  2.   

    我试过FOXPRO,和SQL通过ODBC定义的DSN数据源连接,结果都一样
    执行select sum(cjsl),count(*) from table也报非法的描述器索引
    我是用的MFC ODBC.你们执行类似语句不报错吗?!
      

  3.   

    用的是CRecordSet吧,只能select * from tb,想知道怎么解决吗,来问我吧!
      

  4.   

    必需要字段名,你可以如下:
    select sum(cjsl) as total from table
    select count(*) as count from table
      

  5.   

    ffit不用卖关子吧,知道就贴出来嘛
      

  6.   

    用select sum(cjsl) as total from table
    也不行我试过的!!
    ffit 老兄说的对是用的CRecordSet,你有什么好办法可以解决我把分全给你!!!!!
      

  7.   

    和我的问题一样,我头疼了快一个月了,帖子都挂了1个月了,关注,关注,不要忘了解决告诉我一声,信箱:[email protected]
    http://expert.csdn.net/Expert/topic/1350/1350524.xml?temp=.2760889
    ffit快帖出来,我也给你加分,到我的帖子上,全部给你!!!!!!!
      

  8.   

    可能是不能真确定位,你试试用两个CRecordSet变量分别操作.
      

  9.   

    不行吧,连接Access可以的,但是连Oracle就不行了。
      

  10.   

    告诉大家我的办法:
    如果只选一个字段:如select cjsl from table或select count(*)或select sum(cjsl)
    对生成的CRecordSet的派生类(就是对应的表)作如下修改:
    在.h中,删除其他的变量,只保留m_cjsl
    在.cpp中,构造函数中变量的初值同样只保留m_cjsl,同时修改m_nFields = 1;
    在DoFieldExchange(CFieldExchange* pFX),同样也只保留一个即可.
    编译运行.
    如果是count(*),定义一个long的变量,参照上面的修改进行修改.
    如果是select count(*),sum(cjsl) from tb这种两个以上的,同样保留2个变量就可以了,m_nFields = n.
    这种方法其实很麻烦,相当一个SQL语句要对应一个类,没办法.
    产生这种现象的原因,我想应该是CRecoedSet的问题,因为一次SQL查询如果只返回一个列,那其他的列在进行DoFieldExchange(CFieldExchange* pFX)时势必出错.
    这也是本人初学CRecordSet时百思不得其解的问题.
      

  11.   

    怎么连接Access就没有问题呢?
      

  12.   

    ffit 老兄还是你厉害,我找了好久都没有找到问题的原因。本人对你的敬仰有如
    黄海之水滔滔不绝,,,