Newsgroup: it.comp.appl.access
Titolo: compatta e ripristina database

buongiorno  a tutti, siccome uso un DBA 2007, dove non è possibile inserire una barra del menù personalizzata sulla maschera, come facevo con la versione 2000, qualcuno potrebbe dirmi il codice VBA che potrei usare per avviare un azione "compatta e ripristina database" da un pulsante sulla maschera?
Grazie mille

 Grazie mille
 
Ciao mimì...
prova con:  DoCmd.RunCommand acCmdCompactDatabase
con A03 funziona benissimo
Saluti
M7a1x

Da VBA 
 
Application.CompactRepair(SourceFile, DestinationFile, LogFile)


 Grazie mille
 
ho provato con: 
DoCmd.RunCommand acCmdCompactDatabase
ma non funziona
 
invece non ho capito come applicare: 
Application.CompactRepair(SourceFile, DestinationFile, LogFile) 
scusate non sono molto esperto.
grazie


Non funziona è un po' vago.....
il codice VBA invece lo applichi sull'evento Click di un pulsante che crei tu
 
Private Sub PulsCompatta_Click()
 
    Application.CompactRepair(SourceFile [Dove si trova il file da compattare], DestinationFile [Dove vuoi mettere il file compattato], LogFile [opzionale, se vuoi un log dell'operazione]) 
 
End Sub
 
Poi premi e ottieni quello che chiedevi
 
E' impossibile che non funzioni il runcommand. Mi sa che anche li mancano i riferimenti. Tu gli hai detto Compatta e ripristina (=acCmdCompactDatabase) ma ti sei dimenticato di dirgli COSA e DOVE.....metti il cursore su acCmdCompactDatabase e premi F1...ti si apre un mondo!!!

Grazie Fair87, 
ma facendo F1 su acCmdCompactDatabase, mi dice altre cmd, ma nessuna soluzione al problema;
ho provato a scrivere il tuo codice in questo modo
 
Private Sub Comando381_Click()
 
Application.CompactRepair (SourceFile([C:\Users\d.g\Desktop], DestinationFile([C:\Users\d.g\Desktop])))
 
End Sub
 
ma mi dà un errore che dice così: Sub o Function non definita
 
scusa ma non ci arrivo da solo
 


Guarda questo: 
http://www.donkarl.com/it/FAQ/FAQ6VBA.htm#6.6
 


Copiato pari pari dall'help
 
Application.CompactRepair Method
 
 
 
 
Compacts and repairs the specified database or Microsoft Access project (.adp) file. Returns a Boolean; True if the process was successful.
Syntax
 
expression.CompactRepair(SourceFile, DestinationFile, LogFile)
 
expression   A variable that represents an Application object.
 
Parameters
 
 
 
 
Name
 
Required/Optional
 
Data Type
 
Description
 
 
 
SourceFile
 
Required
 
String
 
The full path and filename of the database or project file to compact and repair.
 
 
 
DestinationFile
 
Required
 
String
 
The full path and filename for where the recovered file will be saved.
 
 
 
LogFile
 
Optional
 
Boolean
 
True if a log file is created in the destination directory to record any corruption detected in the source file. A log file is only created if corruption is detected in the source file. If LogFile is False or omitted, no log file is created, even if corruption is detected in the source file.
 
 
Return Value
Boolean
 
Remarks
 
 
The source file must not be the current database or be open by any other user, since calling this method will open the file exclusively.
 
 
Example
 
 
The following example compacts and repairs a database, creates a log if there's any corruption in the source file, and returns a Boolean value based on whether the recovery was successful. For the example to work, you must pass it the paths and file names of the source and destination files.
 
 
 
 
Visual Basic for Applications
 
 
 
Function RepairDatabase(strSource As String, _
        strDestination As String) As Boolean
        ' Input values: the paths and file names of
        ' the source and destination files.
 
    ' Trap for errors.
    On Error GoTo error_handler
 
    ' Compact and repair the database. Use the return value of
    ' the CompactRepair method to determine if the file was
    ' successfully compacted.
    RepairDatabase = _
        Application.CompactRepair( _
        LogFile:=True, _
        SourceFile:=strSource, _
        DestinationFile:=strDestination)
 
    ' Reset the error trap and exit the function.
    On Error GoTo 0
    Exit Function
 
' Return False if an error occurs.
error_handler:
    RepairDatabase = False
 
End Function
 

 Grazie mille
 
ci proverò 
lunedì vi farò sapere 
grazie e buon weekend

Ciao  a tutti ho provato ad inserire il codice di Fair87, ma non và. Non c'è qualcosa di più semplice, ricordandando che parliamo di un dba di access da 2003 a 2007. grazie
 



 Ciao  a tutti ho provato ad inserire il codice di Fair87, ma non và. Non c'è qualcosa di più semplice, ricordandando che parliamo di un dba di access da 2003 a 2007. grazie
 
Non va è vago....copia e incolla il codice che hai scritto tu

> Non va è vago....copia e incolla il codice che hai scritto tu
 
ho scritto questo:
 
 
Private Sub Comando381_Click()
 
Application.CompactRepair (SourceFile([C:\Users\d.g\Desktop], DestinationFile([C:\Users\d.g\Desktop])))
 
End Sub
 
mi evidenzia "DestinationFile" e mi da errore:



Eccicredo!!!Sourcefile non lo devi scrivere mica! Vuol dire: 'indicami il file sorgente' e così via!
 
Application.CompactRepair ("C:\Users\d.g\Desktop\TuoFile....", "C:\Users\d.g\Desktop\AltroNomefile....")
 
o similari! Ma ti conviene smettere di fare copia/incolla e cercare di capire cosa fai se no non ne esci...

Scusate ma c'è un modo per dire via codice:
prendi questo database e...., anzichè scrivere percorso e nome del database nel codice?
 
Grazie


Perdona l'insistenza ma.....'prendi questo database e....' è esattamente 'Prendi questo database, che si chiama Pippo.mdb, che si trova qua, fammi la compattazione e, chiamandolo Pluto.mdb, me lo metti la' dov'è la differenza? E' esattamente quello che chiedi. Lo devi solo dire al povero Jet che ancora (ma per poco) non ti legge nel pensiero
 
Application.CompactRepair( Application.CurrentDb.Path & "\" & 
application.Currentdb.Name
 & ".mdb", Application.CurrentDb.Path & "\" & 
application.Currentdb.Name
 & "_Compattato.mdb")
 
 
Spiegazione (se no me la copi e poi non va)
Application.CurrentDb.Path = percorso del DbCorrente
application.Currentdb.Name
 = Nome del db corrente
 
L'ho scritta a braccio, quindi occhio (ma sto F1 proprio ti stà antipatico?)
 

Grazie.