Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Compatta e ripristina db

Volevo sapere, se qualcuno l'ha già fatto, se è possibile fare il
compatta/ripristina di un db usando gli oggetti ADO. Prima infatti usavo il
buon "vecchio" DAO e c'era l'oggetto DBEngine che metteva a disposizione il
metodo CompactDatabase appunto per comprimere il database. Ora come faccio?
Oltretutto, usando il formato di Access 2000, ho visto che le dimensioni
salgono piuttosto alla svelta.......ne ho proprio bisogno!!!!
Damiani Igor
ico...@simcity.it

 wrote


 ha scritto nel messaggio
news:hqif4.35414$I3.3...@news.infostrada.it...


 wrote in message


 Cavoli !! Questa la so !!
vedi ? mai disperare ! c'e' sempre un momento in cui se ne sa di piu' :)
in termini un po' cinici, resta tranquillo sulla riva del fiume. io ne ho
visti passare, galleggiando, tanti...
in termini filosofici, riformulando un detto comune, la programmazione e':
- ispirazione (0.5%)
- traspirazione (49.5%)
- pazienza ( zen, yoga, cristiana, enpa, quello che meglio si addice... il
fine giustifica i mezzi... :)
grazie mille a te e a igor,
pal

 wrote:
Sbaglio, o cosi' si finisce ad usare DAO ?
Francesco

------------
Francesco Beccari
frankb@I_HATE_SPAM_interplanet.it

 >fine giustifica i mezzi... :)
ciao, se con "cosi'" intendi con la filosofia (chiamiamola cosi') che ho
espresso, cosi' si finisce per usare qualunque sistema con cui il programma
(in ordine di importanza):
1. non crolli. mai. (compatibilmente col big bang, le atomiche ucraine e
altre variabili di simile rilevanza, almeno).
2. non si inchiodi appena le schede sono in un numero dispari maggiore di
uno.
3. non faccia morire l'utente o invitarlo a andarsi a prendere un caffe'.
non tornerebbe mai piu'.
ci sono altre condizioni minime e minori, ma gia' queste tre sono molto rare
a raggiungersi insieme...
in quindici e piu' anni di "this is the ultimate technology" o io non ho
ancora capito il senso dell'aggettivo "ultimate" o c'e' qualcuno che pensa
di prendere tutti per i fondelli e accrescere il suo conto corrente.
guardacaso l'unico formato office2k non compatibile col 97 e' l'mdb...
passiamo a ado ? passiamoci ! salvo che poi ti dicono: "non va? be', e' in
sviluppo, cosa credevi ? devi aggiornare al 2.1"
sto rimpiazzando dei programmi clipper 5.01 che non perdevano un colpo su
dei 286 con dei cessi in ca-vo e vdbase che faticano su dei p3/500. c'aggio
a'ddi ?
l'informatica e' l'unico campo in cui in vita mia il produttore per
rimediare a un buco riconosciuto chiede soldi. qualche giorno fa mi sono
trovato davanti a un prg ux in cui la finestra telnet mi diceva sconsolata:
"cant manage the date 08/01/2000 with the setting 99/99/99". e so gia' che i
produttori vorranno soldi.
mi ritengo un programmatore, ma prego perche' in questo campo ralph nader
riscuota seguaci. e prego anche perche' linux e la sua filosofia si
diffondano (anche se non sono purtroppo nelle condizioni di seguirli): ms ha
accelerato il sistema monopolistico di ibm, e in italia purtroppo tutte e
due hanno fatto scuola. coi brillanti risultati di gente che chiede 5-20 m£
per prg che valgono 1/10 di shareware usa a $40.
se invece intendevi qualcos'altro, butta via tutto, per favore. forse non ho
capito.
ciao, andrea

 compatta/ripristina di un db usando gli oggetti ADO.
Questo è un codice d'esempio che utilizza gli MS-JRO di ADO 2.1 (Microsoft
Jet And Replication Object) che avevo postato già qualche settimana fa. Ha
bisogno di un database in formato Access 2000 e deve quindi usare l'OLE-DB
Provider per Jet versione 4.0.
Come probabilmente saprai in Access 2000 compattazione e ripristino sono
un'operazione unica e non possono più essere eseguite separatamente.
Nel setup deve essere inclusa la MSJRO.DLL ma se installi gli ADO con
l'mdac_typ.exe non ci sono problemi e sulle macchine dove hai installato
l'applicazione c'è sicuramente già.
Private Sub CompattaPippo()
'Compatta e ripara il file c:\pippo.mdb
'cnAdo è un oggetto Connection ADO che apro in un modulo BAS
'e che uso in tutta l'applicazione
'la proprietà cnAdo.ConnectionString deve essere già settata
'cnAdo deve essere chiusa perchè l'operazione di compattazione
'deve aprire una Connection esclusiva
Dim je As New JRO.JetEngine
Principale.MousePointer = vbHourglass
On Error GoTo Errore
If cnAdo.State = adStateOpen Then cnAdo.Close
je.CompactDatabase cnAdo, "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=c:\pippo2.mdb;"
Kill "c:\pippo.mdb"
Name "c:\pippo2.mdb" As "pippo.mdb"
cnAdo.Open
Principale.MousePointer = vbNormal
MsgBox "Compattazione e ripristino dell'archivio eseguiti correttamente",
vbInformation, "Procedura terminata"
Exit Sub
Errore:
Dim AdoErrore As ADODB.Error, strErroreTemp As String
Principale.MousePointer = vbNormal
strErroreTemp = "Errore N." & Err.Number & vbCrLf & Err.Description
For Each AdoErrore In cnAdo.Errors
    strErroreTemp = strErroreTemp & vbCrLf & vbCrLf & AdoErrore.Number & " -
" & AdoErrore.Description
Next
MsgBox strErroreTemp, vbCritical, "Errore!"
If cnAdo.State = adStateClosed Then
    cnAdo.Open
Else
    cnAdo.Close
    cnAdo.Open
End If
End Sub
Ciao,
   <--< Nik >-->

Bella Storia!!!
Luca