Newsgroup: it.comp.lang.delphi
Titolo: Compattare file MDB

E' possibile farlo da Delphi?
Grazie
Alberto.

Per farlo devi chiamare direttamente il provider OLEDB
e devi usare la versione 4, la 3 non supporta la funzione di compattazione
del DB. La cosa per fortuna non è difficile, se metti ComObj nelle uses puoi
adattare il seguente frammento di codice.
var MSJET:Variant;
.....
  MSJET:=CreateOleObject('JRO.JetEngine');
  MSJET.CompactDatabase('Data Source=C:\MiaDir\MioFile.mdb;',
                       'Data Source=C:\MiaDir\MioFileBak.mdb;');
  deletefile('C:\MiaDir\MioFile.mdb');
  renamefile('C:\MiaDir\MioFileBak.mdb','C:\altro\MioFile.mdb')
Naturalmente se vuoi puoi importare la type library ed evitare l'uso di
CreateOleObject....

 ha scritto nel messaggio
news:NINL7.164874$sq5.7...@news.infostrada.it...

Grazie davvero, vado subito ad implementare il codice nel mio programma.
Alberto.

Per farlo devi chiamare direttamente il provider OLEDB
<...>
Oppure, come alternativa, si puo' chiamare Access passando
come parametro sulla riga di comando /compact.
Dovrebbe bastare qualcosa del tipo:
msaccess /compact miodatabase.mdb
-- 
The Follet

 ha scritto nel messaggio
news:3c01b96a...@news.tin.it...

La procedura di Giovanni funziona perfettamente. Ha il vantaggio di
riferirsi al solo Jet per cui non dovrebbe essere necessaria la presenza di
MS Access. O no?
Grazie per la disponibilità
Alberto

MS Access. O no?
Hmmm... non ci giurerei...
-- 
The Follet

 ha scritto nel messaggio
news:3c00c9b5...@news.tin.it...

Non farmi preoccupare. Di sicuro mi interfaccio alle tabelle mdb con ADO
senza la necessità di Access, l'importante è avere una versione di Internet
Explorer >= alla versione 4. Ho le prove che è così per cui deduco che il
Jet sia presente indipendentemente da Access. Non so se utilizzando il jet
come Ole server sia un'altra storia. Dici che dovrei disinstallare Access
per provare?
Grazie.
Alberto.

Non so se utilizzando il jet come Ole server sia un'altra storia. 
Io non so se l'automation server a cui si riferisce Giovanni
e' messo a disposizione da Access o si installa a parte.
-- 
The Follet

 ha scritto nel messaggio
news:3bffff8f...@news.tin.it...

Premesso che accedo alle tabelle mdb con ADO, mi sembra di capire che il
dubbio rimane. Giovanni, tu che ne pensi? Taglio la testo al toro e
disinstallo Access per provare?
Ciao.
Alberto

 MS Access. O no?
*Devi* (se parli di Access97 => DAO35) installare il DAO (ovv.te devi
averne il diritto, che ti viene, ad es. ma non esclusivamente, dal
possedere un prodotto di sviluppo MS adeguato).
Occhio che l'installazione del DAO di per se' e' piuttosto
order-dependent (sperimentato): sotto riporto uno stralcio del .iss che
mi fa l'installazione (testata su un W2k *nudo*).
Tieni conto che disinstallare Access in genere fa un baffo al DAO.
Considera di usare un tool tipo Dependency Walker (v. su Google) per
vedere *esattamente* quali DLL invoca il tuo processo quando si avvia.
Saluti
Paolo Arosio
; porzione di script Inno Setup per installazione DAO
Source: "C:\WINNT\system32\expsrv.dll"; DestDir: {sys}; Flags:
sharedfile
Source: "C:\WINNT\system32\msjter35.dll"; DestDir: {sys}; Flags:
sharedfile restartreplace
Source: "C:\WINNT\system32\msjint35.dll"; DestDir: {sys}; Flags:
sharedfile restartreplace
Source: "C:\WINNT\system32\msjet35.dll"; DestDir: {sys}; Flags:
regserver sharedfile restartreplace
Source: "C:\WINNT\system32\msrd2x35.dll"; DestDir: {sys}; Flags:
regserver sharedfile restartreplace
Source: "C:\WINNT\system32\vbajet32.dll"; DestDir: {sys}; Flags:
sharedfile restartreplace
Source: "C:\WINNT\system32\vbar332.dll"; DestDir: {sys}; Flags:
sharedfile restartreplace
Source: "C:\WINNT\system32\msrepl35.dll"; DestDir: {sys}; Flags:
sharedfile restartreplace
Source: "C:\WINNT\system32\vb5db.dll"; DestDir: {sys}; Flags: sharedfile
restartreplace
Source: "C:\WINNT\system32\ODBCJt32.dll"; DestDir: {sys}; Flags:
sharedfile restartreplace
Source: "C:\WINNT\system32\ODBCJI32.dll"; DestDir: {sys}; Flags:
sharedfile restartreplace
Source: "C:\WINNT\system32\ODBCTL32.dll"; DestDir: {sys}; Flags:
sharedfile restartreplace
Source: "C:\Programmi\CommonFiles\MSShared\Dao\dao350.dll"; DestDir:
{dao}; Flags: regserver sharedfile restartreplace uninsneveruninstall
noregerror
Source: "C:\Programmi\CommonFiles\MSShared\Dao\dao2535.tlb"; DestDir:
{dao}; Flags: restartreplace uninsneveruninstall