【发布时间】:2016-02-09 14:55:54
【问题描述】:
我们使用 Excel 2013 创建了一个 Excel 应用程序,该应用程序连接到存储在网络驱动器上的 Access 2013 数据库(所有员工都可以访问)。它对所有数据连接使用“Microsoft Access Database”连接类型,我在 Excel 2013 中运行了反向兼容性检查,没有发现任何问题。我还使用 VBA 代码写回 Access 数据库。所有连接都使用 Microsoft.ACE.OLEDB.12.0 提供程序。
该应用程序适用于任何使用 Excel 2013 的人,但是,我们的目标受众是 2010 年和 2013 年的混合体,因此它需要同时适用于两者。
当使用 2010 的用户打开应用程序时,他们首先会收到提示:
"Do you want to connect to '\\database address.accdb'?"
如果你说是然后继续尝试连接它会给你一个错误:
"Test connection failed because of an error in initializing provider. Your network access was interrupted. To continue, close the database, and then open again."
我也尝试在 Excel 2010 中创建连接,但这导致在使用 2013 时出现连接问题。
因此,简而言之,我们根本无法创建适用于 2010 和 2013 Excel 版本的 Access 2013 数据库的通用连接。
每个数据连接中的连接字符串如下:
Provider=Microsoft.ACE.OLEDB.12.0
;User ID=Admin
;Data Source='file name'
;Mode=Share Deny None
;Extended Properties=""
;Jet OLEDB:System database=""
;Jet OLEDB:Registry Path=""
;Jet OLEDB:Engine Type=6
;Jet OLEDB:Database Locking Mode=1
;Jet OLEDB:Global Partial Bulk Ops=2
;Jet OLEDB:Global Bulk Transactions=1
;Jet OLEDB:New Database Password=""
;Jet OLEDB:Create System Database=False
;Jet OLEDB:Encrypt Database=False
;Jet OLEDB:Don't Copy Locale on Compact=False
;Jet OLEDB:Compact Without Replica Repair=False
;Jet OLEDB:SFP=False
;Jet OLEDB:Support Complex Data=False
;Jet OLEDB:Bypass UserInfo Validation=False
;Jet OLEDB:Limited DB Caching=False
;Jet OLEDB:Bypass ChoiceField Validation=False
任何帮助将不胜感激!
【问题讨论】:
-
您的连接字符串有
Provider=Microsoft.ACE.OLEDB.15.0...我猜Office 2010 应用程序不知道该字符串。 -
我同意 Hans Up 的观点。尝试改用 OLEDB.12。
-
我有一个 15 不小心进去了,做了更改,但仍然无法正常工作。
标签: excel ms-access connection-string compatibility backwards-compatibility