Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Problema con compactación y reparación de B.D en Access (https://www.clubdelphi.com/foros/showthread.php?t=25475)

Alfonso Jurado 23-09-2005 17:43:58

Problema con compactación y reparación de B.D en Access
 
Hola, tengo un problemilla, a ver si alguien me puede ayudar...
El caso es que tengo desarrollada una aplicación en Delphi que trabaja con una base de datos en access, esta base de datos tiene una clave (se que es un aprotección muy burda, pero es principalmente para que los clientes no la abran y la trasteen), mi problema es que tengo un apartado que se encarga de compactarla y repararla y cuando lo hace crea una copia optimizada de la versión en access que tiene la clave, con el inconveniente de que la deja sin clave y por tanto sin protección alguna...
La función que utilizo es la siguiente:

Código Delphi [-]
 Function TCompactarReparar.CompactarYReparar(RutaBD: String): Boolean;
 Var
   ObjetoOLE: OLEvariant;
 begin
   Result:=True;
   try
     ObjetoOLE:=CreateOLEObject('JRO.JetEngine');
     try
       ObjetoOLE.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Jet '
         + 'OLEDB: Database Password=ISO9001;Data Source='+RutaBD,
           'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='
             +RutaBD+'x;Jet OLEDB:Engine type=5');
       DeleteFile(RutaBD);
       RenameFile(RutaBD+'x',RutaBD)
     finally
       ObjetoOLE:=Unassigned
     end;
   except
     Result:=False
   end;
 end;
En el último paso elimino el fichero original y renombro el fichero access "copia" por le nombre del original, en este proceso pierdo la clave de acceso, y me interesaria que esto no ocurriese...
Si alguien es tan amable de echarme un cable se lo agradecería eternamente.

Alfonso Jurado 28-09-2005 18:08:28

Como Juan Palomo: Yo me lo guiso, yo me lo como
 
:) Ya lo he resuelto...por si a alguien le sirve, es una tonteria solo hay que poner la la password que deseemos, en este caso Iso9001,tanto cuando abrimos la base de datos a compactar,como en la base de datos destino ya compacatada, sería como en la siguiente linea:
Código Delphi [-]
ObjetoOLE.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=Iso9001;Data Source='+RutaBD,'Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=Iso9001;Data Source='+RutaBD+'x;Jet OLEDB:Engine type=5');


La franja horaria es GMT +2. Ahora son las 11:01:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi