Compactar Tabela MSACCESS 97

Delphi

09/12/2003

Boa noite amigo, preciso urgentemente saber se é possível e como faço para compactar tabelas de um banco de dados tipo MSACCESS com delphi 6.


Jair Santana

Jair Santana

Curtidas 0

Respostas

Zorfael

Zorfael

09/12/2003

http://delphi.about.com/library/weekly/aa091801a.htm

[quote:6e1746623d=´Jair Santana´]Boa noite amigo, preciso urgentemente saber se é possível e como faço para compactar tabelas de um banco de dados tipo MSACCESS com delphi 6.[/quote:6e1746623d]


GOSTEI 0
Marcelo-rs

Marcelo-rs

09/12/2003

Eu estou usando esta com Delphi 6 e MDB do Access 97, porem para compactar a DB precisa estar com o aplicativo desconectado do mesmo!


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:\Projeto\db1.mdb´); 
finally 
Screen.Cursor := crDefault; 
end; 
ShowMessage(´Compactação completa.´); 
end; 

end. 

Espero ter ajudado


GOSTEI 0
Nigro

Nigro

09/12/2003

Tente o componente free VCLZip


GOSTEI 0
POSTAR