我的源代码如下:
bool CDataProc::InitData()
{

m_pConnect.CreateInstance(__uuidof(Connection));
m_pRecordSet.CreateInstance(__uuidof(Recordset));
try
{
m_pConnect->Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\HotelData.accdb","","",adModeUnknown); }
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
AfxMessageBox(_T("打开数据库失败!"));
} return true;
}RoomInfo* CDataProc::GetRoomInfo()
{
RoomInfo *pRoomInfo;
pRoomInfo = new RoomInfo;
_variant_t var; try
{

OpenRes(_T("select * from RoomInfo"));
while (!m_pRecordSet->adoEOF)
{
var = m_pRecordSet->GetCollect(_T("房号")); //此处出错
if (VT_NULL == var.vt)
{
pRoomInfo->strNum = (LPCTSTR)_bstr_t(var);
}

m_pRecordSet->MoveNext();
}
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
} //CloseRes(); return pRoomInfo;
}bool CDataProc::CloseRes()
{
m_pRecordSet->Close();
m_bOpenRes = false; return true;
}bool CDataProc::OpenRes(CString strSql)
{
if (false == m_bOpenRes)
{
m_pRecordSet->Open((_variant_t)strSql,m_pConnect.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
m_bOpenRes = true;
}


return true;
}
上面会报错:Onknown error 0x800A0CC1 ,望各位大虾请教

解决方案 »

  1.   

    http://blog.csdn.net/zyq5945/archive/2010/04/29/5541280.aspx
    var   =   m_pRecordSet-> GetCollect(_T( "房号 "));   //此处出错 
    估计是字段没写对,用下面的方法捕捉错误,打印更详细一些估计就知道原因了。
    //打印调用ADO控件时产生的详细错误信息
    void dump_com_error(_com_error &e)
    {
    CString ErrorStr;
    _bstr_t bstrSource(e.Source());
    _bstr_t bstrDescription(e.Description());
    ErrorStr.Format( "\n\tADO Error\n\tCode = %08lx\n\tCode meaning = %s\n\tSource = %s\n\tDescription = %s\n\n",
    e.Error(), e.ErrorMessage(), (LPCTSTR)bstrSource, (LPCTSTR)bstrDescription );
    //在调试窗口中打印错误信息,在Release版中可用DBGView查看错误信息
    ::OutputDebugString((LPCTSTR)ErrorStr);
    #ifdef _DEBUG
    AfxMessageBox(ErrorStr, MB_OK | MB_ICONERROR);
    #endif
    }try
    {
    //你的ADO代码
            
    }
    catch(_com_error& e)
    {
    dump_com_error(e);