Newsgroup: it.comp.lang.visual-basic
Titolo: JRO: compattazione file mdb fallita

In un'applicazione VB6 che sto scrivendo vorrei compattare un database
access e come da msdn sto usando il seguente codice:
Dim JRO As JRO.JetEngine
Set JRO = New JRO.JetEngine
JRO.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Source=Config.mdb;Jet
OLEDB:Database Password=miapassword", _
"Provider=Microsoft.Jet.OLEDB.4.0;Source=Config_compattato.mdb;Jet
OLEDB:Engine Type=4;Jet OLEDB:Database Password=miapassword"
Set JRO = Nothing
Il problema è che non funziona e mi restituisce il seguente errore:
errore di runtime 
2147467259
impossibile trovare isam installabile.
sto utilizzando ado 2.8 e jro 2.6.
Avete qualche suggerimento??
Grazie
Fabio
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ha scritto nel messaggio
news:87Z12Z136Z111Y1...@usenet.libero.it...> In un'applicazione

via 
http://arianna.libero.it/usenet/Provato
 così:Dim jro As JRO.JetEngine
' istanzio JetEngine
Set jro = New JRO.JetEngine
' SE già presente, elimino file temporaneo
If Dir("database_compattato.mdb") <> Empty Then
  Kill "database_compattato.mdb"
End If
' compatto il database
jro.CompactDatabase "Data Source=database.mdb;", _
  "Data Source=database_compattato.mdb;"
' cancello il database originale
Kill "database.mdb"
' rinomino il file compattato col nome originale
Name "database_compattato.mdb" As "databse.mdb"
' azzero oggetto JRO
Set jro = Nothing
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------

Alessandro ti ringrazio per la risposta. In realtà quel codice lo avevo già
testato e ti posso dire che funziona solo se nel database non è impostata la
password. Se la imposto e nel codice aggiungo la stringa per superare la
password mi dà lo stesso errore che ho descritto nel post precedente!!!!!
Grazie


 Grazie
Provato anche così:
Dim CNN As JRO.JetEngine
 Dim CnnSource As String
Dim CnnTarget As String
Set CNN = New JRO.JetEngine
CnnSource = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Old.mdb;User
ID=Admin;Password=tuaPwd;"
CnnTarget = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=new.mdb;Jet
OLEDB:Engine Type=4;"
CNN.CompactDatabase CnnSource, CnnTarget
 Set CNN = Nothing
......


L'ho appena provato , mi dà questo errore:
"Impossibile avviare l'applicazione. Il file di informazione sul gruppo è
mancante o aperto in modo esclusivo da un'altro utente."
Chiaramente il file è chiuso!!!!
A questo punto non saprei che fare!!!!


 OLEDB:Engine Type=4;Jet OLEDB:Database Password=miapassword"
Ciao Fabio,
il nome del db va preceduto da "Data Source=" e non con "Source=".
Infatti se si mette solo "Source=" si riceve l'errore da te segnalato.
il resto mi sembra a posto.
----
How To Compact Microsoft Access Database Through ADO
http://support.microsoft.com/kb/230501/en-us
----
Ciao
-- 
Giorgio Rancati
[Office Access MVP]

Alessandro...allora guarda il codice sotto, è molto simile al tuo:
Dim CNN As jro.JetEngine
Dim CnnSource As String
Dim CnnTarget As String
Set CNN = New jro.JetEngine
CnnSource = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=config.mdb;"
CnnTarget = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=new.mdb;Jet
OLEDB:Encrypt Database=True;"
CNN.CompactDatabase CnnSource, CnnTarget
Set CNN = Nothing
ho cambiato Jet OLEDB:Engine Type=4 con Jet OLEDB:Encrypt Database=True.
Così' funziona solo che ho dovuto togliere la password al database, ma non
posso farlo però nella mia applicazione.
Se lascio il tuo codice intatto togliendo però la password al database mi dà
questo errore e credo che stia qui il problema che non sò come risolvere:
"impossibile eseguire l'operazione. Caratteristiche della presente versione
non disponibili per database di formati precedenti"


 non disponibili per database di formati precedenti"
al posto di "Engine Type=4" metti "Engine Type=5"
per il significato vedi la tabella in fondo a questo link


Alessà finalmente è andato....questo è il codice:
Dim CNN As jro.JetEngine
Dim CnnSource As String
Dim CnnTarget As String
Set CNN = New jro.JetEngine
CnnSource = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=config.mdb;Jet
OLEDB:Database Password=test"
CnnTarget = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=new.mdb;Jet
OLEDB:Engine Type=5;Jet OLEDB:Database Password=test"
CNN.CompactDatabase CnnSource, CnnTarget
Set CNN = Nothing
Ho cambiato Type=4 in Type=5...............? a che serve???????
Grazie molte!!!!!


> impossibile trovare isam installabile.
Ciao. Microsoft dice che per risolvere l'errore di ISAM Installabile basta
aggiornare la versione di Jet dalla 3.5 alla 4.0. Naturalmente, non
funziona, anche perché tu stai già utilizzando il Jet 4.0.
Questo errore viene anche restituito quando la stringa di connessione
contiene uno spazio prima della parola "Database Password", ma tu non
utilizzi una password globale per il database.
So bene che sembra una cretinata, ma spesso ho risolto questo errore
semplicemete copiando il file .mdb, cancellando l'originale, rinominando la
copia e aprendola al posto dell'originale. Spero ti sia d'aiuto.


Grazie Alessandro e Giorgio......senza il vostro aiuto non avrei mai risolto
il problema!!!!!
