我已经写了一些VBA代码在Excel工作簿在桌面上相同的目录检索从Access数据库中的数据。它的工作原理在我的机器,并在运行Windows XP的其他几台机器上很好,但是当我们测试的一个Vista的机器上,我们遇到了以下错误:

  

找不到可安装ISAM

我已经做了一堆网上搜索的,但似乎无法找到一个具体的答案。连接字符串似乎是罚款,正如我所说,它可以在几台机器。

有没有人有任何想法可能是什么造成的?我的连接字符串如下:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\ptdb\Program Tracking Database.mdb;

由于

没有正确的解决方案

其他提示

围绕Extended Properties地点单引号:

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

试试,它确实有效。

尝试把周围的数据源单引号:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source='D:\ptdb\Program Tracking Database.mdb';

在问题常常是白色空间里面确实有意到解析器。

如果你有其他属性(例如,扩展属性),它们的值也可以具有被封闭在单引号:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source='D:\ptdb\Program Tracking Database.mdb'; Extended Properties='Excel 8.0;HDR=YES;IMEX=1;';

您同样可以使用双引号;然而,你可能要逃避他们,我觉得这比用单打多的疼痛算法的的。

你检查这 http://support.microsoft.com/kb/209805 ?特别是,你是否有Msrd3x40.dll。

您可能也想检查是否安装了最新版本的Jet:的http://支持。 microsoft.com/kb/239114

只需使用Jet OLEDB:您的连接的字符串中。 它解决了我。

一个例子如下:

"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=E:\Database.mdb;Jet OLEDB:Database Password=b10w"

我刚刚遇到了一个非常类似的问题。

和你一样,我的连接字符串出现正确的 - 事实上,完全相同的连接字符串是在其他情况下工作。

在问题被证明是一个缺乏资源。 19个超时20的,我会看到“找不到可安装ISAM”,但一次或两次(没有任何代码改变的话),这将产生“内存”代替。

重新启动机器“解决”这个问题(现在...?)。这件事发生在Windows XP中使用Jet版本4.0.9505.0。

我用这个更新一个excel 12 xlsx档案

        System.Data.OleDb.OleDbConnection MyConnection;
        System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
        MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source='D:\\Programming\\Spreadsheet-Current.xlsx';Extended Properties='Excel 12.0;HDR=YES;';");
        MyConnection.Open();
        myCommand.Connection = MyConnection;
        string sql = "Update [ArticlesV2$] set [ID]='Test' where [ActualPageId]=114";// 
        myCommand.CommandText = sql;
        myCommand.ExecuteNonQuery();
        MyConnection.Close();

使用此连接字符串

string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" +
      "Data Source=" + strFileName + ";" + "Extended Properties=" + "\"" + "Excel 12.0;HDR=YES;" + "\"";

此问题是由于机器不能找到正确的ISAM(索引顺序驱动方法)注册的访问的需要。

这可能是因为机器没有安装MSACeesss?我会确保你拥有最新版本的Jet,如果它仍然无法正常工作,找到其他机器的一个文件Msrd3x40.dll,地方将它复制到Vista的机器和呼叫REGSVR32它(在管理员模式下)应该整理出来给你。

使用下面的连接字符串从XLSX文件中读取:

  

的字符串的ConnectionString =“提供者= Microsoft.ACE.OLEDB.12.0;数据   源= “+ <> +”;扩展   属性= Excel的8.0;“;

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top