1.问题一 
CDatabase m_database;//数据源
    CMonitorData *m_recordSet;//记录集
        try
    {
        m_database.Open(FALSE,FALSE,FALSE,"ODBC;DSN=Centralized;UID=sa;PWD=123456;SERVER=127.0.0.1,1433");
    }
    catch(CDBException ex)
    {
        MessageBox(ex.m_strError);
    }
    m_recordSet=new CMonitorData(&m_database);
CString m_strQuery="select MacAddress,LineName,Status from monitordata " 
    "where convert(char(10),datetime,101)='2011-04-27' and MacAddress='74060B5A' order by datetime desc";
    try{
    m_recordSet->Open(AFX_DB_USE_DEFAULT_TYPE,m_strQuery,CRecordset::dynaset);
    }
    catch(CDBException ex){
        AfxMessageBox(ex.m_strError);//这里报错了呀,难道MFC的ODBC编程不可以这样写SQL查询语句吗?
    }
2.问题二
  CRecorder 子类中定义的field必须查询的的时候,全部用到吗?否则就会报错吗?
  有没有什么办法可以不全部查询呀?
3.问题三
  CRecorder::GetRecordCount()怎么总是返回1,而不是实际查询到的行数呀?

解决方案 »

  1.   

    m_recordSet=new CMonitorData(&m_database);创建成功了?
    SQL语句拿到查询分析器中执行试试!
    显示什么错误?
      

  2.   

    创建成功了呀,就是显示显示无效的描述器索引?
    查询语句换成CString m_strQuery="select * from monitordata ";
    难道是CMonitorData所有列多必须查询才不会报错吗?有什么办法解决吗?
    如果依旧使用,而且不改变CMonitorData中的列?
    CString m_strQuery="select MacAddress,LineName,Status from monitordata " 
        "where convert(char(10),datetime,101)='2011-04-27' and MacAddress='74060B5A' order by datetime desc";
      

  3.   

    你把SQL语句拿到查询分析器中去执行,结果集的列,跟你查询的列,不对应,可能没有你要查询的列!
      

  4.   

    你把SQL语句拿到查询分析器中去执行,结果集的列,没有CMonitordata的列多,结果的集的列是CMonitordata列的子集!
      

  5.   

    查询集合和CRecordset中不匹配!!