Sledeći programski kod (obrađivač događaja OnClick dugmeta btnKompakt) jeste primer korišćenja CompactDatabase metode:
procedure TForm1.btnKompaktClick(Sender: TObject);
var
dbIzvor : WideString;
dbOdred : WideString;
const
SProvider = ‘Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=’;
begin
dbIzvor := SProvider + edIzvor.Text;
dbOdred := SProvider + edCilj.Text;if FileExists(edCilj.Text) then
DeleteFile(edCilj.Text);JE.CompactDatabase(dbIzvor, dbOdred);
end;
Zapazite da gornji kod pretpostavlja korišćenje Access 2000 baze podataka, jer je Microsoft Jet OLEDB 4.0 podrazumevani objektni model za pristup podacima Access-a 2000.
U najvećem broju slučajeva želećete da zadržite stari naziv baze podataka nakon procesa kompaktovanja. Pošto sadržaj polja „edIzvor“ i „edCilj“ ne može biti isti, uz pomoć programskog koda trebalo bi da kompaktovanu bazu zamenimo originalnom. To ćemo uraditi u sledećoj funkciji:
function KompakcijaBaze
(const sdbName: WideString) : boolean;
var
JE : TJetEngine;
sdbTemp : WideString;
sdbTempConn : WideString;
const
SProvider = ‘Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=’;
begin
Result:=False;
sdbTemp := ExtractFileDir(sdbName) +
‘TEMP’ +
ExtractFileName(sdbName);
sdbTempConn := SProvider + sdbtemp;
if FileExists(sdbTemp) then
DeleteFile(sdbTemp);
JE:= TJetEngine.Create(Application);
try
try
JE.CompactDatabase(SProvider + sdbName, sdbTempConn);
DeleteFile(sdbName);
RenameFile(sdbTemp, sdbName);
except
on E:Exception do
ShowMessage(E.Message);
end;
finally
JE.FreeOnRelease;
Result:=True;
end;
end;
Funkcija „KompakcijaBaze“ prihvata string parametar sa punim nazivom baze podataka koju želite da kompaktujete. A zatim vraća True ukoliko je kompakcija uspešna, a u suprotnom False. sdbName se kompaktuje u sdbTemp, zatim se briše sdbName i vrši preimenovanje sdbTemp u sdbName. Ovu funkciju možemo pozvati na sledeći način:
KompakcijaBaze(„C:Accessproba.mdb“);
Funkcija je idelana za upotrebu u svim Delphi ADO aplikacijama, a može biti napisana i kao konzolna aplikacija koja će imati samo jedan komandni parametar (ili više), a koja ne zahteva nikakav GUI (grafički interfejs).
Pratite Krstaricu na www.krstarica.com