2

我维护一个 .NET 3.5 应用程序(使用 Visual Studio 2008),它使用 Microsoft.ACE.OLEDB.12 的连接字符串提供程序和一个格式为 Access97 的 MDB 文件调用 OleDbConnection.Open()。此应用程序要求安装 Access 2007 Runtime。

如果安装了 Office 2007 运行时但未安装 Access 2010 运行时,则对 OleDbConnection.Open() 的调用成功。一旦安装了 Access 2010 Runtime(例如,用户安装了 Office 2010),调用就会失败。错误消息是“无法打开使用以前版本的应用程序创建的数据库”。

  1. 从阅读 StackOverflow 和其他地方的其他线程来看,Access 2010 似乎不支持读取或转换 Access97 MDB 文件。一旦安装了 Access 2010 Runtime(不卸载 Access 2010),是否无法调用 Office 2007 Runtime 的功能。

  2. 另一种方法是以编程方式从 Access97 MDB 转换为 Access 2010 可以读取的更高格式。我尝试调用: Microsoft.Office.Interop.Access.Application.ConvertAccessProject() 在 Microsoft Access 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 to Access 2007”)但没有任何结果。

关于解决这个问题的最佳方法有什么想法吗?

4

1 回答 1

0

我会投票支持从 A97 格式转换为 Jet 4,这将在很长一段时间内得到广泛支持(即使 ACE 自 2007 年以来就已推出)。

于 2011-09-24T21:43:59.413 回答