Errore: “Imansible trovare ISAM installabile”

Ho scritto del codice VBA in una cartella di lavoro di Excel per recuperare i dati da un database di Access nella stessa directory su un desktop. Funziona benissimo sulla mia macchina e su molti altri computer che eseguono Windows XP, ma quando abbiamo provato questo su una macchina Vista, abbiamo riscontrato il seguente errore:

Imansible trovare ISAM installabile

Ho fatto un sacco di ricerche online ma non riesco a trovare una risposta concreta. La stringa di connessione sembra essere a posto e, come ho già detto, funziona su diverse macchine.

Qualcuno ha idea di cosa potrebbe causare questo? La mia stringa di connessione è la seguente:

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

Grazie

Posiziona virgolette singole attorno alle Extended Properties :

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

Provalo, funziona davvero.

Prova a mettere le virgolette sull’origine dati:

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

Il problema tende ad essere uno spazio bianco che ha significato per il parser.

Se avevi altri attributi (ad esempio, Proprietà estese), i loro valori potrebbero anche essere racchiusi tra virgolette singole:

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

Potresti ugualmente usare le virgolette doppie; tuttavia, probabilmente dovrai sfuggire a loro, e trovo più un Pain In The Algorithm che l’uso di singoli.

Hai controllato questo http://support.microsoft.com/kb/209805 ? In particolare, se si ha Msrd3x40.dll.

Potresti anche voler controllare di avere l’ultima versione di Jet: http://support.microsoft.com/kb/239114

Basta usare Jet OLEDB: nella stringa di connessione. ha risolto per me.

un esempio è qui sotto:

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

Ho appena incontrato un problema molto simile.

Come te, la mia stringa di connessione è apparsa corretta, e infatti, esattamente la stessa stringa di connessione funzionava in altri scenari.

Il problema si è rivelato una mancanza di risorse. 19 volte su 20, vedrei “Imansible trovare ISAM installabile”, ma una o due volte (senza alcuna modifica al codice), invece, restituirebbe “Memoria insufficiente”.

Il riavvio della macchina ha “risolto” il problema (per ora …?). Questo è accaduto usando la versione 4.0.9505.0 di Jet su Windows XP.

L’ho usato per aggiornare un file 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(); 

Usa questa stringa di connessione

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

Questo problema è dovuto al fatto che la macchina non riesce a trovare l’ISAM corretto (metodo del driver sequenziale indicizzato) registrato necessario per Access.

Probabilmente è perché la macchina non ha installato MSACeesss? Vorrei essere sicuro di avere l’ultima versione di Jet, e se ancora non funziona, trova il file Msrd3x40.dll da una delle altre macchine, copialo da qualche parte sulla macchina Vista e chiama regsvr32 su di esso (in modalità Admin ) che dovrebbe risolverlo per te.

Usa la stringa di connessione qui sotto per leggere da un file XLSX:

string ConnectionString = “Provider = Microsoft.ACE.OLEDB.12.0; Origine dati =” + <> + “; Proprietà estese = Excel 8.0;”;