J'ai écrit du code VBA dans un classeur Excel pour récupérer des données d'une base de données Access dans le même répertoire sur un bureau. Cela fonctionne bien sur ma machine et plusieurs autres machines exécutant Windows XP, mais lorsque nous avons testé cela sur une machine Vista, nous avons rencontré l'erreur suivante:
Impossible de trouver ISAM installable
J'ai fait beaucoup de recherches en ligne, mais je n'arrive pas à trouver une réponse concrète. La chaîne de connexion semble correcte et, comme je l'ai mentionné, elle fonctionne sur plusieurs machines.
Quelqu'un a-t-il une idée de ce qui pourrait causer cela? Ma chaîne de connexion est la suivante:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\ptdb\Program Tracking Database.mdb;
Merci
Placez des guillemets simples autour du 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-le, cela fonctionne 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 a un sens pour l'analyseur.
Si vous aviez d'autres attributs (par exemple, Propriétés étendues), leurs valeurs peuvent également devoir être mises 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 également utiliser des guillemets doubles; cependant, vous devrez probablement leur échapper, et je trouve que plus d'un Pain In The Algorithm que d'utiliser des singles.
Avez-vous vérifié cela http://support.Microsoft.com/kb/209805 ? En particulier, si vous avez Msrd3x40.dll.
Vous pouvez également vérifier que vous disposez de la dernière version de Jet: http://support.Microsoft.com/kb/239114
Utilisez simplement Jet OLEDB: dans votre chaîne de connexion. cela a résolu pour moi.
un exemple est ci-dessous:
"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=E:\Database.mdb;Jet OLEDB:Database Password=b10w"
Je viens de rencontrer un problème très similaire.
Comme vous, ma chaîne de connexion semblait correcte - et en effet, exactement la même chaîne de connexion fonctionnait dans d'autres scénarios.
Le problème s'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 aucun changement de code du tout), cela produirait "Mémoire insuffisante" à la place.
Le redémarrage de la machine a "résolu" le problème (pour l'instant ...?). Cela s'est produit en utilisant Jet version 4.0.9505.0 sur Windows XP.
Je l'ai utilisé pour mettre à jour un fichier 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();