L'azzeramento o pulizia delle tabelle lascia inalterato lo spazio occupato dai record cancellati, per diminuire la dimensione del data base bisogna compattarlo:
in DAO:
NomeDB= c:\db1.mdb
DBSalva = c:\db1salva.mdb
'copia di sicurezza del data base prima della compattazione
FileCopy NomeDB, DBSalva
'cancella data base temporaneo db1.tmp (controlla gli errori perchè se non c'è ...)
Kill Mid(Trim(NomeDB), 1, Len(Trim(NomeDB)) - 3) & "tmp"
'compatta su db1.tmp
CompactDatabase NomeDB, Mid(Trim(NomeDB), 1, Len(Trim(NomeDB)) - 3) & "Tmp"
'cancella db1.mdb
Kill NomeDB
'copia da db1.tmp
FileCopy Mid(Trim(NomeDB), 1, Len(Trim(NomeDB)) - 3) & "tmp", NomeDB
in ADO:
Bisogna aggiungere nei riferimenti del progetto la dll:
Microsoft Jet and replication Objects 2.6 Library (msjro.dll)
dal codice precedente DAO cambia solo la compattazione.
Set CONN = New JRO.JetEngine
CONN_Sorg = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & NomeDB
& ";User ID=Admin;Password=;"
CONN_Dest = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Mid(Trim(NomeDB), 1, Len(Trim(NomeDB)) - 3) & "Tmp" & ";"
'
CONN.CompactDatabase CONN_Sorg, CONN_Dest
'
Set CONN = Nothing

Rispondi quotando