Newsgroup: it.comp.appl.access
Titolo: Server quasi pieno : access sbarella

Proprio vero che l' esperienza e' tutto (o quasi).
Accade un fatto che MAI e poi MAI avrei potuto
"dedurlo" teoricamente ed e' il seguente :
c'e' un access server e un access client.
Il server e' alimentato *e* dai dati che inseriscono
gli utenti *e* da dati che provengono dall' esterno.
Ho sviluppato una routine R che tutti i giorni ad
una certa ora :
- prende i dati recenti dal DB2
- cancella  le tabelle del server (DROP TABLE)
- ci mette quelli nuovi (INSERT INTO)
Quando lo spazio del disco sul quale il server riposa
fisicamente e' la la per esaurirsi, dopo che la R ha
girato (con successo) sapete che succede ?
Che il DB server si "danneggia" !
(sapete, quello scherzetto infame che ci fa il nostro caro
Access ogni tanto ...) e dice : formato DB non riconosciuto.
Ma non lo fa SEMPRE. Quello e' il bello.
Diciamo (meglio) che :
Quando il server e' la la per riempirsi, aumenta
di molto la probabilita' che il DB si "danneggi".
Ma tu guarda CristoGioveAnxur ...
Adesso l' ho capito, e ho preso provvedimenti.
Ma la x la m' aveva preso il panico, lo ammetto.
Qualcuno ha una vaga idea del perche' accada
un fenomeno del genere ?

radicale 001 ha scritto:

Se fai un drop table o qualunque altra operazione sui dati/struttura, devi
ricompattare il db per liberare davvero lo spazio. Access segna i record
cancellati come cancellati, appunto, ma nn li cancella davvero fino alla
ricostruzione indici. Quindi lo spazio lo occupano lo stesso (e possono essere
recuperati anche...). Un mdb ha una capacità di 2 Gb e quando è li vicino può
succedere di tutto, compresa la corruzione. Nn ti conviene spingerti a questi
limiti... Nulla ti vieta di avere un mare di mdb come BE cmq, magari copi i
dati in altri db come archivio o cose così. Ma nn dimenticarti di ricostruire
e ricompattare i db, se no è come nulla. Altra cosa (ma sono SICURO che già la
fai) BACK UP costanti e continui!! Per i dati nn si è mai troppo sicuri
no??!?!?! Altra cosa....SQL Server no?
-- 

 Altra cosa....SQL Server no?
SQL server si, se dipendesse da me. Sigh.


http://www.google.it/#hl=it&source=hp&biw=1052&bih=697&q=compattare+mdb+da+vba&aq=f&aqi=&aql=&oq=&fp=1e538c46c9bdda6b
ciao
BFS


Ma allora, se non dipende da te, perche' ti preoccupi ?

radicale 001 ha scritto:

dall'mdb in uso nn puoi (a meno di non richiamare tramite vba il comando del
menu con commandbar). Puoi: o farti una routine esterna in qualche altro
ambiente o crearti un mdb che lo faccia per te. Personalmente io uso questa:
    Dim FS, F, S, filespec
    Dim strProjectPath As String, strProjectName As String
    strProjectPath = Application.CurrentProject.path
    strProjectName = 
Application.CurrentProject.Name
    filespec = strProjectPath & "" & strProjectName
    Set FS = CreateObject("Scripting.FileSystemObject")
    Set F = FS.GetFile(filespec)
 
    S = CLng(F.Size / 1000000)
    ' 15 sono i Mb che impongo come limite
    If S > 15 Then
        Application.SetOption ("Auto Compact"), 1  'compact app
 
        MsgBox "WARNING DIMENSIONE APPLICATIVO" & Chr(13) & Chr(13) & _
            "Alla chiusura verrà effettuata la compattazione" & Chr(13) & _
            "e ricostruzione indici per preservare l'integrità" & Chr(13) & _
            "dei dati utilizzati" & Chr(13) & Chr(13) & _
            "(non è richiesta nessuna operazione da parte dell'utente
finale)", vbInformation, "COMPATTAZIONE E RIPRISTRINO AUTOMATICA"
 
    Else
        Application.SetOption ("Auto Compact"), 0   
    End If
e mi ci trovo meravigliosamente.
Il modulo è di Bill Power ed è disponibile su sitocomune
-- 

 Application.SetOption ("Auto Compact"), 1  'compact app
E' questo il comando chiave ?
... Non capisco bene.
Se io sto in Z e compatto Y, invece che Application devo
usare qualcosa come :
dim APP as new access.application
set APP = (ci metto il riferimento al db da compattare)
APP.setOption  ("Auto Compact"), 1
e quello parte ?
O no ?

 Ma allora, se non dipende da te, perche' ti preoccupi ?
Ma ti ci hanno mandato o ci sei venuto di tua "sponte" ?

> Application.SetOption ("Auto Compact"), 1 =A0'compact app
imposta solo le proprietà del db (quelle accessibili dal bottoncione Office
nel 2007 e dalle proprietà del db nel 2003 x capirsi). E' la maniera più
facile per l'autocompattazione. Forse a te basta il metodo nativo
CompactDatabase che espone percorsi di partenza/destinazione/versione/lingua e
qualche altra diavoleria. Lo puoi usare da dove ti pare. La conditio sine qua
non è che il db sia chiuso
-- 

 Ma ti ci hanno mandato o ci sei venuto di tua "sponte" ?
Nessuna delle due, sono capitato qui per caso ed ho pensato di aiutarti 
facendoti notare che se non puoi 'metterci le mani'  non riuscirai mai a 
trovare la soluzione del problema
Sempre che con 'soluzione del problema' si intenda mantenere in salute i 
dati contenti nell'archivio
Visto che con qualche battuta di ricerca sarebbe stato estremamente semplice 
trovare il codice vba per compattare un mdb esterno, ho creduto che stessi 
cercando di migliorare radicalmente la situazione, ma evidentemente non e' 
cosi
Ciao 

 cosi
Un po' sono NEGATO per cercare le cose su Internet.
Un po' ... E' anche bello comunicare con qualcuno, no ?
(anche se in questa maniera "virtuale", un po' monca).