Seite 1 von 1
MS Access DAO Windows 7
Verfasst: Montag 9. August 2010, 19:44
von genders
Habe bisher unter Windows XP mit folgender Verbindung zu einer MS Access Datenbank gearbeitet (Basis von gerold):
Code: Alles auswählen
def getQuery(self, query, db):
con = Dispatch(r'ADODB.Connection')
con.Open("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" + db)
result_set = con.Execute(query + ';')
columns = result_set[0].GetRows(MAX_ROWS)
con.Close()
return columns
Arbeite nunmehr auch mit Windows 7 64 bit, Python 2.6 64 bit PythonWin und bekomme Fehlermeldung:
File "C:\Python26\lib\site-packages\win32com\client\dynamic.py", line 272, in _ApplyTypes_
result = self._oleobj_.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args)
com_error: (-2147352567, 'Ausnahmefehler aufgetreten.', (0, u'ADODB.Connection', u'Der Provider kann nicht gefunden werden. M\xf6glicherweise ist er nicht richtig installiert worden.', u'C:\\Windows\\HELP\\ADO270.CHM', 1240655, -2146824582), None)
msjet40.dll ist im Verzeichnis c:/windows/SysWOW64 vorhanden, Hilfeseiten Microsoft mit ADO270.CHM helfen mir nicht weiter.
ist Euch bitte etwas dazu bekannt ?
Re: MS Access DAO Windows 7
Verfasst: Dienstag 10. August 2010, 10:30
von mkesper
Re: MS Access DAO Windows 7
Verfasst: Dienstag 10. August 2010, 10:57
von genders
Werde mir das näher anschauen, danke für die Antwort.
Ursprüngliche Lösung zum Laufen bringen, würde ich aber wegen allfälliger derzeit nicht absehbarere Folgewirkungen bevorzugen.
Re: MS Access DAO Windows 7
Verfasst: Dienstag 10. August 2010, 11:58
von noisefloor
Hallo,
@genders: nach welcher Zeile in deinem Skript wird der Fehler denn geworfen? Das geht aus der Fehlermeldung nicht hervor.
Gruß, noisefloor
Re: MS Access DAO Windows 7
Verfasst: Dienstag 10. August 2010, 14:22
von genders
noisefloor, leider habe ich unkomplette Fehlermeldung dazu gegeben, danke, habe zwischenzeitig weitere Test zur Absicherung auf beiden Rechner mit gleichem File durchgeführt, mit Windows XP Phyton 2.6 Pywin32 32 bit ok, Windows 7 Fehlermeldung
Traceback (most recent call last):
File "C:\Python26\Lib\site-packages\Pythonwin\pywin\framework\scriptutils.py", line 325, in RunScript
exec codeObject in __main__.__dict__
File "E:\Tischtennis\Allgemein\UVOP\DbHandling.py", line 77, in <module>
b = a.getQuery("select * from [Stichtage]", db)
File "E:\Tischtennis\Allgemein\UVOP\DbHandling.py", line 18, in getQuery
con.Open("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" + db)
File "<COMObject ADODB.Connection>", line 3, in Open
File "C:\Python26\lib\site-packages\win32com\client\dynamic.py", line 272, in _ApplyTypes_
result = self._oleobj_.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args)
com_error: (-2147352567, 'Ausnahmefehler aufgetreten.', (0, u'ADODB.Connection', u'Der Provider kann nicht gefunden werden. M\xf6glicherweise ist er nicht richtig installiert worden.', u'C:\\Windows\\HELP\\ADO270.CHM', 1240655, -2146824582), None)
Re: MS Access DAO Windows 7
Verfasst: Dienstag 10. August 2010, 19:27
von noisefloor
Hallo,
ok, thx. Aber: ich kann auch nur raten. :K
Wenn es auf WinXP 32 bi funktioniert und Win7 64 bit nicht liegt die Vermutung nah, dass sich bei Windows (API, Libs... ?) was geändert hat... was auch immer.
Vielleicht lieber doch ODBC?
Gruß, noisefloor
Re: MS Access DAO Windows 7
Verfasst: Dienstag 10. August 2010, 19:46
von DaMutz
Eventuell liegt es daran, dass man keine 32-Bit DLLs in 64-bit Prozesse reinladen kann. Du musst also die 32-Bit-Version von Python nehmen oder eine 64-Bit-Version der DLL installieren.
Re: MS Access DAO Windows 7
Verfasst: Dienstag 10. August 2010, 20:02
von genders
Theorethisch alles 64 bit Versione Windows 7, Python 2.6 64 bit, Pywin32 64 bit, msjet40.dll 64 bit da im System im Verzeichnis c:/windows/SysWOW64 vorgefunden, aus der Fehlermeldung müsste man auf eine Registrierung schließen, in diesem Bereich habe bisher aber nichts gemacht.
ODBC müsste wieder extra (?) eingerichtet werden, das ganze läuft auf einer transportablen Platte und sollte eben mit unterschiedlichen Systemen (Windows) arbeiten können.
Re: MS Access DAO Windows 7
Verfasst: Dienstag 10. August 2010, 21:15
von noisefloor
Hallo,
nee, das ist IMHO fest an Bord (genau so wie bei SQL Server). So behauptet es auch
Wikipedia
Der Vorteil von ODBC ist, dass es konform mit der Python DB API ist, d.h. wenn du ggf. mal z.B. auf SQL Server oder SQLite oder ... umsteigst musst du nur eine Zeile ändern.
Gruß, noisefloor