; Zpracování informací, přednáška 6.
3/13
Obsah přednášky Přednáška 6 – Další možnosti DBS RDBMS Microsoft Access Práce s relacemi v Accessu Tabulkové aliasy Slučovací dotazy SQL poddotazy Křížové dotazy Skriptování - VBA Import a export dat
Zpracování informací, přednáška 6.
4/13
Ve cvičeních se seznámíte... Microsoft Access = desktopová GUI aplikace pro přístup k datům (externí DBS a nebo Microsoft Jet Engine – emulace souborového systému v MDB souboru) Tabulky: Objekty udržující data k určitému tématu ve formě záznamů. Dotazy: definice pro zobrazení a analýzu dat; zdroj záznamů pro formuláře, sestavy a datové stránky. Formuláře: GUI objekty k zadávání a správě dat. Sestavy: Definice pro zobrazení a tisk výsledků dotazů Stránky: sestavy pro přístup k datům prostřednictvím WWW Makra: sady akcí, kterými lze automatizovat často prováděné úlohy. Moduly: uživatelské podprogramy VBA.
Zpracování informací, přednáška 6.
5/13
Relace v Microsoft Access pole s odkazy na hodnoty unikátních klíčů dynamicky naplňovaná vyhledávací pole vazby v okně Relace + vnořené tabulky formuláře s podformuláři (průvodce...) tiskové sestavy přes více tabulek
FAKTURA-daňový doklad Vystavil: Šroubkař, s.r.o. Prostřední 2, 617 00 Brno IČ: 659035
Příjemce: Josef Novák Zadní 2, 616 24 Kocourkov IČ: 58848421
Způsob platby: Převodem Číslo účtu: 5956351/5100
Vystaveno: 1.2.2008 Splatnost: 1.3.2008
Položky: 1. Šroubek M6 1500ks á 0,80 Kč Celkem 1200,00 Kč +DPH 19% 2. Matka M10 800ks á 2,50 Kč Celkem 2000,00 Kč +DPH 19% Celkem: 3200,00 Kč DPH 19%: 608,00 Kč K úhradě: 3808,00 Kč
Kontakty ID Jméno Adresa IČ Telefon
Zpracování informací, přednáška 6.
číslo/var. symbol 200801
Vystavil: Podpis: Razítko:
Faktury ID Vystaveno Splatnost Platba Partner_ID
Šroubkař +++ :-)
1:N Položky ID Faktura_ID Popis KS Cena_KS
6/13
Tabulkové aliasy „Aliasy“ mohou být využity pro náhled na více záznamů v rámci jednoho řádku. SELECT column FROM table AS table_alias; Typické použití jsou situace, kdy se „pravoúhlou“ tabulkou snažíme popsat nějakou složitější geometrickou strukturu – např. strom:
V prostředí MS Access se „aliasy“ v relačním schématu vytvářejí automaticky (přípona _1, ...), v SQL se toto uspořádání definuje právě tabulkovým aliasem.
Zpracování informací, přednáška 6.
7/13
Slučovací dotazy V situacích, kdy se z důvodu chybného návrhu a nebo z geografických důvodů části dat nacházejí ve více tabulkách (mohou mít i rozdílná fyzická pořadí a názvy), lze k získání celkového přehledu použít více dotazů sloučených spojkou UNION V případě různě pojmenovaných sloupců v jednotlivých tabulkách lze při slučování s výhodou použít sloupcové aliasy: Select 'Kniha',Titul as Název FROM knihy where Název like '%maska%' UNION Select 'CD', Album as Název FROM CD where Název like '%maska%' UNION Select 'DVD', Název FROM DVD where Název like '%maska%' UNION ...
Zpracování informací, přednáška 6.
8/13
SQL poddotazy Při tvorbě výrazů v SQL dotazech můžeme místo odkazů na hodnoty ve „fyzických“ sloupcích použít i odkazy na „virtuální“ tabulky, vytvářené dynamicky pomocí tzv. „vnořených“ SQL dotazů Příklad:
SELECT jméno, plat FROM platy WHERE plat > (SELECT AVG(plat) FROM platy)
Zpracování informací, přednáška 6.
9/13
Křížové dotazy Pohled na data ve formě tabulky s pevným počtem sloupců nemusí vždy poskytnout optimální přehled o situaci => transformace datasetu křížovým dotazem: TRANSFORM Sum(Pivot.Ks) AS SumOfKs SELECT Produkt, Rok, Měsíc, Sum(Ks) AS Celkem FROM Ochody GROUP BY Produkt, Rok, Měsíc PIVOT Pobočka;
V DBS je tvorba dynamických „kontingenčních tabulek“ považována za nesystémovou, spolu s dalšími analytickými operacemi se prot provádí spíš v tabulkových editorech. Zpracování informací, přednáška 6.
10/13
Skriptování Jazyk SQL je určen k vyjadřování požadavků na data „logickou formou“, zatímco tvorba GUI aplikací představuje spíš tvorbu „procedurálního“ kódu => aplikace běžící nad DBS jsou buď psány v procedurálním jazyce a nebo jej uživateli k doplnění funkcí přímo poskytují (Microsoft Access – Visual Basic for Applications): Tam kde v Accessu končí možnosti SQL a GUI, začíná VBA (tip pro začínající: http://www.uai.fme.vutbr.cz/~mseda/DBS02_BS.pdf od s.42) Podobně jako jazyk matlab umožňuje tvorbu uživatelských procedur, na rozdíl od něj však v principu neumožňuje vektorizaci; proměnné typu pole je navíc nutné deklarovat. Nejpoužívanějším prvkem VBA v Accessu je tzv. „jmenný prostor“ DoCMD. RunSQL "SQL příkaz" OpenTable (jméno_tabulky [,acDataAccessPageBrowse|acDataAccessPageDesign, DataMode]) OpenQuery (název_Dotazu [,acDataAccessPageBrowse|acDataAccessPageDesign, DataMode]) OpenForm (JmFormuláře, pohled, JmDotazu, RozšířeníWhere, DataMode, WindowMode, OpenArgs) OpenReport(JmSestavy, pohled, JmDotazu, RozšířeníWhere, DataMode, WindowMode, OpenArgs) OpenDataAccessPage (jméno [,acDataAccessPageBrowse|acDataAccessPageDesign])
K manipulaci se záznamy tabulek a dotazů je ve VBA určena struktura Recordset rec=CurrentDB.OpenRecordset("tabulka") | rec.edit | operace(rec.sloupec) | rec.update | rec.MoveNext | Rec.close ...ukázky viz následující cvičení. Zpracování informací, přednáška 6.
11/13
Import a export dat Přenos dat mezi DBS a dalšími aplikacemi může probíhat buď ve formě datasetů a nebo: binárních souborů (přímá kopie záznamů z tabulek, komprimované datasety, MDB,...) textových souborů pole v řádcích oddělená tabulátory (ASCII kód #09), řádky CR+LF (#13#10) „comma separated values“ (pole dělená čárkami, texty v uvozovkách, řádky CRLF) formát XML XML hlavička ...?> obsahuje informaci o způsobu kódování národních znaků soubor musí obsahovat „kořenový“ element (např.
Zpracování informací, přednáška 6.
12/13
Import a export dat Cílem exportovaných dat pak nejčastěji bývají různé IS a aplikace pro analýzu dat: Tabulkové editory (Microsoft Excel, OpenOffice.org Sheet,...) přenos vybraných polí přes „systémovou úschovnu“ import a export souborových dat (včetně MDB – pozor na zamykání!!!) přímé napojení prostřednictvím ole-db (ODBC/JDBC, ADO...) a MS Query primární určení: interaktivní vzorce přes víc řádek, analýzy, jednoduché grafy (kontingenční tabulky, OLAP, malé soustavy rovnic, lineární regrese, úlohy „co-když“...) Výpočetní aplikace (Matlab, Octave, Mathcad, Maple, řešiče MKP, speciální aplikace) import a export souborových dat (Octave aktuálně umí jen CSV) přímé napojení prostřednictvím pluginů a knihoven primární určení: provádění složitých maticových analýz a grafických výstupů (rozsáhlé soustavy rovnic, filtrace a transformace dat, regresní/kovarianční analýzy, analýzy obrazu, aplikace výsledků do 3D modelů a jejich animace, ...)
Zpracování informací, přednáška 6.
13/13