Kada radite sa aplikacijama koje rade sa bazama podataka, vi vrlo često menjate podatke u bazi, time sama baza postaje fragmentirana i zauzima više prostora na disku nego što je neophodno. Periodično, možete izvršiti kompakciju (compacting) baze podataka radi defragmentacije fajla. U ovom i narednom prilogu obradićemo kako uz pomoć Delphi-ja izvršiti kompaktovanje Access baze podataka, i to iz programskog koda.
Kako vremenom dodajete i brišete podatke (slogove) u tabele baze podataka, vaša baza postaje sve više i više fragmentirana i nepotrebno zauzima dodatni prostor na disku. U procesu komaktovanja kreira se kopija baze podataka, i vrši se rearanžiranje načina smeštaja baze na hard disku. Baza podataka koja je kompaktovana uobičajeno je manja po obimu i često se mnogo brže pokreće.
Kreirajte novi Delphi projekt sa jednom korisničkom formom. Na formu dodajte jedno dugme (Button) i dve Edit kontrole. Sa „ActiveX“ kartice komponenti dodajte na formu i kontrolu „JetEngine“ (da biste je videli na paleti, sa menija izaberite „Project> Import Type Library“, te u narednom dijalogu instalirajte „Microsoft Jet and Replication Objects 2.x Library (Version 2.x)“ biblioteku). Naziv prve Edit kontrole preimenujte u „edIzvor“, a druge u „edCilj“, te dugme preimenujte u „btnKompakt“. Na kraju preimenujte i JetEngine kontrolu u samo „JE“, a forma bi trebalo da bude slična ovoj na slici. Klasa „TJetEngine“ poseduje metod CompactDatabase, koji ćemo koristiti, a koji poseduje dva parametra – dva stringa za ADO konekciju. Ova dva stringa je odnose na izvorišnu i odredišnu bazu podataka. Metod CompactDatabase kompaktovaće bazu podataka i daće vam opcije izmene verzije baze, enkripcije i lozinke. Enkripcijom ćete zaštiti bazu podataka od čitanja uz pomoć nekih uslužnih programa ili tekst procesora, a takva baza i dalje ostaje čitljiva i možete je otvoriti uz pomoć Access-a ili iz Delphi koda.
Na našoj formi, polje „edIzvor“ namenjeno je za upis baze podataka (i njene putanje) koju želimo da kompaktujemo, a drugo tekst polje za specifikaciju odredišne baze podataka. Istovremeno, unutar stringa konekcije navodimo niz konekcionih parametara kojima određujemo način otvaranja izvorne baze podataka i način kako će se izvršiti kompakcija na odredišnoj bazi. Minimalno je da kod konekcije navedete samo putanje do izvora/odredišta (unutar osobine Data Source) i naziv baze podataka. Kada koristite metod CompactDatabase, ne možete snimiti kompaktovanu bazu podataka pod istim nazivom (nazivom izvorišne baze), a takođe metod zahteva i to da odredišna baza podataka ne postoji. Nastavićemo priču u sledećem prilogu.
Pratite Krstaricu na www.krstarica.com