2011-08-19 51 views
2

我維護一個使用Microsoft的連接字符串提供程序調用OleDbConnection.Open()的.NET 3.5應用程序(使用Visual Studio 2008) .ACE.OLEDB.12和格式爲Access97的MDB文件。此應用程序要求安裝Access 2007 Runtime。Access 2010運行時導致.NET OleDbConnection.Open()失敗,並使用Access97 MDB文件

如果安裝了Office 2007 Runtime並且未安裝Access 2010 Runtime,則調用OleDbConnection.Open()將會成功。一旦安裝Access 2010 Runtime(例如,用戶安裝Office 2010),呼叫就會失敗。錯誤消息是「無法打開使用以前版本的應用程序創建的數據庫」。

  1. 從閱讀StackOverflow上其他線程和其他地方,看來Access 2010中不支持讀取或轉換ACCESS97 MDB文件。一旦安裝了Access 2010 Runtime,是否沒有辦法調用Office 2007 Runtime的功能(不會卸載Access 2010)。

  2. 另一種方法是通過編程從ACCESS97 MDB轉換爲可以通過Access 2010中讀出我已經打過電話以後格式: Microsoft.Office.Interop.Access.Application.ConvertAccessProject()在Microsoft實施訪問14.0對象庫;與各種版本的Access安裝,但我得到一個COM錯誤(80080005服務器執行失敗)。

  3. 我也試着在我的應用程序中使用/ Convert標誌啓動msaccess.exe。這會導致Access 2000打開但出現錯誤消息(「Microsoft Access無法轉換...」)。

  4. 順便說一句,MDB數據庫不包含任何「複雜」,沒有關係數據,沒有宏,沒有安全等,只是平坦的記錄。

  5. 我在Allen Browne的網站(http://allenbrowne.com/ser-48.html「Converting from Access97」和http://allenbrowne.com/Access2007.html「Converting Access 2007」)上找到了一些有用的編程提示,但沒有發現任何內容。

有關解決此問題的最佳方法的任何想法?

回答

0

我會投票支持從A97格式轉換爲Jet 4,這將會在很長一段時間內得到廣泛支持(即使ACE自2007年以來已經出來)。

+0

我必須支持Access 97,因爲它是我必須使用的幾個遺留系統中的原則數據文件?我們是否說沒有辦法做到這一點? – Jordan

相關問題