请高手指点为何ADO连接Excel后无法再连接ACCESS!!!
我的程序是将Excel中的数据导入ACCESS中,其中用List作为中转,以便检查数据有无错误,即先导入List中,然后再从List导入ACCESS中。我在用ADO连接Excel成功,将数据导入List之后,再用ADO连接ACCESS总是连接不上,而不连接Excel时连接ACCESS却成功了,部分代码如下,请高手指点原因在哪里?
***连接Excel:
void CMainFrame::OnExcelImport()
{
CManagerDoc* pDoc = (CManagerDoc*)GetActiveDocument();
//选择要导入的Excel文件
CString strFileName;
CFileDialog dlgOpen(true,0,0,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"Excel Files (*.xls)|*.xls|All Files (*.*)|*.*||",0);
if( dlgOpen.DoModal() ==IDOK)
strFileName = dlgOpen.GetPathName();
else
return;
//连接字符串
CString strConn;
strConn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+strFileName+";Extended Properties = Excel 8.0;";
HRESULT hr;
try
{
//创建Connection对象
hr=pDoc->m_pConnection.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr))
{
//连接数据库
pDoc->m_pConnection->ConnectionTimeout = 1;
pDoc->m_pConnection->Open(_bstr_t(strConn),"","",adModeUnknown);
}
}
catch(_com_error e)//捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);//显示错误信息
}
pDoc->m_pRecordset.CreateInstance(__uuidof(Recordset));
CString strSql = "select * from [Sheet1$]";
m_pUsersView->ShowExcelUsers(strSql); //将Excel中的数据导入到List中
//关闭连接
if(pDoc->m_pConnection->State== adStateOpen)
{
// AfxMessageBox("UNCLOSE");
pDoc->m_pConnection->Close();
}
***连接ACCESS:
void CMainFrame::OnDbImport()
{
CManagerDoc* pDoc = (CManagerDoc*)GetActiveDocument();
HRESULT hr;
try
{
//创建Connection对象
hr=pDoc->m_pConnection.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr))
{
//连接数据库
hr=pDoc->m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=meter.mdb",
"","",adModeUnknown);
if(SUCCEEDED(hr))
{
AfxMessageBox("连接上ACCESS");
m_pUsersView->AddListtoDB(); //将List中的数据导入ACCESS数据库中
}
else
AfxMessageBox("未连接上ACCESS");
}
}
catch(_com_error e)//捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);//显示错误信息
}
pDoc->m_pRecordset.CreateInstance(__uuidof(Recordset));
}
请高手指点为何ADO连接Excel后无法再连接ACCESS。