ACCESS GYAKORLATOK Tansegédlet a Szervezéstechnológia tárgyhoz
Dr. Gyurkó György 2010.
Szerzı: Dr. Gyurkó György
3
TARTALOMJEGYZÉK
1. Access – Egy kis elmélet........................................................................................................ 4 1.1 Adatbázis definiálása az Access grafikus felületén.................................................... 4 1.2 Adatok bevitele, törlése és módosítása a grafikus felületen....................................... 9 1.3 Adatok lekérdezése az Access grafikus felületén .................................................... 11 2. Feladatok .............................................................................................................................. 23 3. Megoldások .......................................................................................................................... 46
4
ACCESS GYAKORLATOK
1. Access – Egy kis elmélet 1.1 Adatbázis definiálása az Access grafikus felületén Új adatbázist vagy egy adatbázisban új elemeket általában valamilyen párbeszédes felületeken is definiálhatunk. Ezek közé tartozik a Microsoft Access program grafikus (táblázatos) felülete. Az ezen szakaszban bemutatott példák és képernyıábrák is az Access felhasználásával készültek. Tábla definiálása Az 1.1. ábrán az olvasó az Access táblatervezı felületét, és abban történetesen a fıkönyvi számlák forgalomtételeit tartalmazó tábla (táblanév: Fkvisza_forg) tervét (definícióját) látja. Ezen a felületen megadhatók a tábla oszlopainak, más szóval mezıinek a jellemzıi (mezınév, adattípus és további – általános, illetve megjelenítési – jellemzıi). Mivel a fókusz éppen az Fkvisza_forg tábla Számlaoldal nevő mezıjén van, az alsó füleslapokon ennek a mezınek a további jellemzıit lehet látni, illetve megadni. Például az Érvényességi szabály nevő rovatban a Számlaoldal lehetséges értékeire vonatkozó megszorítás adható meg: a =’T’ Or =’K’ megszorítás azt jelenti, hogy a tábla Számlaoldal mezıjében csak a T (tartozik) vagy a K (követel) érték állhat. Az Fkviszla_forg tábla értelmezése: E tábla rendeltetése, hogy a gazdasági események (az azokat képviselı bizonylatok) könyvelésekor keletkezı fıkönyvi forgalomtételeket tárolja. Tetelsorszam: Egy fıkönyvi számlára könyvelt forgalomtétel azonosítója (elsıdleges kulcsa). Idoszakkod: Annak a mérlegidıszaknak a kódja, amelyre a forgalomtétel könyvelve lett. Szamlatukorkod: A Szamlatukor-sor azonosítója, azaz idegen kulcs a Szamlatukor táblából (lásd a 1.5. ábrán), amely a létezı fıkönyvi számlaszámokat (Fkviszla_szam) tárolja. Tehát az Fkviszla_forg tábla soraiban a Szamlatukorkod hivatkozza azt a fıkönyvi számlaszámot, amelyre a sorban tárolt tétel könyvelve lett. (De akkor miért nem a fıkönyvi számlaszám áll a Szamlatukorkod helyén? – Azért, mert a Szamlatukor tábla sorait a fıkönyvi számlaszám nem azonosíthatja, hiszen azonos fıkönyvi számlaszám a tábla több sorában is megjelenhet. Ugyanis ez a tábla a számlaszámokat történetileg tárolja, azaz nem csak az aktuálisam érvényes számlaszámokat, hanem a korábbi években érvényeseket is tartalmazza. Így, ha egy számlaszám valamikor érvényes volt, majd érvénytelenítették, majd ismét érvényessé vált – de már a korábbitól különbözı jelentéssel, akkor ez a számlaszám szükségképpen több Szamlatukor-sorban van jelen.) Szamlaoldal: Azt mutatja, hogy a Szamlatukorkod hivatkozott számla melyik oldalára lett könyvelve a tétel összege. Értékei: T = tartozik; K = követel. Osszeg: Az adott számla adott oldalára könyvelt forgalomérték (forintban). Bizonylatkod: A Bizonylat táblában a tétel forrásbizonylatát hivatkozó idegen kulcs. – Az azonos bizonylatról keletkezett tételek éppen arról ismerhetık fel, hogy mindegyikben azonos a Bizonylatkod értéke. Tételleírás: Tetszıleges emlékeztetı szöveg. TJ_tetelsorszam: Csak törlı vagy javító tételben van kitöltve, és az azzal törölt vagy javított forgalomtétel azonosítóját tartalmazza. Kapcsolat: Szintén csak törlı vagy javító tételben van kitöltve. Értékei: T = törlés; J = javítás. Megjegyzés: A számvitel szabályai szerint az egyszer már lekönyvelt tétel nem változtatható. Ha esetleg utóbb hibásnak bizonyul, akkor is az adatbázisban marad, a hiba csak további strornózó és
5
ACCESS GYAKORLATOK
javító tételek hozzáadásával korrigálható: Ha a hiba csak annyi, hogy egy tételt egyáltalán nem kellett volna könyvelni, akkor csak stornózni kell, azaz a tételével azonos összeggel és azonos számlára, de a számla ellenkezı oldalára vonatkozó újabb tételt kell létrehozni, ez a törlı tétel. Ha viszont másképpen kellett vona könyvelni, akkor a törlı tételen felül még olyan javító tétel(eke)t is létre kell hozni, amely(ek) már a helyes könyvelésnek megfelelı tartalommal bír(nak). – Hogy egyértelmő legyen, hogy egy törlı vagy egy javító tétel melyik tételnek törlése vagy javítás, a törlı, illetve javító tétel a TJ_tetelsorszam mezıjében tartalmazza a törölt, illetve javított tétel azonosítóját, a Kapcsolat mezıjében pedig viszony típusát jelzı kódot.
Elsıdleges kulcs minıség jelzése
A fókusz jelzése
Elsıdleges kulcs minıség be- vagy kikapcsolásásra szolgáló funkciógomb Az aktuális oszlopra vonatkozó érvényességi szabály
1.1. ábra: Tábladefiniáló (tervezı) felület Accessben
1.2. ábra: Táblára vonatkozó érvényességi szabály a Tábla tulajdonságai ablakban
6
ACCESS GYAKORLATOK
Az 1.1. ábrán a Tetelsorszam elıtti kulcsszimbólum jelzi, hogy a Tetelsorszam képezi a tábla elsıdleges kulcsát. Egy mezı elsıdleges kulcs minıségét úgy lehet beállítani, hogy a jobb egérgombbal a mezıre kattintva, arra helyezzük a fókuszt, majd az Elsıdleges kulcs funkciógombra kattintunk. Nem csak egy-egy oszlopra vonatkozó érvényességi szabályok, hanem a tábla egészére vonatkozóak is megadhatók. Ilyen példát mutat az 1.2. ábra. Az ott látható Tábla tulajdonságai ablak a Nézet menü Tábla tulajdonságai menüparancsára kattintással jeleníthetı meg. Az ablak Érvényességi szabály mezıjébe írt feltételt itt kinagyítva megismételjük: ([TJ_Tetelsorszam] Is Null And [Kapcsolat] Is Null) Or ([TJ_Tetelsorszam] Is Not Null And [Kapcsolat] Is Not Null) A fenti feltétel azt jelenti, hogy a TJ_Tetelsorszam és a Kapcsolat mezık (oszlopok) pontosan egyszerre lehetnek üresek, illetve pontosan egyszerre lehetnek kitöltve. – Ez a szabály azért nem adható meg mezıszabályként, mert nem egyetlen mezıre, hanem – egy soron beüli – két mezı közötti viszonyra vonatkozó feltételt foglal magában. Az elıbbinél lényegesen bonyolultabb szabályok is elıfordulhatnak. Például olyanok, amelyek több – esetleg különbözı táblákban lévı – adatsor közötti összefüggésre vonatkoznak. Ilyen az a szabály is, hogy az egy gazdasági eseményrıl (egy bizonylatról) könyvelt „követel” oldali tételek együttes összege egyenlı kell legyen az ugyanarról könyvelt „tartozik” oldali tételek együttes összegével. – Az ilyen szabályok már táblára vonatkozó érvényességi szabályban sem adhatók meg, teljesülésük ellenırzésére tárolt eljárásokat kell írni. A fejezet azonban ezekkel már nem foglalkozik. Az 1.3. ábra a Bizonylatkod mezı Megjelenítés jellemzıit mutatja. A jellemzık értelme az, hogy egy új tétel rögzítésekor a bizonylatkódot a táblába ne a felhasználónak kelljen beírni, hanem a felhasználó egy választéklistából (lásd Kombinált lista) választhassa ki. (A megjelenítés ilyen beállításának mőködés közbeni eredményét az 1.4. ábra mutatja.) A választéklista a Bizonylatvalasztek nevő lekérdezés eredményét jeleníti meg (lásd Sorforrás típusa: Tábla/lekérdezés; Sorforrás: Bizonylatvalasztek). A lista a sorforrás elsı két oszlopát mutatja (lásd Oszlopszám: 2), és a kiválasz-
1.3. ábra: A Bizonylatkód megjelenítési jellemzıinek beállítása
tott sorból az elsı oszlop tartalmát adja vissza (lásd Kötött oszlop: 1), és az lesz a tételben a Bizonylatkod mezı tartalma. Az oszlopszélességek, a listasorok száma és a listaszélesség a választéklista megjelenítési méreteit határozzák meg. A felhasználó közvetlenül nem írhat be bizonylatkódot, azt csak kiválaszthatja (lásd Csak listaelem: Igen).
ACCESS GYAKORLATOK
7
1.4. ábra: Az 1.1-1.3. ábrák szerint definiált Fkviszla_forg tábla mőködés közben
Megjegyzés: Az Fkviszla_forg táblában a Bizonylatkód mezı valójában egy Bizonylat táblából származó idegen kulcs. De ha ez így van, akkor miért nem a Bizonylat tábla lett megadva a választéklista sorforrásaként, miért volt szükség a Bizonylatvalasztek nevő lekérdezésre? Azért, mert a felhasználó kívánsága az volt, hogy a választéklistában a Bizonylatkód-értékek csökkenı sorrendjében jelenjenek meg a bizonylatok, hiszen új tételeket általában a legutoljára felvitt bizonylat(ok)hoz kapcsolódnak. Ha a Bizonylat táblában nem ilyen a rendezettség, mert például más célból általában a növekvı (pontosabban nem csökkenı) Bizonylatkód-értékek szerinti rendezettséget feltételezünk, akkor kénytelenek vagyunk a Bizonylat tábla egy olyan lekérdezését használni sorforrásként, amely a bizonylatokat a Bizonylatkód-értékek csökkenı (pontosabban nem növı) sorrendjében adja vissza. A teljes adatbázis tervezése általában sok tábla megtervezését foglalja magában, és persze meg kell határozni a táblák kapcsolatait is. Az Access kapcsolattervezı felülete az 1.5. ábrán látható. Ezen a grafikus felületen a kapcsolatot jelölı vonalak egérrel húzhatók be a táblákat jelölı dobozok közé. A vonalakat úgy kell húzni, hogy a dobozok oldalán adódó tapadási pontjaik a kapcsolómezıket mutassák. Egyes táblákat több doboz is képviselheti ebben az ablakban. Például az Fkvisza_forg tábla azért szerepel kétszer (a második szerepének neve: Fkvisza_forg_1), mert önmagára visszamutató kapcsolatot is alkot (t.i. a sztornózó/javító és a sztornózott/javított sorok közötti kapcsolat miatt). Ugyancsak kétszer szerepel a kapcsolattervezı felületen a Szamlatukor tábla is (a második szerepének neve: Szamlatukor_1), mert az két szerepben is fölérendeltje a Gyujtoleiro táblának. Egy kapcsolóvonalra duplán kattintva, vagy a kapcsolóvonalon a jobb egérgomb lenyomása után elıtőnı menübıl a Kapcsolat szerkesztése menüparancsot választva, az 1.6. ábra szerinti Kapcsolatok szerkesztése ablak jelenik meg. Ha egy kapcsolatra a Kapcsolatok szerkesztése ablakban a Hivatkozás integritás megırzése be van kapcsolva, akkor a rendszer nem engedi meg, hogy egy Fkviszla_forg-sor létrehozásakor vagy módosításakor olyan értéket írjunk a kapcsolómezıbe (jelen esetben a Bizonylatkodba), amely nem létezik a Bizonylat táblában. A további két kapcsoló is csak a Hivatkozás integritás megırzése bekapcsolt állapotában használható.
8
ACCESS GYAKORLATOK
1.5. ábra: Táblák kapcsolatait meghatározó (kapcsolattervezı) felület ACCESS-ben 1.6. ábra: A Bizonylat és az Fkviszla_forg kapcsolata a Kapcsolatok szerkesztése ablakban Ezzel hozható elı az Illesztési tulajdonságok ablak.
Be van kapcsolva, ezért létrehozás vagy módosítás esetén csak olyan érték írható az Fkviszla_forg tábla Bizonylatkod mezıjébe, amilyen már létezik a Bizonylat táblában.
Kikapcsolva, ezért visszautasítja az olyan bizonylat törlését, amelyhez létezı ráhivatkozó tétel.
Az Access automatikusan felismeri, hogy a kapcsolat típusa egy-a-többhöz.
1.7. ábra: A Bizonylat és az Fkviszla_forg kapcsolat illesztési típusa az Illesztési tulajdonságok ablakban Az illesztés típusa a kapcsolatnak nem egy stabil tulajdonsága, mert a célnak megfelelıen átállítható. Azt szabályozza, hogy az olyan lekérdezésekben, amelyekben a két tábla együtt vesz részt, köztük a JOIN milyen típusát kell elıállítani.
ACCESS GYAKORLATOK
9
Ha a Kapcsolt mezık kaszkádolt frissítése be van kapcsolva, akkor abban a rendkívüli1 esetben, amikor egy bizonylat kódja (elsıdleges kulcsa) változik, automatikusan a bizonylatról keletkezett tételekben is az új értékre módosul a Bizonylatkod tartalma. Ha a Kapcsolt mezık2 kaszkádolt törlése be lenne kapcsolva, akkor egy bizonylat törlése esetén, automatikusan a bizonylatról keletkezett összes tétel is törlıdne. Esetünkben ez nem lenne jó, mert könyvelt tételt nem szabad törölni, ezért az 1.6. ábrán ez a kapcsoló kikapcsolt állapotban van, aminek az a hatása, hogy ha egy bizonylatra már hivatkozik könyvelt tétel, akkor ennek a bizonylatnak a törlését a rendszer visszautasítja. Az elıbbiek szerint megtervezett táblákon – ugyancsak az Access felületét használva – különféle adatkezelési mőveleteket lehet végezni: új adatsorokat lehet bevinni, korábban bevitt adatokat meg lehet változtatni, adatsorokat ki lehet törölni, az adattartalmat le lehet kérdezni (lásd az 1.3. alfejezetben).
1.2 Adatok bevitele, törlése és módosítása a grafikus felületen Ez a szakasz csak olyan mértékben foglalkozik az Access grafikus felületén végrehajtható adatmanipulációs mőveletek ismertetésével, amennyi ahhoz szükséges, hogy az olvasó az könnyen feltölthesse megfelelı adatokkal a lekérdezések gyakorlásához szükséges táblákat. Bármely tábla megnyitható a táblaböngészıbıl többféle módon is, így például a tábla kijelölése utána a Megnyitás gombra kattintással (lásd az 1.8. ábrán).
1.8. ábra: A Bizonylat tábla megnyitása a táblaböngészıbıl
1 2
Ez azért rendkívüli, mert az elsıdleges kulcsnak stabilnak kell lenni, azaz rendesen nem változhat. Ez egy hibás fordítás eredménye. Helyesen Kapcsolt rekordok kaszkádolt törlése lenne.
10
ACCESS GYAKORLATOK
Törlı gomb.
Az éppen létrehozott vagy szerkesztés alatt lévı sor jelzése.
1.9. ábra: Új sor rögzítése a Bizonylat táblába
Az új bizonylathoz új tétel létrehozása. Az éppen létrehozott bizonylat.
A bizonylathoz tartozó tételeket megnyitó, illetve bezáró gomb
Legördülı választéklista a tétel számlatükörkódjának (közvetve a fıkönyvi számlaszámának) kiválasztása céljából.
1.10. ábra: A 25-ös kódú bizonylathoz új tétel rögzítése az Fkviszla_forg táblába
ACCESS GYAKORLATOK
11
Egy táblába új sort a tábla végén (utolsó sorként) lehet bevinni. (Lásd egy új bizonylatsor bevitelét a Bizonylat táblába az 1.9. ábrán.) Ha a tábladefinícióban adott szabályok nem tiltják, akkor bármely táblasorra kattintva annak adattartalma módosítható (átírható), illetve a törlı gombra kattintással a sor eltávolítható a táblából. Az 1.10. ábrán arra is példát látunk, hogy a Bizonylat táblában is kezdeményezhetı egy bizonylathoz tartozó forgalomtételek rögzítése az Fkviszla_forg táblába.
1.3 Adatok lekérdezése az Access grafikus felületén A teljesség igénye nélkül néhány példa megoldásával csupán ízelítıt adunk az Access grafikus lekérdezésdefiniáló felületének használatáról. Egy új lekérdezés létrehozásának kezdeményezése az 1.11. ábrán mutatott módon történhet. Az Access lekérdezés definiáló felülete az 1.11-1.12. ábrákkal mutatott lépésekkel érhetı el: (1) Az objektumok közül a Lekérdezéseket, majd azon belül (2) a Lekérdezés létrehozása Tervezı nézetben mőveletet kell választani (1.11. ábra). Az ezután megjelenı Tábla megjelenítése ablakból (1.12. ábra) lehet kiválasztani a lekérdezés forrásadatait adó táblá(ka)t vagy korábbi lekérdezés(eke)t. E szakasz mindegyik példájában közvetlenül vagy közvetve az 1.1. szakasz 1.5. ábráján mutatott táblák valamelyikét (esetleg több tábla együttesét) használjuk adatforrásként. (A közvetve való felhasználás arra az esetre vonatkozik, amikor a lekérdezés forrásai között nem csak tábla, hanem korábbi leklérdezés is szerepel.)
2 1
1.11. ábra: Lekérdezéstervezés kezdeményezése Accessben
12
ACCESS GYAKORLATOK
1.12. ábra: Lekérdezéstervezéshez táblák kiválasztása Accessben
1.13. ábra: A Szamlatukor felépítése
Az itt következı elsı feladatban a Szamlatukor táblát használjuk forrásként. Ebben az Fkviszla_szam jelenti a fıkönyvi számlaszámot, a Szamla_ervkezd jelenti a Szamlatukor-sor érvényességének kezdetét, a Szamla_ervvege jelenti a Szamlatukor-sor érvényességének végét. (A még érvényes sorok érvényességének igazi vége általában még ismeretlen. Ilyenkor egy nagyon nagy dátum, 4000.12.31. áll a Szamla_ervvege mezıben.)
A számlaosztályt a fıkönyvi számlaszám elsı számjegye mutatja. Ki fogjuk használni azt a tényt is, hogy a hogy a fıkönyvi számlaszám (bár számjegyekbıl áll) mégis szöveg adattípusú. 1. feladat: A Szamlatukor táblából kérdezze le a 4-es számlaosztályba tartozó fıkönyvi számlaszámok közül azokat, amelyek 2008.02.06-án érvényesek! A kimeneten fıkönyvi számlaszámokat a Szamlatukor táblában jellemzı összes oszlop jelenjen meg.
A lekérdezés létrehozásának kezdeményezésekor az 1.12. ábra szerinti Tábla megjelenítése ablakban most a Szamlatukor táblát kell kiválasztani hozzáadásra.
ACCESS GYAKORLATOK
13
1.14. ábra: Az 1. feladat 1. megoldása
Magyarázat az 1. megoldáshoz: Az 1. oszlopban azt adtuk meg, hogy a kimeneten a Szamlatukor-sor minden oszlopa jelenjen meg (Szamlatukor.* és pipa a jelölı négyzetben). A további három oszlopban nincs bekapcsolva a megjelenítés, tehát ezek csak feltételeket definiálnak. A második oszlop Fkviszla_szam Like '4*' feltételének értelme: azokat a számlaszámokat keressük, amelyek 4-essel kezdıdnek. (Itt használtuk ki, hogy a fıkönyvi számlaszám szöveg típusú adat, mert a Like mővelet csak szöveg adattípusra alkalmazható.) A 3. és a 4. oszlopkban lévı feltételek: Szamla_ervkezd <=#2008.02.06.#, illetve Szamla_ervvege >=#2008.02.06.# A három feltétel egymással logikai ÉS (AND) kapcsolatban áll, azaz a lekérdezés azokat a sorokat találja meg, amelyekre mindhárom feltétel egyidejőleg teljesül.
1.15. ábra: Az 1. feladat 2. megoldása
Magyarázat az 2. megoldáshoz: Ez a megoldás csak a 2. oszlopban különbözik az elıbbitıl, ezért csak az igényel magyarázatot. A Left([Fkviszla_szam];1) egy olyan függvénykifejezés, amely az Fkviszla_szam baloldali elsı karakterét (elsı számjegyét) adja vissza. (Ez a függvény is csak szöveg adattípusra alkalmazható.) Végeredményben a második oszlop a Left([Fkviszla_szam];1) = '4' feltételt tartalmazza, amelyet azok a fıkönyvi számlaszámok elégítenek ki, amelyeknek elsı számjegye 4-es. (A második oszlopba a Kif1: szöveget az Access automatikusan írta be, a felhasználónak ezzel nincs dolga. Az Access automatikusan Kif1:, Kif2:, … címkéket tesz a Mezı sorban azokba az oszlopokba, ahol nem egyszerően mezınév, hanem valamilyen kifejezés áll, és a felhasználó nem tett saját címkét.) Megjegyzések: • A Left(mezınév; hossz) függvény csak az Access SQL nyelvjárásában használható, más SQL nyelvjárásokban a Substring(mezınév, kezdıpozíció, hossz) vagy Substr(mezınév, kezdıpozíció, hossz) alakú függvény használatos helyette. • A dátum típusú adatkonstans csak az Access grafikus felületén #eeee.hh.nn.# alakú, az Access SQL szerkesztı felületén már a #hh/nn/eeee# alakot kell alkalmazni. Más SQL nyelvjárásokban a dátum típusú adatkonstans nem ## jelek között, hanem ''
14
ACCESS GYAKORLATOK jelek (aposztrófok) között áll, pl. '2008.02.06', illetve a felépítése a nemzeti sajátosságoknak megfelelıen rugalmasan választható meg.
2. feladat: A Számlatükör táblából kérdezze le azokat a Szamlatukor-sorokat, amelyekben értelmezett fıkönyvi számlaszámokra történt könyvelés 2007.11.20-án! A kimeneten a fıkönyvi számlaszám (Fkviszla_szam), és a számla megnevezése (Szamla_megnevezes) oszlopok jelenjenek meg. Gondoskodjon arról, hogy egy Szamla-tukor-sor csak egyszer jelenjen meg a kimeneten akkor is, ha az abban definiált fıkönyvi számla-számra több tétel lett könyvelve az említett napon!
Most a lekérdezés definíciójához az 1.16. ábra szerinti három táblát kell hozzáadni. Bár most is Szamlatukor-sorokat keresünk, nem egyedül ez a tábla képezi a lekérdezés forrását. Ugyanis annak eldöntéséhez, hogy mely számlaszámokra történt könyvelés, szükség van a könyvelt forgalomtételeket tartalmazó Fkviszla_forg táblára is. Sıt, ez is kevés, mert az, hogy mely forgalomtételeket könyvelték 2007.11.20-án, a tételekbıl nem derül ki, ugyanis csak a Bizonylatkoddal a tételhez kapcsolt Bizonylat tábla tartalmazza a Konyvelesdatumot.
1.16. ábra: A 2. feladat által használt táblák
1.17. ábra: A 2. feladat nem tökéletes megoldása
15
ACCESS GYAKORLATOK
1.18. ábra: A 2. feladat szerinti lekérdezés kimenete a megoldás javítása elıtt
Az 1.18. ábrán látható kimenet azt mutatja, hogy az 1.16-1.17. ábrákon adott megoldás nem tökéletes, mert a 384-es fıkönyvi számlaszám duplán jelenik meg benne. Az Access párbeszédes felületén ezt a töbszörözıdést megelızı rendelkezés a Lekérdezés tulajdonságai ablakban tehetı meg (lásd az 1.20. ábrán) az Egyedi értékek: Igen beállítással. Ez az ablak egy lekérdezés definiálása közben az 1.19. ábrán mutatott módon hozható elı. A lekérdezésdefiníció javítása utáni kimenet az 1.20. ábrán látható.
Tulajdonságok gomb. 1.19. ábra: A Lekérdezés tulajdonságai ablak megjelenésének kezdeményezése
Igen
1.20. ábra: A megoldás javítása: rendelkezés az ismétlıdések megszüntetésérıl
1.21. ábra: A javított megoldás kimenete
Az azonban külön magyarázatot igényel, hogy az 1.18. ábrán miért szerepel duplán a 384es számlaszám: Mint az az 1.16. ábrán látszik, a lekérdezés forrását három tábla kapcsolata
16
ACCESS GYAKORLATOK
képezi. Ilyenkor a háttérben rejtetten mindig létrejön egy olyan munkatábla, amelyben annyi oszlop van, mint a kapcsolt táblázatokban összesen, és ez a munkatábla képezi a lekérdezés tulajdonképpeni forrását. Történetesen az 1.16. ábrának megfelelı esetben a rejtett munkatáblának ilyen oszlopai lesznek: • Bizonylat.Bizonylatkod(a Bizonylat táblából vett Bizonylatkod oszlop), • Tranzakcioleiras, • Konyvelesdatum, • Bizonlyatszam, • Tetelsorszam, • Idoszakkod, • Idoszakkod, • Fkviszla_forg.Szamlatukorkod (az Fkviszla_forg táblából vett Szamlatukorkod oszlop), • Szamlaoldal, • Osszeg, • Fkviszla_forg.Bizonylatkod(az Fkviszla_forg táblából vett Bizonylatkod oszlop), • Tetelleiras, • TJ_tetelsorszam, • Kapcsolat, • Szamlatukor.Szamlatukorkod (a Szamlatukor táblából vett Szamlatukorkod oszlop), • Fkviszla_szam, • Szamla_ervkezd, • Szamla_ervvege, • Szamla_megnevezes, • Szamlatipuskod, • Gyujtoszint. Két tábla (T1, T2) összekapcsolásának alapesetében rejtetten létrejövı T1-T2 kapcsolat munkatábla tartalmát az 1.22. ábra mutatja. T1
T1-T2 összekapcsolása (Munkatábla – 1-es illesztéstípus mellett)
T2 A
B
B
C
T1.A
T1.B
T2.B
T2.C
a1
b9
b1
c3
a3
b1
b1
c3
a3
b1
b2
c2
a4
b2
b2
c2
a4
b2
b3
c5
a7
b1
b1
c3
a7
b1
b4
c1
a8
b1
b1
c3
a8
b1
a9
b9
1.22. ábra: A T1 és a T2 táblák összekapcsolásának alapesetében (1-es illesztéstípus) elıálló munkatábla
17
ACCESS GYAKORLATOK
Mint az az 1.22. ábrán látszik, a munkatábla sorainak képzésében a forrástábláknak csak azon sorai vettek részt, amelyeknek (a T1.B=T2.B kapcsolófeltételt kielégítıen) van párja a másik forrástáblában. Történetesen a T1, és a T2 táblák fehér hátterő soraiból nem képzıdik sor a munkatáblában. – Immár azt is elárulhatjuk, hogy az 1.18. ábrán éppen azért szerepel duplán a 384-es számlaszám, amiért az 1.22. ábrán a T2. tábla elsı sora többször is megjelenik a T1-T2 munkatáblában: mert a 384-es számlaszámot az Fkviszla_forg táblában több (esetünkben kettı) forgalomtétel is hivatkozza. Itt az ideje arról is szólni, hogy az T1 és T2 táblák 1.22. ábra szerinti összekapcsolási módja csak az egyik lehetıség. Az Accessben az 1.26. ábrán mutatott háromféle illesztéstípusnak megfelelı összekapcsolási módból választhatunk. Azok közül az 1.22. ábra példája az 1-es illesztéstípusnak felel meg. T1-T2 összekapcsolása 2-es illesztéstípus mellett
T1-T2 összekapcsolása 3-as illesztéstípus mellett
T1.A
T1.B
T2.B
T2.C
T1.A
T1.B
T2.B
T2.C
a1
b9
---
---
a3
b1
b1
c3
a3
b1
b1
c3
a4
b2
b2
c2
a4
b2
b2
c2
a7
b1
b1
c3
a7
b1
b1
c3
a8
b1
b1
c3
a8
b1
b1
c3
---
---
b3
c5
a9
b9
---
---
---
---
b4
c1
1.23. ábra: A T1 és a T2 táblák összekapcsolása 2-es, illetve 3-as illesztéstípus esetében
A T1 és T2 táblák 2-es illesztéstípusú összekapcsolása (1.23. ábra bal oldala) abban különbözik az 1-estıl, hogy az eredménytábla az a 1.22. ábrán (a munkatáblában) mutatott sorokon felül a T1. tábla azon sorait is tartalmazza, amelyeknek nincs (a T1.B=T2.B kapcsolófeltételt kielégítı) párja a T2-ben (tehát a T1 tábla fehér hátterő sorait is). A munkatábla ilyen soraiban a T2-bıl származó oszlopok üresek (NULL értékőek). Ezen sorokat kiválasztó feltétel lehet pl.: T2.B Is Null). A T1 és T2 táblák 3-as illesztéstípusú összekapcsolása (1.23. ábra jobb oldala) abban különbözik az 1-estıl, hogy az eredménytábla az a 1.22. ábrán (a munkatáblában) mutatott sorokon felül a T2. tábla azon sorait is tartalmazza, amelyeknek nincs (a T1.B=T2.B kapcsolófeltételt kielégítı) párja a T1-ben (tehát a T2 tábla fehér hátterő sorait is). A munkatábla ilyen soraiban a T1-bıl származó oszlopok üresek (NULL értékőek). Ezen sorokat kiválasztó feltétel lehet pl.: T1.A Is Null). Most visszatérünk a 2. feladathoz, és megnézzük hogyan oldható meg ez a feladat, ha a lekérdezı felületre nem vesszük fel (vagy onnan töröljük) a táblák közötti kapcsolatokat. Amikor a lekérdezés definíciójához hozzáadjuk a 1.16. ábra szerinti három táblát, akkor azok az adatbázisdefinícióban adott kapcsolataikkal (lásd az 1.5. ábrát) együtt lesznek a lekérdezésdefiníció részei. Ez azért lényeges, mert minden ilyen kapcsolat egyenértékő egy kapcsolófeltétellel. Ha ezek a kapcsolatok nem lennének jelen a 1.16. ábra szerinti felületen, akkor azokat két további feltétellel kellene pótolni. Ez ki is próbálható, mert az említett kapcsolatokat el lehet távolítani: a jobb egérgombbal a kapcsolatra kattintás után elıugró
18
ACCESS GYAKORLATOK
menübıl a Törlés parancsot kell választani. A1.24. ábra mutatja azokat a plusz feltételeket, amelyek a hiányzó kapcsolatokat pótolják.
1.24. ábra: A hiányzó kapcsolatokat pótoló két kapcsolófeltétel
Megjegyzés: A Feltétel sorban a táblaneveket és a mezıneveket azért kellett szögletes zárójelek közé tenni (pl. [Bizonylat].[Bizonylatkod]), mert ellenkezıleg ezeket az Access nem adat nevének (nem tábla és nem oszlop nevének), hanem közvetlenül (szöveg típusú) adatértéknek tekintené. A Mezı és a Tábla sorokra ez a szabály nem vonatkozik, mert ott az Access elsıdlegesen mezınevet, kimeneti oszlopnevet, illetve táblanevet (forrásnevet) feltételez. A Mezı sorban csak akkor kell [] jelek közé tenni egy mezı nevét, ha az nem magában áll, hanem egy kifejezés részét képezi, mint például az 1.15. ábra második oszlopában: Left([Fkviszla_szam];1). 3. feladat: Az Fkviszla_forg táblából kérdezze le a hibátlanul könyvelt tételeket; tehát azokat, amelyek utóbb sem javítva, sem törölve nem lettek!
Ez a feladat egy lényeges körülményben különbözik az elızı kettıtıl. Az 1. feladat esetében egy Szamlatukor-sort kiválasztó feltétel teljesülése magában a sorban foglalt adatok (Fkviszla_szam, Szamla_ervkezd, Szamla_ervvege) eldönthetı volt. Hasonlóan a 2. feladat esetében egy bizonylat könyvelési idıpontja a Bizonylat-sorban álló Konyvelesdatum értéke. Ezzel szemben az, hogy egy forgalomtétel utóbb törlésre / javításra szorult, csak más tétel(ek)bıl, a ráhivatkozó törlı tétel létezésébıl derülhet ki. Az említett körülmény miatt a lekérdezés egyszerre használja azt a tételt, amelyikrıl el kell döntenie, hogy hibátlan-e, és a törlı tételeket. (Ugyanis abból derül ki a tétel hibátlan volta, hogy nincs ráhivatkozó törlı tétel.) Ez úgy lehetséges, ha az Fkviszla_forg táblát két szerepben is hozzáadjuk a lekérdezés definíciójához. Ekkor az egyik szerep neve azonos a tábla nevével: Fkviszla_forg, a másik szerep neve bedik Fkviszla_forg_1 lesz. A lekérdezés definiálójának el kell döntenie, hogy a tábla melyik szerepe szolgáltatja a törlı tételeket; és melyik azokat a tételeket, amelyekrıl el kell dönteni, hogy töröltek-e vagy sem.
ACCESS GYAKORLATOK
19
Az 1.25. ábrán a kapcsolat az Fkviszla_forg tábla szerepeit képviselı dobozok egyikéhez a Tetelsorszamnál, a másikához a TJ_tetelsorszámnál tapad, azaz a törölt tételt a TJ_tetelsorszámmal ráhivatkozó (törlı/javító) tételekkel kapcsolja össze. Az is észrevehetı, hogy a kapcsolóvonal Fkviszla_forg_1 felıli vége nyílban végzıdik. Ez a látvány az illesztéstípus 1.26. ábrán látható megválasztásának eredménye. (Az illesztéstípus beállítása is részét képezi a lekérdezés definíciójának.) Az 1.25. ábra olyan szerepkiosztást definiál, amely szerint az Fkviszla_forg_1 szolgáltatja a törlı tételeket, az Fkviszla_ forg pedig azokat azokat a tételeket, amelyekrıl el kell dönteni, hogy töröltek-e vagy sem. 1.25. ábra: A 3. feladat megoldása
1.26. ábra: A 2. illesztéstípus kiválasztása
Itt is igaz a 2. feladat megoldásánál tett azon megállapítás, miszerint több forrás összekapcsolása esetén olyan munkatábla lesz a lekérdezés közvetlen forrása, amely az eredeti források mindegyikének összes oszlopát tartalmazza. Esetünkben ez a munkatábla az Fkviszla_forg tábla oszlopait duplán tartalmazza: egyszer az Fkviszla_forg szerep irányából, egyszer pedig a törlı / javító tételeket szolgáltató Fkviszla_forg_1 szerep irányából. A 2-es illesztéstípus hatása az, hogy az Fkviszla_forg szerep irányából minden tétel megjelenik az említett munkatáblában, a Fkviszla_forg_1 szerep irányából azonban csak azok a tételek, amelyeknek létezik a TJ_tetelsorszámával hivatkozott párja. – Az 1.25. ábrán látható lekérdezésdefiníció második oszlopában álló Fkviszla_forg_1.Tetelsorszam Is Null feltétel a munkatáblából éppen azokat az Fkviszla_forg-tételeket választja ki, amelyekhez nem létezik a törlı / javító tétel.
20
ACCESS GYAKORLATOK Itt látszik, hogy a 21. és a 22. sorszámú tételeket utólag (a 25-28. tételek) törülték, illetve javították.
1.27. ábra: A 3. feladat szerinti lekérdezés eredménye
A lekérdezés eredményét az 1.27. ábra mutatja. Ebben a 21. és 22. tételsorszámú tételek nincsenek jelen, de nem is kell jelen lenniük, hiszen a 25-28. tételek pont a 21. és 22. sorszámú tételeket törlik, illetve javítják; azaz a 21. és 22. sorszámú tételek hibásan voltak könyvelve. Még egy példa erejéig kitérünk a forrássorok csoportjából aggregált értékek lekérdezésének módjára is. 4. feladat: Számlaosztályonkén kérdezze le egy adott idıszak összes tartozik oldali forgalmát! A kimenet elvárt szerkezetét az 1.28. ábra mutatja.
A számlaforgalmat az Fkviszla_forg táblából lehet összegezni. Azok a tételek tartoznak azonos számlaosztályba, amelyek azonos számjeggyel kezdıdı számlaszámra lettek könyvelve. A fıkönyvi számlaszám azonban nincs jelen az Fkviszla_forg táblában, azt a Szamlatukor táblából kell venni. Tehát a (Szamlatukorkoddal összekapcsolt) Fkviszla_forg és Szamlatukor táblák adják a lekérdezés forrását. Számlaosztály
Tartozik forgalom
1.28. ábra: A 3. feladat szerinti lekérdezés elvárt kimenete
A 4. feladat megoldása az 1.29. ábrán látható. Itt a lekérdezésdefiniáló táblázat abban különbözik az elızı feladatoknál látottaktól, hogy egy Összesítés sor is van benne. Ilyen sor az Összesítés gombbal adható hozzá a táblázathoz (lásd az 1.30. ábrán); és mindig szükség van rá, amikor nem az egyes forrássorokból, hanem a forrássorok csoportjaiból képzett értékeket akarunk megjeleníteni a kimeneten. Az 1.29. ábrán a lekérdezésdefiníció elsı oszlopa a következıkrıl rendelkezik: Megjelenítendı adatot definiál (pipa a Megjelenítés kapcsolóban). A kimenı érték a fıkönyvi számlaszám elsı számjegye és az a Számlaosztály nevő oszlopban jelenik meg a kimeneten (lásd Számlaosztály: Left([Fkviszla_szam];1)). Ez adat (a számlaosztály) egyben a csoportosító ismérv (ezt jelzi a Group By az Összesítés sorban). – Tehát a kimeneten megjelenı egy-egy sor a forrássorok olyan csoportjáról készül, amelyekben az Fkviszla_szam elsı jegye azonos.
ACCESS GYAKORLATOK
21
1.29. ábra: A 4. feladat megoldása
Összesítés gomb. 1.30. ábra: Az Összesítés sor hozzáadása a lekérdezésdefiniáló táblázathoz
A második oszlop a következıkrıl rendelkezik: Megjelenítendı adatot definiál (pipa a Megjelenítés kapcsolóban). A kimenı érték az egy csoportba tartozó tételek Osszeg értékeinek összege, azaz Sum(Osszeg), és az a kimeneten a Tartozik forgalom nevő oszlopban jeleni meg. A harmadik és a negyedik oszlop nem megjelenítendı adatot, hanem szőrési feltételt definiál (nincs pipa a Megjelenítés kapcsolóban, és Where jelzés az Összesítés a sorban). A Where szó azt is jelenti, hogy a szőrési feltétel az eredeti forrássorokra vonatkozik, nem pedig a csoportokra. A harmadik oszlop értelme az Idoszakkod = [Adott idoszak] feltétel, a negyediké pedig a Szamlaoldal = 'T'. A harmadik oszlopban az [Adott idoszak] olyan paraméter neve, amelynek értékét az Access a lekérdezés futtatásakor fogja bekérni a felhasználótól az 1.31. ábra szerinti ablakban. Az Access paraméternek tekinti az olyan adatnevet, amely nem azonos a források (táblák) semelyik mezıjének (oszlopának) nevével.
22
ACCESS GYAKORLATOK A lekérdezés eredménye az 1.32. ábrán látható.
1.31. ábra: Az idıszakparaméter megadása
1.32. ábra: A 4. lekérdezés eredménye
ACCESS GYAKORLATOK
23
2. Feladatok 1. feladat Az alfeladatok a 2.1. ábrán látható négy táblára támaszkodnak. Az említett adatforrások közötti kapcsolatokat a 2.2. ábra mutatja.
2.1. ábra: Négy tábla szerkezete
Táblák értelmezése: TÁRSASÁG:
Társaságokat nyilvántartó tábla.
TÁRSASÁG TÖRTÉNET:
A társaságok alapítását, és minden olyan olyan változását, amely a jegyzett tıkéjüket vagy a tulajdonosi összetételüket (a tulajdonosok tıkerészarányát) illeti egy (új) társasági szerzıdésben kell rögzíteni. A TÁRSASÁG TÖRTÉNET tábla sorai lényegében ezeknek a társasági szerzıdéseknek a regisztrálására szolgálnak.
TULAJDONOS:
A tulajdonosok nyilvántartására szolgáló tábla.
24 TULAJDONI RÉSZ:
ACCESS GYAKORLATOK Ennek sorai azt mutatják, hogy adott tulajdonos adott társasági szerzıdés szerint hány százalékban tulajdonosa a társasági szerzıdés tárgyát képezı társaságnak.
Azon mezık (oszlopok) értelmezése, amelyeknek a jelentése nem következtethetı ki egyértelmően a nevükbıl: Egy társasági szerzıdés érvényességének kezdete. Érvkezd: Érvvége:
Egy társasági szerzıdés érvényességének vége. (A még érvényes sorok érvényességének igazi vége általában ismeretlen. Ilyenkor egy nagyon nagy dátum, 4000.12.31. áll benne.)
Tulajdonostípus:
Lehetséges értékei T vagy J. T: természetes személy, J: jogi személy.
Azonostulajdonos:
A Tulajdonoskód szerepneve. Csak olyan társaságoknál van kitöltve, amelyek azonosak valamely tulajdonossal, és ezeknél a társasággal azonos tulajdonos azonosító kódja áll benne.
2.2. ábra: A táblák kapcsolatai
1.1 Kérdezze le azokat a tulajdonosokat, amelyek azonosak valamelyik társasággal! Kimenet: a TULAJDONOS minden oszlopa és a megfelelı Társaságkód. Mely táblát vagy táblákat használja a lekérdezés?:
Ha több tábla képezi a lekérdezés adatforrását, akkor a lekérdezés definíciója a táblák között – a 2.2.ábrán adott – kapcsolatok melyikét tartalmazza, és azt milyen illesztéstípussal –
25
ACCESS GYAKORLATOK 1/2/3?):
A lekérdezést a 2.3. ábra szerinti őrlapon adja meg! Mezı: Tábla:
Tulajdonoskód TULAJDONOS
Tulajdonos neve TULAJDONOS
Azonos-kft TULAJDONOS
Rendezés Megjelenítés:
✔
✔
Feltétel:
Is Not Null
vagy:
2.3. ábra: Őrlap az 1.1 feladathoz
1.2 Kérdezze le azokat a társaságokat, amelyek adott napon tulajdonosai voltak valamelyik másik társaságnak! Az ilyen társaságok minden adata jelenjen meg a kimeneten! – A kérdéses napot az Access a lekérdezés futtatásakor kérdezze meg a felhasználótól. Mely táblát vagy táblákat használja a lekérdezés?:
TÁRSASÁG, TULAJDONI RÉSZ, TÁRSASÁG TÖRTÉNET
A felhasznált táblák – 2.2. ábrán adott – kapcsolatai közül melyiket kell biztosan törölni a lekérdezés definíciójából? Az elıbbi kapcsolatot miért kell törölni?
A TÁRSASÁG és a TÁRSASÁG TÖRTÉNET tözötti kapcsolatot.
Hogyan rendelkezik arról, hogy egy társaság akkor is csak egyszer jelenjen meg a kimeneten, ha az adott napon több másik társaságnak is tulajdonosa.
Mert az egy olyan feltételt adna a lekérdezés definíciójához, melyet – a többi feltétel egyidejő teljesítése mellett – csak olyan társaságok elégíthetnék ki, amelyek önmaguk tulajdonosai. (Ilyenek pedig nincsenek.) A „Lekérdezés tulajdonságai” ablakban Egyedi értékek: Igen beállítással.
A lekérdezés definícióját a 2.4. ábra szerinti őrlapon adja meg! Mezı: Tábla:
TÁRSASÁG.* TÁRSASÁG
Érvkezd TÁRSASÁG TÖRTÉNET
Érvvége TÁRSASÁG TÖRTÉNET
x <=[Adott nap]
>=[Adott nap]
Rendezés Megjelenítés: Feltétel:
X
vagy:
2.4. ábra: Őrlap az 1.2 feladathoz
26
ACCESS GYAKORLATOK
1.3 Oldja meg a 1.2 feladatot olyan változatban, hogy a szükséges táblák minden kapcsolatát törli a lekérdezés definíciójából! A 2.5. ábra szerinti őrlapon adja meg az 1.2-beli megoldás olyan kiegészítését (csak a kiegészítést), amely a kapcsolatok hiányában is mőködik! Kiegészítés: Mezı: Tábla:
Azonos-tulajdonos TÁRSASÁG
Szerzıdésszám TULAJDONI RÉSZ
[TULAJDONI RÉSZ]. [Tulajdonoskód]
[TÁRSASÁG TÖRTÉNET]. [Szerzıdésszám]
Rendezés Megjelenítés: Feltétel:
vagy:
2.5. ábra: Őrlap az 1.3 feladathoz
1.4 Tegyük fel, hogy az 1.2 feladat megoldását Adott napon tulajdonos társaságok névvel elmentette. Annak felhasználásával kérdezze le azokat a társaságokat, amelyek adott napon NEM voltak tulajdonosai semelyik másik társaságnak! Az ilyen társaságok minden adata jelenjen meg a kimeneten! Feltételezze, hogy a 2.6. ábrán adott kapcsolat a lekérdezés definíciójának részét képezi! Melyik illesztési változatot választja a 6. ábrán mutatottak közül?:
2.6. ábra: Illesztési tulajdonságok beállítása az 1.4 feladathoz
A lekérdezést a 2.7. ábra szerinti őrlapon adja meg! Mezı: Tábla:
KFT.* KFT
Kft-azonosító Adott napon tulajdonos kft
Rendezés Megjelenítés: Feltétel:
✔
Is Null
vagy:
2.7. ábra: Őrlap az 1.4 feladathoz
27
ACCESS GYAKORLATOK
1.5 Kérdezze le, hogy adott napon adott névvel rendelkezı tulajdonos mely társaságoknak volt tulajdonosa! Kimenet: Társaságkód és Társaság neve. – A kérdéses napot és a szóban forgó tulajdonos nevét az Access a lekérdezés futtatásakor kérdezze meg a felhasználótól. Mely táblát vagy táblákat használja a lekérdezés?:
A felhasznált táblák kapcsolatai közül melyiket kell biztosan törölni a lekérdezés definíciójából? Az elıbbi kapcsolatot miért kell törölni?
A lekérdezést a 2.8.ábra szerinti őrlapon adja meg! Mezı: Tábla:
Társaságkód TÁRSASÁG
Társaság neve TÁRSASÁG
Tulajdonos neve TULAJDONOS
Rendezés Megjelenítés:
✔
✔
Feltétel:
[Adott tulajdonosnév]
vagy:
Folytatás: Mezı: Tábla:
Érvkezd TÁRSASÁG TÖRTÉNET
Érvvége TÁRSASÁG TÖRTÉNET
<=[Adott nap]
>=[Adott nap]
Rendezés Megjelenítés: Feltétel: vagy:
2.8. ábra: Őrlap az 1.5 feladathoz
2. feladat Az alfeladatokat itt is az 1. feladat 2.1. ábráján látható négy táblára támaszkodva kell megoldani. Az említett adatforrások közötti kapcsolatokat szintén az ottani 2.2. ábra mutatja. 2.1 Kérdezze le azokat a tulajdonosokat, amelyek NEM azonosak a TÁRSASÁG táblában nyilvántartott semelyik társasággal! Kimenet: a tulajdonos minden mezıje. (Megjegyzés: Lehet olyan tulajdonos, amely ugyan társaság, de nincs benne a TÁRSASÁG táblában.) Mely táblát vagy táblákat használja a lekérdezés?: Ha több tábla képezi a lekérdezés adatforrását, akkor a lekérdezés definíciója a táblák között – a
28
ACCESS GYAKORLATOK
2.2.ábrán adott – kapcsolatok melyikét tartalmazza, és azt milyen illesztéstípussal – 1-es vagy melyik táblából minden sor?):
A lekérdezést a 2.9. ábra szerinti őrlapon adja meg! Mezı: Tábla:
Tulajdonoskód TULAJDONOS
Tulajdonos neve TULAJDONOS
Azonos-kft TULAJDONOS
Rendezés Megjelenítés:
✔
✔
Feltétel:
Is Not Null
vagy:
2.9. ábra: Őrlap a 2.1 feladathoz
2.2 Kérdezze le, hogy adott napon kik voltak a tulajdonosai egy adott névvel rendelkezı társaságnak! Kimenet: Tulajdonoskód és Tulajdonos neve. – A kérdéses napot és a szóban forgó társaság nevét az Access a lekérdezés futtatásakor kérdezze meg a felhasználótól. Mely táblát vagy táblákat használja a lekérdezés?: A felhasznált táblák kapcsolatai közül melyiket kell biztosan törölni a lekérdezés definíciójából?: A lekérdezést a 2.10. ábra szerinti őrlapon adja meg! Mezı: Tábla:
Tulajdonoskód TULAJDONOS
Tulajdonos neve TULAJDONOS
Kft neve KFT
Rendezés Megjelenítés:
✔
✔
Feltétel:
[Adott kft-név]
vagy:
Folytatás: Mezı: Tábla:
Érvkezd KFT TÖRTÉNET
Érvvége KFT TÖRTÉNET
<=[Adott nap]
>=[Adott nap]
Rendezés Megjelenítés: Feltétel: vagy:
2.10. ábra: Őrlap a 2.2 feladathoz
2.3 Kérdezze le azokat a társaságokat, amelyek adott napot megelızıen megszőntek! Kimenet: csak a Társaságkód. – A kérdéses napot az Access a lekérdezés futtatásakor kérdezze meg a
29
ACCESS GYAKORLATOK
felhasználótól. Használja ki, hogy egy megszőnt társaság megszőnésének dátuma a hozzátartozó TÁRSASÁG TÖRTÉNET sorokból vett Érvvége értékek maximumával azonos! Mely táblát vagy táblákat használja a lekérdezés?:
A lekérdezést a 2.11. ábra szerinti őrlapon adja meg! Mezı: Tábla: Összesítés:
Kft-azonosító KFT Group By
Érvvége KFT TÖRTÉNET Max
Rendezés Megjelenítés:
✔
✔
Feltétel:
✔
<=[Adott nap]
vagy:
2.11. ábra: Őrlap a 2.3 feladathoz
2.4 Definiáljon egy olyan lekérdezést, amelynek a kimenete: Társaságkód, Társaság neve, Alapítás dátuma és a Megszőnés dátuma. A kimeneten csak azok a társaságok jelenjenek meg, amelyek aktuálisan (2010.01.21-én) már megszőntek. Használja ki, hogy egy társaság alapításának dátuma a hozzátartozó TÁRSASÁG TÖRTÉNET sorokból vett Érvkezd értékek minimumával azonos, illetve egy megszőnt társaság megszőnésének dátuma a hozzátartozó TÁRSASÁG TÖRTÉNET sorokból vett Érvvége értékek maximumával azonos. Mely táblát vagy táblákat használja a lekérdezés?: A lekérdezést a 2.12. ábra szerinti őrlapon adja meg! Mezı: Tábla: Összesítés:
Kft-azonosító KFT Group By
Kft neve: Kft neve KFT Max
Rendezés Megjelenítés:
✔
✔
Feltétel: vagy:
Folytatás: Mezı: Tábla: Összesítés:
Alapítás dátuma:Érvkezd KFT TÖRTÉNET Min
Megszőnés dátuma:Érvvége KFT TÖRTÉNET Max
Rendezés Megjelenítés: Feltétel:
✔
✔
<=#4000.12.31.#
vagy:
2.12. ábra: Őrlap a 2.4 feladathoz
30
ACCESS GYAKORLATOK
3. feladat Az alfeladatok az alábbi adatbázisrészletet használják:
2.13. ábra: Felhasználható táblák és a kapcsolataik
Megjegyzés: Ha az alfeladatoknál a lekérdezésdefiniáló felületek valamely rovatába nem fér el az oda vonatkozó megoldás szövege, akkor oda csak hivatkozást tegyen, és a megoldást a hivatkozással megjelölve pótlapon adja meg! 3.1 ACCESS-ben kérdezze le azokat a projekteket, amelyek Adott kezdet és Adott vége dátumokkal adott idıszakban legalább egy napon használnak egy adott erıforrást (paraméter: Adott erıforrásnév). Kimenet: Projektkód, Projektnév. – A megoldást a 2.14. ábra szerinti felületen adja meg! (Használja ki, hogy a kapcsolati ábra szerinti kapcsolatok mind adottak, méghozzá 1-es illesztési móddal!)
ACCESS GYAKORLATOK
31
2.14. ábra: Lekérdezésdefiniáló felület a 3.1. feladathoz
3.2 Az elızı feladat megoldását milyen feltétellel kell kiegészíteni, ha a kapcsolati ábráról eltávolítja a TEVÉKENYSÉGHEZ RENDELT ERİFORRÁS és az ERİFORRÁS között adott kapcsolatot?
2.15. ábra: Lekérdezésdefiniáló felület a 3.2. feladathoz
32
ACCESS GYAKORLATOK
2.16. ábra: Lekérdezés tulajdonságai ablak
A lekérdezés kimenetének finomításához kell-e használni a 16. ábra szerinti ablakot (igen/nem) Igen. Indokolja meg a fenti válaszát! Az „Egyedi értékek” paramétert Igen-re kell módosítani. Ellenkezıleg az egyes projektek feleslegesen annyiszor jelennek meg a kimeneten, ahány különbözı tevékenységük használja az adott erıforrást az adott idıszakban.
3.3 Kérdezze le, hogy adott projektben (paraméter: Adott projektnév) adott napon (paraméter: Adott nap) mely munkavégzı erıforrások túlterheltek. Kimenet: Erıforráskód, Erıforrás neve, Kapacitás, Terhelés. – A megoldást a 2.17. ábra szerinti felületen adja meg! (Használja ki, hogy a lekérdezésben érintett összes tábla összes olyan kapcsolata adott, amely a 2.13. ábrán is látható, méghozzá 1-es illesztési móddal!) Munkavégzı erıforrások a munkaerı vagy az eszközök, a túlterhelés csak ezekre értelmezhetı, az anyagokra nem. A munkavégzı erıforrásokat az Erıforrástípuskód 1-es értéke különbözteti meg. Egy erıforrás egy adott projekten belül és adott napon akkor számít túlterheltnek, ha az adott napon folyamatban lévı tevékenységeknek az erıforrásra vonatkozó együttes erıforrásigénye (=Terhelés) nagyobb, mint az erıforrásnak az adott projekthez rendelt kapacitása. – Feltételezheti, hogy a [PROJEKTHEZ RENDELT ERİFORRÁS].Kapacitás mennyiség mindig ugyanolyan mértékegységben adott, mint a [TEVÉKENYSÉGHEZ RENDELT ERİFORRÁS].Erıforrásigény mennyiség.
ACCESS GYAKORLATOK
2.17. ábra: Lekérdezésdefiniáló felület a 3.3. feladathoz
33
34
ACCESS GYAKORLATOK
3.4 Kérdezze le, hogy adott projektben (paraméter: Adott projektnév) az egyes tevékenységeknek mennyi az összesített anyagköltsége! Kimenet: Tevékenységkód, Tevékenység neve, Anyagköltség. – A megoldást a 2.18. ábra szerinti felületen adja meg! (Használja ki, hogy a lekérdezésben érintett összes tábla összes olyan kapcsolata adott, amely a 2.13. ábrán is látható, méghozzá 1-es illesztési móddal!) Azok az erıforrások számítanak anyagnak, amelyeknek az Erıforrástípuskódja 2-es. Az anyagoknál a Standard fajlagos költség mutatja az arra a mértékegységre esı anyagköltséget, amelyet a Vetítési mértékegység kódja azonosít. Feltételezheti, hogy az ilyen anyagjellegő erıforrásokból az egyes tevékenységek Erıforrásigény jellemzıje szintén a Vetítési mértékegység kódjával azonosít mértékegységben van adva, azaz egyfajta anyagból az anyagköltség mennyiségarányos része a [Standard fajlagos költség] * Erıforrásigény szorzással áll elı. Ehhez azonban még hozzá kell adni a nem mennyiségarányos Használatonkénti költséget is, azaz adott tevékenységnél egyfajta anyagból a teljes anyagköltség: [Standard fajlagos költség] * Erıforrásigény + [Használatonkénti költség]
Azonban egy tevékenységhez többfajta anyagot is felhasználhatnak, és a lekérdezésnek tevékenységenként ezek összes költségét kell meghatározni.
2.18. ábra: Lekérdezésdefiniáló felület a 3.4. feladathoz
ACCESS GYAKORLATOK
35
4. feladat Az alfeladatokat itt is a 3. feladat 2.13. ábráján látható táblákra és kapcsolatokra támaszkodva kell megoldani! 4.1 ACCESS-ben kérdezze le azokat a projekteket, amelyek Adott kezdet és Adott vége dátumokkal adott idıszakban végig használnak egy adott erıforrást (paraméter: Adott erıforrásnév). Kimenet: Projektkód, Projektnév, Tevékenység neve. – A megoldást a 2.19. ábra szerinti felületen adja meg! (Használja ki, hogy a kapcsolati ábra szerinti kapcsolatok mind adottak, méghozzá 1-es illesztési móddal!)
2.19. ábra: Lekérdezésdefiniáló felület a 4.1. feladathoz
36
ACCESS GYAKORLATOK
4.2 Az elızı feladat megoldását milyen feltétellel kell kiegészíteni, ha a kapcsolati ábráról eltávolítja a TEVÉKENYSÉG és az PROJEKT között adott kapcsolatot?
2.20. ábra: Lekérdezésdefiniáló felület a 4.2. feladathoz
4.3 Kérdezze le, hogy adott projektben (paraméter: Adott projektnév) az egyes anyagok felhasználásából anyagonként összesen mekkora költség adódott! Kimenet: Anyagkód, Anyag neve, Anyagköltség. – A megoldást a 2.21. ábra szerinti felületen adja meg! (Használja ki, hogy a lekérdezésben érintett összes tábla összes olyan kapcsolata adott, amely a 3. feladat 2.13. ábráján is látható, méghozzá 1-es illesztési móddal!) Az anyagok az erıforrások egyik típusát képezik. Azok az erıforrások számítanak anyagnak, amelyeknek az Erıforrástípuskódja 2-es. Az anyagoknál a Standard fajlagos költség mutatja az arra a mértékegységre esı anyagköltséget, amelyet a Vetítési mértékegység kódja azonosít. Feltételezheti, hogy az ilyen anyagjellegő erıforrásokból az egyes tevékenységek Erıforrásigény jellemzıje szintén a Vetítési mértékegység kódjával azonosít mértékegységben van adva, azaz egyfajta anyagból egy bizonyos tevékenységnél való felhasználás miatt adódó anyagköltség mennyiségarányos része a [Standard fajlagos költség] * Erıforrásigény szorzással áll elı. Ehhez azonban még hozzá kell adni a nem mennyiségarányos Használatonkénti költséget is, azaz adott tevékenységnél egyfajta anyagból a teljes anyagköltség: [Standard fajlagos költség] * Erıforrásigény + [Használatonkénti költség]
Azonban egy anyagot több tevékenység végrehajtása során is felhasználhatnak, és a lekérdezésnek anyagonként az ezekbıl adódó összes költséget kell meghatározni. Mely táblákat érinti ez a lekérdezés és miért? Tábla Indoklás PROJEKT Mert a projektet a neve alapján kell kiválasztani, és a projektnév csak ebben a táblában szerepel.
TEVÉKENYSÉG
Mert az anyagok (erıforrások) tevékenységenkénti felhasználása csak ennek segítségével kapcsolható a megfelelı projekthez.
ACCESS GYAKORLATOK ERİFORRÁS
TEVÉKENYSÉGHEZ RENDELT ERİFORRÁS
37
Mert innen állapítható meg, hogy az erıforrás milyen típusú, és innen vehetık az Anyagkód, Anyag neve a Standard fajlagos költség és a Használatonkénti költség adatok. Mert innen vehetı az Erıforrásigény adat.
2.21. ábra: Lekérdezésdefiniáló felület a 4.3. feladathoz
4.4 Kérdezze le, hogy adott projektben (paraméter: Adott projektnév) az egyes tevékenységeknek mennyi az összesített mőveleti költsége! Kimenet: Tevékenységkód, Tevékenység neve, Mőveleti költség. – A megoldást a 2.22. ábra szerinti felületen adja meg! (Használja ki, hogy a lekérdezésben érintett összes tábla összes olyan kapcsolata adott, amely a 3. feladat 2.13. ábráján is látható, méghozzá 1-es illesztési móddal!)
38
ACCESS GYAKORLATOK
Egy tevékenység mőveleti költségei abból adódnak, hogy a tevékenység valamilyen munkavégzı erıforrásokat (munkaerıt vagy az eszközöket) használ. Azok az erıforrások számítanak munkavégzı erıforrás, amelyeknek az Erıforrástípuskódja 1-es. Az ilyen erıforrásoknál a Standard fajlagos költség és a Túlmunka fajlagos költsége mutatja az arra az idıegységre esı erıforrásköltséget normál munkaidıben, illetve túlórában, amelyet a Vetítési mértékegység kódja azonosít. Feltételezheti, hogy az ilyen erıforrásokból az egyes tevékenységek Erıforrásigény, illetve Erıforrásigény túlmunkában jellemzıi szintén a Vetítési mértékegység kódjával azonosít mértékegységben vannak adva, azaz egyfajta anyagból a mőveleti költség idıarányos része a [Standard fajlagos költség] * Erıforrásigény + [Túlmunka fajlagos költsége] * [Erıforrásigény túlmunkában]
képlettel áll elı. Ehhez azonban még hozzá kell adni a nem idıarányos Használatonkénti költséget is, azaz adott tevékenységnél egyfajta erıforrásból a teljes mőveleti költség: [Standard fajlagos költség] * Erıforrásigény + [Túlmunka fajlagos költsége] * [Erıforrásigény túlmunkában] + [Használatonkénti költség]
Azonban egy tevékenységhez többfajta erıforrás is felhasználhatnak, és a lekérdezésnek tevékenységenként ezek összes költségét kell meghatározni.
2.22. ábra: Lekérdezésdefiniáló felület a 4.4. feladathoz
ACCESS GYAKORLATOK
39
5. feladat Az alfeladatok az alábbi kapcsolatokat és táblákat tartalmazó adatbázisrészletet használják:
2.23. ábra: Táblakapcsolatok
2.24. ábra: Táblák szerkezete Táblák értelmezése: Bizonylat:
A könyvelt forgalomtételek forrásbizonylatait tartalmazó táblázat.
Fkviszla_forg:
A könyvelt fıkönyvi számla-forgalomtételeket tartalmazó táblázat. Több mérlegidıszak tételeit tartalmazza (lásd Idoszakkod).
40
ACCESS GYAKORLATOK
Szamlatukor:
A használható fıkönyvi számlaszámokat tartalmazó (és definiáló) történeti táblázat. A történetiség abban áll, hogy nemcsak az aktuálisan használható számlaszámokat mutatja, hanem azokat is, amelyek ma már érvénytelenek, de pl. 5 évvel ezelıtt érvényesek voltak. A 2.23. ábrán egy Szamlatukor_1 nevő doboz is szerepel. Ez nem egy további táblát jelent, hanem csak a Szamlatukor tábla egy plusz szerepét képviseli. (Ugyanis a Szamlatukor tábla két szerepben is fölérendeltje a Gyujtoleiro táblának.)
Szamlatipus
A lehetséges számlatípusokat tartalmazó táblázat. Alaphelyzetben két sora van: egyik az eszköz jellegő, a másik pedig a forrás jellegő számlatípust képviseli.
Gyujtoleiro:
Azt leíró szabályokat tárol, hogy milyen győjtıszámlákra mely alszámlákról kell a forgalmat győjteni (pontosabban egyenlegezni). Ez is történeti táblázat: Nemcsak az aktuálisan érvényes szabályokat mutatja.
Mezık (oszlopok) értelmezése: Szamlatukorkod
A Szamlatukor-sor azonosítója
Fkviszla_szam:
Fıkönyvi számlaszám
Szamla_ervkezd:
Számladefinició (Szamlatukor-sor) érvényességének kezdete.
Szamla_ervvege:
Számladefinició (Szamlatukor-sor) érvényességének vége. (A még érvényes sorok érvényességének igazi vége általában ismeretlen. Ilyenkor egy nagyon nagy dátum, 4000.12.31. áll benne.)
Szamla_megnevezes: Fıkönyvi számla neve (az adott érvényességgel) Szamlatipuskod:
A Szamlatipus-sor azonosítója
Gyujtoszint:
Igen/Nem, Igaz/Hamis kapcsoló a Szamlatukor-sorban. A kikapcsolt állapota könyvelési számlaszámot jelez, a bekapcsolt állapota viszont győjtı számlaszámot.
Bizonylatkod:
A bizonylat adatbázison belüli azonosítója.
Konyvelesdatum:
A bizonylat könyvelési dátuma, egyben a bizonylatról keletkezett összes forgalomtétel könyvelési dátuma.
Tetelsorszam:
A könyvelt fıkönyvi számla-forgalomtétel azonosítója.
Idoszakkod:
Annak a mérlegidıszaknak a kódja, amelyre a forgalomtétel könyvelve lett.
Szamlaoldal:
Értékei: T = tartozik; K = követel.
Osszeg:
Könyvelt forgalomérték (forintban)
TJ_tetelsorszam:
Csak törlı vagy javító tételben van kitöltve, és az azzal törölt vagy javított forgalomtétel azonosítóját tartalmazza.
Kapcsolat:
Mint az Fkviszla_forg tábla egyik oszlopa szintén csak törlı vagy javító tételben van kitöltve. Értékei: T = törlés; J = javítás.
Gyujtoszla_tkod:
A győjtıszámlaszámot tartalmazó Szamlatukor-sor azonosítója.
ACCESS GYAKORLATOK Alszamla_tkod:
41
Az alszámlaszámot tartalmazó Szamlatukor-sor azonosítója.
Gyujtohoz_ervkezd: A Gyujtoleiro-sorban adott szabály érvényességének kezdete Gyujtohoz_ervvege: A Gyujtoleiro-sorban adott szabály érvényességének vége. (A
még érvényes sorok érvényességének igazi vége általában ismeretlen. Ilyenkor egy nagyon nagy dátum, 4000.12.31. áll benne.) Tartozik_elojel
Az adott számlatípus tartozik oldali forgalmának elıjele. A pozitív elıjel: 1, a negatív elıjel: –1. (A követel oldal elıjele ezzel ellentétes: -Tartozik_elojel.)
5.1 ACCESS-ben le kell kérdezni egy adott idıszak számlaosztályonként összesített tartozik forgalom étékeit! (Az adott idıszak egy futási idıben megadható paraméter.) Kimenet: Számlaosztály
Tartozik forgalom
Mely táblákat használja fel a lekérdezés forrásaként?:
A lekérdezés definíciójának részeként felhasználja-e táblák között a 23. ábra szerint adott kapcsolat(ok)at (Igen/Nem)?: Ha igen, akkor milyen illesztéstípussal (1/2/3)?: Az alábbi rácsban adja meg a lekérdezés definícióját! (A lapméret miatt a rács több sorba tördelve a következı oldalon is folytatódik. – Az elıbbi kérdésekre adott válaszoktól is függ, hogy mindegyik oszlopot fel kell-e használni.) Mezı: Tábla: Összesítés: Rendezés: Megjelenés: Feltétel:
42
ACCESS GYAKORLATOK
Folytatás: Mezı: Tábla: Összesítés: Rendezés: Megjelenés: Feltétel:
Mezı: Tábla: Összesítés: Rendezés: Megjelenés: Feltétel:
5.2 ACCESS-ben kérdezze le azokat a számlaosztályokat, amelyekhez találhatók adott idıszaki forgalomtételek az Fkviszla_forg táblában! (Az adott idıszak egy futási idıben megadható paraméter.) Kimenet: Számlaosztály Számlatípuskód (Feltételezheti, hogy egy adott számlaosztályba tartozó minden fıkönyvi számla számlatípuskódja azonos.) Mely táblákat használja fel a lekérdezés forrásaként?:
A lekérdezés definíciójának részeként felhasználja-e táblák között a 23. ábra szerint adott kapcsolat(ok)at (Igen/Nem)?: Ha igen, akkor milyen illesztéstípussal (1/2/3)?: Az alábbi rácsban adja meg a lekérdezés definícióját! (A lapméret miatt a rács több sorba van tördelve. – Az elıbbi kérdésekre adott válaszoktól is függ, hogy mindegyik oszlopot fel kell-e használni.)
43
ACCESS GYAKORLATOK
Mezı: Tábla: Összesítés: Rendezés: Megjelenés: Feltétel:
Mezı: Tábla: Összesítés: Rendezés: Megjelenés: Feltétel:
5.3 Tegyük fel, hogy az 5.1. lekérdezést T névvel, az 5.2. lekérdezést pedig L névvel mentette el; továbbá elkészítette az 5.1. lekérdezésnek azt a párját, amely egy adott idıszak számlaosztályonként összesített követel forgalom étékeit adja vissza, és ezt K névvel mentette el. A felsoroltak felhasználásával állítsa elı az adott idıszaki számlaosztályonkénti egyenlegeket! Kimenet: Számlaosztály Egyenleg A lekérdezései forrásait és a köztük fennálló kapcsolatokat a 2.25. ábra mutatja. Mind az L-T kapcsolat, mind az L-K kapcsolat illesztéstípusa 2-es. (Az említettekbıl az L-T kapcsolat illesztési tulajdonságait mutató ablak is látszik a 2.26. ábrán.)
2.25. ábra
44
ACCESS GYAKORLATOK
2.26. ábra Elsı közelítésben: Egyenleg = ([T].[Tartozik forgalom] – [K].[Követel forgalom]) * [Tartozik_elojel], ahol a Tartozik forgalom is és a Követel forgalom is ugyanazon Számlaosztály forgalma, továbbá az alkalmazandó Tartozik_elojel értéket pedig a közös Számlaosztályhoz tartozó Szamlatipuskod határozza meg. Ez a képlet azonban csak akkor mőködik korrektül, ha a Tben és a K-ban ugyanazok a számlaosztályok vannak jelen. Ez azonban nem igaz, hiszen lehet olyan számlaosztály, amelyeknek csak tartozik forgalma van, ezért az csak a T-ben van jelen; hasonlóan lehet olyan számlaosztály, amelynek csak követel forgalma van, ezért az csak a Kban van jelen. Tehát a T és a K források közvetlen összekapcsolása nem járható, mert ebben a kapcsolatban csak olyan számlaosztályok szerepelnének, amelyeknek mind tartozik, mind követel forgalommal rendelkeznek. Pont ezért van szükség az L forrásra, mert az az összes olyan számlaosztályt tartalmazza, amelynek volt valamilyen forgalma az adott idıszakban. Így, ha a kimeneti Számlaosztály értéket az L-bıl vesszük, akkor a kimenet az olyan számlaosztályokat is tartalmazza, amelyek csak egyik oldali forgalomra tettek szert a kérdéses idıszakban. Ezeknél a számlaosztályoknál azonban még mindig gond, hogy esetükben a fenti képlet az alábbi kezelhetetlen (kiszámíthatatlan) alakban realizálódik: Egyenleg = ([T].[Tartozik forgalom] – Null) * [Tartozik_elojel] = Null (azaz üres) Egyenleg = (Null– [K].[Követel forgalom]) * [Tartozik_elojel] = Null (azaz üres) Ennek kiköszöbölésére el kell érni, hogy ilyen esetekben a Null (üres érték) 0 számértékre cserélıdjön le. Ilyen célra jól alkalmazható az Access következı két függvénye: IsNull(mezı): Igazat ad vissza, ha a mezı üres, hamisat különben. IIf(feltétel; igaz ági kimenet; hamis ági kimenet): Az igaz ági kimenet adja vissza, ha a feltétel igaz; különben a hamis ági kimenet adja vissza. Példa a fenti két függvény kombinált alkalmazására: IIf(IsNull([mezı]);0;[mezı]) A fenti kifejezés 0 értéket ad vissza, ha a mezı üres, egyébként a mezı értékét adja vissza. A következı rácsban adja meg a lekérdezés definícióját! (A lapméret miatt a rács több sorba van tördelve.)
ACCESS GYAKORLATOK
45
Mezı: Tábla: Rendezés: Megjelenés: Feltétel:
M:
Egyenleg: (IIf(IsNull( [Tartozik forgalom]);0; [Tartozik forgalom]) IIf(IsNull([Kovetel forgalom]);0; [Kovetel forgalom])) * [Tartozik_elojel]
T: R: M: F:
A megoldásban hol használja ki, hogy az L-K kapcsolat illesztéstípusa 2-es?:
46
ACCESS GYAKORLATOK
3. Megoldások 1. feladat 1.1 Mely táblát vagy táblákat használja a lekérdezés?: Ha több tábla képezi a lekérdezés adatforrását, akkor a lekérdezés definíciója a táblák között – a 2.ábrán adott – kapcsolatok melyiket tartalmazza, és azt milyen illesztéstípussal – 1/2/3?): Mezı: Tábla: Rendezés Megjelenítés:
TULAJDONOS.* TULAJDONOS
TULAJDONOS, TÁRSASÁG 1
Társaságkód TÁRSASÁG
Feltétel: vagy:
Elfogadható a következı változat is: Mezı: Tábla: Rendezés Megjelenítés:
TULAJDONOS.* TULAJDONOS
Társaságkód TÁRSASÁG
Feltétel: vagy:
Azonos-tulajdonos TÁRSASÁG
Tulajdonoskód
1.2 Mely táblát vagy táblákat használja a lekérdezés?:
A felhasznált táblák – 2.2. ábrán adott – kapcsolatai közül melyiket kell biztosan törölni a lekérdezés definíciójából? Az elıbbi kapcsolatot miért kell törölni?
Hogyan rendelkezik arról, hogy egy társaság akkor is csak egyszer jelenjen meg a kimeneten, ha az adott napon több másik társaságnak is tulajdonosa.
TÁRSASÁG, TULAJDONI RÉSZ TÁRSASÁG TÖRTÉNET A TÁRSASÁG és a TÁRSASÁG TÖRTÉNET közötti kapcsolatot. Mert az egy olyan feltételt adna a lekérdezés definíciójához, melyet – a többi feltétel egyidejő teljesítése mellett – csak olyan társaságok elégíthetnék ki, amelyek önmaguk tulajdonosai. (Ilyenek pedig nincsenek.) A „Lekérdezés tulajdonságai” ablakban Egyedi értékek: Igen beállítással.
47
ACCESS GYAKORLATOK
Mezı: Tábla: Rendezés Megjelenítés:
Érvkezd TÁRSASÁG TÖRTÉNET
TÁRSASÁG.* TÁRSASÁG
Érvvége TÁRSASÁG TÖRTÉNET
✔
Feltétel: vagy:
<=[Adott nap]
>=[Adott nap]
1.3 1. változat: Mezı: Tábla: Rendezés Megjelenítés: Feltétel:
Azonos-tulajdonos TÁRSASÁG
Szerzıdésszám TULAJDONI RÉSZ
[TULAJDONI RÉSZ]. [Tulajdonoskód]
[TÁRSASÁG TÖRTÉNET]. [Szerzıdésszám]
Tulajdonoskód TULAJDONI RÉSZ
Szerzıdésszám TULAJDONI RÉSZ
[TÁRSASÁG]. [Azonos-tulajdonos]
[TÁRSASÁG TÖRTÉNET]. [Szerzıdésszám]
Azonos-tulajdonos TÁRSASÁG
Szerzıdésszám TÁRSASÁG TÖRTÉNET
[TULAJDONI RÉSZ]. [Tulajdonoskód]
[TULAJDONI RÉSZ]. [Szerzıdésszám]
vagy:
2. változat: Mezı: Tábla: Rendezés Megjelenítés: Feltétel: vagy:
3. változat: Mezı: Tábla: Rendezés Megjelenítés: Feltétel: vagy:
Az oszlopok mindhárom változatban felcserélhetık.
1.4 Melyik illesztési változatot választja a 2.6. ábrán mutatottak közül?:
3 Helyette állhat itt még: Társaság neve, Társaság címe vagy Társasági forma.
Mezı: Tábla: Rendezés Megjelenítés: Feltétel: vagy:
TÁRSASÁG.* TÁRSASÁG
Társaságkód Adott napon tulajdonos társaságok
Is Null
48
ACCESS GYAKORLATOK
1.5 Mely táblát vagy táblákat használja a lekérdezés?: A felhasznált táblák kapcsolatai közül melyiket kell biztosan törölni a lekérdezés definíciójából? Az elıbbi kapcsolatot miért kell törölni?
Mezı: Tábla: Rendezés Megjelenítés:
Társaságkód TÁRSASÁG
Mindegyik táblát. A TÁRSASÁG és a TULAJDONOS közötti kapcsolatot. Mert az egy olyan feltételt adna a lekérdezés definíciójához, melyet – a többi feltétel egyidejő teljesítése mellett – csak olyan társaságok elégíthetnék ki, amelyek azonosak az adott tulajdonossal, azaz önmaguk tulajdonosai. (Ilyenek pedig nincsenek.)
Társaság neve TÁRSASÁG
Tulajdonos neve TULAJDONOS
Feltétel: vagy:
[Adott név]
Folytatás: Mezı: Tábla: Rendezés Megjelenítés: Feltétel: vagy:
Érvkezd TÁRSASÁG TÖRTÉNET
Érvvége TÁRSASÁG TÖRTÉNET
<=[Adott nap]
>=[Adott nap]
2. feladat 2.1 Mely táblát vagy táblákat használja a lekérdezés?: Ha több tábla képezi a lekérdezés adatforrását, akkor a lekérdezés definíciója a táblák között – a 2.2.ábrán adott – kapcsolatok melyiket tartalmazza, és azt milyen illesztéstípussal – 1-es vagy melyik táblából minden sor?):
TULAJDONOS, TÁRSASÁG TULAJDONOS, és a TÁRSASÁG kapcsolata. Olyan illesztéstípussal, amelynél a kimenetben a TULAJDONOS tábla minden sora szerepel. Helyette állhat itt még: Társaság neve, Társaság címe vagy Társasági forma.
Mezı: Tábla: Rendezés Megjelenítés:
TULAJDONOS.* TULAJDONOS
Társaságkód TÁRSASÁG ✔
Feltétel: vagy:
Is Null
2.2 Mely táblát vagy táblákat használja a lekérdezés?: A felhasznált táblák kapcsolatai közül melyiket kell biztosan törölni a lekérdezés definíciójából?: Mezı: Tábla: Rendezés Megjelenítés: Feltétel: vagy:
Tulajdonoskód TULAJDONOS
Mindegyik táblát. A TÁRSASÁG és a TULAJDONOS közötti kapcsolatot.
Tulajdonos neve TULAJDONOS
Társaság neve TÁRSASÁG
[Adott név]
49
ACCESS GYAKORLATOK Folytatás: Mezı: Tábla: Rendezés Megjelenítés: Feltétel: vagy:
Érvkezd TÁRSASÁG TÖRTÉNET
Érvvége TÁRSASÁG TÖRTÉNET
<=[Adott nap]
>=[Adott nap]
9.3 TÁRSASÁG TÖRTÉNET
Mely táblát vagy táblákat használja a lekérdezés?: Mezı: Tábla: Összesítés: Rendezés Megjelenítés:
Társaságkód TÁRSASÁG TÖRTÉNET Group By
Érvvége TÁRSASÁG TÖRTÉNET Max ✔
Feltétel: vagy:
✔
<=[Adott nap]
2.4 Mely táblát vagy táblákat használja a lekérdezés?:
Mezı: Tábla: Összesítés: Rendezés Megjelenítés:
Társaságkód TÁRSASÁG Group By
TÁRSASÁG, TÁRSASÁG TÖRTÉNET Társaság neve TÁRSASÁG Max
Feltétel: vagy:
Folytatás: Mezı: Tábla: Összesítés: Rendezés Megjelenítés: Feltétel: vagy:
Alapítás dátuma:Érvkezd TÁRSASÁG TÖRTÉNET Min
Megszőnés dátuma:Érvvége TÁRSASÁG TÖRTÉNET Max
<=#2010.01.21.#
3. feladat 3.1
Megjegyzés: Az oszlopok sorrendje felcserélhetı, kivéve a Projektkód és a Projektnév egymáshoz viszonyított sorrendje.
50
ACCESS GYAKORLATOK
3.2 vagy
A lekérdezés kimenetének finomításához kell-e használni a 8. ábra szerinti ablakot (igen/nem) Igen. Indokolja meg a fenti válaszát! Az „Egyedi értékek” paramétert Igen-re kell módosítani. Ellenkezıleg az egyes projektek feleslegesen annyiszor jelennek meg a kimeneten, ahány különbözı tevékenységük használja az adott erıforrást az adott idıszakban.
3.3
Megjegyzés: Az oszlopok sorrendje felcserélhetı, kivéve az Erıforráskód, az Erıforrás neve, a Kapacitás és a Terhelés egymáshoz viszonyított sorrendje.
3.4
ACCESS GYAKORLATOK folytatás:
Alternatív megoldás az Anyagköltség képzésére:
Az Errıforrástípuskódra és a Projektnévre vonatkozó oszlopok egymással felcserélhetık.
4. feladat 4.1
Megjegyzés: Az oszlopok sorrendje felcserélhetı, kivéve a Projektkód, a Projektnév és a Tevékenység neve egymáshoz viszonyított sorrendje.
51
52
ACCESS GYAKORLATOK
4.2 vagy
4.3 Mely táblákat érinti ez a lekérdezés és miért? Tábla
Indoklás
PROJEKT
Mert a projektet a neve alapján kell kiválasztani, és a projektnév csak ebben a táblában szerepel.
TEVÉKENYSÉG
Mert az anyagok (erıforrások) tevékenységenkénti felhasználása csak ennek segítségével kapcsolható a megfelelı projekthez.
ERİFORRÁS
Mert innen állapítható meg, hogy az erıforrás milyen típusú, és innen vehetık az Anyagkód, Anyag neve a Standard fajlagos költség és a Használatonkénti költség adatok.
TEVÉKENYSÉGHEZ RENDELT ERİFORRÁS
Mert innen vehetı az Erıforrásigény adat.
Alternatív megoldás az Anyagköltség képzésére:
ACCESS GYAKORLATOK
53
Az Errıforrástípuskódra és a Projektnévre vonatkozó oszlopok egymással felcserélhetı.
4.4
Alternatív megoldás a Mőveleti költség képzésére:
Az Errıforrástípuskódra és a Projektnévre vonatkozó oszlopok egymással felcserélhetık.
5. feladat 5.1 Mely táblákat használja fel a lekérdezés forrásaként?: Fkviszla_forg Szamlatukor
Az is hiba, ha több táblát ad meg a vizsgázó!
A lekérdezés definíciójának részeként felhasználja-e táblák között a kapcsolati ábra szerint adott kapcsolat(ok)at (Igen/Nem)?: Igen Ha igen, akkor milyen illesztéstípussal (1/2/3)?: 1
54
ACCESS GYAKORLATOK
Mezı: Számlaosztály: Left([Fkviszla_szam];1) Tartozik forgalom: Osszeg Fkviszla_forg Tábla: Sum Összesítés: Group By Rendezés: Megjelenés: Feltétel: Mezı: Tábla: Összesítés: Rendezés:
Idoszakkod Fkviszla_forg Where
Szamlaoldal Fkviszla_forg Where
[Adott idıszak]
'T'
Megjelenés: Feltétel: Mezı: Tábla: Összesítés: Rendezés:
Szamlatukorkod Szamlatukor Where
Megjelenés: [Fkviszla_forg].[Szamlatukorkod] Feltétel: A 3-5. oszlopok sorrendje felcserélhetı. A második oszlop elsı három sorának a következı tartalmú kitöltése is korrekt
Mezı: Tábla: Összesítés:
Tartozik forgalom: Sum(Osszeg) Expression
5.2 Mely táblákat használja fel a lekérdezés forrásaként?: Fkviszla_forg Szamlatukor
Az is hiba, ha több táblát ad meg a vizsgázó!
A lekérdezés definíciójának részeként felhasználja-e táblák között a kapcsolati ábra szerint adott kapcsolat(ok)at (Igen/Nem)?: Igen. Ha igen, akkor milyen illesztéstípussal (1/2/3)?: 1
Mezı: Tábla: Összesítés Rendezés:
Számlaosztály: Left([Fkviszla_szam];1)
Szamlatipuskod
Group By
Szamlatukor Group By
Megjelenés: Feltétel: Mezı: Tábla: Összesítés Rendezés:
Idoszakkod Fkviszla_forg Where
Szamlatukorkod Szamlatukor Where
[Adott idıszak]
[Fkviszla_forg]. [Szamlatukorkod]
Megjelenés: Feltétel: A 3-4. oszlopok sorrendje felcserélhetı.
ACCESS GYAKORLATOK
55
5.3 Mezı: Tábla: Rendezés:
Számlaosztály L
Megjelenés: Feltétel:
M:
Egyenleg: (IIf(IsNull([Tartozik forgalom]);0; [Tartozik forgalom]) - IIf(IsNull([Kovetel forgalom]);0; [Kovetel forgalom])) * [Tartozik_elojel]
T: R: M: F: A 2. oszlopban a megoldás olyan változatban is helyes, ha [Tartozik forgalom] helyett [T].[Tartozik forgalom] áll; [Követel forgalom] helyett [K].[Követel forgalom] áll; [Tartozik_elojel] helyett [Szamlatipus].[Tartozik_elojel] áll. A megoldásban hol használja ki, hogy az L-K kapcsolat illesztéstípusa 2-es?: Ellenkezıleg az L-K összekapcsolásával rejtetten létrejövı munkatáblában nem lenne olyan sor, amelyben a K-ból származó oszlopok (pl. a Követel forgalom) üres, és akkor nem lenne szükség a [Kovetel forgalom] hivatkozást az IIf(IsNull([Kovetel forgalom]);0;[Kovetel forgalom]) kifejezéssel helyettesíteni.
56
ACCESS GYAKORLATOK
FELHASZNÁLT ÉS AJÁNLOTT IRODALOM
[Bártfai-2007] BÁRTFAI BARNABÁS: Access 2007 zsebkönyv. BBS-Info Kft., 2007. [Nógrádi-2006] NÓGRÁDI LÁSZLÓ: Access XP alapokon. Nógrádi PC Suli Kft., 2006.