我维护一个使用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),呼叫就会失败。错误消息是“无法打开使用以前版本的应用程序创建的数据库”。
从阅读StackOverflow上其他线程和其他地方,看来Access 2010中不支持读取或转换ACCESS97 MDB文件。一旦安装了Access 2010 Runtime,是否没有办法调用Office 2007 Runtime的功能(不会卸载Access 2010)。
另一种方法是通过编程从ACCESS97 MDB转换为可以通过Access 2010中读出我已经打过电话以后格式: Microsoft.Office.Interop.Access.Application.ConvertAccessProject()在Microsoft实施访问14.0对象库;与各种版本的Access安装,但我得到一个COM错误(80080005服务器执行失败)。
我也试着在我的应用程序中使用/ Convert标志启动msaccess.exe。这会导致Access 2000打开但出现错误消息(“Microsoft Access无法转换...”)。
顺便说一句,MDB数据库不包含任何“复杂”,没有关系数据,没有宏,没有安全等,只是平坦的记录。
我在Allen Browne的网站(http://allenbrowne.com/ser-48.html“Converting from Access97”和http://allenbrowne.com/Access2007.html“Converting Access 2007”)上找到了一些有用的编程提示,但没有发现任何内容。
有关解决此问题的最佳方法的任何想法?
我必须支持Access 97,因为它是我必须使用的几个遗留系统中的原则数据文件?我们是否说没有办法做到这一点? – Jordan