Erro ao abrir BD do access com senha
Quando tento fazer a conexão com o BD ele mostra a seguinte msg ´ Test connection failed because of an error in initializing provider. O arq de inform do grupo de trabalho está faltando ou foi alterado em modo exclusivo por um outro usuário.
Se alguém souber como resolver?
Muito obrigado
Alessandro
Se alguém souber como resolver?
Muito obrigado
Alessandro
Ale_delphi
Curtidas 0
Respostas
Ildefonso
31/01/2004
Olá, Ale.
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...
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:
A cláusula [b:56db011de1]uses Forms;[/b:56db011de1] , logo acima, disponibiliza a variável Application, também, para o DataModule.
Bom trabalho. 8)
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
Ale_delphi
31/01/2004
Fiz varias pesquisas mas não consegui encontrar como fazer esse arquivo .mdw. O meu arquivo de bd não tem uma extensão .mdw e usar o arquivo mdw do sistema tb nao funciona :oops:
Desculpe a minha impericia
Alessandro Carvalho
Um dia chego lá
Desculpe a minha impericia
Alessandro Carvalho
Um dia chego lá
GOSTEI 0
Ildefonso
31/01/2004
Olá, de novo, Ale.
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)
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