Newsgroup: it.comp.appl.access
Titolo: Schedulare la compattazione di un DB

Spero di non postare un domanda stupida, ma il mio problemino e' questo:
avrei bisogno di compattare il BE ad una certa ora (vedi quando non ci sono
utenti che lo usano es. pausa pranzo o notte)
mi spiego meglio, ho un BE su pc con WIN NT e 6 FE su PC con WIN98-WIN95 e
WINNT e siccome e quasi impossibile trovare un momento in qui tutti gli
utenti non stanno usando il BE pensavo di schedulare la compattazione
durante un momento morto tramite WIN AT ma non so se da riga di comando
questo č possibile.
Aspetto fiducioso una Vostra dritta, ciao a tutti.


Vado un po' controNG, ma se hai NT e devi lanciare la compattazione in orari
dove non lavora nessuno, prova a considerare gli script wsh...
Esempio:
dim oApp,risposta
risposta=msgbox("Questo script compatta un db Access, vuoi
proseguire?",vbyesno,"CompattaMDB")
if risposta=vbno then
 msgbox "Script interrotto.",vbokonly,"CompattaMDB"
else
  call compMDB
end if
sub compMDB()
 set oApp=createobject("Access.Application")
 oApp.dbengine.compactdatabase "e:\wsh 5.1\ng.mdb","e:\wsh 5.1\ng_c2.mdb"
 oApp.quit
 set oApp=nothing
end sub
Ovviamente cambiando i parametri...
Ciao.

 wrote in message
news:8caflm$l0t$1...@suite03.caspur.it...

Ciao Sergio,intanto di ringrazio per l'interessamento ma provo a spiegarmi
meglio, io la compattazione del BE l'ho già inserita nel menu' del FE dove
l'utente quando gli pare clicca sul tasto COMAPATTA e tutto funziona a meno
che non ci siano utenti attivi e anche qui controllo l'errore di DB in uso
che Access mi restituisce.
Il problema che ho riscontrato e che gli utenti trovano sempre il DB aperto
perche c'e' qualche collega connesso e non si preoccupano di dirgli di
uscire e quindi ricomparlo (sono solo degli utilizzatore, non sanno neanche
cosa vuol dire DB) e di conseguenza per la prima settimana lo facevano, la
seconda un po meno la terza meno ancora e cosi' via. Alla fine mi sono
trovato un DB da 80 MB con solo 5000 record con ovvi rallentamenti nella
procedura.
La mia intenzione era quella di poterlo fare magari da un file batch quindi
senza la presenza dell'operatore.
Bingooooooo! che stupido non ci avevo pensato!!
In questo preciso istante mi e venuta un'idea, che ne dici se faccio un DB
che su apertura di una form che metto in autoesecuzione esegue la
compattazione del BE e poi esce da Access.
Potrei eseguirlo alle 2 di notte e dovrebbe essere tuto OK.
Puo' essere una buona soluzione ???


La soluzione che ti prospettavo era proprio in previsione del fatto che tu
lanciassi la compattazione del o dei db in momenti che sicuramente non ci
sono attività, quindi di notte.
Buon lavoro...

, 
infoDE...@abcdnet.com
 says...
[snip]
Puoi sempre lanciare Access da riga di comando con un file batch e quindi 
schedularlo:
msaccess.exe c:\db\miodb.mdb /compact
-- 
JBad

utenti che lo usano es. pausa pranzo o notte)
Sul sito comune c'e' un programma che ho scritto un po' di tempo fa, e
che io uso tutte le notti per compattare un gran numero di database
sul mio server. Io lo lancio in automatico tramite scheduler AT, ma lo
puoi anche usare interattivamente (c'e' uno switch per lanciarlo in
automatico).
E' un programmino molto semplice, tu configuri quali cartelle o dischi
(non database) compattare e lui si va a cercare tutti i file MDB
contenuti e se li compatta in ordine di dimensione partendo dal piu'
piccolo (per utilizzare al meglio lo spazio libero sul disco, nel caso
i dischi siano quasi pieni).
-- 
Ciao,
Giovanni