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
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!
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)