Compactar Tabelas Access

14/04/2003

0

Beleza pessoal...

Alguem sabe alguma rotina para compactar e reparar banco de dados do microsoft Access?

Agradeço


Edich

Edich

Responder

Posts

14/04/2003

Ilanocf

Olá Edi Carlos,

Qdo descobrir, me informa, por favor! Tb estou precisando.

Ilano.


Responder

14/04/2003

Dedi

[quote=´edich´]Beleza pessoal...

Alguem sabe alguma rotina para compactar e reparar banco de dados do microsoft Access?

Agradeço[/quote

Eu não testei se relmente funciona, mas pode ser uma boa.


procedure CompactaDBAccess( AFileNameOrig: String; AFileNameDest : String );
var dao: OLEVariant;
begin
dao := CreateOleObject( ´DAO.DBEngine.35´ );
DeleteFile( AFileNameDest );
dao.CompactDatabase( AFileNameOrig, AFileNameDest );
DeleteFile( AFileNameOrig );
RenameFile( AFileNameDest, AFileNameOrig );
DeleteFile( AFileNameDest );
end;

Rotina enviada por:
Ricardo Sérgio L. Bezerra
ricardoslb@uol.com.br


Responder

14/04/2003

Fernandocneto

Beleza pessoal... Alguem sabe alguma rotina para compactar e reparar banco de dados do microsoft Access? Agradeço


Feito em Delphi3.

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.

ainda não testei....responda se deu certo!!!

Ok!!

fernandocneto@zipmail.com.br


Responder

16/04/2003

Cyber Dark

Gente essa dica do colega ai acima funciona mesmo.... Valeus eu tava correndo atraz .....kkkkk

Porem o banco de dados nao pode estar sendo usado no momento da compactação!!!!


Abraço a todos!!!!

:D :D :D


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar