天天看點

關于Win7 64位系統通過ODBC通路Access的一點經驗

最近趁着工作相對清閑,把電腦的作業系統重裝了,由原來的XP換成了Win7(64位),結果遇到一系列的應用資料通路問題。

問題1:自己用VS2010編寫的很多小程式在Win7下運作出現錯誤,經過核實,出錯的環節都是通路Access資料庫。

問題2:自己經常用的分析工具Knime,在讀取Access資料庫時提示出錯(Knime是64位)。

為了解決上述問題,上網搜尋了一番,初步弄清楚問題的原因。

解決方法1:對程式重新編譯,目标平台選擇x86就可以了,這個方法可以解決問題1,操作很簡單。

存在問題:需要有程式的源代碼,能夠自己重新編譯,是以對于問題2就無能為力了。

要在Win7上安裝64位的ODBC驅動,最簡單的辦法就是安裝64位的Office,但我們前面已經安裝了32位的Office,能不能不安裝64位Office直接安裝ODBC驅動?

方法也有,那就是安裝Microsoft Access Engine,這個程式從微軟官網下載下傳下來叫AccessDatabaseEngine_x64.exe。

不過新的問題又來了,安裝AccessDatabaseEngine_x64.exe時,程式也會檢測提示你已安裝了32位的Office,不能繼續安裝。

這個時候你需要對該程式的安裝包動動小手術,先去微軟下載下傳一個Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 ,下載下傳下來的程式叫winsdk_web.exe。

安裝winsdk_web.exe,然後從安裝目錄找到Orca.msi,具體的位置忘記了,可以搜尋下。我們真正的目的就是要這個Orca,是一個MSI檔案編輯器。運作Orca.msi安裝。

接下來處理安裝程式,先用Winrar把AccessDatabaseEngine_x64.exe解壓縮,不能直接右鍵解壓縮,要先運作Winrar,然後把AccessDatabaseEngine_x64.exe拖過去,就可以解壓縮了,解完壓縮有兩個檔案,其中一個是msi檔案,叫AceRedist.msi,這時運作Orca程式,把AceRedist.msi打開,在左邊Tables裡面找到LaunchCondition項,然後在右邊Condition裡找到BLOCKINSTALLATION,把該條删除,然後儲存。

接下來再運作AceRedist.msi,這回就不會提示已經安裝了32位Office了,順利安裝結束,64位ODBC驅動就有了。

這次再運作Knime就沒問題了,方法2的操作比較麻煩一些,不過用到的工具都是微軟源生的,而且一次處理好,下次可以直接重用。

我把已弄好的 ACEREDIST.MSI 放在網盤了:

<a href="http://pan.baidu.com/s/1eS6zMro" target="_blank">http://pan.baidu.com/s/1eS6zMro</a>

本文轉自 bilinyee部落格,原文連結:    http://blog.51cto.com/ericfu/1876729    如需轉載請自行聯系原作者