请教大家,有一个sql语句。
先构造要查询的语句:
CString m_strQuery = "select a.StartTime,'c'=(select sum(b.Number) from TableName b where b.StartTime<=a.MeetingStartTime and b.EndTime >=a.StartTime ";
m_strQuery +="and b.Type ='IPConf'and b.StartTime>'2009-04-10') from TableName a where a.StartTime>=convert(datetime,convert(varchar(20),dateadd(dd,-1,getdate()),111)) ";
m_strQuery +="and a.StartTime<convert(datetime,convert(varchar(20),getdate(),111)) and a.Type ='IPConf' group by a.StartTime order by c DESC"; 打开查询:
  m_pRecordset->Open(_bstr_t(m_strQuery), _variant_t((IDispatch *) m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText) ; 
 错误信息是:IDispatch error #31051. 直接用这句在SQL Advantage里查询没问题,可以出结果。2. 程序里换一个短一点的语句,编译后没问题。请教大家,是不是ADO查询语句不能太长呢,还是程序中我这句有什么问题呢,谢谢!

解决方案 »

  1.   

    try
    {}
    catch(_com_error& e)
    {
    e.Description();
    }
      

  2.   

    提示是:
    ODBC 驱动程序不支持所需的属性。请帮忙分析下是什么原因
      

  3.   

    try
    {
    hr = m_pConnection.CreateInstance("ADODB.Connection");
    if (SUCCEEDED(hr))
    {
    CString strConnect;
    strConnect.Format("Driver={Sybase System 11};Srvr='%s';Uid='%s';Pwd='%s';DB='%s'",szServerName,szUserName,szUserPwd,szDatabaseName);
    hr = m_pConnection->Open(strConnect.AllocSysString(),"","",adModeUnknown);

    bSuccess = true;
    }
    }
    catch (_com_error e)
    {
    if (m_pConnection->State)
    m_pConnection->Close();
    CString errormessage;
    errormessage.Format("连接数据库失败!\r\n错误信息%s",e.ErrorMessage());
    AfxMessageBox(errormessage);

    }
      

  4.   


      m_pRecordset = m_pConnection->Execute((_bstr_t)m_strQuery,&RecordsAffected,adCmdText); 换成这样查询,提示是:[INTERSOLV][ODBC   SQL   Server   driver][SQL   Server]ct_connect():   user   api   layer:   internal   Client   Library   error:   Read   from   the   server   has   timed   out  高手请帮忙。
      

  5.   

    打个断点看看 m_strQuery 到底是什么内容吧