2011-08-19 69 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

相关问题