SUPERBASE PROFESSIONAL - DÍL 3.
Tak a je tu již třetí pokračování seriálu o ovládání a používání
databázového programu Superbase Professional. Dnes by jste již měli dokázat
zcela samostatně vytvořit libovolný nový databázový soubor, nadefinovat jeho
strukturu, naplnit jej záznamy, listovat, vyhledávat a třídit v nich. A v tomto
díle se pochopitelně opět dozvíte něco dalšího, dnes se budeme věnovat hlavně
QUERY PROCESSům.
Dovoluji si předpokládat, že spustit program Superbase již perfektně umíte, a
bez problému svedete i otevřít databázový soubor. Takže si opět otevřete náš
vytvořený "Adresář" a zase si na něm něco vyzkoušíme.
Jednou z velkých předností databázových programů je jejich schopnost
zpracovávání dat, provádění výpisů a třídění dle mnoha kritérií, kalkulace resp.
relace s daty i mezi jednotlivými databázovými soubory atd. U Superbase se k
tomu používají takzvané "query procesy", velmi výhodné pro různé statistické
výpisy. Ty umožňují například sčítat obsahy jednotlivých položek v každém
záznamu, provést výpis dle několika indexů (příklad: nejprve třídit dle názvu
města a osoby ze stejného města ještě seřadit abecedně dle příjmení) atd. Při
třídění dle několika kritérií je nutno počítat s jistým zpomalením práce. Jako
názorný příklad definování query procesu jsem vybral výpis dlužníků a součet
pohledávek. Budeme tedy chtít z našeho adresáře vypsat všechny osoby, které jsou
dlužné jistou finanční částku, a sečteme celkové pohledávky (kolik Vám dluží
všichni dohromady).
V menu "Process" zvolte položku "Query Edit" (pravá Amiga + ?), otevře se okno
"Query definition". Nejprve zadáme název výpisu (jakási hlavička resp. záhlaví -
Title), klikněte do podlouhlého okénka (vpravo od slova "Title" a "Date" - vlevo
od prvního zaškrtávacího gadgetu). Tam napište naše záhlaví "Výpis dlužníků a
celkový součet pohledávek:". Nyní ještě zaškrtněte gadget "Date", který zajistí
vypsání aktuálního datumu vlevo u záhlaví (pokud nemáte v počítači hodiny
zálohované baterií, tak tato položka nemá význam). Gadget "Page" ponechte
nezaškrtnutý, protože v našem případě by jeho zvolení bylo zcela bezvýznamné -
vzhledem k počtu záznamů. Jinak jeho zaškrtnutí zajistí, že se vpravo od záhlaví
budou číslovat stránky - to má význam pouze pokud by byl výpis na několik stran.
Poté klikněte na tlačítko s nápisem "Fields" a v okně "Query fields" si můžete
pohodlně vybrat jména polí, která mají být ve výpisu obsažena. V našem případě
se jedná o číslo, příjmení, jméno, město datum a částku, které zvolíte pouhým
kliknutím na tyto názvy polí v levé části okna. Během Vašeho vybírání názvů
polí, by se již zvolené měly objevovat v podlouhlém okénku v dolní části nad
gadgety "OK", "Clear" a "Cancel". Poté ještě volbu potvrdíte "OK", zrušíte
"Cancel" a pokud jste někde udělali chybu, tak vše můžete vymazat "Clear" a
definovat znova. V dlouhém okénku vedle tlačítka s nápisem "Fields" by se měly
objevit Vámi zvolená jména polí, která se budou do výpisu zobrazovat. Nyní
přejdeme k tlačítku "Report", které nám otevře okno "Query report", kde se mohou
provádět součty, výpočty střední hodnoty, součet hodnot pro výstup, seskupení
dat a různé přehledy. Význam všech gadgetů bude podrobně objasněn o něco níže.
Nyní tedy pouze klikněte na gadget "Sum", nalezněte jméno pole "Částka",
klikněte na něj a ještě zvolte gadget "Count". Dole v podlouhlém okénku by mělo
být napsáno "SUM Castka.ADRESAR COUNT", což se objeví i v původním okně "Query
definition" (v podlouhlém okénku na řádku vedle tlačítka "Report") hned po
kliknutí na gadget "OK". Nyní si ještě dodefinujeme filter v okně "Query
filter". Způsob definování filtrů je zcela totožný s tím co bylo popsáno v
minulém díle. Chceme vypsat pouze naše dlužníky, tedy výhradně jen osoby, u
kterých máte v položce částka udánu nějakou pohledávku (Castka.ADRESAR > 0).
Jako poslední si dodefinujeme třídění, klikněte na gadget s nápisem "Order",
který nás dopraví do okna "Query order". Protože se domnívám, že je v tuto
chvíli zcela zbytečné třídit dle více kritérií, postačí třídit třeba jen dle
datumu, kdy jste ty peníze někomu půjčil, nebo jen podle příjmení atd. Nyní máme
prakticky celý query proces vytvořen, ale před tím než jej spustíte, musíte
ještě udat cílové zařízení (kam se má výsledek zobrazovat/uložit).
Screen - Představuje standardní výstupní zařízení - obrazovku, vše se vypíše do
okna Superbase.
Print - To co by šlo na obrazovku (Screen) bude přesměrováno na tiskárnu.
Nastavení tiskárny dle Preferencí ve Workbenchi nebo nabídka "Set" položka
"Printer setup" v Superbázi.
Say - Bude veškerý výstup předčítat (nutno mít narator.device, na systémech 3.0
působí jisté problémy).
Disk - Vše, co by šlo na obrazovku, bude uloženo jako ASCII text do souboru se
zvoleným jménem.
File - Dle vytvořeného Query procesu vygeneruje strukturu a obsah nového
databázového souboru (včetně indexového).
Zvolte tedy některé z výstupních zařízení a klikněte na "OK" což způsobí
spuštění definovaného query procesu. Výstup na obrazovce by měl přibližně
odpovídat tomu, co je otištěno zde na obrázcích. Takto vytvořené a vyzkoušené
query můžete uložit na disk pod libovolným jménem pomocí položky "Save as..." z
menu "Process - Query". Pokud je budete chtít někdy v budoucnosti opět vyvolat a
použít zvolíte v menu "Process - Query - Open..." (pravá Amiga + W).
Okno "Query fields"
Zde se zadávají jména polí, které půjdou později k výpisu, v jakém tvaru a
jejich umístění. Je možno provádět i některé matematické operace s numerickými
položkami a vytvářet nová pole. V řádku hned pod jménem je název aktuálního
databázového souboru. Pokud máte otevřeno více databázových souborů, můžete
jejich názvy přepínat pomocí šipky vedle názvu aktuálního souboru. To má význam
pokud chcete používat relace mezi jednotlivými databázovými soubory. Tlačítko
"ON" zajísti, aby při spojení více datových souborů nevystupovala tatáž datová
pole dvakrát.
Vpravo jsou pod sebou čtyři gadgety "+", "-" "*", "/". Kromě znaku sjednocení
"+" (umožňuje spojovat všechny typy polí) se ostatní mohou použít pouze na
numerická pole. Takto se vytváří takzvaná odvozená pole. Gadgety kulatých
závorek mají klasický význam (stejný jako u filtrů) a "Line" (zapíše se jako
"NEWLINE") prokládá při výstupu vždy jeden čistý řádek. "@ Position" a hodnota
(číslo zapsané do okénka "Value") udává číslo sloupce od levého okraje, na
kterém se má začít vypisovat.
"& Length" a číslo zadané ve "Value" udává velikost, na kolik znaků se má pole,
před jehož názvem tento příkaz stojí, zobrazovat. Pokud zadáte
&10Prijmeni.ADRESAR,&10Jmeno.ADRESAR,&15Mesto.ADRESAR bude se jméno a příjmení
zobrazovat pouze na deseti znacích, město na patnácti, nehledě na to, jak je
dáno ve struktuře (příjmení, jméno i město je definováno na 20 znaků).
Pomocí "AS Heading" plus text zadaný do "Value" můžete pojmenovat odvozené pole,
aby jste je mohli použít jinde. Například, pokud chcete připočítat k vypůjčené
částce 10% (třeba úrok) a vypsat to pod jménem "S úrokem", zadáte:
(Castka.ADRESAR * 0.1) + Castka.ADRESAR AS "S úrokem", "Kč"
Součet tohoto sloupce (odvozeného datového pole) potom zajistíte tak, že do
"Report" dopíšete příkaz: SUM "S úrokem"
Okno "Query report"
Pomocí této funkce a šesti gadgetů v tomto okně můžete shrnovat jednotlivé
datové věty do podskupin a provádět v nich i mimo ně součty i jiné výpočty. Pro
ukázku, jak používat reporty a vytvářet jednotlivé podskupiny, si nejprve ručně
pozměňte u pánů Breburdy, Nováka a Šimka město na pouhé "Praha" (bez čísel
jednotlivých čtvrtí). Paní Hernovou přestěhujte do Chomutova a pana Jakoubka do
Trutnova. Poštovní směrovací čísla můžete nechat nepozměněné.
"Report" - Udává Superbázi, že všechny následující uspořádání se budou opět
vztahovat na všechny zvolené soubory/záznamy, pokud byl předtím definován
"Group". Jinak provede součet zvoleného pole s výpisem všech záznamů.
"Group" - Umožňuje definovat podskupinu. Kliknete-li "Group" a jméno pole,
vztahují se veškeré následující uspořádání jen na toto pole, dokud není zrušeno
"Report".
"Summarize" - Přehled, který nechá soubor dále uspořádat. Určí, že budou
vystupovat pouze ty informace, které tento příkaz následují Například
SUMMARIZE Castka.ADRESAR
provede součet pole "Částka" v záznamech, ale tyto záznamy ani obsah daného pole
nebude vypisovat. Vypíše pouze výsledek - celkový součet.
Jmeno Prijmeni Castka
53 250,00 Kč
"Sum" + jméno pole provede součet všech hodnot v poli určených k výstupu.
"Mean" + jméno pole vypočte průměr (střední hodnotu) zvoleného pole.
"Count" sčítá záznamy určené k výstupu. Například máte 10 záznamů a 3 záznamy
podmínku danou filtrem nesplňují (nebudou vypsány), takže hodnota "Report count"
je 7.
Příklad: Máme za úkol vytvořit součet dlužníků a pohledávek v jednotlivých
městech, vypsat celkový počet dlužníků a celkovou částku,kterou nám dluží. Dále
požadujeme setřídění podle názvů měst a určení, kolik osob v jednotlivých
městech nám dluží danou finanční částku. Nakonec ještě chceme znát součet
celkových pohledávek v jednotlivých městech. Tento příklad zadáme do reportu asi
takto:
SUM Castka.ADRESAR COUNT
(vypíše celkový součet pohledávat + počet dlužníků)
nadále pokračujeme v zadávání do tohoto řádku
GROUP Mesto.ADRESAR
(vytvoří podskupiny po jednotlivých městech)
SUM Castka.ADRESAR COUNT (vypíše součet pohledávat + počet dlužníků v
jednotlivých městech)
Dále musí být ještě bezpodmínečně nastaveno abecední třídění dle názvu města
(Order Mesto.ADRESAR).
Okno "Query filter"
S definováním filtrů (je všude stejné) jsme se seznámili již v minulém díle,
takže dnes Vaše znalosti jen o něco rozšířím. Naučím Vás používat takzvané
zástupné znaky.
? - jeden libovolný znak
* - řetězec libovolných znaků
[a-z] - jeden znak mezi a až z
[efg-x] - e, f nebo g až x
[a-c]* - první znak řetězce je a, b nebo c (a až c) a ostatní jsou libovolné
Příklady: *ami* - všechny řetězce, které uvnitř obsahují "ami", AMIG? - všechny
řetězce, které začínali na "AMIG" a poslední znak může být libovolný
Okno "Query order"
Pomocí této funkce můžete soubor třídit na výstupu podle určených obsahů
polí. Může být i více polí, dle kterých se třídí. V tom případě se porovnává dle
obsahu prvního zadaného pole a pokud se nalezne několik naprosto stejných obsahů
v tomto poli, porovná se dle dalšího zadaného názvu pole pro třídění. Dále
můžete určit, zda požadujete vzestupné nebo sestupné třídění.
Poznámka autora a omluva:
Při přípravě druhého dílů tohoto seriálu (předcházející číslo časopisu -
ATLANTIDA News č. 4) do tisku došlo omylem k upravování uvozovek v textu.
Veškeré uvozovky nahoře("text") byly zcela chybně nahrazovány dle české normy
uvozovkami dole na začátku textu a nahoře na konci. Pokud budete takto psané
uvozovky zadávat při jakékoliv příležitosti do Superbase, program bude
protestovat na chybné zadání. Proto kdekoliv budete psát uvozovky zadávejte je
klasicky na ZAČÁTKU I NA KONCI NAHOŘE!!! Zde je příklad:
NOT (Mesto.ADRESAR LIKE "Praha")
Datum.ADRESAR < "17.11.94"
Telefon.ADRESAR = "" Vytlačiť článok
Pozn.: články boli naskenované ako text a preto obsahujú aj zopár chýb. Taktiež neručíme za zdrojové kódy (Asm, C, Arexx, AmigaGuide, Html) a odkazy na web. Dúfame, že napriek tomu vám táto databáza dobre poslúži.
Žiadna časť nesmie byť reprodukovaná alebo inak šírená bez písomného povolenia vydavatela © ATLANTIDA Publishing
none
|