Python, Access and win32com
Geoff Talvola
gtalvola at nameconnector.com
Thu Feb 22 15:23:30 EST 2001
Will Newton wrote:
> I have been struggling to get MS Access 97 and the JET database engine to
> work with Active State Python and the win32com extensions.
>
> If I run daodump.py I get the following error:
>
> (Unfortuantely ASPython doesn't seem to have saved the log, why, I have no
> idea)
>
> com_error(-(a large number, INT_MAX?),CLASS_E_NOTLICENSED...)
It might be the problem described in http://support.microsoft.com/support/kb/articles/q189/6/07.asp in which case you can use the FixDAO function in the attached module to fix the problem.
--
- Geoff Talvola
Parlance Corporation
gtalvola at NameConnector.com
-------------- next part --------------
import win32api, win32con, win32com.client, win32com.client.gencache
def FixDAO():
"""
If DAO.DBEngine.35 cannot be created, this function will fix up the
licensing Registry variables necessary so that it can be created.
"""
try:
key = win32api.RegOpenKeyEx(win32con.HKEY_CLASSES_ROOT,'LICENSES\\F4FC596D-DFFE-11CF-9551-00AA00A3DC45',0,win32con.KEY_SET_VALUE|win32con.KEY_READ)
except:
key = win32api.RegCreateKey(win32con.HKEY_CLASSES_ROOT,'LICENSES\\F4FC596D-DFFE-11CF-9551-00AA00A3DC45')
if win32api.RegQueryValue(key,'') != 'mbmabptebkjcdlgtjmskjwtsdhjbmkmwtrak':
win32api.RegSetValue(key, '', win32con.REG_SZ, 'mbmabptebkjcdlgtjmskjwtsdhjbmkmwtrak')
def DAO():
"""
Create and return a DAO.DBEngine.35 object using early-bound automation
"""
# make sure that the makepy imformation has been generated
win32com.client.gencache.EnsureModule('{00025E01-0000-0000-C000-000000000046}', 0, 4, 0)
# Try to create the DAO object; if it fails, fix the licensing and try again.
try:
return win32com.client.Dispatch('DAO.DBEngine.35')
except:
FixDAO()
return win32com.client.Dispatch('DAO.DBEngine.35')
More information about the Python-list
mailing list