try{  
           IJetEnginePtr  jet(__uuidof(JetEngine));  
           _bstr_t  s1  =  "Provider=Microsoft.Jet.OLEDB.4.0;Password=;"  
"Data  Source=D:\\DB\\data.mdb;Persist  Security  Info=True;"  
"Jet  OLEDB:Engine  Type=5;Jet  OLEDB:Database  Password=datasoft";  
           _bstr_t  s2  =  "Provider=Microsoft.Jet.OLEDB.4.0;Password=;"  
"Data  Source=D:\\temp.mdb;Persist  Security  Info=True;"  
"Jet  OLEDB:Engine  Type=5;Jet  OLEDB:Database  Password=datasoft";  
           jet->CompactDatabase(s1,s2);  
           bCompactMDB  =  TRUE;  
           }  
           //  捕捉异常  
           catch(_com_error  e)  
           {  
                       CString  errormessage  =  _T("");  
                       errormessage.Format(STR_ADO_COMPACT_FAILURE,  e.ErrorMessage());  
                       ::AfxMessageBox(errormessage);//  显示错误信息  
           }  
 
出现错误信息:IDispatch  error  #3105  
为啥啊????????????????????????????

解决方案 »

  1.   

    To validate your connect strings, compact the database using Microsoft Access, and use your connect strings to open them.
      

  2.   

    m_pConnection->Open(s1, "", "", adModeUnknown);
    这条成功了啊~
      

  3.   

    _bstr_t s1 = "Provider=Microsoft.Jet.OLEDB.4.0;Password=;" 
    Password=;这一项是不是多余的
      

  4.   

    我用的是XP sp2 可以吗?
    是不是版本的问题?现在的系统里MDAC是2.8的~
      

  5.   

    你的连接字符串有问题。参考以下示例:
    hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=api.mdb;
       User ID=admin;Password=;Jet OLEDB:Database Password=0189","","",adModeUnknown);
      

  6.   

    问题解决结个贴!
    谢谢大家的热心回答~~~~~~Persist Security Info=True  时不能压缩