Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FabioRubim

Compactar e reparar BD Access

Recommended Posts

Olá pessoal, faz tempo que não incomodo você heim?! http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif Então, procurei uma rotina para Delphi para compactar e reparar um BD Access, é essa que eu estou tentando usar:

procedure TfrmPrincipal.RepararCompactar;var  ArquivoMDB: string;  DB: OLEVariant;  Temp: string;begin  Application.MessageBox('O Programa agora vai compactar e reparar seu Banco de dados por favor aguarde.', 'Aviso', mb_IconInformation);  Screen.Cursor := crHourGlass;  try	 ArquivoMDB := copy(DM_Principal.cnt_EstHidCom.ConnectionString,	 pos('Data Source=', DM_Principal.cnt_EstHidCom.ConnectionString)+12,	 length(DM_Principal.cnt_EstHidCom.ConnectionString)-(pos('Data Source=', DM_Principal.cnt_EstHidCom.ConnectionString)+12));	 ArquivoMDB := copy(ArquivoMDB, 1, pos(';',ArquivoMDB)-1);  try// cria o objeto para manipulacao do BD	 DM_Principal.cnt_EstHidCom.Close;	 DM_Principal.cnt_EstHidCom.Connected := False;	 DB := CreateOLEObject('DAO.DBEngine.35');// reparar	 DB.RepairDataBase(ArquivoMDB);// compactar	 Temp := ExtractFilePath(ArquivoMDB) + 'Temp.mdb';	 DB.CompactDataBase(ArquivoMDB, Temp);	 DeleteFile(ArquivoMDB);	 RenameFile(Temp, ArquivoMDB);	 Application.MessageBox('Banco de dados reparado e compactado com sucesso.', 'Aviso', mb_IconInformation);  except  on	 E: Exception do Application.MessageBox(PChar(E.message), 'Erro DAO', mb_IconError);  end;  finally	 DM_Principal.cnt_EstHidCom.Open;	 DM_Principal.cnt_EstHidCom.Connected := True;	 Screen.Cursor := crDefault;  end;End;
Só que toda vez que eu executo ela, aparece esta mensagem:

---------------------------Erro DAO---------------------------Você tentou abrir um banco de dados que já fora aberto em modo exclusivo pelo usuário 'Admin' no computador 'ESTOQUE'. Tente novamente quando o banco de dados estiver disponível---------------------------OK ---------------------------

Só que ele não esta sendo aberto em nenhum ourto lugar, nem em Access nenhum e nem mesmo em outra execução do programa....e pelo que eu entendi, esse procedimento acima fecha o BD no segundo Try, ja tentei fechar de outros jeitos e nada...alguem poderia me ajudar??Obrigado pessoal!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa ja achei pessoal, quando rodava o projeto no Delphi mesmo, tem que fechar a conexão do Delphi :/ .....MAs...... surgiu outro problema. esse complicou....aparece esta mensagem:

---------------------------Erro DAO---------------------------Formato do banco de dados 'C:\Documents and Settings\User\Desktop\Fabio Rubim\Novo_Estoque\Sistema_Estoque_Hidracom.mdb' não reconhecido---------------------------OK ---------------------------

Acredito que seja por causa dessa linha "DB := CreateOLEObject('DAO.DBEngine.35');" na rotina, onde "DAO.DBEngine.35" deveria ser outra coisa, mas o que??? se puderem me ajudar neste agora.....obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.