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

SÅDAN:Kør planlagte opgaver med Microsoft Access

Har du nogensinde ønsket at køre en adgangskode efter en automatisk tidsplan?

Jeg viser dig, hvordan du bruger en eksisterende Access-applikation til at køre og afslutte elegant, når den startes via Task Scheduler, mens du stadig præsenterer en venlig brugergrænseflade, når den startes af en slutbruger.

Nøglen til at få det til at fungere er /cmd flag.

Send kommandolinjearg for at få adgang

For at sende et kommandolinjeargument for at få adgang, bruger du /cmd kommandolinjeargument, når du starter din applikation:

Specificerer, at det, der følger på kommandolinjen, er den værdi, der returneres af Kommandoen fungere. Denne indstilling skal være den sidste kontakt på kommandolinjen. Du kan bruge et semikolon (;) som et alternativ til /cmd .

Brug denne switch til at angive et kommandolinjeargument, der kan bruges i Visual Basic for Applications (VBA)-kode

For at hente teksten sender du på kommandolinjen efter /cmd argument, bruger du VBA.Command fungere.

Du kan bruge denne funktion ved opstart til at omdirigere din kode til at udføre, hvad end den tilbagevendende opgave er.

Praktisk eksempel

  1. Opret en ny database
  2. Tilføj følgende kode til et nyt standardmodul:
Public Function Startup()
    
    If Trim(VBA.Command) = "Nightly" Then
        Shell "winver", vbNormalFocus
        Application.Quit
    End If
    MsgBox "Start up"
   
End Function
  1. Opret en ny makro
  2. Vælg "RunCode " fra rullemenuen "Tilføj ny handling"
  3. Indstil "Funktionsnavn" til Startup()
  4. Luk og gem makroen som "AutoExec "

Kør som en normal bruger

For at teste applikationen som en normal bruger skal du blot komprimere og reparere databasen.

Du vil se en beskedboks, der siger "Start op."

Kør som en planlagt opgave

For at efterligne at køre som en planlagt opgave skal du lukke din database og starte den med følgende kommando:

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

Access blinker kort på skærmen, så vil du se dialogboksen "Om Windows", og Access lukker sig selv.

Nogle noter

  • AutoExec er en speciel makro, der kører automatisk ved opstart
  • Selvom Startup() rutinen returnerer ingen værdi, vi erklærer den som en Function fordi vi ikke direkte kan kalde en Sub fra en makro i Access
  • Ved normal brug springes cmd-vinduekoden over
  • Jeg kalder eksplicit Application.Quit inde i min "Nightly" blok for at undgå, at adgang hænger på kode, der kræver brugerinteraktion (såsom MsgBox-koden i mit eksempel)
  • Jeg kalder altid Trim() omkring VBA.Command funktion for at undgå fejl introduceret af indledende eller efterstillede mellemrum på kommandolinjen
  • Som et alternativ til /cmd , kan du også bruge /x skift og giv den navnet på en tilpasset makro (Det gør jeg ikke, fordi jeg hader makroer med passionen fra tusinde hvide varme sole; de ​​eneste to makroer, jeg nogensinde bruger, er Autoexec og Autokeys fordi de giver særlig funktionalitet )

En sidste note om opgaveplanlæggeren og automatisering af andre Office-applikationer

Hvis din opgave ikke ser ud til at fungere, når du indstiller den til at køre natten over, så prøv at ændre den planlagte opgaveindstilling til "Kør kun, når brugeren er logget på."

Office-applikationer er ikke beregnet til at køre i, hvad Windows kalder "ikke-interaktiv" tilstand. Hvis du indstiller en planlagt opgave til "Kør uanset om brugeren er logget på eller ej", vil den opgave køre i ikke-interaktiv tilstand. Dette kan forårsage en række problemer, især hvis du automatiserer Excel som en del af den tilbagevendende proces.

Den enkleste løsning er at låse arbejdsstationen i stedet for at logge af og lade indstillingen være indstillet til "Kør kun, når brugeren er logget på."

Det er måske ikke praktisk i din situation, men det er en vigtig overvejelse at være opmærksom på. Betragt dig selv som advaret:

Microsoft anbefaler i øjeblikket ikke og understøtter ikke automatisering af Microsoft Office-applikationer fra nogen uovervåget, ikke-interaktiv klientapplikation eller -komponent


  1. Venstre Join returnerer ikke alle rækker

  2. MySQL VARCHAR-længder og UTF-8

  3. Tilslutning af Snowflake DB &IRI Workbench

  4. Filtrer på output-klausul sql