AMIGA REVIEW online
  Uvodná stránka     Software     Hry     Obaly     Download     Amiga na PC     Amiga Forever  

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


© ATLANTIDA Publishing Všechna práva vyhrazena.
Žádna část nesmí být reprodukována nebo jinak šířena bez písemného svolení vydavatele.



Amiga na Vašem PC rychle, snadno a zdarma!


none

AMIGA REVIEW

57 ( 11-12 / 2000 )
56 ( 9-10 / 2000 )
55 ( 7-8 / 2000 )
54 ( 5-6 / 2000 )
53 ( 3-4 / 2000 )
52 ( 1-2 / 2000 )
 
51 ( 12 / 1999 )
50 ( 11 / 1999 )
49 ( 10 / 1999 )
48 ( 9 / 1999 )
46-47 ( 7-8 / 1999 )
45 ( 6 / 1999 )
44 ( 5 / 1999 )
43 ( 4 / 1999 )
42 ( 3 / 1999 )
41 ( 2 / 1999 )
40 ( 1 / 1999 )
 
39 ( 12 / 1998 )
38 ( 11 / 1998 )
37 ( 10 / 1998 )
36 ( 9 / 1998 )
35 ( x / 1998 )
34 ( x / 1998 )
33 ( 1-2 / 1998 )
 
32 ( 11-12 / 1997 )
31 ( 9-10 / 1997 )
30 ( 7-8 / 1997 )
29 ( 6 / 1997 )
28 ( 5 / 1997 )
27 ( 4 / 1997 )
26 ( 3 / 1997 )
25 ( 2 / 1997 )
24 ( 1 / 1997 )
 
23 ( 12 / 1996 )
22 ( 11 / 1996 )
21 ( 10 / 1996 )
20 ( 9 / 1996 )
18-19 ( 7-8 / 1996 )
17 ( 6 / 1996 )
16 ( 5 / 1996 )
15 ( 4 / 1996 )
14 ( 3 / 1996 )
13 ( 2 / 1996 )
12 ( 1 / 1996 )
 
11 ( 12 / 1995 )
10 ( 11 / 1995 )
9 ( 10 / 1995 )
8 ( 9 / 1995 )
7 ( 7 / 1995 )
6 ( 5 / 1995 )

ATLANTIDA NEWS

5 ( 3 / 1995 )
4 ( 1 / 1995 )
 
3 ( 11 / 1994 )
2 ( 9 / 1994 )
1 ( 7 / 1994 )
0 ( 5 / 1994 )