Benutzer mit den meisten Antworten
Durch KB Update der Microsoft JET Database Engine funktioniert der Excelzugriff nicht mehr

Frage
-
Wir haben mehrere Programme, die Exceldaten mit ADO lesen. Das funktionierte seit mehr als 6 Jahren problemlos.
Seit dem letzten Update (vermutlich KB4041681, KB4041693, Win10?) kommt ein Fehler beim Öffnen der Connection "(-2147467259) Unerwarteter Fehler vom externen Datenbanktreiber". Der Fehler ist reproduzierbar mit der neuen JetEngine und tritt in alten Versionen nicht auf.
Das sollte dringend geprüft werden. Unsere Kunden machen mächtig Wind.
mike
Antworten
-
So nun läufts wieder.
Voraussetzung ist tatsächlich die Installation der "AccessDatabaseEngine", die Redistributables vom Access ab Version 2010ff. Diese bringen die Excel-ODBC-Treiber dann mit.
Bei der Verwendung des Excel-Treibers muss man die XSLX-Version verwenden.
Hier kann man dann auch noch alte Excel-Mappen 97-2000 auswählen.
Und das funktioniert dann auch.Der XSL-Treiber bleibt leider defekt, was dann aber auch egal ist.
- Als Antwort vorgeschlagen Der Suchende Donnerstag, 19. Oktober 2017 10:27
- Als Antwort markiert Yavor TanevMicrosoft contingent staff Montag, 23. Oktober 2017 08:27
Alle Antworten
-
Dann müssen diese Kunden und du einen Fehler bei Microsoft melden.
Dazu gehört natürlich auch, diesen Fehler genau zu beschreiben (Beispiel).
Ggf. gibt es dann mit dem nächsten Rollout eine Fehlerbehebung, da es ja zwischendurch keine mehr gibt.
Solange sollte man das Update halt zurückhalten.Im April 2017 gab es ja auch einen Fehler in den ADODB-Komponenten, der dann leider erst Ende Mai behoben wurde.
Eine Meldung hier im Forum wird da wohl wenig bringen, denn ob Microsoft hier reinschaut...
-
Wie denn wo denn melden. Das suche ich immer noch. Ich nehme an der Konzern wird da etwas eskaliern, aber das ist für eine kurzfristige Lösung zu spät.
In unserem Fall reicht es, eine Exceldatei mit ADOanzusprechen und es knallt:
Set moDBConnection = New ADODB.Connection
moDBConnection.ConnectionString = msConnectionstring
moDBConnection.CursorLocation = adUseServer
Call moDBConnection.OpenDie Kunden wissen garnicht, dass der Fehler durch MS reingekommen ist. Die geben uns die Schuld.
Alles leider äusserst unbefriedigend. Es sind potentiell mehrere tausend Kunden betroffen. Die haben vor einem Monat ein neues Release bekommen. Die, die vor dem fehlerghaften "Update" der JetEngine das Datenpdate ausgeführt haben, sind problemlos durchgekommen. Alle, die jetzt erst das Update anstoßen, haben den Fehler und müssen die Datenbank zurücksichern.
Anscheined hat dann geholfen eine alte Jet zu installieren - aber das kann es doch nicht sein.
mike
-
Wie das so schon mal ist.
Was lange als Fehler toleriert wurde muss ja nicht so bleiben;-).
Nachdem Motto "it's not a bug, it's a feature".Womit ich nun nicht sage, dass hier ein Fehler behoben wurde.
Ich war im April vor einem ähnlichen Problem mit dem ADODB.Recordset und musste mir schnellsten selber eine Umgehung für das Problem schreiben, die ich Gott sei Dank auch gefunden hatte.
Ich installiere mit meiner Software nun im Anwendungsverzeichnis je nach Windowsversion die vorherige noch funktionierende msado15.DLL und verwende diese mit der Registry-Free-Methode.
Bis vor kurzem auf einem Windows 2003-Server (was ich dann aber auch lösen konnte) funktioniert das problemlos.Für den Zugriff auf Excel verwende ich allerdings nicht die Jet-Engine sondern ODBC mit den Excel-Treibern die mit Office installiert werden.
Vielleicht hilft dir das ja übergangsweise weiter.
Die Jet-Engine benötige ich nur für eine lokale MDB ohne Access-Runtime zu benötigen. Daher installiere ich die durch meine Anwendung, falls sie nicht da ist. In Windows war diese ja früher Standard und ab irgendeinem Stand kam sie nur noch mit Access bzw. Access-Runtime. -
Wenn eine Schnittstelle einen Parameter nicht verarbeiten kann, erwarte ich eine ausagekräftige Fehler-Meldung und keinen "Unerwarteten Fehler".
Das ADO funktioiert ja problemlos wenn die Daten als MDB kommen. Aber in diesem Fall waren es Fremddaten, wo man sich das Konvertieren gespart hat. Die Jet wird bei uns auch installiert, nur wurde sie von MS überklatscht.
Waren jetzt nur 2 Tage Stress und 100 verärgerte Kunden. Was ein Glück, dass wird selbst bei einer Updateinstallation noch ein SR dazwischenschieben können.
mike
-
Eine weitere Ergänzung noch dazu:
https://stackoverflow.com/questions/46707245/odbc-excel-driver-unexpected-error-from-external-database-driverNicht die Jet-Engine verursacht den Fehler sondern der Update des XLS-ODBC-Treibers.
Einige meiner Kunden verwenden den XLSX-Treiber (Office 2007) und mit dem klappt der Excel-Import weiterhin. -
So nun läufts wieder.
Voraussetzung ist tatsächlich die Installation der "AccessDatabaseEngine", die Redistributables vom Access ab Version 2010ff. Diese bringen die Excel-ODBC-Treiber dann mit.
Bei der Verwendung des Excel-Treibers muss man die XSLX-Version verwenden.
Hier kann man dann auch noch alte Excel-Mappen 97-2000 auswählen.
Und das funktioniert dann auch.Der XSL-Treiber bleibt leider defekt, was dann aber auch egal ist.
- Als Antwort vorgeschlagen Der Suchende Donnerstag, 19. Oktober 2017 10:27
- Als Antwort markiert Yavor TanevMicrosoft contingent staff Montag, 23. Oktober 2017 08:27
-
Bei mir klappt es damit (Nach Installation der 2010er Runtime). Der Connection String ist vom Treber selber dann so zusammengebaut worden.
Provider=MSDASQL.1;User ID=admin;Extended Properties="Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DefaultDir=D:\MyPath;DriverId=1046;FIL=excel 12.0;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;ReadOnly=1;SafeTransactions=0;Threads=3;UserCommitSync=Yes;Database=D:\MyPath\MyXLS.xls"