Autor: Michal Pohořelský Uveřejněno: New P+C 03/93, str. 5-7 Databáze pro Windows ? MS Access 1.0
Poslední období tvůrčí aktivity věnovali vývojoví pracovníci firmy Microsoft především systému Windows a podpůrným nástrojům v jeho prostředí. Bylo až s podivem, jak dlouho se vyhýbali nenasytnému trhu databázových aplikací. Prvním strategickým tahem na poli databází bylo zakoupení firmy Fox Software spolu s výkonnou verzí FoxPro 2.0. Ohlášenou verzi FoxPro 2.5, tentokrát i pro prostředí Windows, čekali všichni fandové FoxPro velmi netrpělivě. O to větší bylo překvapení, když druhým strategickým tahem Microsoftu bylo uvedení vlastní databáze Access, která byla na trh uvedena dříve než verze FoxPro 2.5. Databáze Access se do 31.1. 1993 prodávala za neuvěřitelných 99 dolarů, u nás za 3200 korun.
Microsoft Access 1.0 je databázový systém určený speciálně pro Windows. To se hned od počátku projeví v požadavcích na hardware: procesor nejméně 386SX, 4 MB paměti a alespoň 14 MB volného prostoru na pevném disku. V systému může být otevřena jediná databáze - aplikace (označení aplikace je vystižnější). Jediná Access databáze zahrnuje všechny tabulky, jenž v našem běžném pojetí představují databáze. Do jednoho DOS souboru s příponou MDB jsou vedle údajů také zahrnuty všechny ostatní objekty spojené s tabulkami. Protože objekty neexistují jako samostatné DOS soubory, můžeme je označovat názvy dlouhými až 64 znaků včetně mezer.
Jak jsem již uvedl, základním objektem, se kterým Access pracuje, je Table - tabulka. Její velikost je limitována na 128 MB a obsahuje jednotlivé rozdělené na položky určeného typu. Textové položky jsou ve dvou typech - krátký text do 127 znaků nebo MEMO. Položky pro DATUM mohou obsahovat datum nebo čas. Svérázné jsou položky logické. Místo běžného True/False používají YES/NO nebo hodnotu -1 jako YES. Největší bohatství je u numerických položek. Ty mohou být podle přesnosti jako 1bytové, celočíselné (2 byty), dlouhé celočíselné (4 byty) nebo krátké a dlouhé s pohyblivou čárkou.
Zvláštní typy numerických položek jsou Currency s přesností 15+4 desetinná místa a Counter - jednoznačné číslo přidělované novým záznamům v databázi. Velmi obecným typem položky je objekt OLE (režim OLE je novinkou Windows 3.1). Může to být graf, obrázek, nebo třeba tabulka Excelu. Příjemným přídavkem je program na kreslení grafů. Funguje pomocí OLE a je možné jej použít z každého programu, který OLE podporuje, třeba už z jednoduchého WRITE. Možnosti tohoto programu jsou téměř stejné, jako jsou grafy programu EXCEL 3.0.
Ke každé položce tabulky lze určit řadu parametrů. Kromě komentáře a formátu položky to je její název používaný v nadpisech, popis položky pro uživatele, implicitní hodnota, výraz určující přípustnost hodnoty a chybová zpráva (pokud vstupní hodnota nevyhovuje).
Každá tabulka musí mít hlavní indexový klíč, což je položka, podle které je celá tabulka setříděna (symbol klíče v tabulce). Hlavní klíč může tvořit několik položek, ale nemůže být určen obecným výrazem a nejsou pro něj přípustné duplicity. Kromě toho může být každá položka označená jako indexovaná s možností nebo zákazem duplicit.
Když jsem s databází Access experimentoval, zjistil jsem, že také lze určit barvu, jakou se určitá položka bude na obrazovce vypisovat. Nový soubor MDB, který obsahuje jedinou krátkou tabulku bez ostatních objektů, má velikost přibližně 65 KB. Okno GRAPHICAL QUERY BY EXAMPLE (GQBE) zobrazí v záhlaví struktury vybraných tabulek a definiční přehled podmínek a specifikací. Uživatel provede obsluhu technikou vyber a přesuň (drag and drop). Například kritérium pro spojování tabulek je určeno výběrem položky jedné tabulky a jejím přesunutím na odpovídající položku spojované tabulky. Výsledkem je čára, která spojuje určené položky v tabulkách. Určené spojení můžeme předefinovat. Do definiční tabulky můžeme určit komplex WHERE podmínek, vypočítávané položky, specifikace skupin GROUP BY a doplňkové kritérium pro jejich výběr HAVING, pořadí pro třídění, výpočet křížové tabulky atd. Proti pouhému zobrazení dovoluje výběr Accessu také skládání, aktualizaci a rušení záznamů.
SQL okno je převedeno na ekvivaletní SQL příkaz. Když modifikujeme SQL příkaz SQL příkaz, dochází i k odpovídající úpravě SQL okna. Při změnách Access okamžitě rozpozná chybná klíčová slova. K osvěžení jmen tabulek a položek musíme však příkaz vyvolat. Vybraný vzorek dat je uložen do dynamické tabulky "dynaset", která je ve vybraných případech opravitelná. Tak můžeme snadno opravovat údaje u výběru z jedné tabulky nebo při relaci jedna ku jedné. V těchto případech je přímé spojení mezi vybranou a matriční větou. Lze konstatovat, že můžeme opravovat hodnoty, které vycházejí z položek a ne z transformací.
Access má možnost spolupráce s databázemi jiných typů. Základní možností je IMPORT - cizí databáze se překonvertuje do databáze Accessu. Takto umí zpracovávat soubory ve formátech PARADOX 3.x, dBase III+ a IV, FoxPro 2.0, Excel, Lotus, Btrieve a SQL Server. Také si poradí s textovými soubory v obou obvyklých podobách v kódu DOS i Windows. Všechny tyto typy umí také při EXPORTu a do určité míry si poradí i s indexovými soubory. Druhou zajímavější možností je ATTACH - cizí soubor není převeden do Accessu, ale zůstane vedle a je pouze zpřístupněn. Tady je možností méně, protože umí pouze dBase, Paradox, Btrieve a SQL Server. V připojených tabulkách není možné provádět změny struktur. Vše samozřejmě ovládá i pro svůj vlastní formát. Je nepříjemné, že výhody připojování nelze obecně použít pro soubory FoxPro (pouze pro ty, které neobsahují Memo položky). Firma však slibuje doplnit driver FoxPro v krátké době po uvedení Accessu na trh.
Formáty (Forms)
Ve formátech můžeme využít OLE objekty a zajistit event-driven akce. Definice formátu se více přibližuje definici sestavy, než je tomu u FoxPro. I zde se setkáme se třemi definičními pásmy, včetně záhlaví a úpatí, která slouží k zobrazení titulku a součtů. Oddělení header-footer se projeví pouze u hard copy, ale ne na obrazovce. Vytisknutí formátu představuje alternativu k report sestavě. Snadno tak získáme evidenční karty objektů v tabulce.
Můžeme navrhovat komplexy obrazovek a vytvářet formáty i pomocí výběrů. Na obrazovce se vedle hlavního formátu mohou objevovat i subformáty. Při spojování tabulek Access sám určuje spojovací položky i když jsou v podřízených tabulkách určeny primární klíče. V opačném případě musí uživatel charakter spojení určit manuálně.
Pro snadnější definici i formátu je k dispozici "Form WIZARD". Pro formát nejprve vybereme tabulku. Nebo výběr a potom z nabídky základní grafickou formu: tabulku, graf, jednoduché sloupce a hlavní subformát. Základní nabídku vstupního formátu Wizard přitom můžeme upravit. Rozmístěním prvků se příliš neliší od generátoru FoxPro - Screen Builder. Prvky formátu jsou v terminologii Accessu nazývány ovladače (controls). Zahrnují vedle vstupních položek (input fields) ještě přepínače (toggle buttons), check boxes, návěstí (labels), výkonná tlačítka (command buttons), seznamy (combo list). Seznamy mohou využívat i více sloupců. Můžeme definovat i seznamy s možností přidat další hodnotu. Ze speciálního nabídkového okna vybíráme všechny druhy ovladačů pomocí ikon. Grafický Wizard rovněž umožňuje definovat celkem 9 různých typů grafů.
Sestavy (Reports)
Pro usnadnění návrhu sestavy je opět k dispozici Report Wizard. S jeho použitím můžeme připravit jednoduchou sloupcovou sestavu, součtovanou sestavu nebo etikety. Jestliže do report ovladače CONROL zapíšeme výraz, potom snadno získáme v sestavě vypočítávanou položku. Když je to zapotřebí, Report Wizard automaticky data uspořádá a rozdělí do skupin. Třídění můžeme samozřejmě zajistit i jako součást výběru. Access sám rozpozná potřebu dvouprůchodového reportu. Při součtování můžeme, stejně jako u FoxPro, vybírat mezi součtem, počtem, průměrem atd. I v sestavě můžeme uplatnit grafické objekty.
Programování
Programovat v Accessu můžeme dvěma způsoby. Jednodušší je programování pomocí maker, pro velké aplikace je potřeba použít i složitější programy v jazyku Access Basic. Makro je posloupnost operací, která zhruba odpovídá možnostem menu - otevírání a zavírání dialogů, nastavení parametrů, spouštění jiných programů atd. Makro se sestavuje ve speciální tabulce pomocí výběru z přibližně 20 možných příkazů a jejich parametrů. Do jednoho makro-souboru lze umístit několik pojmenovaných maker a každý řádek makra může být podmíněn. Složitější větvení v makru však není možné.
Access Basic je objektově orientovaná verze Basicu, specializovaná pro práci s databází. Jeden modul, který je uložen spolu se vším dalším v databázi, obsahuje část s deklaracemi a několik podprogramů, funkcí nebo procedur. Tyto podprogramy se dají vyvolat pomocí maker nebo prvků dialogů, případně mohou být použity všude, kde je možné napsat výraz. Proměnné můžeme deklarovat jako lokální, globální nebo trvale existující lokální - STATIC. Je možné zcela zakázat automatickou deklaraci proměnných. Kromě běžných typů, které odpovídají typům položek databáze, je možné použít typ VARIANT, jenž se přizpůsobí přiřazené hodnotě (stejně jako proměnná XBASE).
Jako se deklarují i všechny objekty a je možné používat různé typy polí nebo pomocí popisů Type si vytvořit obecnou datovou strukturu. Pole je možné deklarovat bez určení rozměrů a později jeho velikost měnit. Výhodou také je, že jednotlivé položky tabulek nejsou dostupné bezprostředně, ale jen jako součást příslušného objektu.
Pro náročné úpravy je k dispozici transakční zpracování. Složitější sekvence oprav se zahájí příkazem BEGINTRANS a až do jeho skončení si nemusíte dělat hlavu, jak to případně celé vrátit. Transakci skončíte příkazem COMMIT, když je v pořádku, nebo ROLLBACK v případě poruchy. Odpadne tím řada složitých kontrol.
Zabezpečení souborů a nápověda
V menu se pod volbou SECURITY skrývá prostředek pro ochranu databáze před nežádoucími uživateli. Je možné rozdělit uživatele do jednotlivých skupin (standardně tří - Admin, Users a Guests) s různými oprávněními. Každý uživatel má své jméno a heslo, kterým se musí přihlásit, a pokud žádné nezná, je zařazen do skupiny Guests, kde nesmí téměř nic. Soubor uživatelů je společný pro celou instalaci Accessu na počítači a oprávnění uživatelů může být v každém souboru jiné.
Vynikajícím způsobem je vyřešena nápověda, která zabírá na disku přes 3 MB a obsahuje podrobný popis prakticky všech komponent databáze ACCESS. Při stisku klávesy F1 se dozvíte informaci, která nejlépe odpovídá právě prováděné činnosti. Kromě jednotlivých akcí obsahuje i kompletní popis jazyka s řadou příkazů a doplňkových informací. Nápověda navíc obsahuje vynikající a revoluční prostředek CUE CARD, který lze nejlépe charakterizovat jako průvodce. Cue Card vám přesně poradí, jak se co nejrychleji dostat k cíli vašeho snažení, a já sám jsem tohoto průvodce při poznávání Accessu využíval velmi intenzívně.
Závěr
I když jsem v poměrně krátké době nemohl program pořádně vyzkoušet, a jako profesionální programátor ve FoxPro mohu být také podezírán ze zaujatosti, musím konstatovat, že Access je obecně použitelná databáze, schopná pracovat s více uživateli s přesně určenými oprávněními v síti. Program je ve své první verzi neuvěřitelně kvalitně zpracován a patří nepochybně mezi nejlepší programy Microsoftu.