sql >> Databáze >  >> RDS >> Access

POSTUP:Spouštění naplánovaných úloh pomocí aplikace Microsoft Access

Chtěli jste někdy spustit nějaký přístupový kód podle automatického plánu?

Ukážu vám, jak používat existující aplikaci Access ke správnému spouštění a ukončení při spuštění pomocí Plánovače úloh, a přitom stále prezentovat přívětivé uživatelské rozhraní při spuštění koncovým uživatelem.

Klíčem k tomu, aby to fungovalo, je /cmd vlajka.

Předávání argumentů příkazového řádku pro přístup

Chcete-li pro přístup předat argument příkazového řádku, použijte /cmd argument příkazového řádku při spouštění aplikace:

Udává, že to, co následuje na příkazovém řádku, je hodnota, kterou vrátí Příkaz funkce. Tato možnost musí být posledním přepínačem na příkazovém řádku. Jako alternativu k /cmd můžete použít středník (;). .

Tento přepínač použijte k zadání argumentu příkazového řádku, který lze použít v kódu Visual Basic for Applications (VBA)

Chcete-li načíst text, předejte na příkazovém řádku za /cmd argument, použijete VBA.Command funkce.

Tuto funkci můžete použít při spuštění k přesměrování kódu, aby provedl jakoukoli opakovanou úlohu.

Praktický příklad

  1. Vytvořte novou databázi
  2. Do nového standardního modulu přidejte následující kód:
Public Function Startup()
    
    If Trim(VBA.Command) = "Nightly" Then
        Shell "winver", vbNormalFocus
        Application.Quit
    End If
    MsgBox "Start up"
   
End Function
  1. Vytvořte nové makro
  2. Vyberte „Spustit kód “ z rozbalovací nabídky „Přidat novou akci“
  3. Nastavte "Function Name" na Startup()
  4. Zavřete a uložte makro jako „AutoExec "
  5. ."

Spustit jako běžný uživatel

Chcete-li aplikaci otestovat jako běžný uživatel, jednoduše zkomprimujte a opravte databázi.

Zobrazí se okno se zprávou „Spustit.“

Spustit jako naplánovanou úlohu

Chcete-li napodobit běh jako naplánovanou úlohu, zavřete databázi a spusťte ji následujícím příkazem:

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

Access na obrazovce krátce zabliká, poté se zobrazí dialogové okno „O systému Windows“ a Access se sám zavře.

Některé poznámky

  • AutoExec je speciální makro, které se spouští automaticky při spuštění
  • I když Startup() rutina nevrací žádnou hodnotu, deklarujeme ji jako Function protože nemůžeme přímo volat Sub z makra v Access
  • Při běžném používání je kód okna cmd přeskočen
  • Výslovně volám Application.Quit uvnitř mého bloku "Nightly", aby se zabránilo tomu, že Access visí na kódu, který vyžaduje interakci uživatele (jako je kód MsgBox v mém příkladu)
  • Vždy volám Trim() kolem VBA.Command funkce, aby se zabránilo chybám způsobeným úvodními nebo koncovými mezerami na příkazovém řádku
  • Jako alternativa k /cmd , můžete také použít /x přepněte a předejte mu název vlastního makra (Nedělám to, protože nenávidím makra s vášní tisíce bílých horkých sluncí; jediná dvě makra, která kdy používám, jsou Autoexec a Autokeys protože poskytují speciální funkce )

Závěrečná poznámka o Plánovači úloh a automatizaci dalších aplikací Office

Pokud se vám zdá, že vaše úloha nefunguje, když jste ji nastavili tak, aby se spouštěla ​​přes noc, zkuste přepnout možnost naplánované úlohy na „Spouštět, pouze když je uživatel přihlášen.“

Aplikace Office nejsou určeny ke spuštění v režimu, který Windows nazývá „neinteraktivní“. Pokud nastavíte naplánovanou úlohu na „Spustit, ať je uživatel přihlášen nebo ne“, bude tato úloha spuštěna v neinteraktivním režimu. To může způsobit různé problémy, zvláště pokud automatizujete Excel jako součást opakujícího se procesu.

Nejjednodušším řešením je zamknout pracovní stanici místo odhlašování a ponechat možnost nastavenou na "Spouštět pouze když je uživatel přihlášen."

To nemusí být ve vaší situaci praktické, ale je důležité si to uvědomit. Myslete na to, že jste varováni:

Microsoft aktuálně nedoporučuje a nepodporuje automatizaci aplikací Microsoft Office z jakékoli bezobslužné, neinteraktivní klientské aplikace nebo komponenty


  1. Načíst definici sloupce pro sadu výsledků uložené procedury

  2. pomocí (-) pomlčky v názvu tabulky mysql

  3. 5 způsobů, jak spočítat počet uživatelsky definovaných tabulek v databázi SQL Server

  4. Jak změnit symbol měny relace v Oracle