Informatika | Adatbázisok » Dr. Gyurkó György - Access gyakorlatok

Alapadatok

Év, oldalszám:1999, 27 oldal

Nyelv:magyar

Letöltések száma:2199

Feltöltve:2005. március 30.

Méret:338 KB

Intézmény:
-

Megjegyzés:

Csatolmány:-

Letöltés PDF-ben:Kérlek jelentkezz be!



Értékelések

Nincs még értékelés. Legyél Te az első!


Tartalmi kivonat

ACCESS gyakorlatok Írta: dr. Gyurkó György 2 ACCESS gyakorlatok Tartalomjegyzék Bevezetés . 3 1. Adatbázis létrehozása 4 1.1 Létrehozás közvetlenül az ACCESS indításakor 4 1.2 Létrehozás, ha már benn vagyunk az ACCESS-ben (másik megoldás) 4 2. Egy tábla létrehozása 4 2.1 Létrehozás kezdeményezése 4 2.2 A tábla mezőinek (oszlopainak) meghatározása 5 2.3 Egy tábla definíciójának elmentése, illetve nevének megadása 5 2.4 A mezők további tulajdonságainak megadása 5 2.5 Táblatulajdonságok megadása 8 3. Létező adatbázis vagy objektumablak bezárása, illetve megnyitása 10 3.1 Táblaablak bezárása 10 3.2 Az adatbázis ablak bezárása 10 3.3 Adatbázis megnyitása az ACCESS indításakor 11 3.4 Egy (másik) adatbázis megnyitása 11 4. Adatbevitel, szűrés, rendezés adatlap nézetben 11 4.1 Egyszerű adatbevitel adatlap nézetben 11 4.2 Adatértékek módosítása, rekordok törlése 12 4.3 Szűrés, rendezés be- és

kikapcsolása 12 4.4 Új szűrés és rendezés beállítása – egyszerűbb esetek 13 4.5 Összetett szűrési feltételek és hierarchikus rendezés 15 4.6 Irányított szűrés és egyetlen táblán alapuló lekérdezés 16 5. Gyakorlatok két táblával 19 5.1 Idegen kulcs – lista (kombinált lista) vezérlőelem 20 5.2 Kapcsolatok definiálása (szerkesztése) – egyszerű kapcsolatok 21 5.3 Lekérdezés két tábla összekapcsolásával – join lekérdezés 25 ACCESS gyakorlatok 3 Bevezetés Az ACCESS gyakorlatok anyaga azoknak szól, akik a későbbiekben nemcsak használni, hanem tervezni is akarnak adatbázisokat, és ezt esetleg nemcsak az ACCESS, hanem más, nagyobb teljesítményű adatbáziskezelőkre támaszkodva is szeretnék megtenni. Ennek megfelelően, amikor egy új adatbázis, új tábla, űrlap vagy jelentés létrehozása, definiálása a gyakorlat témája, ott az anyag mindig a tervező nézetet tárgyalja; a lekérdezés esetén pedig

kifejezetten az SQL nézetet részesíti előnyben. Kétségtelenül gyorsabban és kényelmesebben hozhatunk létre táblákat, lekérdezéseket stb. varázslóval vagy táblázat nézetben. Ez abból adódik, hogy az ACCESS az említett használati módokban az új objektum számos jellemzőjének meghatározásától megkíméli a felhasználót. Az eredmény a kezdő felhasználók számára és/vagy kis méretű adatbázisoknál (ahol a megoldás hatékonysága, a teljesítmény nem számít) tökéletesen meg is felelhet az elvárásoknak. – A gyakorlatok azonban azt célozzák, hogy a (tervező, fejlesztő) felhasználó olyan lehetőségekkel is megismerkedjen, amiket pl. a varázsló elfed, és amik ismeretében hatékony adatbázisok definiálhatók nagyobb adathalmazokra is és az ACCESS-től különböző környezetben is. Az SQL közelebbi megismerését az indokolja, hogy ez az a közös nyelv, amivel minden relációs adatbázis kezelhető (létrehozható,

karbantartható, lekérdezhető), illetve a felhasználói programok fejlesztői szintén csak a forráskódba ágyazott SQL parancsokkal írhatók le az adatbázis-műveleteket. ACCESS gyakorlatok 4 1. Adatbázis létrehozása Gyakorlat: Hozzon létre egy új üres adatbázist, legyen a neve: Iktató. 1.1 Létrehozás közvetlenül az ACCESS indításakor Új adatbázis létrehozását kezdeményezhetjük közvetlenül az ACCESS indítóablakában. Műveletek: Az „Új adatbázis létrehozása” blokkban jelölje ki (rákattintással) az „Üres adatbázis” opciót (rádiógombot). Kattintson az „OK” gombra! A megjelenő „Új adatbázis” dialógusablakban a „Fájlnév” mezőben írja felül az ACCESS által felajánlott „dbn” nevet az Iktató névvel. Kattintson a „Létrehozás” gombra! Stop! Itt és a továbbiakban az egyszerű kattintás mindig az egér baloldali gombjával való kattintást jelent jobbkezes egérnél, illetve jobboldali gombbal való

kattintást balkezes egérnél. 1.2 Létrehozás, ha már benn vagyunk az ACCESS-ben (másik megoldás) Műveletek: Menü: „Fájl”; menüpont: „Új adatbázis”; vagy eszközikon: „Új adatbázis” A megjelenő dialógusablakban írja be az adatbázis nevét: Iktató, majd „OK” gomb. 2. Egy tábla létrehozása 2.1 Létrehozás kezdeményezése Gyakorlat: Hozza létre az Ügyintéző táblát Műveletek: Az adatbázis-ablakban válassza a „Táblák” füleslapot és kattintson az „Új” gombra. A megjelenő dialógusablakban válassza a „Tervező” nézetet, „OK” gomb. A tábla ablakban a tábla neve egyelőre: tábla. Az Ügyintéző név elmentéskor rendelhető hozzá (lásd később) Ebben az ablakban (tervező nézetben) definiálhatók a tábla mezői (oszlopai) Mezőnként megadható annak neve, adattípusa (egy listából választható), valamint leírása (tetszőleges szöveg, ami a mező jelentését magyarázza). ACCESS gyakorlatok 5 2.2 A

tábla mezőinek (oszlopainak) meghatározása Gyakorlat: Az imént létrehozott Ügyintéző táblát definiálja a következő oszlopokkal: Törzsszám: ez egyben a tábla elsődleges kulcsa; adattípusa: Számláló. Ügyintézőnév: adattípusa: Szöveg. Osztálykód: adattípusa: Szöveg. Műveletek az első mező definiálásakor: A definiáló táblázat első sorába a „Mezőnév” oszlopba írja: Törzsszám. Ugyanazon sorban az „Adattípus” oszlopban válassza ki a „Számláló” típust. A beviteli kurzort még mindig hagyja az első soron és kattintson az „Elsődleges kulcs” eszközikonra. (A Törzsszám mezőnév mellett balról megjelenő kulcs szimbólum nyugtázza, hogy ezt a mezőt jelöltük ki elsődleges kulcsnak.) A többi mező definiálása a definiáló tábla további soraiban az iméntihez hasonlóan történhet, de azokat már természetesen nem kell elsődleges kulcsnak kijelölni. Stop! Ha például az Ügyintézőnév mező definiálásakor

is alkalmazná az „Elsődleges kulcs” gombot, akkor a következőket tapasztalná: A Törzsszám elsődleges kulcs minősége megszűnik, és az Ügyintézőnév mező lesz az elsődleges kulcs. (Ez persze nem felel meg a szándékainknak, hiszen két ügyintéző neve lehet azonos) – A későbbiekben foglalkozunk azzal is, hogyan lehet olyan elsődleges kulcsot definiálni, ami több mezőből tevődik össze 2.3 Egy tábla definíciójának elmentése, illetve nevének megadása Egy tábla definícióját akkor lehet elmenteni, ha legalább egy mezőjét (oszlopát) már definiáltuk. Ha később módosítjuk egy tábla definícióját, az új szerkezetet szintén elmentéssel lehet érvényesíteni. Gyakorlat: Mentse el az Ügyintéző táblát! Műveletek: Menü/pont: „Fájl”, „Mentés”; vagy eszközikon: „Mentés”. A tábla első mentésekor egy olyan dialógusablak is megjelenik, amiben megadhatja az új tábla nevét: Ügyintéző, majd „OK”. 2.4 A mezők

további tulajdonságainak megadása Egy-egy mezőre sokkal több tulajdonság adható meg, mint amennyivel a 2.2 pontban foglalkoztunk Amikor egy mező definícióján állunk (a tervező ablakban), ott két füles lap is látszik: az általános tulajdonságoké és a megjelenítési tulajdonságoké Az, hogy milyen tulajdonságokat lehet megadni a füleslapokon, függ a mezők adattípusától és attól is, hogy a mező elsődleges kulcs-e vagy sem. Gyakorlat: ACCESS gyakorlatok 6 Az általános tulajdonságok füles lapon állítsa be a Törzsszám mező „Formátum” jellemzőjét „Általános szám”-ra! Figyelje meg, milyen általános tulajdonságokat lehet még beállítani a Törzsszám mező esetében, illetve az ACCESS automatikusan milyen értékkel látta el ezeket a jellemzőket! Mezőméret: Hosszú egész A Számláló típusú mezők automatikusan a Hosszú egész méretet veszik fel. (Választható még a „Többszörözési azonosító” is, de ez

olyan ACCESS specialitás, amivel a továbbiakban nem foglalkozunk.) Új értékek: Növekvő Éppen az felel meg a szándékainknak, hogy egy új alkalmazott azonosító törzsszáma eggyel nagyobb legyen, mint a korábban kiosztott azonosítók legnagyobbika. (Választható még a „Véletlenszerű” kulcs érték is) Formátum: Általános szám Egy egyszerű sorszám esetében ez a legkézenfekvőbb megoldás, mert ebben a formában egy egész szám úgy jelenik meg, amint az a legmegszokottabb (törtrész nélkül, illetve nem exponenciális alakban). Cím: Ha a tábla megjelenítésekor a fejlécben a mező nevétől különböző szöveget szeretnénk látni, azt a szöveget itt adhatjuk meg. Pl „Ügyintéző törzsszáma” Indexelt: Igen (nem lehet azonos) Ez a beállítás felel meg a mező elsődleges kulcs minőségének. Az elsődleges kulcsra célszerű a táblát indexelni, mert általában gyakori az elsődleges kulcs szerinti véletlenszerű keresés, és a

keresés indextáblával gyorsítható meg. A „nem lehet azonos” minősítés jelzi, hogy a mező két sorban (rekordban) nem vehet fel azonos értéket, ami az elsődleges kulcs esetében szükségszerű. – Bármilyen más minősítésre akarjuk átállítani ezt a jellemzőt, az ACCESS figyelmeztet, hogy előbb a mező elsődleges kulcs minőségén kell változtatni Az elsődleges kulcsra megjelenítési tulajdonságok nem adhatók meg. Stop! Az ACCESS megengedi, hogy a különböző objektumok (adatbázisok, táblák, mezők, lekérdezések stb.) nevében akár ékezetes betűt, akár szóközt használjunk Ha azonban valamilyen más adatbáziskezelőt használunk, akkor már esetleg gondjaink lehetnek Ha a lekérdezések SQL nézetét megnézzük, ott is megfigyelhető, hogy az ACCESS is csak úgy ismeri fel a szóközöket tartalmazó neveket az SQL parancsokban, ha azok szögletes zárójelek között állnak. – Ha azt szeretnénk, hogy adatbázisunk definíciója

változatos környezetben is használható legyen, választhatjuk a következő megoldást: Az egyes mezőknek olyan nevet adunk, ami nem tartalmaz esetlegesen problémás karaktereket, és a „Cím” jellemzőben pedig azt a tetszőleges szöveget adjuk meg, amit a megjelenített tábla fejlécében szeretnénk látni. Gyakorlat: Az Ügyintéző tábla Ügyintézőnév mezőjének általános tulajdonságaira adja meg a következő értékeket: Cím: Ügyintéző neve – Ez jelenik meg a fejlécben. Kötelező: Igen – Azaz kötelező kitölteni (ez még megengedné a 0 hosszúságú láncot) Nulla hosszúság engedélyezése: Nem – Azaz határozottan legalább egy nem-szóköz karakterből kell állni a névnek. 7 ACCESS gyakorlatok Indexelt: Igen (lehet azonos) – Kell rá index, mert gyakran akarunk név szerint viszszakeresni, de két ügyintézőnek lehet azonos neve. Nézze meg, milyen egyéb általános tulajdonságai vannak még az Ügyintézőnév mezőnek!

Mezőméret: 50. – Ezt mint alapértelmezés szerinti méretet automatikusan állította be ennyire az ACCESS, de felülírhatjuk kisebb vagy nagyobb mérettel. (A később definiálandó mezőkre is érvényes alapértelmezett méret az „Eszközök” menü „Beállítások” menüpontjában a „Táblák/Lekérdezések” füleslapon állítható át 50-től különböző értékre.) Formátum: Szöveg típusú adatok esetében itt például arról rendelkezhetünk, hogy mi jelenjen meg a NULL érték vagy a 0 hosszúságú szöveg helyett. Beviteli maszk: Ezen tulajdonság megadásának lehetősége a gyakorló szoftverben nincs installálva. Alapértelmezett érték: Az itt megadott érték íródik a mezőbe minden új sor létrehozása alkalmával. Pl Magyarországon egy „Állampolgárság” mező esetében az alapértelmezett érték célszerűen a „magyar” szöveg lehetne. Érvényességi szabály: Itt a jellemzett mező lehetséges értékeire vonatkozó szabály

adható meg. Pl egy Hónap nevű Szám típusú mezőre adható egy ilyen szabály: >= 1 And <= 12 Hasonlóan a „Hét napja” nevű mezőre vonatkozhat a következő szabály: =’hétfő’ Or ’kedd’ Or ’szerda’ Érvényességi szöveg: Annak az üzenetnek a szövege, ami az előbbi bejegyzésben adott szabály megsértésekor fog megjelenni. Stop! A szöveg típusú mezők – ilyen volt az Ügyintézőnév is – esetében meg kell adni a „Nulla hosszúság engedélyezése” tulajdonságot is. De miért van erre szükség, ha egyszer már válaszoltunk arra is, hogy a mezőt kötelező-e kitölteni vagy sem. Ennek az a magyarázata, hogy az adatbáziskezelők kétféle üres értéket különböztetnek meg: ez egyik a NULL érték, ami azt jelenti „Nem tudom.”; a másik (szöveg típus esetén) a nulla hosszúságú szöveg, ami a határozottan üres értéket jelenti, azaz azt, hogy az adott egyedre az adott mező nem értelmezhető (pl. a leánykori név

egy férfinél) – A NULL érték egyébként nemcsak szöveg típusú mezőknél alkalmazható. Egy szám típusú mező is (ha nem kötelező kitölteni) vehet fel NULL értéket, ami különbözik a 0 numerikus értéktől. Például Fizetés = NULL azt jelenti, hogy a fizetés összege ismeretlen; a Fizetés=0 pedig azt jelenti, hogy az adott személy nem kap fizetést. – Visszatérve arra, hogy a „Kötelező” kitöltési tulajdonság és a „Nulla hosszúság engedélyezése” tulajdonság hogyan függ össze egymással, az alábbi táblázat foglalja össze a tudnivalókat Kötelező (Required) Nulla hosszúság engedélyezése (AllowZeroLength) Nem Nem Igen Nem Nem Igen Felhasználói művelet Az ENTER megnyomása A SZÓKÖZ megnyomása ’’ (üres lánc) beírása Az ENTER megnyomása A SZÓKÖZ megnyomása ’’ (üres lánc) beírása Az ENTER megnyomása A SZÓKÖZ megnyomása ’’ (üres lánc) beírása Tárolt érték <Null> <Null> (nem

megengedett) (nem megengedett) (nem megengedett) (nem megengedett) <Null> <Null> <Nulla hosszúságú karakterlánc> 8 ACCESS gyakorlatok Igen Igen Az ENTER megnyomása A SZÓKÖZ megnyomása ’’ (üres lánc) beírása (nem megengedett) <Nulla hosszúságú karakterlánc> <Nulla hosszúságú karakterlánc> A táblázat tartalma rövidebben így foglalható össze.  A „Kötelező” igen/nem azt jelenti, hogy a mezőnek nem lehet, illetve lehet NULL értéke.  A „Nulla hosszúság engedélyezése” igen/nem azt jelenti, hogy a (nem NULL érték) lehet nulla hosszúságú lánc, illetve nem lehet nulla hosszúságú lánc. Stop! A szöveg típusú mezőknek megfelelő literálok aposztrófok között álló láncok. Például ’kedd’, vagy Osztálykód = ’110’. A szám típusú mezők (ilyen a számláló típus is) literáljai aposztrófok nélkül állnak. Például darabszám = 110 Stop! A szöveg típusú mezőkre is

értelmezhetők a <, >, <=, >=, = összehasonlítási műveletek, azonban másképpen működnek, mint a szám típusú mezőkre. Például 9<100 igaz, de ’9’<’100’ már nem igaz. Ugyanis az utóbbi összehasonlításban nem számok, hanem számjegyeket tartalmazó szövegek szerepelnek, amiknél az összehasonlítás balról jobbra haladva karakterenként történik. Mivel ’9’>’1’, ezért szövegeknél ’9’>’100’ adódik Az Ügyintéző tábla Ügyintézőnév mezőjének megjelenítési tulajdonságai között a „Vezérlőelem megjelenése” rovatban az ACCESS „Beviteli mező” értéket ajánl fel. Fogadja el Egyelőre a többi mezőnél is megfelel ez a megjelenítési mód Az Ügyintéző tábla Osztálykód mezőjének általános tulajdonságaira adja meg a következő értékeket: Mezőméret: 3. Kötelező: Igen – Azaz nem fordulhat elő, hogy valamely ügyintéző osztálya ismeretlen lenne. Nulla hosszúság

engedélyezése: Nem – Azaz minden ügyintéző hozzátartozik valamelyik osztályhoz. Indexelt: Nem – Nem kér rá indexet. Stop! Mikor, illetve miért nincs szükség indexelésre? Először is az indextáblák számával takarékosan kell bánni még akkor is, ha azok gyorsítják a visszakeresést. A karbantartás ugyanis lassúbb, ha egy adattáblával együtt több rávonatkozó indextáblát is aktualizálni kell. Tehát kerüljük az indexelést, ha az nem feltétlenül szükséges. Például, ha nem lesz gyakori az ügyintézők osztály szerinti véletlen visszakeresése, akkor nem indokolt az Osztálykódra indexelni az Ügyintéző táblát. Olyan kódra (mezőre) sem célszerű indexelni, aminek kevés számú értéke van Például a kevés különböző Osztálykód-érték csak kevéssé „szórja” a lényegesen több ügyintézőt, és így az Osztálykódra épített index nem tudja lényegesen meggyorsítani az ügyintézők keresését. Mentse el az

Ügyintéző tábla megváltozott definícióját (kattintás a „Mentés” eszközikonra)! 2.5 Táblatulajdonságok megadása Nemcsak az egyes mezőknek, hanem az azokat tartalmazó tábláknak is lehetnek tulajdonságai. ACCESS gyakorlatok 9 Gyakorlat: Nézze meg, milyen tulajdonságai vannak az Ügyintéző táblának! Műveletek: Tervező nézetben álljon az Ügyintéző táblát definiáló ablakon (legyen ez az aktív ablak). Válassza ki a „Nézet” menü „Tulajdonságok” menüpontját; vagy kattintson a „Tulajdonságok” eszközikonra. Most látható, milyen táblatulajdonságokat adhatunk meg: Pl. Ez a tábla tartalmazza a cégnél alkalmazott ügyintézők adatait Érvényességi szabály: Az Ügyintéző tábla esetében nem szükséges tábla szintű érvényességi szabályokat megadni. Erre később, más tábláknál látunk majd példát Ebben a rovatban lényegében a tábla több mezője közötti összefüggések adhatók meg. Érvényesítési

szöveg: Az előbbi érvényességi szabályt sértő táblasor esetén megjelenítendő üzenet. Szűrő: Osztálykód>=’205’ AND Osztálykód<=’300’. – Ha itt megadunk egy feltételt, úgy a szűrés/rendezés bekapcsolásakor a táblának csak azok a sorai fognak megjelenni, amik a feltételt kielégítik; esetünkben azok az ügyintézők, akik a 105-östől a 300-asig terjedő kóddal azonosított osztályok valamelyikébe tartoznak. – Ha nem adunk meg feltételt, akkor a tábla minden sora megjelenik Rendezés: Osztálykód DESC. – A szűrés/rendezés bekapcsolásakor az itt megadott mező értékei szerinti rendezettségben jeleníti meg az ACCESS a sorokat. A rendezés – a DESC toldalék miatt – csökkenő (pontosabban nem növekvő) Osztálykód szerinti. Ha nem adunk meg rendezettséget, akkor a tábla sorai az elsődleges kulcs szerint rendezetten jelennek meg. Leírás: Mentse el az Ügyintéző tábla (és vele az Iktató adatbázis) megváltozott

definícióját (kattintás a „Mentés” eszközikonra)! Persze az itteni beállítások hatása csak akkor lesz megfigyelhető, ha tábla adatsorokat is tartalmaz. A szűrés, illetve rendezés akkor sem automatikusan érvényesül Ezeket külön be kell kapcsolni a „Rekordok” menü „Szűrés/Rendezés” menüpontjának kiválasztásával vagy (csak a szűrés) a „Szűrés” eszközikonra kattintással (lásd későbbi példákban). Stop! Vegyük észre, a fenti tulajdonságok között vegyesen találhatók olyanok, amelyek tartósan érvényesek egy táblára (leírás, érvényességi szabály, érvényességi szöveg), és olyanok, amiket alkalmilag célszerű beállítani egy-egy speciális lekérdezés, megjelenítés idejére (szűrő, rendezés). Az utóbbi két táblatulajdonság mindig megváltozik (felülíródik), valahányszor a 4.3-ban ismertetett módokon újabb szűrést vagy rendezést állítunk be Stop! A tábla leírása más módon is megadható. Az

Iktató adatbázis ablakon állva válassza ki az Ügyintéző táblát (kattintsunk rá a bal egérgombbal), majd válassza ki a „Nézet” menü „Tulajdonságok” menüpontját vagy kattintson a „Tulajdonságok” eszközikonra. Itt azonban a ACCESS gyakorlatok 10 táblának csak a leírása adható meg, továbbá az, hogy az adott tábla látszódjék-e az adatbázis ablakban vagy sem (rejtett objektum). 3. Létező adatbázis vagy objektumablak bezárása, illetve megnyitása 3.1 Táblaablak bezárása Gyakorlat: Zárja be az Ügyintéző táblát (a táblaablakot, amiben ez a tábla tervezhető, illetve a tartalma karbantartható)! Az itt leírtak másfajta objektumok (lásd később a lekérdezéseket, űrlapokat, jelentéseket) ablakának bezárására is értelemszerűen vonatkoznak. Műveletek: Kattintson az Ügyintéző tábla ablakának felső lécén található bezárás [×] ikonra; vagy az Ügyintéző tábla ablakát tegye aktívvá (kattintson rá), ha

éppen nem az az ablak aktív, majd menü: „Fájl”, menüpont: „Bezárás”. Ha megelőzően változtatta a tábla adattartalmát (adatkarbantartás), akkor a változások a bezárással automatikusan elmentődnek az adatbázisba. Ha viszont a tábla vagy a tábla mezőinek definícióját (tulajdonságait) változtatta meg, és azokat még nem mentette el, akkor a következő kérdésre kell válaszolni: „Menteni kívánja a módosításokat?” 3.2 Az adatbázis ablak bezárása Gyakorlat: Zárja be az Iktató adatbázist! Műveletek: Kattintson az Iktató adatbázis ablakának felső lécén található bezárás [×] ikonra; vagy az adatbázis ablakot tegye aktívvá (kattintson rá), ha éppen nem az az ablak aktív, majd menü: „Fájl”, menüpont: „Bezárás”. Stop! Az adatbázis ablak bezárásakor automatikusan az adott adatbázis ablakból megnyitott objektumablakok (pl. táblaablak) is bezáródnak Így bármely ablakra vonatkozóan kaphatunk „Menteni

kívánja a módosításokat?” kérdést, ha abban megváltoztattunk valamilyen tervezési tulajdonságot anélkül, hogy a változást elmentettük volna. Stop! Az ACCESS-ből kilépés természetesen az adatbázis ablak és vele az összes, belőle megnyitott ablak lezárását idézi elő. ACCESS gyakorlatok 11 3.3 Adatbázis megnyitása az ACCESS indításakor Gyakorlat: Indítsa el az ACCESS-t (ha már elindította korábban az ACCESS-t, lépjen ki belőle, majd indítsa újra). Ezt követően nyissa meg az Iktató adatbázist Műveletek: Az indító dialógusablakban kattintson „Létező adatbázis megnyitása” választógombra. Ha az Iktató adatbázis az utoljára használt adatbázisok között van, akkor látszik a „Létező adatbázis megnyitása” választógombbal azonos blokkban, ott kijelölhető, majd „OK”. Egyébként a „További fájlok” opciót kell választani, majd a megjelenő „Megnyitás” dialógusablakban keresés, kijelölés, majd

„Megnyitás” gombra kattintás. 3.4 Egy (másik) adatbázis megnyitása Akkor is megnyitható egy (újabb) adatbázis, amikor már bent vagyunk az ACCESS-ben. Műveletek: Menü: „Fájl”, menüpont: „Adatbázis megnyitása” vagy „Adatbázis megnyitása” eszközikonra kattintás; majd a „Megnyitás” dialógusablakban keresés, kijelölés, majd „Megnyitás” gombra kattintás. Ha már van több adatbázisa, akkor ez a módja annak, hogy egyikről átváltson egy másikra. Tapasztalni fogja, amikor egy újabb adatbázis megnyit, akkor a korábban nyitott adatbázis bezáródik, azaz egyidejűleg csak egy adatbázisban tud dolgozni. (Ennek kipróbálása céljából a leggyorsabban úgy tud egy új adatbázist létrehozni, ha a fájlkezelés szintjén – az NT „Sajátgép” ablakában – más névvel másolatot készít a meglévő adatbázisáról.) Stop! Ha egy nemrég használt adatbázist akar megnyitni, akkor a „Fájl” menü lenyitásakor abban a

legutoljára használt néhány adatbázis neve látható, és közvetlenül kiválasztható. 4. Adatbevitel, szűrés, rendezés adatlap nézetben 4.1 Egyszerű adatbevitel adatlap nézetben Gyakorlat: Váltson adatlap nézetre és vigye be a következő adatsorokat az Ügyintéző táblába: Törzsszám Ügyintéző neve Osztálykód 1 Piri 110 2 Józsi 230 3 Anikó 230 4 Elemér 110 5 Zoltán 270 (Számláló) ACCESS gyakorlatok 12 Megfigyelhetők:  A Törzsszámot nem kell (nem is lehet) bevinni, mert az ACCESS által automatikusan osztott sorszám.  Az Osztálykód mezőbe az ACCESS nem enged 3 pozíciónál hosszabb szöveget bevinni, annak megfelelően, hogy a mezőméret=3. Egyébként egyelőre bármilyen értéket megadhatunk ebben a mezőben 4.2 Adatértékek módosítása, rekordok törlése Feltételezzük, hogy az Ügyintéző tábla ablakán áll adatlap nézetben. Gyakorlat: Módosítsa a 3-as törzsszámú ügyintéző osztálykódját 100-ra! Művelet:

Egyszerűen felülírja a megfelelő adatsorban az Osztálykód mező értékét. Stop! Próbálja meg módosítani (felülírni) valamelyik adatsorban a Törzsszám mező értékét. – Az ACCESS ezt a módosítást nem engedi meg (pontosabban nem veszi figyelembe). Ennek logikusan legalább két oka lehet: 1. a Törzsszám a tábla elsődleges kulcsa; 2 a Törzsszám az ACCESS által osztott (és ezért nem a felhasználó által nem írható) számláló. – Nos, az ACCESS-nél csak az utóbbi ok áll fenn Később látni fogja, hogy az ACCESS az elsődleges kulcs módosítását is megengedi, ha az nem számláló mező, és ha a módosítás éppen nem sért valamilyen hivatkozás-integritási korlátot; sőt egy adott rekord kulcsa módosításának következményeként más, vele kapcsolatban álló rekordok is automatikusan módosulhatnak (lásd 5.2-ben) Stop! Az ACCESS-ben az adatértékek módosításának eltárolásához (vagy adatrekord törlésének

érvényesítéséhez) nem szükséges alkalmazni a „Mentés” műveletet, az automatikusan végrehajtódik. Explicit mentésre csak a tábla definíciójának változásakor van szükség Gyakorlat: Törölje (távolítsa el az Ügyintéző táblából) a 3-as törzsszámú ügyintéző rekordját! Műveletek: A sorkurzorral álljon a megfelelő adatsorra az Ügyintéző táblában! Válassza ki a „Szerkesztés” menüből a „Rekord törlése” menüpontot vagy kattintson a „Rekord törlése” eszközikonra! A törlés tényére figyelmeztető üzenet jelenik meg. A „Biztosan törölni szeretné a rekordokat?” kérdésre a megerősítő Igen gombra kattintás válasszal véglegesítheti a törlést. Stop! Az ACCESS nem mindig engedi meg egy adott sor törlését; máskor meg egy adott sor törlésének következményeként más, vele kapcsolatban álló sorok is törlődnek (lásd 5.2-ben) 4.3 Szűrés, rendezés be- és kikapcsolása Gyakorlat: 13 ACCESS

gyakorlatok Kapcsolja be a 2.5 pont szerint definiált szűrőt a „Szűrés” eszközikonra kattintással Figyelje meg, mit lát az adatlapon! Kapcsolja be a 2.5 pont szerint definiált szűrőt és rendezést a „Rekordok” menü „Szűrés/Rendezés” menüpontjának kiválasztásával Figyelje meg, hogyan változott meg az adatlap tartalma! Próbálja ki, hogy az előbbiek szerint beállított szűrés mellett be tudja-e vinni a táblába a következő új sort: Törzsszám 6 Ügyintéző neve Rózsi Osztálykód 100 Érvényes-e a szűrő hatása a bekapcsolása után bevitt sorokra? Gyakorlat: Kapcsolja be ismét a 2.5 pont szerint definiált szűrőt és rendezést a „Rekordok” menü „Szűrés/Rendezés” menüpontjának kiválasztásával Kapcsolja ki csak a szűrőt a „Szűrő eltávolítása” (azaz a benyomva látszó „Szűrés”) eszközikonra kattintással. Figyelje meg, mit lát az adatlapon! Kapcsolja ki a rendezést (is) a „Rekordok” menü

„Szűrés/Rendezés törlése” menüpontjának kiválasztásával. Figyelje meg, mit lát az adatlapon! Foglaljuk össze a szűrés és rendezés be-, illetve kikapcsolására vonatkozó tapasztalatokat!  Mind a szűrés, mind a rendezés csak akkor fejtik ki hatásukat, ha be vannak kapcsolva.  A szűrés csak a megjelenítésre van hatással, az adat bevitelre nem. A bekapcsolt szűrés mellett is bevihetők olyan adatsorok, amik a szűrőfeltételeket nem elégítik ki.  A „Rekordok” menü „Szűrés/Rendezés” menüpontjának kiválasztása egyszerre bekapcsolja a szűrést és rendezést is.  A „Rekordok” menü „Szűrés/Rendezés törlése” menüpontjának kiválasztása egyszerre kikapcsolja mind a szűrést, mind a rendezést.  A „Szűrés/Szűrő eltávolítása” eszközikonra kattintással csak a szűrés kapcsolható be/ki.  Ha a táblatulajdonságok közül csak a rendezést akarjuk bekapcsolni, a következő két lépésben

megtehető: a „Rekordok” menü „Szűrés/Rendezés” menüpontjának kiválasztása, majd a (benyomva látszó) „Szűrés/Szűrő eltávolítása” eszközikonra kattintással a szűrés kikapcsolása. 4.4 Új szűrés és rendezés beállítása – egyszerűbb esetek Feltételezzük, hogy az Ügyintéző tábla meg van nyitva, annak ablaka aktív, adatlap nézetben van és sem a szűrő, sem a rendezés nincs bekapcsolva. Gyakorlat: Rendezze az Ügyintéző táblát egyszerűen névsor szerint! Műveletek: Álljon kurzorral az Ügyintézőnév oszlopra (bármely sorban). ACCESS gyakorlatok 14 Kattintson a „Rendezés – növekvő” eszközikonra; vagy válassza ki a „Rekordok” menü „Rendezés” almenüjének „Rendezés – növekvő” menüpontját. Figyelje meg, hogyan változott a megjelenített adattartalom! Menjen át tervező nézetbe és nézze meg, milyen bejegyzés szerepel az Ügyintéző tábla Redezés tulajdonságában! Gyakorlat: Menjen

vissza adatlap nézetbe (ehhez előbb kénytelen lesz elmenteni a táblát, – pontosabban annak megváltozott definícióját) és kapcsolja ki a rendezést! Művelet: Ki kell választani a „Rekordok” menüből a „Szűrés/Rendezés törlése” menüpontot. Gyakorlat: Most tegyük fel, hogy ismét szeretné bekapcsolni a legutóbbi rendezést, de már nem emlékszik rá, hogy az milyen volt. Műveletek: Ki kell választani a „Rekordok” menüből a „Szűrés/Rendezés” menüpontot. Figyelje meg, mi látható! Kattintson a „Szűrés eltávolítása” eszközikonra! Miért kellett a „Szűrés eltávolítása” eszközikont alkalmazni? Hogyan lehetne megoldani, hogy ha csak a legutolsó rendezést akarja (a szűrést viszont nem), akkor a „Szűrés/Rendezés” menüpont kiválasztása után ne kelljen alkalmazni a „Szűrés eltávolítása” eszközikont? (Táblatulajdonságok!) Gyakorlat: Most tegyük fel, hogy (adatlap nézetben) az Ügyintéző tábla minden

sora megjelent (ha nem így lenne, kapcsolja ki a szűrést és a rendezést). Ebből az állapotból indulva érje el, hogy pontosan azok az ügyintézők jelenjenek meg, akik a 110-es osztályhoz tartoznak! Műveletek: Álljon a tábla Osztálykód oszlopában egy olyan sorra, amiben az érték éppen ’110’! Kattintson a „Szűrés kijelöléssel” eszközikonra! Figyelje meg az eredményt! Menjen át tervező nézetbe és nézze meg, milyen bejegyzés szerepel az Ügyintéző tábla Szűrő tulajdonságában! Menjen vissza adatlap nézetbe (ehhez előbb kénytelen lesz elmenteni a táblát) és kapcsolja ki a szűrést („Szűrő eltávolítása” eszközikon), majd ismét kapcsolja be a szűrést („Szűrés” eszközikon). Foglaljuk össze a szűrés és rendezés beállításával kapcsolatos eddigi tapasztalatokat. 15 ACCESS gyakorlatok  Bármilyen módon állítunk be szűrőt vagy rendezést egy táblára, azt az ACCESS úgy jegyzi, meg mintha azt a

táblatulajdonságok között adtuk volna meg (az ott megadottakat a legutolsó beállítással felülírja).  Az előbbi megállapítással összhangban bármilyen módon utoljára beállított szűrő vagy rendezés úgy kapcsolható be/ki a „Szűrés/Rendezés”, „Szűrés/Rendezés törlése” menüpontokkal, valamint a „Szűrés/Szűrő eltávolítása” eszközikonnal, mint azt a 4.3-ban már megismertük.  Ha azt akarjuk, hogy az ACCESS végleg elfelejtse az adott táblára beállított szűrőt vagy rendezést, akkor ezt a táblatulajdonságok „Szűrő”, illetve „Rendezés” bejegyzéseinek törlésével (üresre állításával) tudjuk elérni. Gyakorlat: Most tegyük fel, hogy (adatlap nézetben) az Ügyintéző tábla minden sora megjelent (ha nem így lenne, kapcsolja ki a szűrést és a rendezést). Ebből az állapotból indulva érje el, hogy pontosan azok az ügyintézők jelenjenek meg, akik nem a 110-es osztályhoz tartoznak! Műveletek: Álljon

a tábla Osztálykód oszlopában egy olyan sorra, amiben az érték éppen ’110’. Válassza ki a „Rekordok” menü „Szűrő” almenüjéből a „Szűrés kizárással” menüpontot. 4.5 Összetett szűrési feltételek és hierarchikus rendezés Feltételezzük, hogy az Ügyintéző tábla meg van nyitva, annak ablaka aktív, adatlap nézetben van és sem a szűrő, sem a rendezés nincs bekapcsolva. Gyakorlat: Érje el, hogy azok az ügyintézők jelenjenek meg, akinek a törzsszáma nagyobb 3-nál, és egyidejűleg az osztálykódjuk vagy 110, vagy 270; de a Józsi(k) adatsora(i) akkor is jelenjenek meg, ha nem teljesítik az előbbi feletételeket! Műveletek: Válassza ki a „Rekordok” menü „Szűrés” almenüjéből a „Szűrés űrlappal” menüpontot! (A tábla ablaka átalakul: A tábla most nem adatmegjelenítésre szolgál, hanem olyan űrlapként viselkedik, amibe szűrési feltételeket lehet írni. Ezt az állapotot az ablak fejrészében az

„Ügyintéző: szűrés űrlappal” felirat jelzi) A Törzsszám mezőbe írja: >3. Az Osztálykód mezőbe írja: =”110” OR =”270”. Az ablak alsó részében kattintson a „vagy” fülre. – Ezzel az űrlap újabb sorát töltheti ki Az új sorban az Ügyintézőnév mezőbe írja: ’Józsi’. Kattintson a „Szűrés” eszközikonra! Figyelje meg az eredményt! Az alábbi táblázat összefoglalja, hogyan adtuk meg a feltételeket. Az első sorban a „vagy” fülre kattintás előtt megadott feltételek, a második sorban a „vagy” fülre kattintás után megadott feltétel látható. Törzsszám >3 vagy: Ügyintéző neve ’Józsi’ Osztálykód =”110” OR =”270” ACCESS gyakorlatok 16 Megállapíthatjuk:  Az űrlap egy sorában, de különböző mezőiben megadott feltételek egymással logikai „és” (AND) kapcsolatban állnak: (Törzsszám>3) AND (Osztálykód =”110” OR Osztálykód =”270”)  Az űrlap különböző

soraiban adott feltételek egymással logikai „vagy” (OR) kapcsolatban állnak: ( (Törzsszám>3) And (Osztálykód =”110” OR Osztálykód =”270”) ) OR (Ügyintézőnév=’Józsi’) Stop! A Törzsszám>3 feltételben a 3-as határoló jelek nélkül áll, míg más adatok – ”110” vagy ’Józsi’ – idézőjelben, vagy aposztrófok között állnak a feltételekben. Ennek az az oka, hogy a Törzsszám szám típusú adat, míg a másik kettő szöveg típusú. Stop! A feltételek beírása közben az űrlap mezői kombinált listaként viselkednek, azaz belőlük lenyitható az adott mező előforduló értékeinek listája. Így, ha valamely mezőre egyetlen értékkel való egyenlőséget akarunk feltételként előírni (például ”Józsi”), a feltétel-értékeket a közvetlen beírás helyett a lehúzott listából is ki lehet választani. Stop! Bonyolult szűrési feltételek adhatók meg az „Irányított szűrés” menüpont alkalmazásával.

Ezzel azonban a 46 pontban foglalkozunk, mert az irányított szűrés megadása teljesen egyezik az egy táblán alapuló lekérdezések tervezőrácson való definiálásával. Ez olyannyira igaz, hogy egy irányított szűrést be lehet tölteni egy (ugyanazon táblára vonatkozó) lekérdezés definíciójából, illetve el lehet menteni lekérdezés definíciójaként. Gyakorlat: Feltételezzük, hogy az Ügyintéző tábla meg van nyitva, annak ablaka aktív, adatlap nézetben van és sem a szűrő, sem a rendezés nincs bekapcsolva. Érje el, hogy a tábla sorai a következő rendezettségben jelenjenek meg: A fő rendezés legyen csökkenő (pontosabban nem növekvő) Osztálykód szerinti, azon belül pedig a rendezettség legyen növekvő (pontosabban nem csökkenő) Ügyintézőnév szerinti. Műveletek: Váltson tervező nézetre. Kattintson a „Tulajdonságok” eszközikonra. A megjelenő táblatulajdonságok ablakban a „Rendezés” rovatba írja: Osztálykód DESC,

Ügyintézőnév. Stop! Az Osztálykód mezőnév után álló DESC toldalék csökkenő (pontosabban nem növekvő) rendezési sorrendet jelöl (descending). Stop! Mivel az Ügyintézőnév szerinti rendezés nem az egész táblára, hanem csak az azonos osztályba tartozó ügyintézők csoportjára vonatkozik, az ilyen rendezést hierarchikus rendezésnek mondjuk. 4.6 Irányított szűrés és egyetlen táblán alapuló lekérdezés Gyakorlat: 17 ACCESS gyakorlatok Nézze meg, hogy a 4.5 pontban utoljára adott szűrés és rendezés definíciója hogyan adható meg irányított szűrésként! (Feltesszük, hogy az Ügyintéző tábla ablaka aktív.) Műveletek: Válassza ki a „Rekordok” menü „Szűrő” almenüjéből az „Irányított szűrés/rendezés” menüpontot! Egy ablak jelenik meg, aminek felső részében egy doboz képviseli azt a táblát, amire szűrőt akarunk definiálni, az alsó részében pedig egy tervezőrács található. A tervezőrácsban

éppen az utoljára megadott szűrő és rendezés definíciója látható. Mező: Rendezés: Feltétel vagy: Osztálykód Csökkenő ”110” Or ”270” Ügyintézőnév Növekvő Törzsszám >3 ”Józsi” A tervezőrácsban egyszerű vagy hierarchikus szűrés, illetve egyszerű vagy összetett feltételek adhatók meg. A rácsban azokat a mezőket kell feltüntetni, amik vagy a rendezésben, vagy a szűrési feltételben szerepet játszanak. A rendezésben részvevő mezők közül a főbb rendezési szempontnak megfelelőnek kell előbb (balrább) állni. A feltételek megadása tekintetében a tervezőrács erősen hasonlít az űrlappal történő szűréshez: a feltételek több sorban is megadhatók; az azonos sorban, de különböző mezőkre vonatkozóan megadott feltételek egymással AND (logikai „és”) kapcsolatban állnak; a különböző sorokban álló feltételek egymással OR (logikai „vagy”) kapcsolatban állnak. Gyakorlat: Az irányított

szűrést mentse el lekérdezésként! (Feltételezzük, hogy az irányított szűrés definiáló ablaka aktív.) Műveletek: Válassza ki a „Fájl” menü „Mentés lekérdezésként” menüpontját, vagy kattintson a „Mentés lekérdezésként” eszközikonra! A megjelenő dialógusablakban adja meg a lekérdezés nevét, pl.: Ügyintéző szűrő Az „OK” gombra kattintással hagyja jóvá az elmentést! Gyakorlat: Nyissa meg az imént elmentett lekérdezést és figyelje meg a lekérdezést adatlap nézetben és tervező nézetben is! Műveletek: Az adatbázis ablakban tegye aktívvá a „Lekérdezések” füleslapot! A füleslapon egyelőre egyetlen lekérdezés neve látható, azé, amit az imént mentett el: Ügyintéző szűrő. Ezt rákattintással jelölje ki! Kattintson a „Megnyitás” gombra! (Az utóbbi két művelet a lekérdezés nevére való dupla kattintással helyettesíthető.) Megjelenik az lekérdezés eredménye adatlap nézetben, semmiben sem

különbözik a legutolsó szűrés eredményétől. ACCESS gyakorlatok 18 Váltson át tervező nézetre! (Hasonló tervezőablak jelenik meg, mint az irányított szűrésnél, de itt a tervezőrács több elemet tartalmaz.) A szűrést definiáló, illetve a lekérdezést tervező ablakok között a következő különbségek figyelhetők meg:  A lekérdezés egyidejűleg több táblára is vonatkozhat. Ez – egyebek mellett – abból látszik, hogy a tervezőrácson lehetőséget kapunk különböző táblákból vett mezők megnevezésére A szűrés mindig egy táblára vonatkozik  A lekérdezés tervező rácsán azt is meg lehet határozni, hogy mely mezők jelenjenek meg a lekérdezés eredeményeként, illetve melyek ne jelenjenek meg. A szűrésnél a tervezőrácson a megjelenítésről nem rendelkezhetünk  A lekérdezésnél mezőként kifejezés is megadható megjelenítésre (pl.: Törzsszám*2). A szűrésnél ez nem lehetséges.  A szűrésből

csak egy tárolható el a bázisát képező táblával. Lekérdezésekből akárhány letárolható.  Később látni fogjuk, hogy a lekérdezés viszonylagos önálló léttel bír, amin azt értjük, hogy hasonló szerepeket tölthet be, mintha maga is tábla lenne. Stop! Amíg a lekérdezés csak egy táblából történik, addig a tervezőrácson tett rendelkezéssel a tábla valamely mezőjét a megjelenítésből kihagyni nem lehet. Erre csak adatlap nézetben vagy SQL nézetben nyílik lehetőség. Adatlap nézetben a kihagyandó oszlopon állva, a „Formátum” menüből ki kell választani az „Oszlopok elrejtése” menüpontot (Az SQL nézettel mindjárt foglalkozunk.) Stop! Az ACCESS lekérdezés fogalma más relációs adatbáziskezelők view fogalmának felel meg. A lekérdezés lényegében egy virtuális tábla, azaz olyan származtatott tábla, ami fizikailag (tartósan) nem létezik, csak a lekérdezés idejére áll elő fizikailag is létező táblá(k)ból

vagy más lekérdezésekből. Bizonyos korlátozás mellett a lekérdezés erdeményeként megjelenő táblába utóbb a felhasználó új sorokat billentyűzhet be, illetve a megjelent sorok egyes mezőinek értékét módosíthatja. Ezek a változtatások ténylegesen a lekérdezés forrását képező valalmelyik valódi táblán hajtódnak végre. Gyakorlat: Nézze meg a lekérdezést SQL nézetben! Művelet: Miközben a lekérdezés ablaka aktív, válassza ki az SQL nézetet! Egy olyan ablak jelenik meg, amiben SQL parancsokat lehet szerkeszteni. Ebben az utolsó lekérdezés SQL parancsa látható: SELECT * FROM Ügyintéző WHERE ((Ügyintéző.Törzsszám>3) And (ÜgyintézőOsztálykód =”110” OR Ügyintéző.Osztálykód =”270”)) OR (ÜgyintézőÜgyintézőnév=’Józsi’) ORDER BY Ügyintéző.Osztálykód DESC, ÜgyintézőÜgyintézőnév; Aki még az SQL nyelvhez nem szokott hozzá, annak egy lekérdezés parancs formában való definiálása

bonyolultabbnak tűnhet a grafikus felületen adott lehetőségekhez képest. Ám ezt is meg lehet szokni, illetve a számítógépes rendszerek fejlesztőinek illik jól ismerni az SQL pa- ACCESS gyakorlatok 19 rancsoknak mind az önállóan alkalmazható alakjait, mind a programnyelvekbe beágyazható formáit. A lekérdezést definiáló SQL parancsban a SELECT kulcsszó után a megjelenítendő mezők neveit, illetve kifejezéseket lehet felsorolni. A * egy adott tábla összes mezőjének megjelenítését kéri. A FROM kulcsszó után kell megadni a forrástábla nevét, illetve több forrástábla, esetleg forrás-lekérdezés neveinek felsorolását. A WHERE kulcsszó után kell megadni a feltételt logikai kifejezés formájában. Az ORDER BY záradékban egyszerű vagy hierarchikus rendezés írható le. Stop! A példa szerinti SQL parancsot az ACCESS állította össze. Ennek megfelelően számos felesleges elemet tartalmaz. Mivel a FROM rész csak egyetlen

forrástáblát nevez meg, a parancsból minden mezőnév elől elhagyható az „Ügyintéző” minősítés – Néhány zárójel is felesleges a WHERE részben. Stop! Nemcsak lekérdező, hanem tábladefiniáló, adatkarbantartó SQL parancsok is léteznek. Később velük is meg fogunk ismerkedni. Gyakorlat: Módosítsa úgy az SQL parancsot, hogy csak az Osztálykód és az Ügyintézőnév oszlopok jelenjenek meg a lekérdezés eredményében, majd futtassa le a lekérdezést! Műveletek: Módosítsa a SELECT parancsot: SELECT Osztálykód, Ügyintézőnév FROM.! Válassza ki a „Lekérdezés” menüből a „Futtatás” menüpontot vagy kattintson a „Futtatás” eszközikonra! Több táblára támaszkodó lekérdezésekről elsőként az 5.3 pontban lesz szó 5. Gyakorlatok két táblával A következő gyakorlatok előkészítése céljából hozza létre az Osztály táblát az alábbi oszlopokkal: Osztálykód: a tábla elsődleges kulcsa. Adattípus: Szöveg.

Mezőméret: 3. Indexelt: Igen (nem lehet azonos). Osztálynév: Adattípus: Mezőméret: Cím: Kötelező: Szöveg. 50. Osztály neve. Igen – Azaz kötelező kitölteni (ez még megengedné a 0 hosszúságú láncot). ACCESS gyakorlatok 20 Nulla hosszúság engedélyezése: Nem – Azaz határozottan legalább egy nem-szóköz karakterből kell állni a névnek. Indexelt: Nem. Megjelenítés: Vezérlőelem megjelenése: Beviteli mező. Töltse fel a táblát olyan sorokkal, amik azonosítói között (egyszer) szerepeljen valamennyi osztálykód érték, amit korábban az Ügyintéző tábla feltöltésénél felhasznált. Osztálykód 100 110 230 270 300 Osztály neve Számviteli osztály Pénzügyi osztály Beszerzési osztály Értékesítési osztály Termelési osztály Stop! A gyakorlatban az Osztály táblát korábban kell feltölteni, mint az Ügyintéző táblát. Ugyanis, amikor az utóbbiba egy új ügyintéző adatait viszik be, ellenőrizni kell, hogy a

megadott osztálykód érték szerepel-e az Osztálykód táblában nyilvántartottak között. Többek között ennek a hivatkozás-integritást megőrző ellenőrzésnek az automatizálásáról lesz szó a következő alpontokban 5.1 Idegen kulcs – lista (kombinált lista) vezérlőelem Az eddig létrehozott két tábla közötti kapcsolatot fejezi ki az a tény, hogy az Osztály tábla elsődleges kulcsa az Ügyintéző tábla mezői közt is szerepel. Az ottani megjelenését idegen kulcsnak mondjuk. Gyakorlat: Oldja meg, hogy amikor egy új ügyintéző adatait viszi be vagy egy ügyintéző osztályt vált, akkor az osztály kódját ne kelljen beírni az Osztálykód mezőbe, hanem azt egy listából ki lehessen választani. Műveletek: Az ügyintéző tábla ablakán állva váltson tervező nézetbe. Az Osztálykód mezőt definiáló sorra állva, kattintson a „Megjelenítés” mezőtulajdonságokat megadó füleslapra, és adja meg a következő

tulajdonságértékeket. Vezérlőelem megjelenése: Lista. – Ezáltal adatbevitelkor az Osztálykód mező választéklistaként működik, de közvetlenül lehet beleírni értéket Sorforrás típusa: Tábla/lekérdezés. – Így a lista egy táblából vagy egy lekérdezésből veszi a választható értékeket. Sorforrás: Osztály. – Így a lista az Osztály táblából veszi értékeit Kötött oszlop: 1. – Így a lista és egyben az Osztály tábla első oszlopa adja azt az értéket, ami a kiválasztáskor az Ügyintéző tábla Osztálykód mezőjében el fog tárolódni. Oszlopszám: 2. – A lista két oszlopos lesz, éppen az Osztály tábla két oszlopát (mezőjét) fogja mutatni Oszlopfejlécek: Nem. – Nem kérünk fejlécet megjeleníteni a választéklista fölé ACCESS gyakorlatok 21 Oszlopszélességek: Fogadja el a felajánlottakat, mert az oszlopok szélességét utólag vizuálisan könnyebben tudja a kívánt szélességűre igazítani. Mentse el

az új definíciót! Váltson vissza adatlap nézetbe, és próbálja ki, hogyan lehet új értéket bevinni kiválasztással az Ügyintéző tábla Osztálykód mezőjébe! Próbálja ki, lehet-e olyan értéket beírni az Ügyintéző tábla Osztálykód mezőjébe, ami nem szerepel a listából választhatók között! Stop! Ezen a ponton lényeges különbséget nem lehet észrevenni a lista és a kombinált lista működése között. Figyelmesebb vizsgálódással egy különbség azonban mégis adódik: A kombinált lista esetében a „Csak listaelem?” kérdésre is válaszolni kell a mezőtulajdonságok megadásakor. „Igen” válasz esetén az Ügyintéző tábla Osztálykód mezőjébe bevihető értékeket csak a (kombinált) listából választható értékre vagy NULL értékre korlátozzuk Stop! Felmerül a kérdés, ha az Osztály táblának kettőnél több mezője lenne (például kiegészülne a Bérkeret mezővel), és azok sorrendje Osztálynév, Bérkeret,

Osztálykód, akkor miként lehetne elérni, hogy úgy is csak az Osztálykód és Osztálynév mezők jelenjenek meg a listában? (A probléma az, hogy ha a sorforrás az újabb Osztály tábla lenne, és az Oszlopszám tulajdonságra 2-t adnánk meg, akkor a listában szándékaink ellenére az Osztálynév és a Bérkeret oszlopok látszanának.) – Nos, ilyenkor sorforrásként nem közvetlenül az Osztály táblát, hanem egy, abból dolgozó lekérdezést kell megadni (lásd később). Foglaljuk össze a tapasztalatokat!  Ha egy tábla valamely mezője egy másik (fölérendelt) táblából vett idegen kulcs (pl. az Ügyintéző tábla Osztálykód mezője az Osztály táblából vett idegen kulcs), akkor az ilyen mező értékének megadásakor vagy módosításakor kényelmes megoldást nyújt, ha a mező megjelenítésére olyan listát vagy kombinált listát alkalmazunk, aminek a sorforrása a fölérendelt tábla.  Azonban egyedül a lista vezérlőelem nem

akadályozza meg, hogy a mezőt üresen hagyjuk, vagy közvetlen beírással olyan értéket vigyünk a mezőbe, ami nem szerepel a fölérendelt tábla soraiban. Ahhoz a mezőtulajdonságoknak (lásd a 2 szakaszban) illetve a kapcsolatok tulajdonságainak (lásd 5.2-ben) megfelelő beállítása is szükséges  A kombinált lista esetében viszont van olyan beállítási lehetőség („Csak listaelem” mezőtulajdonság), amivel a mezőbe bevihető értékeket csak a (kombinált) listából választható értékre vagy NULL értékre korlátozzuk. 5.2 Kapcsolatok definiálása (szerkesztése) – egyszerű kapcsolatok Feltételezzük, hogy az Iktató adatbázis meg van nyitva. – A továbbiakban táblák közötti kapcsolatokat fogunk definiálni A kapcsolatok létrehozását, illetve definiálását akadályozhatja, ha az érintett táblák meg vannak nyitva és valamilyen művelet által zároltak. Így a bonyodalmak elkerülése céljából jobb, ha a megnyitott táblákat

bezárjuk, mielőtt rájuk vonatkozó kapcsolatokat definiálnánk Gyakorlat: Nyissa meg a grafikus kapcsolatszerkesztő ablakot az Ügyintéző tábla és az Osztály tábla kapcsolatának meghatározása céljából! ACCESS gyakorlatok 22 Műveletek: Az „Eszközök” menüből válassza „Kapcsolatok” menüpontot. A megjelenő „Tábla hozzáadása” dialógusablakban a „Táblák” füleslapon jelölje ki az Ügyintéző és az Osztály táblát és kattintson a „Hozzáadás” gombra. Mindkét tábla hozzáadása után zárja be a „Tábla hozzáadása” ablakot a rajta lévő „Bezárás” gombbal. (Most a „Kapcsolatok” ablak aktív, és benne egy-egy doboz képviseli a hozzáadott táblákat. A dobozokban a mezők nevei láthatók, köztük az elsődleges kulcs nevét félkövér betűk különböztetik meg.) Stop! Ha egyidejűleg több táblát akarunk kijelölni a „Táblák” füleslapon, a táblák sorára kattintáskor tartsuk lenyomva a Ctrl

billentyűt, ennek hiányában ugyanis csak az az egy tábla jelölhető ki, amire legutoljára kattintunk. – A Ctrl billentyű ilyen célra általában minden olyan esetben alkalmazható, ahol több objektum kiválasztása megengedett. – Természetesen egyenként is kijelölhetjük a hozzáadandó táblákat, de akkor mindegyikre külön-külön kell alkalmazni a „Hozzáadás” gombot Stop! A „Kapcsolatok” ablakban állva utóbb további táblák (sőt lekérdezések) adhatók az ablakhoz. Ez a „Kapcsolatok” menü „Tábla hozzáadása” menüpontjával kezdeményezhető Stop! A későbbiekben látni fogjuk, hogy sok tábla esetén a kapcsolatok áttekinthetetlen, kusza hálózatot képeznek. Azonban nem mindig szükséges az összes definiált kapcsolatot látni Egy adott probléma elemzése szempontjából éppen érdektelen táblák kapcsolatai a „Kapcsolatok” menü „Tábla elrejtése” menüpontjának kiválasztásával tüntethetők el a „Kapcsolatok”

ablakból. – Persze, megelőzően a „Kapcsolatok” ablakban rákattintással ki kell jelölni az elrejtendő táblát. Gyakorlat: Hozzon létre egy, az Osztálykód mezőn alapuló kapcsolatot az Osztály és az Ügyintéző tábla között! (A „Kapcsolatok” ablak aktív.) Műveletek: Kattintson az Ügyintéző tábla dobozában látható Osztálykód mezőnévre és a gombot lenyomva tartva, húzza az egeret az Osztály tábla dobozában látható Osztálykód mezőnévre (ott elsődleges kulcsra), majd engedje fel az egérgombot. A megjelenő „Kapcsolatok” dialógusablakban kattintson a „Létrehozás” gombra. (Most a „Kapcsolatok” grafikus szerkesztő ablakban a megfelelő táblákat összekötő kapcsolóvonal képviseli az éppen létrehozott kapcsolatot.) Stop! A „Kapcsolatok” dialógusablakban a „Létrehozás” gomb alkalmazása előtt a kapcsolat több jellemzőjét be lehetett volna állítani. Ilyen beállításokra azonban a létrehozás után is

van lehetőségünk, – lásd itt egy későbbi gyakorlatnál. Stop! Ha a „Kapcsolatok” grafikus szerkesztő ablakban a táblákat képviselő dobozok elég nagyok ahhoz, hogy bennük az Osztálykód mező neve látható legyen, akkor a kapcsolóvonal mindkét dobozra ezen mezőnév mellett „tapad” rá. – Grafikusan így jelzi az ACCESS a kapcsoló mezőt (amit az ACCESS inkább kapcsolt mezőnek hív) ACCESS gyakorlatok 23 Stop! Azt a táblát, amiben a kapcsoló tulajdonság idegen kulcs, az adatmodellezés (az adott kapcsolatban) alárendelt táblának, az ACCESS pedig kapcsolt táblának nevezi. Az adatmodellezésben azt a táblát, aminek elsődleges kulcsa egy adott kapcsolat kapcsoló tulajdonsága, az adott kapcsolatban fölérendelt táblának mondják. – Előfordulás-szinten hasonlóan szokás beszélni kapcsolt sorokról, illetve alárendelt sorokról. Stop! Az ACCESS-ben lehetőség van nemcsak táblák, hanem lekérdezések közötti kapcsolatok

definiálására is (lásd a későbbiekben). Az adatmodellezési ismereteire támaszkodva válaszoljon a következő kérdésekre:  Miért kell explicit módon létrehozni egy kapcsolatot?  Miért nem határozta meg az Osztály és az Ügyintéző táblák közötti kapcsolatot az a tény, hogy mindkét tábla szerkezetében szerepel az Osztálykód mező? Gyakorlat: Határozza meg az imént létrehozott kapcsolat jellemzőit úgy, hogy  az Ügyintéző tábla Osztálykód mezőjébe csak olyan értéket engedjen bevinni az ACCESS, amilyen az Osztály tábla valamely sorában is előfordul (ezt csak akkor tudja beállítani, ha az idáig bevitt sorok is kielégítik a szabályt);  az Osztály tábla valamely sorában az Osztálykód kulcs módosításakor automatikusan az Ügyintéző tábla kapcsolt soraiban is analóg módosítás hajtódjon végre az Osztálykód mezőben;  az ACCESS ne engedje meg törölni az Osztály tábla valamely sorát, ha létezik az adott

sornak alárendelt sor (az adott sorhoz kapcsolt sor) az Ügyintéző táblában. Műveletek: A „Kapcsolatok” grafikus szerkesztő ablakban kattintson duplán a kapcsolóvonalra, vagy a kapcsolóvonal kijelölése után válassza ki a „Kapcsolatok” menüből a „Kapcsolat szerkesztése” menüpontot. A megjelenő „Kapcsolatok” dialógusablakban kapcsolja be (rákattintással) „Hivatkozási integritás megőrzése” opciót! (Ennek hatására az ACCESS további két opcióra vonatkozó rendelkezést is lehetővé tesz.) Kapcsolja be a „Kapcsolt mezők kaszkádolt frissítése” opciót is. (A „Kapcsolt mezők kaszkádolt törlése” opciót határozottan kikapcsolt állapotban kell hagyni. Figyelje meg, milyen információkat, illetve további beállítási lehetőségeket lát még a dialógusablakban!) Kattintson az „OK” gombra a beállítások érvényesítése céljából. A „Kapcsolatok” grafikus szerkesztő ablakban figyelje meg, hogy a

kapcsolóvonal megjelenítése hogyan jelzi a „Hivatkozási integritás megőrzése” opció bekapcsolt állapotát. Stop! Az „OK” gombra kattintással nem mindig érvényesíthetők a kapcsolat új jellemzői. Az ACCESS visszautasíthatja a változtatásokat, ha az érintett táblák más műveletek által éppen zároltak, vagy ha a kapcsolt táblába korábban olyan sorokat vittünk be, amikben a kapcsolt mező értéke hivatkozási integritást sért, azaz nem szerepel a fölérendelt tábla valamely sorában. – Tehát az ilyen akadályozó körülményeket még az imént leírt műveletek megkezdése előtt meg kell szüntetni. Stop! A „Hivatkozási integritás megőrzése” opció bekapcsolásának hatására az ACCESS csak olyan értékeket enged bevinni az Ügyintéző tábla Osztálykód mezőjébe, ami előfordul az ACCESS gyakorlatok 24 Osztály tábla valamely sorában, illetve megengedi még az üres értéket (NULL értéket vagy nulla hosszúságú

szöveget) is. – Az utóbbit tiltó rendelkezést csak az Ügyintéző tábla Osztálykód mezőjének általános, illetve megjelenítési tulajdonságainál tehetünk Az egyik megoldás: „Kötelező: Igen” és egyidejűleg „Nulla hosszúság engedélyezése: Nem”; a másik megoldás: „Kötelező: Igen” és egyidejűleg „Vezérlőelem megjelenése: Kombinált lista” „Csak listaelem: Igen” A „Kötelező: Igen”; „Nulla hosszúság engedélyezése: Nem” rendelkezések hatása arra az esetre is kiterjed, amikor az Ügyintéző tábla Osztálykód mezője nem kombinált lista, hanem egyszerű beviteli mező. Stop! A „Kapcsolt mezők kaszkádolt frissítése” opció bekapcsolásának hatására az Osztály tábla valamely sorában az Osztálykód kulcs módosításakor az ACCESS automatikusan és analóg módon módosítja az Ügyintéző tábla kapcsolt soraiban az Osztálykód mező értékét. Stop! A „Kapcsolt mezők kaszkádolt törlése” opciót

kikapcsolt állapotban hagyva az ACCESS nem engedi meg törölni az Osztály tábla egy sorát, ha létezik az adott sornak alárendelt sor (az adott sorhoz kapcsolt sor) az Ügyintéző táblában. Stop! A „Kapcsolt mezők kaszkádolt törlése” opció neve valószínűleg hibás fordítás eredménye, mert a valódi értelmét tekintve helyesebb a „Kapcsolt rekordok kaszkádolt törlése” megnevezés. – A továbbiakban mi ezt fogjuk használni Stop! A „Kapcsolt rekordok kaszkádolt törlése” opciónak a bekapcsolása az általunk tárgyalt kapcsolat esetében nem lenne szerencsés, mert azt jelentené, hogy egy osztály megszüntetésekor törölni kell az osztályhoz tartozott ügyintézők adatait is, dacára annak, hogy őket utóbb egy mások osztálynál mégis alkalmazzák. – Más kapcsolatoknál viszont éppen az opció bekapcsolásával lehet beállítani a kívánt működést Például egy rendelés törlése a Rendelés táblából értelemszerűen maga

után kell vonja a rendelés összes tételének a törlését a Rendeléstétel táblából Mit gondol, miből következtetett az ACCESS arra, hogy az Osztály és az Ügyintéző tábla kapcsolata „egy a többhöz” típusú, mint ahogy azt a „Kapcsolatok” dialógusablakban ki is nyilvánítja? Gyakorlat: Az eddig tárgyalt kapcsolatra vonatkozóan próbálja ki mind a háromféle illesztés típus beállítását, közben figyelje meg, hogyan változik a grafikus ábrázoláson a kapcsolóvonal megjelenése. (A háromféle illesztés típus értelmét később a lekérdezésekkel kapcsolatos gyakorlatok teszik majd világosabbá.) Műveletek: A „Kapcsolatok” grafikus szerkesztő ablakban kattintson duplán a kapcsolóvonalra, vagy a kapcsolóvonal kijelölése után válassza ki a „Kapcsolatok” menüből a „Kapcsolat szerkesztése” menüpontot. A megjelenő „Kapcsolatok” dialógusablakban kattintson az „Illesztés típus ” gombra! A megjelenő

„Illesztési tulajdonságok” dialógusablakban választhatja ki az illesztés típusok valamelyikét, és a „OK” gombbal kezdeményezheti annak alkalmazását. 25 ACCESS gyakorlatok 5.3 Lekérdezés két tábla összekapcsolásával – join lekérdezés Az előbbi pontban érintett illesztés típusok jelentése a két táblából való lekérdezésen érthető meg jobban. Annak érdekében, hogy a háromféle illesztés típus közötti különbség érzékelhető legyen, a következő állapotokat célszerű beállítani:  Az Ügyintéző tábla Osztálykód mezőjére engedje meg a nulla hosszúságot (ha a mező kombinált lista vezérlőelem, akkor a mező „Kötelező (kitölteni)” vagy „Csak listaelem” tulajdonságának legalább egyikét is „Nem”-re kell állítani), és hozzon benne létre néhány olyan sort, amiben az Osztálykód üres marad.  Az Osztály táblába is vigyen be néhány újabb kódú osztályt, amilyenekhez még a megadott

ügyintézők egyike sem tartozik. Tegyük fel, hogy az itt leírt előkészületek után a megfigyelés kezdetén az Ügyintéző és az Osztály táblák tartalma a következő: Ügyintéző: Törzsszám 1 2 4 5 6 7 8 Ügyintéző neve Piri Józsi Elemér Zoltán Rózsi Jani Juci Osztály Osztálykód 100 110 150 230 270 300 Osztály neve Számviteli osztály Pénzügyi osztály Fejlesztési osztály Beszerzési osztály Értékesítési osztály Termelési osztály Osztálykód 110 230 110 270 100 Gyakorlat: Definiáljon egy olyan lekérdezést, amiben az ügyintézők törzsszámukkal, nevükkel, valamint az osztály kódja helyett az osztály nevével jelennek meg. Műveletek: Az adatbázis ablakban a „Lekérdezések” füleslapot tegye aktívvá, és abban kattintson az „Új” gombra. Az „Új lekérdezés” dialógusablakban válassza a tervező nézetet, és kattintson az „OK” gombra. (A lekérdezést definiáló ablak jelenik meg üresen, és éppen az üres

állapot miatt az ACCESS a „Tábla hozzáadása” ablakot is felhozza) A „Tábla hozzáadása” ablakban jelölje ki mind az Ügyintéző, mind az Osztály táblát, és kattintson a „Hozzáadás” gombra. Zárja be a „Tábla hozzáadása” ablakot. (Figyelje meg, mit lát a lekérdezést tervező ablak felső részében!) Duplán kattintson a két tábla közötti kapcsolatot képviselő vonal középső részére, és a megejelenő „Illesztési tulajdonságok” ablakban válassza ki az első lehetőséget („1. Csak 26 ACCESS gyakorlatok olyan mezők keröljenek bele, amelyeknél az illesztett mezők mindkét táblában egyenlőek.”), majd „OK”. A tervezőrács részben a „Mező:” feliratú sorban az első oszlopban válassza ki az Ügyintéző.Törzsszám mezőt, a második oszlopban az ÜgyintézőÜgyintézőnév mezőt, a harmadik oszlopban az Osztály.Osztálynév mezőt (A „Megjelenítés” sorban az ACCESS automatikusan mindhárom mezőre

bekapcsolja a megjelenítést. Fogadja el Rendezést egyelőre ne kérjen) Futtassa le a lekérdezést, azaz válassza ki a „Lekérdezés menü” menü „Futtatás” menüpontját, vagy kattintson a „Futtatás” eszközikonra. Stop! A műveletsor leírásában lényeges volt, hogy a kapcsolatot képviselő vonal középső részére kattintást említette, mert a kapcsolóvonalak végéhez közeli kattintás nem az „Illesztési tulajdonságok”, hanem a „Lekérdezés tulajdonságai” dialógusablakot hozza fel. Stop! A lekérdezés futtatása helyettesíthető az adatlap nézetre váltással. A kapott eredmény valami ilyesmi: Ügyintéző: Törzsszám 1 2 4 5 6 Ügyintéző neve Piri Józsi Elemér Zoltán Rózsi Osztály neve Pénzügyi osztály Beszerzési osztály Pénzügyi osztály Értékesítési osztály Számviteli osztály (A lekérdezés eredményén nem jelentek meg azok az ügyintézők, akik nem tartoznak egyik osztályhoz sem; illetve nem jelentek meg

azok az osztályok, amikhez egyetlen ügyintéző sem tartozik.) Nézze meg az imént definiált lekérdezést SQL nézetben! (Ugyanott választható ki, ahol az adatlap nézet vagy tervező nézet.) Amit lát: SELECT Ügyintéző.Törzsszám, ÜgyintézőÜgyintézőnév, OsztályOsztálynév FROM Osztály INNER JOIN Ügyintéző ON Osztály.Osztálykód = ÜgyintézőOsztálykód; Ebben most a FROM záradék az érdekes, ami szerint a lekérdezés forrása az Osztály és az Ügyintéző táblák olyan INNER JOINja (belső összekapcsolása), ami a közös Osztálykód mezőbeli értékek egyenlőségén alapul. Gyakorlat: Próbálja ki a „2. ’Osztály’ MINDEN rekordja és ’Ügyintéző’ csak azon rekordjai, ahol az illesztett mezők azonosak” illesztési lehetőséget! – Mi az eredménye? Hogy néz ki SQL nézetben? Műveletek: Menjen vissza tervező nézetbe. 27 ACCESS gyakorlatok A lekérdezésben szerepet játszó táblák kapcsolatára hozza fel az

„Illesztési tulajdonságok” ablakot, abban válassza ki a 2. lehetőséget, majd „OK” Futtassa le a lekérdezést! Az eredmény: Törzsszám Ügyintéző neve 1 Piri 2 Józsi 4 Elemér 5 Zoltán 6 Rózsi Osztály neve Pénzügyi osztály Beszerzési osztály Pénzügyi osztály Értékesítési osztály Számviteli osztály Fejlesztési osztály Termelési osztály (A lekérdezés eredményén nem jelentek meg azok az ügyintézők, akik nem tartoznak egyik osztályhoz sem; viszont megjelent az összes osztály.) Nézze meg az imént definiált lekérdezést SQL nézetben! Amit lát: SELECT Ügyintéző.Törzsszám, ÜgyintézőÜgyintézőnév, OsztályOsztálynév FROM Osztály LEFT JOIN Ügyintéző ON Osztály.Osztálykód = ÜgyintézőOsztálykód; Gyakorlat: Próbálja ki a „3. ’Ügyintéző’ MINDEN rekordja és ’Osztály’ csak azon rekordjai, ahol az illesztett mezők azonosak” illesztési lehetőséget! – Mi az eredménye? Hogy néz ki SQL nézetben?

Az eredmény: Törzsszám Ügyintéző neve 1 Piri 2 Józsi 4 Elemér 5 Zoltán 6 Rózsi 7 Jani 8 Juci Osztály neve Pénzügyi osztály Beszerzési osztály Pénzügyi osztály Értékesítési osztály Számviteli osztály SQL nézetben: SELECT Ügyintéző.Törzsszám, ÜgyintézőÜgyintézőnév, OsztályOsztálynév FROM Osztály RIGHT JOIN Ügyintéző ON Osztály.Osztálykód = ÜgyintézőOsztálykód;