web-dev-qa-db-fra.com

ODBC Pilote Excel: erreur inattendue du pilote de base de données externe

Depuis la mise à jour Windows du 10 octobre, les pilotes Excel ODBC ne fonctionnent plus. Nous obtenons l'erreur suivante lorsque vous essayez de lire un fichier:

"Erreur inattendue du pilote de base de données externe (1)"

Nous ouvrons des fichiers Excel dans Delphi en utilisant une connexion ADO avec la chaîne de connexion suivante:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";

Je peux le faire fonctionner en passant à Microsoft.ACE.OLEDB.12.0, mais pour que cela fonctionne, tous nos clients devront installer le moteur de base de données Microsoft Access redistribuable sur tous les ordinateurs sur lesquels ils utilisent nos logiciels.

Quelqu'un at-il une autre solution ou solution de contournement? Merci d'avance.

5
Bram

Sur une machine client, j'ai désinstallé KB4041681 (Windows 7) qui accompagnait le dernier correctif Microsoft . Sur ma machine, j'ai désinstallé KB4041676 (Windows 10) . Après cela, Microsoft.Jet.OLEDB.4.0 fonctionne maintenant.

J'espère que Microsoft corrigera ce bug bientôt.

3
donhauro

Il y a une solution. Remplacez "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1".__ par Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\MyExcel.xls; Extended Properties=\"Excel 12.0;HDR = YES; Après cette modification, vous devrez installer le composant Pilote Office System 2007: Composants de connectivité de données à partir de link sur l'ordinateur client.

1
Sashus

J'avais le même problème avec 2 applications développées par moi depuis 3 ans (c # et Java) . Depuis le 10 octobre 2017, je ne pouvais plus exporter vers Excel 2003, mais 2007 fonctionnait et je ne pouvais pas importer depuis Excel 2003, mais 2007 a également travaillé pour l'importation.

Dans ArcGIS Desktop 10.5.1. Par ESRI (logiciel le plus répandu pour le traitement géographique), impossible d'ouvrir les fichiers excel 2003 et .mdb.

Temporairement, désinstallez KB4041693, KB4041687 dans Windows 8.1 (peut-être pour w10).

Dans Microsoft, le journal des changements des deux chemins dit quelque chose à propos de "mises à jour [...] et de sécurité pour Microsoft jet" . Après la désinstallation et le redémarrage, tous les logiciels redeviennent normaux.

ce problème a été introduit dans 10 oct. 2017 . Dans les forums Microsoft, ce problème a été rapporté (kb4041693 devrait le "réparer" mais il ne fonctionne toujours pas) . Peut-être que dans quelques semaines, ils le traceront (correctement) problème.

1

Désinstallez ces mises à jour (selon votre système d'exploitation) et votre code s'exécutera normalement 

  • KB4041681 - Windows 7 SP1 et Windows Server 2008 R2 SP1 
  • KB4041690 - Windows Server 2012 
  • KB4041693 - Windows 8.1 et Windows Server 2012 R2 
  • KB4041678 - Pour moi, c'était le problème

https://support.Microsoft.com/en-in/help/4041678/windows-7-update-kb4041678

0
Anish Sivadas

ICI est la solution ... je l’ai trouvée dans un autre forum et fonctionne parfaitement pour moi .... ça marche à 100% 

Comme mentionné dans ce qui suit:

https://forums.embarcadero.com/thread.jspa?messageID=902557&tstart=0

https://forum.kanors-emr.org/showthread.php?tid=571&pid=2652#pid2652

Le KB4041681 installe la version 4.0.9801.1 de msexcl40.dll.

  1. Trouver la version précédente (4.0.9801.0) de msexcl40.dll

  2. Placez dans un autre répertoire. Ils suggèrent le répertoire de l'application, mais puisque dans la prochaine étape vous allez modifier le registre pour qu'il pointe vers cette version plus ancienne, il peut probablement aller n'importe où.

  3. Mettez à jour la clé de registre HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel\win32 pour qu'elle pointe vers l'emplacement de l'étape 2.

Pour moi, cela a fonctionné en suivant ces étapes:

ps .: Nous avons un Windows Server 2008R2

1 - Téléchargez et installez ceci: https://www.Microsoft.com/en-us/download/details.aspx?id=23734 2 - Ouvrez le fichier .dtsx et modifiez votre connexion à Excel. Dans la boîte de dialogue Propriétés, cliquez sur les trois points de la propriété ConnectionString et remplacez-le par Microsoft Excel 2007. La chaîne de connexion sera automatiquement remplacée par: Fournisseur = Microsoft.ACE.OLEDB.12.0; Source de données = {YOURPATH} ; Propriétés étendues = "Excel 12.0 XML; HDR = YES"; 3 - Certains de nos fichiers .dtsx pointent vers un fichier de configuration (généralement une extension .dtsConfig). J'ai également changé ces gars pour pointer vers le bon fournisseur (à peu près copié et collé la chaîne de connexion que j'ai eu de visual studio)

Après cela, j'ai exécuté le travail SQL à nouveau et cela a bien fonctionné.

0
Catinodeh

J'ai eu le même problème. Modification d'Excel 2007 dans les destinations Excel. Ça a marché. Cela revient à changer le fournisseur = Microsoft.ACE.OLEDB.12.0.

0
Vaishnavi

Si vous travaillez avec le package SSIS, veuillez modifier votre feuille Excel version 2003 à 2007 dans Excel Source ou votre destination Excel. Généralement, ce problème est dû à la version Excel.

0
Amar Singh