PDA

Ver la Versión Completa : Poner password a una BD en acces desde OLE


fide
14-03-2008, 20:55:29
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...


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.


cat := CreateOleObject('ADOX.Catalog');
cat.create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + Filename + ';');


por esto otro.


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 (http://p2p.wrox.com/topic.asp?TOPIC_ID=11104) 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 ;)

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...