Makra

Makra umožňují automatizovat řadu činností, které MS Access vykonává. Každé makro obsahuje seznam akcí, které se po jehu spuštění provedou. Může jít o otevírání formulářů, nastavování hodnot polí, spouštění dotazů, nastavení velikosti a pozice okna a řadu dalších. V případě potřeby se můžete podívat na jejich úplný přehled. Makra mohou v některých případech snadno nahradit proramování funkcí, které MS Access nenabízí přes své základní ovládací prvky.

Tvorba makra

Jako u ostatních objektů, tvorbu makra zahájíte v liště "Vytvořit" tlačítkem "Makro" na pravé straně. Objeví se návrhové zpbrazení makra. V horní části máte možnost zapnout používání podmínek, nastavení argumentů a také možnost spouštění a krokování makra. V hlavním okně je "tabulka", do které se vkládají jednotlivé akce makra.

Lišta k vytvoření nového makra

Pokud už makro máte vytvořené, poklepáním na něj v seznamu objektů ho spustíte, ale neotevřete v návrhovém zobrazení. Abyste ho mohli upravovat, musíte nad jeho názvem stisknout pravé tlačítko myši a vybrat "Návrhové zobrazení".

V návrhovém zobrazení je možné makro spustit červeným vykřičníkem na levé straně lišty "Makra-nástroje" -> "Návrh". Všimněte si malé ikonky označené "Krok". Pokud je stisknutá, makro se spustí v krokovacím režimu, jednotlivé akce se budou provádět postupně až po potvrzení a po každé se zobrazí výsledek. To je užitečné pro testování funkce makra, pokud potřebujete zjistit která akce způsobuje nějaké problémy.

Makro samotné vytvoříte vybíráním akcí, které se mají vykonat. Po otevření návrhového zobrazení máte k dispozici pravděpodobně jen některé akce, potřebujete-li nějakou která v seznamu akcí není, stiskněte tlačítko "Zobrazit všechny akce" v liště. Pokud je povolené zobrazení argumentů, je vidět ve vedlejším sloupci. Jinak jsou zobrazené pod seznamem akcí vždy pro aktuální řádek. Argumenty vám umožňují přizpůsobit chování akce vašim potřebám - nastavit jakých formulářů se akce týká, jak má pracovat s daty a tak dále, jsou vždy závislé na konkrétní akci.

Seznam akcí makra

Důležité akce

Access nabízí několik desítek akcí, pokud potřebujete vyhledat nějakou konkrétní, podívejte se na kompletní přehled. V následující části popíši ty nejdůležitejší.

Makro je obvykle spouštěné pomocí tlačítka ve formuláři (i když je samozřejmě možné spouštět ho ručně). Pokud formulář obsahuje nějaká data, je makro spuštěno v jejich kontextu. To je důležité při nastavení některých argumentů a podmínek. Pokud je v argumentu makra například výraz [Formuláře]![Loď]![Majitel_ID] (tedy pole Majitel_ID ve formuláři Loď), je jeho hodnota ID majitele ve formuláři ze kterého bylo makro tlačítkem voláno. Pokud budete procházet data z tabulky lodí a pro každou loď volat makro s tímto výrazem, bude se jeho hodnota měnit podle toho kdo je zrovna majitelem lodě.

Nadpisy jsou odkazy na podrobné popisy akcí na stránkách MS, kde najdete i dobře popsané příklady použití, rozhodně doporučuji se na ně podívat.

Otevření formuláře

Tato akce slouží k otevření některého z připravených formulářů. Na obrázku se můžete podívat na její argumenty.

Argumenty akce Otevření formuláře

Akce otevře formulář vybraný v poli "Název formuláře". Pole "Zobrazení" umožňuje nastavit v jakém režimu se formulář objeví, obvykle bude stačit režim "formulář". Další dvě pole slouží k omezení dat, pro která bude formulář otevřen. Bez dalšího nastavení budou ve formuláři zobrazena všechna data z příslušné tabulky nebo dotazu. Je ale možné nastavit filtr nebo podmínku, která data omezí. "Filtr" se musí zadat ve formě SQL dotazu na data nebo jména už vytvořeného dotazu, do "Podmínka Where" můžete zadat jen podmínku omezení zobrazovaná data, stejně jako byste psali podmínku v dotazu typu SELECT. Nezapomeňte, že v podmíce se můžete odkazovat i na pole existujícího formuláře.

Důležitý je režim dat, kde můžete nastavit jestli je formulář zobrazen jen pro čtení, nebo je možné data i měnit. Režim okna umožňuje nastavit jak se má nový formulář zobrazit - můžete ho nechat jako "normální", nebo jako "dialogové okno", pak bude nový formulář ve vlastním okně.

Vraťme se k databázi lodí - máme v ní formulář pro loď a pro majitele. Do fromuláře pro loď chceme přidat tlačítko, které zobrazí formulář s daty majitele lodě. Je několik způsobů jak to udělat, my využijeme makro. Použijeme akci "OtevřítFormulář". Název formuláře bude jméno formuláře s daty o majiteli. Zobrazíme ho v režimu formulář. Na nastavení režimu příliš nezáleží, ale důležitá je podmínka. Chceme aby data v novém formuláři byla o majiteli lodě z formuláře, kde na tlačítko klikáme. Podmínka musí být ve tvaru "[pole zobrazovaného formuláře]=[pole formuláře odkud voláme makro]". Například "[Majitel]![ID]=[Formuláře]![Loď]![Majitel_ID]". Protože si pravděpodobně málokdo pamatuje potřebné názvy polí, lze použít tvůrce výrazů - kliknutím na tři tečky na pravé straně pole s výrazem. V něm lze prohledávat všechny objekty a vybrat si pole, která potřebujete.

Ukázka tvůrce výrazů

Podobně fungují akce Otevřít ... i pro další objekty v DB - tabulky, dotazy, sestavy diagramy atd.

Nastavení hodnoty

Akce umožní nastavit hodnotu pole aktuálně otevřeného formuláře. Jméno nastavovaného pole je argument "Položka", pokud ho nedokážete napsat ručně, je nejlepší dohledat je pomocí tvůrce výrazů. Hodnotu nastavte v poli Výraz. Můžete sem napsat konkrétné hodnotu, nebo výraz pro její výpočet. Jde o jednu z nejužitečnějších funkcí, která se hodí pro přidávání dat do podřízené tabulky ve vazbě N:1. Zobrazíte například formulář s údaji o majiteli lodě.

Pokud chcete přidat novou loď tomuto majiteli, vytvoříte si makro které se bude opět spouštět tlačítkem z tohoto formuláře. Toto makro bude mít tři akce: nejprve otevřete formulář zobrazující data lodě. Do podmínky nic nepiště, jen otevřete formulář. Další akce je PřejítNaZáznam - tato akce umožňuje přecházet mezi záznamy podobně jako šipky - můžete přejít na předchozí, následující, první, poslední nebo vkládat nová data. Nastavit co chcete udělat můžete v argumentu Záznam. zvolíte tedy "nový". Protože předchozí akcí jste otevřeli formulář s lodí, týká se tato akce už jeho a formulář bude otevřen pro vložení nového zázánamu. Teď chcete, aby loď patřila majiteli z formuláře odkud je makro voláno. Použijete akci NastavitHodnotu. První argument, "Položka" je jméno pole, které budete nastavovat. Druhý je hodnota jakou do pole chcete vložit. Bude zde tedy jméno pole s ID majitele z formuláře odkud je makro voláno. Nový formulář se pak otevře s už nastaveným jménem majitele.

Nastavení hodnoty v jednom formuláři podle pole v jiném formuláři
Okno se zprávou

Pokud potřebujete uživatele informovat o průběhu makra nebo o nějaké činnosti, můžete použít Okno se zprávou. Tato akce vytvoří informační okno s textem zadaným v argumentu. Můžete si také nastavit jestli má vydat i zvukový signál nebo charakter okna (informace, upozornění, varování). Hodí se hlavně v kombinaci s podmínkami, můžete ho využít k oznámení že nějaká podmínka není splněna a makro nemůže pokračovat.

Spustit SQL

Pokud ovládáte jazyk SQL, můžete toto makro použít ke spuštění libovolného příkazu. SQL umožňuje kromě hledání dat také vytváření a rušení tabulek, změny stávajících dat, mazání a přidávání záznamů, tato akce tedy může výrazně měnit strukturu databáze, pokud je to třeba.

Příklady

Na stránkách s podrobným popisem akcí jsou ukázková makra a popis jejich činnosti, doporučuji tedy abyste se na ně podívali a inspirovali se k vlastní tvorbě.

Použití podmínek

Podmínky vám umožňují vytvořit v makru větve, kdy při splnění podmínky dojde k jiné akci než při jejím nesplnění. Lze tak třeba reagovat na chybové stavy, nebo rozlišit jaký formulář se má otevřít podle nastavení polí ve výchozím formuláři.

Použití podmínek umožníte stisknutím ikony "Podmínky" v liště "Makra-nástroje" a "Návrh". Objeví se nový sloupec, do kterého je možné psátpodmínku. Podmínka je opět výraz, jehož hodnotou musí být logická 0 nebo 1 (pravda nebo nepravda) - typicky je to tedy porovnání dvou hodnot nebo test jestli nějaká data existují.

Pokud chcete aby několik akcí sdílelo stejnou podmínku, můžete do řádky podmínka napsat ..., pak se použije podmínka z řádku výše. Je tedy možné udělat v makru 2 nebo více částí, kdy pod sebou jsou vždy akce jedné větve, ale v závislosti na výsledku podmínky se provede jen některé z nich.

PodmínkaVýsledek - kdy je podmínka splněna
[Jmeno]="Pepa" V poli jméno je nastavena hodnota Pepa
IsNull([Jmeno]) V poli Jmeno není nastavena žádná hodnota, je nulové (ke kontrole chyb, které nechcete nastavit jako omezení při tvorbě tabulek)
Forms![Obednavka]![kusy] < 0 Ve formuláři Obednavka obsahuje pole kusy hodnotu menší než 0
DCount("[ČísloObjednávky]", "Objednávky")>35 V tabulce Objednávky je v poli ČísloObjednávky více než 35 položek

Makro na obrázku se spouští z formuláře s údaji o lodi. Pokud je loď těžší než 10 000 tun, zobrazí se okno se zprávou "Těžká loď", jinak se nic nestane.

Ukázka makra s podmínkou

Při tvorbě výrazu můžete používat funkce, podívejte se na jejich úplný přehled. Pokud potřebujete nějaké speciální chování (výpočty nad hodnotami v tabulkách, práce s datem), může se hodit.

Cvičení

Zkuste si vytvořit několik maker, vyzkoušejte si možnosti nastavení hodnoty a podmínky. Podívejte se na příklad k akci Nastavení hodnoty a zkuste ho implementovat v MS Access. Zkuste si měnit nastavení argumentů, nebo využít akce v jiném makru.