Adatbázis rendszerek II.users.iit.uni-miskolc.hu/~szucs/ab2/oa/apex_gyak.pdf · 2. megoldás: a...
Transcript of Adatbázis rendszerek II.users.iit.uni-miskolc.hu/~szucs/ab2/oa/apex_gyak.pdf · 2. megoldás: a...
Adatbázis rendszerek II.
Alkalmazásfejlesztés Oracle APEX alatt
Összeállította: Dr. Baksáné dr. Varga Erika, adjunktusME, Általános Informatikai Intézeti Tanszék
2
Oracle APEX – Application Builder
Az Oracle Application Express (APEX) grafikus felülettel rendelkező integrált alkalmazásfejlesztő eszköz, melynek segítségével Oracle adatbázist használó webes alkalmazások fejleszthetők. Ez a fejlesztőeszköz ingyenesen elérhető; web böngészőt és némi programozási ismeretet igényel.
Fejlesztőkörnyezet:
– Oracle Database 11g adatbázis
– Oracle Application Express Release 4.2
3
Komponens-alapú programozás
● Az alkalmazás előre definiált komponensekből épül fel → gyors fejlesztés, az implementációs részletek rejtve maradnak
● Alulról felfelé építkező (bottom up), deklaratív programfejlesztés: feladatunk a komponensek jellemzőinek beállítása
● Oracle APEX alkalmazás komponensek (page types):
– Jelentés (report): lekérdezés megjelenítése táblázatban– Chart (diagram): lekérdezés grafikus megjelenítése– Űrlap (form / tabular form): DML műv. végrehajtásához– Report and form: egy táblára vonatkozó DQL és DML műv.– Master Detail: kapcsolódó táblák együttes kezeléséhez; a
főtábla report, a részletező tábla módosítható (form)– Adatfeltöltő lap (Data Loading)
4
Komponens-alapú programozás
● Oracle APEX képernyő komponensek (aktív kezelőszervek):
– Szövegmező (text field): alapértelmezés szerint módosítható a tartalma, de beállítható csak olvashatóra
– Választógombok (radio button): egymást kizáró választási lehetőségek
– Kapcsoló / jelölőnégyzet (checkbox): kétállapotú kapcsoló (kikapcsolt vagy bekapcsolt)
– Lista (list of values, LOV): lehet egy ill. többválasztós; inline vagy popup (külön ablakban megjelenő); statikus vagy dinamikus (lekérdezés eredménye)
5
Feladatleírás
Készítsünk adatbázist kezelő webes alkalmazást az Oracle APEX eszközzel.
Adatbázisunk 5 táblát tartalmaz: tanszékek, oktatók, tantárgyak, hallgatók és vizsgabejegyzések. Minden oktató egy tanszékhez tartozik és minden tanszéknek van vezetője, aki egyébként a tanszék oktatója. Ez elvileg a következőt jelenti, ami a gyakorlatban nem kivitelezhető:CREATE TABLE tanszek (… vezeto references oktato …);CREATE TABLE oktato (… tsz references tanszek ...);
A két szabály közül csak az egyik adható meg az adattáblák létrehozásakor. A másik szabály teljesülését az alkalmazásnak kell megoldania.
6
ER modell
Tantárgy Vizsga
kód név
kredit
félévdátum terem
lezárásmódja
Oktató
kódnév beosztás
Tanszék
kódnév
Vezetőoktató
7
Relációs modell
OKTATÓkódnév
beosztástsz
TANSZÉK
kódnév
vezetőoktató
TANTÁRGYkódnév
kreditfélév
lezárásoktatja
VIZSGA
tárgydátumterem
8
Előkészületek
1. A szükséges táblák létrehozása (create.sql).
SQL Workshop – SQL Commands
2. A táblák feltöltése egyenként.
SQL Workshop – Utilities – Data Workshop – Data Load: text data
Load to: existing tableLoad from: upload file
9
Előkészületek
A feltöltendő szövegfájl (txt vagy csv) kiválasztása. A megadott fájlok ,-vel tagoltak és tartalmazzák az oszlopneveket.
10
Előkészületek
Össze kell rendelni a létező tábla mezőit a feltöltendő adatokkal. A feltöltendő oszlopoknál: Upload – Yes.
11
Előkészületek
Figyelem! A vizsga.csv feltöltésekor a dátum mező formátumát is meg kell adni.
A feltöltésről visszajelzést kapunk, de ellenőrizhetjük az SQL Workshop – SQL Commands ablakban is.
12
Új alkalmazás létrehozása
Application Builder – Database applications – Create
1. Adjunk nevet és egyedi azonosítót az alkalmazásnak.
13
Új alkalmazás létrehozása
2. Az oktatók listája tanszékenként legyen elérhető. Az űrlapok mögötti táblákat listából lehet kiválasztani: Főtábla – Tanszék; Részletező tábla - Oktató
14
Új alkalmazás létrehozása
3. A tantárgy űrlapot listázásra és módosításra is fogjuk használni.
15
Új alkalmazás létrehozása
4. Az alkalmazáshoz rendelt űrlapok:
Report:jelentés, lista
Form:módosíthatóűrlap
Master Detail:csoportosított lista
5. Most nincsenek megosztott komponensek.
16
Új alkalmazás létrehozása
6. Alkalmazás beállításai (bejelentkezés ellenőrzése, űrlap szintek száma, nyelv, dátum / idő formátum).
17
Új alkalmazás létrehozása
7. Alkalmazás stíluslapjának kiválasztása.
18
Új alkalmazás létrehozása
8. A létrehozandó alkalmazás jellemzőinek összefoglalása.Ha elfogadjuk, kattintsunk a Create gombra.
19
Új alkalmazás létrehozása
9. Létrejött az alkalmazás az alábbi űrlapokkal.
20
Alkalmazás futtatása
1. Run Application
2. Bejelentkezés
21
Alkalmazás futtatása
Az alkalmazásnak két fő űrlapja van. A Tanszék-et kiválasztva, a tanszékek listája látható.
A sorok előtti Szerkesztés ikonra kattintva jelenik meg a részletező, Oktató űrlap.
22
Alkalmazás futtatása
Feladat: rendeljünk a tanszékhez vezető oktatót.
23
Űrlap módosítása
1. megoldás: a részletező tábla elsődleges kulcsa nem látszik (Hidden). Tegyük láthatóvá. Az alkalmazás alsó menüsorában válasszuk ki: Edit Page.
24
Űrlap módosítása
Az Oktató tábla Kód mezőjére jobb egérgombbal kattintva a popup menüből válasszuk: Edit. A mező jellemzőknél állítsuk be, hogy látható legyen az oktató kódja (Show Column) és a mező típusa Text Field.
25
Űrlap módosítása
A látható oktató kódok közül válasszunk egyet, és írjuk be a tanszékvezető beviteli mezőbe. Mentsük a módosítást.
26
Űrlap módosítása
Feladat: a tanszék kódja legyen látható, de ne lehessen módosítani.
Megoldás: a tanszék űrlap alján válasszuk az Edit Page 2 menüpontot. Az Edit tanszék listából válasszuk a P2_KOD mezőt. Itt a Display as attribútumot állítsuk át Hidden-ről Display Only-ra. Tesztelés: Apply Changes - Run
27
DML műveletek
A Tanszék űrlap főlapján elérhető művelet:
● Új rekord felvitele a főtáblába (tanszék)
A Tanszék űrlaphoz tartozó részletező lapon (szerkesztő lapon) elvégezhető műveletek:
● Főtábla (tanszék) mezőértékeinek módosítása● Főtábla (tanszék) szerkesztés alatt álló rekordjának törlése● Főtábla (tanszék) rekordjai között léptetés (< ill. >)● Új rekord felvitele a részletező (oktató) táblába● A részletező (oktató) tábla kijelölt rekordjainak törlése● A részletező (oktató) tábla mezőértékeinek módosítása
28
DML műveletek
Feladat:a) Vigyünk fel új oktatót és módosítsuk Szűcs M. beosztását.b) Az oktatók listájánál a név és a beosztás oszlopot cseréljük fel és név szerint állítsuk sorrendbe az oktatókat.
Mezősorrend megváltoztatása:Az űrlap alján válasszuk az Edit Page menüpontot. Itt az egérrel jelöljük ki a beosztás mezőt és mozgassuk a név utáni pozícióba.Vagy a mezőket kiválasztva, Edit–User Interface–Sequence. Mentsük a változtatást.
29
DML műveletek
Új oktató felvitele:Az oktató űrlapon kattintsunk az Add Row gombra és adjuk meg az adatokat.
Oktató adatainak módosítása:A mezőértékek átírhatók.
Rendezés:Kattintsunk a név oszlopcímkére (Sort by this column).
30
Egyválasztós lista
Feladat: tanszékvezető kijelölése. 2. megoldás: a tanszékvezető mező értékét legördülő listából (LOV, List Of Values) lehessen kiválasztani. A lista ne az oktatók kódját, hanem a nevüket tartalmazza.
Figyelem! Az adatbázis táblát (a vezető mező hosszát) nem kell módosítani, mert a táblában továbbra is a vezető oktató kódja lesz eltárolva.
Ezt majd ellenőrizzék (APEX – SQL Workshop – SQL Commands)!
31
Egyválasztós lista
1. lépés:Edit Page 2 -vezető mezőjellemzőinekmódosítása(dupla kattintása mező nevérevagy jobb egérkattintás és Edit)
32
Egyválasztós lista
2. lépés: mező típusának módosítása
Ha Popup List of Values típust választunk, a lista külön ablakban jelenik meg.
33
Egyválasztós lista
3. lépés: LOV beállításai. Ha a Display Extra Values nincs letiltva, akkor az aktuális vezető kódja is a listába kerül.
Gazdanyelvi változó
34
Egyválasztós lista
4. lépés: alapértelmezés szerint a Source Used mindigre van állítva. Ennek az a hatása, hogy a vezető mezőben mindig a névsor szerinti első oktató látható a listából. Módosítsuk ezt úgy, hogy az aktuális tanszékvezetőt lássuk.
35
Egyválasztós lista
Megjegyzések:
● A LOV definíciós utasítás a Create Dynamic List of Values varázslóval is elkészíthető.
● Ugyanezt a listát az alkalmazáson belül máshol is használni fogjuk majd, ezért adjunk neki nevet és mentsük el. Edit Page – Tasks (jobb oldalon) – Convert LOV (Create Shared LOV)
● Többválasztós lista: Edit Page – Settings – Allow Multi Selection
● Mezőhöz alapértelmezett érték rendelése: Edit Page – Default – Default value
● A listában a megjelenített érték és a visszatérési érték lehet ugyanaz.
36
Jelentés (report) módosítása
Tekintsük a Tantárgy űrlapot. A jelentéslap a Tantárgy tábla összes adatát (rekordok és mezők) mutatja.
Feladat: a tantárgy jelentéslapon (report) az oktatja mező értéke ne az oktató kódja, hanem az oktató neve legyen.
Megoldás: 1. A jelentéslap alján válasszuk az Edit menüpontot.2. A hierarchikus listában (tree view) kattintsunk duplán a Tantárgy lapra, vagy jobb egérgombbal egyszer és a popup menüből válasszuk az Edit menüpontot.3. A Source fülön látható a jelentést előállító SQL lekérdezés. Módosítsuk ezt.
37
Jelentés (report) módosítása
Eredeti: Módosított forrás:
Apply Changes – Run → A jelentésből eltűnt a módosított mező.Actions – Reset → A jelentés újra generálódott.
38
Jelentés műveletei● A jelentésen elvégezhető műveletek az Actions
menüpontból érhetők el (formázás, rendezés, csoportosítás, számítások, aggregációk, grafikonos megjelenítés).
● A jelentéshez új sor hozzáadása: Create.
39
Numerikus értékbeállítások
Feladat: a Tantárgy szerkesztő űrlapon (edit form) a kredit mezőnek adjunk alapértelmezett értéket (5) és kössünk hozzá értékellenőrzést (1 < kredit < 8).
Megoldás:1. A Tantárgy jelentéslapon válasszuk ki az egyik sort és kattintsunk az elején található szerkesztés ikonra (Edit Tantargy).2. A szerkesztőlap (edit form) alján kattintsunk az Edit Page 4 menüpontra.3. Itt a listából válasszuk ki a P4_KREDIT mezőt.4. Edit – Default – Default value: 5.
40
Numerikus értékbeállítások
Settings:
41
Radio button
Feladat: a Tantárgy szerkesztő űrlapon (edit form) a félév értéke “tavasz” vagy “ősz” közül az egyik lehet. Az egyválasztós listát most Radio button formájában jelenítsük meg.
Megoldás: 1. A Tantárgy jelentéslapon válasszuk ki az egyik sort és kattintsunk az elején található szerkesztés ikonra (Edit Tantargy).2. A szerkesztőlap (edit form) alján kattintsunk az Edit Page 4 menüpontra.3. Itt a listából válasszuk ki a P4_FELEV mezőt.4. A Display as attribútuma legyen Radio group.5. A megjelenített értékek listája most statikus.
42
Radio button
Static list of values varázslóval:
Így a LOV definíciója: A LOV definícióját magunk is előállíthatjuk. Ha a megjelenített érték és a visszatérési érték ugyanaz, akkor:
STATIC:tavasz,ősz
43
Radio button
Beállítási lehetőségek:
● Source – Source usedalapértelmezés szerint Always …; állítsuk Only when current value … is null. Így az aktuális értéket mindig mutatni fogja.
● Default – Default valueAlapértelmezett érték: ősz.
● Settings – Display OrientationAlapértelmezés szerint Vertical. Most állítsuk Horizontal, vízszintes elrendezésre.
● Settings – Number of Radio ColumnsAlapértelmezés szerint 1. Itt azt adjuk meg, hogy a felsorolt lehetőségek hány oszlopba rendezve jelenjenek meg. Állítsuk most 2-re.
Alapértelmezett:
Beállított:
44
Osztott lista felhasználása
Az oktatók egyválasztós listát (LOV) már a Tanszék űrlap részletező lapján (Page 2) létrehoztunk és elmentettük. Most használjuk fel.
Feladat: a Tantárgy szerkesztő űrlapon (edit form) az oktatja mező értékét listából lehessen kiválasztani.
Megoldás:1. A Tantárgy jelentéslapon válasszuk ki az egyik sort és kattintsunk az elején található szerkesztés ikonra (Edit Tantargy).2. A szerkesztőlap (edit form) alján kattintsunk az Edit Page 4 menüpontra.3. Itt a listából válasszuk ki a P4_OKTATJA mezőt.4. A Display as attribútuma legyen Select List.
45
Osztott lista felhasználása
A List of Values fülön válasszuk ki az elmentett oktatók listáját.
A Source fülön ne feledjük a Source used attribútumot átállítani Only when current value in session state is null-ra!
46
Jelölőnégyzet (checkbox)
Feladat: a Tantárgy szerkesztő űrlapon (edit form) a lezárás lehetséges értékei: aláírás + gyakorlati jegy, aláírás + kollokvium, kollokvium, gyakorlati jegy, aláírás, szigorlat. Alkalmazzunk jelölőnégyzeteket a megoldáshoz.
Megoldás:1. A Tantárgy jelentéslapon válasszuk ki az egyik sort és kattintsunk az elején található szerkesztés ikonra (Edit Tantargy).2. A szerkesztőlap (edit form) alján kattintsunk az Edit Page 4 menüpontra.3. Itt a listából válasszuk ki a P4_LEZARAS mezőt.4. A Display as attribútuma legyen Checkbox.
47
Jelölőnégyzet (checkbox)
LOV definíció:
Beállítások:
● Default - Default value: aláírás.
● Source - Source used: Only when current value in session state is null
● Settings – Number of checkbox columns: 2
Figyelem! Ez így többválasztós lista. A kiválasztott értékek ellenőrzését külön kell megoldani.
48
Vizsgaidőpontok hozzáadása
Feladat: Módosítsuk az alkalmazást! Adjunk hozzá egy új lapot, ami Naptáron mutatja a vizsgaidőpontokat. A vizsgák adatai ezen keresztül lesznek módosíthatók.
Megoldás: Application Builder – Application 1 – Create Page – Calendar – Easy Calendar.
49
Naptár létrehozása
A Tanszék és Tantárgy lapok mellett legyen egy új, Vizsga lap.
50
Naptár létrehozása
A naptár mögötti tábla megadása:
Meg kell adni a táblábana dátum típusú mezőt, ésa naptárban megjelenítendőmező nevét:
51
Naptár létrehozása
A naptárban láthatómezőérték egy link.Rákattintva megjele-nik egy szerkesztőablak, ahol a vizsgatábla adatai módo-síthatók.Végezzük el enneka lapnak a beállí-tásait.
Hozzuk létre anaptár lapot.
52
Naptár létrehozása
Így néz ki a Vizsga lap:
A jobb felső sor gombjai a naptárban való keresést segítik.
53
Naptár létrehozása
Egy naptárbejegyzésre kattintva megjelenik a kapcsolódó adattábla rekord szerkesztő lapja:
54
Egyszerű értékellenőrzés
Feladat: hozzunk létre értékellenőrzést (validation) a vizsgadátumhoz. Biztosítsuk, hogy új vizsga felvitelekor, ill. módosításkor az új dátum ne legyen a mai napnál régebbi.
Megoldás:1. A Vizsga lapon válasszuk ki az egyik naptárbejegyzést. 2. A szerkesztőlap (edit form) alján kattintsunk az Edit Page 6 menüpontra.3. A Page Processing területen jobb egérgombbal kattintsunk a Validating - Validations lehetőségre, majd Create Validation.4. Adatérvényesítés szintje (mező szint): Page Item.5. Válasszuk ki az ellenőrizendő mezőt: P6_DATUM.
55
Egyszerű értékellenőrzés
Adjunk nevet az adatérvényesítésnek:
Adatérvényesítés típusa (validation type): SQL – SQL Expression.
56
Egyszerű értékellenőrzés
Adjuk meg az ellenőrzésSQL kódját és a megjelenítendőhibaüzenetet.
57
Egyszerű értékellenőrzés
Az ellenőrzés csak a CREATE és az APPLY CHANGES (SAVE) gombok lenyomásakor hajtódjon végre.
A Create gomb hatására létrejön az adatérvényesítés, mint tárolt adatbázis objektum.
58
Összetett értékellenőrzés
Feladat: a Tantárgy szerkesztő lapon a lezárás módja négyféle lehet: aláírás, aláírás+kollokvium, aláírás+gyakjegy, vagy szigorlat. Ha csak egy mezőre vonatkozik az ellenőrzési feltétel, akkor mező szintű validálásról beszélünk. Most legyen összetett (több mezőt érintő, oldal szintű) az értékellenőrzés. A kreditpont és a tárgy lezárás módja között legyen adott a következő szabályrendszer:
Tárgy lezárás módja Kreditpont
aláírás 2, 3
aláírás+gyakjegy 4
aláírás+kollokvium 5, 6
szigorlat 7
59
Összetett értékellenőrzés
Megoldás:1. A Tantárgy főlapon kattintsunk az egyik tantárgy előtti szerkesztés ikonra. 2. A szerkesztőlap (edit form) alján kattintsunk az Edit Page 4 menüpontra.3. A Page Processing területen jobb egérgombbal kattintsunk a Validating - Validations lehetőségre, majd Create Validation.4. Adatérvényesítés szintje (oldal szint): Page.
60
Összetett értékellenőrzés
Adjunk nevet az adatérvényesítésnek.
Adatérvényesítés típusa (validation type): PL/SQL – Function returning boolean.
61
Összetett értékellenőrzés
Írjunk PL/SQL függvényt, ami akkor ad vissza igaz értéket, ha az űrlapon megadott adatok elfogadhatók.Egyébként hamis értékkel tér vissza és hibaüzenetet kapunk. A megjelenítendő hibaüzenet megadása kötelező.
62
Összetett értékellenőrzés
Az ellenőrzés csak a CREATE és az APPLY CHANGES (SAVE) gombok lenyomásakor hajtódjon végre. A Conditions rész beállításai:
A Create gomb hatására létrejön az adatérvényesítés. A Run gombra kattintva tesztelhetjük.
63
Felhasznált irodalom
● Building an Application using Oracle Application Express: Part 1
http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/devdays2012/apexp1_lab/apexp1_lab.html
● Oracle Help Center: Database Application Express User's Guide – 4. Using Application Builder
http://docs.oracle.com/cd/B28359_01/appdev.111/b32258/bldr.htm#BABHEGEA
● Oracle Help Center: Application Express Application Builder User's Guide
https://docs.oracle.com/cd/E14373_01/appdev.32/e11838/toc.htm