Dimensioni database MSAccess non diminuiscono nonostante svuoto le tabelle

halinder

Nuovo Utente
7 Ott 2008
3
0
0
Salve a tutti!

Mediante un programma scritto in delphi 7 riempo un database MSAccess composto da una decine di tabelle. Man mano che aggiungevo record le dimensioni del database sono passate da pochi mega a 150 mega. Ora ho svuotato le tabelle tramite l'istruzione delete ma, nonostante i record siano stati effettivamente eliminati, le dimensioni del database non sono diminuite. Perchè? La dimensione del database non è proporzionale ai dati che contiene? Esiste un modo per "ricompattare"?
 

halinder

Nuovo Utente
7 Ott 2008
3
0
0
Grazie. Mi hai messo sulla giusta strada! Ecco la funzione con cui ho risolto il problema da codice, dovesse servire anche a qualcun'altro...

procedure TFm_Login.CompactDatabase;
var MsJet: Variant;
begin
Fm_Login.ADOCnt.Close;
MsJet := CreateOleObject('JRO.JetEngine');
MsJet.CompactDatabase('Data Source="<percorso database>"; Jet OLEDB : Database password="<password database>";',
'Data Source="<percorso database backup>"; Jet OLEDB : Database password="<password database backup>";');
DeleteFile('<percorso database>');
RenameFile('<percorso database backup>','<percorso database>');
end;

Bisogna anche importare la unit ComObj al progetto.
 

lukeonweb

Utente Attivo
5 Mar 2003
5.180
10
38
42
Napoli
www.lucaruggiero.it
Viene eseguita in automatico per compattare il database durante l'utilizzo di un progetto?

Se si... hai voglia di scrivere un articolo in merito?

Lo pubblichiamo su Mr.Webmaster con link al tuo sito :fonzie: