Odkazy na další stránky:

Domovská stránka

Výuka a konzultační hodiny

Publikační činnost

Vyučované předměty:

Podniková ekonomika - základy

Nový podnikový systém

Informace o skriptech:

Paradox

Ukázka kapitoly skript Paradox

Quattro Pro

Zajímavosti:

Tipy k Paradoxu

Zajímavé linky

Přehled změn

Firefox - Objevte znovu web.

Valid HTML 4.01!

Ukázka části kapitoly ze skript Paradox 5.0 CZ - Dotazování

5 Dotazování

Umíme v Paradoxu založit nové tabulky, naplnit je údaji, zobrazit obsah těchto tabulek pomocí obrazovkových formulářů a případně i obsah tabulek vytisknout. Pomocí dotazů, které probereme v této kapitole, vybíráme z tabulek některé údaje - vybíráme ty, které nás zajímají. Dotazy je v Paradoxu možné pokládat dvěma různými způsoby. Prvním je dotazování podle příkladu - Query by Example (QBE), druhým je pak využití strukturovaného dotazovacího jazyka - Structured Query Language (SQL). V naší publikaci se zaměříme pouze na dotazování podle příkladu. Celou problematiku dotazování si rozčleníme do šesti částí: Dotazy k jedné tabulce, dotazy k více tabulkám, výpočty v dotazech, operace v dotazech, statistické (sumarizační) dotazy a množinové dotazy.

5. 1 Úvod do dotazování, dotazy k jedné tabulce

zaškrtnutíNový dotaz začínáme vytvářet stejným způsobem, jakým jsme vytvářeli nové formuláře nebo sestavy. Prozkoumáme řádek Dotazy v Pořadači projektu a v dílčí nabídce volíme Nový... Stejnou nabídku můžeme zobrazit i prozkoumáním odpovídajícího tlačítka na paletě tlačítek. Poslední cestou je Soubor, Nový, Dotaz... Ať již zvolíme kteroukoliv možnost, zobrazí se dialogové okno, prostřednictvím kterého musíme určit, jaká tabulka bude použita jako zdroj dat pro dotaz.

Obr. 5-1: Výběr zdroje pro dotaz

Obr. 5-1: Výběr zdroje pro dotaz

Ve standardním dialogovém okně volíme tabulky, které se stanou součástí budoucího dotazu. V levé dolní části dialogového okna v rozbalovacím seznamu si můžeme vybrat typ souborů, které mají být nabízeny v seznamu. Na obrázku jsou zobrazeny tabulky. Dalšími možnostmi jsou Dotazy (již uložené), Formuláře a Sestavy. Formuláře a sestavy z toho důvodu, protože obsahují datový model, který bude v dotazu využit. Navíc je k dispozici tlačítko Datový model..., po jehož stisku se zobrazí standardní dialogové okno určené k definici datového modelu.

Obr. 5-2: Definice datového modelu pro dotaz

Obr. 5-2: Definice datového modelu pro dotaz

Práci s dialogovým oknem určeném k definici datového modelu jsme popsali v předcházejících kapitolách věnovaných definici formulářů a sestav, proto ji zde znovu nepopisujeme.

Předpokládejme, že jsme libovolným způsobem určili tabulky použité v dotazu. Po jejich zvolení se zobrazí dotazovací okno. V tomto okně se všechny vybrané tabulky zobrazí. Pro následující obrázek jsme vybrali jedinou tabulku ZAKAZNIK.

Obr. 5-3: Okno s dotazovací tabulkou

Obr. 5-3: Okno s dotazovací tabulkou

Tabulka se zobrazí jako dotazovací tabulka (dotazový obraz). Co to znamená? Pod názvem každé položky se zobrazuje zaškrtávací políčko, podle kterého určujeme, které položky se mají zobrazit ve výsledku dotazu. Dále se zobrazuje prázdný prostor určený k zapisování podmínek, které musí vybrané věty splňovat. Postupně si popíšeme, jaké údaje je možné do dotazovací tabulky zapisovat.

První, co můžeme v dotazovací tabulce provést, je vybrat položky, jejichž obsah se ve výsledku dotazu má zobrazit. To provádíme zaškrtnutím v políčku u každé položky v dotazovací tabulce. Stiskneme-li levé tlačítko myší na políčku, zobrazí se nabídka čtyř možností zaškrtnutí.

Obr. 5-4: Nabídka různých typů zaškrtnutí

Obr. 5-4: Nabídka různých typů zaškrtnutí

ZaškrtnutíK čemu jsou čtyři možné způsoby zaškrtnutí? Pomocí normálního zaškrtnutí zajišťujeme, aby se obsah položky vypsal ve výsledné tabulce seřazený podle obsahu a výsledné věty nesmějí obsahovat duplicity. Co to znamená prakticky? Zaškrtneme-li v tabulce ZAKAZNIK na položce Město, zobrazí se abecedně seřazený seznam měst, ze kterých jsou naši zákazníci. Navíc se každé město zobrazí pouze jednou. Zaškrtneme-li nejen na položce Město, ale navíc i na položce PSČ, zobrazí se ve výsledné tabulce věty, které obsahují jak Město, tak PSČ. Výsledné věty budou seřazeny podle obsahu položky, která je ve struktuře tabulky na prvním místě a teprve při shodném obsahu této položky se řadí podle položky další. Z výsledku dotazu jsou eliminovány duplicitní věty - ne pro samostatné položky, ale pro celé výsledné věty.

Sestupné zaškrtnutíPomocí sestupného zaškrtnutí můžeme přikázat Paradoxu, aby zobrazil obsah položky v sestupném pořadí. Samozřejmě teprve v tom pořadí, v jakém je položka ve struktuře tabulky. Je-li normálně zaškrtnuto na položce Město a sestupně zaškrtnuto na položce PSČ, budou výsledné věty řazeny vzestupně podle měst a teprve pro stejná města budou výsledné věty řazeny podle PSČ sestupně. Sestupné zaškrtnutí opět eliminuje duplicitní výsledné věty.

Zaškrtnutí s plusemPoslední zde popisovaný typ zaškrtnutí - zaškrtnutí s plusem - umožňuje vypsat všechny výskyty vět bez eliminace duplicit. Stačí zaškrtnout s plusem na jediné položce a důsledkem je výpis neseřazených vět bez eliminování duplicitních obsahů. Upozorněme na to, že tento typ zaškrtnutí je nutné využívat v případech, kdy na základě dotazu chceme provádět další operace (například zobrazovat graf nebo křížovou tabulku). Druhá poznámka se týká zobrazení neseřazených vět - pokud chceme výstup získat seřazený, musíme využít dialogového okna Setřídění tabulky odpovědí (popisujeme ho dále v této kapitole).

Zaškrtnutí se seskupovánímPro úplnost dodejme, že zaškrtnutí se seskupováním je určeno k vytváření množinových dotazů. Množinovým dotazům se budeme věnovat v závěru celé této kapitoly.

Při zaškrtávání můžeme využít jednak myši a jednak klávesnice. Můžeme stisknout funkční klávesu F6 pro normální zaškrtnutí. Dalším stiskem funkční klávesy F6 se zaškrtnutí odstraní. Ostatní typy zaškrtnutí můžeme v položce získat po stisku kombinace kláves Shift a F6. Cyklicky se potom mění typ zaškrtnutí.

Stejné zaškrtávací políčko je i pod názvem tabulky. Pomocí tohoto políčka zaškrtáváme u všech položek tabulky najednou.

ProvéstVytvoříme-li dotaz, musíme ho spustit (provést). Pomocí myši stačí klepnout na odpovídající tlačítko na paletě. Pomocí klávesnice stačí stisknout funkční klávesu F8. Z nabídky dotaz spustíme příkazem Zobrazení, Spuštění dotazu. Upozorněme sice až teď, ale o to důrazněji, že stejně jako při tvorbě formuláře či sestavy se zobrazuje upravené menu a upravená paleta tlačítek.

Spustíme-li běh dotazu, objeví se standardně nová tabulka uložená v soukromém adresáři s názvem ANSWER. Spustíme-li jiný dotaz, tabulka ANSWER se přepisuje. Upozorněme na to, že následující obrázek zobrazuje nejen dotazovací tabulku, tabulku ANSWER s výsledkem dotazu, ale navíc i nabídku a paletu upravenou k tvorbě dotazu (aktuální musí být okno s dotazem).

Obr. 5-5: Zdrojový dotaz s výslednou tabulkou

Obr. 5-5: Zdrojový dotaz s výslednou tabulkou

Co uvést k výsledné tabulce ANSWER? Převezme názvy a typy položek ze zdrojových tabulek. Navíc převezme i jazykový ovladač (proto se ve výsledku dotazu řadí Choceň před Českou Bělou). A jaké vlastnosti zobrazení tabulka převezme závisí na tom, zda existuje soubor DEFAULT.TV v soukromém adresáři s vlastnostmi jednotlivých typů položek pro nové tabulky (případně, zda vlastnosti definujeme v parametrech tabulky odpovědi - viz dále).

Uvedli jsme, jak se vytváří tabulka s odpovědí. Ale jak se má tato výsledná tabulka tvořit můžeme blíže určit (nejen typem zaškrtnutí). K dispozici jsou totiž dvě další dialogová okna, pomocí kterých výslednou tabulku upravujeme.

Parametry odpovědíPomocí příkazu Vlastnosti, Parametry odpovědí... můžeme upravovat pořadí položek ve výsledné tabulce, typ výsledné tabulky, vlastnosti zobrazení jednotlivých objektů ve výsledné tabulce a případně i typ dotazu. Stejné dialogové okno se zobrazí po klepnutí na odpovídající tlačítko na paletě.

Obr. 5-6: Definice parametrů odpovědi na dotaz

Obr. 5-6: Definice parametrů odpovědi na dotaz

V horní části dialogového okna určujeme, jaký typ výsledku se použije. Zpravidla využijeme možnosti Tabulka odpovědi - vytvoří se nová tabulka s výsledkem dotazu. Druhou možností je Zobrazení živého dotazu. V tomto případě se zobrazují věty v původní tabulce a jejich editováním se původní tabulka upravuje. Živé dotazy popíšeme později v této kapitole.

Ve druhé části dialogového okna určujeme typ výsledné tabulky - volit můžeme tabulky ve formátu Paradox a dBASE. Navíc můžeme určit, kde má být výsledná tabulka umístěna a jak se má jmenovat (nemusí to tedy vždy být tabulka ANSWER.DB v soukromém adresáři).

V poslední části dialogového můžeme měnit pořadí položek ve výsledné tabulce. Chytneme záhlaví sloupce a metodou tažení přesouváme sloupec jinam.

Uvedli jsme si, že je možné nastavovat i vlastnosti výsledné tabulky. Provádí se to tak, že prozkoumáme jednotlivé části výsledné tabulky. Stejně jako pro tabulku můžeme upravovat záhlaví jednotlivých položek (případně se stisknutou klávesou Shift všech záhlaví), rastr tabulky a jednotlivé položky (se stisknutou klávesou Shift všechny položky). Můžeme měnit šířku jednotlivých sloupců i výšku prostoru pro záhlaví i jednotlivé věty. Odkazujeme vás na kapitolu věnovanou práci s tabulkou - veškeré vlastnosti jsme tam podrobně popsali.

Setřídění odpovědiDruhou možností, jak upravovat výslednou tabulku, je volit z nabídky Vlastnosti, Setřídění odpovědí... Stejné dialogové okno se zobrazí i po stisku odpovídajícího tlačítka na panelu tlačítek.

Obr. 5-7: Možnost setřídit výslednou tabulku

Obr. 5-7: Možnost setřídit výslednou tabulku

Pomocí tohoto dialogového okna můžeme přikázat Paradoxu, aby seřadil výsledné věty v tabulce odpovědi podle položek v jiném pořadí než jaké je ve struktuře tabulky. V levé části dialogového okna se zobrazují položky, u kterých jsme v dotazu zaškrtli, do pravé části dialogového okna pak přesouváme položky v tom pořadí, v jakém chceme výsledné věty setřídit.

Upozorněme jen na jednu souvislost. V tomto dialogovém okně neurčujeme směr třídění podle obsahu položky (vzestupné nebo sestupné), to totiž zajišťujeme typem zaškrtnutí u konkrétní položky.

Když jsme se dostali k popisování vlastností nastavitelných pro dotazy, popišme i poslední dialogové okno, pomocí kterého upravujeme vlastní běh dotazu. Vyvoláme ho příkazem Vlastnosti, Parametry dotazu... Vlastnosti, které prostřednictvím tohoto dialogového okna změníme, můžeme uchovat i pro všechny následují dotazy. Aktuální nastavení uchováme pomocí příkazu Vlastnosti, Uložení nastavení. Pokud změníme vlastnosti v dialogovém okně a chceme se vrátit zpět k naposledy uloženému nastavení vlastností, volíme z nabídky příkaz Vlastnosti, Obnova nastavení. Nyní již přejděme k popisu dialogového okna, pomocí kterého parametry dotazu upravujeme.

Obr. 5-8: Parametry dotazu

Obr. 5-8: Parametry dotazu

Jako první můžeme upravit chování Paradoxu při vyhodnocování dotazu, dojde-li ke změně zdrojových dat. K tomu může dojít v síťovém prostředí, kdy my provádíme dotaz a nějaký jiný uživatel v tabulkách použitých v našem dotazu mění data. K dispozici jsou tři možnosti Aktualizace tabulky. Jako první je uvedena možnost V případě změny dat dotaz znovu spustit. Jak je z názvu možnosti patrné, změní-li někdo tabulky použité v našem dotazu, Paradox začne dotaz provádět znovu. Druhou možností je volit možnost Uzamknout tabulky, aby nemohly být měněny. V tomto případě se po dobu provádění dotazu znemožní práce s tabulkami použitými v dotazu. Standardní možností je Ignorovat změny zdrojového souboru. V tomto případě se dotaz provádí bez ohledu na změny ve zdrojových tabulkách.

Druhá skupina vlastností se týká Tvorby pomocných tabulek. Stejně jako u již popsaných dotazů se vytváří tabulka ANSWER, existují ještě další typy dotazů, které vytvářejí pomocné tabulky (INSERTED, DELETED a CHANGED). Tyto tabulky (kromě tabulky ANSWER) je možné zakázat generovat a tím urychlit běh dotazu. V tom případě musí být zaškrtnuto Rychlé dotazy (bez pomocných tabulek). Pokud chceme mít možnost chybně provedené dotazy vrátit zpět, volíme Generovat pomocné tabulky.

Třetí možnost volby nám umožňuje nastavit Implicitní typ zaškrtávání. Standardně je nastavena možnost Zaškrtnutí, můžeme ale zvolit i Zaškrtnutí s plusem. Vybereme-li si Zaškrtnutí s plusem, po stisku klávesy F6 se nezobrazí normální zaškrtnutí ale zaškrtnutí s plusem. Stejný typ zaškrtnutí se objeví i tehdy, klepneme-li do zaškrtávacího políčka.

Jako poslední můžeme určit, jak se budou provádět Dotazy na vzdálené tabulky. Vzdálenými tabulkami se v tomto případě míní tabulky, ke kterým přistupujeme pomocí SQL linků. Zvolíme-li Spuštění dotazu na serveru, Paradox požádá o provedení dotazu server a očekává zaslání pouze dat odpovědi. Zvolíme-li Spuštění dotazu lokálně, vyžádá si Paradox všechna data potřebná pro provedení dotazu a vykoná sám dotaz. Varianta Dotaz může být lokální nebo vzdálený je určena pro situace, kdy se Paradox má pokusit provést nejprve dotaz vzdáleně a pouze pokud se nepodaří dotaz vzdáleně provést, provede se dotaz lokálně.

Běh dotazu máme ošetřen pomocí vlastností, vyzkoušeli jsme vše a zdá se, že dotaz funguje. Aby se dotaz uchoval, musíme dotaz uložit do souboru. K tomu volíme příkaz Soubor, Uložení nebo Soubor, Uložení jako... Pokud dotaz ještě není uložen, objeví se v obou případech standardní dialogové okno, pomocí kterého aktuální dotaz ukládáme. Dotazy se ukládají do souborů s příponou QBE a jedná se o prosté textové soubory. Uložený dotaz určený k vypsání příjmení a města zákazníků, seřazený podle měst vzestupně a teprve potom podle příjmení sestupně, jako první se má vypisovat město, výsledný dotaz má být ukládán do tabulky ve formátu dBASE s názvem ZKOUSKA v pracovním adresáři by vypadal následovně:

Query
ANSWER: :PRACOVNI:zkouska.DBF
TYPE: DBASE
SORT: ZAKAZNIK.DB->"Město", ZAKAZNIK.DB->"Příjmení" DESCENDING
ZAKAZNIK.DB | Příjmení | Město |
| CheckDescending | Check |
EndQuery

Zobrazení SQLPřestože jsme si v úvodu kapitoly uvedli, že se nebudeme věnovat dotazování pomocí strukturovaného dotazovacího jazyka (SQL), ukažme si alespoň možnost převést standardní dotaz podle příkladu (QBE) na SQL dotaz. K tomu musíme formulovat dotaz a poté volit příkaz Dotaz, Zobrazení SQL (existuje i ekvivalent ve formě tlačítka na paletě). Objeví se nové dialogové okno, ve kterém je zobrazen dotaz v syntaxi SQL.

Obr. 5-9: Okno s příkazem SQL

Obr. 5-9: Okno s příkazem SQL

Přejděme však od popisu vlastností dotazů k popisu dalších možností, které v dotazech máme k dispozici. Zatím jsme totiž pouze zaškrtávali. Ale dotazy toho umí více. Začneme vybíráním vět s požadovaným obsahem. Pokud požadujeme vypsat pouze věty, které mají v některé z položek, zapíšeme tento požadovaný obsah do položky. Vždy však musíme zaškrtnout alespoň v jedné položce, aby bylo co vypisovat ve výsledné tabulce. V položce, ve které je zapsán požadovaný obsah, být zaškrtnuto nemusí.

Ve výsledné tabulce se položky pojmenují stejně, jak jsou položky pojmenovány ve zdrojové tabulce. Pokud chceme ve výsledné tabulce položku přejmenovat, použijeme vyhrazené slovo AS následované novým názvem položky. Samozřejmě musíme v položce i zaškrtnout. Vyhrazená slova můžeme vypisovat jak malými, tak velkými písmeny, od ostatního textu podmínky bychom je měli oddělit mezerou.

Požadovaný obsah nemusíme znát přesně. V tom případě můžeme zadat dva zástupné znaky. Dvě tečky a zavináč. Dvě tečky použijeme v případě, kdy dvě tečky mají být nahrazeny libovolným počtem znaků, zavináč nahrazuje vždy právě jeden znak. Upozorněme na to, že použitím dvou teček nebude muset ve výsledku souhlasit velikost písmen, ve všech ostatních případech se kontroluje i shoda ve velikosti písmen.

Dalším typem omezení výstupu je možnost zadat do položky podmínku. Do podmínky můžeme zadat operátory: >, >=, < a <=. Volitelně můžeme zadat i operátor =. Do položky zadáváme nejprve operátor a za ním konstantu (tedy např. >15000). Podmínku čteme jako název položky je větší než 15000.

Z předchozího odstavce je patrné, že není k dispozici podmínka <>. Místo ní je k dispozici vyhrazené slovo NOT. Pokud chcete negovat podmínku s relačními operátory, nedoporučujeme používat operátor NOT. V tomto případě je vhodnější negovat podmínku (například místo NOT >= zapsat podmínku <).

Pokud neznáme přesný hledaný obsah, ale jsme si jisti začátkem, můžeme použít vyhrazené slovo LIKE - nehledá se přesná shoda, ale podobnost. Přitom tato podobnost je optimalizována pro angličtinu a tak, když hledáme zákazníky, jejichž příjmení je podobné jako Nový, naleznou se navíc Nohava, Novický a Novotný. Hledáme-li někoho jako Novák, naleznou se Nečová, Nodžák, Nosák a Nováček. Všimněte si, že vždy jsou první znaky v souladu s hledaným obsahem.

Pokud zadáme různé podmínky do více položek, budou muset být všechny splněny současně.

Pokud hledáme věty, které nemají položku vyplněnou (mají ji prázdnou), můžeme tuto podmínku zadat různými způsoby (například "" - dvoje uvozovky, nebo NOT @.. - není pravda, že alespoň jeden znak). Paradox umožňuje použít i vyhrazené slovo BLANK.

V některých podmínkách by se hodilo uplatnit v dotazu aktuální datum. Funkce v dotazech bohužel používat nejde a tak je k dispozici alespoň vyhrazené slovo TODAY. Pomocí něho můžeme pracovat s časem. Objednávky za posledních čtrnáct dní vybereme pomocí výrazu >=TODAY-14.

Umíme zadat složenou podmínku, která musí být současně splněna pro více položek (zapsáním jednotlivých podmínek do prostoru vyhrazeného u jednotlivých položek v jedné řádce), ale jak zapsat složenou podmínku v rámci jedné položky? K dispozici jsou dvě varianty. Podmínky, které musí být splněny současně nebo podmínky, z nichž může být splněna jen některá. V prvním případě se jedná o ekvivalent operátoru AND, který ale Paradox nezná a nahrazuje ho čárkou. Druhý případ je vyhrazen pro vyhrazené slovo OR.

Poslední variantu složených podmínek představuje představuje požadavek na splnění podmínky u jedné položky nebo na splnění jiné podmínky u jiné položky. V tomto případě musíme pro zapsání dotazu využít dvou řádek. Do první zapsat první podmínku, do druhé pak podmínku druhou. U položek, jejichž obsah se má vypisovat, musíme zaškrtnout v obou řádkách.

Popsali jsme si všechny možnosti pro dotazování na jednu tabulku. Dříve než přejdeme k popisu možností při dotazování k více tabulkám, procvičme si dotazování na ilustrativních příkladech. Následující ilustrativní příklady mají demonstrovat možnosti různého dotazování, proto někdy může být praktická náplň dotazu poněkud problematičtější.

5. 2 Ilustrativní příklady

Zadání (D0101)

Vypište přehled měst, ze kterých jsou naši zákazníci.

Řešení

Začneme vytvářet nový dotaz, vybereme si tabulku ZAKAZNIK a v dotazovací tabulce zaškrtneme na položce Město (dotaz si znázorníme pouze schematicky pomocí tabulky s pouze tolika položkami, kolik jich je pro dotaz nutné - nebudeme používat obrázku).

ZAKAZNIK.DB Město
  Zaškrtnutí

Výsledkem je 28 měst ze 120 vět - jsou vyřazeny duplicitní obsahy.

Zadání (D0102)

Vypište nejen město, ale i ulici pro naše zákazníky.

Řešení

Můžeme se vrátit zpět k původnímu dotazu a zaškrtnout ještě na položce Ulice.

ZAKAZNIK.DB Ulice Město
  Zaškrtnutí Zaškrtnutí

Výsledkem dotazu je všech 120 vět - žádní dva zákazníci nebydlí ve stejném městě a navíc i ve stejné ulici (včetně čísla popisného). Výsledné věty se řadí podle pořadí položek ve struktuře tabulky - proto jsou jako první zobrazeny věty s prázdným obsahem položky Ulice.

Zadání (D0103)

Vypište příjmení a město zákazníků. Zákazníky seřaďte podle příjmení sestupně.

Řešení

Opět se vrátíme k předcházejícímu dotazu. Zrušíme zaškrtnutí u položky Ulice a zaškrtneme - nyní sestupně - u Příjmení.

ZAKAZNIK.DB Příjmení Město
  ZaškrtnutíSestupně Zaškrtnutí

Výsledkem není všech 120 zákazníků, ale pouze 117 - vyplývá z toho, že tři zákazníci se stejným příjmením jsou i ze stejného města. Je možné se přesvědčit, že věty ve výsledné tabulce jsou seřazeny podle příjmení sestupně.

Zadání (D0104)

Vypište opět příjmení a město zákazníků, ale nyní seřazené podle měst sestupně.

Řešení

Nyní zaškrtneme sestupně u města, ale to nestačí. Provedeme-li dotaz, zjistíme, že se výsledné věty řadí nejprve podle příjmení a poté podle města.

ZAKAZNIK.DB Příjmení Město
  Zaškrtnutí ZaškrtnutíSestupně

Aby se seřadilo podle města, musíme volit z nabídky Vlastnosti, Setřídění odpovědí... (nebo klepnout na odpovídající tlačítko na paletě) a v dialogovém okně vybrat položku Město.

Obr. 5-10: Setřídění odpovědi podle města

Obr. 5-10: Setřídění odpovědi podle města

Po volbě setřídění se již výsledek zobrazuje tak, jak jsme požadovali. Všimněte si, že v rámci stejného města se zákazníci vypisují podle příjmení vzestupně.

Zadání (D0105)

Vypište všechny turnusy (veškeré údaje o nich), které odjíždějí 21. 6. 1997. Výsledek dotazu uložte do tabulky s názvem ODJ2106 v pracovním adresáři a ve formátu tabulek dBASE. Změňte typ rastru na červený trojitou čárou se vzhledem ve stylu tabulek. Barva pod položkami má být bílá. Jednotlivé věty mají být odděleny vodorovnou čárou. Barva pod všemi záhlavími má být bílá, písmo záhlaví má být ve velikosti 14 bodů, tučné a tmavě červené. Barva podkladu pod všemi položkami má být azurová (světle modrá), písmo ve velikosti 11 bodů tučně. Cena má být zobrazena tmavě modrým písmem, je-li cena do 8 000,- Kč, tmavě zeleným, pokud je větší než 8 000,- Kč. Cena má být zobrazena bez měnového symbolu. Rozšiřte sloupce tak, aby alespoň záhlaví sloupců byly vidět.

Řešení

V novém okně otevřeme tabulku TURNUSY a zaškrtneme všechny položky (nejrychleji zaškrtnutím pod názvem tabulky). Do položky Datum odjezdu zapíšeme požadované datum

TURNUSY.DB Seriál Číslo zájezdu Datum odjezdu Cena
  Zaškrtnutí Zaškrtnutí Zaškrtnutí 21.6.1997 Zaškrtnutí

Všechny ostatní úkoly řešíme pomocí dialogového okna parametrů odpovědí dotazu. Vyvoláme dialogové okno a postupně zadáváme požadované. Podrobně postup neuvádíme, je totiž obdobou úpravy vzhledu tabulky, kterou jsme již podrobně popsali. Po definování všech vlastností může vypadat dialogové okno tak, jak ukazuje následující obrázek.

Obr. 5-11: Parametrizace tabulky odpovědí

Obr. 5-11: Parametrizace tabulky odpovědí

Po definici uzavřeme dialogové okna klepnutím na tlačítko OK. Spustíme běh dotazu - zobrazí se výsledná tabulka s požadovaným formátem. Tabulka obsahuje devět vět. Všimněte si, že Paradox upraví názvy položek ve výsledné tabulce podle konvencí dBASE (například nemožnost použít mezeru v názvu položky a omezená délka názvu).

Obr. 5-12: Výsledná tabulka ve formátu dBASE se změněnými vlastnostmi

Obr. 5-12: Výsledná tabulka ve formátu dBASE se změněnými vlastnostmi

Poznámky: Stejně jako u tabulky ANSWER.DB Paradox přepíše bez doplňkového dotazu i tabulku s jiným názvem, v jiném formátu a umístěnou v jiném adresáři.

Nepovedlo se nám změnit vlastnosti písma pomocí pohyblivé palety - ta byla neúčinná.

Zadání (D0106)

Vypište všechny zákazníky z obce Ždírec nad Doubravou. Pro nalezené zákazníky vypište příjmení a jméno.

Řešení

Otevřeme dotazovací okno s tabulkou ZAKAZNIK. Zaškrtneme na položkách Příjmení a Jméno a do položky Město zapíšeme požadovaný obsah.

ZAKAZNIK.DB Příjmení Jméno Město
  Zaškrtnutí Zaškrtnutí Ždírec nad Doubravou

Ve výsledné tabulce se vypíše jediný zákazník - Novický Oldřich.

Zadání (D0107)

Vypište jméno a příjmení zákazníků mladších 30 let (bez nutnosti kontrolovat den a měsíc narození).

Řešení

Pokud nemusíme kontrolovat měsíc a den, stačí vybrat zákazníky, kterým rodné číslo začíná číslicemi 67 a mladší.

ZAKAZNIK.DB Rodné číslo Příjmení Jméno
  >67 Zaškrtnutí Zaškrtnutí

Jako výsledek se zobrazí 49 zákazníků.

Zadání (D0108)

Vypište název a popis hotelu, u kterého je jakékoliv centrum. Zajistěte, aby se ve výsledné tabulce obsah položky Popis hotelu zobrazoval ve vymezeném prostoru (šířky a výšky položky).

Řešení

Otevřeme nový dotaz pro tabulku ZAJEZDY a do položky Popis hotelu zapíšeme libovolný obsah před i za požadovaným textem centrum. V parametrech tabulky odpovědi nastavíme pro položku Popis hotelu vlastnost úplné zobrazení.

ZAJEZDY.DB Hotel Popis hotelu
  Zaškrtnutí Zaškrtnutí ..centrum..

Jako výsledek se zobrazí čtyři věty - prohlédnutím memo položky bychom mohli sami požadovaný obsah najít (případně si pomoci příkazem z menu Editace, Hledání textu).

Zadání (D0109)

Vyhledejte všechny zákazníky, jejichž příjmení je jako Nová.

Řešení

K vyhledání podobných příjmení použijeme operátor LIKE.

ZAKAZNIK.DB Příjmení
  Zaškrtnutí LIKE Nová

Výsledkem dotazu je šest vět s příjmeními: Nagyová, Nečová, Nohava, Nováček, Novák a Nový. Zajímavostí dotazu je to, že v tabulce ZAKAZNIK není uvedena žádná Nová.

Zadání (D0110)

Vypište všechny zákazníky (příjmení) z měst (opět vypište), které zní jako Pardubice. Ve výsledné tabulce položku Město přejmenujte na Obec.

Řešení

Opět použijeme operátor LIKE, ale nyní ještě i operátor AS. Výrazy musíme oddělit čárkou.

ZAKAZNIK.DB Příjmení Město
  Zaškrtnutí Zaškrtnutí LIKE Pardubice, AS Obec

Vypíšou se zákazníci z Pardubic (je jich 36), i když je za název města doplněna jedna nebo dvě číslice. Nevypíše se ale obsah takových vět, kdy je v položce zadáno Pardubice Ohrazenice.

Zadání (D0111)

Vypište opět příjmení a město zákazníků, ale nyní z měst, která začínají písmeny Pardubice.

Řešení

V tomto případě nevyužijeme vyhrazeného slova LIKE, ale použijeme dvou teček (libovolné pokračování).

ZAKAZNIK.DB Příjmení Město
  Zaškrtnutí Zaškrtnutí Pardubice..

Jako výsledek tohoto dotazu se zobrazí 39 vět (rozdíl proti předcházejícímu dotazu tvoří jedna věta s obsahem Pardubice Ohrazenice a dvě věty s obsahem Pardubice Svítkov).

Zadání (D0112)

Vypište položky Stát, Hotel a Typ zájezdu pro neletecké zájezdy.

Řešení

Pro dotaz otevřeme tabulku ZAJEZDY, zaškrtneme na požadovaných položkách a do položky Typ zájezdu zapíšeme výraz NOT L (musíme napsat velké L! - jinak by se vypsaly všechny věty).

ZAJEZDY.DB Stát Hotel Typ zájezdu
  Zaškrtnutí Zaškrtnutí Zaškrtnutí NOT L

Výsledkem je 16 vět a opravdu se vypisují pouze autobusové zájezdy a zájezdy vlastní dopravou.

Zadání (D0113)

Vypište Seriál a číslo zájezdu pro ty turnusy, které jsou po 30. 8. 1997 a současně jsou levnější než 6 000,- Kč.

Řešení

Dotaz realizujeme pro tabulku TURNUSY. Podmínky zapisujeme do jedné řádky - musí být splněny současně.

TURNUSY.DB Seriál Číslo zájezdu Datum odjezdu Cena
  Zaškrtnutí Zaškrtnutí >30.8.97 <6000

Výsledkem dotazu je 17 vět. Doplněním zaškrtnutí do položek Datum odjezdu a Cena bychom zjistili, že se vypisují „správné" věty.

Zadání (D0114)

Vypište příjmení všech zákazníků bez telefonu. Položku s příjmením přejmenujte na Klient.

Řešení

V dotazu využijeme vyhrazeného slova BLANK.

ZAKAZNIK.DB Příjmení Telefon
  Zaškrtnutí AS Klient BLANK

Ve výsledné tabulce se vypíše 15 příjmení klientů bez telefonu.

Zadání (D0115)

Vypište všechny turnusy, které odjíždějí v termínu 15 dnů před aktuálním (dnešním) datem a současně nejpozději patnáct dnů po dnešním datu (při provádění tohoto dotazu předpokládáme, že je 1. srpna 1997). Seřaďte výsledek dotazu podle data odjezdu.

Řešení

Pro dotaz využijeme tabulku TURNUSY, kde zaškrtneme všechny položky a do položky Datum odjezdu zapíšeme výraz s vyhrazeným slovem TODAY. Nezapomeneme vyvolat dialogové okno pro setřídění tabulky odpovědí a uplatníme požadavek na třídění podle data odjezdu.

TURNUSY.DB Seriál Číslo zájezdu Datum odjezdu Cena
  Zaškrtnutí Zaškrtnutí Zaškrtnutí >TODAY-15,<TODAY+15 Zaškrtnutí

Jako výsledek dotazu se vypíše 84 vět. Jako první datum je 18. červenec a jako poslední 15. srpen.

Zadání (D0116)

Zobrazte všechny turnusy odjíždějící v červenci (vypište všechny položky kromě ceny).

Řešení

Tento dotaz vyřešíme dvěma způsoby. První spočívá v převedení podmínky do tvaru od 1. do 31. července.

TURNUSY.DB Seriál Číslo zájezdu Datum odjezdu
  Zaškrtnutí Zaškrtnutí Zaškrtnutí >=1.7.97,<=31.7.97

Výsledkem je 90 vět.

Druhý způsob řešení vychází z toho, že datum musí končit obsahem 7.97. Oddělovač dne vložíme do uvozovek tak, aby se poznalo, že se jedná o oddělovač a ne součást dvou teček. Poznamenejme, že dotaz by fungoval i bez uvozovek.

TURNUSY.DB Seriál Číslo zájezdu Datum odjezdu
  Zaškrtnutí Zaškrtnutí Zaškrtnutí .."."7.97

Můžeme se přesvědčit, že i výsledkem tohoto dotazu je 90 vět.



Vytvořeno v Corel WordPerfect 9 pro Windows 95 a NT.


Copyright © 1997 - 2005 Pavel Mikan

Poslední změna: 4. 1. 2005

Připojte se k celosvětovému humanitárnímu úsilí najít odpovědi na nejvážnější vědecké problémy světa prostřednictvím špičkové počítačové technologie od IBM. Připojte se k World Community Grid.

http://www.worldcommunitygrid.org/index.jsp