PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum (Alerta!) Compactação de dados Access *.mdb #157587

02/05/2003

0

Estou informando para quem usa esta função abaixo para compactar banco de dados Access
unit Unit1; 

interface 

uses 
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; 

type 
TForm1 = class(TForm) 
Button1: TButton; 
procedure Button1Click(Sender: TObject); 
private 
{ Private declarations } 
procedure Access_Compact(const aAccess: string); 
public 
{ Public declarations } 
end; 

var 
Form1: TForm1; 

implementation 

uses ComObj; 

{$R *.DFM} 

procedure TForm1.Access_Compact(const aAccess: string); 
const 
bak_ext = ´.$$$´; 
stAccessDB = ´Provider=Microsoft.Jet.OLEDB.4.0;´ + 
´Data Source=¬s´; 
var 
JetEngine: Variant; 
TempName: string; 
begin 
TempName := ChangeFileExt(aAccess, bak_ext); 
DeleteFile(TempName); 
JetEngine := CreateOleObject(´JRO.JetEngine´); 
try 
JetEngine.CompactDatabase(Format(stAccessDB,[aAccess]),Format(stAccessDB,[TempName])); 
DeleteFile(aAccess); 
RenameFile(TempName, aAccess); 
finally 
JetEngine := Unassigned; 
end; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
Screen.Cursor := crHourglass; 
try 
Access_Compact(´C:\Meus documentos\db1.mdb´); 
finally 
Screen.Cursor := crDefault; 
end; 
ShowMessage(´Compactação completa.´); 
end; 

end. 


O alerta é o seguinte, esse código funciona perfeitamente para compactação mas tem uma problema que até agora nao consegui descobri o porque disto, apos testar a função acima varias vezes notei que nao teve problemas mas depois de algum tempo de uso eu comecei a receber mensagens de erro ´Violação de acesso´ agora não tenho ao certo a DLL que acusa isto mas o problema foi solucionado com a reinstalação do pacote Office ou seja o MS Access... me dei a liberdade de postar este tópico pois muita gente pode ter passado por isso e ter abandonado o uso da função acima... caso alguem saiba o porque do alerta favor postar ai para o pessoal , creio que este erro tenha sido causado por algum aplicativo que use a tal DLL e tenha corrompido a mesma... isso estou dizendo pq instalei uma agenda que usa banco de dados do access e nela tambem tinha essa compactação com configurações diferentes , creio que ela tenha corrompido a DLL e causado este problema todo... é isso ai pessoal vivendo e aprendendo... caso saiba mais sobre o assunto poste ai .
T+ pra todos e boa sorte!


Cyber Dark

Cyber Dark

Responder

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

Aceitar