Newsgroup: it.comp.lang.visual-basic
Titolo: HELP Java , Lupo & Co. ho il DAO arrugginito!

Devo compattarmi il database aCess 2000 e son fuso (son con stasera 5
nottate!...e giornate)
Logicamente non mi compatta perchè non so che cavolo di database o tabella
ho lasciata aperta
Come cavolo si fa a vedere che ho aperto? non me lo ricordo sigh!
Devo esaminare Workspaces vero?
help 2 righe al wodkino fuso...devo chiudere tutto quello che ho aperto per
compattarlo! sigh!

 nottate!...e giornate)
CUT
DBEngine.Workspaces(0).Close
Scusate...mi è tornato in mente!!!!

 ha scritto nel messaggio
news:_47d9.57910$pX1.1...@news2.tin.it...

Preso e copiato dalla mia D_CHIUDI_TUTTO (DAO):
Sub D_CHIUDI_TUTTO()
        For Each ws In DBEngine.Workspaces
    '           Il metodo che segue (Do) e' necessario perche' il primo
    '           database aperto occupa l'indice 0 di ws.Databases
    '           Quando lo si chiude lo stesso indice viene occupato
    '           dal successivo Database aperto
    '           Lavorando con il solo For l'indice va da 0 in avanti
    '           e il database che ha occupato l'indice precedente
    '           non verrebbe rilevato e quindi chiuso.
            ReDim vdb(0 To 0) As Object
            n_db = 0
            Do
                If ws.Databases.Count = 0 Then Exit Do
                For Each db In ws.Databases
                    Do
                        n_db = n_db + 1
                        ReDim Preserve vdb(0 To n_db) As Object
                        Set vdb(n_db) = db
                        Exit Do
                    Loop
                Next db
                For comodo = 1 To n_db
                    Call D_CHIUDI(vdb(comodo))
                Next comodo
                ReDim vdb(0 To 0) As Object
                Exit Do
            Loop
        Next ws
End Sub
Sub D_CHIUDI(oggetto_db, ambiente_ado)
    Call D_SBLOCCA_ENGINE
    If oggetto_db Is Nothing = 0 Then
        If ambiente_ado = 0 Then
            If TypeOf oggetto_db Is database Then
    '               Il metodo che segue (Do) e' necessario perche' il primo
    '               recordset aperto occupa l'indice 0 di
oggetto_db.Recordsets
    '               Quando lo si chiude lo stesso indice viene occupato
    '               dal successivo recordset aperto
    '               Lavorando con il solo For l'indice va da 0 in avanti
    '               e il recordset che ha occupato l'indice precedente
    '               non verrebbe rilevato e quindi chiuso.
                Dim recset As Object
                Do
                    comodo = -999
                    On Error Resume Next
                    comodo = oggetto_db.Recordsets.Count
                    On Error GoTo errore
                    If comodo <= 0 Then Exit Do
                    If oggetto_db.Recordsets.Count = 0 Then Exit Do
                    For Each recset In oggetto_db.Recordsets
                        On Error Resume Next
                        recset.Close
                        On Error GoTo errore
                        Set recset = Nothing
                    Next recset
                Loop
            End If
        End If
        On Error Resume Next
        oggetto_db.Close
        On Error GoTo errore
    End If
    Set oggetto_db = Nothing
    Call D_SBLOCCA_ENGINE
    Exit Sub
errore:
    Call ERRORE_DLL
End Sub
Sub D_SBLOCCA_ENGINE()
    DBEngine.Idle dbFreeLocks
    DBEngine.Idle dbRefreshCache
End Sub

         For Each ws In DBEngine.Workspaces
salvata, ovviamente, ma la mia e' piu' sintetica.
    maindb.close
mai usato un workspace in vita mia :)
ciao, a.
se proprio vuoi anche la ciliegina, dopo il pack (che peraltro di
solito faccio in uscita), se sono di buon umore, alla fine della sub
di compattazione ripeto
    set maindb=opendatabase...
ma devo essere di umore proprio ottimo :)

 Scusate...mi è tornato in mente!!!!
uomo di poca fede.
lo vedi, che se anche ti si arrugginisce il dao, alla fine lo trovi il
viagra ?
dao, a. :P


Circa 9 minuti a giudicare dai tuoi due post. :-)))
Sicuramente meglio di me, ormai l'andro mi travolge!
_____________________________________________
James Tiberius Kirk, matricola SC 937-076 CEC
  Nato a Riverside, nello Iowa, USA, Terra
            il 1277.1 (26/03/2233)

 mai usato un workspace in vita mia :)
J, nemmeno io, ma cosě ho dovuto fare per l'occasione...

 solito faccio in uscita)
Beh, dovrebbe essere fatta all'avvio, anche se è noiosa per l'utente.
Motivo?
Ti si crasha l'app, l'app non "esce" e il DB è scassato.
Se non hai access puoi prendere il DB e buttarlo insieme all'app.
Ciao
--
' // Initialize the expression evaluator
Engines.Evaluator = CreateObject("
http://www.neodatatype.net
")
' // you can find resources for and from the NG here!
Me.SitoComune = "
http://www.it-lang-vb.it
"

 Se non hai access puoi prendere il DB e buttarlo insieme all'app.
francamente non vedo la differenza, almeno con access (non so con
altri db), mentre ne vedo una sostanziale fra pack opzionale e
automatico.
ciao, j.