我维护一个.NET 3.5应用程序(使用Visual Studio 2008),它使用Microsoft.ACE.OLEDB.12的连接字符串提供程序和格式为Access97的MDB文件调用OleDbConnection.Open()。此应用程序要求安装Access 2007 Runtime。
如果安装了Office 2007 Runtime并且未安装Access 2010 Runtime,则对OleDbConnection.Open()的调用会成功。安装Access 2010 Runtime后(例如,用户安装Office 2010),调用将失败。错误消息是“无法打开使用以前版本的应用程序创建的数据库。”
通过阅读StackOverflow和其他地方的其他线程,Access 2010似乎不支持读取或转换Access97 MDB文件。安装Access 2010 Runtime后,无法调用Office 2007 Runtime的功能(无需卸载Access 2010)。
另一种方法是以编程方式将Access97 MDB转换为Access 2010可以读取的更新格式。我试过调用: Microsoft.Office.Interop.Access.Application.ConvertAccessProject()在Microsoft Access 14.0对象库中实现;安装了各种版本的Access,但是我收到了COM错误(80080005服务器执行失败)。
我还尝试使用/ Convert标志在我的应用程序中启动msaccess.exe。这导致Access 2000打开但有一条错误消息(“Microsoft Access无法转换...”)。
顺便说一句,MDB数据库不包含任何“复杂”,没有关系数据,没有宏,没有安全性等,只有平坦的记录。
我在Allen Browne的网站上发现了一些有用的编程技巧(http://allenbrowne.com/ser-48.html“从Access97转换”和http://allenbrowne.com/Access2007.html“转换为Access 2007”)但没有任何内容已经淘汰。< / p>
有关解决此问题的最佳方法的任何想法?
答案 0 :(得分:0)
我会投票支持从A97格式转换为Jet 4,这将在很长一段时间内得到广泛支持(即使ACE自2007年以来已经推出)。