【发布时间】:2019-02-12 12:39:27
【问题描述】:
我正在尝试通过 Microsoft ACE OLEDB 12.0 连接到 MS Access 数据库。我想让它同时在 Excel 2010 和 Excel 2013 上运行,以便最终用户只需刷新连接即可获取新数据。问题是 Excel 2013 向连接字符串添加了 2 个属性,导致 Excel 2010 用户无法使用该连接。有没有办法阻止 Excel 2013 添加这些,或者让 Excel 2010 忽略它们?具有连接的文件将位于网络驱动器上,可供 Excel 2010 和 2013 用户使用。
Excel 2010:
Provider=Microsoft.ACE.OLEDB.12.0;
User ID=USER;
Data Source=path1.mdb;Mode=Read;
Extended Properties="";
Jet OLEDB:System database=path2.mdw;
Jet OLEDB:Registry Path="";
Jet OLEDB:Engine Type=5;
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
Excel 2013:
Provider=Microsoft.ACE.OLEDB.12.0;
User ID=USER;
Data Source=path1.mdb;Mode=Read;
Extended Properties="";
Jet OLEDB:System database=path2.mdw;
Jet OLEDB:Registry Path="";
Jet OLEDB:Engine Type=5;
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
如您所见,Excel 2013 又添加了 2 行,导致此连接无法使用。我考虑过在刷新数据之前添加 VBA 代码来更改连接字符串,但如果有办法不让 vba 参与进来,那就太好了。
编辑: 当在 Excel 2010 中使用这些额外的行时,Excel 会出现“找不到可安装的 ISAM”错误。
【问题讨论】:
-
您遇到错误了吗?通常,这些行不会造成任何问题,它们只是传递给 Access 数据库引擎,您的 Excel 安装不会影响任何事情。
-
当在 Excel 2010 中使用这些额外的行时,它会给出“找不到可安装的 ISAM”错误
-
您是如何生成和应用这些连接字符串的? (我原以为你可以编辑并保存它们。)
-
还值得向读者指出您使用的是 Access 2003 文件格式数据库。
-
@AndyG 连接字符串是在完成连接设置后生成的。在这个过程中,我只填写了用户 ID、数据源和系统数据库字段,其余的设置为默认值。我知道删除这些额外的行可以解决问题,但这只是暂时的,当 Excel 2013 用户刷新此连接时,它会再次添加它们。如原始帖子中所述,带有连接的文件由 E2010 和 E2013 用户使用,因此每次 E2010 在 E2013 之后使用它时,他都必须从每个连接的定义中删除这些行
标签: excel ms-access excel-2010 oledb excel-2013