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