Dimensioni database MSAccess non diminuiscono nonostante svuoto le tabelle

  • Creatore Discussione Creatore Discussione halinder
  • Data di inizio Data di inizio

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"?
 
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.
 
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:
 

Discussioni simili