Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Poner password a una BD en acces desde OLE (https://www.clubdelphi.com/foros/showthread.php?t=54339)

fide 14-03-2008 20:55:29

Poner password a una BD en acces desde OLE
 
Hola. Saludos ante todos. Explorando un programa de trucos y codigos de delphi que tengo, me he encontrado una funcion que crea una BD en acces, sin tablas ni nada. Solamente se crea el archivo. Lo demas hay que crearselo desde SQL.

Ahora bien, yo deseo ponerle password a esa BD, pero ni modo de que lo consiga.

aqui esta el codigo...

Código Delphi [-]
function CreateAccessDatabase(FileName: string): string;
var
  cat: OLEVariant;
begin
  result := '';
  try
    cat := CreateOleObject('ADOX.Catalog');
    cat.create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + Filename + ';');
    cat := NULL;
  except
    on e: Exception do
      result := e.message;
  end;
end;

Esto me crea la BD sin problemas. Despues, mediante los componentes ADO, la acceso, creo nuevas tablas ETC. Pero es que quiero que se cree con password. Pense en cambiar esto.

Código Delphi [-]
cat := CreateOleObject('ADOX.Catalog');
    cat.create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + Filename + ';');

por esto otro.

Código Delphi [-]
cat := CreateOleObject('ADOX.Catalog');
    cat.create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + Filename + ';Persist Security Info=False;Jet OLEDB:Database Password=sapito123;');

pero ni asi me funciona.
Por favor si alguien me puede ayudar, le estare muy agradecido...

luisgutierrezb 14-03-2008 22:05:26

parece que aqui lo explican, no se si funcione no lo eh probado

fide 16-03-2008 15:34:12

Bueno, es que no accedo al enlace. Por favor, podrias copiar el texto explicativo justo aqui para yo y los demas poder trabajar con el????


Gracias desde ya!

cHackAll 17-03-2008 14:46:34

Bueno, lo que te muestro a continuación no proviene del enlace de luisgutierrezb, y tampoco es ADO sino DAO, pero funciona con dos lineas ;)

Código Delphi [-]
uses ComObj;
 
...
 
procedure TForm1.Button1Click(Sender: TObject);
var dao: OleVariant;
begin
 MoveFile('Database1.mdb', 'Database1.bak');
 dao := CreateOleObject('dao.dbengine.36');
 dao.CompactDatabase('Database1.bak', 'Database1.mdb', ';langid=0x040A;cp=1252;country=0', 2, ';pwd=HAclave');
 DeleteFile('Database1.bak');
end;

Saludos.

fide 17-03-2008 20:42:44

Ha, eso esta muy bueno. Solo que despues que lo pruebe les dire si me funciona o no.
Muchas gracias cHackAll por la ayuda brindada amigo...


La franja horaria es GMT +2. Ahora son las 06:10:44.

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