2010年4月8日 星期四

Microsoft.Jet.OLEDB.4.0 提供者並未登錄於本機電腦上

最近開發的一支 .NET程式,使用OLEDB 4.0去開啟Excel檔

但發現一個問題

該程式執行於Windows 7 x64版本的電腦上

會出現「Microsoft.Jet.OLEDB.4.0' 提供者並未登錄於本機電腦上」的問題

錯誤訊息如下圖:

clip_image002

其原因是:Microsoft Jet 沒有支援 64 位元的版本的Driver

解決方式:

不要將 .NET應用程式編譯為 64 位元(x64)或「Any CPU」(預設值) 的應用程式

而必須編譯為 32 位元(x86)的應用程式,才可以使用 Microsoft Jet

請參考:http://social.msdn.microsoft.com/Forums/zh-TW/238/thread/c55decf8-53a4-4c82-8aa3-d9f3e6c627c0

若使用Visual Studio,請在方案總管中的專案節點上按右鍵,然後選擇「屬性」以打開專案屬性視窗

請點選左方的「建置」頁籤,然後在平台目標旁的下拉方塊中,選擇「x86」,如下圖:

clip_image004

然後再編譯你的程式,你的程式應該就可正常執行。

8 則留言:

瑋婷 提到...

我是WIN7 使用VB2008 但是建置上沒有 目標平台可以改X86耶 請問還能怎麼改

阿彬 提到...

您好,VB.NET的方式略有不同。

操作如下:

請在「方案總管」中,在方案上按右鍵,然後在右鍵功能表中選擇「組態管理員」。此時會出現「組態管理員」視窗,預設會有「Debug」和「Release」兩種組態,每種組態預設的平台為「Any CPU」。

如果你要改為「x86」,請點選「平台」下拉方塊,然後選擇「新增」,當出現「新增專案平台」對方話塊時,請點選「新平台」下拉方塊,然後選擇「x86」,按下「確定」,再按下「關閉」。

淘氣阿丹 提到...

你好 我現在也遇到了你所PO的這個問題
我作業系統是用win7 x64 開發平台是Microsoft Visual Studio 2008
我找不到可以選的地方耶= =
如圖[img]http://wsm90177.myweb.hinet.net/01.jpg[/img]

阿彬 提到...

1. 請點選標準工具中的「方案組態」下拉方塊,然後選擇「組態管理員」。如下圖:
http://img818.imageshack.us/img818/9089/3e56b726a8784cfeada0a1e.png

2. 點選「使用中的方案平台」下拉方塊,然後選擇「新增」,如下圖:
http://img829.imageshack.us/img829/1417/47eecc1abebf4baaaf165b6.png
3. 當出現「新增方案平台」對話方塊時,請在上方的「輸入或選擇新平台」下拉方塊選擇「x64」,然後按確定,再按「關閉」即可。如下圖:
http://img251.imageshack.us/img251/4138/6f30363a9dde47aa855a0f5.png

think 提到...

我是WIN7 使用VB2008 我在「方案總管」中,在方案上按右鍵,找不到「組態管理員」。請問該如何

阿彬 提到...

請確定你是在「方案」上按右鍵,而非「專案」。若你找不到「方案」,請點選「工具」功能表,然後點「選項」,點左邊的「專案和方案」,然後勾選右邊的「永遠顯示方案」,即可在方案總管中看到方案。

gary 提到...

Dear
請問一下,我原本是用Any CPU後來改X86對原來的程式會有影響嗎....

阿彬 提到...

Dear gary,

在 x86 平台上沒有影響。在 x64 平台上,則會以 x86 方式執行,所以無法運用 x64 特有的功能。如果你不需要用到 x64 的功能,則執行上沒有影響。