错误:"找不到可安装的ISAM"

cLF*_*aVA 34 excel ms-access vba connection-string

我在Excel工作簿中编写了一些VBA代码,以从桌面上同一目录中的Access数据库中检索数据.它在我的机器和运行Windows XP的其他几台机器上运行良好,但是当我们在Vista机器上测试时,我们遇到以下错误:

找不到可安装的ISAM

我在网上做了很多搜索,但似乎找不到具体的答案.连接字符串似乎很好,正如我所提到的,它适用于多台机器.

有谁知道是什么原因引起的?我的连接字符串如下:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\ptdb\Program Tracking Database.mdb;
Run Code Online (Sandbox Code Playgroud)

谢谢

小智 67

周围放置单引号Extended Properties:

OleDbConnection oconn = 
    new OleDbConnection(
        @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;';");
Run Code Online (Sandbox Code Playgroud)

尝试一下,它确实有效.

  • 凉.它也适用于`Microsoft.ACE.OLEDB.12.0`提供程序和`Excel 12.0 xml`扩展属性.谢谢! (2认同)
  • 谢谢,这为我解决了一个奇怪的问题。请注意,如果结果中出现神秘的缺失数据,则需要 IMEX=1 标志。 (2认同)

BIB*_*IBD 17

尝试在数据源周围放置单引号:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source='D:\ptdb\Program Tracking Database.mdb';
Run Code Online (Sandbox Code Playgroud)

问题往往是白色空间,它对解析器有意义.

如果您有其他属性(例如,扩展属性),则它们的值也可能必须用单引号括起来:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source='D:\ptdb\Program Tracking Database.mdb'; Extended Properties='Excel 8.0;HDR=YES;IMEX=1;';
Run Code Online (Sandbox Code Playgroud)

你也可以使用双引号; 然而,你可能不得不逃避它们,而且我发现算法中的痛苦比使用单曲更多.