wake-up-neo.com

Fehler: "Installierbares ISAM konnte nicht gefunden werden"

Ich habe VBA-Code in eine Excel-Arbeitsmappe geschrieben, um Daten aus einer Access-Datenbank im selben Verzeichnis auf einem Desktop abzurufen. Es funktioniert auf meinem Computer und mehreren anderen Computern unter Windows XP einwandfrei, aber als wir dies auf einem Vista-Computer getestet haben, ist folgender Fehler aufgetreten:

Installierbares ISAM konnte nicht gefunden werden

Ich habe ein paar Mal online gesucht, kann aber anscheinend keine konkrete Antwort finden. Die Verbindungszeichenfolge scheint in Ordnung zu sein und funktioniert, wie bereits erwähnt, auf mehreren Computern.

Hat jemand eine Ahnung, woran das liegen könnte? Meine Verbindungszeichenfolge lautet wie folgt:

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

Vielen Dank

34
cLFlaVA

Setzen Sie einfache Anführungszeichen um das Extended Properties:

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

Probieren Sie es aus, es funktioniert wirklich.

67
bhupendra singh

Versuchen Sie, die Datenquelle in einfache Anführungszeichen zu setzen:

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

Das Problem besteht in der Regel in Leerstellen, die für den Parser von Bedeutung sind.

Wenn Sie andere Attribute hatten (z. B. Erweiterte Eigenschaften), müssen deren Werte möglicherweise auch in einfache Anführungszeichen gesetzt werden:

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

Sie können auch doppelte Anführungszeichen verwenden. Sie müssen ihnen jedoch wahrscheinlich entkommen, und ich finde, dass dies eher ein Schmerz im Algorithmus ist als die Verwendung von Singles.

18
BIBD

Haben Sie dies überprüft http://support.Microsoft.com/kb/209805 ? Insbesondere, ob Sie Msrd3x40.dll haben.

Möglicherweise möchten Sie auch überprüfen, ob Sie über die neueste Version von Jet verfügen: http://support.Microsoft.com/kb/239114

3
Fionnuala

Verwenden Sie einfach Jet OLEDB: in Ihrer Verbindungszeichenfolge. es hat sich für mich gelöst.

ein Beispiel ist unten:

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

Ich bin gerade auf ein sehr ähnliches Problem gestoßen.

Wie Sie schien meine Verbindungszeichenfolge korrekt zu sein - und tatsächlich funktionierte in anderen Szenarien genau dieselbe Verbindungszeichenfolge.

Das Problem stellte sich als Mangel an Ressourcen heraus. 19 Mal von 20 würde ich sehen, dass "Installierbarer ISAM nicht gefunden werden konnte", aber ein- oder zweimal (ohne Codeänderungen) würde es stattdessen "Nicht genügend Speicher" ergeben.

Ein Neustart der Maschine "löste" das Problem (vorerst ...?). Dies geschah mit Jet Version 4.0.9505.0 unter Windows XP.

0
Chris Nielsen

Ich habe dies verwendet, um eine Excel 12 xlsx-Datei zu aktualisieren

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