在SQL manager里执行语句select count(distinct left(m_date,6)) as ym from cjmx
看结果如何

解决方案 »

  1.   

    哦,忘记说了,在SQL manager里执行语句select count(distinct left(m_date,6)) as ym from cjmx没有问题,能查到正确的结果!
      

  2.   

    CString str;
    str.Format("select count(distinct left(m_date,6)) as ym from cjmx")
    //本意是从cjmx表中统计共有哪几个月的数据(前6位即为四位年两位月)
    m_recordset=m_adoconn.GetRecordSet(_bstr_t(str));--没看见执行sql语句
      

  3.   

    m_recordset=m_adoconn.GetRecordSet(_bstr_t(str));其中GetRecordSet()就是执行sql语句后得到结果的函数
      

  4.   

    而且其中的str就是被执行的sql语句的字符串
      

  5.   

    你执行的这个语句没有返回数据集,因为你只是读取数目,所以会出错。
    m_recordset必须是有数据的集合,而不是LZ的那种使用方法。
      

  6.   

    执行这种语句可以使用m_adConn的执行方法来处理
      

  7.   

    我说过了GetRecordSet(_bstr_t(str));就是获取结果集的函数,不要怀疑函数有什么问题,也不要怀疑处理的方法存在问题。
      现在的问题就是赋予了select count(distinct left(m_date,6)) as ym from cjmx的字符串str和C++有什么关键字类的冲突还是语句不兼容什么的问题。如果str赋值成select m_date as ym from cjmx后,程序不再报错,也能获取到正确的结果
      

  8.   

    而select count(distinct left(m_date,6)) as ym from cjmx在查询分析器中执行能得到正确的结果,但是不知道为什么写到程序中后就报“语法错误(操作符丢失)在查询表达式'count(distinct left(m_date,6))'中”,而且程序已经提示得很明确是在count(distinct left(m_date,6))这一段有丢失操作符的现象,具体丢失了那些,我也不知道,但是根据经验,我也碰到过类似报错的问题,譬如select * from m_table where m_name like '李%'(查找m_talbe表中姓名以李开头的所有人),这个语句在SQL中是正确的,但是VC中不能这样写,而必须写成select * from m_table where m_name like '李%%'才正确,当然,这个例子的解决比较清楚,而相对这个帖子的问题就难些,以至于还没找到是什么原因,请大家赐教
      

  9.   

    1。select m_date as ym from cjmx这个语句肯定没有错误,当然可以使用。
    2。使用select count(*) as ym from cjmx还可以吗?
      

  10.   

    shanhqk(山)
    麻烦你们少说费话,你自己试试select count(distinct left(m_date,6)) as ym from cjmx,不知道的宁愿你们不说,要说就要能解决问题
      

  11.   

    http://blog.csdn.net/wang921718/archive/2007/07/19/1698490.aspx
    看看这里,我的BLOG,希望能对你有帮助!