Lekce 1 - Rozdělení databáze MS Access
Vítejte u první lekce tutoriálu věnovanému pokročilé práci s programem MS Access. V rámci poslední lekce kurzu základů jsme se seznámili s omezením velikosti datových výstupů, zvýrazněním odchylek od standardu a naučili jsme se ovládat parametry tiskového výstupu. V dnešní lekci si oddělíme datové tabulky od ostatních objektů databáze, importujeme objekty MS Access do naší databáze a zabezpečíme programový kód objektů.
Úvod
V úvodní lekci tohoto kurzu jsem prohlásil, že databáze je jeden soubor, který obsahuje data ve formě tabulek a všechny ostatní objekty databáze. To je výhodné při práci s databází lokálně, na jednom počítači. Ve firmě, ale dnes i v rodině, je běžné, že k datům potřebuje mít přístup více lidí a proto je databáze umístěna na serveru.
Po síti se při práci přenášejí nejen data, ale i ostatní objekty databáze a dochází nejen ke zpomalování komunikace, ale i ke konfliktům v přístupu k objektům. Možnost zlepšení je databázi rozdělit. Další dobrý důvod k oddělení datových tabulek a dat od ostatních objektů databáze může být v prostém zálohování stále se měnících dat. V odděleném uspořádání pak mohou mít uživatelé na svém lokálním počítači (ti, kteří přistupují k datům na serveru), každý jinou databázi objektů, tedy dotazů, formulářů a sestav, podle funkce ve firmě.
Nyní se naučíme databázi rozdělit na datové tabulky a ostatní objekty do dvou souborů a ukážeme si některé detaily takového rozdělení. Rovněž se seznámíme s větší ochranou námi vytvořených objektů v databázi.
Vysvětlení pojmů:
- front-end databáze - databáze, která obsahuje objekty databáze pro práci nad daty, ale neobsahuje datové tabulky a data v nich obsažená.
- back-end databáze - databáze datových tabulek a dat, ke kterým front-end databáze přistupuje jako k propojeným objektům.
- kompilovaný binární soubor - databáze, která je
převedena do binární formy a nelze v ní provádět změnu programu, ani
měnit objekty s výjimkou datových tabulek. Typicky to bývá front-end
databáze. Přípony souborů jsou
*.accde
, v případě starších verzí databáze*.mde
.
Upozorňuji: obě části rozdělené
databáze jsou soubory s příponou *.accdb
, jsou to tedy
plnohodnotné databáze. V principu nic nebrání tomu, aby
rozdělené části obsahovaly i objekty z té druhé části rozdělení, tedy
back-end databáze, např. dotazy nebo programové
moduly, stejně jako front-end databáze i další tabulky.
Jiné zvláštnosti propojených tabulek
- U propojené tabulky nelze měnit strukturu, ani vlastnosti jednotlivých polí v ní uložených
- Při každém otevření programu MS Access a v ní front-end databáze program načte strukturu propojených tabulek, takže pokud byla struktura tabulky nebo vlastnosti polí v back-end databázi změněny, jsou ve front-end databázi načteny a používány v nové struktuře.
- Data v propojené tabulce může měnit jiný uživatel, takže od ukončení programu po jeho otevření se mohou data změnit. To už je ale problematika programování síťových nastavení.
Rozdělení databáze
Prvním krokem, dříve než se pustíme do praktické ukázky, je
vytvoření kopie souboru databáze, v našem případě
souboru db1.accdb
. Dnešní lekce je ukázková, v dalších
lekcích budeme pokračovat v práci na původní, nerozdělené databázi.
Z naší otevřené databáze v menu DATABÁZOVÉ NÁSTROJE ve skupině Přesunout data klepneme na ikonu Databáze aplikace Access. Otevře se průvodce Rozdělení databáze, který na prvním formuláři zobrazuje poučení k následujícím krokům, klepneme na Rozdělit databázi.
Program otevře prohledávání složek, abychom vyhledali umístění a
zadali název databáze back-end, tedy její datové části. Program nabídne
název db1_be
, já jej ponechal. Pokud máme vyhledáno a zadán
nový název, klepneme na Rozdělit. Operace proběhne
automaticky a na konci se zobrazí sdělení Databáze byla úspěšně
rozdělena.
Data máme převedena do oddělené databáze, v databázi front-end je vidíme propojena. Pokud chceme jejich umístění zkontrolovat, provedeme to následujícím postupem:
V menu EXTERNÍ DATA ve skupině Importovat a propojit klepneme na ikonu Správce propojených tabulek, otevře se stejnojmenný dialog.
Je zobrazen seznam všech propojených tabulek naší front-end databáze a jejich nové umístění včetně názvu nové databáze. Upozorňuji na přepínač Vždycky zobrazit dotaz na zadání umístění, který umožňuje pro označené tabulky vyhledat cestu k back-end databázi s datovými tabulkami. Tak si v případě změny jejich umístění vyhledáte nové umístění a program provede propojení tabulek v novém umístění.
Propojené tabulky jsou v seznamu označeny malou šipkou, viz obrázek níže:
Zde upozorňuji na nemožnost změny v propojených
tabulkách. Příklad: Tabulku tb0Params
jsem otevřel v
návrhovém zobrazení a přidal pole NovePole, ale při
uložení změn program hlásí Aplikace Microsoft Access nemůže
uložit změny vlastností propojených tabulek. Změny se
neuloží.
V takto nastavených databázích jsme ztratili jednu velkou výhodu - vlastní parametrickou tabulku, nastavenou podle svých potřeb. Program nám nedal možnost vybrat jenom některé tabulky, provedl rozdělení bez dotazu a beze zbytku.
Import objektů z databáze MS Access
Program dává možnost databáze rozdělit, na druhé straně lze také
tabulky, nebo jiné objekty, do databáze načíst,
importovat. V této části si ukážeme import propojené
tabulky tb0Params
zpět do front-end databáze, lze tedy mít
část tabulek ve front-end databázi a druhou část tabulek v back-end
databázi.
V menu EXTERNÍ DATA ve skupině Importovat a
propojit klepneme na ikonu Access, otevře se dialog
Načíst externí data – Databáze aplikace Access. V
položce Název souboru najdeme naši back-end databázi
db1_be
. Přepínač Importovat tabulky…
ponecháme zapnutý a klepneme na Ok.
V dalším kroku se otevře dialog Import objektů, my
klepneme na záložku Tabulky a vybereme položku
tb0Params
a klepneme na Ok.
Poslední dialog nám umožňuje uložit kroky importu a následně jej opakovat. My tuto možnost odmítneme a průvodce ukončíme klepnutím na Zavřít.
Výsledek nás nepotěší, máme dvě tabulky tb0Params
ve
front-end databázi, jednu uloženou a druhou propojenou. Pomoc je snadná, v
levém podokně klepneme na propojenou tabulku
tb0Params
s malou šipkou na ikoně, neotevřeme ji a klepneme na
klávesu Delete. Program zobrazí dotaz Chcete odebrat
propojení na objekt tabulka tb0Params
? Klepnutím na
Ano je problém vyřešen.
Ne zcela, ještě musíme importovanou tabulku přejmenovat na
tb0Params
z programem změněného názvu tb0Params1
.
Toho dosáhneme u Microsoftu známým postupem - klávesou F2 na
názvu tabulky.
Toto je spíš takový školní příklad, reálně bychom
nejdříve zrušili propojení na tb0Params
a
teprve následně tuto tabulku importovali.
Je třeba upozornit na jedno úskalí. K tabulce
tb0Params
v back-end databázi bylo vymazáno propojení, ale
samotná tabulka tam byla ponechána. Je třeba zvážit, zda
parametrickou tabulku budeme distribuovat s každou front-end databází a v
souboru databáze back-end ji vymažeme zcela, nebo ji tam ponecháme a budeme
pamatovat, že někde je propojena a jinde je importována.
Import dalších objektů MS Access
Podobně, jako jsme importovali do naší front-end databáze tabulku
tb0Params
, lze importovat také další objekty databází MS
Access. Má to však svoje pravidla a omezení.
Zde jenom stručně, databáze jsou stejného typu, mají stejné formální zázemí a export se většinou zdaří bez problémů:
- k importu musíte mít příslušná oprávnění v síti, cílová databáze nesmí být určena pouze pro čtení
- z binárně kódovaných databází
*.accde
nebo*.mde
lze importovat pouze tabulky - propojit lze pouze tabulky, ostatní objekty je třeba importovat
- tabulky lze importovat jako definici, tedy bez dat, nebo jako celou tabulku včetně dat
- pokud importujeme dotazy, je třeba s nimi importovat také podkladové tabulky
- dotaz lze importovat také jako tabulku, to znamená importujeme přímo výsledek dotazu
Vytvoření binárně kódované databáze
Pokud chceme ve front-end databázi zabránit uživatelům (ale i sobě!) ve změně objektů (jedná se o ostatní objekty mimo tabulky), uložíme naši databázi jako binárně kódovanou.
Jak na to?
Z menu SOUBOR se zobrazí formulář se seznamem funkcí v levém sloupci. My klepneme na Uložit jako a v následujícím formuláři zvolíme funkci Uložit databázi jako, tím se otevře pole ikon a my ve skupině Upřesnit klepneme na ikonu Vytvořit databázi ACCDE. Dále klepneme na dolní ikonu Uložit jako, která otevře klasického průvodce nastavením umístění a názvu a celou akci provede.
To je v dnešní lekci vše.
Úkol: Vraťte si původní nerozdělenou databázi do původního umístění, jejíž kopii jste si pořídili v úvodu této lekce, příště budeme pokračovat na ní.
V lekci příští, Importy dat z prostředí MS Excel do MS Access, se naučíme importovat data z prostředí MS Excel.