Fórum Erro ao abrir BD do access com senha #210780

31/01/2004

0

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


Ale_delphi

Ale_delphi

Responder

Posts

31/01/2004

Ildefonso

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

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)


Responder

Gostei + 0

10/02/2004

Ale_delphi

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á


Responder

Gostei + 0

13/02/2004

Ildefonso

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)


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar