哦,忘记说了,在SQL manager里执行语句select count(distinct left(m_date,6)) as ym from cjmx没有问题,能查到正确的结果!
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语句
我说过了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后,程序不再报错,也能获取到正确的结果
而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 '李%%'才正确,当然,这个例子的解决比较清楚,而相对这个帖子的问题就难些,以至于还没找到是什么原因,请大家赐教
1。select m_date as ym from cjmx这个语句肯定没有错误,当然可以使用。 2。使用select count(*) as ym from cjmx还可以吗?
shanhqk(山) 麻烦你们少说费话,你自己试试select count(distinct left(m_date,6)) as ym from cjmx,不知道的宁愿你们不说,要说就要能解决问题
str.Format("select count(distinct left(m_date,6)) as ym from cjmx")
//本意是从cjmx表中统计共有哪几个月的数据(前6位即为四位年两位月)
m_recordset=m_adoconn.GetRecordSet(_bstr_t(str));--没看见执行sql语句
m_recordset必须是有数据的集合,而不是LZ的那种使用方法。
现在的问题就是赋予了select count(distinct left(m_date,6)) as ym from cjmx的字符串str和C++有什么关键字类的冲突还是语句不兼容什么的问题。如果str赋值成select m_date as ym from cjmx后,程序不再报错,也能获取到正确的结果
2。使用select count(*) as ym from cjmx还可以吗?
麻烦你们少说费话,你自己试试select count(distinct left(m_date,6)) as ym from cjmx,不知道的宁愿你们不说,要说就要能解决问题
看看这里,我的BLOG,希望能对你有帮助!