Domanda

Ho scritto un po 'di codice VBA in una cartella di lavoro di Excel per recuperare dati da un database di Access nella stessa directory su un desktop. Funziona bene sulla mia macchina e diverse altre macchine con sistema operativo Windows XP, ma quando abbiamo testato questo su una macchina Vista, abbiamo rilevato il seguente errore:

  

Impossibile trovare ISAM installabile

Ho fatto un po 'di ricerca on-line, ma non riesco a trovare una risposta concreta. La stringa di connessione sembra andare bene, e, come ho già detto, funziona su più macchine.

Qualcuno ha qualche 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

Nessuna soluzione corretta

Altri suggerimenti

Luogo apici di tutto il 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 singole attorno alla fonte dei 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 un senso al parser.

Se avete avuto altri attributi (per esempio, proprietà estese), i loro valori possono inoltre essere racchiuso 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;';

Si potrebbe altrettanto bene usare le virgolette; tuttavia, è probabilmente dovrete sfuggire loro, e trovo che più di una Dolore nell'algoritmo di utilizzare i single.

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

Potrebbe piacerti anche per verificare di avere la versione più recente 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 è apparso corretto - e anzi, esattamente la stessa stringa di connessione stava lavorando in altri scenari

.

Il problema si è rivelato essere una mancanza di risorse. 19 volte su 20, avrei visto il "Impossibile trovare ISAM installabile", ma una o due volte (senza alcun codice cambia a tutti), si produrrebbe "Out of memory", invece.

Riavviare la macchina "risolto" il problema (per ora ...?). Questo è accaduto con Jet versione 4.0.9505.0 su Windows XP.

Ho usato questo per aggiornare un file xlsx di excel 12

        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();

Utilizzare questa stringa di connessione

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

Il problema è perché la macchina non riesce a trovare il corretto l'ISAM (indicizzato metodo conducente sequenziale) registrato che ha bisogno di accesso.

E 'probabilmente perché la macchina non ha installato MSACeesss? Vorrei fare in modo di avere l'ultima versione di Jet, e se ancora non funziona, trovare il file Msrd3x40.dll da una delle altre macchine, copiarlo da qualche parte per la macchina Vista e chiamata regsvr32 su di essa (in modalità Admin ) che dovrebbe risolvere il problema per voi.

per leggere da un file XLSX

Utilizzare la stringa di connessione di seguito:

  

ConnectionString stringa = "Provider = Microsoft.ACE.OLEDB.12.0; dati   Source = "+ <> +"; estesa   Proprietà = Excel 8.0; ";

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top