Alkalmazásfejlesztés 4GL eszközökkel Form és menü - gyakorlati feladatok A mintarendszer ismertetése: Vevők: adataikat a VEVO táblában tartjuk nyilván, egy rekord egy vevőnek felel meg, a vevő azonosító az elsődleges kulcs, a vevőnév megadása kötelező. Cikkek: adataikat a CIKK táblában tartjuk nyilván, egy rekord egy cikknek felel meg, a cikkazonosító az elsődleges kulcs, a cikknév megadása kötelező.
Rendelések: az egy vevő által egy időpontban történő rendelés/vásárlás adatait a RENDELES tábla tartalmazza, a rendelésazonosító az elsődleges kulcs. A vevő azonosítót kötelező megadni, egy vevő természetesen többször is rendelhet, de csak olyan vevő vásárolhat, aki szerepel a VEVO táblában.
Tételek: egy vevő által, egy rendelés alkalmával vásárolt cikkek adatait a TETEL tábla tartalmazza, a rendelésazonosító+tételazonosító az elsődleges kulcs. A rendelésazonosító külső kulcs a RENDELES tábla rendelés azonosítójához. Egy rendelés tételei között ugyanaz a cikk többször is szerepelhet (több tétel sorban is előfordulhat), de csak olyan cikket lehet vásárolni, ami előfordul a CIKK táblában. A cikk azonosítót kötelező megadni. A cikkek ára és áfa értéke szerepel a cikk táblában, de rendeléskor ezen értékek felülírhatók.
Adattáblák és kapcsolatok
Adattáblák létrehozása CREATE TABLE vevo ( vevoazon number(6) vevonev varchar2(25) irsz varchar2(4), varos varchar2(15), utca varchar2(20), telefon varchar2(16), email varchar2(20), megj long)
CONSTRAINT vevo_pk NOT NULL,
PRIMARY KEY,
CONSTRAINT cikk_pk NOT NULL,
PRIMARY KEY,
CONSTRAINT rend_pk
PRIMARY KEY,
/
CREATE TABLE cikk ( cikkazon number(6) cikknev varchar2(25) m_egys varchar2(4), ar number(8), afa number(2), keszlet number(8)) /
CREATE TABLE rendeles ( rendazon number(6) renddat date, fizmod varchar2(1), vevoazon number(6) szalldat date)
NOT NULL,
/
CREATE TABLE tetel ( rendazon number(6) tetelazon number(3), cikkazon number(6) ar number(6), menny number(6), afa number(2), CONSTRAINT tetel_rend_pk /
CONSTRAINT tetel_rend_fk REFERENCES rendeles(rendazon) NOT NULL, NOT NULL,
PRIMARY KEY (rendazon,tetelazon))
Adattáblák tartalma CIKK tábla CIKKAZON CIKKNEV --------- ------------------------101 HOHES C 102 PAPIRZSEBKENDO ZITA 103 PULYKAMELL 104 TELISZALAMI 105 RAMA MARGARIN 500 GR 106 RAMA MARGARIN 250 GR 107 VITALINEA JOGHURT 108 FOLDIMOGYORO 200 GR 109 NARANCS 110 TURO RUDI 111 COLGATE TOTAL FOGKREM 112 FELBARNA KENYER 12 sor kijelölve.
4GL feladatok - FORM-MENÜ /
1.
Készítette: Márton Ágnes
4GL feladatok - FORM-MENÜ /
2.
M_EGYS AR AFA KESZLET ---- --------- --------- --------DB 220 25 1000 DB 70 25 1000 KG 800 12 1000 KG 3000 12 1000 DB 160 12 1000 DB 90 12 1000 DB 60 12 1000 DB 90 12 1000 KG 180 12 1000 DB 40 12 1000 DB 270 25 1000 KG 140 25 1000 Készítette: Márton Ágnes
VEVO tábla VEVOAZON VEVONEV -------- --------1001 KOVACS JANOS 1002 NAGY JANOS 1003 VARGA EVA 1004 KELEMEN IMRE 1005 JUHASZ BELA 1006 HORVATH JUDIT 1007 VASS PAL 1008 KALMAN EDIT 1009 KOVACS PETER 1010 BALOGH PAL 10 sor kijelölve.
IRSZ ---3300 3300 4032 4032 1117 4028 3300 1115 4032 1118
VAROS -------EGER EGER DEBRECEN DEBRECEN BUDAPEST DEBRECEN EGER BUDAPEST DEBRECEN BUDAPEST
UTCA --------------DOBO UT 11 SZECHENYI UT 42 DOBERDO UT 1 PIAC UT 1 VACI UT 111 SIMONYI UT 20 FELNEMETI UT 88 VACI UT 10 BOSZORMENYI 42 VIRAG UT 15
TELEFON ----------30-9456-654 60-9123-456 52-565-454
EMAIL MEGJ -----------------
[email protected] [email protected]
[email protected]
1-9111-222
[email protected] 60-9141-414 52-545-454
[email protected] [email protected]
RENDELES tábla RENDAZON RENDDAT --------- --------1001 01-JAN-02 1002 02-JAN-12 1003 02-JAN-22 1004 02-FEB-01 1005 02-FEB-12 1006 02-FEB-12 1007 02-FEB-12 1008 02-FEB-12 1009 02-FEB-12 9 sor kijelölve.
1007 1007 1007 1008 1008 1009 1009 31 sor kijelölve.
2 3 4 1 2 1 2
103 108 109 108 109 104 106
800 90 180 90 180 3000 90
3 4 3 1 1 3 3
12 12 12 12 12 12 12
********************************************************************
FORM 1. feladat (VEVO tábla) Adatblokk-varázsló és Elrendezés-varázsló megismerése ******************************************************************** A Form Builder eszköz használatával hozzunk létre formamodult a VEVO tábla összes adatának lekérdezésére, karbantartására. (A tábla kiválasztásához adatbázis kapcsolat szükséges.) • Blokk alaptáblája: VEVO • Adatintegritás kikényszerítése kapcsolót kapcsoljuk be • Elrendezés stílusa: forma • Keret címe: Vevők felvitele • Egyszerre 1 rekord jelenjen meg a képernyőn.
FIZMOD VEVOAZON SZALLDAT ------ --------- --------K 1010 01-JAN-02 K 1006 02-JAN-12 A 1004 02-JAN-29 K 1010 02-FEB-01 K 1008 02-FEB-12 K 1007 02-FEB-12 A 1008 02-FEB-19 K 1007 02-FEB-12 I 1004 02-FEB-12
TETEL tábla RENDAZON TETELAZON CIKKAZON AR MENNY AFA --------- --------- --------- --------- --------- --------1001 1 101 220 5 25 1001 2 111 270 1 25 1001 3 109 180 2 12 1001 4 107 60 5 12 1001 5 108 90 1 12 1001 6 101 220 3 25 1002 1 112 140 3 25 1002 2 103 800 4 12 1002 3 108 90 12 12 1003 1 112 140 3 25 1003 2 109 180 4 12 1003 3 107 60 12 12 1004 1 110 40 12 12 1004 2 102 70 11 25 1004 3 103 800 4 12 1004 4 101 220 10 25 1005 1 108 90 3 12 1005 2 102 70 2 25 1005 3 112 140 1 25 1006 1 102 70 11 25 1006 2 109 180 3 12 1006 3 109 180 2 12 1006 4 111 270 1 25 1007 1 108 90 3 12 4GL feladatok - FORM-MENÜ /
3.
Készítette: Márton Ágnes
1.
Használjuk az Adatblokk-varázslót opció Típus lap: Tábla vagy nézet opció Táblázat lap: Tallózás... Kapcsolódás ablak: MARTON01...MARTON15 Felhasználó: (azonos a felhasználói névvel) Jelszó: Adatbázis: marton.inf.unideb.hu Kapcsolódás Táblák ablak: VEVO Adatintegritás kikényszerítése bekapcsolása Rendelkezésre álló oszlopok ablak: a VEVO tábla oszlopai Adatbáziselemek ablak: mozgassuk át mindet Hozzuk létre az adatblokkot, hívjuk be az Elrendezés varázslót opció
4GL feladatok - FORM-MENÜ /
4.
Készítette: Márton Ágnes
2.
3.
Elrendezés varázsló Vászon: Új vászon Típus: Háttér Adatblokk lap: Rendelkezésre álló elemek ablak: az Adatbázis elemek ablakban kiválasztott oszlopnevek Megjelenített elemek ablak: mozgassuk át mindet Elemek lap: Címke, Szélesség és Magasság mezők értéke adható meg Stílus lap: Forma opció Sorok lap: Keret címe: Vevok felvitele 1 Megjelenített rekordok: Távolság a rekordok között: 0
Mentsük el az elkészült formamodult VEVO.FMB néven, majd futtassuk (a fordítás is megtörténik). Program⇒Forma futtatása⇒Ügyfél/kiszolgáló vagy Eszközpaletta: Forma futtatása ügyfél/kiszolgáló módban ikon
********************************************************************
Futtató környezet használata: teljes és szűrt lekérdezések, adatbázis műveletek ******************************************************************** 4. Kérdezzük le a VEVO tábla összes sorát: Lekérdezés⇒Végrehajtás vagy Lekérdezés indítása ikon vagy F8 Navigálás a rekordok között: Rekord⇒Előző/Következő vagy Előző / Következő ikon vagy ↓↑
5.
Kérdezzük le a VEVO tábla sorainak számát (Üzenetsorban látható): Lekérdezés⇒Találatszámlálás
6.
Kérdezzük le a VEVO tábla adott feltételeknek eleget tevő sorait: Általánosan:
Lekérdezés⇒Beírás vagy Kérdés beírása ikon vagy F7 Feltétel(ek) megadása Lekérdezés⇒Végrehajtás vagy Lekérdezés indítása ikon vagy F8
d.
e.
van telefonja vagy email címe (változónév használatával): telefon elembe: :t email elembe: :e Query/Where ablakba: :t is not null or :e is not null
van telefonja vagy varosa EGER (elem nevének megadásával): Tetszőleges elembe: : Query/Where ablakba: telefon is not null or varos=’EGER’
7.
Új rekord felvitele, rekord módosítása, törlése (eltávolítása) a.
Vigyük fel egy új vevő adatait, mentsük el az adatbázisba Rekord⇒Beszúrás vagy Rekord beszúrása ikon vagy F6 Töltsük ki az elemeket megfelelő értékekkel Tevékenység⇒Mentés vagy Mentés ikon vagy F10
b.
Módosítsuk az újonnan felvitt vevő valamelyik adatát
c.
Töröljük a felvitt vevőt, majd mentsük el a változást
Írjuk át egy elem tartalmát Rekord⇒Eltávolítás vagy Rekord eltávolítása ikon vagy Shift F6 Tevékenység⇒Mentés vagy Mentés ikon vagy F10 Megjegyzés: a Törlés (Clear) itt nullázást jelent (üres rekord létrehozása)
********************************************************************
Varázslók újraindíthatósága ******************************************************************** Módosítsuk az adatblokkot az Adatblokk-varázsló, az elrendezést az Elrendezés-varázsló segítségével az alábbiak szerint: • TELEFON, EMAIL és MEGJ elemek ne jelenjenek meg a képernyőn • Elrendezés stílusa: táblázatos • Egyszerre 6 rekord jelenjen meg • Rekordok közti távolság 4 legyen • Görgetősáv jelenjen meg
Feladatok: Jelenítsük meg azokat a vevőket, akinek a a. városa DEBRECEN: varos elembe:
b.
vevonev elembe:
c.
DEBRECEN
neve K betűvel kezdődik:
K%
van telefonja és email címe: telefon elembe: email elembe:
4GL feladatok - FORM-MENÜ /
5.
#IS NOT NULL #IS NOT NULL Készítette: Márton Ágnes
4GL feladatok - FORM-MENÜ /
6.
Készítette: Márton Ágnes
8.
Hívjuk az Adatblokk varázslót a VEVO blokk módosításához: a) Jelöljük ki a VEVO blokkot (pl. az Objektum-navigátorban) b) Eszközök⇒Adatblokk-varázsló vagy jobb-egérgomb c) Táblázat lap: Mozgassuk a TELEFON, EMAIL és MEGJ elemeket a Rendelkezésre álló oszlopok ablakba d) Futtassuk a formamodult Megjegyzés: A form futtatásakor a fenti mezők üresen megjelennek, de lekérdezésre, adatbázis-műveletekre nem használhatók.
9.
Hívjuk az Elrendezés varázslót az elrendezés módosításához: a) Jelöljük ki a KERETet (Objektum-navigátorban: Vásznak/Grafikák/ FRAME vagy az Elrendezés-szerkesztőben) b) Eszközök⇒Elrendezés-varázsló vagy jobb-egérgomb c) Adatblokk lap: Mozgassuk a TELEFON, EMAIL és MEGJ elemeket a Rendelkezésre álló elemek ablakba d) Elemek lap: Írjuk át az elemek címkéit tetszőlegesen Csökkentsük az elemek szélességét (mértékegység a pont): VEVOAZON-25,VEVONEV-85, IRSZ-25, VAROS-85, UTCA-85 e) Stílus lap: Táblázatos opció f) Sorok lap: Megjelenített rekordok: 6 4 Távolság a rekordok között: Görgető megjelenítése bekapcsolása
11.
Formázás⇒Igazítás⇒Balra/Középre/Jobbra
b) Változtassuk meg az elemek kerettípusát tetszőlegesen: Formázás⇒Kerettípus⇒Bemélyülő/Kiugró/Nincs stb.
********************************************************************
Blokk, keret és elem objektumok Tulajdonság-palettája ******************************************************************** Nézzük meg az Objektum-navigátorban, milyen objektumok jöttek létre: Formamodul VEVO Adatblokk VEVO Elemek VEVOAZON, VEVONEV, IRSZ, VAROS, UTCA, TELEFON, EMAIL, MEGJ Triggerek VEVOAZON elemhez WHEN-VALIDATE-ITEM VEVONEV elemhez WHEN-VALIDATE-ITEM Vásznak CANVAS2 Grafikák FRAME3 (keret) Ablakok WINDOW1 12.
********************************************************************
WHERE utasításrész:
Betűméret, Dőlt ikonok
e) Színezzük az ellipszist és a VEVONEV elemet azonos színekkel Kitöltési szín, Vonal szín, Szöveg szín ikonokkal
f) Módosítsuk a keret címének betűtípusát: 14 pont, Courier New, Félkövér 4GL feladatok - FORM-MENÜ /
7.
Készítette: Márton Ágnes
varos=’DEBRECEN’
c) Lekérdezés esetén a rekordok VEVONEV szerinti csökkenő sorrendben jelenjenek meg: ORDER BY utasításrész:
vevonev desc
d) Ne engedjük meg a blokkban a rekord törlését:
Jelöljük ki a keretet, majd egér-húzással Ellipszis ikon és Szöveg ikon segítségével
Rekord megváltoztatása
b) Lekérdezés esetén csak azok a rekordok jelenjenek meg, amelyek VAROS elemének értéke DEBRECEN:
******************************************************************** Megjegyzés: az elrendezésen kijelölt objektum(ok) az Objektum-navigátorban is kijelölésre kerül(nek), így ellenőrizhető a kijelölés helyessége 10. Eszközök⇒Elrendezés-szerkesztő vagy F2 a) Rendezzük át az elemeket és a címkéket (a vásznon belül): b) Méretezzük át a keretet úgy, hogy a vásznon belül maradjon:
d) Formázzuk meg a ’nevünket’: 14 pontos, dőlt betűstílus
VEVO adatblokk Tulajdonság-palettájának áttekintése Eszközök⇒Tulajdonság-paletta vagy F4 a) A rekord utolsó mezőjének elérése után a kurzor a következő rekord első mezőjére ugorjon: Navigálási stílus:
Elrendezés-szerkesztő használata, formázás
c) Rajzoljunk egy ellipszist a kereten belül, írjuk bele a nevünket:
Menüből elérhető egyéb Formázási lehetőségek a) Igazítsuk az értéket a mezőn belül: VAROS középre, IRSZ jobbra
Törlés engedélyezve:
13.
Nem
Keret Tulajdonság-palettájának áttekintése a) Jelenjen meg egyszerre 5 rekord és 12 pont legyen köztük a távolság: Megjelenített rekordok száma: Rekordok közti távolság:
5 12
b) Módosítsuk a keret típusát tetszőlegesen: Kerettípus: 4GL feladatok - FORM-MENÜ /
Süllyesztett
8.
Készítette: Márton Ágnes
c) Írjuk át a keret címét, illesszük középre, adjuk meg a betűtípusát: Keretcím: Keretcím illesztése: A keretcím betűtípusának neve:
Vevok karbantartasa kozep Courier New
d) Csökkentsük a megjelenő elemek közti vízszintes távolságot: Vízszintes objektum offszet:
14.
2
Elemek Tulajdonság-palettájának áttekintése a) IRSZ elem értékeként pontosan 4 karaktert kelljen megadni, ha végig kitöltöttük, ugorjon a kurzor a következő elemre: Automatikus átugrás: Rögzített hossz:
********************************************************************
Formamodul szintű objektumok létrehozása: Értéklista, Vizuális attribútum, Szövegszerkesztő ******************************************************************** Hozzunk létre Értéklistát a VAROS elem kitöltéséhez, a korábban felvitt értékek közül lehessen választani. 15.
Az LOV varázsló használatával opció Rekordcsoport lap: Lekérdezésen alapuló új rekordcsoport opció Lekérdezés lap: SQL lekérdezési utasítás: SELECT DISTINCT VAROS FROM VEVO Oszlopok lap: Rekordcsoport oszlopa ablakból mozgassuk a VAROS elemet a LOV oszlopai ablakba Oszlopok megjelenítése lap: Visszaadott érték: VEVO.VAROS (Visszaadott elem kikeresése gomb) LOV megjelenítése lap: Cím: Városok listája Elemek lap: Visszaadott elemek ablakból a VEVO.VAROS elemet vigyük a Hozzárendelt elemek ablakba Megjegyzés: az értéklistával azonos nevű rekordcsoport is létrejött az értéklista létrehozásával egyidejűleg.
Igen Igen
b) VAROS elem kezdőértéke legyen DEBRECEN: Kezdőérték:
DEBRECEN
c) UTCA elemhez adjunk segítő szöveget, mely automatikusan jelenjen meg: Tipp: Jelenítse meg automatikusan a tippeket: Eszköztipp:
Ez egy tipp Igen Ez meg eszköztipp
d) VEVONEV, VAROS, UTCA elemekbe írt értéket konvertáljuk nagybetűsre: Kis-nagybetű megkötés:
Felső
e) VEVONEV elem módosítását ne engedélyezzük: Módosítás engedélyezve:
Nem
Érték-listák kijelölése, Létrehozás ikon
16.
Mentsük, futtassuk a formamodult, próbáljuk ki az értéklistát: Szerkesztés⇒Lista megjelenítése vagy F9 a) Az értéklista neve legyen VAROSLIS b) Ha az értéklista egyetlen értéket (sort) tartalmaz (pl. szűrés esetén), ez az érték íródjon vissza automatikusan az elembe: Automatikus kijelölés:
Igen
c) Állítsuk be, hogy az értéklista automatikusan jelenjen meg: Automatikus megjelenítés:
Igen
d) Értékválasztás után a kurzor ugorjon a következő elemre: Automatikus átugrás:
Igen
Hozzuk létre az AKTREK Vizuális attribútumot annak jelzésére, hogy a VEVO blokkban az aktuális rekord kiemelkedjen a többi közül. 17. Vizuális attribútumok kijelölése, Létrehozás ikon a) Név: AKTREK Előtér színe, Háttérszín, Kitöltési minta: válasszuk ki listából b) VEVO blokk Tulajdonság-paletta: Az aktuális rekord vizuális attribútumcsoportja: AKTREK 4GL feladatok - FORM-MENÜ /
9.
Készítette: Márton Ágnes
4GL feladatok - FORM-MENÜ /
10.
Készítette: Márton Ágnes
Hozzuk létre a HATTER nevű vizuális attribútumot és rendeljük a kerethez a Vizuális attribútumcsoport tulajdonságon keresztül. Rendeljük hozzá az UTCA elemhez a rendszer szövegszerkesztőt. 18. a) UTCA elem Tulajdonság-paletta: Szerkesztő: SYSTEM_EDITOR b) Futtassuk a formamodult, próbáljuk ki a szövegszerkesztőt: UTCA elemben állva Szerkesztés/Szerkesztés menüpont
********************************************************************
Nem adatbázis elem és Vezérlő blokk létrehozása ******************************************************************** Hozzunk létre a VEVO blokkban két szövegelem típusú, nem-adatbázis elemet megfelelő címkével: 19.
a) NEV: a nevünket tartalmazza, ne lehessen navigálni se egérrel, se billentyűzettel Kezdő érték: Adatbáziselem: Engedélyezett: Billentyűzettel navigálható: Megjelenített elemek száma:
Marton Agnes Nem Nem Nem 1
********************************************************************
FORM 2. feladat (RENDELES-TETEL táblák) Szülő-gyerek formamodul létrehozása ******************************************************************** Hozzunk létre formamodult a RENDELES és TETEL táblák adatainak karbantartására, mentsük a formamodult REND.FMB néven. RENDELES blokk (szülő blokk) • RENDELES tábla minden oszlopát tartalmazza • Integritási megszorításokat vegyük figyelembe • Stílus: táblázatos • Keret címe: Rendelesek • Egyrekordos TETEL blokk (gyerek blokk) • TETEL tábla minden oszlopát tartalmazza • Integritási megszorításokat vegyük figyelembe • Stílus: táblázatos • Keret címe: Rendelesek tetelei • Ötrekordos, legyen görgetősáv • Kapcsolat: RENDELES.RENDAZON=TETEL.RENDAZON
b) JELSZO: a begépelt szöveg ne jelenjen meg, csak egérrel lehessen navigálni Adat elrejtése: Adatbáziselem: Billentyűzettel navigálható: Megjelenített elemek száma:
Igen Nem Nem 1
Hozzuk létre a VEZER nevű Vezérlő blokkot, majd a két létrehozott elemet helyezzük át a VEZER blokkba: Adatbázis adatblokk: Egyetlen rekord:
Nem Igen
1.
Hozzuk létre mindkét adatblokkot a már ismert módon. 2. (gyerek) blokk Szülő-gyerek lap: Adatblokkok automatikus összekapcsolása bekapcsolása Reláció létrehozása gomb RENDELES blokk kiválasztása RENDELES Szülő adatblokkok: RENDAZON Gyermekelem: RENDAZON Szülőelem: Megjegyzés: Az Objektum-navigátorban a szülő (RENDELES) blokk legyen az első.
4GL feladatok - FORM-MENÜ /
11.
Készítette: Márton Ágnes
4GL feladatok - FORM-MENÜ /
12.
Készítette: Márton Ágnes
2.
3.
4.
RENDELES blokk és elemeinek tulajdonság-beállításai a) A rekord utolsó elemének elérése után a kurzor a következő blokk első elemére ugorjon b) Lekérdezéskor a blokk rekordjai rendelési dátum szerinti sorrendben jelenjenek meg c) Ne engedjük meg a blokkban a rekord törlését d) RENDDAT és SZALLDAT elemek értéke jobbra igazítva jelenjen meg. A kezdőérték a rendszerdátum ($$DATE$$) legyen. Az elemekhez adjunk tetszőleges formátum maszkot e) FIZMOD elem értékét konvertálja nagybetűsre, pontosan 1 karaktert lehessen megadni. A kezdőérték K legyen f) VEVOAZON elem kitöltéséhez készítsük el a VEVOLIS értéklistát: • Vevő nevét, azonosítóját és városát tartalmazza vevőnév szerinti sorrendben • A kiválasztott vevőazonosítót írjuk vissza a RENDELES blokk VEVOAZON elemébe • Ha az értéklista tartalma egyetlen sorra korlátozódik, a kiválasztott érték íródjon vissza a megfelelő elembe • Értékválasztás után a kurzor a következő elemre ugorjon TETEL blokk és elemeinek tulajdonság-beállításai a) A rekord utolsó elemének elérése után a kurzor a következő rekord első mezőjére ugorjon b) MENNY elemre adjunk formátum maszkot (999,999) c) AR, MENNY, AFA értéke az elemben jobbra igazítva jelenjen meg d) CIKKAZON elem kitöltéséhez készítsük el a CIKKLIS értéklistát: • Cikk nevét, azonosítóját, árát és áfáját tartalmazza cikknév szerinti sorrendben • Cikkazonosítót, árat és áfát írjuk vissza a TETEL blokk megfelelő elemeibe • Csak a CIKKAZON elemből lehessen elérni az értéklistát • Értékválasztás után a kurzor a következő elemre ugorjon Hozzuk létre a VEZERLO nevű vezérlő blokkot, abban pedig egy DATUM nevű, szövegelem elemtípusú, dátumidő adattípusú nem adatbázis elemet címkével. A DATUM a rendszerdátumot és időt tartalmazza ($$DATETIME$$), ne lehessen navigálni se egérrel, se billentyűzettel. Adjunk hozzá tetszőleges formátummaszkot a súgó segítségével.
4GL feladatok - FORM-MENÜ /
13.
Készítette: Márton Ágnes
*****************************************************************
Adatbeviteli és adatmegjelenítő elemek létrehozása *****************************************************************
LISTAELEM: Módosítsuk a FIZMOD elemet listaelem (Szlista) típusúvá. A megadottaktól eltérő érték esetén a K (Készpénz) érték jelenjen meg 4. a) Az elrendezésen növeljük a FIZMOD szélességét b) Tulajdonságok: Elemtípus: Listaelem A lista elemei: További... Listaelemek-Listaelem értéke párok beállítása: Atutalas –A Keszpenz –K Incasso –I A lista stílusa: Szlista Az egyéb érték hozzárendelés: K
SZÁMÍTOTT MEZŐ, MEGJELENÉSELEM: Hozzuk létre a TETEL blokkban a NETTO és BRUTTO megjelenés elemeket, majd ezekben jelenítsük meg rekordonként a mennyiség, egységár és áfa segítségével kiszámított megfelelő értékeket. Adjunk címkét is az elemeknek.
4GL feladatok - FORM-MENÜ /
14.
Készítette: Márton Ágnes
5. a) Elrendezés-szerkesztő: (a TETEL blokk legyen aktív) Képernyőelem ikon segítségével hozzuk létre a NETTO (nem adatbázis) elemet a MENNY és AFA elem között, megfelelő átrendezés után Hozzuk létre hasonlóképpen a BRUTTO elemet az AFA után
b) FRAME3 és FRAME4 közös Tulajdonság-palettája (F4) Elrendezés módosítása: Manuálisan c) NETTO és BRUTTO elemek közös Tulajdonság-palettája (F4) Igazítás: Jobb Adattípus: Szám Számolási mód: Képlet Adatbáziselem: Nem d) NETTO Tulajdonság-palettája Képlet: :AR*:MENNY e) BRUTTO Tulajdonság-palettája Képlet: :NETTO+ROUND(:NETTO*:AFA/100,0)
SZÁMÍTOTT MEZŐ, MEGJELENÉSELEM: Hozzuk létre a TETEL blokkban az ONETTO és OBRUTTO megjelenéselemeket, majd ezekben jelenítsük meg rendelésenként a NETTO és BRUTTO összesen értékeket. Adjunk címkét is az elemeknek. 6. a) Elrendezés-szerkesztő: (a tétel blokk legyen aktív) Képernyőelem ikon segítségével hozzuk létre az ONETTO elemet a NETTO, az OBRUTTO elemet a BRUTTO alatt b) ONETTO és OBRUTTO közös Tulajdonság-palettája (F4) Adattípus: Szám Igazítás: Jobb Számolási mód: Összegzés Összegző funkció: Összeg Összegzett blokk: TETEL Megjelenített elemek száma: 1 Adatbáziselem: Nem c) ONETTO Tulajdonság-palettája Összegzett elem: NETTO d) OBRUTTO Tulajdonság-palettája Összegzett elem: BRUTTO
e) TETEL blokk Tulajdonság-paletta: Az összes rekord lekérdezése: Igen Hozzuk létre a TETELSZAM megjelenéselemet, amely (az ONETTO és OBRUTTO elemekkel egy sorban) megjeleníti az aktuális rendelés tételeinek darabszámát. 4GL feladatok - FORM-MENÜ /
15.
Készítette: Márton Ágnes
VÁLASZTÓCSOPORT: Módosítsuk a FIZMOD típusát választócsoportra, mely három választógombot tartalmaz: Készpénz, Átutalás, Incassó 7. Objektum navigátor: a) FIZMOD Tulajdonság-paletta: Elemtípus: Választócsoport b) FIZMOD/Választógombok kijelölése, majd Létrehozás ikon Név: GOMB1 Címke: Keszpenz Hozzáférési kulcs: K Választógomb érték: K c) Hasonlóan hozzuk létre a többi választógombot is GOMB2 Atutalas A A GOMB3 Incasso I I d) A választógombokat helyezzük el az elrendezésen
*******************************************************************
Nyomógomb létrehozása ******************************************************************** Hozzunk létre a VEZERLO blokkban három nyomógombot. A nyomógombhoz a végrehajtandó tevékenységet WHEN-BUTTONPRESSED trigger segítségével rendeljük hozzá. A gombokat csak egérrel lehessen navigálni, billentyűzettel ne. A gombok rendre az Alt E, Alt U és Alt K billentyűkombinációkkal is legyenek elérhetők. G1: Első rendelés Navigálás az első RENDELES rekordra G2: Utolsó rendelés Navigálás az utolsó RENDELES rekordra G3: Kilépés Kilépés a futtató környezetből 8. Elrendezés-szerkesztő: Gomb ikon, egérrel jelöljük ki a helyüket a) Tulajdonság-paletta: Írjuk át a gombok nevét (G1, G2, G3), címkéjét, legyenek egérrel navigálhatók, adjuk meg a Hozzáférési kulcsot b) G1 gomb kijelölése, jobb egérgomb, Intelligens triggerek: WHEN-BUTTON-PRESSED PL/SQL ablak: go_block(’rendeles’); first_record ; c) G2 gomb: go_block(’rendeles’); last_record; d) G3 gomb: exit_form;
4GL feladatok - FORM-MENÜ /
16.
Készítette: Márton Ágnes
*******************************************************************
********************************************************************
Trigger példák
MENÜ
******************************************************************* A RENDELES blokkban a VEVOAZON mellett jelenítsük meg a megfelelő vevő nevét is a VEVO táblából: • Hozzuk létre a RENDELES blokkban a VEVOAZON mellett a VNEV megjelenéselemet (nem adatbázis elem) • Módosítsuk a VEVOLIS értéklistát úgy, hogy a VNEV elembe is írja vissza a kiválasztott sorban levő vevő nevét, majd futtassuk a formamodult • VEVOAZON elemhez hozzunk létre triggert, amely megjeleníti a VEVOAZON mellett a hozzátartozó vevő nevét is a VEVO táblából 9. a) VEVOAZON elem - POST-CHANGE trigger Trigger szöveg: SELECT vevonev INTO :rendeles.vnev FROM vevo WHERE vevoazon=:rendeles.vevoazon; b) Futtassuk a formamodult: adjunk meg olyan vevőazonosítót, ami nem létezik a VEVO táblában – hibaüzenet: le nem kezelt kivétel c) Írjunk az előző trigger szöveg végére kivételkezelő részt: … EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE(‘Hibas, kerjen erteklistat’); RAISE FORM_TRIGGER_FAILURE; d) Futtassuk, teszteljük a formamodult
A TETEL blokkban a CIKKAZON mellett jelenítsük meg a megfelelő cikk nevét is a CIKK táblából: • Hozzuk létre a TETEL blokkban a CIKKAZON mellett a CNEV megjelenéselemet (nem adatbázis elem) • Módosítsuk a CIKKLIS értéklistát úgy, hogy a CNEV elembe is írja vissza a kiválasztott sorban levő cikk nevét, majd futtassuk a formamodult • CIKKAZON elemhez hozzunk létre triggert, amely megjeleníti a CIKKAZON mellett a cikk nevét is a CIKK táblából
4GL feladatok - FORM-MENÜ /
17.
Készítette: Márton Ágnes
3. feladat Menü létrehozása, formhoz kapcsolása
******************************************************************** Hozzuk létre a MENU nevű, alábbi szerkezetű menümodult. A Rendezés menü választó típusú legyen. Mentsük el MENU.MMB néven, majd rendeljük hozzá a 2. Feladatban létrehozott REND formához.
1.
Menümodul létrehozása a) Objektum-navigátor: Menük kijelölése, Létrehozás ikon, átnevezés b) Menüszerkesztő meghívása c) Főmenü létrehozása: (Fájl, Rendezés, Lekérdezés) <Új_elem> átnevezése Fájl-ra, Létrehozás jobbra ikon stb. d) Fájl menü elemeinek megadása Fájl kijelölése, Létrehozás lefelé ikon, menüelemek megadása e) Rendezés, Lekérdezés menü elemeinek megadása hasonlóan f) Menüelemek tulajdonságainak beállítása:
Fájl menü: Menüelem típusa: Parancstípus: Menüelem kódja: Bűvös elem:
Mentés sima PL/SQL commit_form;
----határoló üres
Kilépés bűvös üres Kilépés
Rendezés menü: Rend.azon Vevő azon Rend.dátum Menüelem típusa: választó választó választó Parancstípus: PL/SQL PL/SQL PL/SQL Menüelem választócs.: order_by order_by order_by Menüelem kódja: Rend.azon: set_block_property(’rendeles’,ORDER_BY,’rendazon’); Vevőazon: set_block_property(’rendeles’,ORDER_BY,’vevoazon’); Rend.dátum: set_block_property(’rendeles’,ORDER_BY,’renddat’); Lekérdezés menü: Menüelem típusa: Parancstípus: Menüelem kódja:
4GL feladatok - FORM-MENÜ /
Feltételes sima PL/SQL enter_query;
18.
Teljes sima PL/SQL execute_query;
Készítette: Márton Ágnes
2. 3.
********************************************************************
Menümodul fordítása (.MMX fájl előállítása): Fájl⇒Adminisztráció⇒Fájl fordítása A LEFORDÍTOTT menüt rendeljük formamodulhoz, futtassuk, teszteljük. Formamodul Tulajdonság-paletta Menümodul: c:\…\MENU
FORM 5. feladat(VEVO-CIKK-RENDELES-TETEL) Több-blokkos formamodul létrehozása ********************************************************************
Módosítsuk a menümodult az alábbi szerkezetűre:
********************************************************************
FORM
4. feladat Beugró menü létrehozása (a 2. Feladat folytatása)
******************************************************************** Hozzuk létre a BEUG nevű, alábbi szerkezetű beugró menüt és rendeljük hozzá a REND formamodul RENDELES blokkjának VEVOAZON eleméhez és a TETEL blokk CIKKAZON eleméhez: Kivágás Másolás Beillesztés Értéklista 1.
Beugró menü létrehozása (formamodul szintű objektum) a) Objektum-navigátor: Beugró menük kijelölése, Létrehozás ikon, átnevezés b) Menüszerkesztő: menü elemek létrehozása c) Menüelemek tulajdonságainak beállítása:
Menüelem típusa: Bűvös elem: Parancstípus: Menüelem kódja:
Kivágás bűvös Kivágás üres
Másolás bűvös Másolás üres
Beillesztés bűvös Beillesztés üres
Hozzunk létre négy blokkból álló formamodult a fenti elrendezés szerint, az alábbiak figyelembevételével: 1. blokk: Alaptábla: VEVO 2. blokk: Alaptábla: RENDELES szülő blokk: VEVO kapcsolat: RENDELES.VEVOAZON = VEVO.VEVOAZON 3. blokk: Alaptábla: TETEL szülő blokk: RENDELES kapcsolat: TETEL.RENDAZON = RENDELES.RENDAZON 4. blokk: Alaptábla: CIKK szülő blokk: TETEL kapcsolat: CIKK.CIKKAZON = TETEL.CIKKAZON
Értéklista sima Nincs PL/SQL list_values;
A BEUG beugró menüt rendeljük a RENDELES blokk VEVOAZON és a TETEL blokk CIKKAZON eleméhez. Futtassuk, teszteljük a formamodult. 4GL feladatok - FORM-MENÜ /
19.
Készítette: Márton Ágnes
4GL feladatok - FORM-MENÜ /
20.
Készítette: Márton Ágnes
************************************************* FORM 6. feladat(VEVO-CIKK-RENDELES-TETEL) Fülesvászon létrehozása *************************************************
3. blokk: RENDELES Elrendezés varázsló:
Tulajdonság paletta (PAGE7): 4. blokk: TETEL Adatblokk varázsló: Elrendezés varázsló:
Vászon: Típus: Karton: Név: Címke:
CANVAS2 Fül Új karton REND Rendelések
Szülő-gyerek kapcsolat beállítása Vászon: CANVAS2 Típus: Fül Karton: REND
Hozzunk létre 4 blokkból álló formamodult, a blokkok 3 kartonból álló fülesvásznon jelenjenek meg: 1.blokk: VEVO egyrekordos forma 1. karton (VEVO) 2.blokk: CIKK egyrekordos forma 2. karton (CIKK) 3.blokk: RENDELES egyrekordos táblázatos 3. karton (REND) 4.blokk: TETEL 10 rekordos táblázatos 3. karton (REND) Szülő-gyerek kapcsolat a 3-4. blokk között: TETEL.RENDAZON = RENDELES.RENDAZON 1. blokk: VEVO Elrendezés varázsló:
Tulajdonság paletta (PAGE5): 2. blokk: CIKK Elrendezés varázsló:
Tulajdonság paletta (PAGE6):
4GL feladatok - FORM-MENÜ /
21.
Vászon: Típus: Karton: Név: Címke:
Új vászon Fül Új karton VEVO Vevők
Vászon: Típus: Karton: Név: Címke:
CANVAS2 Fül Új karton CIKK Cikkek
Készítette: Márton Ágnes
4GL feladatok - FORM-MENÜ /
22.
Készítette: Márton Ágnes