Lekérdezések
Választó lekérdezések
Paraméteres lekérdezések
Az eddigi lekérdezéseknél láthattuk, hogy mindegyik egy konkrét problémát, kérdést válaszolt meg. Eddigi ismereteink alapján, ha egy emberek adatait tartalmazó adatbázisból szeretnénk kigyűjteni a budapestiek adatait, akkor a megfelelő mezők hozzáadása után a város mező feltételébe azt írnánk be, hogy Budapest, és ezzel meg is volnánk. De ha egy másik város lakóinak adataira lenne szükségünk, akkor vagy új lekérdezést készítenénk, vagy a meglévőben módosítanánk a városra vonatkozó feltételt.
A paraméteres lekérdezések használatával nem kell egy kész lekérdezést módosítani, és nem is kell sok lekérdezést gyártani ugyanarra az alapproblémára. Ilyen típusú lekérdezések esetén futtatáskor kell megadni azokat az értékeket, amelyek szűkíteni fogják a lekérdezés végeredményét. Tehát nem előre adjuk meg, hogy mi kerüljön a Feltétel sorba a QBE rácson, hanem futás közben kérjük be a felhasználótól.
Lássunk erre egy példát!
OKTV 2007/2008. 2. forduló 8. feladat (Kávé) E részfeladat
FeladatEbben a részfeladatban egy olyan paraméteres lekérdezést kell készíteni, ami minden Robusta kávéról megadja, hogy mennyi az ára Euróban a megadott napi árfolyamon. A megadandó paraméter annak a napnak a dátuma, aminek az árfolyamával számolni kell. Ha a megadott napra nincs ismert árfolyam, akkor a paraméterként megadott dátum előtti legutolsó ismert jegyzési nap Euró árfolyamát kell alkalmazni. Ezen kívül az Euróban listázott árak két tizedesjegy pontossággal és Euró pénznem formátumban kell megjeleníteni.
PéldaJavasolt megoldás:
Megoldási terv:
A feladatot érdemes most is két részre bontani. Először készítsünk egy segédlekérdezést, melyben meghatározzuk az adott napra érvényes Euró árfolyamot, majd egy másik lekérdezésben ezt felhasználva megjelenítjük a szükséges adatokat.
Javasolt megoldás lépései:
- Hozzunk létre egy lekérdezést Tervező nézetben!
- Ebben a lekérdezésben fogjuk meghatározni az adott napra érvényes Euró árfolyamot. Így a lekérdezésben csak a tArfolyam táblára lesz szükségünk.
- Vegyük fel mindhárom mezőt a lekérdezésbe (Kod, Datum, ArfolyamHUF)!
- Mivel csak Euró árfolyammal szeretnénk dolgozni, ezért a Kod mező Feltétel sorába írjuk be, hogy EUR! Viszont mivel nem szeretnénk kiíratni a Kod mező tartalmát, ezért kapcsoljuk ki a mező megjelenítését!
- Azt a napot, aminek az árfolyamával a későbbiekben számolnunk kell, a felhasználónak kell mindig megadnia. Kattintsunk a tArfolyam tábla melletti részre jobb egérgombbal, majd a legördülő menüből válasszuk ki a Paraméterek menüpontot!
- A megnyíló ablakban vegyünk fel egy új paramétert, melynek neve legyen Árfolyam_dátuma, típusa pedig Dátum/Idő. Ha ezzel megvagyok, kattintsunk az Ok gombra!
- Miután elkészítettük a paramétert, kattintsunk a Datum mező Feltétel sorába jobb egérgombbal, és válasszuk ki a Szerkesztés menüpontot! Ezzel beléptünk a Kifejezésszerkesztőbe.
- Most gondoskodunk arról, hogy ha olyan dátumot adunk meg, aminek nem ismerjük az árfolyamát, akkor a legutolsó ismert dátum árfolyamával dolgozzon a rendszer. A Kifejezéselemeknél kattintsunk a Lekérdezés1 nevű objektumra! Így a Kifejezésértékeknél megjelenik az előbb létrehozott Árfolyam_dátuma nevű paraméter. Kattintsunk erre duplán, hogy megjelenjen a szerkesztő dobozban! Most már csak annyit kell tennünk, hogy biztosítjuk a fenti feltételt; gépeljük be a paraméter elé azt, hogy <=. Most ezt kell látnunk a Kifejezésszerkesztőben:
- Ha átváltunk Adatlap nézetre, és futtatjuk a lekérdezést, láthatjuk, hogy a paraméterként megadott dátum előtti összes dátumot és árfolyamot megjeleníti a lekérdezés.
MegjegyzésHa megnézzük a tArfolyam tábla tartalmát, láthatjuk, hogy csak 2007.06.11. és 2007.07.27. között tartalmaz adatokat. Erre ügyeljünk, mikor megadjuk a dátum paramétert.
- Hogy mindig csak egyet jelenítsen meg, állítsuk a Visszatérés értékét 1-re. Ez azonban még nem lesz elég, hiszen így már csak egy rekordot ad vissza a lekérdezés, de nem azzal a dátummal, amit megadtunk neki. Hogy az ahhoz a dátumhoz tartozó rekorddal térjen vissza a lekérdezés, állítsunk be a Datum mezőre csökkenő rendezést. Erre azért van szükség, hogy meglévő dátum esetén azt adja vissza, ismeretlen dátum esetén pedig a legutolsó ismertet. Ha mindent jól csináltunk, akkor most ezt kell látnunk:
- Zárjuk be a lekérdezést, és mentsük E_robusta_segéd néven!
- Hozzunk létre egy új lekérdezést Tervező nézetben.
- A feladat csak az Euróra átváltott árakra kíváncsi, viszont minket segít a lekérdezés készítése közben még néhány plusz adat. Épp ezért adjuk hozzá a lekérdezéshez a tBabkave, a tFajta, a tSzarmazas és a tPorkoles táblákat, valamint az előbb létrehozott E_robusta_segéd lekérdezést!
- Mindenképpen szűkítenünk kell a lekérdezés eredményét a Robusta kávéra, így adjuk hozzá a lekérdezéshez a tFajtai tábla Nev mezőjét! A mezőt nevezzük el Fajtának, a feltétel sorába pedig írjuk be, hogy Robusta!
- Tegyük láthatóvá, hogy honnan származnak ezek a kávék: jelenítsük meg a tSzarmazas tábla Nev mezőjét Származás néven!
- Lássuk azt is, hogy milyen módon pörkölték ezeket a kávékat: jelenítsük meg a tPorkoles tábla Nev mezőjét Pörkölés néven!
- Utolsó lépésként pedig számítsuk ki az Euróban mért árát a kávéknak. Kattintsunk jobb egérgombbal a Pörkölés melletti üres oszlop Mező sorába, majd lépjünk be a Kifejezésszerkesztőbe! Először is nevezzük el ezt a számított mezőt EuróÁrnak, majd tegyünk utána kettőspontot (:)! Az Euróban mért árát úgy tudjuk kiszámítani a kávéknak, hogy elosztjuk a Ft-ban mért árát az aktuális napi árfolyammal. Ezt úgy tudjuk megtenni, hogy a tBabkave Ar mezőjét elosztjuk a korábban már létrehozott E_robusta_segéd lekérdezés ArfolyamHUF mezőjével.
- Zárjuk be az ablakot, és nézzük meg munkánk gyümölcsét! Minden rendben van, kivéve, hogy a rendszer nem -ban jeleníti meg az árakat, és hogy nem csak két tizedesjegy pontossággal.
- Kattintsunk a szalagon a Tulajdonságlap gombra, majd kattintsunk rá az EuróÁr mező nevére! A Tulajdonságlapon a Formátumhoz írjuk be, hogy Euró, majd nyomjunk egy Entert, és futtassuk a lekérdezést! Most már minden úgy jelenik meg, ahogy azt szerettük volna. A Tervező nézetben ezt kell látnunk:
- Mentsük a lekérdezést E_robusta néven, és zárjuk be!
FeladatTovábbi, hasonló módon megoldható feladatok:
Vissza a tartalomjegyzékhez