Fórum Erro ao abrir BD do access com senha #210780
31/01/2004
0
Se alguém souber como resolver?
Muito obrigado
Alessandro
Ale_delphi
Curtir tópico
+ 0Posts
31/01/2004
Ildefonso
Quando seu arquivo ´.mdb´ está protegido por senha a ´nível de usuário´, você deve informar na ´.ConnectionString´ qual é o arquivo ´.mdw´ que se deve usar, qual é o nome do usuário e qual é a senha [b:56db011de1](Heheee, Lombarde!!!)[/b:56db011de1].
...desculpe-me, não aguentei perder a piada.
Bem... No diálogo de construção, a última aba permite você configurar a propriedade ´Jet OLEDB:System database´, mas você deve indicar, também, o nome e senha do usuário na segunda aba, além de marcar a opção ´Allow saving password´ para que o Delphi preserve a senha informada - o que não é muito seguro, convenhamos.
Eu recomendo criar um procedimento de abertura do seu banco de dados. A seguir está um exemplo tal como uso em meus sistemas. Na verdade ele depende de uma estrutura que mantém todas as informações do usuário atual do sistema. Ambos, a variável da estrutura e a procedure que abre o banco de dados estão aqui...
TCurrentLog = record
Login: String;
Password: String;
ExePath: String;
ExeBase: String;
ExeSecs: String;
TimeStart: TDateTime;
end;
var
DM: TDM;
CurrentLog: TCurrentLog;
implementation
uses
Forms;
{$R *.dfm}
procedure TDM.OpenDB;
var
expr: String;
begin
if (DB.Connected) then
DB.Close;
if (CurrentLog.Password <> ´´) then
expr := ´;Password=´ + CurrentLog.Password;
expr := ´Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;´ +
´Data Source=´ + CurrentLog.ExeBase + ´;´ +
´Jet OLEDB:System database=´ + CurrentLog.ExeSecs + ´;´ +
´User ID=´ + CurrentLog.Login + expr;
DB.ConnectionString := expr;
DB.Open;
end;Note o seguinte: tenho um DataModule chamdo DM e meu ADOConnection é chamado de DB. Por isso os nomes citados acima.
Além disso, a procedure não é ligada ao evento OnCreate do DataModule, porque, no meu caso, eu mesmo tenho uma janela de login customizada que verifica inúmeras condições, inclusive abre o banco de dados com uma senha e login particular para ter acesso às configurações guardadas no próprio banco de dados (se meu usuário excluir tal login e senha, o sistema para de funcionar).
Mas essa procedure é versátil inclusive para fazer este login especial. No seu caso, você pode usá-la diretamente a partir do evento OnCreate, tal como segue:
procedure TDM.DataModuleCreate(Sender: TObject); begin CurrentLog.Login := ´<seu-login>´; CurrentLog.Password := ´<sua-senha>´; CurrentLog.ExePath := ExtractFilePath(Application.ExeName); CurrentLog.ExeBase := CurrentLog.ExePath + ´\<seu-arquivo-mdb>´; CurrentLog.ExeSecs := CurrentLog.ExePath + ´\<seu-arquivo-mdw>´; OpenDB; // ...abre o DB com os parâmetros de CurrentLog end;
A cláusula [b:56db011de1]uses Forms;[/b:56db011de1] , logo acima, disponibiliza a variável Application, também, para o DataModule.
Bom trabalho. 8)
Gostei + 0
10/02/2004
Ale_delphi
Desculpe a minha impericia
Alessandro Carvalho
Um dia chego lá
Gostei + 0
13/02/2004
Ildefonso
O seu banco de dados abre, normalmente, usando o Access? Qual versão?
Qual versão de Jet você tentou usar?
Já experimentou copiar o system.mdw padrão para a pasta de seu banco de dados e usá-lo como nonexão?
Quando você criou o BD, você estava logado como Admin (administrador) ?
Envie estas respostas, incluindo um e-mail para onde eu possa enviar um system.mdw padrão, em Access 97, que funciona, em meus sistemas, para arquivos do 2000 e 2002.
Bom trabalho. 8)
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)