错误:“找不到可安装的ISAM”

我已经在Excel工作簿中编写了一些VBA代码,以便从桌面上同一目录中的Access数据库中检索数据。 它可以在我的机器和其他运行Windows XP的机器上正常工作,但是当我们在Vista机器上testing时,我们遇到了以下错误:

找不到可安装的ISAM

我在网上做了一堆search,但似乎无法find具体的答案。 连接string似乎很好,正如我所提到的,它可以在多台机器上运行。

有没有人有任何想法可能造成这种情况? 我的连接string如下所示:

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'; 

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

您也可以检查您是否拥有最新版本的Jet: http : //support.microsoft.com/kb/239114

只需使用Jet OLEDB:在连接string中。 它解决了我。

下面是一个例子:

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

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

和你一样,我的连接string看起来是正确的 – 事实上,完全相同的连接string正在其他情况下工作。

问题原来是缺乏资源。 20次中的19次,我会看到“无法find可安装的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

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

此问题是因为机器找不到正确的ISAM(索引顺序驱动程序方法)注册的Access需要。

这可能是因为机器没有安装MSACeesss? 我会确保你有最新版本的Jet,如果它仍然不起作用,从其他机器中findMsrd3x40.dll文件,将它复制到Vista机器上并调用regsvr32(在Admin模式下)应该为你sorting。

使用下面的连接string从XLSX文件读取:

string ConnectionString =“Provider = Microsoft.ACE.OLEDB.12.0; Data Source =”+ <> +“; Extended Properties = Excel 8.0;”;