Newsgroup: it.comp.lang.visual-basic
Titolo: [TIP] Compattazione DB Access

Forse non servira' a molti, ma nel dubbio...
Public Sub CompattaDatabaseAccess(ByVal sPathDb as String)
Dim objAccess As Object
  ' Istanza dell'oggetto
  Set objAccess = CreateObject("Access.Application")
 
  ' Necessario xche' la CompacdDatabase non funziona con i nomi uguali
  Name sPathDb As "c:\wxyz.mdb"
  ' La funzione crea una copia compattata del database!
  Call objAccess.DBEngine.CompactDatabase("c:\wxyz.mdb", sPathDb)
  DoEvents
  ' Cancello l'originale non compattato
  Kill "c:\wxyz.mdb"
 
  Set objAccess = Nothing
End Sub

   Set objAccess = CreateObject("Access.Application")
E se Access non e' installato?
Ma il codice, gia' pubblicato, per Dao o Ado cos'ha che non va?
ciao
	maxx
-- 
NOSPAM: Rimuovere i trattini dallo username!
Cut hyphens from my username!

 	maxx
Bye by SixaM 8-]
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

   Set objAccess = CreateObject("Access.Application")
Necessita che il cliente abbia installato Access (ma dovrebbe bastare anche
il runtime, qualcuno conferma?) in versione uguale o successiva al formato
del db stesso.
termoPilucco

   Call objAccess.DBEngine.CompactDatabase("c:\wxyz.mdb", sPathDb)
Fermo restando la necessità della presenza di MsAccess, può essere
interessante, ma un dubbio:
Se sulla macchina è installato un Ms Access successivo alla versione 97,
mentre il database da compattare è in versione 97, di che versione sarà quel
compattato?
In DAO quell'istruzione (che assomiglia moltissimo, mi pare esattamente la
stessa) ammette dei parametri per specificare la versione del database di
destinazione, usando objAccess come sopra è possibile fornire tali
parametri?

 >
Ciao,
con Jet e senza che Access sia installato
----------------------------------
Public Sub CompattaDatabaseAccess(ByVal sPathDb As String)
Dim objAccess As Object
Dim DbEng  As Object  'DbEngine DAO 3.6
  Set DbEng = CreateObject("DAO.DBengine.36")
  ' Necessario xche' la CompacdDatabase non funziona con i nomi uguali
  Name sPathDb As "c:\wxyz.mdb"
 'Compatto il database
  DbEng.CompactDatabase "c:\wxyz.mdb", sPathDb
DoEvents
  ' Cancello l'originale non compattato
  Kill "c:\wxyz.mdb"
  Set DbEng = Nothing
End Sub
---------------------------------
Ciao Giorgio

 parametri?
Non si può.
Però è possibile usare un altro metodo (non so da quale versione è stato
aggiunto):
ConvertAccessProject(nomedbsrc, nomedbdest, acFileFormatAccessXX)
Tra l'altro in DAO la compattazione con conversione contemporanea è buggata:
se si cerca di salvare in formato 2002
ne risulta un file in formato 2002 ma che Access stesso non riconosce come
tale.
termoPilucco

 come tale.
DAO è stato mollato ben prima del 2002 [anche se MSDN dichiara(va) che solo
le funzioni nuove del 2002 verranno considerate da apposito applicativo
(leggi chi davvero tratta i formati 2002), per il resto dovrebbe essere
trattato identicamente a un "normale" 2000, senza alcun problema,
cin-cin...].
Per certi versi, con questo si potrebbe anche (lecitamente) spiegare che non
ha senso convertire un 97/2000 in 2002, perchè la "fonte" ("vecchia") non ha
le info/caratteristiche proprie e speciali del 2002