Newsgroup: it.comp.appl.access
Titolo: ECCO come compattare il DB in uso con un pulsante! :-)

Ho trovato un modo sensatamente utile per permettere all'utente di
compattare il DB in uso tramite un "pulsante" (finto, ma funziona)
posizionato su una maschera.
L'idea è semplice... creo, posiziono e visualizzo tramite codice una barra
comandi con un solo pulsante, quello della compattazione di Access (il
comando è lo stesso del menu strumenti/utilità/compattazione)
Il bello è che la barra comandi la posso posizionare via codice, e quindi la
metto sulla maschera al posto del pulsante che dovrebbe eseguire la
compattazione :-)
Uso 2 funzioni:
CreaPulsanteCompattazione() -> crea il pulsante sull'evento di apertura
della maschera
NascondiPulsanteCompattazione() ->elimina il pulsante sull'evento di
chiusura della maschera
Inoltre (IMPORTANTE) "NascondiPulsanteCompattazione()" va richiamata anche
all'apertura del DB, perchè altrimenti la barra resta visualizzata dopo la
compattazione :-)
Public Sub CreaPulsanteCompattazione()
Dim cm As CommandBar
On Error Resume Next
CommandBars.Add ("Compattazione")        'creo la barra
Set cm = CommandBars("Compattazione")
cm.Protection = msoBarNoChangeDock + msoBarNoChangeVisible +
msoBarNoCustomize + msoBarNoHorizontalDock + msoBarNoMove + msoBarNoResize
'non modificabile, non personalizzabile, non chiudibile, non spostabile, non
dockabile....
If cm.Controls.Count = 0 Then  'se non ha controlli aggiungo
                                                    ' il mio bottone (serve
per non continuare
                                                    'ad aggiungere lo stesso
controllo se richiamo
                                                    'questa funzione senza
aver eliminato la barra)
  cm.Controls.Add msoControlButton, 2071    'uso l'ID del controllo del
comando di access per la compattazione
  cm.Controls(1).Enabled = True
  cm.Controls(1).Style = msoButtonCaption     'solo testo, senza icona
(questo comando non ha l'icona)
  cm.Controls(1).Caption = "         6 - Compatta FrontEnd          "
'testo da visualizzare (uso gli spazi per allargare il pulsante)
End If
cm.Visible = True
cm.Top = 200   'posizione assoluta della barra rispetto al bordo superiore
dello schermo, in pixel
cm.Left = 566   'posizione assoluta della barra rispetto al bordo superiore
dello schermo, in pixel
End Sub
Public Sub NascondiPulsanteCompattazione()
CommandBars("Compattazione").Delete
End Sub
Funziona che è uno spettacolo :-)
L'unica caosa che mi chiedo è quanto sia standard l'ID del comando di
compattazione di access, quel 2071.
Io uso Access 2K SR1+SP2.
Qualcuno mi piò dire se funziona anche su altre versioni? (97-XP)
Ciao, Max

compattazione :-)
(CUT)
Una domanda: perchè non ti va l'autocompattazione all'uscita di A '2000?
Generalmente è meglio evitare all'utente l'incombenza della compattazione (anche sul lato BE) e
automatizzare il più possibile...
Ciao, warp

 ha scritto nel messaggio
news:9h039j$ola$1...@fe2.cs.interbusiness.it...

Volevo la possibilità di farlo da una maschera di manutenzione, solo quando
serve.
Tanto sarà una maschera che useremo probabilmente solo noi per fare
assitenza, è "professionale" avere un bottoncino per la compattazione :-)
Max