![]() |
AW: "Unerwarteter Fehler vom externen Datenbanktreiber (1)" beim Öffnen einer XLS-Dat
Zitat:
Nach diesen Artikel ist es etwas unklar, er sagt "you should install this manually": Zitat:
![]() |
AW: "Unerwarteter Fehler vom externen Datenbanktreiber (1)" beim Öffnen einer XLS-Dat
Hmm..
Zu mindestens ab Office 2010 wird der ACE OLEDB Treiber mit installiert.. Es gibt hier jedoch (irgendwo gelesen) unterschiedliche Versionen für 32Bit und 64 Bit und natürlich je Office-Version... Bei mit mit Office 2013 32Bit ist es der 15er. |
AW: "Unerwarteter Fehler vom externen Datenbanktreiber (1)" beim Öffnen einer XLS-Dat
Update:
in einer weiteren Entwicklungsumgebung ist eine ältere 64 Bit Version von Excel 2010 installiert, hier tritt der Fehler ebenfalls auf: Excel Version in den Entwicklungsumgebungen (in diesen tritt der Fehler auf): 14.0.7128.5000 (64 Bit) 14.0.7188.5002 (32 Bit) In der Produktionsumgebung: 14.0.7184.5000 (32 Bit) Die Excel-Version in der Produktionsumgebung liegt "zwischen" denen der Entwicklungsumgebungen. Nur in der Produktionsumgebung tritt der Fehler nicht auf. |
AW: "Unerwarteter Fehler vom externen Datenbanktreiber (1)" beim Öffnen einer XLS-Dat
Hmm..
Hab da mal was aus einem Testtool herausgenommen:
Delphi-Quellcode:
Hiermit wird anhand der Extension und der installierten ACE-Version der Connection-String dynamisch zusammen gesetzt.uses ADODB; const c_JetOleDB = 'Microsoft.Jet.OLEDB.4.0'; c_ACEOleDB = 'Microsoft.ACE.OLEDB'; procedure GetADOProviderNames(AProviderList : TStrings); begin AProviderList.Clear; GetProviderNames(AProviderList); end; function GetSQLServerProvider: string; var tmpProviderList : TStringList; i : integer; begin Result := ''; tmpProviderList := TStringList.Create; try GetADOProviderNames(tmpProviderList); tmpProviderList.Sort; if tmpProviderList.IndexOf(c_JetOleDB) > -1 then Result := c_JetOleDB; for i := 0 to tmpProviderList.Count -1 do begin if Pos(c_ACEOleDB, tmpProviderList[i]) = 1 then Result := tmpProviderList[i]; end; finally tmpProviderList.Free; end; end; procedure OpenExcelFile(ADOConnectionExcel : TADOConnection; AExcelFile : string; AWithHeader : boolean); var tmpProvider : string; tmpProperties : string; tmpExcel : string; tmpHeader : string; tmpPWString : string; tmpExt : string; begin ADOConnectionExcel.Close; tmpExt := LowerCase(ExtractFileExt(AExcelFile)); tmpExcel := ''; if tmpExt = '.xls' then tmpExcel := 'Excel 8.0'; if tmpExt = '.xlsx' then tmpExcel := 'Excel 12.0 Xml'; if tmpExt = '.xlsm' then tmpExcel := 'Excel 12.0 Macro'; if tmpExt = '.xlsb' then tmpExcel := 'Excel 12.0'; if tmpExcel = '' then begin ShowMessage('Invalid FileExt!'); exit; end; if AWithHeader then tmpHeader := 'HDR=YES' else tmpHeader := 'HDR=NO'; tmpProperties := 'Extended Properties="' + tmpExcel + ';' + tmpHeader + ';IMEX=1";'; // Kein Passwort setzen (Ja, auch bei ACE ist die Property mit 'Jet OLEDB:') tmpPWString := 'Jet OLEDB:Database Password="";'; tmpProvider := GetSQLServerProvider; ADOConnectionExcel.ConnectionString := 'Provider='+tmpProvider+';' + tmpProperties + tmpPWString + 'Data Source=' + AExcelFile; ADOConnectionExcel.Open; end; Es wird immer die höchste ACE-Version verwendet, auch wenn mehrere installiert wurden, selbst, wenn aufgrund der Office-Version noch JET verwendet werden könnte. |
AW: "Unerwarteter Fehler vom externen Datenbanktreiber (1)" beim Öffnen einer XLS-Dat
Um die Möglichkeiten noch etwas auszuweiten:
Habt Ihr mal mit unterschiedlichen Exceldatei-Formaten probiert? Neben der reinen Fehlersuche habt ihr ja vielleicht die Möglichkeit, ein bestimmtes Format zu wählen (oder spätestens vor Datenzugriff zu konvertieren) und damit dem Problem aus dem Weg zu gehen. Was mir noch einfällt sind die Undo Daten in Office Dateien. Einfach mal probieren, etwas aufzuräumen. Da sich viele Updates ja neuerdings um Security drehen, könnte an der Ecke was geschehen sein. |
AW: "Unerwarteter Fehler vom externen Datenbanktreiber (1)" beim Öffnen einer XLS-Dat
Zitat:
|
AW: "Unerwarteter Fehler vom externen Datenbanktreiber (1)" beim Öffnen einer XLS-Dat
Zitat:
|
AW: "Unerwarteter Fehler vom externen Datenbanktreiber (1)" beim Öffnen einer XLS-Dat
Zitat:
Code:
Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Sandbox\***.xls; Extended Properties="Excel 8.0; HDR=YES; IMEX=0"
Nun erscheint beim Start eine neue Fehlermeldung:
Code:
Umgebung ist Windows 7 64 Bit, Excel 2010 32 Bit, mit OLEDB ACE 32 Bit.
"Installierbares ISAM nicht gefunden"
|
AW: "Unerwarteter Fehler vom externen Datenbanktreiber (1)" beim Öffnen einer XLS-Dat
Das Problem scheint auch anderweitig bekannt zu sein:
![]() |
AW: "Unerwarteter Fehler vom externen Datenbanktreiber (1)" beim Öffnen einer XLS-Dat
Zitat:
Wir müssen nun schauen ob wir das Problem nur durch Sperren der beiden Updates vermeiden können, oder ob es bessere Lösungen gibt die mit Delphi 2009 funktionieren. Da die XLS Dateien von externen Partnern kommen, ist eine Umstellung auf XLSX oder andere Formate aktuell nicht abzusehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz