Question

J'ai écrit un code VBA dans un classeur Excel pour récupérer des données à partir d'une base de données Access dans le même répertoire sur un ordinateur de bureau. Il fonctionne très bien sur ma machine et plusieurs autres machines fonctionnant sous Windows XP, mais quand nous l'avons testé sur une machine Vista, nous avons rencontré l'erreur suivante:

  

Impossible de trouver ISAM installable

Je l'ai fait un tas de recherche semblent en ligne mais ne peut pas trouver une réponse concrète. La chaîne de connexion semble être bien, et, comme je l'ai mentionné, il travaille sur plusieurs machines.

Est-ce que quelqu'un a une idée ce qui pourrait être la cause? Ma chaîne de connexion est la suivante:

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

Merci

Pas de solution correcte

Autres conseils

Placez des guillemets simples autour de la Extended Properties:

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

Essayez, ça marche vraiment.

Essayez de mettre des guillemets simples autour de la source de données:

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

Le problème a tendance à être un espace blanc qui n'a du sens à l'analyseur.

Si vous aviez d'autres attributs (par exemple, les propriétés étendues), leurs valeurs peuvent aussi être entre guillemets simples:

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

Vous pouvez aussi bien utiliser des guillemets doubles; cependant, vous aurez probablement à leur échapper, et je trouve que plus d'un La douleur dans l'algorithme que l'utilisation simple.

Avez-vous vérifié cette http://support.microsoft.com/kb/209805 ? si vous avez Msrd3x40.dll en particulier.

Vous pouvez également à vérifier que vous avez la dernière version de Jet: http: // support. microsoft.com/kb/239114

Il suffit d'utiliser Jet OLEDB: dans votre chaîne de connexion. il a résolu pour moi.

est un exemple ci-dessous:

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

Je viens rencontré un problème similaire.

Comme vous, ma chaîne de connexion correcte est apparu - et en effet, exactement de la même chaîne de connexion travaillait dans d'autres scénarios

.

Le problème est avéré être un manque de ressources. 19 fois sur 20, je verrais le « Impossible de trouver ISAM installable », mais une ou deux fois (sans code change du tout), il produirait « Mémoire insuffisante » à la place.

Redémarrage de la machine "résolu" le problème (pour l'instant ...?). Cela est arrivé en utilisant la version de Jet 4.0.9505.0 sous Windows XP.

J'ai utilisé cette mise à jour d'un Excel 12 fichier 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();

Utilisez cette chaîne de connexion

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

Ce problème est parce que la machine ne peut pas trouver l'ISAM correcte (indexé méthode du pilote séquentiel) enregistré qui a besoin d'accéder.

Il est probablement parce que la machine n'a pas MSACeesss installé? Je vous assurer que vous avez la dernière version de Jet, et si cela ne fonctionne toujours pas, trouver le fichier Msrd3x40.dll de l'un des autres machines, copier quelque part à la machine Vista et regsvr32 d'appel à ce sujet (en mode Administrateur ) qui devrait le tri pour vous.

Utilisez la chaîne de connexion ci-dessous pour lire à partir d'un fichier XLSX:

  

string ConnectionString = « Provider = Microsoft.ACE.OLEDB.12.0; données   Source = "+ <> +"; Extended   Propriétés = Excel 8.0; ";

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top