LibreOfficeLogo

Příručka aplikace Base 7.3

Kapitola 1
Představení Base

 

Autorská práva

Tento dokument je chráněn autorskými právy © 2022 týmem pro dokumentaci LibreOffice. Přispěvatelé jsou uvedeni níže. Dokument lze šířit nebo upravovat za podmínek licence GNU General Public License (https://www.gnu.org/licenses/gpl.html), verze 3 nebo novější, nebo the Creative Commons Attribution License (https://creativecommons.org/licenses/by/4.0/), verze 4.0 nebo novější.

Všechny ochranné známky uvedené v této příručce patří jejich vlastníkům.

Přispěvatelé

Pro toto vydání

Steve Fanning

Vasudev Narayanan

Robert Großkopf

Pro předchozí vydání

Martin Fox

Robert Großkopf

Pulkit Krishna

Jost Lange

Dan Lewis

Hazel Russman

Jochen Schiffers

Jean Hollis Weber

 

Zpětná vazba

Jakékoli připomínky nebo návrhy k tomuto dokumentu prosím směřujte do fóra dokumentačního týmu na adrese https://community.documentfoundation.org/c/documentation/loguides/ (registrace je nutná) nebo pošlete e-mail na adresu: loguides@community.documentfoundation.org.

Poznámka

Vše, co napíšete do fóra, včetně vaší e-mailové adresy a dalších osobních údajů, které jsou ve zprávě napsány, je veřejně archivováno a nemůže být smazáno. E-maily zaslané do fóra jsou moderovány.

Datum vydání a verze programu

Vydáno Srpen 2022. Založeno na LibreOffice 7.3 Community.
Jiné verze LibreOffice se mohou lišit vzhledem a funkčností.

Používání LibreOffice na systému macOS

Některé klávesové zkratky a položky nabídek jsou v systému macOS jiné než v systémech Windows a Linux. V následující tabulce jsou uvedeny nejdůležitější rozdíly, které se týkají informací v této knize. Podrobnější seznam se nachází v nápovědě aplikace.

Windows nebo Linux

Ekvivalent pro macOS

Akce

Výběr v nabídce Nástroje > Možnosti

LibreOffice > Předvolby

Otevřou se možnosti nastavení.

Klepnutí pravým tlačítkem

Control + klepnutí a/nebo klepnutí pravým tlačítkem myši v závislosti na nastavení počítače

Otevře se místní nabídka.

Ctrl (Control)

(Command)

Používá se také s dalšími klávesami.

Alt

⌥ (Option)

Používá se také s dalšími klávesami.

Ctrl+Q

+ Q

Ukončí LibreOffice

Úvod

Co je Base?

Base je databázová front-end komponenta LibreOffice, volně dostupného, plně vybaveného kancelářského balíku s otevřeným zdrojovým kódem. Base poskytuje tyto důležité funkce:

Poznámka

V tomto vydání je většina maker v tomto dokumentu nakódována v jazyce LibreOffice Basic. Další informace o používání skriptů Python najdeme v nápovědě.

Použití správného nástroje pro danou práci

V každodenním kancelářském provozu se tabulky pravidelně používají k agregaci souborů dat a k jejich analýze. Vzhledem k tomu, že data v tabulkovém procesoru jsou zobrazena v tabulce, jsou přehledná a snadno se upravují nebo rozšiřují, mnoho uživatelů se ptá, proč by měli používat databázi místo tabulkového procesoru. Tato kniha vysvětluje rozdíly mezi těmito nástroji a poskytuje čtenářům informace, které jim pomohou vybrat nejlepší řešení pro jejich konkrétní požadavky.

Databáze poskytne výhody mnoha uživatelům a dobře navržená databáze minimalizuje duplicity, chyby a nekonzistence, které lze v tabulkovém procesoru obtížně identifikovat a odstranit. Některé potenciální uživatele databází však může odradit neznalost databázových pojmů a terminologie. Uživatelé, kteří se obávají složitosti, by měli být ujištěni, že:

Ukázka databází

V této kapitole je představena jedna ze vzorových databází, která se používá v této knize – Media_without_Macros.odb. Tato databáze je určena pro pomoc s provozem knihovny médií a vším, co s ní souvisí. K vybavení patří:

Kromě toho je v této kapitole použita ukázková databáze Example_Sport.odb, která je určena pro pomoc při organizaci sportovní soutěže.

Užitečné základní informace

Base můžeme použít dvěma různými způsoby:

  1. Base může fungovat jako front end pro širokou škálu databázových strojů a poskytovat uživatelské rozhraní, které podporuje vytváření a používání prvků, jako jsou dotazy, formuláře, sestavy a makra. V této roli databázového front-endu vykonává hlavní (back-endové) databázové funkce, jako je ukládání a organizace dat, databázový stroj, nikoli databáze Base. Uživatel Base tak může pracovat s existujícími místními nebo síťovými databázemi, které mohou být víceuživatelskými prostředky sdílenými s ostatními členy organizace.

  2. Base může pracovat také v samostatném režimu s vestavěným relačním databázovým strojem HSQLDB (HyperSQL DataBase, verze 1.8.0) v jazyce Java ve standardní distribuci LibreOffice. Jedná se o ideální řešení pro každodenní práci a pro lidi, kteří vyžadují snadno pochopitelný, jednoduše použitelný databázový systém pro jednoho uživatele namísto komunikace s externím databázovým strojem. Více informací o HSQLDB najdeme na stránce http://hsqldb.org/.

Pokračují práce na vylepšení integrace relační databáze Firebird (verze 3.0.7), která není v jazyce Java, jako alternativního vestavěného stroje v rámci databáze Base. Dokud nebude tato práce dokončena, je možnost vytvořit databázi pomocí Firebirdu k dispozici pouze jako experimentální funkce. Base se však může připojit k databázovému stroji Firebird prostřednictvím externího serveru bez povolení experimentálních funkcí. Více informací o databázi Firebird najdeme na stránce https://firebirdsql.org/.

Base se může připojit k některým z nejrozšířenějších víceuživatelských databázových strojů. Seznam dostupných typů databází se liší v závislosti na operačním systému, ale vždy by měl obsahovat následující typy:

Kromě toho integrovaná podpora standardních ovladačů JDBC (Java Database Connectivity) a ODBC (Open Database Connectivity) umožňuje aplikaci Base připojit se k mnoha dalším existujícím databázovým strojům. Base se může připojit i k dalším zdrojům dat, včetně tabulek, textových dokumentů a adresářů.

Base ukládá své databázové informace do souborů s příponou ".odb“, které jsou formátovány v souladu se standardem Open Document Format for Office Applications (OpenDocument) verze 1.2. Část 3: Balíčky. Soubory ODB vytvořené nástrojem Base obsahují kolekci souborů a složek, které jsou komprimovány pomocí bezeztrátové komprese dat ZIP (obrázek 1). Soubor ODB může obsahovat mnoho souborů, například data týkající se vloženého databázového stroje, formulářů, dotazů, sestav a maker. Pokud se soubor vztahuje k externí databázi, nikoli k vloženému stroji, bude obsahovat spíše informace o připojení k databázi než o datech uložených v tabulkách databáze.

Image30

Obrázek 1: Struktura nejvyšší úrovně složek a souborů v souboru ODB

Správné fungování některých funkcí Base závisí na prostředí Java Runtime Environment (JRE). Pokud není pro LibreOffice k dispozici JRE, nebudou k dispozici následující možnosti:

Base zobrazí příslušná chybová dialogová okna s upozorněním na nedostupnost JRE. Pokud je JRE nainstalováno, ale není povoleno v LibreOffice, lze jej povolit výběrem Nástroje > Možnosti > LibreOffice > Pokročilé v hlavní nabídce a kliknutím na možnost Použít běhové prostředí jazyka Java.

Oracle Java si můžeme stáhnout z adresy https://www.java.com/en/download/manual.jsp. Pokud používáme 32bitovou verzi LibreOffice, měli bychom nainstalovat 32bitovou verzi JRE. Pokud používáme 64bitovou verzi LibreOffice, měli bychom nainstalovat 64bitovou verzi JRE.

Upozornění

Na webu společnosti Oracle pro stahování je ve výchozím nastavení k dispozici 32bitový soubor JRE – pokud potřebujeme získat přístup k 64bitovému souboru JRE, měl by v názvu souboru obsahovat řetězec „x64“. 64bitová verze LibreOffice nerozpozná 32bitové JRE (a naopak), což je častým zdrojem problémů.

V systému macOS je třeba nainstalovat vývojovou sadu Java Development Kit (JDK) společnosti Oracle, nikoli pouze JRE. Odkazy ke stažení najdeme výběrem možnosti macOS na adrese:
https://www.oracle.com/java/technologies/downloads/.

Pokud jsou naše data uložena v relační databázi, budeme nevyhnutelně chtít využít možnosti přímého zadávání příkazů SQL. SQL je zkratka pro Structured Query Language a jedná se o standardní jazyk (ISO/IEC 9075) pro přístup k datům v relačních databázích a manipulaci s nimi. Tato kniha obsahuje mnoho příkladů příkazů SQL. Pokud zpočátku neznáme syntaxi a sémantiku jazyka SQL, nemusíme se bát, na internetu jsou k dispozici kvalitní a bezplatné výukové materiály. Dobrým výchozím bodem je například výukový kurz SQL, který poskytuje W3Schools na adrese https://www.w3schools.com/sql/default.asp.

Části hlavního okna Base

Hlavní okno Base je zobrazeno na obrázku 2 a jeho funkce jsou popsány v následujících podkapitolách.

Grafické uživatelské rozhraní, text, automaticky generovaný popis e-mailu

Obrázek 2: Hlavní okno Base

Záhlaví okna

V horní části okna Base se nachází titulkový pruh. Zobrazuje název souboru aktuálního databázového dokumentu.

Hlavní nabídka

Nabídka je přímo pod titulním pruhem ve Windows i Linuxu, v systému macOS se nachází na horním okraji displeje. Vybereme-li položku nabídky, otevře se podnabídka v některé z následujících variant:

Výchozí konfigurace nabídek v hlavní nabídce bude pravděpodobně vyhovovat většině uživatelů aplikace Base. Hlavní nabídku však můžeme přizpůsobit pomocí karty Nabídky dialogového okna Nástroje > Přizpůsobit – podrobnosti o této funkci nalezneme v systémové nápovědě.

Nástrojové lišty

Kromě hlavní nabídky nabízí aplikace Base několik nástrojových lišt, které umožňují rychlý přístup k často používaným možnostem. Umístěním kurzoru myši na ikonu nástrojové lišty se zobrazí malý rámeček, tzv. tip, který pojmenovává funkci tlačítka. Chceme-li tip uzavřít, přemístíme se z podkladového objektu nebo stiskneme klávesu Esc.

Výchozí nastavení při otevření databázového dokumentu Base je takové, že se nástrojová lišta Standardní zobrazí v horní části pracovní plochy (pod hlavní nabídkou) spolu s nástrojovou lištou Formulář. Nástrojová lišta Formulář se při různých výběrech v oblasti Databáze hlavního okna nahradí nástrojovou lištou Tabulka, Dotaz nebo Sestava.

Výchozí nástrojová lišta Standardní je zobrazena na obrázku 3 a nabízí následující možnosti (zleva doprava): (nahoře): Nový; Otevřít; Uložit; Kopírovat; Vložit; Seřadit vzestupně; Seřadit sestupně; Formulář; Nápověda LibreOffice.

Picture 2

Obrázek 3: Standardní nástrojová lišta

Výchozí nástrojová lišta Tabulka je zobrazena na obrázku 4 a nabízí následující možnosti (zleva doprava): Vpravo (zprava): Nový návrh tabulky; Otevřít objekt databáze; Upravit; Odstranit; Přejmenovat.

Picture 3

Obrázek 4: Nástrojová lišta Tabulka

Výchozí nástrojová lišta Dotaz je zobrazena na obrázku 5 a nabízí následující možnosti (zleva doprava): (zprava): Nový dotaz (režim návrhu); Nový dotaz (režim SQL); Otevřít objekt databáze; Upravit; Odstranit; Přejmenovat.

Grafické uživatelské rozhraní, aplikace, automaticky generovaný popis týmu

Obrázek 5: Nástrojová lišta Dotaz

Výchozí nástrojová lišta Formulář je zobrazena na obrázku 6 a nabízí následující možnosti (zleva doprava): Formulář; Otevřít databázový objekt; Upravit; Odstranit; Přejmenovat.

Grafické uživatelské rozhraní, aplikace, automaticky generovaný popis týmu

Obrázek 6: Nástrojová lišta Formulář

Výchozí nástrojová lišta Sestava je zobrazena na obrázku 7 a nabízí následující možnosti (zleva doprava): Sestava; Průvodce sestavou; Otevřít databázový objekt; Upravit; Smazat; Přejmenovat.

Grafické uživatelské rozhraní, aplikace, automaticky generovaný popis týmu

Obrázek 7: Nástrojová lišta Sestava

V nabídkách hlavního okna Base jsou k dispozici možnosti ukotvení/uvolnění a uzamčení/odemčení nástrojových lišt. Ty jsou však zahrnuty pouze z důvodu konzistence s nástrojovými lištami v jiných součástech LibreOffice a pro Base nejsou obvykle potřeba.

Výchozí konfigurace nástrojových lišt bude pravděpodobně vyhovovat většině uživatelů aplikace Base. Nástrojové lišty však můžeme přizpůsobit pomocí karty Nástrojové lišty dialogového okna Nástroje > Přizpůsobit – podrobnosti o této funkci najdeme v systémové nápovědě.

Stavový řádek

Stavový řádek v dolní části pracovní plochy poskytuje informace o otevřené databázi, přičemž zobrazené informace závisí na typu dané databáze. Například obrázek 8  zobrazuje stavový řádek, když byla otevřená databáze vytvořena pomocí vestavěného databázového stroje HSQLDB.

Picture 8

Obrázek 8: Stavový řádek databáze vytvořené pomocí vestavěné HSQLDB

Obrázek 9  zobrazuje stavový řádek, pokud je otevřenou databází databáze MySQL. Program Base se připojil k databázi s názvem sakila (vzorová databáze dodávaná jako součást distribuce MySQL), která je dostupná prostřednictvím místního serveru MySQL (název připojení localhost, přihlášení pod uživatelským jménem root).

Picture 9

Obrázek 9: Stavový řádek pro databázi MySQL

Oblast databáze

Oblast Databáze obsahuje čtyři tlačítka pojmenované Tabulky, Dotazy, FormulářeSestavy (stejné možnosti jsou dostupné pomocí nabídky Zobrazit v hlavní nabídce). Pomocí těchto tlačítek můžeme vybrat pracovní oblast, která se týká aktuálního úkolu. Alternativní klávesovou zkratkou pro akci některého z tlačítek v oblasti Databáze je stisknutí klávesy Alt spolu s podtrženým písmenem v legendě tlačítka (například stisknutí kláves Alt + D na klávesnici odpovídá kliknutí myší na tlačítko Dotazy).

V závislosti na zvolené pracovní oblasti lze provádět různé úlohy – vytvářet nový obsah nebo vyvolávat existující prvky. Při různých výběrech v oblasti Databáze aktualizuje Base obsah obou oblastí vpravo tak, aby odrážel novou pracovní oblast.

Ačkoli jsou tabulky jádrem každé databáze, při otevření existující databáze je výchozím nastavením databáze Base pracovní oblast formulářů, protože formuláře jsou prvky, které se při práci s databázemi používají nejčastěji. Pomocí formulářů můžeme provádět záznamy do tabulek a analyzovat obsah tabulek.

Oblast úkolů

Oblast Úlohy nabízí několik možností pro výběr běžných akcí ve vybrané pracovní oblasti. Možnosti pro jednotlivé pracovní oblasti jsou následující:

Tabulky

Dotazy

Formuláře

Sestavy

Napravo od těchto odkazů se nachází oblast s názvem Popis. Při přejetí myší nad některou z dostupných možností se tato oblast aktualizuje a zobrazí se stručný textový popis označené možnosti.

Oblast Tabulky / Dotazy / Formuláře / Sestavy

Název v horní části oblasti umístěné pod oblastí Úlohy se změní tak, aby odrážel zvolenou pracovní oblast, a je tedy jedním z Tabulky, Dotazy, Formuláře nebo Sestavy.

V levé části oblasti jsou uvedeny definované prvky příslušného typu. Pro pracovní oblasti Tabulky a Dotazy je to abecední seznam dostupných prvků. V pracovních oblastech formulářů a sestav jsou příslušné prvky uspořádány abecedně ve struktuře složek (obrázek 10). Toho lze dosáhnout buď přímo při ukládání prvků pomocí dialogového okna Uložit, nebo vytvořením nových složek pomocí Vložit > Složka v hlavní nabídce.

Grafické uživatelské rozhraní, text, automaticky generovaný popis aplikace

Obrázek 10: Struktura složek v oblasti Formuláře

Pokud databáze obsahuje pohledy, jsou v pracovní oblasti Tabulky uvedeny společně s tabulkami. Oba typy se liší použitím různých ikon. Obrázek 11  zobrazuje tabulky i pohledy v databázi Media_without_Macros.odb.

Image47

Obrázek 11: Oblast tabulek včetně pohledů

V pravé části oblasti jsou uvedeny další informace, které se ovládají pomocí rozbalovací nabídky se dvěma nebo třemi možnostmi v závislosti na vybrané pracovní oblasti.

Pro všechny pracovní oblasti lze vybrat možnost Žádný, pokud nechceme obrazovku zahlcovat dalšími informacemi.

Pro všechny pracovní oblasti lze zvolit možnost Dokument, která zobrazí náhled vybraného prvku, což může pomoci při identifikaci prvku, který nás zajímá. Obrázek 12 například zobrazuje náhled tabulky Loan databáze Media_without_Macros.odb.

Automaticky generovaný popis tabulky

Obrázek 12: Náhled dokumentu v oblasti Tabulky

Pro pracovní oblasti formulářů a sestav je k dispozici další možnost Informace o dokumentu. Obrázek 13 zobrazuje příklad datum a název informačního poskytovatele pro formulář Maintenance databáze Media_without_Macros.odb.

Grafické uživatelské rozhraní, automaticky generovaný popis aplikace

Obrázek 13: Informace o dokumentu v oblasti Formuláře

Base – kontejner pro databázový obsah

Zadávání dat pomocí formulářů

Formulář je prvek, který slouží k zadávání, zobrazování nebo úpravám dat v databázi. Přestože je možné zadávat data přímo do tabulek, u rozsáhlých tabulek může být někdy obtížné zajistit, aby byla data umístěna na správné místo. Efektivní formulář může urychlit a zjednodušit práci uživatele a snížit možnost zadání chybných údajů.

Chceme-li otevřít formulář, klikneme na Formuláře v oblasti Databáze v hlavním okně Base, klikneme pravým tlačítkem myši na název formuláře v oblasti Formuláře a v místní nabídce vybereme Otevřít. Ve všech komponentách LibreOffice je běžné, že uživatelské rozhraní poskytuje více metod k dosažení stejného cíle. Například po kliknutí na Formuláře v oblasti Databáze hlavního okna Base nabízí Base následující alternativní metody pro otevření konkrétního formuláře:

  1. Dvakrát klikneme na název formuláře v oblasti Formuláře.

  2. Klikneme na název formuláře v oblasti Formuláře a poté klikneme na ikonu Otevřít databázový objekt na nástrojové liště Formulář.

  3. Klikneme na název formuláře v oblasti Formuláře a poté v hlavní nabídce vybereme možnost Úpravy > Otevřít databázový objekt.

Poznámka

Abychom se vyhnuli zbytečnému opakování, bude ve zbytku této knihy obvykle uvedena pouze jedna z metod uživatelského rozhraní, která slouží k dosažení určitého cíle. Popsaná metoda není zamýšlena jako doporučení „nejlepšího postupu“ – to je věcí osobních preferencí.

Jednoduchý formulář může zobrazovat informace pouze z jedné tabulky, složitější formuláře jich mohou obsahovat mnohem více. Obrázek 14 ukazuje formulář Loan v ukázkové databázi Media_without_Macros.odb, který byl rozšířen, aby zobrazoval informaci z více tabulek a obsahoval dodatečné kontroly.

Image7

Obrázek 14: Formulář Loan

Následující poznámky upozorňují na některé vlastnosti formuláře Loan:

Všechny funkce formuláře Loan v této ukázkové databázi se provádějí bez použití maker.

Zadávání dat přímo do tabulky – základy pro zadávání dat

Tabulky jsou databázové prvky, které obsahují data v databázi uspořádaná do řádků a sloupců tvořících mřížku. Důležitou součástí návrhu databáze je definování vazeb mezi jednotlivými tabulkami v databázi. Vztah mezi dvěma tabulkami je vytvořen pomocí polí, která jsou společná pro obě tabulky.

Chceme-li zobrazit vztahy definované pro ukázkovou databázi Media_without_Macros.odb, vybereme na panelu nabídek možnost Nástroje > Relace. Base zobrazí okno Návrh relace, které graficky znázorňuje relace pomocí čar mezi tabulkami spojujícími pole z každé z nich. Na první pohled může být toto schéma skličující, a proto je vhodné zaměřit se jen na jeho část.

Tabulka Loan přímo souvisí s tabulkami MediaReader, jak je znázorněno na obrázku 15. V obou případech se jedná o relaci jeden k mnoha (nebo mnoho k jednomu), jak je uvedeno v písmenech „1“ a „n“ na obou koncích spojovací čáry. To odráží skutečnost, že jeden čtenář si může vypůjčit více mediálních položek najednou a že jedna mediální položka může být vypůjčena vícekrát.

Image8

Obrázek 15: Relace mezi tabulkami Loan a Media a Reader

Poznámka

Tabulky Loan, Media, a Reader mají každá relace s dalšími tabulkami, ale pro přehlednost jsou na obrázku 15 záměrně vynechány.

Při výpůjčce knihy se do tabulky Loan místo jejího názvu uloží pouze jedno číslo do pole Media_ID. V poli ID tabulky Media je uložen jedinečný identifikátor každého záznamu této tabulky. Toto pole je klíčovým polem tabulky Media: primární klíč.

Poznámka

Primární klíč jednoznačně určuje hodnoty jednotlivých polí v každém záznamu tabulky. Při výpůjčce položky se tedy číslo zadané do pole Media_ID v tabulce Loan shoduje s číslem v poli ID tabulky Media, které identifikuje záznam obsahující informace o vypůjčené položce.

Jméno vypůjčitele se do tabulky Loan nezadává pokaždé – tato informace se ukládá do tabulky Reader. Tabulka má také pole primárního klíče, které identifikuje každou osobu, která si předmět vypůjčila. Hodnotu tohoto pole pak lze zadat do tabulky Loan, přičemž pole Reader_ID identifikuje konkrétní osobu.

Vztahy mezi tabulkami mají tu výhodu, že se značně omezí práce s příslušným formulářem. Namísto bezchybného zadávání názvu média a jména a příjmení je lze zadat výběrem správných čísel pro pole Media_IDReader_ID, což umožní výběr správných položek média a jmen a příjmení. Nakonec je možné si stejnou mediální položku později vypůjčit znovu a tentýž čtenář si může při každé výpůjční akci vypůjčit několik dalších mediálních jednotek.

Obrázek 16 zobrazuje tabulku Loan v databázi Media_without_Macros.odb. Chceme-li otevřít tabulku, klikneme v hlavním okně Base na Tabulky v oblasti Databáze, klikneme pravým tlačítkem myši na název tabulky v oblasti Tabulky a v místní nabídce vybereme Otevřít.

Image9

Obrázek 16: Datová struktura tabulky Loan

Do řádků a sloupců tabulky Loan lze přímo zadávat stejné údaje, jaké byly dříve zadány pomocí formuláře. Vztahy mezi touto tabulkou a ostatními tabulkami databáze se používají ve formuláři.

Zadání těchto údajů umožňuje správu jednoduché knihovny médií.

Dotazy – získávání informací z dat v tabulkách

Dotaz je požadavek na načtení nebo manipulaci s daty z databáze, přičemž tato data mohou pocházet z tabulek, pohledů nebo jiných dotazů. Dotazy sdružují obsah z více tabulek v přehledném formátu. Databáze Base ukládá dotazy pomocí jazyka SQL, což je standardní jazyk pro přístup k databázím a manipulaci s nimi.

Poznámka

Dotazy nejsou totéž co tabulky nebo pohledy, i když se někdy zdají být podobné.

Chceme-li otevřít dotay, klikneme v hlavním okně Base na Dotazy v oblasti Databáze, klikneme pravým tlačítkem myši na název dotazu v oblasti Dotazy a v místní nabídce vybereme Otevřít.

Image10

Obrázek 17: Dotaz Media_Loan_Balance_Time

V dotazu Media_Loan_Balance_Time zobrazeném na obrázku 17  jsou uvedeny všechny položky médií, které jsou aktuálně vypůjčené. Vypočítá, jak dlouho je každá položka vypůjčena a jaký je zůstatek výpůjční lhůty. Na základě pole cizího klíče Media_ID dotaz sloučí primární klíč, název a autora položky média do jediného textového řetězce zobrazeného v poli Medium. Toto pole se používá ve formuláři Loan. Kombinovaná pole v dotazu slouží také jako spojovací pole z formuláře Loan do tabulky Loan, a to prostřednictvím polí Media_IDReader_ID.

Sestavy – prezentace dat

Reporty umožňují načítat data z databáze a vypisovat výsledky v užitečném, uživatelsky přívětivém formátu. Databáze adresáře může být například plná údajů, jako jsou jména, adresy, telefonní čísla, data narození atd., ale můžeme chtít spustit sestavu, která bude zobrazovat pouze adresy naformátované pro tisk na štítky.

Formuláře obvykle není vhodné používat místo sestav. Vezměme si například formulář Recall zobrazený na obrázku 18, který zjevně není vhodný pro generování čistě naformátovaného dopisu vyzývajícího vypůjčovatele k vrácení opožděných multimediálních položek.

Image11

Obrázek 18: Formulář pro upomínku

Před vytištěním sestavy formátované jako oznámení o vrácení je nutné zadat informace o upomínce do formuláře Recall. V tabulce ve formuláři jsou uvedeny všechny osoby, které mají vypůjčené předměty se zápornou zbývající dobou výpůjčky.

U každého média, které má být vráceno, se zadá datum vrácení a číslo oznámení upomínky. Datum upomínky je ve výchozím nastavení aktuální datum. Číslo upomínky je celé číslo, které se s každou další výzvou k vrácení pro určitého vypůjčitele/médium zvyšuje o 1.

Tento formulář v příkladu databáze Media_without_Macros.odb vyžaduje zadání uživatelem pro vytvoření oznámení o upomínce. Ve verzi makra (Media_with_Macros.odb) se automaticky zadá datum a vytiskne oznámení o upomínce.

Oznámení o upomínce (obrázek 19) je generováno pomocí dotazu z dříve zadaných dat. Uživatel databáze musí pouze vybrat sestavu Recall a může vytisknout dopis s upomínkou a odeslat jej všem osobám, které mají ve formuláři na předchozí straně záznam o upomínce.

Chceme-li otevřít sestavu, klikneme v hlavním okně Base na Sestavy v oblasti Databáze, klikneme pravým tlačítkem myši na název sestavy v oblasti Sestavy a v místní nabídce vybereme Otevřít.

Image12

Obrázek 19: Ukázka upomínky

V takové sestavě může být pro určitou osobu více záznamů (položek po době vrácení). Pokud tabulka obsahující položky pro tuto osobu přesahuje prostor na jedné stránce, je rozšířena o další stránku.

Taková sestava je podrobnější než dopis vytvořený pomocí LibreOffice Writer. Automaticky shromažďuje datové sady pro tisk a podle toho uspořádává potřebný doprovodný text.

Podobný dopis jako na výše uvedeném obrázku lze jinak realizovat pouze pomocí maker, jak je popsáno v kapitole „Vytvoření sestavy“ na straně 1.

Bezpečná manipulace se souborem programu Base

Tabulky, dotazy, formuláře a sestavy interní databáze HSQLDB jsou uloženy v souboru programu Base. Vzhledem k tomu, že databázový soubor je zapsán do paměti, je třeba s ním zacházet opatrně, protože obsahuje více objektů. Z hlášení chyb je zřejmé, že databázový soubor vyžaduje jen o něco opatrnější zacházení než například textový soubor napsaný v programu Writer.

Při práci se souborem programu Base je proto potřeba vzít v úvahu následující pokyny:

Jednoduchá databáze – podrobný příklad

Přehled

Ve zbývající části této kapitoly jsou uvedeny pokyny k vytvoření databáze, která má pomoci při organizaci sportovních soutěží v různých disciplínách. Funkčnost této databáze je záměrně omezená, protože jediným cílem je seznámit čtenáře s aspekty uživatelského rozhraní a funkčností databáze Base. Databáze bude uložena jako Example_Sport.odb.

Vytvoření databáze

Vytvoření databáze a obsluha Průvodce databází jsou podrobně popsány v kapitole 2, Vytvoření databáze. Pro vytvoření databáze Example_Sport.odb se prozatím postupuje podle následujících kroků:

  1. Spustíme Průvodce databází jedním z následujících způsobů:

  1. Na úvodní obrazovce LibreOffice klikneme na možnost Databáze v oblasti Vytvořit.

  2. V libovolné komponentě LibreOffice vybereme v hlavní nabídce možnost Soubor > Nový > Databáze nebo klikneme na šipku vpravo od ikony Nový na nástrojové liště Standardní a z rozevírací nabídky vybereme možnost Databáze.

  3. V okně Base klikneme na ikonu Nový na nástrojové liště Standardní nebo zmáčkneme Ctrl + N.

Tip

Stejně jako mnoho jiných softwarových aplikací i LibreOffice poskytuje pro určité činnosti klávesové zkratky, v tomto případě například Ctrl + N. Pro některé uživatele mohou zlepšit efektivitu, přesnost a přístupnost. Většina klávesových zkratek dostupných v aplikaci Base je společná pro více součástí LibreOffice. Nejlepší způsob, jak se seznámit s dostupnými klávesovými zkratkami, je používat nabídky a panely nástrojů, kdy můžeme sledovat ekvivalentní sekvenci kláves, která je uvedena v legendě napsané u možnosti nabídky nebo v nápovědě, která se zobrazí, když je ukazatel nad ikonou panelu nástrojů. Seznam klávesových zkratek můžeme zobrazit také na kartě Klávesnice dialogového okna Nástroje > Přizpůsobit (vybereme přepínač LibreOffice).

Abychom se vyhnuli zbytečnému opakování, nebudeme ve zbytku této knihy uvádět sekvence kláves spojené s možnostmi nabídek a panelů nástrojů.

  1. V kroku 1 Průvodce databází vybereme možnost Vytvořit novou databázi a v nabídce Vložená databáze vybereme možnost Vestavěná HSQLDB.

  2. Klikneme na tlačítko Další >.

  3. V kroku 2 Průvodce databází vybereme možnost Ne, neregistrovat databázi, vybereme možnost Otevřít databázi pro úpravy a zkontrolujeme, zda není vybrána možnost Vytvořit tabulky pomocí průvodce tabulkou.

  4. Klepneme na tlačítko Dokončit. Base zobrazí dialogové okno Uložit jako.

  5. Přejdeme do složky, kde má být nová databáze uložena.

  6. Do pole Název souboru zadáme text „Example_Sport.odb“.

  7. Kliknutím na tlačítko Uložit uložíme novou databázi a zavřeme dialogové okno Uložit jako.

Tvorba tabulek

Po uložení databáze se zobrazí hlavní okno Base s vybranými Tabulkami v oblasti Databáze na levé straně okna (obrázek 20). Tabulky jsou centrálním úložištěm dat; bez tabulek by databáze neexistovala.

Image13

Obrázek 20: Hlavní okno základny s vybranou pracovní oblastí Tabulky

Databáze Example_Sport.odb bude obsahovat tři tabulky: jednu s údaji o účastnících, druhou s údaji o dostupných sportech a třetí, která určí, kterých sportů se chce každý účastník zúčastnit.

Vytvoření tabulky pro ukládání údajů o účastnících soutěže

Kliknutím na tlačítko Vytvořit tabulku v režimu návrhu otevřeme okno Návrh tabulky zobrazené na obrázku 21.

Image14

Obrázek 21: Okno návrhu tabulky

  1. Prvním krokem je zadání názvů polí pro tabulku. Do tabulky budou nakonec zařazeni jak muži, tak ženy.

  1. Název prvního pole zadáme jako „ID“. Odpovídající typ pole je ve výchozím nastavení nastaven na Text[VARCHAR]. Toto pole později získá hodnotu, která je pro každý záznam jedinečná. Pro vloženou databázi je nutné pole jedinečného klíče, jinak nelze do tabulky zadat žádné záznamy. Toto klíčové pole se v databázích nazývá primární klíč.

Poznámka

Pro tuto vlastnost lze použít jiné pole s vynecháním pole ID. Pokud by však bylo použito například last_name (příjmení), nebylo by možné uložit dvě osoby se stejným příjmením. Je možné deklarovat dvě pole společně jako jeden složený klíč, ale v této tabulce není zaručeno, že kombinace polí bude jedinečná. Proto se v tomto případě dává přednost navrženému jednoduchému provedení.

  1. Název druhého pole zadáme jako „first_name“ (jméno).

  2. Název třetího pole zadáme jako „last_name“.

  3. Název čtvrtého pole zadáme jako „birth_date“ (datum narození).

  1. Dalším krokem je výběr požadovaných typů polí pro čtyři pojmenovaná pole.

  1. Nastavíme pole ID na typ Integer[INTEGER] (obrázek 22). Tento typ pole má tu výhodu, že jej vestavěný engine HSQLDB může automaticky nastavit na nejbližší nejvyšší celé číslo.

Image15

Obrázek 22: Nastavení typu pole ID na Integer[INTEGER]

  1. Pro pole ID nastavíme vlastnost Automatická hodnota na Ano, čímž nastavíme automatické nastavení zvyšujících se číselných hodnot (obrázek 23).

Image16

Obrázek 23: Nastavení vlastnosti Automatická hodnota pro pole ID

  1. Po nastavení Automatické hodnoty by se při opuštění výběru Typu pole měla v záhlaví řádku objevit ikona klíče. To znamená, že toto pole je primárním klíčem tabulky. Pokud není nastavena Automatická hodnota, lze primární klíč vybrat také v místní nabídce (obrázek 24).

Image17

Obrázek 24 Nastavení primárního klíče pomocí místní nabídky

  1. Nastavíme typ pole pro birth_date na Date[DATE] (obrázek 25). Tím je zajištěno, že budou zadávány pouze platné záznamy o datumu. Používá se také k třídění dat nebo například k výpočtu věku.

Image18

Obrázek 25: Nastavení pole birth_date na typ Date[DATE]

  1. V okně Návrh tabulky klikneme na ikonu Uložit na nástrojové liště Standardní. V dialogovém okně Uložit jako zadáme název „tblEntrants“ a klikneme na tlačítko OK. Tabulka se nyní uloží pod názvem tblEntrants, aby bylo možné následně zadávat data. Do pole ID není nutné zadávat hodnoty, protože se tak stane automaticky při uložení záznamu.

Tip

Jakékoli netriviální použití Base, zejména s makry, může vést k záměně názvů tabulek, dotazů, formulářů a sestav. Abychom zajistili jasné rozlišení, může být užitečné před každým názvem uvést krátkou zkratku, například „tbl“ (pro tabulky), „qry“ (pro dotazy), „frm“ (pro formuláře) a „rpt“ (pro sestavy).

Většina vzorových databází použitých v této knize se touto konvencí neřídí, protože byly vytvořeny před navržením pokynů. Je však vhodné přijmout tuto nebo jinou konvenci pojmenování předtím, než se pustíme do návrhu jakékoli významné databáze.

Výše uvedená konvence pojmenování je dodržena v databázi Example_Sport.odb popsané v této kapitole.

Poznámka

Databázový soubor je zazipovaná složka jednotlivých souborů. Uložení jednotlivého objektu, jako je tabulka, se tedy nezapisuje přímo do samotného databázového souboru. Proto je třeba na tlačítko Uložit klepnout samostatně pro uložení samotného souboru databáze i po vytvoření tabulek, dotazů, formulářů a sestav.

Pouze při opuštění datového řádku se zadaná data automaticky uloží.

Do tabulky tblEntrants je nyní možné zadávat údaje o sportovcích. Nicméně jsme (záměrně!) zanedbali požadavek, aby bylo možné rozlišovat mezi závodníky a závodnicemi, takže je třeba do tabulky přidat další pole, a to následujícím způsobem:

  1. Tabulku tblEntrants otevřeme pro editaci kliknutím na Tabulky v oblasti Databáze v hlavním okně Base, pravým kliknutím na název tabulky v oblasti Tabulky a výběrem Upravit v místní nabídce.

Image2

Obrázek 26: Výběr možnosti Upravit v místní nabídce

  1. Přidání nového pole gender (pohlaví) do tabulky – nová pole lze přidávat pouze na konec tabulky při použití okna Návrh tabulky. Všimneme si však, že pomocí jazyka SQL je také možné přidat nová pole na určité pozice.

  2. Necháme Typ pole jako Text[VARCHAR], ale omezíme délku textu v tomto poli na jeden znak změnou vlastnosti pole gender Délka na 1 (Figure 27). Pro znaky 'm' (male - muž) a 'f' (female - žena) jako vstup stačí jeden znak.

Image1

Obrázek 27: Přidání pole pohlaví do tabulky tblEntrants

  1. Uložíme aktualizovanou tabulku tblEntrants.

Vytvoření tabulky pro uložení podrobností o sportech, které se mají hrát

Chceme-li definovat sporty, které mají být zahrnuty do soutěže, vytvoříme tabulku tblSports takto:

  1. Kliknutím na Vytvořit tabulku v režimu návrhu v oblasti Úlohy hlavního okna Base znovu otevřeme okno Návrh tabulky.

  2. Vytvoříme dvě pole s názvy IDsport_name (název sportu). Pomocí místní nabídky, která je přístupná po kliknutí pravým tlačítkem myši na záhlaví řádku pole nastavíme ID jako primární klíč. Protože není mnoho různých sportů, není pro primární klíč vybrána možnost Automatická hodnota. Místo toho je typ pole ponechán jako Text[VARCHAR], ale je omezen na pět znaků. Pro nalezení vhodné, ale jedinečné zkratky pro každý sport stačí pět znaků (obrázek 28).

Image19

Obrázek 28: Vytvoření tabulky tblSports

  1. Uložíme tabulku s názvem tblSports.

Vytvoření tabulky pro propojení účastníků s jejich sporty

Je zapotřebí další tabulka, která propojí tabulky tblEntrantstblSports tak, aby každý účastník mohl být registrován v několika sportech a aby v každém sportu mohlo být registrováno více účastníků. K tomu slouží třetí tabulka, do které se ukládají hodnoty dvou primárních klíčů tabulek tblEntrantstblSports. Protože bude uložena pouze kombinace těchto polí dohromady, jsou tato pole spojena do složeného klíče pro tuto tabulku. Provedeme následující akce:

  1. Kliknutím na Vytvořit tabulku v režimu návrhu v oblasti Úlohy hlavního okna Base znovu otevřeme okno Návrh tabulky.

  2. Vytvoříme dvě pole s názvy ID_entrantID_sport.

  3. Nastavíme typ pole ID_entrant na Integer[INTEGER], aby odpovídalo poli ID v tabulce tblEntrants. Neměníme typ pole ID_sport, protože již odpovídá poli ID v tabulce tblSports. Vlastnost Délka by však měla být změněna na 5 pro pole ID_sport.

  4. Klikneme na záhlaví řádku pro pole ID_entrant a poté klikneme se zmáčknutým shiftem na záhlaví řádku pro pole ID_sport; tím vybereme obě pole. Klikneme pravým tlačítkem myši na záhlaví kteréhokoli řádku a poté v místní nabídce vybereme možnost Primární klíč pro zadání složeného klíče (obrázek 29).

Image3

Obrázek 29: Vytvoření tabulky tblRel_entrant_sport

  1. Uložíme tabulku s názvem „tblRel_entrant_sport“.

Tip

Do této tabulky lze zahrnout i výsledky soutěže. Pokud se však koná více závodů, musí být ke společnému primárnímu klíči připojeno datum závodu.

Definování relací mezi tabulkami

Po definování tabulek pro databázi Example_Sport.odb je třeba definovat relace mezi těmito tabulkami, aby bylo možné využít skutečnou sílu relační databáze. Pro definici relace jsou nutné všechny dosud vytvořené tabulky. Vztahy umožňují databázi zajistit, aby data byla platná a neopakovala se, bez možnosti neočekávané duplicity. To může zabránit tomu, aby se v tabulce tblRel_entrant_sport objevilo číslo účastníka, který není uveden například v tabulce tblEntrants. Provedeme následující kroky:

  1. V hlavní nabídce vybereme možnost Nástroje > Relace.

  2. Base otevře okno Návrh relace a dialogové okno Přidat tabulky, abychom mohli začít definovat relace (obrázek 30).

Image23

Obrázek 30: Počáteční konfigurace okna Návrh relace

  1. Klikneme na název tabulky tblRel_entrant_sport a poté klikneme na tlačítko Přidat. Všimneme si, že se v hlavní oblasti okna objevil obdélník s názvem tblRel_entrant_sport.

  2. Klikneme na název tabulky tblSports a poté klikneme na tlačítko Přidat.

  3. Klikneme na název tabulky tblEntrants a poté klikneme na tlačítko Přidat.

  4. Klikneme na tlačítko Zavřít.

  5. Base zavře dialogové okno Přidat tabulky a ponechá tři tabulky reprezentované obdélníky v okně Návrh relace (obrázek 31). Všechna pole jsou uvedena v každé z přidaných tabulek. Pole primárního klíče jsou označena symbolem klíče.

Image4

Obrázek 31: Tři tabulky přidané do okna Návrh relace

  1. Podle potřeby přesuneme a změníme velikost tabulek, abychom zlepšili rozložení okna (obrázek 32).

Image5

Obrázek 32: Přesun a změna velikosti tabulek

  1. Klikneme levým tlačítkem myši na pole ID v tabulce tblEntrants. Podržíme stisknuté tlačítko myši a přesuneme ukazatel na pole ID_entrant v tabulce tblRel_entrant_sport. Kurzor změní vzhled, aby bylo viditelné, že se vytváří relace (obrázek 33). Uvolníme levé tlačítko myši.

Image26

Obrázek 33: Vytvoření relace

  1. Base zobrazí dialogové okno Relace, v němž lze podrobněji definovat povahu relace (obrázek 34).

Image6

Obrázek 34: Dialogové okno Relace – tblRel_entrant_sport a tblEntrants

  1. Zkontrolujte, zda je v oblasti Možnosti aktualizace vybrána možnost Žádná akce (jedná se o výchozí nastavení). Pole ID pro záznam v tabulce tblEntrants je automaticky generovaná hodnota.

  2. V oblasti Možnosti smazání vyberte možnost Kaskádové smazání. Pokud je tato volba zapnuta, při odstranění záznamu z tabulky tblEntrants databázový stroj odstraní všechny záznamy pro daného účastníka také z tabulky tblRel_entrant_sport, aby byla zachována referenční integrita databáze bez generování chyby. Při vypnuté možnosti by odstranění účastníka mohlo vést k osiřelým záznamům v tabulce tblRel_entrant_sport, což by znamenalo chybový stav.

  3. Kliknutím na tlačítko OK zavřeme dialogové okno Relace. Base nakreslí čáru mezi polem ID v tabulce tblEntrants (označené “1”) a polem ID_entrant v tabulce tblRel_entrant_sport (označené “n”).

  4. Klikneme levým tlačítkem myši na pole ID v tabulce tblSports. Podržíme stisknuté tlačítko myši a přesuneme ukazatel na pole ID_sport v tabulce tblRel_entrant_sport. Kurzor změní vzhled na odkaz. Uvolníme levé tlačítko myši.

  5. Base zobrazí dialogové okno Relace, ve kterém lze podrobněji definovat povahu relace.

Image20

Obrázek 35: Dialogové okno Relace – tblRel_entrant_sport a tblSports

  1. V oblasti Možnosti aktualizace vybereme možnost Kaskádová aktualizace. Pokud je tato volba zapnuta a změníme pole ID v tabulce tblSports na jiný pěti znakový řetězec, záznam v tabulce tblRel_entrant_sport, který má ID_sport nastaveno na ID, jež bylo změněno, se také aktualizuje, takže se neztratí vazba na správný sport. Při vypnuté volbě by změna pole ID sportu mohla vést k osiřelým záznamům v tabulce tblRel_entrant_sport, což by byl chybový stav.

  2. V oblasti Možnosti smazání vyberte možnost Kaskádové smazání. Pokud je tato volba zapnuta, odstraní databázový stroj při mazání sportu z tabulky tblSports také všechny záznamy pro tento sport z tabulky tblRel_entrant_sport, aby byla zachována referenční integrita databáze bez generování chyby. Při vypnuté možnosti by odstranění sportu mohlo vést k osiřelým záznamům v tabulce tblRel_entrant_sport, což by znamenalo chybový stav.

  3. Kliknutím na tlačítko OK zavřeme dialogové okno Relace. Base nakreslí čáru mezi polem ID v tabulce tblSports (označeno “1”) a polem ID_sport v tabulce tblRel_entrant_sport (označeno “n”).

  4. Uložíme aktualizovaný návrh relace.

Požadované tabulky a pole jsou nyní zcela propojeny (obrázek 36). Relace naznačují, že účastník se může v tabulce tblRel_entrant_sport objevit opakovaně. Sport se může ve stejné tabulce objevit i opakovaně. Daná kombinace účastníka a sportu se může v tabulce objevit pouze jednou. Ze dvou relací 1:n nyní existuje relace n:m prostřednictvím zasahující tabulky tblRel_entrant_sport.

Takový návrh tabulek může být únavný, pokud je třeba databázi naplnit psaním obsahu do tabulek. Vyžaduje otevření všech tří tabulek, když má být účastník zařazen do sportu. ID účastníka musí být vyhledáno v tabulce tblEntrants a zadáno do pole ID_entrant v tabulce tblRel_entrant_sport. Obdobně musí být vyhledáno ID sportu v tabulce tblSports a zadáno do tabulky tblRel_entrant_sport. Je to příliš složité a formulář by tento problém vyřešil elegantněji.

Image29

Obrázek 36: Relace mezi třemi tabulkami

Tvorba formuláře pro zadávání dat

Formuláře lze vytvářet přímo v zobrazení návrhu nebo pomocí průvodce. Dokonce i zkušení uživatelé zjistí, že mohou rychle použít průvodce a poté přizpůsobit jeho výstup tak, aby vytvořil formulář, který vyhovuje jejich potřebám. Tento přístup může často ušetřit čas.

Chceme-li vytvořit formulář pomocí Průvodce formulářem, provedeme následující kroky.

  1. V hlavním okně Base klikneme na Formuláře v oblasti Databáze.

  2. V oblasti Úlohy klikneme na Použít průvodce pro vytvoření formuláře.

  3. Base otevře okno Databázový formulář a dialogové okno Průvodce formulářem, abychom mohli začít formulář vytvářet. Průvodce formulářem se otevře v kroku 1 z 8. Při provádění kroků Průvodce formulářem můžeme v základním okně Formulář databáze zobrazit součásti formuláře.

  4. V rozevírací nabídce Tabulky nebo dotazy vybereme položku pro tabulku tblEntrants. Data tabulky tblEntrants by měla být zapsána v hlavním formuláři. Data z tabulky tblSports se načítají přímo s několika málo potřebnými sporty a aktualizují se jen zřídka.

  5. Pomocí tlačítek se šipkou doprava přesuneme všechny položky kromě ID v oblasti Dostupná pole do oblasti Pole ve formuláři (obrázek 37). Všechna pole kromě pole primárního klíče (ID) jsou z tabulky tblEntrants potřebná. Pole primárního klíče je automaticky vyplněno jedinečnou hodnotou.

Image21

Obrázek 37: Průvodce formulářem krok 1

  1. Klikneme na tlačítko Další >. Base zobrazí krok 2 Průvodce formulářem.

  2. Vybereme Přidat podformulářPodformulář založený na existující relaci. Měl by být vytvořen podformulář, kde je možné přiřadit sport k účastníkovi.

  3. Vybereme položku tblRel_entrant_sport vedle popisku Kterou relaci chcete přidat? (obrázek 38). To potvrzuje dříve definovanou relace.

Image22

Obrázek 38: Krok 2 Průvodce formulářem

  1. Klikneme na tlačítko Další >. Base zobrazí krok 3 Průvodce formulářem.

  2. Pomocí tlačítek se šipkou doprava přesuneme pole ID_sport z oblasti Dostupná pole do oblasti Pole ve formuláři (obrázek 39). Primární klíč v tabulce tblEntrants poskytuje hodnotu pro pole ID_entrant pro aktuální záznam prostřednictvím připojení hlavního formuláře k podformuláři.

Image24

Obrázek 39: Krok 3 průvodce formulářem

  1. Klikneme na tlačítko Další >. Base zobrazí krok 5 Průvodce formulářem. Krok 4 (Zobrazit spojená pole) je neaktivní, protože vazba již existuje.

  2. Klikneme na druhou ze čtyř ikon pod označením Uspořádání hlavního formuláře. Toto uspořádání se nazývá Sloupce - popisky v záhlaví. Pro tento příklad není příliš důležité, jak jsou položky v hlavním formuláři a podformuláři uspořádány. Rozložení by však mělo být vždy přehledné a uživatelsky přívětivé, aby pomohlo nezkušeným uživatelům.

  3. Klikneme na třetí ikonu ze čtyř pod označením Uspořádání podformuláře (obrázek 40). Toto uspořádání se nazývá Jako tabulka. V polích podformuláře se později zobrazí všechny sporty účastníků, proto je nejlepší ponechat výchozí nastavení podformuláře.

Image25

Obrázek 40: Krok 5 Průvodce formulářem

  1. Klikneme na tlačítko Další >. Base zobrazí krok 6 Průvodce formulářem. Zkontrolujeme, zda je vybrána výchozí možnost Formulář bude zobrazovat všechna data (obrázek 41). To znamená, že lze vytvářet nové záznamy a upravovat stávající záznamy.

Image27

Obrázek 41: Krok 6 Průvodce formulářem

  1. Klikneme na tlačítko Další >. Base zobrazí krok 7 Průvodce formulářem (obrázek 42). Použití stylů je otázkou vkusu. Jen pozor: některé styly obsahují nečekaně málo kontrastní obrázky, zejména v ovládacích polích tabulky. V takových případech může být nutné upravit barvu písma v polích datového listu.

Image28

Obrázek 42: Krok 7 Průvodce formulářem

  1. Klikneme na tlačítko Další >. Base zobrazí krok 8 Průvodce formulářem.

  2. Do pole Název formuláře zadáme text „frmEntrant“.

  3. Vybereme možnost Změnit formulář (obrázek 43).

Image31

Obrázek 43: Krok 8 Průvodce formulářem

  1. Kliknutím na tlačítko Dokončit zavřeme Průvodce formulářem.

Po ukončení Průvodce formulářem se v okně Průvodce databází zobrazí počáteční verze formuláře. Měla by se podobat verzi na obrázku 44.

Image32

Obrázek 44: Počáteční verze formuláře frmEntrant

V této původní verzi podformuláře musí uživatel zadat zkratku každého sportu, ve kterém chce účastník soutěžit. Významným zlepšením by bylo poskytnout nabídku umožňující výběr sportů s použitím jejich celých názvů. Toho je dosaženo prostřednictvím následujících opatření.

  1. V oblasti podformuláře v dolní části formuláře klikneme pravým tlačítkem myši na záhlaví tabulky ID_sport a v místní nabídce vybereme možnost Nahradit za > Seznam.

Image36

Obrázek 45: Převedení ID_sport do pole seznamu

  1. Dále je třeba seznam upravit tak, aby mohl zobrazovat zamýšlené sportovní údaje. Znovu klikneme pravým tlačítkem myši na záhlaví tabulky ID_sport, ale tentokrát v místní nabídce vybereme možnost Sloupec. Base zobrazí Vlastnosti: dialogové okno Seznam.

  2. Na kartě Data změníme Druh obsahu seznamu na Sql (obrázek 46). Pomocí jazyka SQL získá seznam svůj obsah z tabulky tblSports.

Image38

Obrázek 46: Nastavení pole Seznam pro použití dotazu SQL

  1. Kliknutím na tlačítko s třemi tečkami (...) napravo od pole Obsah seznamu otevřeme editor pro vytváření dotazů. Vytvoří se vhodný dotaz, který se nakonec uloží do samotného pole seznamu.

  2. Base otevře okno Návrh dotazu a dialogové okno Přidat tabulku nebo dotaz (obrázek 47), abychom mohli začít vytvářet dotaz.

Image33

Obrázek 47: Dialogové okno Přidat tabulku nebo dotaz

  1. V dialogovém okně Přidat tabulku nebo dotaz vybereme přepínač Tabulky a poté vybereme položku tblSports.

  2. Klikneme na tlačítko Přidat a poté na tlačítko Zavřít.

  3. Base odstraní dialogové okno Přidat tabulku nebo dotaz a v horní části okna Návrh dotazu zobrazí pole představující tabulku tblSports (obrázek 48).

Image34

Obrázek 48: Okno návrhu dotazu zobrazující tabulku tblSports

  1. V prvním sloupci dolní části okna klikneme na políčko vedle Pole a z rozevírací nabídky vybereme tblSports.sport_name.

  2. Ve druhém sloupci vybereme pole tblSports.ID (obrázek 49). Toto pole poté předá svou hodnotu tabulce tblSports, která je zdrojem dat podformuláře. To umožňuje zobrazit definovaná slova a uložit příslušné zkratky.

Image35

Obrázek 49: Návrh dotazu pro vyplnění pole seznamu ID_sport na formuláři frmEntrant

  1. Uložíme dotaz, který se přenese do vlastností pole seznamu. Zavřeme editor dotazů.

  2. Nyní se v poli Obsah seznamu ve vlastnostech v dialogovém okně Seznam zobrazí kód SQL, který byl vytvořen v editoru dotazů (obrázek 50):

    SELECT "sport_name", "ID" FROM "tblSports"

    Tento kód říká: V tabulcetblSports vybereme pole sport_name a přidruženou hodnotu klíče ID.

Tip

Často je užitečné zkontrolovat automaticky generovaný kód SQL, abychom se lépe seznámili s jazykem dotazů.

Image40

Obrázek 50: Kód SQL v poli Obsah seznamu

Tento dotaz ilustruje minimum, které by mělo být vybráno. Samozřejmě by mohlo být začleněno třídění. Uložením pečlivě vybraných zkratek získáme užitečný seznam sportů uložený v ID. Pokud nejsou záznamy seřazeny zadaným způsobem, provádí se třídění vždy podle pole primárního klíče. Aby se později v seznamu zobrazily sporty, musí být tento obsah zadán v tabulce tblSport.

Chceme-li změnit popisek pole ID_sport tak, aby se zobrazoval jako Sport, provedeme následující kroky:

  1. Vv dialogovém okně Vlastnosti seznamu klikneme na kartu Obecné.

  2. Nahradíme obsah pole Popisek hodnotou „Sport“ (obrázek 51).

Image37

Obrázek 51: Změna zobrazovaného štítku pro ID_sport

  1. Zavřeme dialogové okno Vlastnosti pole seznamu.

 

Změnu názvů ostatních polí ve formuláři nejlépe provedeme prostřednictvím Navigátoru formuláře. Pokud klikneme na pole, vyberou se nejen pole, ale i související popisky. Průvodce je seskupil dohromady. To pak vyžaduje další akci z místní nabídky.

Navigátor formuláře je přístupný po kliknutí na ikonu na nástrojové liště Návrh formuláře, která se při zobrazení obvykle nachází v dolní části okna Formuláře databáze. Obrázek 52  zobrazuje umístění ikony Navigátor formulářem na nástrojové liště Návrh formuláře, zvýrazněné červeným kroužkem.

Image42

Obrázek 52: Umístění ikony Navigátor formuláře na nástrojové liště Návrh formuláře

Tip

Pokud nástrojová lišta Návrh formuláře není viditelná, můžeme se k ní dostat výběrem možnosti Zobrazení > Nástrojové lišty > Návrh formuláře v hlavní nabídce.

Každé pole lze prozkoumat jednotlivě pomocí nástroje Navigátor formuláře a vlastnosti pole jsou pak přístupné v místní nabídce. Po přechodu na jinou vlastnost se položka vlastnosti automaticky uloží. I při otevřeném dialogovém okně Vlastnosti je možné přecházet z jednoho pole do druhého. Zde je také uložena příslušná střední úroveň.

Image43

Obrázek 53: Přístup k dialogovému oknu Vlastnosti z Navigátoru formuláře

Pokud byl návrh dokončen, uložíme jej a zavřeme formulář. Poté soubor programu Base znovu uložíme.

Pro účely testování formuláře předpokládejme, že tabulka tblSports byla naplněna daty uvedenými v tabulce 1.

Tabulka 1: Data zadaná v tabulce tblSports

ID

sportovní_název

disc

hod diskem

dist

závod na dlouhé tratě

vysoká

skok do výšky

long

skok do dálky

shot

vrh koulí

soft

softbalový hod

sprt

závod ve sprintu

Prvním účastníkem soutěže je Zayne Gibbs, který by se rád přihlásil do čtyř disciplín – hod diskem, běh do dálky, skok do výšky a sprint. Po zadání dat do formuláře může vypadat podobně jako na obrázku 54. Po zadání údajů nezapomeneme záznam uložit.

Image44

Obrázek 54: Ukázka dat ve formuláři frmEntrant

Do takového formuláře by samozřejmě mohly být začleněny mechanismy třídění.

Při používání formuláře si můžeme všimnout některých nepříjemností:

Chceme-li postupně vyřešit každý z těchto problémů, otevřeme nejprve formulář pro úpravy, nikoli pro zadávání dat (obrázek 55).

Image45

Obrázek 55: Otevření formuláře frmEntrant pro úpravy

Přepínání na podformulář

Aby se po zadání pohlaví účastníka nepřecházelo rovnou na další záznam pomocí klávesy Tab, je nutné upravit aktivační sekvenci.

  1. Klikneme na tlačítko Pořadí aktivace na nástrojové liště Návrh formuláře, který se při zobrazení obvykle nachází v dolní části okna Formulář databáze. Obrázek 56 zobrazuje umístění ikony Pořadí aktivace na nástrojové liště Návrh formuláře, zvýrazněné červeným kroužkem.

Image46

Obrázek 56: Umístění ikony Pořadí aktivace na nástrojové liště Návrh formuláře

  1. Base zobrazí dialogové okno Pořadí aktivace (obrázek 57).

Image39

Obrázek 57: Dialog Pořadí aktivace

  1. Klikneme na možnost Automaticky seřadit, která ovlivňuje nejen třídění zobrazených ovládacích prvků, ale také automatické přesměrování do podformuláře. Ačkoli to z dialogu není zřejmé, funguje to tak i na pozadí.

  2. Kliknutím na tlačítko OK zavřeme dialogové okno Pořadí aktivace.

Později ukončíme režim úprav, otevřeme formulář pro zadávání dat, ujistíme se, že pořadí aktivace pro formulář frmEntrant je nyní podle očekávání a že můžeme podformuláře vybrat pomocí klávesy Tab.

Správa navigačních panelů hlavního formuláře a podformuláře

  1. Kliknutím na ikonu Navigátor formulářem na nástrojové liště Návrh formuláře (obrázek 52) otevřeme Navigátor formulářem.

  2. Klepneme pravým tlačítkem myši na pole Podformulář v Navigátoru formulářem a vybereme položku Vlastnosti v místní nabídce (obrázek 58).

Image48

Obrázek 58: Dialogové okno pro přístup ke změně vlastností podformuláře

  1. Base zobrazí dialogové okno Vlastnosti formuláře.

  2. Na kartě Data změníme nastavení pole Lišta navigace na Zdrojový formulář (obrázek 59).

Image49

Obrázek 59: Změna nastavení podformuláře Lišta navigace

Později ukončíme režim úprav, otevřeme formulář pro zadávání dat a ujistíme se, že navigační panel na nástrojové liště Navigátor formulářem vždy zobrazuje pozici aktuálního záznamu v tabulce tblEntrants, a to i při práci v podformuláři.

Omezení vstupu do ovládacího prvku

Aby bylo možné omezit vstup na zadané hodnoty, nemůže být ovládací prvek pouhým textovým polem. Jedním z řešení by bylo použití skupinového rámečku, jak je popsáno v kapitole 4, Formuláře. Dalším řešením je zobrazit volby v Seznamu, a to následujícím způsobem:

  1. Kliknutím na ikonu Navigátor formulářem na nástrojové liště Návrh formuláře (obrázek 52) otevřeme Navigátor formulářem.

  2. Klikneme pravým tlačítkem myši na pole Textové pole pro zadání pohlaví účastníka a v místní nabídce vybereme možnost Nahradit > Seznam.

  3. Znovu klikneme pravým tlačítkem myši na stejné pole, ale tentokrát vybereme v místní nabídce možnost Vlastnosti.

  4. Base zobrazí Vlastnosti: dialogové okno Seznam.

  5. Na kartě Data klikneme na šipku dolů vpravo od pole Obsah seznamu. Do prvního řádku zobrazeného pole pro zadávání textu zadáme písmeno „f“, do dalšího řádku zadáme „m“ a klikneme na tlačítko OK (obrázek 60). Tyto zkratky jsou hodnoty, které budou předány do tabulky tblEntrants.

Image41

Obrázek 60: Nastavení povolených hodnot v poli pohlaví (karta Data)

  1. Klikneme na kartu Obecné.

  2. Posouváme se po této kartě dolů, dokud nedojdeme k poli Položky seznamu. Klikneme na šipku dolů vpravo od pole Položky seznamu. Do prvního řádku zobrazeného pole pro zadávání textu zadáme slovo „female“ (žena), do dalšího řádku zadejte „male“ (muž) a klikneme na tlačítko OK (obrázek 61). Jedná se o hodnoty, ze kterých bude uživatel vybírat, a musí být ve stejném pořadí jako hodnoty zadané v poli Obsah seznamu na kartě Data.

Image51

Obrázek 61: Nastavení hodnot povolených v poli pohlaví (karta Obecné)

  1. V poli Rozbalovací, které se nachází o něco níže na kartě, vybereme možnost Ano.

  2. Ujistíme se, že jsme uložili všechny změny ve formuláři a poté uložili databázi.

Později ukončíme režim úprav, otevřeme formulář pro zadávání dat a ujistíme se, že do pole gender lze zadávat pouze platné vstupy.

 

Nejvýraznější nepříjemnosti tak byly odstraněny. Může začít zadávání vstupů pro muže a ženy, stejně jako jejich přiřazení ke sportům.

Následující krok je užitečný: záznamy by se měly zadávat pouze jednou. Dbejme na to, aby účastníci mohli soutěžit i mezi sebou podle věku a sportu. Jinak by následné dotazy a sestavy nemusely dávat smysl.

Vytvoření dotazu

V dotazu lze seskupit obsah různých tabulek. V této části je vytvořen jednoduchý dotaz, který zobrazí každého z účastníků spolu se seznamem sportů na které se přihlásili.

  1. Klikneme na Dotazy v oblasti Databáze hlavního okna Base.

  2. Klikneme na tlačítko Vytvořit dotaz v režimu návrhu v oblasti Úlohy hlavního okna Base.

  3. Base zobrazí okno Návrh dotazu a otevře dialogové okno Přidat tabulku nebo dotaz (obrázek 47).

  4. Vybereme tabulku tblEntrants a klikneme na tlačítko Přidat.

  5. Vybereme tabulku tblRel_entrant_sport a klikneme na tlačítko Přidat.

  6. Vybereme tabulku tblSports a klikneme na tlačítko Přidat.

  7. Kliknutím na tlačítko Zavřít odstraníme ze zobrazení dialogové okno Přidat tabulku nebo dotaz.

  8. Všimneme si, že tyto tři tabulky a vztahy mezi nimi jsou znázorněny v horní části okna Návrh dotazu (obrázek 62).

Image52

Obrázek 62: Okno návrhu dotazu s přidanými třemi tabulkami

  1. Dvakrát klikneme na pole first_name, last_name, birth_dategender v tabulcetblEntrants a ověříme, že tato pole se přidají do cloupců dotazu ve spodní části okna Návrh dotazu. Dvojklik je asi nejjednodušší způsob přidání pole do dotazu.

  2. Ve spodní části okna Návrh dotazu klikneme na prázdnou položku Pole umístěnou napravo od položky gender a poté kliknutím na šipku dolů otevřeme rozevírací seznam polí, která lze do dotazu zahrnout. Seznam se skládá z názvů polí a jim odpovídajících názvů tabulek indexovaných podle názvu tabulky. Aby bylo možné správně přiřadit pole tabulek k jejich tabulkám, jsou v dotazech označena "název tabulky". "název pole". Pokud je místo názvu pole použita "*", znamená to, že se zobrazí všechna pole příslušné tabulky. V seznamu vybereme položku tblSports.sport_name – to je alternativa k metodě dvojkliku popsané v předchozím kroku (obrázek 63).

Image50

Obrázek 63: Okno návrhu dotazu zobrazující pět polí přidaných do dotazu

Dotaz je kompletní a je vhodné jej před uložením spustit, abychom zjistili, zda přinese požadované výsledky.

Chceme-li spustit dotaz z okna Návrh dotazu, klikneme na ikonu Spustit dotaz na nástrojové liště Návrh dotazu, která je standardně umístěna v horní části okna (obrázek 64).

Image53

Obrázek 64: Umístění ikony Spustit dotaz

Výstupy z tohoto jednoduchého dotazu se zobrazí v seznamu umístěném v horní části okna Návrh dotazu (obrázek 65). Dotaz zobrazí všechny kombinace účastníků a sportů. Pokud se účastníci přihlásili do více sportů, mají tolik záznamů. Účastníci se neobjevují bez sportovních disciplín.

Image54

Obrázek 65: Výstup dotazu

Abychom dotaz ještě trochu rozšířili, předpokládejme, že na některé události se mají vztahovat věková omezení. V takovém případě je důležité znát věk každého účastníka, aby mohl být zařazen do správné věkové kategorie pro každou z akcí. Jednoduchým krokem, který by s tím pomohl, by bylo určení věku účastníka na základě jeho data narození (uloženého v tabulce tblEntrants) a aktuálního data a zahrnutí výsledku tohoto výpočtu do dotazu.

Jednoduchým způsobem, jak toho dosáhnout, je použití dvou vestavěných funkcí HSQLDB:

Napíšeme vzorec YEAR(NOW())-YEAR("birth_date") ve vedlejší volné buňce Pole dotazu, jak je znázorněno na obrázku 66.

Image55

Obrázek 66: Výpočet věku zahrnutý v dotazu

První část tohoto vzorce, YEAR(NOW()), vybere aktuální rok. Druhá část, YEAR("birth_date"), vybere rok narození účastníka. Mezi nimi se vytvoří rozdíl, který udává (přibližně) aktuální věk osoby. Výsledky jsou uvedeny na obrázku 67.

Tyto a mnoho dalších funkcí, které pracují s vestavěným databázovým strojem HSQLDB, jsou popsány ve zbývající části této knihy a jejich úplný seznam nalezneme v kapitole 9 Uživatelské příručky HyperSQL na adrese http://hsqldb.org/doc/1.8/guide/index.html (viz část s názvem Vestavěné funkce a uložené procedury).

Image56

Obrázek 67: Výstup dotazu zobrazující vypočtený věk

Ve výchozím nastavení se kód zadaný do pole zobrazuje v záhlaví sloupce výstupu dotazu, což není uživatelsky příliš příjemné. To lze vylepšit zadáním aliasu, který se použije jako záhlaví sloupce místo kódu. Do řádku Alias pod pole obsahující kód zadáme výraz sport_age.

Image57

Obrázek 68: Použití aliasu k nahrazení vzorce

Alias sport_age se používá k odlišení vypočtené hodnoty od skutečného věku osoby. Obecně platí, že hodnota sport_age bude odpovídat skutečnému věku osoby pouze tehdy, pokud měla narozeniny v aktuálním roce.

Pokud je dotaz spuštěn znovu, záhlaví sloupce již neobsahuje kód, ale řetězec sport_age.

Image58

Obrázek 69: Výstup dotazu s použitím aliasu pro záhlaví posledního sloupce

Tento dotaz uložíme pod názvem qrySport_age. Na jeho základě se pak provede další dotaz, při němž se k zařazení osob do věkových skupin použijí poněkud složitější vzorce.

  1. Klikneme na Dotazy v oblasti Databáze hlavního okna Base.

  2. Klikneme na tlačítko Vytvořit dotaz v režimu návrhu v oblasti Úlohy hlavního okna Base.

  3. Base zobrazí okno Návrh dotazu a otevře dialogové okno Přidat tabulku nebo dotaz (obrázek 47).

  4. V horní části dialogového okna Přidat tabulku nebo dotaz vybereme možnost Dotazy.

  5. Vybereme dotaz qrySport_age.

  6. Klikneme na tlačítko Přidat a poté klikneme na tlačítko Zavřít, čímž ukončíme dialogové okno Přidat tabulku nebo dotaz (obrázek 70). Všimneme si, že ikona, která se objevuje před názvem qrySport_age, není stejná jako ikona používaná pro tabulky v tomto okně (viz například obrázek 62 ). Tento odlišný symbol je vizuální indikací, že základem tohoto dotazu je jiný dotaz, nikoli tabulka.

Image59

Obrázek 70: Okno návrhu dotazu s přidaným dotazem qrySport_age

  1. V oblasti dotazu qrySport_age dvakrát klikneme na položku obsahující pouze hvězdičku (*). To má za následek výběr všech polí v dotazu qrySport_age. Alternativním způsobem, jak dosáhnout stejného výsledku, by bylo kliknout na první položku Pole a v rozevírací nabídce vybrat qrySport_age.*.

Poznámka

Pokud v tomto okamžiku spustíme nový dotaz, zjistíme, že poskytuje stejný výstup jako dotaz qrySport_age, ale bez použití vzorce.

Pole sport_age v dotazu qrySport_věk se nyní použije k určení věkové skupiny, které se jednotlivé osoby účastní. Aby výpočet nebyl příliš složitý, jsou sportovci mladší 20 let rozděleni do věkových skupin, přičemž každá skupina obsahuje dva věkové stupně počínaje číslem 0. Od 20 let výše se vytvářejí skupiny po 10 letech, například 20–29 let.

  1. Do první prázdné buňky Pole zadáme následující vzorec: CASEWHEN( "sport_age" > 19, CEILING( "sport_age" / 10 ) * 10, "sport_age" – MOD( "sport_age", 2 ) ).

  2. Napíšeme řetězec “age_group” do odpovídající buňky Alias (obrázek 71).

Image60

Obrázek 71: Vzorec pro rozdělení startujících do věkových skupin

  1. Klikneme na ikonu Spustit dotaz na nástrojové liště Návrh dotazu. Výstup dotazu je zobrazen na obrázku 72.

Image61

Obrázek 72: Výstup dotazu zobrazující věkovou skupinu pro každého startujícího

  1. Dotaz uložte pod názvem qryRegistration.

Takové vzorce by opravdu neměly být zahrnuty do úvodu do Base a bylo by možné udělat jednodušší rozdělení dle věku. Přestože je vzorec složitý, ukazuje sílu dostupných funkcí.

Podívejme se na jeho části trochu podrobněji:

CASEWHEN( "sport_age" > 19, CEILING( "sport_age" / 10 ) * 10, "sport_age" – MOD( "sport_age", 2 ) )

Vypnutí zobrazení návrhu v okně Návrh dotazu není ve skutečnosti nutné, protože všechny položky lze bez větších problémů zadat v zobrazení návrhu. Z výukového hlediska však může být poučné podívat se blíže na kód, který je základem dotazu.

Je třeba si také uvědomit, že existují výrazy SQL, které se do návrhového zobrazení špatně hodí, nebo tam dokonce nejsou možné. V tomto případě můžeme v budoucnu chtít zadávat kód SQL přímo (s vypnutým zobrazením návrhu).

Klikneme na ikonu Režim návrhu zap/vyp na nástrojové liště Návrh dotazu (obrázek 73).

Image62

Obrázek 73: Umístění přepínače Zobrazení návrhu zapnuto/vypnuto na nástrojové liště Návrh dotazu

Při vypnutém zobrazení návrhu se v okně Návrh dotazu zobrazí kód SQL podle obrázku 74.

Image63

Obrázek 74: Kód SQL pro dotaz qryRegistration

Pro zobrazení kódu se používají následující konvence:

Poté, co jsme již probrali složky vzorce, můžeme se zaměřit na strukturu SQL:

SELECT "qrySport_age".*, ...  AS "age_group" FROM "qrySport_age"

Z dotazu qrySport_age vybere všechny záznamy z a kromě záznamů určených vzorcem. Ty, které jsou určeny vzorcem, označujeme jako age_group.

Kód nerozlišuje mezi tabulkami a dotazy jako základem dat. Funguje tedy pouze v grafickém uživatelském rozhraní programu Base. Dotaz nemůže mít stejný název jako tabulka; tabulka nemůže mít stejný název jako dotaz.

Při kliknutí na ikonu SQL na nástrojové liště SQL (pro přímé spuštění příkazu SQL) v zobrazení SQL databáze reaguje chybovou zprávou. Vestavěný engine HSQLDB nezná dotaz qrySport_age, na který odkazuje dotaz qryRegistration.

Vytvoření sestavy

Vytvoří se sestava se seznamem účastníků seřazených podle sportu, pohlaví a věkové skupiny.

  1. V hlavním okně Base klikneme v oblasti Databáze na Sestavy.

  2. V oblasti Úlohy klikneme na tlačítko Vytvořit sestavu v režimu návrhu.

  3. Base zobrazí okno Návrhář sestav s dialogovým oknem Přidat pole v popředí.

  4. V pravé části okna nástroje Návrhář sestav by se měla nacházet oblast pro zobrazení a úpravu vlastností aktuálně aktivního objektu. Pokud tato oblast není viditelná, vybereme v hlavní nabídce možnost Zobrazit > Vlastnosti. (Obrázek 75). Ve výchozí konfiguraci oblasti Vlastnosti pro databázi Example_Sport.odb je na kartě Data viditelné; pole Typ obsahu nastavené naTabulka, a pole Obsah nastavené na tblEntrants (název první tabulky dle abecedy). Tato výchozí nastavení definují počáteční obsah dialogového okna Přidat pole.

Image64

Obrázek 75: Počáteční zobrazení okna nástroje Návrhář sestav

  1. Na kartě Data v oblasti Vlastnosti pro pole Typ obsahu vybereme Dotaz. Jako základ nové sestavy se použije dotaz qryRegistration.

Poznámka

Výběr v rozevíracím seznamu Typ obsahu někdy způsobí, že velká část okna nástroje Návrhář sestav zčerná. Pokud k této chybě dojde, lze ji jednoduše obejít změnou velikosti okna pomocí ovládacího prvku v záhlaví okna a následným vrácením okna do původní velikosti. Tato akce by měla způsobit, že Base znovu zobrazí okno v normálním barevném schématu.

  1. Na kartě Data v oblasti Vlastnosti vybereme v poli Obsah qryRegistration.

  2. Base aktualizuje obsah dialogového okna Přidat pole tak, aby obsahoval seznam polí vybraného dotazu v alfanumerickém pořadí (obrázek 76).

Image65

Obrázek 76: Dialogové okno Přidat pole zobrazující pole dotazu qryRegistration

  1. Klikneme na ikonu Řazení a seskupení na nástrojové liště Standardní v okně nástroje Návrhář sestav (obrázek 77).

Image66

Obrázek 77: Umístění ikony Řazení a seskupení

  1. Base zobrazí dialogové okno Řazení a seskupení (obrázek 78).

Image67

Obrázek 78: Dialogové okno Řazení a seskupení

  1. V dialogovém okně Řazení a seskupení klikneme do první oblasti pod popiskem Pole/výraz a z rozevírací nabídky vybereme sport_name. Všimneme si, že do základního okna se přidá oblast název_sportu Záhlaví. Použijeme výchozí nastavení v oblasti Vlastnosti dialogového okna Řazení a seskupení.

  2. Opakujeme krok 10)  ale z rozbalovací nabídky vedle volného místa pod popiskem Pole/výraz vybereme gender.

  3. Opakujeme krok 10)  ale z rozbalovací nabídky vedle volného místa pod popiskem Pole/výraz vybereme age_group.

  4. Zavřeme dialogové okno Řazení a seskupení.

  5. V okně Návrhář sestav vybereme sekci skupiny sport_name Záhlaví. Base zvýrazní vybranou oblast bílým okrajem.

  6. Pokud se dialogové okno Přidat pole nezobrazí, klikneme na ikonu Přidat pole na nástrojové liště Standardní v okně Návrhář sestav (obrázek 79).

Image68

Obrázek 79: Umístění ikony Přidat pole

  1. Základna znovu zobrazí dialogové okno Přidat pole (obrázek 76).

  2. V dialogovém okně Přidat pole vybereme položku sport_name a poté klikneme na ikonu Vložit.

  3. Base vloží pole se štítkem a textové pole pro zobrazení obsahu pole sport_name dotazu qryRegistrace do zvýrazněné oblasti sestavy.

  4. V okně Návrhář sestav vybereme část skupiny gender Záhlaví. Base zvýrazní vybranou oblast bílým okrajem.

  5. V dialogovém okně Přidat pole vybereme položku gender a klikneme na ikonu Vložit.

  6. Base vloží pole se štítkem a textové pole pro zobrazení obsahu pole gender dotazu qryRegistration do zvýrazněné oblasti sestavy.

  7. V okně sestavení sestavy vybereme oblast skupiny age_group Záhlaví. Base zvýrazní vybranou oblast bílým okrajem.

  8. V dialogovém okně Přidat pole vybereme položku age_group a klikneme na ikonu Vložit.

  9. Base vloží pole se štítkem a textové pole pro zobrazení obsahu pole age_group dotazu qryRegistration do zvýrazněné oblasti sestavy.

  10. V okně Sestavení sestavy vybereme oblast skupiny Ddetail. Base zvýrazní vybranou oblast bílým okrajem.

  11. V dialogovém okně Přidat pole vybereme položku firt_name a klikneme na ikonu Vložit.

  12. V dialogovém okně Přidat pole vybereme položku last_name a klikneme na ikonu Vložit.

  13. V dialogovém okně Přidat pole vybereme položku birthday a poté klikneme na ikonu Vložit.

  14. V dialogovém okně Přidat pole vybereme položku sport_age a klikneme na ikonu Vložit.

  15. Base vloží pole se štítkem a textové pole pro zobrazení obsahu polí first_name, last_name, birth_date, and sport_age dotazu qryRegistration do zvýrazněné oblasti sestavy.

  16. Zavřeme dialogové okno Přidat pole.

  17. Návrh sestavy by nyní měl vypadat podobně jako na obrázku 80.

Image69

Obrázek 80: Návrh sestavy v okně Návrhář sestav

  1. Uložíme sestavu s názvem rptList_of_entrants.

  2. Uložíme databázi (jinak se sestava uloží pouze dočasně).

Poznámka

Při návrhu sestavy pomocí nástroje Návrhář sestav byly hlášeny chyby jako nestabilita programu. Proto je důležité uložit jak sestavu, tak databázový soubor.

Naštěstí pozdější provedení sestavy obvykle není těmito problémy ovlivněno.

Chceme-li zobrazit sestavu, klikneme na sestavy v oblasti Databáze v hlavním okně Base a poté dvakrát klikneme na název požadované sestavy uvedené v oblasti Sestavy.

Pokud je tato sestava spuštěna s příslušnými daty, pak by první část výstupu měla vypadat jako na obrázku 81.

Image70

Obrázek 81: První část návrhu výstupu sestavy

Na začátku sestavy jsou uvedeny dvě účastnice, Jessica a Patricia, které se přihlásily do soutěže v hodu diskem a patří do věkové skupiny 30-39 let. V závislosti na údajích v tabulkách databáze může následovat mnoho dalších kombinací účastník / věková skupina / sport.

Při prvním spuštění sestavy je běžné, že rozpoznáme některé funkce, které by mohly být vylepšeny, jako např.:

Následující podkapitoly zlepšují sestavu tím, že se postupně věnují každé z těchto otázek.

Nastavení vzdálenosti mezi poli sestavy

Chceme-li upravit výšku části sestavy, přetáhneme myší okraje této části nahoru a dolů podle potřeby. Můžeme také zvýraznit záhlaví oddílu a zadat vlastnost Výška v oblasti Vlastnosti v pravé části okna nástroje Návrhář sestav.

Není možné, aby byl oddíl menší než popisky a pole, které obsahuje.

Podrobné uspořádání každé sestavy je samozřejmě otázkou vkusu. Při výběru vzdáleností dbejme na to, aby se následující skupina neobjevila příliš blízko pod předchozí skupinou. Popisky a textová pole mohou být vzdáleny od horní části oddílu, ve kterém se nacházejí. Pokud tato vzdálenost od horního okraje není požadována, lze místo záhlaví zobrazit zápatí skupiny, které zajistí určitý odstup. Takové předvolby je možné provést v dialogovém okně Řazení a seskupení (obrázek 78) pro každou skupinu. Pro sestavu rptList_of_entrants použijeme následující doporučení:

Ovlivnění obsahu textového pole pomocí vzorce

The designation of the gender in the table is not enough for the rptList_of_entrants report. Přejmenování pole lze provést v dotazu. Protože však dotaz již byl vytvořen, můžeme v sestavě použít funkce.

  1. Zvýrazníme textové pole = gender v záhlaví sekce gender.

  2. V oblasti Vlastnosti na pravé straně okna nástroje Návrhář sestav klikneme na kartu Data.

  3. Zkontrolujeme, zda je v rozevírací nabídce Typ datového pole nastavena hodnota Pole nebo vzorec.

  4. Klikneme na tři tečky (...) napravo od pole Data.

  5. Base zobrazí Průvodce funkcí.

  6. V rozevírací nabídce Kategorie vyberte možnost Logické.

  7. Dvakrát klikneme na položku IF v oblasti Funkce. Všimneme si, že po výběru detailů funkce IF na pravé straně Průvodce Funkcí se může obsah oblastí KategorieFunkce změnit – jedná se o prediktivní chování, které je třeba v této fázi ignorovat.

  8. Do pole Test zadáme [gender]=”m”. Tím se definuje test, který se má provést. Název pole dotazu, z něhož se data načítají, je ohraničen hranatými závorkami. Textové řetězce jsou uzavřeny v dvojitých uvozovkách.

  9. Do pole Then_value zadáme “Male“. Pokud je pole nastaveno na „m“, nahradíme jej řetězcem „Male“ (angl. Muž).

  10. Do pole Další hodnota zadáme “Female” (angl. Žena) (obrázek 82). Pokud pole není nastaveno na „m“, nahradíme jej řetězcem „Female“.

Image71

Obrázek 82: Použití Průvodce funkcí ke změně řetězce pohlaví

  1. Klepnutím na OK zadání potvrdíme.

Při dalším spuštění sestavy se odpovídajícím způsobem změní znění pole gender.

Změna formátování textového pole

Pole, která zobrazují obsah databáze, jsou v sestavě zpočátku označena jako textová pole, ale lze je formátovat stejně jako pole v tabulkách v aplikaci Writer nebo Calc.

  1. Zvýrazníme pole =age_group.

  2. V oblasti Vlastnosti v pravé části okna nástroje Návrhář sestav klikneme na kartu Obecné.

  3. Všimneme si, že pole Formátování je zpočátku nastaveno na Text. Klikneme na tlačítko s třemi tečkami (...) napravo od pole Formátování.

  4. Base otevře dialogové okno Formát čísla. Podobná dialogová okna se používají v aplikaci Calc, Writer nebo při vytváření formulářů.

  5. V oblasti Kategorie vybereme možnost Číslo.

  6. Ujistíme se, že v oblasti Formát je zvolena volba Obecný (obrázek 83).

Image72

Obrázek 83: Dialogové okno Formát čísla

  1. Klepneme na tlačítko OK.

Při dalším spuštění sestavy se formát pole věkové skupiny nyní zobrazí bez desetinných míst.

Přesouvání polí v okně Návrhář sestav

V této podkapitole je popsáno, jak sestavu trochu upravit a přesunout pole na vhodnější pozice.

Pole sestavy lze přesunout za hranice sekce do jiného sekce. V cílové sekci však musí být pro pole dostatek místa. Žádná část jednoho pole nemůže existovat na stejném místě jako část jiného pole.

Umístění polí pomocí myši je nepřesné, proto je třeba v každé sekci zajistit dostatek místa pro pole, která tam chceme umístit. Po přetažení pole na novou pozici pomocí myši lze přesnějšího umístění dosáhnout pomocí kláves se šipkami. Dále můžeme pro umístění polí použít klávesnici, upravit hodnoty Pozice XPozice Y na kartě Obecné v oblasti Vlastnosti.

Popisek se přidá do oblasti Záhlaví stránky výběrem možnosti Vložit > Ovládací prvky sestavy > Popisek v hlavní nabídce. Text zobrazený na popisku je definován v poli Popisek v oblasti Vlastnosti s písmo lze vybrat v poli Písmo ve stejné oblasti.

Čtyři popisky původně umístěné v oblasti Podrobnosti lze přesunout tak, aby tvořily řadu ve spodní části oblasti záhlaví age_group. Čtyři textové oblasti v oblasti Podrobnosti lze nyní uspořádat do řady, každou pod odpovídajícím popiskem. Po dokončení lze výšku oblasti Podrobnosti snížit na 0,5 cm.

Chceme-li kompletně skrýt sekci Zápatí stránky, nastavíme Viditelnost na Ne v oblasti Vlastnosti. Spodní okraj dokumentu obsahuje příliš mnoho místa. Nezapomeneme, že dostupná výška je již snížena o velikost okrajů stránky.

Naše vylepšená sestava může mít podobnou strukturu jako na obrázku 84.

Image73

Obrázek 84: Upravená sestava rptList_of_entrants

Jak je vidět na obrázku 85, tyto změny zlepšily rozložení výstupu sestavy.

Image74

Obrázek 85: Prvních několik řádků aktualizovaného výstupu z rptList_of_entrants

Další informace o možnostech formátování sestav najdeme v kapitole 6, Sestavy.

Rozšíření databáze Example_Sport.odb

Zde uvedená příkladová databáze je pouze prvním krokem pro databázi, která má být použita ve sportovním odvětví. Pro databázi by bylo možné navrhnout mnoho užitečných rozšíření:

Tato a mnohá další rozšíření jsou možná pomocí metod popsaných v dalších kapitolách této příručky.

Obsah