Vissza az előzőleg látogatott oldalra (nem elérhető funkció)Vissza a tananyag kezdőlapjára (P)Ugrás a tananyag előző oldalára (E)Ugrás a tananyag következő oldalára (V)Fogalom megjelenítés (nem elérhető funkció)Fogalmak listája (nem elérhető funkció)Oldal nyomtatása (nem elérhető funkció)Oldaltérkép megtekintése (D)Keresés az oldalon (nem elérhető funkció)Súgó megtekintése (S)

Tehetséggondozás az informatikában – Adatbázis-kezelés / Lekérdezések /Frissítő lekérdezések

Lekérdezések

Frissítő lekérdezések

Ezzel a lekérdezés típussal módosítani tudjuk a táblákban lévő rekordok tartalmát. Elkészítésének menete megegyezik a Hozzáfűző lekérdezés elkészítésével. A különbség csak annyi, hogy a lekérdezés típusát itt Frissítőre kell állítani. Ekkor a QBE rácson megjelenik a Módosítás sor.

A kép (nagyobb változata) külön ablakban is megtekinthető.52_full.jpg52. ábra: Frissítő lekérdezés tervező nézetben

Hasonlóan a hozzáfűző lekérdezéshez, itt is vegyük fel a módosítani kívánt táblákat, valamint azokat, amelyekre valamilyen feltételt kell megfogalmaznunk.

Ezután rögzítsük a módosítani kívánt mezőket, majd ezen mezők Módosítás sorába írjuk be, hogy mire szeretnénk módosítani a mezők tartalmát. Ha ezek megvannak, akkor már csak azokat a mezőket kell felvennünk, amikre valamilyen feltételt kell megfogalmaznunk. Miután felvettük őket, a Feltétel sorukba írjuk be a rájuk vonatkozó feltételeket.

OKTV 2006/2007. 2. forduló 7. feladat (Nemzeti park) B részfeladat

Feladat

Ebben a részfeladatban egy olyan frissítő lekérdezést kell készíteni, ami a Terület táblában kitölti a Típus és a TörzskönyviSzám mezőket. A feltétel, ami alapján a Típus mezőt fel kell tölteni az, hogy ha a Típus táblában található Megnevezés, mint szöveg, szerepel a Terület tábla Megnevezés mezőjében, akkor a Típus tábla ehhez tarozó Típus mezőjének értéke kerüljön a Terület tábla Típus mezőjébe.

A feladat nehézsége nem a lekérdezés típusában rejlik, hanem abban, hogy a TörzskönyviSzám mezőbe a Terület tábla Megnevezés mezőjében található szövegből csak az a szövegrész kerülhet, ami zárójelek között van. Ebből már látszik, hogy szükségünk lesz néhány beépített szövegfüggvényre is a feladat sikeres megoldásához.

Példa

Javasolt megoldás lépései:

  • Hozzunk létre egy új lekérdezést Tervező nézetben!
  • Mielőtt hozzáadnánk a lekérdezéshez a szükséges táblákat, állítsuk a lekérdezés típusát Frissítőre! Ezután adjuk hozzá a lekérdezéshez a Terület és Típus táblákat!
  • A módosítandó mezők: a Terület tábla Típus és TörzskönyviSzám mezői; vegyük ezeket fel a QBE rácsra! A feltételt, ami alapján fel kell töltenünk ezt a két mezőt, a Terület tábla Megnevezés mezőjére kell megfogalmaznunk; vegyük ezt is fel!
  • Kezdjük a feltétel megfogalmazásával! A feladat szövege szerint azt kell vizsgálnunk, hogy a Terület tábla Megnevezés mezőjében lévő szöveg tartalmazza-e a Típus tábla Megnevezés mezőjében található szöveget. Mivel nem pontos egyezést kell vizsgálnunk, hanem csak azt, hogy az egyik karakterlánc tartalmazza-e a másik karakterláncot, ezért a Like kifejezést kell használnunk. Maga a feltétel így néz ki: Like "*"+[Típus]![Megnevezés]+"*". Mivel most nem konkrét szöveget keresünk, hanem egy mező tartalmában lévő karakterláncot, ezért a Like *[Típus]![Megnevezés]* nem működik, a * karakterhez a + operátorral hozzá kell konkatenálnunk a mezőt.
  • Következő lépésként adjuk meg, hogy mire módosítsuk a Terület tábla Típus mezőjét, ha az előbb elkészített feltétel igazzá válik. A feladat azt kéri, hogy a Típus tábla Típus mezőjének tartalma kerüljön a mezőbe. Kattintsunk jobb egérgombbal a Típus mező Módosítás sorába, majd lépjünk be a Kifejezésszerkesztőbe! Itt a Típus tábla Típus mezőjére kattintsunk duplán, majd kattintsunk az Ok gombra!
  • Utolsó feladatunk, hogy a Terület tábla Megnevezés mezőjéből kiszedjük a zárójelek közötti karakterláncot, és azt szúrjuk be a TörzskönyviSzám táblába! Ennek a megoldásához szükségünk lesz a Mid és az InStr beépített szövegfüggvényekre.
  • A Mid függvény első paramétere az a karakterlánc, amiből ki akarunk nyerni egy rész karakterláncot. Ez a Terület tábla Megnevezés mezője.
  • Második paramétere annak a karakternek a sorszáma, ahonnan kezdődik a rész karakterlánc, amire szükségünk van. Mivel minden rekordban máshol van az első nyitó zárójel, ezért meg kell azt keresnünk. Erre szolgál az InStr függvény. Ennek első – kötelező – paramétere az a karakterlánc, amiben a keresést végre kell hajtani. Ez a Terület tábla Megnevezés mezője.
Megjegyzés

Igazából az első paraméterében – kezdet – lehet megadni, hogy melyik pozíciótól kezdődjön a keresés. Ez azonban nem kötelező paramétere az InStr függvénynek.

  • Az InStr függvény második – szintén kötelező – paramétere az a karakter vagy karakterlánc, amit keresünk. Jelen esetben ez a nyitó zárójel („(”) utáni első karakter. Tehát most így néz ki a megoldásunk: Mid ([Terület]![Megnevezés]; InStr([Terület]![Megnevezés]; "(")+1; )
  • A Mid függvény harmadik paramétere pedig megadja, hogy a kezdő karaktertől milyen hosszúságú karakterláncot kell visszaadnia. Ez szintén rekordonként változik, tehát ezt is ki kell számolnunk. A kiszámolásban az előzőleg használt InStr függvény lesz segítségünkre.
  • Magát a karakterlánc hosszát a következőképpen tudjuk kiszámolni:
    • Tudjuk, hogy a keresett szöveg csukó zárójellel („)”) végződik.
    • Innen kell visszafelé megszámolnunk a karakterek hosszát egészen a nyitó zárójelig („(”). Viszont maga a nyitó zárójel már nem kell, tehát a karakterlánc hossza eggyel rövidebb lesz.

Ezt a gondolatmenetet valósítjuk meg a következőkben!

  • Keressük meg a csukó zárójelet a Terület tábla Megnevezés mezőjében! Erre a megoldás: InStr([Terület]![Megnevezés];")").
  • Innen számoljunk vissza a nyitó zárójel előtti karakterig. Erre a megoldás: InStr([Terület]![Megnevezés];"(")-1.
  • Ennek a két függvénynek a különbsége adja meg a karakterlánc hosszát: InStr([Terület]![Megnevezés];")")-InStr([Terület]![Megnevezés];"(")-1
  • A fenti képlet lesz a Mid függvény harmadik paramétere, vagyis a karakterlánc hossza.
  • Ha mindent jól csináltunk, akkor a Kifejezésszerkesztőben ezt kell látnunk:
A kép (nagyobb változata) külön ablakban is megtekinthető.53_full.jpg53. ábra: A TörzsKönyviSzám mező megfelelő adattal való feltöltésére szolgáló képlet
  • Az Ok gomb megnyomásával zárjuk be a Kifejezésszerkesztőt! Ezzel el is készült a frissítő lekérdezésünk. A Tervező nézetben ezt kell látnunk:
A kép (nagyobb változata) külön ablakban is megtekinthető.54_full.jpg54. ábra: A Nemzeti park című feladat B részfeladatának megoldása tervező nézetben
  • Futtassuk a lekérdezést a Futtatás gombra kattintva!
  • Miután lefutott a lekérdezés, zárjuk be, és mentsük B néven!

Vissza a tartalomjegyzékhez

Új Széchenyi terv
A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszirozásával valósul meg.
Készült az "Országos koordinációval a pedagógusképzés megújításáért” című TÁMOP-4.1.2.B.2-13/1-2013-0007 pályázat keretében.

A tananyag az ELTESCORM keretrendszerrel készült