Lekérdezések
Választó lekérdezések
Beépített függvények használata
Sok esetben felmerülhet, hogy egy-egy feladatot mennyivel könnyebben is meg lehetne oldani, ha rendelkezésünkre állna egy – a táblázatkezelőkben már megszokott – függvénykészlet, például dátum- vagy szövegfüggvények. Ezek közül jó néhány be lett építve az Access-be.
Először kiemelek néhány függvényt, röviden ismertetem a szintaktikájukat a legfontosabb paraméterekkel, majd a példafeladatokban megnézzük, hogyan is működnek a gyakorlatban. A nem kötelező paramétereket – az Access súgójához hasonlóan – szögletes zárójelek ([ és ]) közé teszem.
- Százalékformátum: e függvény egy százalékként formázott kifejezést ad vissza. A függvény felépítése: Százalékformátum (kifejezés; [pontosság]; [vezetőnulla]; [negatívzárójelben]; [ezreselválasztó]). E paraméterek közül csak a kifejezés kötelező, hiszen ezt alakítja százalék formátumúvá.
- Date(): az aktuális rendszerdátumot adja vissza.
- Year(): egy dátum típusú értékből csak az évet adja vissza.
- IIF: lényegében az Excel Ha() függvényének felel meg. Megvizsgál egy logikai kifejezést, majd attól függően, hogy a logikai kifejezés igaz vagy hamis, visszaadja a paraméterekben megadott igazrészt vagy hamisrészt.
- MID: ez megfelel az Excelből már ismert Közép függvénynek. Egy karakterláncból ad vissza karaktereket. Paraméterben kell megadni, hogy a karakterlánc hányadik karakterétől hány karaktert szeretnénk megkapni.
További, áttekintésre javasolt beépített függvények: InStr, Left, Month, Val.
OKTV 2006/2007. 2. forduló 7. feladat (Nemzeti park) C részfeladat
FeladatEbben a feladatban meg kell határoznunk, hogy a nemzeti parkok fokozottan védett területe átlagosan hány százaléka a védett területeknek. Az eredményt százalék formátumban, két tizedesjegy pontossággal kell megjeleníteni.
PéldaJavasolt megoldás:
Megoldási terv:
Maga a feladat roppant egyszerű és hasonlít a már korábban látott összesítő függvényeket használó feladatokhoz. Ami egyedül újdonság, az a százalék formátumra történő megformázás. Ehhez most a Százalékformátum nevű függvényt fogjuk használni.
Javasolt megoldás lépései:
- Készítsünk egy új lekérdezést Tervező nézetben!
- Mivel a nemzeti parkokra vonatkozó összes adat a Terület táblában található, ezért csak ezt adjuk hozzá a lekérdezéshez.
- Adjuk hozzá a lekérdezéshez a Típus mezőt! Ezt nem kell megjelenítenünk, úgyhogy vegyük ki a pipát a Megjelenítésből! Viszont csak a nemzeti parkok adataival kell számolnunk, úgyhogy a Feltétel sorába írjuk be feltételnek azt, hogy NP! Azért ezt, mert a Típus mezőben az azonosítók szerepelnek.
- A lekérdezés tényleges tartalmát egy számított mező fogja visszaadni. Kattintsunk jobb egérgombbal a következő üres Mezőbe, és lépjünk be a Kifejezésszerkesztőbe.
- Először is, nevezzük el a mezőt Átlagnak, majd gépeljünk utána egy kettőspontot (:). Ezután számoljuk ki a fokozottan védett területek és a védett területek arányát. Nincs más dolgunk, mint elosztani a FokozottMéret mezőt a VédettMéret mezővel.
- Ha ezt megtettük, akkor ezt az értéket átlagolnunk kell. Tegyük zárójelbe a két mezőt, és írjuk a zárójel elé, hogy Avg! Ezzel lényegében meghívtuk az átlag függvényt. Jelenleg ez a kifejezés szerepel a mezőnév után: Avg([Terület]![FokozottMéret]/[Terület]![VédettMéret]).
- Ezután már csak százalék formátumúra kell alakítanunk ezt a mezőt. Nyissuk ki a Függvények gyűjteményt, majd itt kattintsunk a Beépített függvényekre, és a Kifejezésértékeknél keressük meg a Százalékformátum nevű függvényt, majd kattintsunk rá duplán!! Ezzel beszúrtuk a függvényt. Most már csak fel kell töltenünk a paramétereit.
- A függvény elől töröljük ki a «Kif» szöveget a függvény paraméterlistájával együtt, csak a nyitó és csukó zárójeleket hagyjuk meg! A két zárójel közé illesszük be az átlagszámító kifejezésünket, majd tegyünk egy pontosvesszőt (;) utána, és írjunk be egy 2-t! Ezzel azt mondtuk meg a függvénynek, hogy a százalék formátumra alakítandó kifejezés két tizedesjegy hosszúságú legyen. Ha mindent jól csináltunk, akkor most ezt látjuk magunk előtt:
- Ha ezzel megvagyunk, nyomjuk meg az Ok gombot! Váltsunk át Adatlap nézetre, és nézzük meg munkánk gyümölcsét! Tervező nézetben ezt kell látnunk:
- Mentsük a lekérdezést C_átlag néven, és zárjuk be!
OKTV 2010/2011. 2. forduló 4. feladat (Űrhajók) F részfeladat
FeladatEbben a részfeladatban egy olyan lekérdezést kell készítenünk, ami évenként megadja, hogy hány küldetés volt. Annyival van megfűszerezve a dolog, hogy tudjuk azt is, hogy az aktuális évben nem volt még űrhajó indítás.
Ezen túl a lekérdezés csak azt a 17 évet adja vissza eredményül, amikor a legtöbb kilövés volt. A kilövések számát is meg kell jeleníteni, és eszerint kell csökkenő sorrendbe rendezni az adatokat.
PéldaJavasolt megoldás:
Megoldási terv:
Ez a feladat a dátum függvényekre van kihegyezve. A dolgunk rendkívül egyszerű: meg kell számolnunk, hogy évenként hány űrhajót lőttek fel annyi megszorítással, hogy az aktuális – tehát nem kézzel rögzítve az éppen aktuális évet – évben még nem volt kilövés.
Javasolt megoldás lépései:
- Hozzunk létre egy lekérdezést Tervező nézetben!
- Most csak egyetlen táblára lesz szükségünk: az Urhajokra, hiszen ez tartalmazza a kilövési éveket (Ev) valamint a Sorszam mező segítségével meg is tudjuk számolni az elindított űrhajókat.
- Adjuk hozzá a lekérdezéshez az Ev és a Sorszam mezőket! Ez utóbbit nevezzük el Darabnak, hiszen ennek segítségével fogjuk megszámolni az űrhajókat. Ha már itt vagyunk, akkor állítsuk be a Darab mezőre a csökkenő sorrendet is!
- Kattintsunk a szalagon az Összesítés gombra! Mivel évenkénti csoportosításban szeretnénk megszámolni az űrhajókat, ezért az Ev mező Összesítés sorában állítsuk be a Group by záradékot! A Darab mező összesítés sorában pedig állítsuk be a Count összesítő függvényt! Ezzel megszámoljuk, hogy az egyes években hány űrhajót lőttek fel.
- Készítsük el az évekre vonatkozó feltételt! Kattintsunk jobb egérgombbal az Ev mező Feltétel sorában, és lépjünk be a Kifejezésszerkesztőbe! Itt a Beépített függvények Dátum/idő kategóriáján belül keressük meg a Date() függvényt! Ez a függvény visszaadja nekünk az aktuális dátumot.
MegjegyzésEgész pontosan az aktuális rendszerdátumot. Tehát ha valamilyen oknál fogva rosszul van beállítva a rendszerdátum, akkor rossz dátummal fogunk dolgozni a Date() függvény használata esetén.
- Viszont nekünk nem az egész dátumra van szükségünk, hanem csak az évre. Ennek kinyerésére szolgál a Year() függvény. A Year() függvény paramétere legyen a Date() függvény (Year(Date())). Viszont ez a feltétel azt mondja jelenleg, hogy azoknak a kilövéseknek a számát adja meg, amelyeket idén hajtottak végre. Viszont tudjuk, hogy az aktuális évben nem hajtottak végre kilövést. Így az eddigi feltételünk elé be kell írni egy < (kisebb) jelet. A Kifejezésszerkesztőben most ezt látjuk:
- Nyomjunk egy Ok gombot, és ezzel be is zártuk a Kifejezésszerkesztőt. Már csak egy dolog maradt hátra. Be kell állítanunk, hogy csak azt a 17 évet jelenítse meg a lekérdezés, amelyekben a legtöbb űrhajót lőtték fel. Állítsuk be a szalagon a Visszatérés értékét 17-re! Ha mindent jól csináltunk, ezt látjuk magunk előtt:
- Mentsük el a lekérdezést F néven, és zárjuk is be!
OKTV 2006/2007. 2. forduló 7. feladat (Nemzeti park) E részfeladat
FeladatEbben a feladatban egy lekérdezés segítségével meg kell határozni, hogy hány Kicsi, Közepes és Nagy terület van. Kicsinek számít az a terület, melynek védett mérete kisebb, mint 1000 hektár, nagynak pedig az, amelynek a védett területe legalább 10000 hektár. A kettő közötti, tehát nagyobb vagy egyenlő 1000 hektár és a kisebb, mint 10000 hektár védett területtel rendelkező terület számít közepesnek.
PéldaJavasolt megoldás:
Megoldási terv:
Első lépésben meg kellene határozni, hogy mely területek melyik kategóriába esnek, majd utána megszámolni, hogy melyik kategóriába hány ilyen terület tartozik.
Javasolt megoldás lépései:
- Hozzunk létre egy lekérdezést Tervező nézetben!
- Adjuk hozzá a lekérdezéshez a Terület táblát, hiszen minden számunkra fontos adat ebben található.
- Kezdjük a – látszólag – nehezebb feladattal: határozzuk meg az egyes méretkategóriákat! Kattintsunk jobb egérgombbal a legelső Mező sorba, és nyissuk meg a Kifejezésszerkesztőt! Nevezzük el a mezőt Méretnek! A Beépített függvények közül keressük ki az IIF függvényt, és kattintsunk rá duplán, majd töröljük ki a függvény előtti «Kif» szöveget!
- Kezdjük a közepes méret meghatározásával! Kattintsunk az IIF első paraméterére, a «kifejezés»-re, majd formalizáljuk a szabály egyik részét: közepesnek számít az a terület, aminek a védett területe nagyobb vagy egyenlő, mint 1000 hektár. Ez formalizálva így néz ki: [Terület]![VédettMéret]>=1000.
- Nézzük, mit csináljon a függvény, hogy ha igaz ez az állítás. Kattintsunk az «igazrész»-re. Ha a védett terület mérete nagyobb vagy egyenlő, mint 1000 hektár, akkor egy újabb logikai vizsgálatot kell végeznünk: meg kell néznünk, hogy nagyobb, vagy egyenlő-e, mint 10000 hektár. Ha igen, akkor ki kell íratnunk, hogy Nagy, különben azt íratjuk ki, hogy Közepes. Formalizálva tehát az első (külső) IIF függvényünk igazrésze így néz ki: IIf([Terület]![VédettMéret] >= 10000; "Nagy"; "Közepes").
- Végül lássuk, mi történjen, ha hamis ez az állítás. Abban az esetben, ha az eredeti állítás hamis, tehát a védett terület mérete nem nagyobb vagy egyenlő, mint 1000 hektár, akkor kis méretű területről van szó, tehát írassuk ki azt, hogy Kicsi! Ezzel el is készült ez a mező:
- Az Ok gomb megnyomásával zárjuk be a Kifejezésszerkesztőt!
- Mivel a Méret mező szerint szeretnénk megszámolni a területeket, ezért a szalagon a Tervezés fülön kattintsunk az Összesítés gombra, és a Méret mező Összesítés sorában állítsuk be a Group by záradékot!
- Az egyes mezőket legegyszerűbben az Azonosító mező segítségével tudjuk megszámolni; adjuk hozzá a lekérdezéshez! Nevezzük el a mezőt Darabnak, majd az Összesítés sorában állítsuk be a Count összesítő függvényt!
- Váltsunk át Adatlap nézetre, és ha mindent jól csináltunk, akkor láthatjuk, hány darab kicsi, közepes és nagy védett terület van. Tervező nézetre visszaváltva ezt kell látnunk:
- Zárjuk be a lekérdezést, és mentsük E néven!
FeladatTovábbi, hasonló módon megoldható feladatok:
Vissza a tartalomjegyzékhez