Access
 sql >> Database >  >> RDS >> Access

COME:eseguire attività pianificate con Microsoft Access

Hai mai desiderato eseguire del codice di accesso in base a una pianificazione automatica?

Ti mostrerò come utilizzare un'applicazione di Access esistente per eseguire e uscire con grazia quando viene avviata tramite l'Utilità di pianificazione, pur presentando un'interfaccia utente intuitiva quando viene avviata da un utente finale.

La chiave per farlo funzionare è il /cmd bandiera.

Passare argomenti della riga di comando per accedere

Per passare un argomento della riga di comando per l'accesso, utilizzare il /cmd argomento della riga di comando all'avvio dell'applicazione:

Specifica che ciò che segue sulla riga di comando è il valore che verrà restituito dal Comando funzione. Questa opzione deve essere l'ultima opzione sulla riga di comando. Puoi utilizzare un punto e virgola (;) come alternativa a /cmd .

Utilizzare questa opzione per specificare un argomento della riga di comando che può essere utilizzato nel codice di Visual Basic, Applications Edition (VBA)

Per recuperare il testo che passi sulla riga di comando seguendo il /cmd argomento, usi il VBA.Command funzione.

È possibile utilizzare questa funzione all'avvio per reindirizzare il codice per eseguire qualunque sia l'attività ricorrente.

Esempio pratico

  1. Crea un nuovo database
  2. Aggiungi il seguente codice a un nuovo modulo standard:
Public Function Startup()
    
    If Trim(VBA.Command) = "Nightly" Then
        Shell "winver", vbNormalFocus
        Application.Quit
    End If
    MsgBox "Start up"
   
End Function
  1. Crea una nuova macro
  2. Scegli "RunCode " dal menu a discesa "Aggiungi nuova azione"
  3. Imposta "Nome funzione" su Startup()
  4. Chiudi e salva la macro come "AutoExec "

Esegui come utente normale

Per testare l'applicazione come utente normale, è sufficiente compattare e riparare il database.

Verrà visualizzata una finestra di messaggio che dice "Avvia".

Esegui come attività pianificata

Per simulare l'esecuzione come un'attività pianificata, chiudi il database e avvialo con il seguente comando:

"C:\Path\To\msaccess.exe" "C:\Path\To\MyDb.accdb" /cmd Nightly

Access lampeggerà brevemente sullo schermo, quindi vedrai la finestra di dialogo "Informazioni su Windows" e Access si chiuderà automaticamente.

Alcune note

  • AutoExec è una macro speciale che viene eseguita automaticamente all'avvio
  • Anche se Startup() routine non restituisce alcun valore, lo dichiariamo come Function perché non possiamo chiamare direttamente un Sub da una macro in Access
  • In condizioni di utilizzo normale, il codice della finestra di cmd viene ignorato
  • Chiamo esplicitamente Application.Quit all'interno del mio blocco "Nightly" per evitare che l'accesso si blocchi sul codice che richiede l'interazione dell'utente (come il codice MsgBox nel mio esempio)
  • Chiamo sempre Trim() intorno al VBA.Command funzione per evitare bug introdotti da spazi bianchi iniziali o finali sulla riga di comando
  • In alternativa a /cmd , puoi anche usare il /x cambia e passagli il nome di una macro personalizzata (Non lo faccio perché odio le macro con la passione di mille bianchi ardenti; le uniche due macro che uso sono Autoexec e Autokeys perché forniscono funzionalità speciali )

Una nota finale sull'Utilità di pianificazione e sull'automazione di altre applicazioni di Office

Se la tua attività sembra non funzionare quando la imposti per essere eseguita durante la notte, prova a cambiare l'opzione dell'attività pianificata su "Esegui solo quando l'utente è connesso".

Le applicazioni di Office non devono essere eseguite in quella che Windows chiama la modalità "non interattiva". Se imposti un'attività pianificata su "Esegui indipendentemente dal fatto che l'utente sia connesso o meno", tale attività verrà eseguita in modalità non interattiva. Ciò può causare una serie di problemi, soprattutto se stai automatizzando Excel come parte del processo ricorrente.

La soluzione più semplice è bloccare la workstation invece di disconnettersi e lasciare l'opzione impostata su "Esegui solo quando l'utente è connesso".

Potrebbe non essere pratico nella tua situazione, ma è una considerazione importante di cui essere consapevoli. Considerati avvisato:

Microsoft attualmente non consiglia e non supporta l'automazione delle applicazioni di Microsoft Office da qualsiasi applicazione o componente client non presidiato e non interattivo