Hola
He estado comprobando lo que comentabas de Windows 7 y te puedo decir que en mi caso el procedimiento ha funcionado correctamente con lo siguiente:
.- Windows 7 con Microsoft Office 2010 instalado.
.- "Programa" de pruebas hecho con Delphi 7 y componentes ADO
Las pruebas las he realizado con una base de datos Access 2003 -usando Provider=Microsoft.Jet.OLEDB.4.0 para realizar la prueba de conexión- y con otra de Access 2010 -usando Provider=Microsoft.ACE.OLEDB.12.0 para realizar la prueba de conexión- funcionando correctamente con ambas.
Comentar unas "cosillas" sobre el tema:
.- La base de datos será abierta en modo exclusivo por lo que no puede estar en uso por otro usuario o aplicación.
.- Debe haber espacio suficiente en el disco donde se realiza la compactación.
.- Si la base de datos no tiene contraseña, la función se llama sin los tres últimos parámetros
Código Delphi
[-]if APassword <> '' then
DbEngine.CompactDataBase(ADataBaseName, ADataBaseName + '2', NULL, 0, ';pwd='+APassword)
else
DbEngine.CompactDataBase(ADataBaseName, ADataBaseName + '2');
Cuando falla por alguno de los dos primeros motivos anteriores, el mensaje de error era algo así como "cadena de clase no válida", vamos que no aclara nada
Por otra parte imagino que deberás tener motivos, pero al usar las versión 2007-2010 hay que tener en cuenta que según
nos dice Microsoft:
Cita:
Este formato admite las características más recientes como los campos multivalor, las macros de datos y la publicación en Servicios de Access ...
... el formato .accdb no admite replicación ni seguridad por usuarios.
|
Más información sobre
Métodos de DBEngine (DAO).