Ver Mensaje Individual
  #9  
Antiguo 07-08-2014
jplj jplj is offline
Miembro
 
Registrado: oct 2003
Posts: 189
Reputación: 21
jplj Va por buen camino
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).
__________________
Sonríe. Mañana puede ser peor.
Responder Con Cita