L8: Akční dotazy v MS Access

Akční dotazy umožňují měnit data v tabulkách (obsah) a strukturu databáze.

Spuštění akčních dotazů závisí nejenom na nastavení pravidel uvnitř databáze, ale i na systémových oprávněních k přístupu. Zde si vyložíme základní pravidla nastavení databáze a systému, aby mohly být akční dotazy provedeny. Nejpřísnější omezení platí pro dotazy aktualizační a odstraňovací, pro ostatní jenom některá.

  • Soubor databáze nesmí být nastaven "pouze ke čtení".
  • Musíme mít od správce systému přiděleno oprávnění ke změně souboru databáze.
  • Musíme mít od správce databáze přiděleno potřebné oprávnění ke změně obsahu a struktury.
  • Databáze musí být viditelná jako důvěryhodná = Povolit obsah, (L2)
  • Pokud je k databázi připojeno více uživatelů, nikdo z nich nesmí používat dotyčné tabulky a nebo záznamy, aby nedošlo ke konfliktu uzamčení záznamů.
  • Jedno doporučení pro všechny akční dotazy: pořiďte si kopii databáze, aby při případném selhání akce nebo při chybě v textu dotazu nedošlo ke zničení dat.


    Typy akčních dotazů, které lze sestavit v návrháři dotazů:

    • Vytvářecí
    • Přidávací
    • Aktualizační
    • Odstraňovací

    Pro úplnost uvádím ještě další různé typy dotazů, které se píší přímo v jazyku SQL a nebudou dále diskutovány:

    • Sjednocovací
    • Předávací
    • Definiční

    Vytvářecí dotazy

    Takovýmto dotazem vytvoříme novou tabulku a naplníme jí záznamy na základě tabulek již existujících, nebo na základě existujících dotazů. Přidat lze i vypočtené hodnoty. Dotaz tohoto typu použijeme jako okamžitý snímek momentálního stavu tabulek v databázi, např. pro následnou kontrolu nestandardního stavu uložených hodnot nebo pro test programu. Většinou se ke kontrolním záznamům připojuje časový údaj.

    Popis postupu

    V naší databázi db1 vytvoříme pro kontrolu tabulku tbqPracovnik, abychom zachytili momentální stav tabulky tb1Pracovnik. Začneme již známým postupem. Z menu VYTVOŘENÍ klepneme na ikonu Návrh dotazu a po zobrazení formuláře Přidat tabulku vybereme tabulku tb1Pracovnik, formulář zavřeme.

    V menu NÁVRH klepneme na ikonu Vytvářecí a program zobrazí výzvu Vytvořit tabulku. V položce Název tabulky zadáme tbqPracovnik a klepneme na OK.

    Vytvářecí dotazy
    Vytvářecí dotazy
    Cas: Now() - zapíše aktuální hodnotu data a času
    Cas: Now() - zapíše aktuální hodnotu data a času

    Všechna pole tabulky tb1Pracovnik přeneseme do pracovní tabulky a přidáme vypočtené pole s časovým údajem v době spuštění dotazu, který realizuje funkce Now(), zapisující aktuální hodnotu datumu a času: Cas: Now()


    Přidávací dotazy

    Takovýmto dotazem přidáme záznamy do již existující tabulky. Přidávané hodnoty do jednotlivých polí mohou být z více zdrojů, ať už z tabulek nebo dotazů, ale mohou to být i vypočtené hodnoty. Typickým příkladem je archivace hodnot v tabulkách databáze k určitému datu, kdy naplňujeme tabulku dříve vytvořenou. Na rozdíl od předchozího se cílová tabulka dotazem nevytváří.

    Popis postupu

    V naší databázi db1 přidáme záznamy do tabulky tbqPracovnik, vytvořené vytvářecím dotazem.
    Začneme již známým postupem. Z menu
    VYTVOŘENÍ klepneme na ikonu Návrh dotazu a po zobrazení formuláře Přidat tabulku vybereme tabulku tb1Pracovnik, formulář zavřeme.

    V menu NÁVRH klepneme na ikonu Přidávací a program zobrazí výzvu Přidat. V položce Název tabulky zadáme tbqPracovnik a klepneme na OK. V pracovní tabulce přibyl řádek Přidat do:, který specifikuje, do kterého pole cílové tabulky tbqPracovnik budou hodnoty polí zdrojové tabulky tb1Pracovnik zapsány.

    Z cvičných důvodů zapíšeme pole Jmeno zdrojové tabulky do pole Prijmeni tabulky cílové a podobně zapíšeme tb1Pracovnik.Prij­meni na pole tbqPracovnik.Jme­no. Doplníme časový údaj podobně jako v předchozím případě. Pokud vypočtené pole nepojmenujeme, program to udělá doplněním názvu automaticky. Dále do řádku Kritéria: doplníme podmínku výběru záznamů. Vytvořený dotaz je na obrázku.

    Pozor na náhled dotazu z ikony Zobrazení. Ten zobrazí výběrový dotaz, který je první částí dotazu přidávacího, tedy vidíme pole Jmeno a Prijmeni tak, jak jsou uloženy v tabulce tb1Pracovnik.

    Zobrazení přidávaných dat
    Zobrazení přidávaných dat

    Vrátíme se do návrhového zobrazení a dotaz spustíme ikonou Spustit, zobrazí se výzva programu Chystáte se přidat 2 řádků, klepneme na Ano a následně si prohlédneme záznamy v tabulce tbqPracovnik. Vidíme, že u přidaných záznamů jsou hodnoty v polích Jmeno a Prijmeni zaměněny.

    Data přidaná přidávacím dotazem
    Data přidaná přidávacím dotazem

    Dotaz při zavření uložíme pod názvem qry0221.


    Aktualizační dotazy

    Takovými dotazy lze změnit hodnoty polí uložené v tabulkách. Zdrojem ke změně mohou být jiné tabulky, dotazy, nebo vypočtené údaje. Příkladem může být např. sloučení dvou oddělení ve firmě do jednoho a v tomto smyslu je třeba změnit uložené záznamy pracovníků.

    Popis postupu

    V naší databázi db1 v záznamech tabulky tb1Pracovnik změníme hodnoty v poli Oddeleni aktualizačním dotazem.

    • Začneme již známým postupem. Z menu VYTVOŘENÍ klepneme na ikonu Návrh dotazu a po zobrazení formuláře Přidat tabulku vybereme tabulku tb1Pracovnik, formulář zavřeme.
    • V menu NÁVRH klepneme na ikonu Aktualizační a program v pracovní tabulce přidal řádek Aktualizovat do:. Do prvního sloupce pracovní tabulky přidáme Oddeleni z tabulky tb1Pracovnik. V řádku Aktualizovat do: zapíšeme novou hodnotu 88. Tím by se změnila hodnota u všech záznamů, ale my chceme změnit pouze oddělení číslo 2 na číslo 88. Musíme tedy do změny vybrat záznamy podmínkou v řádku Kritéria:. Zapíšeme 2.
    Aktualizační dotaz
    Aktualizační dotaz

    Klepnutím na ikonu Zobrazit vidíme dotaz s jedním polem Oddeleni a dvěma záznamy s hodnotou 2. Vrátíme se do návrhového zobrazení a klepnutím na ikonu Spustit se zobrazí výzva programu Chystáte se aktualizovat 2 řádků, klepneme na Ano a následně si prohlédneme záznamy v tabulce tb1Pracovnik. Dva záznamy mají v poli Oddeleni zapsánu hodnotu 88.

    Aktualizovaná data
    Aktualizovaná data

    Dotaz uzavřeme a uložíme pod názvem qry0231.


    Odstraňovací dotazy

    Cílem těchto dotazů je odstranit z tabulky nebo z více tabulek záznamy podle nastavených podmínek. Nejde o rušení tabulek, ale údajů v nich obsažených! Příkladem může být pracovník, který opustil firmu a jehož data byla archivována.

    Popis postupu

    V naší databázi db1 v tabulce tb1Deti zrušíme všechny děti pracovníka číslo 10101 odstraňovacím dotazem.

    Začneme již známým postupem. 

    • Z menu VYTVOŘENÍ klepneme na ikonu Návrh dotazu a po zobrazení formuláře Přidat tabulku vybereme tabulku tb1Děti, formulář zavřeme.
    • V menu NÁVRH klepneme na ikonu Odstranit, vidíme v pracovní tabulce nový řádek Odstranit:. Budeme rušit celé záznamy, vybereme do prvního sloupce pracovní tabulky hodnotu tb1Deti.*, která představuje všechna pole tabulky tb1Deti. V řádku Odstranit: program nastavil From, s významem z tabulky
    • Chceme odstranit záznamy o dětech pouze jednoho pracovníka a to sdělíme programu nastavením podmínky. V druhém sloupci pracovní tabulky nastavíme Cislo, program v řádku Odstranit nastaví hodnotu kde s významem nastavení omezující podmínky. My doplníme v řádku Kritéria: hodnotu 10101.
    Klepnutím na ikonu Zobrazit se přesvědčíme o záznamech, které byly vybrány ke zrušení a tedy, že je dotaz správně sestaven.

    Vrátíme se do návrhového zobrazení a klepnutím na ikonu Spustit program zobrazí výzvu Chystáte se odstranit 2 řádků z dané tabulky. Klepnutím na Ano se zrušení záznamů provede. Dotaz při zavření uložíme pod názvem qry0241.



    Vytvořte si webové stránky zdarma! Tento web je vytvořený pomocí Webnode. Vytvořte si vlastní stránky zdarma ještě dnes! Vytvořit stránky