用VS2013寫的MFC程式,MFC用ado連接了access資料庫,生成exe后,將exe與.mdb的資料庫檔案一起拷到其他電腦運行,該電腦也是64位,安裝了access,但是運行后彈出連接資料庫失敗,最后點擊關閉后出現debug error

::CoInitialize(NULL);
m_pConnection.CreateInstance(_uuidof(Connection));
try
{
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\\HistoryFault.mdb", "", "", adModeUnknown);
}
catch (_com_error e)
{
CString errormessage;
errormessage.Format("連接資料庫失敗!\r\n錯誤資訊:%s", e.ErrorMessage());
AfxMessageBox(errormessage);///顯示錯誤資訊
return FALSE;
}
uj5u.com熱心網友回復:
m_pConnection.CreateInstance 要判斷回傳值是否是 S_OK可以在其它機器上安裝VS的 遠程除錯器 進行遠程除錯
uj5u.com熱心網友回復:
在64位Windows下:64位exe和dll在目錄c:\windows\system32目錄下;
32位exe和dll在目錄c:\windows\syswow64目錄下;
所以要注意:
在win64位系統下注冊32位ocx或dll需要將32位ocx或dll拷貝到c:\windows\syswow64\目錄下。
且注冊要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
在win64位系統下設定32位程式使用的資料庫別名要用c:\windows\syswow64\cliconfg.exe
在win64位系統下設定32位程式使用的系統DSN要用c:\windows\syswow64\odbcad32.exe
uj5u.com熱心網友回復:
問題解決了,要用相對路徑連接access,CString sPath,m_strPath;
GetModuleFileName(NULL, sPath.GetBufferSetLength(MAX_PATH + 1), MAX_PATH);
sPath.ReleaseBuffer();
int len = sPath.ReverseFind('\\') + 1;
m_strPath = sPath.Left(len);
CString strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + m_strPath + "data\\" + "HistoryFault.mdb";
try
{
m_pConnection->Open(_bstr_t(strConnection),"", "", adModeUnknown);
}
但是生成的exe在32位系統上運行界面變大了,下面部分被桌面擋住了,搜了一下要配置VS的平臺,但是我的沒有x86選項,只有x64和arm,這個怎么解決
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/134114.html
標籤:數據庫
上一篇:如何將視窗在副屏上打開?
