Frage

Ich habe einig VBA-Code in einer Excel-Arbeitsmappe geschriebene Daten aus einer Access-Datenbank auf einem Desktop im gleichen Verzeichnis abgerufen werden. Es funktioniert auf meinem Rechner und mehreren anderen Rechnern mit Windows XP, aber wenn wir dies auf einem Vista-Rechner getestet, stießen wir auf den folgenden Fehler:

  

Installierbares ISAM nicht finden

Ich habe Online ein paar der Suche getan, aber kann nicht scheinen, eine konkrete Antwort zu finden. Die Verbindungszeichenfolge scheint in Ordnung zu sein, und, wie ich bereits erwähnt, ist es auf mehreren Rechnern funktioniert.

Hat jemand eine Ahnung, was dies verursacht werden könnte? Meine Verbindungszeichenfolge ist wie folgt:

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

Danke

Keine korrekte Lösung

Andere Tipps

Platz einfache Anführungszeichen um den Extended Properties:

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

Versuchen Sie es, es funktioniert wirklich.

Versuchen Sie einfache Anführungszeichen um die Datenquelle setzen:

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

Das Problem neigt dazu, weißer Raum zu sein, die an den Parser Bedeutung haben.

Wenn Sie andere Attribute hatten (zum Beispiel Erweiterte Eigenschaften), deren Werte können auch in einfache Anführungszeichen eingeschlossen werden müssen:

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önnten genauso gut doppelte Anführungszeichen verwenden; jedoch werden Sie wahrscheinlich ihnen zu entkommen, und ich finde, dass eher ein Schmerz im Algorithmus als Singles verwendet wird.

Haben Sie diese http://support.microsoft.com/kb/209805 ? Insbesondere, ob Sie Msrd3x40.dll.

Sie können auch gerne überprüfen, ob Sie die neueste Version von Jet haben: http: // support. microsoft.com/kb/239114

Just Jet OLEDB verwenden: in der Verbindungszeichenfolge. es 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"

Ich habe gerade ein sehr ähnliches Problem aufgetreten.

Wie Sie, meine Verbindungszeichenfolge erschien richtig - und in der Tat, genau die gleiche Verbindungszeichenfolge wurde in anderen Szenarien arbeitet

.

Das Problem erwies sich als ein Mangel an Ressourcen. In 19 von 20, würde ich sehen, die „nicht installierbar ISAM finden kann,“ aber einmal oder zweimal (ohne Code überhaupt ändert), wäre es ergeben „Out of Memory“ statt.

Ein Neustart der Maschine "gelöst", das Problem (jetzt ...?). Dies geschah unter Verwendung von Jet Version 4.0.9505.0 unter Windows XP.

Ich habe diese 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();

Verwenden Sie diese Verbindungszeichenfolge

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

Dieses Problem liegt daran, dass die Maschine die die richtigen ISAM nicht finden kann (sequentielle Treiber Methode indiziert) registriert, dass Access muss.

Es ist wahrscheinlich, weil die Maschine hat nicht MSACeesss installiert? Ich würde sicherstellen, dass Sie die neueste Version von Jet haben, und wenn es immer noch nicht funktioniert, finden Sie die Datei Msrd3x40.dll von einer der anderen Maschinen, kopieren Sie es irgendwo auf dem Vista-Rechner und Call regsvr32 auf sie (im Admin-Modus ), dass es für Sie heraus sortieren soll.

Verwenden Sie die Verbindungszeichenfolge unten von einer XLSX-Datei zu lesen:

  

string Connectionstring = „Provider = Microsoft.ACE.OLEDB.12.0; Daten   Source = "+ <> +"; Erweiterte   Properties = Excel 8.0; "

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top