Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Access] Compatta e Ripristina DB Attivo con VBA

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Access] Compatta e Ripristina DB Attivo con VBA

Postdi Black.Jack » 29/11/10 11:48

Salve,



non ci riesco!!!

Ravanando ho trovato:

Codice: Seleziona tutto
SendKeys "(%s uo )" 'Compatta e Ripristina DB"
DoCmd.SetWarnings False


Ma con l'ispezione DEBUG lo legge senza effettivamente fare l'operazione.


Uso Access 2003


grazie anticipatamente
Win7 + Office 2010 Ita
Xp + Office 2010 Ita
Black.Jack
Utente Junior
 
Post: 93
Iscritto il: 23/06/10 08:40

Sponsor
 

Postdi archimede » 29/11/10 14:22

Forse così.

HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [Access] Compatta e Ripristina DB Attivo con VBA

Postdi Black.Jack » 29/11/10 15:46

Ciao Archimede grazie,


ho provato ad aggiungere la funzione

Codice: Seleziona tutto
Public Function Compact()

CommandBars("Barra dei menu"). _
   Controls("Strumenti"). _
   Controls("Utilità database"). _
   Controls("Compatta e ripristina database..."). _
   accDoDefaultAction

End Function


e chiamarla con "Call Nomedellafunzione"


mi da errore routine o argomento non valido.... :undecided: (non va neanche se i comandi li metto in inglese)
Win7 + Office 2010 Ita
Xp + Office 2010 Ita
Black.Jack
Utente Junior
 
Post: 93
Iscritto il: 23/06/10 08:40

Re: [Access] Compatta e Ripristina DB Attivo con VBA

Postdi Flash30005 » 30/11/10 01:38

Non sono molto sicuro che si possa compattare un file avendo lo script del VBA attivo

se vuoi potresti ottenere la compattazione da un file vbs esterno al database
un esempio potrebbe essere questo
Codice: Seleziona tutto
Option Explicit
Dim objScript
Dim objAccess
Dim strPathToMDB
Dim strMsg
Dim strTempDB
Dim StrFile
Dim StrPerc
StrFile = "db31.mdb"
StrPerc = "C:\Documents and Settings\Flash\Documenti\"

strPathToMDB = StrPerc & StrFile
strTempDB = "C:\Comp0001.mdb"
Set objAccess = CreateObject("Access.Application.11")
On Error GoTo 0
objAccess.DBEngine.CompactDatabase strPathToMDB, strTempDB
If (Err.Number <> 0) Then
   On Error GoTo 0
   ' There was an error. Inform the user and halt execution
   strMsg = "Errore:"
   strMsg = strMsg & vbCrLf & vbCrLf & Err.Description
   Call MsgBox(strMsg)
   Wscript.Quit
End If
On Error GoTo 0
Set objScript = CreateObject("Scripting.FileSystemObject")
objScript.CopyFile strPathToMDB, strPathToMDB & "z", True
objScript.CopyFile strTempDB, strPathToMDB, True
objScript.DeleteFile strTempDB
'messaggio con l'intero percorso del file
Call MsgBox("Compattazione File " & strPathToMDB & " avvenuta!!!")
' oppure con solo il nome del file
Call MsgBox("Compattazione File " & StrFile & " avvenuta!!!")


Copi tutto in un file testo
(modifichi nome file e percorso)
salvi con un nome
rinomini l'estensione in .vbs
e avvii

Il file .vbs potrà essere avviato da qualsasi applicativo o pianificato dalle stesse operazioni di windows

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Access] Compatta e Ripristina DB Attivo con VBA

Postdi Black.Jack » 30/11/10 15:24

grazie come sempre Flash.

Il problema è che serve una compattazione legata ad una concatenazione di query che sviluppano ampie mole di dati, andando a oltrepassare i limite concessi ad un db da parte di access.


è scomodo dover usare un'altro file, avrei voluto usare lo stex db, non dico magari con un codice solo, ma che perlomeno tutto sia legato ad un solo file.
Win7 + Office 2010 Ita
Xp + Office 2010 Ita
Black.Jack
Utente Junior
 
Post: 93
Iscritto il: 23/06/10 08:40

Postdi archimede » 30/11/10 17:09

Ho provato il tuo metodo con un bottone in una form e a me funziona:
Codice: Seleziona tutto
SendKeys "%(SUO)"
HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [Access] Compatta e Ripristina DB Attivo con VBA

Postdi Flash30005 » 30/11/10 18:40

Confermo!!!
Un pulsante di comando associato
alla chiave
Codice: Seleziona tutto
SendKeys "(%s uo )"


Compatta e ripristina il database :eeh
(ancora sto cercando di capire cosa significhi (%s uo) ) :
Ma funziona!!!
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Postdi archimede » 01/12/10 09:27

Flash30005 ha scritto:ancora sto cercando di capire cosa significhi (%s uo)
Sono le lettere delle voci di menu sottolineate (da premere con il tasto Alt).

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [Access] Compatta e Ripristina DB Attivo con VBA

Postdi Black.Jack » 01/12/10 13:45

Ahhh io mettevo:

Codice: Seleziona tutto
SendKeys "(%s uo )"



ora provo con la vostra impostazione, grazie come sempre per il cordiale aiuto!
Win7 + Office 2010 Ita
Xp + Office 2010 Ita
Black.Jack
Utente Junior
 
Post: 93
Iscritto il: 23/06/10 08:40

Re: [Access] Compatta e Ripristina DB Attivo con VBA

Postdi Black.Jack » 01/12/10 14:14

Ora non funziona ma ho capito perchè:


Codice: Seleziona tutto
DoCmd.SetWarnings False
DoCmd.OpenQuery "003 - Accoda PULL1"
DoCmd.OpenQuery "004 - Accoda Pull2"
DoCmd.OpenQuery "005 - Accoda Misc"
DoCmd.OpenQuery "006 - Accoda PO1"
DoCmd.OpenQuery "007 - Accoda PO2"
DoCmd.OpenQuery "008 - punto con virgola Q Misc"
DoCmd.OpenQuery "009 - Elimina Dati Non Pertinenti Q MISC"
DoCmd.OpenQuery "010 - Aggiorna Concatena PULL TOTALE"
DoCmd.OpenQuery "011 - Aggiorna Concatena PO TOTALE"
DoCmd.OpenQuery "012 - PULL TOTALE senza corrispondenza con  PERMOUT TOTALE"
DoCmd.OpenQuery "013 - Creazione Tab Pronto2 x diff"
DoCmd.OpenQuery "013 - PULL EFFETTIVI no corrispondenza con  WO PRONTO x Sottraz"
DoCmd.OpenQuery "014 - Conteggio Pull x Somma Pronto Finale"
DoCmd.OpenQuery "015 - Somma dei Quantity Pronto"
DoCmd.OpenQuery "016 - Somma Finale"

DoCmd.OpenQuery "017 - Sommatoria Finale"
DoCmd.SetWarnings True
DoCmd.SendKeys "(%s, uo)"



quando da il Sendkeys non esce dalla finestra del form e va in "Opzioni" e siccome il comando avvisi era settato a false ne usciva.

In pratica come faccio ad "uscire" dalla finestra del Form e eseguire il sendkeys esattamente come "do.cmd..."??
Win7 + Office 2010 Ita
Xp + Office 2010 Ita
Black.Jack
Utente Junior
 
Post: 93
Iscritto il: 23/06/10 08:40

Re: [Access] Compatta e Ripristina DB Attivo con VBA

Postdi Black.Jack » 01/12/10 14:32

Ok dai, ho risolto così:


Codice: Seleziona tutto
BLA BLA BLA
DoCmd.SetWarnings True

SendKeys "%{TAB}" '"(%s uo)" Compatta e Ripristina DB"
SendKeys "%suo"

End Sub



Scommetto che non è la soluzione più elegante della Terra, ma funziona...
Win7 + Office 2010 Ita
Xp + Office 2010 Ita
Black.Jack
Utente Junior
 
Post: 93
Iscritto il: 23/06/10 08:40


Torna a Applicazioni Office Windows


Topic correlati a "[Access] Compatta e Ripristina DB Attivo con VBA":


Chi c’è in linea

Visitano il forum: Nessuno e 36 ospiti

cron