Nógrádi László
Access XP alapokon (ECDL adatbázis-kezelés modul)
2005.
ISBN 963 86949 0 4
Felelős kiadó: Nógrádi PC Suli Kft. Írta és szerkesztette: Nógrádi László
A könyvborító tervét készítette, és a könyvet nyomtatta: Text-Print Kft, Győr
A könyv készítése során a szerző a lehető legnagyobb gondossággal jártak el. Ennek ellenére hibák előfordulása nem zárható ki, melyekért a szerző felelősséget nem vállal. ©Nógrádi László
Minden jog fenntartva! Jelen könyv egyetlen része sem másolható, vagy sokszorosítható semmilyen formában a szerző előzetes írásbeli engedélye nélkül!
Access XP alapokon
N
apjainkban egyre több ember mindennapi munkaeszköze a számítógép. Bár a legtöbben nap mint nap írnak ugyan leveleket, készítenek táblázatokat, de az adatbázis-kezelést egyáltalán nem ismerik. Ez a könyv nekik szól, vagyis azoknak, akik már megtanulták egy szövegszerkesztő használatát, dolgoztak már táblázatkezelő programban is, de adatbázis-kezelővel még nem találkoztak. Ennek megfelelően azok az eljárások kerülnek csak ismertetésre, melyek számukra újdonságok, esetleg másként kell őket használni. Ebből adódóan nem lesz szó a fájl műveletekről, a formázásokról, a vágólap használatáról, stb. Ugyanakkor az adatbázis-kezelők rendszeresen használt elemei mellett viszonylag sok érdekességet, kiegészítő információt is tartalmaz a könyv, melyek tipográfiailag jól elkülönítve (kisebb, dőlt betűs szedéssel) jelennek meg. Szó esik az adatbázisok tervezéséről is, mely az önállóan megoldandó adatbázis-kezelési feladatokhoz nélkülözhetetlen ismeret. A könyv témakörei gyakorlati tapasztalatok alapján logikailag egymásra épülő sorrendben követik egymást. Mivel a részletes magyarázatok mellett gyakorló feladatok, és azok megoldásai is megtalálhatóak benne, a könyv nagyszerűen használható önképzésre, de ajánlható iskolai tankönyvnek és tanfolyami jegyzetnek is. A tanulást rengeteg táblázat, képernyőkép és ábra segíti, melyek minden esetben egy oldalon szerepelnek a róluk szóló leírással. Itt szeretném felhívni minden informatikát tanuló (és tanító kolléga) figyelmét további könyveimre. Az XP alapokon sorozat Jelen könyv részét képezi egy tankönyvsorozatnak, mely az érettségi, az ECDL, valamint az OKJ alap és középfokú tanfolyamok vizsgakövetelményei alapján lett összeállítva. A sorozat kötetei: ¾ Windows XP alapokon (ECDL operációsrendszer modul); ¾ Word XP alapokon (ECDL szövegszerkesztés modul); ¾ Excel XP alapokon (ECDL táblázatkezelés modul); ¾ Internet Explorer és Outlook Express (ECDL információ és kommunikáció modul); ¾ PowerPoint XP alapokon (ECDL prezentáció és grafika modul); ¾ Access XP alapokon (ECDL adatbázis-kezelés modul). PC Suli XP alapokon sorozat Azok számára, akik a fenti sorozat teljes tananyaga mellett további fontos informatikai ismereteket is el kívánnak sajátítani, ajánlom a következő könyveimet: ¾ PC Suli XP alapokon I. (eszközök, szám- és kódrendszerek, szerzői jog, Windows XP alapok, Windows kellékek, Word XP, Excel XP, Internet); ¾ PC Suli XP alapokon II. (Windows XP haladó, PowerPoint XP, Access XP, Programozási alapismeretek, HTML szerkesztés). A PC Suli I-II. is hasonló felépítésű és tematikájú, mint az Access XP alapokon, így mindkét kötetet sok kép és feladat jellemzi. Iskoláknak összeállításra került egy olyan költségtakarékos kiadás is, mely nem tartalmazza a feladatokat, így egy kötetbe, olcsóbban lehetett a tananyagot összevonni. Könyvek megrendelése, segédanyagok letöltése A fenti könyvek megrendelhetők a www.pcsuli.hu internet címen. Ugyancsak innét letölthető a könyvek összes feladata, valamint számtalan további, a tanulást és a tanítást támogató anyag, többek között: ¾ közel 2.000 diából álló tanári prezentáció a 97-es verziókról; ¾ a DOS részletes tankönyve; ¾ rengeteg alap és középfokú OKJ-s vizsga írásbeli feladatsora; ¾ ajánlott érettségi tételsorok; ¾ próba és éles érettségik feladatsorai, stb. Befejezésül jó tanulást kívánok: Nógrádi László Nógrádi PC Suli Kft. 9021 Győr, Munkácsy u. 1-5.
3
ECDL Adatbázis-kezelés modul
A
z Access az Office programcsomag MDB (Microsoft Database) adatbázisok kezelésére készített eleme. A Microsoft célja a program kifejlesztésével az volt, hogy az Office irodai programcsomag használóinak egy olyan, szervesen a rendszerbe illeszkedő fejlesztőeszközt nyújtsanak, amellyel nagymértékben automatizálva hozhatnak létre munkájukhoz kapcsolódó adatnyilvántartásokat. Az Access mindent tud, ami egy ügyviteli feladatok ellátásához szükséges adatbázis-kezelő program könnyű elkészítéséhez, valamint a kapcsolódó, haladó szintű feladatok megoldásához szükséges. Ebben a könyvben az adatbázis-kezelő működését és kezelését egy nagyobb feladat, egy raktározási rendszer elkészítésének segítségével fogjuk megismerni. Ez a módszer egy kicsit eltér az XP alapokon sorozat többi kötetében alkalmazottól, de több okból is ez látszott célszerűnek. 1. Az adatbázis-kezelés témaköre egy átlag irodai felhasználó látókörétől messze esik, ezért aztán minden csak példákon keresztül magyarázható. 2. Mivel bizonyos komplikációk feloldása gyakran hatással van egymásra, célszerű egy életszerű feladaton keresztül bemutatni a jellemző problémák megoldását. 3. A választott feladatot a gyakorlatban is elkészítve egy olyan alkalmazáshoz juthatunk, melyet szinte mindenki fel tud használni. A fejezet feladatait megoldva végtermékként ugyanis egy raktári nyilvántartó programot kapunk, amely a következőket fogja tudni: ¾ nyilvántartja a szállítók legfontosabb adatait; ¾ letárolja a raktárban tárolt anyagok és termékek alapadatait és a pillanatnyi raktárkészletet; ¾ nyomon követhető a készlet változása, mert letárolásra kerülnek a készletet növelő be-, illetve a készletet csökkentő kivételezések (csak leveszi a készletről a kivételezési jegyen megadott árukat, de nem tud számlázni). Kapcsolódhat a fejezetben elkészítendő raktárrendszerhez egy számlázó program? Természetesen igen. A probléma csak az, hogy egy számítógépes számlázó programra szigorú előírások érvényesek azért, hogy ne lehessen fiktív, vagy szabálytalan számlák alapján az államot megkárosítva könyvelni, jogosulatlanul ÁFA-t visszaigényelni, vagy más visszaélést elkövetni. Ha valaki a már kész raktár rendszerhez kapcsolódó számlázó programot szeretne készíteni, akkor annak minden vonatkozásban meg kell majd felelnie az erre vonatkozó jogszabályi előírásoknak, melyek közül a legfontosabbak: ¾ egyedi, folyamatos, nem ismételhető számlaazonosítónak kell szerepelnie minden számlán; ¾ a számla több példányban kell, hogy készüljön, de minden példányon szerepelnie kell annak sorszámának (első, második, harmadik példány); ¾ stb.
1. Az Access eszközigénye, telepítése Az Access XP az Office programcsomag szerves része, így eszközigénye és telepítése is megegyezik a Word és az Excel programokéval: ¾ a program XP verziójának hatékony futtatásához minimum Pentium III gép és 128 MB RAM ajánlott; ¾ az automatikus telepítő program az Office telepítő CD-jének behelyezése után magától elindul. Az én Office programom nem tartalmazza az Accesst! Miért? Az Access csak az Office Professional verziójában található meg. Az alacsonyabb ára miatt sokkal elterjedtebb Small Business verzióban hiába keressük, annak ugyanis nem része. Az „alacsony ár” egyébként csak relatíve igaz.
2. Az Access elindítása, képernyőjének felépítése A programot a „Start” menü „Minden program” elemének „Office Programok” pontjából a „Microsoft Access” opcióval, vagy az Office eszközsor megfelelő ikonjával tudjuk elindítani. A megjelenő programablak a már jól megszokott felépítésű: ¾ felül a menü és eszközsorok; ¾ középen az adatbázis-ablak; ¾ alul az állapotsor.
4
Access XP alapokon Menü és eszközsorok A menüből kiválasztható elemek, és maguk az eszközsorok is folyamatosan változnak, attól függően, hogy éppen mit teszünk. Ez nem jelent újdonságot, hiszen a korábban megismert programok is így viselkednek (gondoljunk csak az Excel program diagram rajzolására). Adatbázis-ablak A képernyő középső, és egyben legnagyobb részét az adatbázis-ablak foglalja el (az ábrán teljes méretre nagyítva látható), melynek bal oldalán az egyes elemnevekre kattintva válthatunk aszerint, hogy az adatbázis rövidesen bemutatásra kerülő elemei közül éppen melyikkel akarunk dolgozni. Az eszközso1. Ábra: Az Access programablaka ron lévő („Megnyitás”), („Tervezés”) és („Új”) gombok segítségével alakíthatjuk majd kedvünkre adatbázisunk éppen kiválasztott alkotóelemét. Az egyes elemekről mutatott információ függ az adatbázis-ablak nézetétől. A kérhető nézetek remélhetően ismerősek: ¾ Nagy ikonok ¾ Kis ikonok ¾ Lista ¾ Részletek ikonjára kell Az adatbázis-ablakhoz bármikor visszatérhetünk, csak az eszközsor adatbázis-ablak kattintanunk (ez az ikon csak akkor jelenik meg, ha nem látható az adatbázis-ablak). Állapotsor A képernyő alján található állapotsor ugyanúgy, mint a már megismert programoknál, most is hasznos kiegészítő információkat nyújt a pillanatnyi szerkesztési helyzetről. Az viszont általánosságként ebben a programban is leszögezhető, hogy egy adott feladatot több módon is elvégezhetünk, azaz egyező eredményhez juthatunk egy billentyűkombináció leütésével, menü kiválasztásával, illetve egy ikonra kattintással, de a menüt használva több lehetőség áll rendelkezésünkre. Abban az esetben, ha egy konkrét célunk van ugyan, de nem tudjuk, hogy azt miként valósíthatjuk meg, kattintsunk a manipulálni kívánt elemre az egér jobb gombjával. A megjelenő helyi menü tájékoztatást nyújt az adott helyen elérhető összes lehetőségről. Ha az általunk elérni kívánt esemény nem szerepel benne, akkor azt valószínűleg nem is lehet az adott szituációban végrehajtani. További segítséget kapunk az Access szituáció érzékeny súgójától, amit az F1 billentyűvel indíthatunk el. Nem így néz ki a képernyőm (nincs eszközsor és állapotsor, illetve adatbázis-ablak) A „Nézet” menü megfelelő opcióit indítva ki-be kapcsolhatjuk az egyes képernyőelemeket. Adatbázis-ablak pedig csak akkor van, ha megnyitottunk, vagy létrehoztunk egy adatbázist.
3. Mit ért az Access adatbázison? Míg az Excel adatbázis alatt csak magukat az adatokat érti, az Access értelmezésében az adatbázis már jelentősen több ennél: az adatbázis egy olyan komplex fájl, melynek az adatok mellett részei többek között adatbevitelt megkönnyítő űrlapok, a keresett adatok leválogatását végző lekérdezések, és a különféle formázott nyomtatási lehetőségeket nyújtó jelentések is. Egy Access adatbázis valójában tehát egy olyan öszszetett állományt jelent, ami az adott adminisztrációs, pénzügyi, termelésirányítási, vagy egyéb feladathoz kapcsolódik, és számtalan különböző szerepű összetevőből állhat. Újszerűsége és fontossága miatt tekintsük át részletesebben az egyes elemeket és szerepüket.
5
ECDL Adatbázis-kezelés modul Különféle adatmodellek Az Access a 70-es években megjelent relációs adatmodellre épül, melynek lényege az, hogy az adatokat több, egymáshoz kapcsolódó táblázatban tárolják. A relációs adatmodell mellett azonban két másik, ma már kevésbe elterjedt adatmodell is létezik, melyek tárgyalásával terjedelmi okokból egyáltalán nem foglalkozunk: ¾ hálós a 60-as évek elején jelent meg; ¾ hierarchikus a 60-as évek végén fejlesztették ki.
3.1 Adattábla, adatmező, adatrekord Adattábla Az adattáblákban összetartozó információcsoportok adatait tároljuk, pl. raktári készletek, szállítók és vevők adatai, stb. Ezt egy táblázatként képzelhetjük el, és a valóságban is, mint egy táblázatot jeleníti meg az Access. Egyedtípus A szakirodalomban gyakran lehet találkozni az „egyedtípus” kifejezéssel, ami a relációs modellben az egy táblába kerülő információcsoportoknak felel meg.
Rekord Az adattáblák az adatokat úgynevezett 2. Ábra: Egy tábla adatlap nézetben rekordokban tárolják. A rekord az adattábla 6 mezővel és 5 rekorddal egy-egy sorának felel meg, és az információcsoport egy elemének összes adatát tartalmazza, például egy alkalmazott összes paraméterét (Kovács Péter, Elnök, 125, (96) 513-320, …). Mező Az azonos jellegű, tehát az egy oszlopba kerülő adatok gyűjtőneve a mező, mint például az összes különféle beosztás neve (elnök, pénztáros, alelnök, …). Az adattábla azonban a tényleges adatokon kívül még sok fontos további olyan információt is tartalmaz, mely az egész adatbázis viselkedését, megjelenését döntően befolyásolja. Ilyenek például az adatok különféle szempontok szerinti sorrendjét tároló úgynevezett indexek (5.2.2.2.9.), vagy az elfogadható adatokat megadó „érvényességi szabály” (5.2.2.2.5.), illetve maguknak az egyes adatoknak az adattáblában való megjelenési képét befolyásoló „formátum” (5.2.2.2.1.), és „beviteli maszk” (5.2.2.2.2.).
3.2 Lekérdezés Az adattáblákban tárolt adatok megjelenítésére többnyire nem közvetlenül adattáblákat fogunk majd alkalmazni, hanem lekérdezéseket. Ennek az oka az, hogy gyakran nem minden adatra vagyunk kíváncsiak, hanem csak bizonyos feltételnek megfelelő rekordokra, sőt, azoknak is csak adott mezőire. Ezt a legegyszerűbben lekérdezésekkel valósíthatjuk majd meg. Sajnos azonban a lekérdezés is táblázatos formában jeleníti meg az adatokat, ami nem minden esetben megfelelő. Ilyenkor, illetve egészen profi megoldásoknál, nem közvetlenül alkalmazzuk adatmegjelenítésre a lekérdezést. Űrlapokat, illetve jelentéseket hívunk majd segítségül, de általában ezek mögött is ott van egy-egy jól összeállított lekérdezés. A lekérdezések tehát annyiban jelentenek többet egy adattáblánál, hogy: ¾ ha szükséges, nem mutatnak meg minden adatmezőt, de ennek az ellenkezője is megoldható, azaz olyan adatot is kijelezhetnek a lekérdezések, melyek több adatmező tartalmából kerülnek kiszámolásra; ¾ az egyes rekordokhoz tartozó, és a lekérdezésben megjelenített adatokból igényünknek megfelelő statisztikai számításokat is végeztethetünk, mint például összegzés, átlag számítása, stb.; ¾ és végül akár külön adattáblában tárolt mezők is megjeleníthetőek egyszerre (ez ugyan űrlapokkal és jelentésekkel közvetlenül is megoldható, de egyszerűbb lesz a dolgunk, ha előbb készítünk egy több táblán alapuló lekérdezést);
6
Access XP alapokon A lekérdezések azonban az adatok leválogatott megjelenítésén kívül alkalmazhatók bizonyos feltételeknek megfelelő rekordok törlésére, módosítására is. Bár még ezzel sincs vége a lehetőségeknek, a továbbiakat már csak a lekérdezések részletes ismertetésekor tárgyaljuk, mert azokat nehéz lenne ilyen röviden bemutatni.
3.3 Jelentés Mivel a jelentések végcélja az adatok papír adathordozón történő bemutatása, ennek érdekében az információk nyomtatásra szánt formában kerülnek elrendezésre rajta. Ugyanakkor, mivel a jelentések kifejezetten csak kimeneti eszköznek tekinthetőek, az adatok módosítására nem alkalmazhatóak. A jelentések segítségével is készíthetünk olyan összesítéseket, mint a lekérdezésekkel, azoknál azonban sok szempontból mégis jelentősen többet nyújtanak. Segítségükkel többek között lehetőség nyílik: ¾ az adatok tételes és göngyölített értékeinek egy időben történő listázására (lekérdezéseknél vagy csak az egyik, vagy csak a másik értékek szerepelhetnek); ¾ az adatok grafikus megjelenítésére.
3.4 Űrlap Az űrlapok az adatokat látványos, jól áttekinthető grafikus formában jelenítik meg, s egyúttal biztosítják azok módosítását is. Űrlapokat az Access programban általában két okból hozhatunk létre: ¾ leggyakrabban adatfelviteli szándékkal; ¾ illetve ritkábban az elsősorban képernyőre szánt összetett lekérdezések megjelenítése céljából. Ennek megfelelően az űrlapokat elsősorban képernyő orientált bemeneti eszköznek kell tekinteni, bár kinyomtatásuk is lehetséges. Igazság szerint nekem az jelentette eleinte a legnagyobb problémát, hogy ugyanarra a célra több Access eszköz is szolgál. Például: ¾ adatbevitel lehetséges közvetlenül az adattáblába; egy lekérdezésen keresztül; illetve egy űrlappal. ¾ információ kigyűjtés megoldható lekérdezéssel; jelentéssel; illetve űrlappal is. Sokáig nem értettem mi a különbség a jelentés, a lekérdezés és az űrlap között. Pontosan ezért a későbbiekben egy-egy táblázatban is összehasonlítom a jelentést és a lekérdezést egymással (7.), illetve az űrlapot az összes többi elemmel (8.).
3.5 Makró Ha valamely feladat megoldását nem találjuk meg a menükben, vagy az egyéb lehetőségek között, bátran fordulhatunk a makrókhoz. A makrókat az Access programban majd nem „rögzítjük” mint az Excelben, hanem előre megírt makrókat alkalmazunk úgy, hogy a megfelelő paramétereiket megadjuk. Amennyiben az Access programban egy komolyabb alkalmazást kívánunk készíteni, ne is reménykedjünk abban, hogy elkerülhetjük őket, mert szinte biztosan szükségünk lesz néhány makró alkalmazására is. Terjedelmi okokból a könyvben nem tárgyaljuk a makrókat, de a www.pcsuli.hu címen részletes dokumentáció található róla.
4. Új adatbázis létrehozása Új adatbázis létrehozására két lehetőségünk van: 1. Az alapoktól kezdve, a saját elképzeléseinknek megfelelően mi magunk alakíthatunk ki mindent. Ehhez a „Munkaablak” „Üres adatbázis” elemét kell választanunk. A kapott „Új adatbázis” ablak valójában nem más, mint egy mentő párbeszédablak, melyben meg kell adnunk, hogy hová és milyen néven kerüljön elmentésre az adatbázis, vagyis az az állomány, mely tartalmazza majd a korábban már röviden megbeszélt táblákat, lekérdezéseket, űrlapokat, jelentéseket és makrókat.
7
ECDL Adatbázis-kezelés modul Érdemes az adatbázisokat az „Adatforrások” mappába menteni, mert ez a tervezett helyük, és sok program később majd itt is keresi az őket. Az adatbázisok alapértelmezett neve „dbN”, ahol „N” egy futó sorszám. Természetesen helyette célszerűbb most is a beszélő nevek alkalmazása. Az adatbázisok az Accessnél „MDB” típusúak, ikonjuk alakja pedig . Ezzel azonban még csak egy olyan fájlt hoztunk létre, mely tökéletesen üres, nincs benne semmilyen információ. Az egészet 3. Ábra: Üres adatbázis elmentése úgy kell elképzelni, mintha az Excelben történő munkát úgy kellene kezdeni, hogy elmentünk egy olyan munkafüzetet, melyben egyetlen munkalap sincs. Amikor azután adatokat akarunk bevinni, hozzáadunk egy üres munkalapot, ha diagramot akarunk rajzolni, akkor pedig egy diagram lapot, stb. Mindez elsőre eléggé furcsa, de majd megszokjuk. 2. Egy varázsló segítségével sablonok alapján dolgozunk. Ezt úgy tehetjük meg, hogy a „Munkaablak” „Általános sablonok…” pontjára kattintunk. Ekkor az „Adatbázis varázsló” segítségével egy, a Microsoft által tervezett minta alapján fogunk majd egy új adatbázist létrehozni. Miután kiválasztottuk a sablont, ez esetben is el kell menteni az adatbázist. A varázsló a továbbiakban segít összeválogatni az adott feladathoz egyáltalán szóba kerülhető adatok közül a nekünk szükségeseket. Így az adatbázis4. Ábra: Sablon választása ba belekerülnek az általunk megadott adatokon alapuló üres adattáblák, illetve az előre elkészített lekérdezések, űrlapok és jelentések. 1. Feladat: Hozzunk létre egy új adatbázist „Raktári rendszer” néven! A feladat megoldásához most nem fogunk varázslót alkalmazni, mivel így nehezebb a feladat. Ez első hallásra eléggé ésszerűtlennek tűnik, de nem véletlen. Ha ugyanis varázsló nélkül is el tudunk készíteni egy teljes adatbázist (több adattáblával, kapcsolatokkal, lekérdezésekkel, stb.), akkor mindez varázslóval, ahol csak kérdésekre kell majd választ adni, már könnyen fog menni. Igazság szerint a varázsló mellőzésének más oka is van, amiről a kiegészítő információkban lehet többet olvasni. Megoldás: Indítsuk el az Access programot a „Start” menü „Minden program” eleméből az „Office programok”, majd a „Microsoft Access” pontokat választva. A „Munkaablakban” kattintsunk az „Üres adatbázis” elemre. Ha valamilyen okból nem lenne munkaablakunk, kattintsunk a ikonra. A megjelenő „Új adatbázis” ablakban lépjünk be az „Adatforrások” mappába, azután pedig a „Fájlnév” mezőbe gépeljük be a „Raktári rendszer” nevet, végül kattintsunk a „Létrehozás” gombra.
8
Access XP alapokon Ahol lehet, használjunk varázslót (?) Az Access használatának egy fontos alapelve, hogy sok helyen varázslók segítik a munkánkat, amelyekkel a legtöbb probléma automatizáltan oldható meg. Ezért ha nem vagyunk tisztában azzal, hogy miként kezdjünk neki egy feladatnak, az a legjobb stratégia, hogy a varázslók segítségével egy, az elvárásokhoz leginkább közelítő megoldást készítünk el. A későbbiek során azután az így létrehozott elemeket folyamatosan finomítva azokat saját célunkhoz igazítjuk. Konkrét esetünkben tehát, amikor is egy raktári rendszert akarunk elkészíteni, célszerű lenne a „Leltár” nevű sablont használva az „Adatbázis varázslóval” dolgoznunk. Az így elkészített adatbázis a következő adattáblákat tartalmazná: Az adattábla neve a táblában lévő mezők (a felsorolás nem mindig teljes körű) ¾ Információk a cégemről TelepítésKód, Cég neve, Postacím, Város, Állam, Irányítószám, Ország/terület, Telefonszám, Faxszám; ¾ Termékek Termékkód, Terméknév, Termékleírás, Kategóriakód, Sorozatszám, Egységár, Minimumkészlet, Tartalék; ¾ Vétel és eladási információk Tranzakciókód, Tranzakció dátum, Termékkód, Beszerzés megbízás kód, Tranzakció leírás, Egységár, …; ¾ Beszerzési megbízás információk Beszerzési megbízás kód, Megbízás száma, Beszerzési megbízás leírása, Szállító kód, Alkalmazottkód, …; ¾ Kategóriák Kategóriakód, Kategórianév; ¾ Információ alkalmazottakról Alkalmazottkód, Vezetéknév, Keresztnév, Beosztás, Mellék, Mhelyi telefon; ¾ Szállítási módok Szállításmód-kód, Szállítás módja; ¾ Szállítók Szállítókód, Szállítónév, Ügyintéző, Kapcsolat címe, Postacím, Város, Irányítószám, Állam, …; A sablonokkal való munkával csak az a baj, korántsem biztos, hogy azok az adatok kerülnek letárolásra, melyekre szükségünk van. Ez a példa szerinti „Leltár” sablonnál sincs másként. A felesleggel nem lesz gond, mert ami nem kell, az a varázsló egyik lépésében törölhető, de ami nincs a listában, azt az adatot nem is tudjuk majd letárolni, csak ha módosítjuk az adattábla szerkezetét. A varázsló egyúttal elkészíti az adatbevitelhez és módosításhoz szükséges összes űrlapot, valamint az esetleg igényelt listák készítéséhez szükséges jelentéseket. Ezeken kívül egy menürendszerhez hasonló funkciójú, úgynevezett kapcsolótábla is kialakításra kerül. A varázsló futása közben lehetőség van az egyes táblák mezői közül a nem szükségesek elhagyására, valamint minták választásával a beviteli képernyők és a kimeneti listák megjelenésének befolyásolására is. Igazság szerint azonban egy ilyen automatikusan generált komplett adatbázis valószínűleg elég messze fog esni az általunk kívánt eredménytől. Nekem az a véleményem, hogy leginkább csak a program egyes elemeinek megismerésére, a trükkök ellesésére használható. Ezzel szemben az egyes részfeladatoknál, űrlapok, jelentések készítésénél bátran alkalmazzunk varázslókat. Nyomtatással kapcsolatos problémák megelőzése Felhívom a figyelmet arra, hogy ha a Windowsban nincs beállítva alapértelmezett nyomtató, akkor az XP-nél régebbi Access esetében adatbázis létrehozás közben hibaüzenetet kaphatunk, az automatikus létrehozás pedig megszakad. Ezt egy nyomtató telepítésével kerülhetjük el, amit akkor is megtehetünk, ha nem is rendelkezünk vele.
5. Adattáblák tervezése, létrehozása Mint azt éppen az imént leszögeztük, adattáblák alatt azokat a táblázatokat értjük, amelyek az adatbázisban a tulajdonképpeni adatokat tárolják. De még mielőtt az adattáblák létrehozásáról részletesebben szót ejtenénk, az adatbázisok és az adattáblák tervezéséről is kell beszélnünk. Miért? Mert mind az Accessben, mind bármelyik más adatbázis-kezelő programban csak gondos tervező-előkészítő munka után lehet elkezdeni dolgozni.
5.1 Adattáblák tervezése A most következő, a tervezéshez kapcsolódó ismeretek fontosságát sejtésem szerint az olvasók közül sokan csak akkor fogják felismerni, miután már beletörött a bicskájuk egy feladat megoldásába. Ezt megelőzendő ne lapozzuk át, hanem inkább próbáljuk megérteni.
5.1.1 Egyetlen tábla problémai: redundancia, anomália Nyilvántartások készítésekor elsőként azt kell gondosan áttanulmányozni, hogy az adott feladattal kapcsolatban milyen adatokra lehet egyáltalán szükségünk.
9
ECDL Adatbázis-kezelés modul Gépkocsik egyedi és típus adatai Ha például egy fuvarozó válNorma lalat járműveinek nyilvántartása szerinti TerhelhetőRendszám Típus Lökettérfogat Üzemanyag a feladat, akkor egy olyan adatfogyasztás ség (kg) (liter) bázist kell létrehozni, melyben a GKB-121 Opel Corsa 1152 7,2 Benzin 450 gépkocsik összes alapadata megKHJ-253 Peugeot Partner 1865 6,6 Gázolaj 600 található. A táblázatot megvizsHHB-257 Opel Corsa 1152 7,2 Benzin 450 HHB-251 Opel Corsa 1152 7,2 Benzin 450 gálva azonban azt látjuk, hogy IGH-754 Opel Astra 1350 7,9 Benzin 300 nagyon sok adat többször is isPSK-125 Peugeot Partner 1865 6,6 Gázolaj 600 métlődik benne. 1. Táblázat: Egy táblázat esetén elkerülhetetlen a redundancia Redundancia A többszörös letárolást redundanciának nevezik, amit mindenképpen el kell kerülni. Miért? Azért, mert a redundáns adatok azon kívül, hogy felesleges helyet foglalnak el, egy további problémát, úgynevezett módosítási anomáliát is okoznak. Anomáliák A redundancia tehát módosítási anomáliát okoz, de még két további anomáliáról is szokás beszélni. Lássuk tehát az anomáliákat: ¾ módosítási anomália A redundancia miatt az adatok módosítása nehézkes. Példánknál maradva tegyük fel, az APEH úgy dönt, hogy az Opel Corsa típusra előírt fogyasztási norma túlságosan magas. Kevesebből, mondjuk 6,8 literből is ki kell, hogy jöjjön az autót üzemeltető. Ekkor azonban minden rekordban módosítani kellene ezt az adatot. ¾ törlési anomália Ha egyetlen táblában tárolunk minden adatot – változatlanul eredeti példánknál maradva – amennyiben mindkét Peugeot Partnert törölnénk, a típusra vonatkozó adatok is törlésre kerülnének. ¾ beszúrási anomális Amíg valamely járműtípusból egyetlen darab sincs, addig nem tudjuk a típus adatait sem felvenni.
5.1.2 Több tábla és azok kapcsolata elsődleges és idegen kulccsal Mi a megEgyedi adatok Típus adatok oldás? Pontosan Norma ÜzemRendszám Típus Típus Lökettérfogat szerinti Terhelhetőség (kg) az, mint amit a anyag fogyasztás lusta gépjármű GKB-121 Opel Corsa Opel Corsa 1152 7,2 Benzin 450 előadók már 50 KHJ-253 Peugeot Partner Opel Astra 1350 7,9 Benzin 300 éve kitaláltak erHHB-257 Opel Corsa Peugeot Partner 1865 6,6 Gázolaj 600 HHB-251 Opel Corsa re a célra. IGH-754 Opel Astra A járművek PSK-125 Peugeot Partner nyilvántartására 2. Táblázat: Ha két táblázatra bontjuk az adatokat, a problémák egy része megoldódik szánt füzet egyik oldalára csak a rendszámot és típust, egy másik lapra pedig az egyes típusok paramétereit (lökettérfogat, fogyasztási norma, üzemanyag, terhelhetőség, stb.) kell írni. Így nem kell újra és újra leírni ugyanazokat a típusadatokat, illetve az esetleges változtatás is könnyebb. A két tábla közötti kapcsolatban a mindkét táblában szereplő „Típus” mező különleges szerepet tölt be. Elsődleges kulcs és idegen kulcs ¾ elsődleges kulcs Azt az adatát nevezzük a tábla elsődleges kulcsnak, melynek segítségével minden sora azonosítható. Ilyen szerepe van például a „Típus” mezőnek a „Típus adatok” táblában. Az elsődleges kulcs egy-egy értéke a táblákban mindig egyedi. Tervezéskor aláhúzás szolgál a jelölésére. ¾ idegen kulcs A kapcsolat érdekében az elsődleges kulcs értékét a másik táblában is tárolni kell. Ez az adat ott csak az azonosítás miatt, mint egy idegen adat szerepel, ezért idegen kulcsnak is nevezik. Az idegen kulcs adott értéke egy-egy táblában többször is elő-
10
Access XP alapokon fordulhat. Példánkban a „Típus” mező tölt be ilyen funkciót az „Egyedi adatok” táblában. A tervezéskor szaggatott aláhúzással szokták jelölni. Egy-egy táblában természetesen egyszerre fordulhat elő elsődleges és idegen kulcs is. Az egyedi adatok táblában például elsődleges kulcs szerepe lesz majd a „Rendszám” mezőnek, míg a „Típus” idegen kulcsként funkcionál. Összetett és mesterséges elsődleges kulcs Példánkban a két táblázat összekapcsolására a típusok tényleges megnevezése szolgált. Ezzel nem is lenne gond, ha még mindig ZISZ, Pobjeda, Moszkvics, Volga, stb. (made in CCCP) típusú gépkocsikból állna egy-egy cég gépkocsiparkja. A típusfejlesztés e márkáknál felesleges volt, hiszen mindegyik típus olyan remekül siTípus adatok Egyedi adatok került, hogy évtiNorma zedekig változat- Rendszám szerinti ÜzemTípus Típus Lökettérfogat Terhelhetőség (kg) fogyasztás anyag lan kivitelben le(liter) hetett velük épíGKB-121 Opel Corsa Opel Corsa 1152 7,2 Benzin 450 teni a szocializKHJ-253 Peugeot Partner Opel Astra 1350 7,9 Benzin 300 HHB-257 Opel Corsa Peugeot Partner 1865 6,6 Gázolaj 600 must. Az állandó HHB-251 Opel Corsa Peugeot Partner 1465 8,6 Benzin 600 harckészültség érIGH-754 Opel Astra dekében az alkatPSK-125 Peugeot Partner részellátást is egy PXK-235 Peugeot Partner agyafúrt módszer3. Táblázat: Egyetlen mező sokszor nem használható egyértelmű azonosítóként rel egyszerűsítetTípus adatok Egyedi adatok ték: minden márNorma ka csak egyetlen TípusTípusszerinti ÜzemTípus Lökettérfogat Terhelhetőség (kg) változatban volt Rendszám kód kód fogyasztás anyag (liter) forgalomban. NéGKB-121 1 1 Opel Corsa 1152 7,2 Benzin 450 mi mozgalmassáKHJ-253 3 2 Opel Astra 1350 7,9 Benzin 300 got csak a gazdag HHB-257 1 3 Peugeot Partner 1865 6,6 Gázolaj 600 HHB-251 1 4 Peugeot Partner 1465 8,6 Benzin 600 színválaszték jeIGH-754 2 lentett: fekete az PSK-125 3 ÁVH és a TemetPXK-235 4 kezési Vállalat, 4. Táblázat: Ha nevek helyett kódokat alkalmazunk, tovább javul a helyzet fehér a Mentők, és szürke a Főtaxi számára. Ma már azonban számtalan konstrukcióban készül minden típus, mint például különféle lökettérfogatú, illetőleg üzemanyagú motorvariációk, stb. (pl. benzines és diesel, 1,4-es és 1,6-os, stb.). A típus így már nem felel meg elsődleges kulcsnak. Tegyük fel, hogy képzeletbeli cégünk vesz egy új Peugeot Partnert, de nem diesel, hanem benzin üzeműt. Ha beviszi a táblázatba, rögtön fellép ez a probléma: nem lehet a típus alapján beazonosítani a műszaki adatokat, hiszen több különböző paraméterekkel rendelkező járművet ugyanúgy hívnak. Erre két megoldás lehetséges: ¾ vagy összetett elsődleges kulcsot alkalmazunk, ¾ vagy egy külön mezőt veszünk fel elsődleges kulcsnak. A konkrét esetben ez annyit jelent, hogy ¾ vagy felveszünk egy külön mezőt elsődleges kulcsnak; ¾ vagy a „Típus”, és az „Üzemanyag” mezőket együtt alkalmazzuk kulcsként. Bár a két megoldásból általában az összetett kulcs választása a célszerűbb, most – mint azt az előző ábrán is láthatjuk – nem ezt alkalmaztuk. Ha azonban figyelmesen átnézzük eddigi munkánkat, most is láthatunk ismétlődő adatokat, mégpedig az üzemanyag mezőben. Ezt egy újabb táblázattal megszüntethetjük, melyben a különféle üzemanyagok kerülnek megnevezésre. Persze aki a kákán is csomót keres, most is felfedezhet némi redundanciát, hiszen mind a „Típuskód” mind az „Üzemanyag kód” ismétlődik.
11
ECDL Adatbázis-kezelés modul Ez azonban már Típus adatok Egyedi adatok nem jelent gondot, Norma TípusÜzemanyag mert a duplikált táro- Rendszám TípusTípus Lökettérfogat szerinti kód kód kód fogyasztás lás szempontjából az GKB-121 1 1 Opel Corsa 1152 7,2 1 egyedi azonosítóként KHJ-253 3 2 Opel Astra 1350 7,9 1 használt kódok nem HHB-257 1 3 Peugeot Partner 1865 6,6 2 zavarnak. Ennek elHHB-251 1 4 Peugeot Partner 1465 8,6 1 IGH-754 2 lenére azért jó, ha PSK-125 3 Üzemanyagok megjegyezzük azt, PXK-235 4 kód Üzemanyag Üzemanyag hogy minden kulcs csak a szükséges mi1 Benzin nimális hosszúságú 2 Gázolaj legyen, hiszen ellen5. Táblázat: Egy további táblázattal már minden kező esetben felesredundancia és anomália megszüntethető leges helyet foglal el. Befejezésül lássuk az elsődleges és az idegen kulcsokat: ¾ elsődleges kulcs „Üzemanyagok” táblából „Üzemanyag kód”; „Típus adatok” táblából „Típuskód”; „Egyedi adatok” táblából „Rendszám”; ¾ idegen kulcs „Típus adatok” táblából „Üzemanyag kód”; „Egyedi adatok” táblából „Típuskód”.
Terhelhetőség (kg) 450 300 600 600
5.1.3 Időben állandó és változó adatok tárolása (törzs és mozgás adatok) Típusok A példának válaszGépkocsik Norma tott fuvarozó vállalatTípusTerhelhetőRendTípusÜz. ag. szerinti Típus Lökettérfogat nál csak olyan adatokat szám kód kód kód ség (kg) fogyasztás tárgyaltunk eddig, me- GKB-121 1 1 Opel Corsa 1152 7,2 1 450 lyek egy viszonylag KHJ-253 3 2 Opel Astra 1350 7,9 1 300 1 3 Peugeot Partner 1865 6,6 2 600 bővebb időintervallu- HHB-257 1 4 Peugeot Partner 1465 8,6 1 600 mon belül is állandó- HHB-251 IGH-754 2 nak tekinthetőek. Ha PSK-125 3 Üzemanyagok Tankolási adatok valamelyik adat megPXK-235 4 Üz. ag. Km óra Mennyiség Dátum Üzemanyag Rendszám változik, egyszerűen kód állás (l) kikeressük a megfelelő 1 Benzin GKB-121 2000.01.03. 15 253 36 2 Gázolaj KHJ-253 2000.01.06. 36 581 51 táblázatban, és értékét GKB-121 2000.01.06. 16 125 38 átírjuk az újra. … … … … Létezhetnek azon6. Táblázat: Egy újabb táblázattal az események adatai is megőrizhetőek (a „…” ban olyan adatok (a jearra utal, hogy az adott táblázat nagyobb, de csak egy része került ábrázolásra) lenlegi példa esetében is), amelyek eseményeket írnak le. Olyan eseményeket, amelyek paramétereit a későbbiekben tanulmányozva döntéseket hozhatunk, illetve mely események adataiból később (hónap, negyedév, év végén) számításokat, jelentéseket kell készíteni. Ehhez azonban minden korábbi értéknek is meg kell lennie, tehát az adatokat is másként kell kezelni. A probléma úgy oldható meg, hogy az eseményeket leíró adatok külön táblákba kerülnek, melyeket majd folyamatosan bővítünk: minden esemény egy-egy újabb sor, azaz egy-egy rekord hozzáadását fogja eredményezni. Ha például a gépkocsik tankolási adatait is meg kívánjuk őrizni – amire a költségelszámolás miatt szükség is lesz – akkor ezt egy újabb táblázatban kell megtennünk. Természetesen majd ez a táblázat is tartalmaz a tankolás adatain kívül egy egyedi azonosító adatot, célszerűen a rendszámot. Amikor egy-egy autót feltöltenek üzemanyaggal, akkor a táblázat egy-egy újabb sorral, azaz rekorddal fog bővülni. Törzsek A törzs adattáblákban tárolt rekordok általában egy személy, tárgy alapadatait tartalmazzák, és csak nagyon ritkán változnak. Ebbe a kategóriába tartozhatnak például a következők:
12
Access XP alapokon termékek; mértékegységek; ¾ szállítók; ¾ vevők; ¾ gépkocsitípusok. Mozgás, vagy változó adatok A mozgás állományokban a tevékenységhez kapcsolódó, változást okozó folyamatok adatai kerülnek letárolásra. Ilyenek például: ¾ be- és kivételezés adatai; ¾ tankolási adatok. ¾ ¾
5.1.4 Táblákra bontás eljárásai: a normalizálás, az ER modell és a józan ész módszer Amennyiben egy nagyobb feladathoz a józan észen alapuló módszerrel akarnánk a kritériumoknak minden szempontból megfelelő adattáblákat megtervezni, ahhoz nagyon nagy gyakorlatra lenne szükség, és még akkor is komoly nehézségekbe ütköznénk. Szerencsére erre a feladatra két, a munkánkat jelentősen megkönnyítő módszert is lehet alkalmazni. ¾ Normalizálás Alkalmazásával egyetlen nagy adattáblát több kisebb, egymáshoz kapcsolódó adattáblára lehet bontani. A normalizálás tudományosan megalapozott matematikai módszeren alapul. ¾ ER modell Ez egy könnyebben megtanulható, rendkívül szemléletes grafikai módszer.
5.1.4.1 Normalizálás A normalizálás lényege a következő: 1. Létrehozunk egy olyan táblázatot, melyre igazak a következők: ¾ az oszlopok száma és sorrendje rögzített; ¾ minden oszlop tartalma meghatározott, és nincs köztük két egyforma; ¾ minden sora azonosítható, és nincs közöttük két azonos; ¾ nincs benne többértékű mező (minden mezőben csak egy-egy érték található); 2. Amennyiben összetett elsődleges kulcsú a tábla, az olyan mezőt, mely az összetett elsődleges kulcsnak csak egy összetevőjétől függ, külön táblába kell rakni. Az új táblába a kérdéses mezőn kívül fel kell venni az összetett kulcs adott komponensét is, mely ott önmagában lesz az elsődleges kulcs. Az összetett kulcs adott eleme természetesen megmarad az eredeti táblában is, ahol egyben idegen kulcs is lesz. Erre azért van szükség, mert két tábla közötti kapcsolathoz mindig mindkét táblában kell szerepelnie ugyanannak az adatnak, az egyikben elsődleges, a másikban idegen kulcs funkcióval (de ezt már tanultuk). 3. Nincs olyan mező, mely nem az elsődleges kulcstól függ. Amennyiben van, annak külön táblát hozunk létre Ha egy tábla megfelel mindhárom feltételnek, akkor normál állapotban, vagy harmadik normál formában (3NF) van. E munkánk során nem szükséges a teljes táblákat lerajzolni. Elegendő a táblák neve után zárójelben a mezőneveket felsorolni. Az elsődleges és idegen kulcsokat a már megbeszélt aláhúzásos módszerrel, a kapcsolatokat pedig egy-egy vonallal szokás jelölni. Sajnos a három szabályból a 2. és a 3. még sokszori olvasásra is nehezen értelmezhető. Megértésükhöz sok-sok példára lenne szükség, de terjedelmi okokból erre nincs lehetőség. Akit a témakör részletesebben is érdekel, a www.pcsuli.hu címen talál hozzá anyagot. Mit jelent a többértékű mező? Tegyük fel, hogy le szeretnénk tárolni egy osztály tanulóinak adatait, beleértve mindenkinek az általa felsorolt, tetszőleges számú kedvenc együttesét is. Az együttesek neveit külön-külön mezőkben tárolva a feladatot nem oldhatjuk meg, mert azt sem tudjuk megmondani, hogy hány ilyen mezőt kellene felvenni. A problémát azonban úgy sem oldhatjuk meg, hogy egy mezőben tároljuk az összes együttes nevét (ez utóbbi eset lenne a többértékű mező).
13
ECDL Adatbázis-kezelés modul Azért nem szabad többértékű mezőt használni, mert a tartalmára történő keresés minden szituációban más és más technikát kívánna. Helyette azt a megoldást kell alkalmazni, hogy a többértékű mezőt egy külön táblába visszük, és a táblát kiegészítjük az eredeti tábla elsődleges kulcsot betöltő mezőjével, mint idegen kulccsal. Esetünkben konkréten: ¾ eredeti tábla mezői Tanuló(tanulókód, név, címe, osztály, stb., együttes); ¾ új táblák mezői Tanuló(tanulókód, név, címe, osztály, stb.) és Kedvenc(együtteskód, tanulókód, együttes).
5.1.4.2 ER modell Az ER modell egy alapvetően grafikus tervezési módszer, melynek főbb lépései az alábbiak: meghatározzuk az úgynevezett egyedtípusokat és felsoroljuk azok mezőit; ¾ szintén meghatározzuk az egyedtípusok közötti kapcsolatokat; ¾ megrajzoljuk a nyers, úgynevezett csontvázmodellt, amit fokozatosan finomítunk (az egyedtípusok szimbóluma téglalap, a kapcsolatoké rombusz); ¾ az egyedtípusokra felrajzoljuk a mezőket, kijelöljük az elsődleges és idegen kulcsokat (a mezők jele pálcika; a kulcsok jelzése a korábban már megbeszélt aláhúzás, illetve szaggatott aláhúzás); ¾ ha van olyan adat, mely a kapcsolathoz kötődik, ezeket is felrajzolunk a kapcsolatokra, mint mezőket (ezek gyakorlatilag megfelelnek a korábban már más vonatkozásban tárgyalt mozgás adatoknak); ¾ meghatározzuk, hogy az egyes kapcsolatokban a táblák hány egyede vesz részt (1 : 1, 1 : N, M : N, amit a kapcsolat vonalához írunk); ¾ amennyiben egy-egy kapcsolatban nem minden egyed diák szereti együttes vesz részt, azt szaggatott vonallal jelöljük (ezt a szakzsar1 N gonban parciális kapcsolatnak hívják); tkód ekód ¾ az úgynevezett leképezési szabályokkal az ER modellt átnév tkód alakítjuk relációs modellé, azaz táblákká. cím együttes osztály A lépéseknél megadott jelölési rendszer nincs szabványosítva, ezért más szakirodalmakban ettől eltérő szimbólumok 5. Ábra: A kiegészítő információban lévő is előfordulhatnak. feladat ER modellje A témával kapcsolatos információk, mint például a leképezési szabályok, illetve a megértést segítő példák szintén a www.pcsuli.hu címen találhatók. ¾
5.1.4.3 Józan ész módszer Mint látjuk, a tudományosan megalapozott módszerek sem egyszerűnek, így sokszor mégis marad a józan ész módszere. Ennek során a következőket tegyük: ¾ Gondoljuk át, hogy egy feladathoz kapcsolódóan milyen adatokat szeretnénk letárolni, és milyen információkat szeretnénk nyerni. Ezek lesznek a majdani adatbázisunkat alkotó adattáblák mezői. ¾ Az egy tárgyhoz, személyhez, folyamathoz kapcsolódó adatmezőket csoportosítva alkossuk meg a táblákat. Az időben nagyjából állandó „törzs”, és a folyamatosan gyarapodó „mozgás” adatokat külön táblákba rakjuk. ¾ A következő lépésben keressük ki azokat a mezőket, melyek csak bizonyos értékeket vehetnek fel. Ezeket az adatokat külön táblázatban, szükség esetén táblázatokban tároljuk le. Az így kapott második, harmadik, stb. táblázatokat is meg kell vizsgálni, és ha szükséges, azokat is további táblázatokra kell bontani.
5.1.5 Indexek Ha lesznek olyan adataink, melyek szerint gyakran kell információt kikeresni, illetve az adott adat szerint sorba rendezve kell listákat készítenünk, akkor a kérdéses mezőt index mezőnek kell majd definiálnunk. Természetesen indexek nélkül is bármikor sorba rendezhetjük adatainkat, de az indexek előre történő meghatározása meggyorsítja a rendezést. Hatására ugyanis az adott index (indexek) szerinti sorrendet folyamatosan karbantartja a program, és amikor bármely előre meghatározott index szerinti sorrendben vagyunk kíváncsiak az adatokra, azok időveszteség nélkül máris rendelkezésünkre állnak. Ez nagy előny lehet egy több ezer, esetleg több tízezer rekordot tartalmazó adattábla esetén. Arról, hogy miként adhatjuk meg az index mezőket, a későbbiekben esik szó (5.2.2.2.9.).
14
Access XP alapokon 5.1.6 Adattáblákkal kapcsolatos további tervezési feladatok Miután elvégeztük a feladathoz kapcsolódó adatok adattáblákra bontását, az elsődleges, és az idegen kulcsok, valamint az indexek meghatározását, még néhány további feladatot is el kell végezni: ¾ meg kell határozni a tábla és mezőneveket; ¾ meg kell adni a mezők hosszát; ¾ valamint el kell dönteni, hogy az egyes mezők milyen típusúak legyenek.
5.1.6.1 Tábla és mezőnév Tábla- és mezőnévként lehetőség szerint egyes számú főneveket alkalmazzunk, mint például „tanuló”, „gépkocsi”, „dolgozó”, stb. A név természetesen utaljon a tábla tartalmára. Mindkettő hossza maximum 64 karakter lehet. Használhatóak bennük az ékezetes karakterek és a szóköz is, de nem lehet benne idézőjel, pont, szögletes zárójel, és felkiáltójel „ . [ ] ! ” (ezeknek a karaktereknek ugyanis más szerepük lesz). Célszerű rövid, de pontos meghatározásokat alkalmazni. Például egy raktári rendszert tartalmazó adatbázisban a termékeket tároló adattábla esetében az árucikk nevét egy „Termék név”, az árucikk árát pedig egy „Nettó egységár” mezőben célszerű tárolni. Bizonyos esetekben – bár sok mindent megenged az Access – mégis célszerűbb a régebbi adatbázis-kezelők névadási szabályait betartani, ezért alkalmazzuk inkább a következő mezőneveket: Régi név helyettesítő név ¾ Termék név Term_nev ¾ Nettó egységár N_egysar Miért legyen rövid a mezőnév? Azért, mert ha a mezőkben lévő adatokkal majd számolnunk kell, akkor a kifejezésekben a mezők nevével kell majd az adott adatra hivatkozni (pontosan ugyanúgy, mint az Excelben). Mivel a hosszú mezőnevekkel csak értelmezhetetlenül terjedelmes kifejezéseket tudunk létrehozni, marad a rövidítés. Vigyázat! Még ha rövidítünk, akkor sem rakhatunk pontot a mezőnévbe! Nem jelent majd gondot, ha nem elég szabatos a mezőnév? Nem, mivel megadhatunk majd egy olyan másik nevet is, amely a párbeszédablakokban, listákban, stb. fog szerepelni a mezőnevek helyett. Ennek az adatnak majd „Cím” lesz a neve, és a későbbiekben részletesen fogjuk tárgyalni.
5.1.6.2 Mezők típusa és mérete (hossza) Azt, hogy mit jelent a mezők típusa, az Excel ismeretében után már nem kell „Ádámtól és Évától” kezdve magyarázni. Az azonban jelentősen bonyolítja a dolgot, hogy itt sokkal több adattípus létezik: Típus az adott típus leírása tárolási hossza ¾ Szöveg Maximum 255 karakteres alfanumerikus szöveg. max. 255 bájt1 ¾ Feljegyzés Maximum 65535 karakteres alfanumerikus adat. max. 65 535 bájt ¾ Pénznem Számításokhoz is használható, 4 tizedes pontosságú szám2. 8 bájt ¾ Dátum/idő Időpontokat és 100 és 9999 közötti dátumokat tárol. 8 bájt 3 ¾ Számláló Rekordonként automatikusan egyesével növekvő szám. 4 bájt ¾ Igen/Nem Csak Igen/Nem értéket vehet fel. 1 bit ¾ OLE objektum Egy objektum, mely lehet kép, hang, film. max. 1 GB ¾ Hiperhivatkozás www, vagy e-mail cím letárolására alkalmas. 3 * 2 048 bájt ¾ Keresés varázsló… Kapcsolat alapján egy másik táblából, vagy általunk megadott paraméterekből ad vissza értéket. A feljegyzés típus Egy feljegyzés típusú mezőben szinte korlátlan mennyiségű karakteres adatot tárolhatunk. Mivel azonban a benne tárolt adatok feldolgozása nehézkesebb, mégis csak ritkán alkalmazzuk. A régebbi programokban e típus neve „memo” volt.
A „Szám” típust a végére hagyva külön táblázatban szerepeltetem, mert több „altípusa” is létezik. Közülük választani majd a mezőhossznál lehet. A legfontosabb szabály az, hogy amennyiben a letárolandó szám tizedes értéket is tartalmaz, akkor a táblázat jobb oldali oszlopából válasszunk! 1
Az MS Access nem foglal helyet szövegmezők üres részeinél. Az adat végére automatikusan kiírásra kerül a „Területi beállításoknál” megadott nemzeti valuta. 3 Külön kérésre értéke véletlenszerű, illetve 16 bájtos is lehet. 2
15
ECDL Adatbázis-kezelés modul Csak egész szám tárolására alkalmas „altípusok” Bájt
0-255
1 bájt
Egész
-32 768 és 32767 közötti szám
2 bájt
Hosszú egész
-2147483648 és 2147483647 közötti szám
4 bájt
Tizedest is tartalmazó szám tárolására alkalmas „altípusok” -3,4*1038 és Egyszeres 3,4*1038 7 közötti szám 7 tizedessel Dupla
-1,79*10308 és 1,79*10308 közötti szám 15 tizedessel
8 bájt 16 bájt
Miért pont abban az értéktartományban tudnak adatot tárolni az egyes számtípusok? ¾ ¾
Azért, mert: az egész típusok kettes komplemensükkel kerülnek letárolásra; a tizedeseket is tárolni képes szám típusok lebegőpontosak.
5.1.6.2.1 Mire használjuk az egyes típusokat? Csak azokat az alapvető fontosságú szabályokat szeretném ismertetni, melyeket feltétlenül figyelembe kell vennünk egy-egy adattábla tervezésekor. Arra külön felhívom a figyelmet, hogy bizonyos adattípusok nem adhatóak meg elsődleges kulcsként! 5.1.6.2.1.1 Szöveg és feljegyzés Az esetek legnagyobb részében szöveges adatokat tárolunk bennük. Egyetlen korlátunk az, hogy egy szöveg mezőbe maximum 255 karaktert lehet megadni. Amennyiben ez kevés, válasszuk a feljegyzés típust. A feljegyzés típus azonban nem lehet elsődleges kulcs! Egyszerű és összetett mező Gyakran előfordul, hogy egy-egy mező tartalma további komponensekre bontható. Az ilyen mezőt szokás összetett mezőnek nevezni. Két példa összetett mezőkre, illetve komponenseikre: Összetett mező komponensei ¾ Lakcím irányítószám, város, utca, házszám; ¾ Született születés éve, születés hónapja, születés napja.
5.1.6.2.1.2 Szám Attól, hogy egy mező nevében szerepel a „szám” szó, még nem kell feltétlenül szám típusúra állítani (pl. jármű rendszáma, személyi szám, TAJ szám, adószám, stb.). Általánosságban kijelenthető, hogy akkor kell szám típust alkalmazni, ha az adattal számolni is szeretnénk. Miért jobb „Szöveg” típust rendelni egyes, csak számot tartalmazó mezőkhöz? Lehetőleg csak az olyan mezőket válasszuk tehát szám típusúra, amelynek adataival számolni is akarunk. Sajnos, ha „adatlap” nézetben hozzuk létre a táblát, az automatikus típus megállapítás minden, csak számot tartalmazó mezőhöz szám típust rendel. De miért jobb „Szöveg” típust rendelni egy olyan mezőhöz, melyben számot tárolunk ugyan, de nem számolunk vele? Azért, mert tapasztalatok szerint többnyire előbb-utóbb kiderül, hogy karakteres adatokat is meg kell adni az addig csak számokat tartalmazó mezőben. Ha „Szöveg” típust rendeltünk a mezőhöz, akkor ez nem jelent gondot. Nem így szám típus esetén. Persze a „Szöveg” típus hozzárendelés hátránnyal is jár: több tároló hely szükséges az adat letárolásához.
5.1.6.2.1.3 Pénznem Olyan adatok esetében alkalmazandó, mint a szám típus, csak éppen pénzt akarunk tárolni a mezőben. Előnye, hogy a mező formázásával nem kell külön foglalkozni, mivel a mező értéke mögé a nemzeti valuta automatikusan kiírásra kerül. A nemzeti valuta a Windows területi beállítása szerinti valutanem lesz. 5.1.6.2.1.4 Dátum/idő Akkor alkalmazzuk, ha egy dátumot, egy időpontot, esetleg egyszerre mindkettőt akarunk a mezőben tárolni. Használatakor az adatbevitel során hasonló szabályokra kell ügyelnünk, mint az Excel esetében, de cserébe egy fontos szolgáltatást ebben a programban is kapunk: csak valós dátumot fogad el az Access. Mely évekre adhatunk meg dátum és idő adatokat? Az Access ilyen szempontból is elég bőkezűen bánik velünk: 100-9999 közötti dátumokat alkalmazhatunk.
16
Access XP alapokon 5.1.6.2.1.5 Számláló Ezt az adattípust akkor célszerű használnunk, ha mesterséges elsődleges kulcsot kell alkalmaznunk. Erre akkor lesz szükségünk, ha nincs olyan mező a táblában, mely elsődleges kulcsnak önmagában is megfelelne, összetett elsődleges kulcsot pedig nem szerencsés megadni. A számláló típusú mező értékét adatbevitelkor nem lehet megadni, mivel annak tartalma minden rekordban automatikusan kerül generálásra. Két lehetőség közül választhatunk: ¾ véletlenszerű szám; ¾ vagy egyesével növekedő érték kerüljön a számláló mezőbe. Akármelyik mellett is döntünk, a mező tartalma egyedi lesz, tehát elsődleges kulcsnak tökéletesen megfelel. 5.1.6.2.1.6 Igen/Nem Akkor alkalmazzuk, ha az adott mező csak két értéket vehet fel (ez nem csak igen/nem, hanem bármilyen két adat lehet). Tapasztalatom szerint egy bizonyos idő eltelte után gyakran rájövünk, hogy harmadik, negyedik, stb. variáció is létezhet, és ilyenkor sajnos utólag kell módosítani az adattábla struktúráját. Mivel ez szinte mindig különféle problémákat okoz, e típust tényleg csak akkor használjuk, ha egészen biztosak vagyunk abban, hogy csupán két lehetőség van. Az, hogy az igen/nem típus nem lehet elsődleges kulcs, logikus, hiszen már három rekord esetén is lesz legalább két egyező érték ebben a mezőben. 5.1.6.2.1.7 OLE1 objektum Az OLE egy szabvány, melynek segítségével alkalmazásunkba dokumentumokat, táblázatokat, képeket, hangokat illeszthetünk be. Ha egy OLE objektumot aktivizálunk futás közben, akkor automatikusan betöltődik az azt kezelő program (Word, Excel, Paint, Médialejátszó, stb.), így további lehetőségekkel ruházhatjuk fel alkalmazásunkat. Természetesen az OLE objektum sem lehet elsődleges kulcs! 5.1.6.2.1.8 Hiperhivatkozás Szabványos Web, vagy Email címek tárolását teszi lehetővé. Aktivizáláskor betöltődik a gépen lévő levelező-, vagy böngészőprogram. A hiperhivatkozás sem lehet elsődleges kulcs! 5.1.6.2.1.9 Keresés varázsló… Akkor kell alkalmaznunk, ha egy táblában egy adott mező tartalma csak bizonyos értékeket vehet fel. A korábbi, 2. táblázat szerinti kiinduló feladatunkban ilyen például a „Gépkocsik egyedi és típus adatai” tábla „Típus” mezője, amelybe csak létező márka kerülhet be, vagy az „Üzemanyag” mező, mely csak „Benzin” és „Gázolaj” értéket vehet fel. A két adat között azonban van egy lényeges különbség: ¾ „Üzemanyag” ennél a mezőnél előre tudjuk a lehetséges értékeket, és ráadásul azok száma nagyon csekély; ¾ „Típus” a mező megengedett tartalma az idő múlásával változhat, és azok száma akár nagyon nagy is lehet. A megengedett értékeket előre ismerjük, és azok száma csekély Amennyiben a megengedett értékeket előre tudjuk, és azok később sem fognak változni, akkor a lehetséges értékeket előre megadjuk, és magában a táblában tároljuk. A már hivatkozott 2. táblázat szerinti kiinduló feladatunkban az „Üzemanyag” mező megengedett értékeit célszerű így megadni. A megengedett értékeket előre nem ismerjük, azok időben változnak, vagy a megengedett értékek száma nagy A korábban már megbeszélt módon egy külön táblában tároljuk le a lehetséges értékeket úgy, hogy a két tábla között vagy mi építünk, vagy a „Keresésvarázsló…” segítségével építtetünk ki kapcsolatot. Ehhez mindkét táblának tartalmaznia kell egy-egy olyan mezőt, melyek tartalma a kapcsolódó rekordokban azonos értéket vesz majd fel. Ez a mező a megengedett értékeket tartalmazó táblában elsődleges kulcs, a másikban idegen kulcs szerepet fog majd általában betölteni. A „Keresés varázsló” valójában tehát nem is önálló típus, hanem csak két tábla között épít fel kapcsolatot (mint később majd látni fogjuk, illetve mint az imént
1
OLE, azaz Object Linking and Embedding, magyarul objektum kapcsolás és beágyazás
17
ECDL Adatbázis-kezelés modul már szóba is került, néha nem is kell hozzá két tábla). A Keresés varázsló mindkét módszer szerinti alkalmazását részletesen megtárgyaljuk a későbbiekben (5.3.2.1.). 5.1.6.2.2 A mezők hosszáról Az Microsoft Access esetében a mezőhosszokkal nem kell sokat törődni, mivel a legtöbb adattípus eleve meghatározza a mezők hosszát. Ez alól csak a „Szöveg” típus jelent kivételt. Szerencsére azonban ekkor sem kell összes kéz- és lábujjaink felhasználásával pontosan kiszámolni a leghosszabb lehetséges adatok figyelembevételével a minimálisan szükséges mezőhosszt. Az Access ugyanis roppant intelligensen kezeli az adatokat: ha egy karakteres mezőbe bevitt adat rövidebb, mint a mező hossza, a ki nem töltött mezőrészt nem tölti fel szóközökkel. Ehhez persze elég sokat kell a programnak trükköznie az adatokkal, de mégis elég megbízhatóan működik minden. Pontosan az adatok kezelése miatt viszont mégse adjunk meg mindent 255 karakteresre, mondván, hogy abba minden adat elfér! A feleslegesen nagyra vett mezőhossz ugyanis komolyabb adatbázisok esetében lassíthatja a program futását! Az alapértelmezett 50 karakter még a legtöbb, kifejezetten terjedelmesnek számító, de rekordonként változó hosszúságú adat esetében is megfelel. Erre példaként a teljes személy- és áruneveket, komplett lakcímeket, stb. tudnám felsorolni. Ha a név és cím adatokat részekre bontjuk, azaz külön-külön mezőben tároljuk a vezeték- és keresztneveket, a helység- és utcaneveket, akkor nyugodtan vegyük még kisebbre, mondjuk kb. 30 karakterre a mezők hosszát. Amennyiben viszont pontosan tudjuk a letárolandó adat maximális hosszát, akkor azt pontosan is illik megadni. Ez utóbbira példaként az irányítószámot (4 karakter), a személyi számot (11 karakter), a rendszámot (6 karakter), stb. említhetem. Mi a helyzet a régebbi adatbázis-kezelőkkel? A klasszikus adatbázis-kezelők esetében (pl. dBase, Clipper) minden rekord fix méretű helyet foglalt el a lemezen akkor is, ha a rekordban lévő karakteres adatok nem töltötték ki a mezőt. Sőt! A régebbi programok némelyike a numerikus adatokat is karakteres formában tárolta. Ez persze nagy pazarlást jelentett. Így persze nagyon gondosan mérlegelni kellett az egyes mezők hosszát.
2. Feladat: Tervezzük meg a raktári adatbázisban letárolandó adattáblákat. Ez alatt egyaránt értsük az egyes táblák, valamint azok mezőneveinek, típusának, és hosszának meghatározását, az elsődleges kulcsok és idegen kulcsok, a kapcsolatok, és az indexek megadását. Ehhez elsőként pontosan meg kell határozni, hogy mit várunk el a programtól. Ezt ugyan korábban már ismertettem, de mivel a követelményeket most kell felhasználni, még egyszer felsorolom a „kívánságlistát”: ¾ az adatbázis tárolja le a raktárban lévő anyagok és termékek alapadatait, és mutassa a pillanatnyi raktárkészletet; ¾ tartsa nyilván a szállítók legfontosabb adatait (feltételezve, hogy minden árucikket csak egy szállítótól szerez be a cég); ¾ legyen nyomon követhető a készlet változása, azaz a készletet növelő be-, illetve a készletet csökkentő kivételezések (a változás pontos jellege csak a bizonylatszámból, készletnövelő, vagy csökkentő volta pedig a mennyiség előjeléből fog kiderülni). Megoldás: 1. lépés: Mezőnevek, típusok és hosszak meghatározása Elsőként össze kell gyűjteni az összes, tárolni kívánt információt, azaz meg kell határozni a majdani adattáblák mezőit. Azért beszélek adattáblákról, mert úgyis több részre kell osztani az adatokat. Akkor lássuk a mezőket: Az adat leírása a választott mezőnév típus hossz ¾ a termék neve Termék név Szöveg 30 ¾ a termék mértékegysége Mértékegység név Szöveg 10 1 ¾ a termék VTSZ száma VTSZ szám Szöveg 10 ¾ a termék ÁFA kulcsa ÁFA kulcs Szám ¾ a termék szállítójának neve Szállító név Szöveg 30 ¾ a szállító, vevő címe Irányítószám Szöveg 4 Város Szöveg 30 1
A VTSZ szám a vámtarifa szám rövidítése. Ez alapján kerül meghatározásra, hogy az adott termék, vagy szolgáltatás milyen módon vehető figyelembe a könyvelések során. Fontossága miatt célszerű már a raktári rendszerben is nyilvántartani.
18
Access XP alapokon Utca és házszám a szállító telefonszáma Telefonszám ¾ a szállító fax száma Fax szám ¾ a készletváltozás bizonylatának száma Bizonylatszám ¾ a készletváltozás dátuma Dátum 2 ¾ a készletváltozás jellege Jelleg ¾ a készletváltozás nettó egységára Nettó egységár ¾ és a készletváltozás változás mennyisége Mennyiség A következő lépésben a felsorolt mezőket több táblára kell bontani.
Szöveg Szöveg Szöveg Szöveg1 Dátum Szöveg Szám Szám
A termék szállítójának / vevőjének irányítószáma
A termék szállítójának / vevőjének városa
A termék szállítójának / vevőjének utcája, házszáma
A termék szállítójának / vevőjének telefonszáma
A termék szállítójának / vevőjének fax száma
A készletváltozás bizonylatszáma
A készletváltozás dátuma
A készletváltozás jellege
A termék nettó egységára
A készletváltozás nagysága
Város
Utca és házszám
Telefonszám
Fax szám
Bizonylatszám
Dátum
Jelleg
Nettó egységár
Mennyiség
A termék ÁFA kulcsa ÁFA kulcs
Irányítószám
A termék VTSZ száma VTSZ szám
1
A termék szállítójának / vevőjének neve
A termék mértékegysége Mértékegység név
30 11 11 10
Szállító név
A termék neve Termék név
¾
7. Táblázat: Az adattábla első nekifutásra így néz ki (felül az adat leírása, alul a választott mezőnevek) 2. lépés: Táblákra bontás A „józan ész” módszerrel kapcsolatban azt tanultuk, hogy több egymással kapcsolatban lévő táblára történő bontással próbáljuk kiszűrni a redundáns, illetve az olyan időben változó adatokat, melyeknek minden korábbi értéke is megőrzendő (természetesen, ha a táblákra bontáshoz a normalizálást, vagy az ER módszert használhatjuk, a végeredmény akkor is több, egymással kapcsolatban lévő tábla lesz). Arról is volt szó, hogy a redundancia megelőzése miatt szétbontott táblák közötti kapcsolat fenntartásához szükség van olyan mezőkre, melyek mindig mindkét egymáshoz kapcsolódó táblában szerepelnek. Ezek a mezők az egyik táblában elsődleges kulcsok, a másik táblában idegen kulcsok lesznek. Redundáns adatok kiszűrése Elsőként felveszünk egy „Szállító kód” mezőt (hiszen lehet két azonos nevű szállító is, így a név nem használható elsődleges kulcsként). Átgondolva a dolgokat nyilvánvaló, hogy több termék is származhat ugyanattól a szállítótól (azt viszont korábban kikötöttük, hogy minden termék csak egy szállítótól származhat). Ez azt eredményezné, hogy a szállítók adatai redundánsak lennének. Így az már biztos, hogy a szállítók adatait egy külön adattáblában kell majd tárolni. Minden szállítói adatot át kell rakni tehát egy külön táblába, melynek a neve legyen „Szállító törzs”. A kapcsolat érdekében az eredeti helyen megmarad a „Szállító kód” mező, mint idegen kulcs, míg a „Szállító törzs” táblában ugyanez a mező elsődleges kulcs lesz. A tábla mezői tehát a következők legyenek: Szállító törzs Mező név típus hossz ¾ Szállító kód Számláló ¾ Szállító név Szöveg 30 ¾ Irányítószám Szöveg 4 ¾ Város Szöveg 30 ¾ Utca és házszám Szöveg 30 1 Csak akkor kell „Szöveg” típust választanunk, ha a bizonylatszámot mi adjuk meg. Ha a készletváltozás bizonylatszáma a gép által kerül kiosztásra, akkor „Számláló” típust kell deklarálni. 2 Célszerűnek látszik a készletváltozás jellegét is letárolni (beszerzés, visszáru szállító felé, selejtezés, eladás, visszáru vevőtől, …).
19
ECDL Adatbázis-kezelés modul Telefonszám Szöveg 11 ¾ Fax szám Szöveg 11 Mivel ugyancsak redundanciát jelentene, ha minden mértékegységet újra és újra begépelnénk, ezért alkalmazzunk egy további adattáblát melynek neve „Mértékegység törzs” legyen. A kapcsolattartás céljából a régi helyén lesz egy „Mértékegység kód” mező, mint idegen kulcs, míg a „Mértékegység törzs” táblában ugyanez a mező elsődleges kulcsként fog szerepelni. Mértékegység törzs Mező név típus hossz ¾ Mértékegység kód Számláló ¾ Mértékegység név Szöveg 10 ¾
Miért rakjuk külön adattáblába a mértékegységeket? A kérdés arra vonatkozik, hogy miért nem tároljuk a megengedett értékeket a „Termék törzs” táblában, hiszen a „Keresés varázsló…” típus alkalmazásával ez is megoldható lenne (5.3.2.1.). Azért rakjuk mégis külön táblába, mert a megengedett mértékegységek az idők folyamán bővülhetnek.
Változó adatok kiszűrése Valószínűsíthetően az egyes beszerzések és raktárból történő kivételezések (selejtezés, eladás, szállítónak visszaküldött áru) pontos adatai a későbbiekben is a rendelkezésünkre kell, hogy álljanak. Ezt úgy tudjuk biztosítani, hogy egy külön adattáblában minden ilyen esemény fontos adatát letároljuk. Természetesen erre a célra is egy külön adattáblát kell felvenni, melynek neve „Tranzakciók”, legyen. A mezőit is rögtön ismertetem, de előtte egy megjegyzés: nem kell külön mezőt felvenni elsődleges kulcsnak, mivel a „Bizonylatszám” egyedi azonosító. Akkor lássuk a mezőket: Tranzakciók (első nekifutásra) Mező név típus hossz ¾ Bizonylatszám Szöveg 5 ¾ Dátum Dátum ¾ Jelleg Keresés varázsló… ¾ Termék kód Keresés varázsló… ¾ Mennyiség Szám ¾ Nettó egységár Szám He belegondolunk, sajnos a „Tranzakciók” adattáblában még van redundancia: ha több terméket is egy bizonylaton mozgatunk, akkor minden rekordban letárolásra kerül a „Dátum”, és a „Jelleg”. Ezt a két mezőt rakjuk át egy másik adattáblába, ennek a neve legyen a „Tranzakciók”, és a maradék kapjon új nevet: „Tranzakciók tételei” Tranzakciók (végleges) Mező név típus hossz ¾ Bizonylatszám Szöveg 5 ¾ Dátum Dátum ¾ Jelleg Keresés varázsló… Tranzakciók tételei Mező név típus hossz ¾ Bizonylatszám Szöveg 5 ¾ Termék kód Keresés varázsló… ¾ Mennyiség Szám ¾ Nettó egységár Szám Az eredeti adattábla maradék mezői képeznék a „Termék törzs” adattáblát, melynek persze szintén lenne egy „Termék kód” mezője is. Nézzük át, mire is jutottunk. Termék törzs Mező név típus hossz ¾ Termék kód Számláló ¾ Termék név Szöveg 30 ¾ Szállító kód Keresés varázsló…
20
Access XP alapokon Mértékegység kód Keresés varázsló… VTSZ szám szöveg 10 ¾ ÁFA kulcs Keresés varázsló… Elsődleges kulcsok, idegen kulcsok, kapcsolatok, indexek meghatározása A következő táblázatban az adatbázis normál állapotba hozott táblái láthatók. A kiinduló helyzethez képest még különféle „… kód” mezők jelentek meg, melyek döntő többségének funkciójáról menet közben szóltam. Mivel azonban szó szerint kulcs jelentőségük van, lássuk még egyszer miért van rájuk szükség? Azt nemrég tanultuk meg, hogy ha adatainkat a redundancia elkerülése érdekében több külön adattáblára osztjuk, akkor ahhoz, hogy kapcsolatot tudjunk létrehozni az egyes táblák között, olyan azonosító kódokat kell alkalmaznunk, mely mindkét táblában szerepel. Erre a célra használjuk majd a „Szállító kód”, a „Mértékegység kód”, és a „Termék kód” mezőket. Ezeknek a mezőknek az egyik táblában elsődleges, a másik táblában idegen kulcsnak kell lennie. Ezeken kívül elsődleges kulcs kell, hogy legyen még a „Bizonylatszám”. Persze, indexeket is meg kell majd adnunk, hiszen az adatainkat más sorrendbe rendezve is szeretnénk megjeleníteni, illetve kilistázni. Ehhez minden olyan mezőt indexnek kell majd megadni, melyre nézve sorba akarjuk az adatokat rendezni. ¾
6
7
1
2
Szállító név
Irányítószám
Város
Utca és házszám
Telefonszám
Fax szám
Mértékegység kód
Mértékegység név
N
1
1
1
2
3
1
1
2
3
4 Nettó egységár
5
Mennyiség
4
Termék kód
3
Jelleg
2
Tranzakciók tételei
Dátum
1
Tranzakciók
Bizonylatszám
N
6
Szállító kód
5
Szállító kód
4
ÁFA kulcs
Termék név
1
3
VTSZ szám
2
Mértékegys. törzs
Szállító törzs
Mértékegység kód
1
Termék kód
Termék törzs
Bizonylatszám
¾
N
N
8. Táblázat: A táblákra bontott adatbázis (az aláhúzott mezők az elsődleges kulcsok, a szaggatottan aláhúzott mezők az idegen kulcsok, a világos szürke mezők az indexek, a fekete nyilak a kapcsolatok) Hogy lehet a táblákat és kapcsolataikat tömören írásban is megadni? Nagyon egyszerű a megoldás: a tábla neve után zárójelben felsoroljuk a mezőneveket, az elsődleges kulcsot folyamatos, az idegen kulcsot szaggatott vonalú aláhúzással jelölve. A kapcsolatokat vonalakkal szimbolizáljuk úgy, hogy a vonalra ráírjuk azt is, hogy egy-egy kapcsolatban a táblák hány rekordja vesz részt (1 : 1, vagy 1 : N). Ha belegondolunk, a fenti táblázatot kapjuk, csak jóval tömörebb formában.
5.2 Adattáblák létrehozása Egy új adattábla létrehozásakor természetesen elsőként majd az adatok tárolására szánt táblázat szerkezetét kell leírnunk. Ehhez kattintsunk az adatbázis-ablak bal oldalán az „Objektumok” közül a „Táblákra”, majd a ikonra. A táblák létrehozásához öt lehetőséget is kínál az Access: ¾ Adatlap nézet; ¾ Tervező nézet; ¾ Tábla varázsló; ¾ Tábla importálása; ¾ Tábla csatolása.
6. Ábra: Új adattábla létrehozása
21
ECDL Adatbázis-kezelés modul Ezek közül az „Adatlap” és a „Tervező” nézetet egy kicsit úgy is tekinthetjük, mint a Word programban a „Normál”, a „Nyomtatási elrendezés”, a „Tagolás”, stb. nézeteket. Ott is megvolt mindegyik nézetnek a legjobb felhasználási területe. Nos, ez az Accessben sem lesz másként. A két nézet között bármikor átkapcsolhatunk a megfelelő ikonra kattintással, vagy a „Nézet” menü segítségével. Az ikonok a „Tábla adatlap” eszköztáron jelennek meg, mégpedig mindig úgy, hogy csak a másik nézeté látható: ¾ „Adatlap” nézetben a „Tervező” nézet ikonja látszik ¾ „Tervező” nézetben pedig az „Adatlap” nézet ikonja jelenik meg A „Tábla varázsló” a már megismert varázslókhoz, pl. az Excel „Diagram varázslójához” hasonlóan jelentősen megkönnyíti az új tábla létrehozását. Az utolsó kettő, a „Tábla importálása” és a „Tábla csatolása” lehetőségek megléte arra utal, hogy az Access szerves részét képezi az Office programcsomagnak. Adattábla törlése Azt hiszem, ha nem mondanám el, akkor is világos lenne, hogy miként lehet egy adattáblát törölni: ki kell jelölni, majd megnyomni a Delete billentyűt. Ez azoknál a tábláknál, melyek más táblához kapcsolódnak, csak akkor lehetséges, ha előbb a kapcsolatot töröljük. Ez az XP verzióban automatikusan megtörténik. Szerencsére arra is van lehetőség, hogy a törlést visszavonjuk, és ezzel a kapcsolatai is helyreállításra kerülnek.
5.2.1 Adatlap nézet Mindjárt az elején egy jó tanács: ne akarjunk bonyolult adattáblát ebben a nézetben létrehozni, mert az „Adatlap nézet” legfeljebb egyszerű, pár mezős táblák létrehozására alkalmazható. Ezt a nézetet elsősorban a már elkészített adattáblák megtekintésére, adatok bevitelére, módosítására fogjuk használni. Az eközben felmerülő problémák és beállítási lehetőségek később kerülnek részletesen ismertetésre (5.2.1.2.). Mint az látható is, egy adattábla ebben a nézetben pontosan úgy jelenik meg, mint egy Excel táblázat. Ha azonban létrehozáshoz alkalmazzuk, akkor a mezőnevek a semmit sem mondó „Mező1”, „Mező2”, „Me7. Ábra: Egy üres tábla „Adatlap” nézetben ző3”, stb. értéket veszik fel, mint ahogy azt az ábrán is láthatjuk. A mezőnevek módosítására, a felesleges mezők törlésére, új mező beszúrására helyi menü segítségével van lehetőségünk. A már bevitt adatok alapján automatikusan kerül megállapításra az egyes mezők típusa, valamint a mezők formátuma. Ez utóbbiról eddig még nem esett szó, de a későbbiekben ezt a mulasztást bőven pótoljuk. Az üresen hagyott mezők szintén automatikusan törlődnek. Az elsődleges kulcs kérdésének megoldását a kiegészítő információban találjuk. Miért ne használjuk az „Adatlap nézetet” új adattábla létrehozásához? Most is pontosan ugyanaz a probléma, mint minden más automatikus eszköz esetében. Nem lesz eléggé „finom” a létrehozott adattábla szerkezete. Túl nagy mezőhosszak kerülnek megállapításra, minden csak számokat tartalmazó adat szám típusú lesz, nem lesznek maszkok, stb. Mi a helyzet az elsődleges kulccsal? Ha Adatlap nézetben hozunk létre egy új adattáblát, akkor a tábla mentésekor felteszi a kérdést, hogy akarunk-e elsődleges kulcsot rendelni a táblához. Amennyiben igennel válaszolunk, akkor a táblát kiegészíti egy „Azonosító” nevű, „Számláló” típusú mezővel.
5.2.1.1 Tábla formázása Adatlap nézetben Az adatlap nézet megjelenését a formázó eszközsor segítségével nagyon egyszerűen lehet módosítani (ha nem látható, bekapcsolása a „Nézet” menü „Eszköztárak” pontjában lehetséges). Úgy gondolom, a lehetőségekre elég csak utalnom, hiszen szinte minden pontosan ugyanúgy történik, mint a Word, Excel, stb. programok esetében. Ami újdonság, az pedig olyan egyszerű, hogy felesleges részletesebben elmagyaráznom.
22
Access XP alapokon ¾
betű típus
¾
betű és előtérszín
¾
betű méret
¾
vonal- és szegélyszín
¾
félkövér, dölt, aláhúzott
¾
rácsok
¾
cella kitöltő és háttérszín
¾
speciális hatás (térhatás)
5.2.1.2 Adatbevitel adatlap nézetben Azt hiszem, hogy az adatbevitellel kapcsolatban is elég csak a lehetőségeket röviden felsorolni: A mezőkbe történő adatbevitel, és az egyes mezők közötti mozgás pontosan úgy lehetséges, mint az Excel programban. ¾ Az adattábla alján lévő gombok szerepe magyarázat nélkül is világos, hiszen a Word körlevél, illetve az Excel adatbázis témaköreinél már találkozhattunk velük. ¾ Az utolsó gomb segítségével pedig majd új rekordot adhatunk a táblához. Akkor van jelentősége, ha nagyon sok rekord van már a táblában. ¾ Egy teljes rekord törléséhez előbb jelöljük ki a törölni kívánt rekordot, majd nyomjuk meg a Delete billentyűt. ¾ Több rekord törléséhez jelöljük ki a rekordokat, majd nyomjuk meg a Delete billentyűt. Azt jegyezzük meg, hogy az adatbevitelt nem kell menteni, mert amint másik rekordra lépünk, az adatok végleg beíródnak a táblába! Amennyiben úgy akarjuk a táblába beíratni az adatokat, hogy nem lépünk másik rekordra, ahhoz kattintsunk a ikonra. Amíg ezt az ikont látjuk, a rekord tartalmában végrehajtott változtatást elvethetjük az Esc billentyű lenyomásával. ¾
Rekordmutató Az úgynevezett „rekordmutató” mindig az aktuális rekordra mutat. Amikor másik rekordra lépünk, akkor azzal elmozdítjuk a rekordmutatót. Ezek értelmében úgy is fogalmazhatunk, hogy az adatok csak akkor kerülnek a táblába beírásra, amikor a rekordmutatót mozgatjuk, vagy rákattintunk a ikonra.
5.2.2 Tervező nézet és a tábla mezőinek viselkedését befolyásoló mezőtulajdonságok Ez a nézet a tábla struktúrájának megtervezésére, illetve a struktúra utólagos szerkesztésére használható. Ugyanakkor ebből a nézetből nem lehet magukat az adatokat elérni. A mezők nevét egyszerűen csak be kell gépelni a „Mezőnév” oszlopba, a mező típusát pedig az „Adattípus” oszlop legördülő listájából kell kiválasztani. A választható típusok korábban már bemutatásra kerültek (5.1.6.2.1.). Mivel a „Leírás” oszlopba begépelt szöveg 8. Ábra: Új tábla létrehozása tervező nézetben majd adatbevitelkor megjelenik az Access ablakának állapotsorában, ide magyarázó szöveget célszerű megadni. Ha esetleg egy már bevitt mezőt bizonyos okból feljebb, vagy lejjebb szeretnénk vinni, akkor jelöljük ki a mozgatandó sort (úgy, mint pl. Excelben) majd egérrel húzzuk a megfelelő helyre. Mozgatáshoz a sor előtt lévő jelnél kell az egérrel a sort megfogni. Amennyiben feleslegessé válik egy-egy mező, jelöljük ki, majd töröljük a „Delete” billentyűvel, vagy a ikonnal. Ha pontosan ellenkező a helyzet, azaz hiányzik valahonnét egy mező, akkor azt kétféleképpen is beszúrhatjuk: ¾ vagy kijelöljük azt a sort, amely elé be kellene szúrni egy mezőt, majd a ikonra kattintunk;
23
ECDL Adatbázis-kezelés modul vagy felvesszük utolsónak, kijelöljük, majd a kívánt helyre mozgatjuk az egérrel felfelé húzva. Ebben a nézetben – mint azt rövidesen látni is fogjuk – nemcsak a mezők nevét és típusát lehet megadnunk, hanem további úgynevezett mezőtulajdonságokat is. Ezek a nem kötelező további paraméterek az adatbevitelt, illetve az adatok megjelenítését fogják finomítani. A használatuk során felmerülő problémákról rövidesen részletesen fogunk beszélni. Alkalmazásuk elsősorban inkább az Access használatában már bizonyos gyakorlattal rendelkező felhasználóknak ajánlott. Általános tanácsként azt tudom javasolni, hogy ha az adott eszköz funkcióját nem értjük, akkor azt ne is adjuk meg. Az alapértelmezett értékekkel többnyire jól működik a program, csak mondjuk a bevitel nincs olyan finoman beszabályozva. Egy rossz paraméterrel viszont lehet, hogy egyáltalán nem is funkcionál a program. A tábla mezőinek viselkedését befolyásoló paramétereket két lapon helyezte el a Microsoft, melyek között szokás szerint a regiszterek segítségével lehet lapozni. Az első, „Általános” nevű regiszteren található lehetőségeket egész részletesen megbeszéljük. Előtte azonban néhány gondolat a második, „Megjelenítés” regiszter tartalmával kapcsolatban. ¾
5.2.2.1 Megjelenítés regiszter paraméterei Ezen a regiszteren azt állíthatjuk be, hogy a kérdéses mezőt milyen párbeszédelemként lássuk az adattáblában. Ezt a „Vezérlőelem megjelenése” legördülő listából választhatjuk ki. A lehetőségek: ¾ beviteli mező; ¾ lista; ¾ kombinált lista; ¾ és végül jelölő négyzet1. A beállítható párbeszédelem-fajták persze függnek a mezők típusától. A következő táblázatból a lehetőségek könnyen kiolvashatóak. Csak azok a mezőfajták szerepelnek, ahol van választási lehetőségünk. Az alapértelmezett beállítások vastagon kerültek szedésre. Mező típusa
Beviteli mező
Lista
Kombinált lista
Jelölő négyzet
szöveg szám Igen/nem
Igen Igen Igen
Igen Igen Nem
Igen Igen Igen
Nem Nem Igen
9. Táblázat: Az egyes adattípusokhoz milyen beviteli párbeszédelem tartozhat Ha egy mező megjelenítéséhez a lista, vagy kombinált lista párbeszédelem típust kívánjuk alkalmazni, akkor inkább a következőt javaslom: ¾ az adat típusát állítsuk be „Keresés varázsló…” értékre (5.3.2.1.); ¾ majd adjuk meg a „Keresés varázsló…” kérdéseire a válaszokat. Ez a módszer azért szerencsésebb, mert így nem kell azt a képen is látható sok-sok paramétert egyenként beállítani, melyeket a lista, vagy kombinált lista párbeszédelemek kiválasztásakor meg kell adnunk ahhoz, hogy azok jól működjenek. Ehelyett néhány egyszerű kérdésre kell csak vá9. Ábra: A „Megjelenés” regiszter tartalma elég bonyolult is lehet laszolnunk, aminek hatására a kérdéses paraméterek automatikusan kitöltésre kerülnek. Ezzel a táblázat kilenc „Igen” tartalmú cellájából 8 kipipálva. A maradék egyet, az „Igen/Nem” típus „Beviteli mező” megjelenését egy későbbi téma során rész-
1
Értelemszerűen csak igen/nem adattípus esetén kérhetjük.
24
Access XP alapokon letesen megbeszéljük (5.2.2.2.1.4.). A „Megjelenés” regiszter többi elemét később tárgyaljuk meg részletesen (5.3.2.1.3.).
5.2.2.2 Általános regiszteren található mezőtulajdonságok Az ezen a regiszteren található paramétereket sajnos nem intézhetjük el ilyen röviden. A könnyebb érthetőség érdekében, ahol szükséges, majd igyekszem példát is mutatni. Akkor vágjunk bele. 5.2.2.2.1 Formátum Az Access „Formátum” mezője hasonló célra szolgál, mint az Excelben a „Számformátum”. A begépelt információ automatikusan felveszi a formátumkód által meghatározott alakot, de csak az adatbevitel lezárását követően. A formátumkód a letárolt adatot egyáltalán nem befolyásolja, csak a megjelenítésére van hatással. A párhuzam arra vonatkozóan is folytatódik, hogy előre meghatározott formátumok közül is választhatunk, és egyedi kódot is megadhatunk. Sőt! Az egyedi kódok megadása során az Excelben megszokotthoz nagyon hasonló elemekből építkezhetünk. Mivel a lehetőségek mind a fix kódoknál, mind az egyedi kódok esetében az adatmező típusától fognak függeni, ilyen bontásban is kell megtárgyalnunk őket. Előtte azonban a színek alkalmazására szeretném felhívni a figyelmet, amellyel minden egyedi formátum megadásakor élhetünk. Színek alkalmazása Amennyiben a formázó eszközsoron szereplő ikonnal választunk ki más színt, az minden mezőre és az összes rekordra egyaránt fog vonatkozni. Ha színesben csak egy mező tartalmát szeretnénk megjelentetni, akkor szögletes zárójelek között egyszerűen írjuk be az alkalmazni kívánt színt a formátumkódba. Bár – mint azt látni fogjuk – minden formátumkód angol rövidítésekre utal, a „következetesség” jegyében a szín magyarul adandó meg, mint pl.: [kék]. Csak színkód megadása hatástalan, valamilyen egyéb formázókódot is kell mellette alkalmazni! A szín megadásakor szögletes zárójelet is be kell gépelni, ugyanis az most nem azt jelöli, hogy a kérdéses paraméter elhagyható. Az alkalmazható színek: ¾ fekete, kék, sötétzöld, világoskék, piros, lila, sárga és fehér. Egy hiba a programban Amennyiben színeket is megadunk a formátumkódban, az nem mindig működik helyesen.
5.2.2.2.1.1 Dátum és idő adattípus formátumai A dátumokkal kapcsolatosan egy fontos megjegyzés: ha az évet csak két jeggyel adjuk meg, akkor azt az Access automatikusan 1930-2029 közöttiként értelmezi. Ez az időintervallum azonban szükség esetén átállítható a „Területi beállításoknál”. 5.2.2.2.1.1.1 Előre meghatározott formátumok
Elsőként lássuk az előre meghatározott dátum és idő formátumokat. Természetesen minden esetben példát is találunk a táblázatban. Neve
Leírása
Rövid dátum Hosszú dátum Egyszerű dátum Hosszú idő Közepes idő
A Windows „Területi beállításoknál” beállított „Rövid dátum”. A Windows „Területi beállításoknál” beállított „Hosszú dátum”. Az év 2 jeggyel, a hónap rövidítve, a nap 2 jeggyel. A Windows „Területi beállításoknál” beállított „Hosszú idő”. Mint a „Hosszú idő”, de a másodperc nem kerül kijelzésre. Csak az óra és a perc kerül megjelenítésre, de az óra 24 órás formában (így persze a de. illetve a du. rövidítés felesleges) Gyakorlatilag megfelel a „Rövid dátum” és a „Hosszú idő” egyesítésének. Ha az adat nem tartalmaz dátumot, akkor csak az idő, ha nem tartalmaz időt, akkor pedig csak a dátum jelenik meg.
Rövid idő Általános
Példa 2005. 12. 01. 2005. december 1. 05. dec. 01. 5:34:23 du. 5:34 du. 17:34 2005.12. 1. 12:25:00
10. Táblázat: Dátum és idő adattípus előre definiált formátumai
25
ECDL Adatbázis-kezelés modul 5.2.2.2.1.1.2 Egyedi formátumok
A következő táblázat a dátum mezőkben alkalmazható legfontosabb formátumkódokat tartalmazza. Az Excel ismeretében sok minden ismerősnek tűnik. A dátum megjelenését befolyásoló lehetőségek Elválasztó karakter A dátum hónap részének vezérlőkódjai / vagy A „/” vagy a „.” jelenik meg a dátumrészek m A hónap a szükséges számú jeggyel . között. 1-től 12-ig. mm A hónap vezető nullával 1-től 12-ig. A dátum nap részének vezérlőkódjai d A nap a szükséges számjeggyel 1-től 31-ig. mmm A hónap rövidítve (pl. jan, febr, …). dd A nap vezető nullával 1-től 31-ig. mmmm A hónap neve (pl. január, február, …). ddd A hét napja rövidítve (pl. h, k, sze, …). A dátum év részének vezérlőkódjai dddd A hét napjai kiírva (pl. hétfő, kedd, …). yy Az év két jeggyel (pl. 05). yyyy Az év négy jeggyel (pl. 2005). Az idő megjelenését befolyásoló lehetőségek Elválasztó karakter Az idő másodperc részének vezérlőkódjai : Megjelenik a „:” az óra, perc és másodperc s A másodperc a szükséges számú jegyközött gyel (0-59). ss A másodperc vezető nullával (01-59). Az idő óra részének vezérlőkódjai h Az óra a szükséges számú jeggyel (0-23). Délelőtt/délután kijelezési módja hh Az óra vezető nullával (01-23). am/pm A napszakot am/pm formában jelzi. AMPM A napszak a területi beállítások szerint. Az idő perc részének vezérlőkódjai n A perc a szükséges számú jeggyel (0-59). Speciális lehetőségek nn A perc vezető nullával (01-59). w A nap sorszáma (1 - hétfő). ww A hét sorszáma (1 - január 1. hete). q A dátumnak megfelelő negyedév sorszáma (1 - 4). y A dátumnak megfelelő nap hányadik az évben (1 - 366). 11. Táblázat: Dátum és idő adattípus egyéni formátumkódjai 5.2.2.2.1.2 Szám és pénznem adattípus formátumai A szám és pénznem formátumkódjai négy szakaszból állhatnak. Aki az Excelen átverekedte magát, az már sejtheti, hogy miért adhatunk meg több kódot is, de a négy soknak tűnik. Miért? Az világos, hogy: ¾ az első szakasz a pozitív számok esetén lép érvénybe; ¾ a második szakasz a negatív számokra fog vonatkozni; ¾ a harmadik szakasz a nulla (0) értékre lesz érvényes. De mire szolgál a negyedik? Nos a negyedik a még meg sem adott értékre az úgynevezett „Null” értékre vonatkozik. Erről a témáról még többször lesz szó. Egyelőre annyit róla, hogy a még meg nem adott, azaz a kérdéses helyen értéket nem tartalmazó rekordok „Null” speciális állandót tartalmaznak a mezőben. Ha kevesebb szakaszt adunk meg, akkor a következők szerint alakul a formátum: Megadott szakaszok pozitív szám negatív szám nulla „Null” (üres mező) száma formája formája formája formája 1 első szakaszé első szakaszé első szakaszé üres marad 2 első szakaszé második szakaszé első szakaszé üres marad 3 első szakaszé második szakaszé harmadik szakaszé üres marad 4 első szakaszé második szakaszé harmadik szakaszé negyedik szakaszé 5.2.2.2.1.2.1 Előre meghatározott formátumok
A következő táblázatban ismertetésre kerülnek az előre definiált formátumok, illetve a hatásukra megjelenő értékek is. Ezek közös jellemzője, hogy „Null” érték esetén a mezőt üresen hagyják, nulla (0) értéknél viszont a nulla számjegy valamilyen alakját jelenítik meg.
26
Access XP alapokon Igazság szerint nem teljesen ugyanúgy viselkednek az előre definiált formátumok a szám és a pénznem típus esetében, de a különbség lényegében elhanyagolható. Arra viszont nyomatékosan felhívom a figyelmet, hogy az Access többféle szám „altípust” is ismer. Ez a mezőben letárolható, és így persze a megjelenítendő (megjeleníthető) számot is döntően befolyásolja, hiszen egyaránt hatással van a kezelhető számok értékhatára és tizedeseinek számára. Mivel a százalékos értékek az Excelben már megszokott tizedes tört alakban tárolódnak, a mező „altípusát” százalék esetében feltétlenül ennek figyelembevételével válasszuk meg. Mint arról már volt szó, tizedesek csak akkor jelennek meg (és tárolódnak), ha a mező altípusa nem „bájt”, „egész”, vagy „hosszú egész” (azaz magyarul a százalékot tárolandó mező „egyszeres”, vagy „dupla” pontosságú (5.1.6.2.) kell, hogy legyen). A formátum neve Általános
Pénznem
Rögzített
Szabványos
Százalék Tudományos
Ha a mező tartalma
Leírása
pl.: 2355,35648 pl.: -2355,35648
Ez az alapértelmezés. A beírásnak és a pontos típusnak megfelelően jelenik meg az adat. A tizedesek száma kicsit öntörvényűen viselkedik. Ha mást nem adunk meg a tizedesek számára vonatkozóan, akkor ezres csoportosításban és két tizedessel jelennek meg az értékek. Valutaként a „Területi beállításokban” megadott pénznem jelenik meg. Ha mást nem adunk meg a tizedesek számára vonatkozóan, akkor ezres csoportosítás nélkül két tizedessel jelennek meg az értékek. Ha mást nem adunk meg a tizedesek számára vonatkozóan, akkor ezres csoportosítással és két tizedessel jelennek meg az értékek. A tényleges adat százszorosa lesz látható a mezőben, és a „%” jel is kijelzésre kerül. Az Excelben már megismert módszernek megfelelő exponenciális alakot adja.
Nulla (0)
2355,35648
-2355,35648
0
2 355,36 Ft
-2 355,36 Ft
0,00 Ft
2355,36
-2355,36
0,00
2 355,36
-2 355,36
0,00
235535,60%
-235535,60%
0,00%
2,36E+03
-2,36E+03
0,00E+00
12. Táblázat: Előre definiált szám és pénznem formátumok hatására megjelenő számok 5.2.2.2.1.2.2 Egyedi formátumok
Az Excelhez viszonyított analógia most is folytatódik, ugyanis az alkalmazható formátumkódok szinte teljesen megegyeznek. Kód , (vessző) _ (szóköz) 0 # % "szöveg"
Hatása Tizedesjel (feltéve, hogy a „Területi beállításokban” nem adunk meg mást). Ezres elválasztó (feltéve, hogy a „Területi beállításokban” nem adunk meg mást). A második szakaszban használandó negatív előjel (ha nem adjuk meg, nem jelenik meg). Számhely jelölő. Egy számjegyet vagy 0-t jelenít meg (az értéktelen nulla is kijelzésre kerül). Az egyesek helyértékére mindig ezt írjuk! Számhely jelölő. Egy-egy számjegyet jelez ki (a nulla csak akkor jelenik meg, ha értékes). Százalék. A tényleges adat százszorosa és egy százalékjel jelenik meg a mezőben. Az idézőjelbe írt szöveg változatlan formában megjelenik.
13. Táblázat: Szám és pénznem adattípusok egyéni formátumkódjában használható fontosabb formázókódok
27
ECDL Adatbázis-kezelés modul
1. 2. 3. 4.
Példa: Ha például azt akarjuk, hogy: a pozitív számok két tizedesre kerekítve; a negatív számok piros színben ugyanúgy (ne felejtsük le a negatív számokra vonatkozó második szakasz mínusz előjelét); a nulla kéken jelenjen meg; a meg sem adott adatnál a „nincs értéke” felirat jelenjen meg, akkor a következő kódot adjuk meg (a „_” szóköznek felel meg): #_##0,00;[piros]- #_##0,00;[kék] 0; "nincs értéke"
5.2.2.2.1.3 Szöveg és feljegyzés adattípus formátumai A szöveg és feljegyzés típusú mezők esetében a formátumkód három szakaszból állhat: ¾ az első szakasz a normál szövegre vonatkozik; ¾ a második szakasz az úgynevezett nulla hosszúságú szöveget, vagyis "" (két idézőjelet) tartalmazó mezőkre érvényes formátum; ¾ a harmadik szakasz a „Null” értékekre vonatkozik, azaz üres mező esetén lép érvénybe. A második és a harmadik szakasz szerepének megértéséhez el kell olvasni a nulla hosszúság engedélyezéséről szóló részt is (5.2.2.2.8.). Ha kevesebb szakaszt adunk meg, akkor a formátumok a következők szerint jelennek meg: Megadott szakaszok nem üres mező "" tartalmú mező „Null” tartalmú (üres) száma formája formája mező formája 1 első szakaszé első szakaszé első szakaszé 2 első szakaszé második szakaszé második szakaszé 3 első szakaszé második szakaszé harmadik szakaszé 5.2.2.2.1.3.1 Előre meghatározott formátumok
Ennek az adattípusnak előre definiált formátumai nincsenek. 5.2.2.2.1.3.2 Egyedi formátumok
Az egyedi formátumok megadásakor a következő fontosabb kódokat alkalmazhatjuk: Kód @ & <1 >
Hatása Szöveges karakter (karakter vagy szóköz) szükséges. Szöveges karakter nem szükséges. A kód elejére célszerű elhelyezni. Hatására a helyén csak akkor jelenik meg karakter, ha „mögötte” már nem fér el az adat. Minden karakter kötelezően kisbetűs. Minden karakter kötelezően nagybetűs. 14. Táblázat: Szöveg és feljegyzés adattípus fontosabb egyéni formátumkódjai
Példa: Ha például azt akarjuk, hogy: 1. a begépelt telefonszámot úgy lássuk, ahogy beírtuk; 2. ha nem adjuk meg, akkor „Nem ismert” felirat jelenjen meg; 3. ha pedig biztosan tudjuk, hogy nincs, és ezt lássuk is, akkor a következő kódot adjuk meg: @; "Nincs"; "Nem ismert" 5.2.2.2.1.4 Igen/Nem adattípus formátumai ¾ ¾ ¾
1
Az Igen/Nem típusú mezők esetében a formátumkód három szakaszból állhat: az első szakasz bár a szakasznak nincs hatása az Igen/Nem adattípusra, kötelező megadni; a második szakasz az „Igen”, „Igaz” vagy „Be” érték helyett megjelenítendő szöveg; a harmadik szakasz a „Nem”, „Hamis” vagy „Ki” érték helyett megjelenítendő szöveg.
Csak egy szerepelhet a „<” és a „>” karakterek közül. Akárhová írjuk, mindig a formátumkód elejére kerül, és az egész adatmezőre fog vonatkozni. Ha ez így nem felel meg céljainknak, akkor alkalmazzunk beviteli maszkot.
28
Access XP alapokon 5.2.2.2.1.4.1 Előre meghatározott formátumok ¾ ¾ ¾
Három formátum közül választhatunk: Igen/Nem; Igaz/Hamis; Be/Ki.
5.2.2.2.1.4.2 Egyedi formátumok
Tetszőleges szöveget adhatunk meg a második és a harmadik szakaszban. Az első szakaszt viszont üresen kell hagynunk! Nagyon fontos tudnunk, hogy mindennek csak akkor van hatása, ha a „Megjelenés” regiszteren a „Vezérlőelem megjelenése” legördülő listában „Beviteli mező”, vagy „Kombinált lista” van kiválasztva! Példa: Ha azt akarjuk, hogy: 1. „Választható”; 2. és „Nem választható” felirat jelenjen meg, akkor a következő kódot adjuk meg: ; "Választható"; "Nem választható" Igen/Nem mezőbe történő adatbevitel közben fellépő hiba elhárítása Ha egy „Igen/Nem” mező esetében a „Megjelenés” regiszteren a „Vezérlőelem megjelenése” listában a „Beviteli mező” elemet választjuk, akkor az adatbevitel során probléma léphet fel. Ha ugyanis a mezőbe kattintunk, akkor a mező tartalmaként 0 és -1 értékeket láthatunk. A „0” a „Hamis”, a „-1” az „Igaz” értéknek felel meg. Igen ám, de ezt csak egy nagy gyakorlattal rendelkező felhasználó tudja, és ha nem ilyen értékeket adunk meg, akkor hibaüzenetet kapunk. Ezen ugyan segíthetnénk „Érvényesítési szöveg” megadásával, de van sokkal elegánsabb megoldás is. Ennek lépései a következők: 1. adjuk meg a mező típusát „Igen/Nem” értékre; 2. az „Általános” regiszteren a „Formátum” mezőbe gépeljük be pl. a következőt: ;"Választható"; "Nem választható" 3. lapozzunk a „Megjelenés” regiszterhez, majd a „Vezérlő elem megjelenése” legördülő listából válasszuk ki a „Kombinált lista” értéket; 4. a „Sorforrás típusa” listából válasszuk ki a „Lista” elemet; 5. a „Sorforráshoz gépeljük be a következőt: -1;"Választható";0;"Nem választható" 6. az „Oszlopszám” mezőbe gépeljünk 2 értéket; 7. végül az „Oszlopszélességek” értéket állítsuk be a következőre: 0;3 cm A 3. és az 5. lépésben megadott „Választható” és „Nem választható” értékek helyett mást is megadhatunk, ha a feladat úgy kívánja. A 7. lépésben a 3 cm helyett kisebb és nagyobb is megadható attól függően, hogy a legördülő listát szélesebbre, vagy keskenyebbre akarjuk állítani.
5.2.2.2.2 Beviteli maszk A „Beviteli maszk” a „Formátum” közeli rokona. Eleinte nem is nagyon szokták érzékelni a kettő közötti különbséget, hiszen mindkettő a mező megjelenését befolyásolja. Valójában azonban jelentős differencia van a hatásukban. A következő táblázatban világosan látszódnak a különbségek: Már bevitel közben kifejti hatását? Nem. Csak ha az adatbevitelt lezártuk, akkor kerül a mező a formátumkódnak megfelelő megformázásra. Igen. Már az adatbevitel során a beviteli Beviteli maszk maszknak megfelelő alakot veszi fel a begépelt adat. Formátumkód
A letárolt adatra is hatással van? Nem. A formátumkóddal nem tudjuk befolyásolni a letárolandó adatot. Igen. A beviteli maszk egyik szakaszában pontosan ezt tudjuk beállítani.
15. Táblázat: a Formátumkód és a Beviteli maszk összehasonlítása Melyiket használjuk? Nehéz kérdés. A beviteli maszk akkor egyértelműen jobb megoldás, ha az adat mindig csak egyfajta meghatározott alakot vehet fel. Ez esetben ugyanis szinte minden karakternek előre megadhatjuk az elfogadható értékeit. Például a következő adatok esetében erősen javasolt az alkalmazása:
29
ECDL Adatbázis-kezelés modul Az adat fajtája egy lehetséges adat jellemzője1 ¾ személyi szám 1 123456 1234 164 ¾ adószám 1234578-1-12 8-1-2 ¾ bankszámlaszám 12345678-12345678-12345678 8-8-8 ¾ TB azonosító 123-123-123 3-3-3 ¾ irányítószám 1234 4 Olyan esetben viszont, amikor egy adat többféle alakot is felvehet, lehetséges ugyan a használata, de adatbevitel közben időnként bizonyos problémákra számíthatunk. Ennek lehetséges kezeléséről a későbbiekben esik majd szó (5.2.2.2.6.). Mely adatok tartoznak ebbe a körbe? Például: Az adat fajtája egyik alak és jellemzője másik alak és jellemzője ¾ igazolványszám OK-III 452 124 2-32 3 3 AS 123 235 233 ¾ telefonszám (1) 235-1235 (1) 3-4 (96) 213-548 (2) 3-3 Mi is a probléma lényege? Nos az, hogy a beviteli maszkokban megadható, hogy hová kell megadni betűket, illetve számokat. Ha azonban nemcsak egyféle csoportosítású adat kerülhet egy mezőbe, akkor az problémákat okozhat adatbevitel közben. Ilyenkor ugyanis az adatot nem lehet csak folyamatos gépeléssel bevinni, mert a következő adatcsoportba nem lép át magától az Access. Ilyenkor a jobbra nyíllal, vagy szóközzel kell a kurzort a helyes pozícióhoz léptetni. Ez ugyan nem jelent igazán nagy gondot, de ahogy a programozók egymás között mondani szokták: amit adatbevitel közben el lehet rontani, azt az adatrögzítő előbb-utóbb el is rontja. Például, ha nem figyel az adatrögzítő, akkor egy pesti, eredetileg 1 /221-5121-es telefonszámot könnyedén bevihet ilyen rossz alakban is: 12/215-121. Márpedig tizenvalahányas telefon körzetszámok egyáltalán nincsenek. És csak annyit kell elhibáznia, hogy az első 1-es szám után nem üt közt, vagy nem nyomja meg a jobbra nyilat. Ez a probléma teljes mértékben úgy zárható ki, hogy nem „Beviteli maszkot”, hanem „Érvényességi szabályt” és „Érvényesítési szöveget” adunk meg. Erről kicsit később lesz szó, és példaként éppen a telefonszámok helyes kezeltetése fog szerepelni (5.2.2.2.6.). A formátumkódot, és a beviteli maszkot együtt, és külön-külön is lehet alkalmazni. Együttes alkalmazás esetén arra nagyon ügyeljünk, hogy amennyiben ellentmondás van a két kód által elfogadható adat között, semmilyen adatot nem lehet a mezőbe bevinni. Ennyi előzetes ismertetés után lássuk a „Beviteli maszkban” szóba jöhető lehetőségeket. A beviteli maszk általános alakja Minden adattípus beviteli maszkja három szakaszból állhat. Ha kevesebb szakaszt adunk meg, akkor az alapértelmezett értékek lépnek érvénybe. Az egyes szakaszok szerepe a következő: ¾ első szakasz Itt kell megadni, hogy az egyes pozíciókon számot vagy betűt lehet begépelni, ¾ második szakasz Ha ebben a szakaszban 1 (egyes szám) szerepel, csak a felhasználó által bevitt karakterek, ha viszont 0 (nulla), akkor a maszkban lévő tagoló karakterek is letárolódnak a mezőben. Az alapértelmezés az 1 (egyes szám). ¾ harmadik szakasz Azt adhatjuk meg, hogy a beviendő karakterek helyén milyen jel legyen látható. Ez bármilyen karakter lehet, pl. - (kötőjel), # (kettős kereszt), * (csillag), _ (aláhúzás jel), " " (szóköz két idézőjel között), stb. Az alapértelmezés a _ (aláhúzás jel). A helyjelölő csak akkor válik láthatóvá, ha elkezdünk gépelni (ez szerintem szerencsétlen megoldás). 5.2.2.2.2.1 Beviteli maszk varázsló Ez a varázsló a beviteli maszk létrehozását hivatott megkönnyíteni. Egyetlen szépséghibája, hogy eléggé korlátozott a gyárilag beépített maszkok felhasználási köre, amin csak úgy segíthetünk, ha mi magunk bővítjük tovább a maszkok számát. Ezt viszont már csak a maszkok első szakaszában alkalmazható kódok ismeretében tehetjük meg. De lássuk a varázsló tényleges használatát. A többi varázslóhoz hasonlóan itt is több lépése lesz majd a munkának.
1
Ez alatt azt kell értenünk, hogy az adatban szereplő karakterek hogy vannak csoportosítva, illetve milyen szeparátor szerepel a csoportok között. 2 A régi személyigazolványok esetében I, II, és III is előfordulhatott, tehát még ez sem biztos, hogy 3.
30
Access XP alapokon 1. Elsőként majd a maszk jellegét kell kiválasztanunk. Ehhez csak rá kell kattintani a listában a célnak megfelelő elemre, majd megnyomni a „Tovább” gombot. Ha nem ismerjük az egyes maszkok viselkedését, kattintsunk bele a „Próba” mezőbe, és teszteljük a kérdéses maszk viselkedését. 2. A második lépésben kapott ablaknál láthatóvá válik a tényleges maszk első és harmadik szakasza. Az első szakasz, mely az egyes pozíciókon megadható karak-
10. Ábra: A „Beviteli maszk varázsló” 1. lépése tereket határozza meg, a „Beviteli maszk” mezőben módosítható. Az itt alkalmazható kódokat hamarosan megtárgyaljuk. A harmadik szakasz
11. Ábra: A „Beviteli maszk varázsló” 2. lépése tartalmát a „Helyőrző karakter” legördülő listában változtathatjuk, és azt határozza meg, hogy az üres helyeket mi jelölje. A változtatás hatását a „Próba” mezőben tesztelhetjük. Ha elégedettek vagyunk az eredménnyel, kattintsunk a „Tovább” gombra. 3. A harmadik lépésben egy minta alapján azt kell eldönteni, hogy a tagoló karakterekkel, vagy anélkül akarjuk az adatokat az adattáblában letároltatni. 12. Ábra: A „Beviteli maszk varázsló” 3. lépése Ezzel valójában azt határozzuk meg, hogy a második szakaszba „1”, vagy „0” kerüljön. A választékot bővíteni úgy lehet, hogy az első lépésben a „Lista szerkesztése” gombot megnyomjuk, majd az ennek hatására megjelenő „Beviteli maszk varázsló testreszabása” ablakban a ikonra kattintással egy újabb maszkot adunk a már meglévőkhöz. 5.2.2.2.2.2 Beviteli maszkban alkalmazható kódok A beviteli maszkban megadásra kerülő úgynevezett helyettesítő karakterek száma meghatározza, hogy maximálisan hány karakter bevitelét akarjuk megengedni a mezőbe. Ezt úgy kell érteni, hogy mindenféleképpen csak annyi karaktert lehet a mezőbe maximum begépelni, ahány helyettesítő karaktert megadunk (rövidebb adat viszont a kódtól függően esetleg lehetséges). Minden egyes pozíción kiköthetjük azt, hogy az adott helyen milyen karaktert lehessen bevinni1. Azt is előírhatjuk, hogy egy-egy pozíción be kelljen-e valamilyen karaktert gépelni, vagy üresen lehessen-e hagyni. Kötelezően megadandó karakterek helyét kijelölő kódok A kódok helyén mindenképpen meg kell adni valamelyiket a helyettesített karakterek közül. A kódok és a helyettesített karaktereik: ¾ 0 számjegy (0 - 9), de a + (plusz) és a - (mínusz) előjel nem engedélyezett; ¾ a betű (A - z), vagy számjegy (0 - 9); ¾ ? betű (A - z); ¾ C bármilyen karakter. 1
A súgóban rosszul szerepel az egyes helyettesítő karakterek szerepe.
31
ECDL Adatbázis-kezelés modul Nem kötelezően megadandó karakterek helyét kijelölő kódok Ezeknek a kódoknak a helyére nem kell feltétlenül karaktert gépelni. Ez azt jelenti, hogy szóközzel át lehet őket lépni, vagy ha a helyettesítő karakter a kód végén szerepel, egyszerűen el lehet hagyni az adatbevitelt. A választék a következő: ¾ 9 számjegy (0 - 9), a + (plusz) és a - (mínusz) előjel nem engedélyezett; ¾ # számjegy (0 - 9), az előjel engedélyezett; ¾ L betű (A - z), vagy számjegy (0 - 9); Formázó, tagoló és speciális kódok ¾ , szóköz : - / tizedesvessző, ezres-, idő- és dátumelválasztó (a használandó kódok a „Területi beállítások” függvényei); ¾ < az összes mögötte szereplő karakter kisbetűssé konvertálódik; ¾ „szöveg” az idézőjel tartalma változatlan formában megjelenik; ¾ jelszó a bevitt adat letárolódik, de bevitelkor * jelenik meg a betűk helyén. Például: Ha azt akarjuk, hogy 1. a pesti telefonszámok (1 ) 123-4567, a vidékiek pedig (12) 123-456 alakban kelljen megadni; 2. és bevitelkor az egyes karakterek helyét x jelezze, a maszkot a következőnek állítsuk be: "("0#") "000"-"0009; ; x 5.2.2.2.3 Cím Az Access program megengedi az akár szóközt is tartalmazó, maximum 64 karakteres, UNICODE mezőnevek alkalmazását. Ez azonban azt a problémát okozhatja, hogy nem lehetséges az Access adatbázisban tárolt adattáblákat régebbi adatbázis-kezelő programokba, mondjuk dBase, Clipper, FoxBASE, stb. exportálni, ami arra vezethető vissza, hogy ezek a programok korántsem kezelik a mezőneveket ilyen rugalmasan. Ezért, ha ilyen igények is felmerülhetnek, tartsuk be a következő névadási szabályokat: ¾ a mezőnév maximum 10 karakteres legyen; ¾ csak az angol abc betűit, illetve számjegyeket alkalmazzuk benne; ¾ az első karaktere legyen betű; ¾ tagolásra szóköz helyett használjunk aláhúzás „ _ ” jelet. Így viszont meglehetősen érthetetlen feliratok szerepelnének az adattáblákban, lekérdezésekben és jelentésekben. Ezen úgy segíthetünk, hogy megadunk úgynevezett „Cím” neveket is. Ha így járunk el, akkor az Access adatbázis kompatibilis lesz bármely régebbi adatbázis-kezelővel, ugyanakkor minden felirat érthető lesz. 5.2.2.2.4 Alapértelmezett érték Olyan mező esetében fogjuk alkalmazni, mely gyakran vesz fel egy bizonyos értéket. Ilyenkor célszerű, ha a mezőbe lépve abban már eleve szerepel az adott érték, így az adatbevitel ideje jelentősen lecsökkenthető (például egy budapesti vállalat esetében a dolgozók születési helyének így előre megadható „Budapest”). Az alapértelmezett érték lehet egy előre beírt érték, de lehet egy kifejezés eredménye is. Ez utóbbi esetben létrehozása gyakorlatilag pontosan úgy történhet, mint a következő pontban bemutatásra kerülő érvényességi szabályé. Az ott szereplő példák alapján könnyen készíthetünk majd alapértelmezett értékeket meghatározó kifejezéseket is. 5.2.2.2.5 Érvényességi szabály Az „Érvényességi szabály” nagyon hasonlít az Excel „Adatok érvényesítése” lehetőségére. Alkalmazásával a program csak olyan adatbevitelt fog engedélyezni, mely megfelel az érvényességi szabálynak. Talán nem kell részletesebben is kifejteni, hogy ez kulcsjelentőségű lehet az adatok helyessége szempontjából. 13. Ábra: A „Kifejezésszerkesztő”
32
Access XP alapokon Az érvényességi szabály olyan, maximum 2048 karakter hosszúságú kifejezés lehet, mely az alábbi elemeket tartalmazhatja: Megnevezés példa ¾ értékek 3,14, 100, „alma”, #2005.10.10#, stb; ¾ állandók igaz, hamis, Null, ""; ¾ különféle operátorok +, -, *, /, and, or, <, >, =, stb; ¾ függvények Date(), Time(), stb; ¾ valamint zárójelek (, ). Maga a szabály – mely az Excel képleteihez, illetve irányított szűrőknél a kritériumtartományban alkalmazott feltételekhez lesz hasonló – kétféleképpen is létrehozható. Bármelyik módszert is kívánjuk alkalmazni, elsőként kattintsunk bele az „Érvényességi szabály” mezőbe majd: ¾ a szabályt egyszerűen csak gépeljük be (ez csak nagy gyakorlattal fog menni); ¾ vagy indítsuk el a kifejezésszerkesztőt a ikonnal, és azzal készítsük el. A későbbiekben, amikor majd a kérdéses mezőbe adatot viszünk be, akkor a szabályt az adat figyelembevételével az Access kielemzi, és amennyiben az igaz értéket ad, elfogadja az adatot, ellenkező esetben hibaüzenetet küld: ¾ ha megadunk „Érvényesítési szöveget”, akkor azt; ¾ ha nem, akkor általános jellegűt. A továbbiakban, a kifejezésekben alkalmazható eszközöket ismertetem, a teljességre való törekvés nélkül. Mikor értékeli ki a mező érvényességi szabályt az Access? Amikor a mezőt el akarjuk hagyni (a kurzormozgató nyilakkal, Enterrel, vagy tabulátorral). Az itt megadott feltétel tehát egy-egy mezőre vonatkozik. Létezik rekord érvényességi szabály is? Igen. Megadhatunk olyan érvényességi szabályt is, mely egy rekordra vonatkozóan ír le kötöttségeket. Ez utóbbi esetben a különböző mezőkbe kerülő adatokat egymáshoz is lehet viszonyítani.
5.2.2.2.5.1 Értékek és állandók Az összehasonlítást természetesen valamihez viszonyítva kell végezni. Ez lehet egy írott érték, vagy egy állandó. 5.2.2.2.5.1.1 Írott érték (literális érték) ¾ ¾ ¾
Az írott értékeket mi fogjuk megadni. Három típusa lehet: szöveg idézőjelek között kell megadni (pl. "Budapest"); szám csak be kell gépelni (pl. 100); dátum kötőjellel, vagy kettős keresztek között kell bevinni (pl. 1999-12-24, vagy #1999.12.24#).
5.2.2.2.5.1.2 Állandók
Olyan speciális, nem változó értékek, melyekkel szintén összehasonlíthatjuk a bevitt adatot. A lehetőségek: ¾ Igaz igaz logikai érték; ¾ Hamis hamis logikai érték; ¾ "" üres karakterlánc; ¾ Null nem megadott érték. Mi a különbség a "" és a „Null” állandók között? Ha egy mezőt üresen hagyunk, mert nem tudjuk az adatot, az megfelel a „Null” értéknek, ha viszont tudjuk, hogy nincs is olyan adat, oda " " (semmi idézőjelek között) adatot kell begépelni majd. A kérdésről a későbbiekben még sok szó esik (5.2.2.2.8.).
5.2.2.2.5.2 Operátorok ¾ ¾ ¾
Az operátorok több csoportra oszthatóak: szövegösszefűző és aritmetikai; összehasonlító; logikai.
33
ECDL Adatbázis-kezelés modul 5.2.2.2.5.2.1 Szövegösszefűző és aritmetikai operátorok
A következő táblázat a legfontosabb szövegösszefűző és aritmetikai operátorokat tartalmazza: &
+
-
szöveg összefűzés
összeadás
kivonás
*
/
szorzás osztás
\
^
osztás egész része
hatványozás
Mod osztás maradéka (tört szám esetén előbb egészre kerekít)
16. Táblázat: Az aritmetikai operátorok Lássunk néhány példát az „&”, a „\”, és a „Mod” operátorokra, mert azok csak így lesznek érthetőek: „számító” & „gép” = „számítógép; 11 \ 4 = 2, 9 \ 3 = 3, 100 \ 3 = 33; 10 Mod 5 = 0, 10 Mod 3 = 1, 12,6 Mod 5 = 3
¾ ¾ ¾
5.2.2.2.5.2.2 Összehasonlító operátorok
Az összehasonlító operátorok mindig igaz / hamis logikai értéket adnak vissza. Az alábbi táblázat tartalmazza az Access program összehasonlító operátorait. < kisebb
<= kisebb, vagy egyenlő
<> nem egyenlő
=
>
>= In nagyobb, vagy egyenlő nagyobb része egyenlő
Between And1
Like
közé esik
hasonló
17. Táblázat: Az összehasonlító operátorok A „kisebb”, „nagyobb” „egyenlő”, illetve ezek kombinációinak értelmezése nem jelent gondot, de az „In”, a „Between” és a „Like” operátorok bővebb magyarázatot is követlenek. In összehasonlító operátor Az In( ) az én véleményem szerint inkább operátor, és ezért szerepeltetem itt is, bár a programban a függvények, mégpedig az általános függvények között fogjuk megtalálni. Ennek az oka talán az lehet, hogy a függvényekre jellemző szintaktikával kell alkalmazni. Használata roppant egyszerű: a zárójelen belül írott értékként csak fel kell sorolni az elfogadhatóakat, melyek lehetnek szöveg, szám és dátum típusúak is. Természetesen a szöveg típusúakat idézőjelbe, a számokat csak önmagukban, a dátum típusúakat kötőjel tagolással (pl. 2005-10-10), vagy # jelek közé kell megadnunk. Az elfogadható értékeket pontosvesszővel elválasztva kell szerepeltetnünk. Nézzünk néhány példát az alkalmazására: A feltétel
Igaz értéket visszaadó adatok Hamis értéket visszaadó adat (adat1) (adat2)
In("XT"; "AT286"; "AT386"; "AT486") xt, at286, at486, XT, AT286 In(286; 386; 486) 286, 386, 486, In(#2000.02.28#; #1999.12.24#) 2000.02.28, 1999.12.24
X T, at 286, Pentium, … 586, PC, 0, 1, 9, … 2000.02.27, 1999.01.10, …
18. Táblázat: Példák az In operátor használatára A fenti példák „adat1” oszlopban lévő értékeit elfogadja az Access, az „adat2” oszlop adatait viszont nem. Pl.: ¾ az „In(286;386;486) érvényességi szabály a 386-os számot elfogadja, az 586-ot viszont nem. Between operátor A „Between” operátort az érvényességi szabályban alkalmazva az a zárt intervallum adható meg, amelyen belül számértékeket el kell fogadnia a programnak. Például: ¾ a „Between 0 and 100” érvényességi szabály a 0, 100 és 10 értékek bevitelét megengedi, a -1 és 110 számokét viszont nem. Like összehasonlító operátor A táblázatban lévő operátorok közül ez igényli a leghosszabb magyarázatot. Segítségével eldönthetjük, hogy az adat hasonlít-e egy általunk előre megadott mintára. A mintában többféle speciális helyettesítő
1
Az „And” rész automatikusan beszúrásra kerül.
34
Access XP alapokon karaktert is alkalmazhatunk (olyasmire kell gondolni, mint a nem egyértelmű fájlneveknél a „*” és a „?”). Elsőként lássuk ezeket a helyettesítési lehetőségeket, majd jó néhány példát a pontos értelmezésükhöz. A helyettesítő karakter * ? # karakter1-karakter2 [karakterlista], vagy [karaktertartomány] [!karakterlista], vagy [!karaktertartomány] [speciális karakter]
Jelentése több tetszőleges karakter egy tetszőleges karakter egy tetszőleges számjegy egy karakter1-től karakter2-ig terjedő tartományt adhatunk meg vele a zárójelben lévő karakterek, vagy tartomány közül egyetlen egyet helyettesít (ha karakter tartományt adunk meg, annak növekvő sorrendűnek kell lennie) az adott karakterek, vagy tartomány kivételével bármely karakterből egy speciális karakter
19. Táblázat: A Like operátor mintájában alkalmazható helyettesítő karakterek A minta (természetesen idézőjelbe kell rakni)
Igaz értéket visszaadó adatok (adat1) aa, aBa, aBBBa abc, AABB, Xab a*a abcdefg, abc aaa, a3a, aBa a0a, a1a, a2a f, p, j 9, &, % A, a, !, & an9, az0, a99
a*a *ab* a[*]a ab* a?a a#a [a-z] [!a-z] [!0-9] a[!b-m]#
Hamis értéket visszaadó adatok (adat2) aBC aZb, bac aaa cab, aab aBBBa aaa, a10a 2, & b, c 0, 1, 9 abc, aj0
20. Táblázat: Példák a Like operátor használatára A példákat úgy kell értelmeznünk, hogy amennyiben az érvényességi szabályban a „ Like "minta" ” formát alkalmazzuk, akkor az „adat1” oszlopban lévő adatokat az Access elfogadja, az „adat2” értékeket viszont nem. Pl.: ¾ a „ Like " a#a " ” érvényességi szabály az „a0a” értéket elfogadja, az „aaa” értéket viszont nem. Néha azonban még a helyettesítő karakterek segítségével sem tudjuk megadni a feltételt, mert egymástól jelentősen eltérő adatok is jók. Ilyen esetben lehet, hogy célszerűbb a már bemutatott „In()” függvényt használni. 5.2.2.2.5.2.3 Logikai operátorok
Elsőként lássuk az operátorok úgynevezett igazságtáblázatait1: And (és) A and B Igaz Igaz Igaz Igaz Hamis Hamis Hamis Igaz Hamis Hamis Hamis Hamis A
B
Eqv (egyenértékű) A
B
Igaz Igaz Hamis Hamis
Igaz Hamis Igaz Hamis
A and B Igaz Hamis Hamis Igaz
Not (nem) A
Not A
Igaz Hamis Hamis Igaz
Or (vagy) A
B
A or B
Igaz Igaz Igaz Igaz Hamis Igaz Hamis Igaz Igaz Hamis Hamis Hamis
Xor (kizáró vagy) A
B
A xor B
Igaz Igaz Hamis Igaz Hamis Igaz Hamis Igaz Igaz Hamis Hamis Hamis
21. Táblázat: A logikai operátorok igazságtáblázata 1
Az igazságtáblázatból az olvasható ki, hogy ha két önálló feltételt az adott logikai operátorral összekapcsolunk, az egyes önálló feltételek különféle értékeihez milyen értéket ad vissza az összekapcsolt kifejezés. Természetesen mindkét feltétel lehet „Igaz” és „Hamis”, így a „nem” kivételével minden operátornál négyféle variáció jöhet szóba.
35
ECDL Adatbázis-kezelés modul A fenti logikai operátorok segítségével tudunk megadni egyszerre több feltételt is. Használatukat nagyon fontos ismernünk, mert összetett érvényességi szabály csak logikai operátorok segítségével adható meg. Általában elegendő az „és”, a „nem” és a „vagy” operátorok ismerete, mert azokkal minden probléma megoldható. 5.2.2.2.5.3 Függvények Mint tudjuk, a függvények olyan eszközök, melyek valamilyen bemenő értékből (értékekből) egy másik kimenő értéket állítanak elő. Természetesen az Access is rengeteg függvényt ismer, melyek közül önkényesen kiragadva a következőkben ismertetek néhányat. Azokat próbáltam meg összegyűjteni, melyekre vélhetően szükségünk lehet. Természetesen a függvények is csoportosíthatóak. Lássuk az egyes csoportok elemeit. 5.2.2.2.5.3.1 Matematikai függvények
Azért ezzel a csoporttal kezdem, mert az ide tartozó függvényeket mindenki ismeri (bármennyire is utálja a matekot). Ezért nem is nagyon kell őket bemutatni, csak felsorolni. Mindenekelőtt azonban egy általános érvényű szabály: minden matematikai függvény esetén mind a bemenő, mind a visszaadott érték típusa szám. Két matematikai függvényt azért részletesebben is ismertetek, mivel azokat nem tanulhattuk. Rájuk viszont inkább csak az „Alapértelmezett érték” megadásakor (5.2.2.2.4.) lesz szükségünk. ¾ Rnd() Egy véletlenszerű 0 és 1 közötti számot ad vissza (tetszőleges határok közötti szám előállítása a kiegészítő információban kerül ismertetésre). ¾ Int() A szám egész részét adja vissza úgy, hogy az eredmény kisebb a számnál, vagy egyenlő vele. Pozitív szám esetén egyszerűen lehagyja a tizedest, negatív szám esetén az abszolút értéket felfelé kerekíti (a hasonló funkciójú Fix() lefelé kerekít), és az eredményt szorozza mínusz eggyel. Példa véletlenszerű, adott értékek közé eső szám előállítására ¾
Alapértelmezett érték megadásakor alkalmazhatjuk, ha X és Y közötti véletlenszerű számot akarunk előállítani (ahol X < Y). Int((Y – X + 1) * Rnd() + X)
A matematikai függvények: Abs() Fix() Sin()
abszolút érték egész rész szinusz
Atn() Int() Sqr()
árkusz tangens egész rész négyzetgyök
Cos() Log() Sgn()
Koszinusz Exp () e alapú logaritmus Rnd() előjel Tan()
exponenciális véletlen szám tangens
22. Táblázat: A matematikai függvények Az Access nem is ismer több matematikai függvényt, mert minden más matematikai függvény előállítható a felsorolt 12 függvényből. 5.2.2.2.5.3.2 Dátum függvények
Mivel ebben a jóval népesebb csoportban már mind a bemenő, mind a visszaadott értékek típusa függvényenként más és más lehet, a felsorolás tartalmazza a bemenő (be) és a visszaadott érték (ki) típusát is. Ha az argumentumban valamelyik értéket nem kötelező megadni, az szögletes zárójelben szerepel. A függvények alkalmazására példákat is mutatok (pl.), sőt, némi magyarázatot is adok (*). Ezt azonban most nem a kiegészítő információkban fogjuk megtalálni. A dátum függvényekre sokkal több esetben lesz szükségünk, mivel valószínűleg nagyon gyakran kell majd a bevitt adatot a pillanatnyi dátumhoz, vagy egy másik dátumhoz hasonlítani. Ugyancsak sokszor fogjuk a dátum függvényeket az alapértelmezett értékek megadásához is használni.
36
Access XP alapokon Név visszaadott érték (ki:)
Leírás bemenő adatok (be:) példa (pl.:) magyarázat (*)
CDate() ki: dátum
Szöveg átalakítása dátummá be: dátum, vagy idő szöveg pl.: CDate("1999 február 12") * a szövegben megadott dátum Rendszerdátum be: nincs pl.: Date() * az adott napi dátum Két dátum közt eltelt idő adott időegységben be: időegység; dátum1; dátum2[;nap1] [;hét2] pl.: DateDiff("ww";#3.1#;Date();2;3) * a mostani hét hányadik hét március elseje óta Dátum egy számsorozatból be: szám1; szám2; szám3 pl.: DateSerial(2000;-1;6) * 1999.11.6. Egy dátumból a nap értéke be: dátum pl.: Day(Date()) * ma hányadika van A változó dátum típusú-e be: bármely típus pl.: IsDate(#1999.12.20#) * „igaz” (mert dátumként adtuk meg) Egy dátumból a hónap értéke be: dátum pl.: Month(Date()) * ma hányadik hó van Egy időből a másodperc értéke be: dátum (idő) pl.: Second(Time()) * most hány perc van Rendszeridő be: nincs pl.: Time() * az adott pillanatbeli idő A hét hányadik napja be: dátum[;nap] pl.: Weekday(#2000.02.20#;2) * 7, mert vasárnap az adott dátum
Date() ki: dátum
DateDiff() ki: szám
DateSerial() ki: dátum
Day() ki: szám
IsDate() ki: logikai
Month() ki: szám
Second() ki: szám
Time$() ki: dátum (idő) Weekday() ki: szám
CVDate() ki: dátum
DateAdd() ki: dátum
DatePart() ki: szám
DateValue() ki: dátum
Hour() ki: szám
Minute() ki: szám
Szöveg átalakítása dátummá be: dátum vagy idő szöveg pl.: CVDate("1999 február 12") * a szövegben megadott dátum Dátumhoz előre megadott egységet ad be: időegység, szám, dátum pl.: DateAdd("q";1;Date()) * mai nap után negyedévvel Adott időegység sorszáma január 1. óta be: időegység; dátum [;nap] [;hét] pl.: DatePart("m";Date()) * ma hányadik hónap van
Szöveg átalakítása dátummá be: dátum szöveg pl.: DateValue ("1999 február 12") * a szövegben megadott dátum Egy időből az óra értéke be: dátum (idő) pl.: Hour(Time()) * most hány óra van Egy időből a perc értéke be: dátum (idő) pl.: Minute(Time()) * most hány perc van
Now() ki: dátum
Rendszerdátum és idő be: nincs pl.: Now() * az adott pillanatbeli dátum és idő Time() Rendszeridő ki: dátum (idő) be: nincs pl.: Time() * az adott pillanatbeli idő TimeValue() Szöveg átalakítása idővé ki: dátum (idő) be: idő szöveg pl.: TimeValue ("15:10") * 15:10:00 Year() Egy dátumból az év értéke ki: szám be: dátum pl.: Year(#2000.02.20#) * 2000, mert a dátumban ez az év
23. Táblázat: A fontosabb dátum függvények 1 2
Nap: azt állíthatjuk be vele, hogy a napok közül melyet vegye a hét első napjának. Ha a hétfőt akarjuk első napnak megadni, értéke 2. Hét: a paraméterrel azt adhatjuk meg, hogy az időszak első hetének melyik hetet tekintse. Ha az első teljes hetet, értéke 3.
37
ECDL Adatbázis-kezelés modul A táblázatban többször is hivatkozott időegység a következő értékeket veheti fel: "yyyy" (year)
"q" (quarter)
"m" (month)
"y" (day)
"d" (day)
"w" (week)
"ww" (week)
"h" (hour)
"n" (minute)
"s" (second)
év
negyedév
hónap
nap az évben
nap
hét
hét
óra
perc
másodperc
24. Táblázat: A dátum függvények időegység paraméterében megadható kódok és értelmezésük Ne felejtsük el, hogy a fenti időegységeket szövegként, azaz idézőjelbe rakva kell megadnunk! 5.2.2.2.5.3.3 Szöveg függvények
Ez is egy népes család, de viszonylag kevesebb elemét fogjuk rendszeresen alkalmazni. Az ismertetés módszere ugyanaz, mint a dátum típusú függvények esetében. Név Leírás visszaadott bemenő adatok (be:) érték (ki:) példa (pl.:) magyarázat (*) Asc() ki: szám
InStr() ki: szám
LCase() ki: szöveg
LTrim() ki: szöveg
Right() ki: szöveg
Space() ki: szöveg
Trim() ki: szöveg
Egy szöveg (első betűjének) ASCII kódja be: szöveg pl.: Asc("PC-Suli") * 112 A keresett szöveg kezdő pozíciója be: [start;] szöveg1; szöveg2 [;módszer1] pl.: InStr(2;"d";"dASDFasdf",0) * 8, mert a „d” a 2. betűtől 8. Kisbetűsre konvertálás be: szöveg pl.: LCase("PC-Suli") * "pc-suli" Vezető szóközök levágása (bal oldali) be: szöveg pl.: LTrim(" PC-Suli ") * "PC-Suli " Adott számú karakter jobbról be: szöveg; hossz pl.: Right("PC-Suli";4) * "Suli" Adott számú szóköz be: szám pl.: Space(5) * " " Kezdő és befejező szóközök levágása be: szöveg pl.: Trim(" PC-Suli ") * "PC-Suli"
Chr() Egy ASCII kódnak megfelelő betű ki: szöveg be: szám pl.: "Pap"&Chr(112) * "Papp" Left() Adott számú karakter balról ki: szöveg be: szöveg; hossz pl.: Left("PC-Suli";4) * "PC-S" Len() ki: szám
Egy szöveg, vagy egy változó hossza be: szöveg, vagy egy változó neve pl.: Len("PC-Suli") * 7 Mid() Egy szöveg adott paraméterű részlete ki: szöveg be: szöveg; start pozíció [;hossz] pl.: Mid("PC-Suli";2;3) * "C-S" RTrim() Befejező szóközök levágása (jobb oldali) ki: szöveg be: szöveg pl.: RTrim(" PC-Suli ") * " PC-Suli" String() Egy szöveg első betűjének ismétlése ki: szöveg be: szám; szöveg pl.: String(3;"*")+"PC-Suli"+String(3;"*") * "***PC-Suli***" UCase() Nagybetűsre konvertálás be: szöveg pl.: UCase("PC-Suli") * "PC-SULI"
25. Táblázat: A fontosabb szöveg függvények
1
Módszer: ha a kód 0, akkor megkülönbözteti a kis- és a nagybetűt, ha 1, akkor nem. Az alapértelmezés a 0.
38
Access XP alapokon 5.2.2.2.5.3.4 Általános függvények
Ebbe a csoportba viszonylag kevés függvény tartozik, ráadásul azok döntő többségét használni sem fogjuk. Ezért most csak azt az egy kivételt, az In() függvényt kellene ismertetnem, melyre mégis szükségünk lehet. Ezt viszont korábban, a logikai operátorok között már bemutattam (5.2.2.2.5.2.3.). 5.2.2.2.5.3.5 Átalakító (típus konverziós) függvények
Most egy olyan csoporthoz értünk, melynek szereplői közül jó néhánnyal találkozhattunk már korábban. Közös jellemzőjük, hogy a bemenő és a kimenő adat típusa eltérő. Például bemenő adatként egy dátumot adunk meg, vissza pedig egy számot kapunk, amely mondjuk, megegyezik az évszámmal (ugye ismerős, mert ez a már tanult „Year()” függvény). A sok ismétlés elkerülése végett a már korábban is tárgyalt függvények esetében a magyarázatban (*) csak azt szerepeltetem, hogy melyik csoportban esett róla korábban szó. Ugyanakkor jó néhány függvényt nem ismertetek, mivel azokra véleményem szerint nem lesz szükségünk. Név visszaadott érték (ki:)
Leírás bemenő adatok (be:) példa (pl.:) magyarázat, vagy hivatkozás (*)
Asc() ki: szám
szöveg első betűjének ASCII kódja be: szöveg * lásd a szöveg függvények között Chr() egy ASCII kódnak megfelelő betű ki: szöveg be: szám * lásd a szöveg függvények között CStr() egy szám szöveggé konvertálása ki: szöveg be: szám pl.: CStr(10) * "10" (mint szöveg) DateValue() szöveg átalakítása dátummá ki: dátum be: dátum szöveg * lásd a dátum függvények között Hour() egy időből az óra értéke ki: szám be: dátum (idő) * lásd a dátum függvények között Month() egy dátumból a hónap értéke ki: szám be: dátum * lásd a dátum függvények között Str() egy szám szöveggé konvertálása ki: szöveg be: szám pl.: Str(10) * "10" (mint szöveg) TimeValue() szöveg átalakítása idővé ki: dátum/idő be: idő szöveg * lásd a dátum függvények között
Weekday() ki: szám
a hét hányadik napja be: dátum[;nap] * lásd a dátum függvények között
CDate() ki: dátum CVDate() ki: dátum DateSerial() ki: dátum
szöveg átalakítása dátummá be: dátum, vagy idő szöveg * lásd a dátum függvények között szöveg átalakítása dátummá be: dátum vagy idő szöveg * lásd a dátum függvények között dátum egy számsorozatból be: szám1; szám2; szám3 * lásd a dátum függvények között
Day() ki: szám
egy dátumból a nap értéke be: dátum * lásd a dátum függvények között Minute() egy időből a perc értéke ki: szám be: dátum (idő) * lásd a dátum függvények között Second() egy időből a másodperc értéke ki: szám be: dátum (idő) * lásd a dátum függvények között TimeSerial() idő egy számsorozatból ki: dátum/idő be: szám1; szám2; szám3 * lásd a dátum függvények között Val() ki: szám
Year() ki: szám
szöveg elején lévő érték számmá alakítása be: szöveg pl.: Val("1999 év 10 hónap”) * 1999 egy dátumból az év értéke be: dátum * lásd a dátum függvények között
26. Táblázat: A fontosabb típus átalakító függvények
39
ECDL Adatbázis-kezelés modul 5.2.2.2.6 Érvényesítési szöveg (érvényességi szabály hibaüzenete) Ha egy mezőre érvényességi szabályt is meghatározunk, akkor gyakran előfordulhat olyan eset, hogy „hamis” eredményt adó értéket visznek be a mezőbe. Ilyenkor a mező elhagyásakor hibaüzenetet 14. Ábra: Egy általános hibaüzenet ad a program (hiszen a következő mezőre lépéskor kiértékelésre kerül az érvényességi szabály). Amennyiben nem adunk meg „érvényesítési szöveget”, akkor teljesen általános jellegű lesz a hibaüzenet, és ezért gyakran nem is jön rá az adatot rögzítő felhasználó a hiba okára. Ennek elkerülése végett célszerű megadni olyan „érvényesítési szöveget”, amelyből még a laikusok számára is egyértelműen kiderül a hiba pontos oka, illetve a korrigálás módja is. Egyetlen megkötésünk van csupán: maximum 255 karakter lehet a hossza. Az elmondottakból remélhetően egyértelműen kiderül, hogy az érvényességi szabálynak és az érvényesítési szövegnek egymással szinkronban kell lennie. Nézzünk erre is néhány egyszerű példát. Érvényességi szabály érvényesítési szöveg ¾ >DateAdd("q";1;Date()) „A mai napnál legalább negyedévvel későbbi dátumot kell megadni!” ¾ In(1;2;3;4;5) „A tanulók csak 1-5 érdemjegyet kaphatnak!” ¾ Like "[(]##[)]###-###" Or Like "[(]#[)]###-####" Vidéki számot 3-3, pesti számot 3-4 formában kell megadni. Mindkét esetben adjuk meg a körzetszámot is, amit zárójelbe kell rakni Pl.: (96)123-456 vagy (1)123-4567. 5.2.2.2.7 Kötelező Amennyiben azt szeretnénk elérni, hogy egy adatmezőt még véletlenül se lehessen üresen hagyni, akkor a kitöltését kötelezővé kell tenni. Arra azonban vigyázzunk, hogy ez esetben tényleg soha nem maradhat üres a mező. Ezt legegyszerűbben úgy érhetjük el, hogy „Alapértelmezett értéket” adunk meg (már amennyiben ennek van értelme). Nem célszerű például kötelezően megadandóra állítani egy „Fax szám” mezőt. Ennek az oka az, hogy nem biztos, hogy minden rekordba kell, hogy kerüljön ilyen adat, hiszen nem mindenkinek van fax készüléke. Ellenben állítsuk kötelezőre, például a „Vezetéknév”, illetve a „Keresztnév” mezőket. Erről a kérdésről még lesz szó a továbbiakban is. 5.2.2.2.8 Nulla hosszúság engedélyezése ("" karakterlánc engedélyezése) Valószínűleg első olvasásra nehezen lesz érthető ez a funkció. Arról van szó, hogy az Access „Szöveg”, „Feljegyzés” és „Hiperhivatkozás” típusú mezők esetében kétféle üres mezőt tud kezelni: Típus bevitele alkalmazása ¾ Null Enter, vagy Tabulátor, tehát ha nem adunk meg semmit akkor alkalmazzuk majd, ha nem tudjuk az értéket; ¾ "" "" (két idézőjel egymás után) begépelése és Enter akkor fogjuk begépelni, ha tudjuk, hogy nincs értéke. Mindez azonban csak akkor igaz, ha a „Nulla hosszúság engedélyezése” mezőt igenre állítjuk. Mikor lehet erre szükségünk? Például pontosan az előbb is említett „Fax szám” mező esetében. Ha így járunk el, akkor a mező tartalmából egyértelműen kiderülhet, hogy csak azért nem adtunk meg telefaxszámot, mert nem tudjuk, vagy azért, mert nincs is. Ehhez azonban az is szükséges, hogy a kérdéses mező „Formátumát” is úgy állítsuk be, hogy másként jelenítse meg a „Null”, és megint másként a "" tartalmú mezőket. Ha ez utóbbit elmulasztjuk, akkor mindkét esetben üresnek látjuk a mezőt. Ennek módszeréről korábban ugyan esett szó, de most újra szerepeltetem, mert most már végre minden elhangzott, ami a megértéséhez szükséges. Ha mondjuk egy „Telefaxszám” mező szerepel az adattáblában, és azt szeretnénk, hogy: ¾ a számot körzetszámmal együtt kelljen megadni, mégpedig a 6 jegyű számokat 3-3, a 7 jegyűeket 3-4 tagolással;
40
Access XP alapokon ¾
ha nincs telefax, akkor azt lássuk a táblában, hogy „Nincs”, ha nem adjuk meg, mert nem tudjuk a számot, akkor pedig azt, hogy „Nem ismert”.
Formátum Érvényességi szabály1 Érvényesítési szöveg Kötelező Nulla hosszúság engedélyezése
@;"Nincs";"Nem ismert" Like "[(]##[)]###-###" Or Like "[(]#[)]###-####" Or "" Or Is Null Vidéki számot 3-3, pesti számot 3-4 formában kell megadni. Mindkét esetben adjuk meg a körzetszámot is, amit zárójelbe kell rakni! Pl.: (96)123-456 vagy (1)123-4567. Nem Igen
27. Táblázat: Összefüggés a mezőtulajdonságok között 5.2.2.2.8.1 A „Kötelező” és a „Nulla hosszúság engedélyezése” különféle variációinak alkalmazása Természetesen felvetődik a kérdés, mikor mire állítsuk a két fenti címben szereplő kapcsolót? A következő táblázatban erre próbálok választ adni. Példát csak ott szerepeltetek, ahová igazán jót tudtam kitalálni. Kötelező
Nulla hosszúság engedélyezése
Nem
Nem
Nem
Igen
Igen
Nem
Igen
Igen
Mikor célszerű alkalmazni?
Példa
Ez az alapeset. Nem kell minden rekordnál megadni a kérdéses mezőt, viszont nincs lehetőség annak megkülönböztetésére, hogy miért maradt a mező üresen. Ekkor sem kell minden rekordnál megadni a kérdéses mezőt, Fax szám de ez esetben lehetséges annak a megkülönböztetésére, hogy Rendszám miért maradt a mező üresen. Ebben az esetben mindenképpen ki kell tölteni a mezőt. Irányítószám Csak akkor hagyhatjuk üresen a mezőt, ha tudjuk, hogy olyan adat nincs. Csak "" és Enter begépelésével tudunk továbblépni.
28. Táblázat: Összefüggés a Kötelező és a Nulla hosszúság engedélyezése mezőtulajdonságok között 5.2.2.2.9 Indexelt Korábban már esett szó az indexek szerepéről. Mint akkor leszögeztük, minden olyan mezőt célszerű index kulcsnak megadni, ami alapján gyakran kell rendezett listákat készíteni, illetve amelyre nézve adatokat kell kikeresni. Azért persze túlzásokba sem szabad esni, és minden mezőt index kulcsnak kijelölni, ugyanis ezzel jelentősen lelassíthatjuk a program működését. Az indexek megadása két módszerrel lehetséges: ¾ a mezőparaméterek listában; ¾ és az indexek táblában. Hogy működik az indexelés? Ha egy mezőt indexeltre állítunk, akkor valójában az eredeti adattábla mellett egy újabb tábla készítésére is utasítjuk az Access programot. Ez semmi mást nem tartalmaz, mint a kérdéses mező tartalmát, és egy sorszám adatot, amely azt mutatja, hogy a kérdéses rekord az adott mezőre nézve hányadik. Valahányszor az eredeti adattáblát módosítjuk, ez az indextábla is módosul. Ezek után valószínűleg rögtön világos, miért jelent időveszteséget, ha egy adattáblában egy indexmező tartalmát bármely rekordban megváltoztatjuk, rekordot törlünk, vagy új rekordot fűzünk a táblához: az indextáblában a sorszám adatokat karban kell tartani.
5.2.2.2.9.1 Az index megadása a mezőparaméterek listában Ez talán az egyszerűbb módszer. Ekkor a Tervező nézet alján lévő „Indexelt” értékét kell „Igenre” állítani. Egyetlen gond van: kétféle igen közül is választhatunk: ¾ igen (lehet azonos) lehet több olyan rekord, melynek tartalma az adott mezőben egyezik;
1
Használhatjuk helyette a korábban megbeszélt „Beviteli maszkot” is (5.2.2.2.2.).
41
ECDL Adatbázis-kezelés modul igen (nem lehet azonos) nem megengedett, hogy az adott mezőben több rekordban is ugyanaz az adat szerepeljen. Az index mezőparaméter listából történő megadásának hátrányai, hogy összetett, azaz több mezőből összeállított indexet így nem lehet megadni, illetve, hogy a rendezés sorrendje mindenképpen növekvő lesz, és ez nem mindig felel meg elvárásainknak. ¾
5.2.2.2.9.2 Index megadása (és törlése) az indexek táblában Az eljárás előnye az, hogy így összetett, azaz több mezőből álló index is megadható. Persze adódik a kérdés: mikor van szükségünk összetett indexre? Olyan esetben, ha az indexkulcs mezőjének értéke több rekordban is megegyezne, akkor a rekordokat egy második mező szerint tovább kell rendezni. De lássunk egy példát: ha index kulcsnak a „Név” + „Anyja neve” értéket adjuk meg, akkor amennyiben több „Szabó József” is szerepel a táblában, őket az édesanyjuk neve szerinti sorrendbe csoportosítja a program. Ha „nem lehet azonos” típusra állítjuk ezt az összetett indexkulcsot, akkor több „Szabó József” csak akkor lehet az adattáblában, ha mindegyikük mamájának más a neve. Ha nincs egyedi adat a rekordban, kell mesterséges elsődleges kulcs? Nem, ugyanis ilyen több kulcsból álló egyedi indexet akár elsődleges kulcsként is alkalmazhatunk majd. Egy személyi adatbázisban a „Név” mező önmagában nem felel meg erre a célra, de a „Név” + „Anyja neve”+ „Született” már szinte biztosan. Az ugyanis csak elég ritkán fordul elő, hogy két különböző személy esetében mindhárom adat megegyezzen.
Az indexek tábla megnyitásához Tervező nézetben csak kattintsunk a ikonra, vagy indítsuk el a „Nézet” menü „Indexek” opcióját. A megjelenő új ablak akkor fog már megnyitásakor is értékeket tartalmazni, ha a mező paraméterek listában már adtunk meg indexet. Az indexek tábla ugyanis az összes bármilyen módon megadott indexet nyilvántartja. Indexet törölni a legegyszerűbben itt lehet. Az indexek táblában úgy adhatunk meg egy új indexet, hogy elsőként az első üres sor „Indexnév” oszlopába begépeljük az index nevét. Ez bármi lehet, de persze célszerű most is beszélő nevet alkalmazni. Ha nem összetett kulcsot alkalmazunk, a legkézenfekvőbb választás a kulcsnak kiszemelt mező neve. Azután lépjünk át a „Mezőnév” oszlopba, majd nyissuk le a legördülő listát, és válasz15. Ábra: Az indexek ablak szuk ki a kulcsnak szánt mezőt. A következő oszlopban állítható be a rendezési sorrend, melynek értelmezése azt hiszem világos. Ha többkulcsos indexet akarunk létrehozni, akkor egész egyszerűen a következő sor „Mezőnév” oszlopában ki kell választani a következő kulcsot. Maximum 10 mezőből állhat egy kulcs. Ha további indexet is meg akarunk adni, akkor álljunk a következő üres sor „Indexnév” mezőjébe, és adjuk meg a nevét, majd járjunk el a már megtárgyaltak szerint. Mi a helyzet a típusok ütközésével és a függvényekkel Amennyiben különböző típusú mezőket adunk meg egy összetett indexkulcsnak, a típusütközéseket automatikusan elhárítja az Access. Függvényeket viszont nem alkalmazhatunk az indexekben. Nem tárgyalt további mezőtulajdonságok ¾ Unicode tömörítés Alapértelmezésben engedélyezett, ami azt jelenti, hogy a 2 bájtos Unicode karakterek első bájtját – amennyiben az 0 (vagyis szöveg, feljegyzés, és hiperhivatkozás adattípusoknál) – egyszerűen elhagyja a program. Ez a szokásos latin betűs adatoknál nem gond, viszont az adat fele akkora helyet foglal el. ¾ IME módok Csak japán, kínai és koreai szövegkörnyezetben van jelentősége.
5.2.3 Elsődleges kulcs Az elsődleges kulcsok szerepéről érintőlegesen már esett szó az adatbázisok tervezésekor: az egyedi azonosító funkciót betöltő elsődleges kulcsok teszik lehetővé a különböző adattáblák közötti kapcsolatok felépítését. Ehhez azonban két feladatot is el kell majd végeznünk: ¾ legalább a két kapcsolódó tábla egyikének meg kell adni az elsődleges kulcsát;
42
Access XP alapokon majd vagy „Keresésvarázslóval…”, vagy a „Kapcsolatok ablak” segítségével fel kell építeni a kapcsolatot (erről kicsit később esik majd szó). A következőkben két általános érvényű szabályt szeretnék lefektetni az elsődleges kulcsokkal kapcsolatban: 1. Elsődleges kulcs megadása nem kötelező, ha a tábla nem része egyetlen kapcsolatnak sem. 2. Amennyiben két tábla kapcsolatban van egymással, akkor viszont szükséges elsődleges kulcs. Az, hogy mindkettő táblában, vagy csak az egyikben, és ha csak az egyikben, akkor melyikben, az a kapcsolat típusától, illetve a tábláknak a kapcsolatban betöltött szerepétől függ. A kapcsolatok típusait, illetve a tábláknak a kapcsolatokban betöltött lehetséges szerepeit a későbbiekben nagyon részletesen tisztázzuk. ¾
Biztos szükséges legalább az egyik kapcsolatban részvevő táblának elsődleges kulcs? Nem. Az Access megengedi az olyan kapcsolatokat is, amelyben bár két tábla kapcsolatban áll egymással, egyiknek sincs elsődleges kulcsa. Ezt a lehetőséget ne használjuk ki!
5.2.3.1 Elsődleges kulcs automatikus létrehozása Ez esetben nekünk semmi dolgunk. Egyszerűen létrehozzuk az adattáblát, majd elmentjük munkánkat. Az Access felismeri, hogy nem adtunk meg elsődleges kulcsot, és magától felkínálja annak automatikus létrehozását. Ha 16. Ábra: Elsődleges kulcs automatikus generálása a megjelenő párbeszédablakban az „Igen” gombra kattintunk, akkor a már meglévő mezők elé beszúr egy „Azonosító” nevű, „Számláló” típusú mezőt elsődleges kulcsnak.
5.2.3.2 Elsődleges kulcs megadása Ha mi magunk szeretnénk elsődleges kulcsot létrehozni, azt „Tervező” nézetben kell megtennünk. Először is azt kell eldöntenünk, hogy van-e olyan mező, mely elsődleges kulcsként szóba jöhet. Nézzünk talán most is példákat. Az adattáblában mondjuk egy országos hatóság gyűjti össze több ezer vállalkozó adatait. Biztosan jó biztosan rossz jó is lehet ¾ személyi szám irányítószám város + utca-házszám ¾ TAJ szám keresztnév vezetéknév + keresztnév + anyja neve ¾ bankszámlaszám vezetéknév + keresztnév vezetéknév + keresztnév + anyja neve + született ¾ rendszám város ¾ telefonszám1 Mit olvashatunk ki a fenti táblázatból? Ha van olyan mezőnk, amelyben olyan adatot tárolunk, amely egyedi, az egész biztosan megfelel elsődleges kulcsnak. Az olyan adatok önmagukban, mely nagyon sok rekordban megegyezhetnek, biztosan nem jók elsődleges kulcsnak, de összetett elsődleges kulcs komponenseként szóba jöhetnek. Pontosan ezért, amennyiben nincs olyan adat, melyet egyedi elsődleges kulcsnak tudnánk alkalmazni, akkor elsőként azt vizsgáljuk meg, hogy több mezőt összekapcsolva megoldódik-e a probléma. Ha ez az út sem járható, akkor alkalmazzunk mesterséges elsődleges kulcsot egy olyan mező Itt kell a helyi felvételével, amit kifejezetten erre a célra szánunk, és a menüt indítani típusát „Számlálóra” állítjuk. 5.2.3.2.1 Egyszerű elsődleges kulcs megadása ¾
1
Az elsődleges kulcsot úgy tudjuk kijelölni, hogy: vagy az adattábla elsődleges kulcsnak kiszemelt mezője előtti kis téglalapon elindítjuk a helyi
Körzetszámmal.
17. Ábra: Egyszerű elsődleges kulcs megadása
43
ECDL Adatbázis-kezelés modul
¾
menüt, és onnét az „Elsődleges kulcs” opciót választjuk; vagy kiválasztjuk a kérdéses mezőt tartalmazó sort, azután rákattintunk az eszközsor ikonjára. Akármelyik módszert választjuk, a hatás ugyanaz: megjelenik egy kis kulcs a kérdéses mező előtt. Hogy tudjuk megszüntetni az elsődleges kulcsot?
Mivel ez egy kapcsolónak fogható fel, ugyanúgy, mint ahogy létrehoztuk. Ha azonban már kapcsolatot is létesítettünk más adattáblával (5.3.), akkor előbb azt kell megszüntetni.
5.2.3.2.2 Összetett elsődleges kulcs megadása Pontosan ugyanúgy kell eljárnunk, mint az egyszerű elsődleges kulcs esetében, csak előbb ki kell jelölni az összes kulcsnak szánt mezőt. Mivel „Tervező” nézetben minden mezőnek egy-egy sor felel meg, jusson eszünkbe miként kellett Excelben kijelölni több sort: ¾ kattintsunk a mezőválasztóra az egyik kijelölendő sor elé (oda, ahová az ábrán lévő nyíl is mutat), majd a Ctrl nyomása közben sorban a többire. A kulcsban a mezők az adattáblában elfoglalt sorrendjük szerint fognak szerepelni. Ha ez nem felel meg, akkor nyissuk meg az Indexek táblát a ikonnal, és a „PrimaryKey” sor alatt lévő indexkulcsokat helyezzük helyes sorrendbe. A „PrimaryKey” sorban lévő mezőnél az „Elsődleges” legördülő lista értéke „igen” legyen!
5.2.4 Tábla tulajdonságai A „Mezőtulajdonságokhoz” hasonló célt szolgálnak a „Tábla tulajdonságai” is. Jelentős különbség azonban, hogy míg az előbbi egy-egy adat bevitelekor csak az egyes a mezők viselkedését szabályozza (azaz hatásukat a mező adatbevitelének lezárásakor fejtik ki), addig a táblatulajdonságok hatása egy-egy rekordra, vagy az egész adattáblára vonatkozik (hatásukat a rekord elhagyásakor fejtik ki). Hogy tudjuk megadni e paramétereket? Két lehetőségünk is van rá, de mindkettő csak tervező nézetben érhető el: ¾ vagy egyszerűen a ikonra kattintunk; ¾ vagy a „Nézet” menü „Tulajdonságok” opcióját választjuk. A megjelenő párbeszédablak paraméterei közül később tárgyaljuk a „Segédadatlap neve” (5.4.), az „Almező csatolása”, a „Főmező csatolása”, a „Segédadatlap magassága” a „Segédadatlap kibontva” és az „Irány” tulajdonságokat, melyeket a korábbi verziókban hiába is keresnénk. A többi tulajdonságokból négyet egy-egy mondatban letudhatunk. Leírás Az itt megadott információ az „Adatbázis-ablakban” lesz látható, amennyiben a „Részletek” elrendezést választjuk (2.). 18. Ábra: Tábla tulajdonságok Alapértelmezett nézet Azt adhatjuk meg, hogy a tábla milyen nézetben nyíljon meg. A lehetőségek: ¾ adatlap Ez az alapértelmezett nézet, melyben az adatokat táblázatos formában jeleníti meg az Access. Szinte kivétel nélkül csak ezt fogjuk használni. ¾ kimutatás Az Excelhez hasonló módon három különféle szempont szerint lehet összesíteni az adatokat. ¾ kimutatás diagram Szintén az Excelhez hasonlóan diagramban lehet ábrázolni az adatokat. A „kimutatás” és „kimutatás diagram” témakörökkel az űrlapoknál fogunk foglalkozni. Ennek az oka az, hogy amikor majd egy-egy kimutatás, illetve kimutatás diagram űrlapot létrehozunk, akkor annak hatása ugyanaz, mintha itt állítanánk át az alapértelmezett nézetet. Szűrő A szűrésről a későbbiekben egész részletesen fogunk tárgyalni (5.5.3.).
44
Access XP alapokon Rendezés Később a rendezéssel is részletesen fogunk foglalkozni (5.5.1.).
5.2.4.1 Tábla érvényességi szabály Korábban már esett szó a „Mező érvényességi szabályról” (5.2.2.2.5.). A „Tábla érvényességi szabályok” felépítése az ott megbeszéltektől csak annyiban különbözik, hogy több lehetőségünk van. Azaz változatlanul rendelkezésre állnak: ¾ az értékek és állandók; ¾ az operátorok; ¾ és a függvények. De lássuk a különbséget! A többlet lehetőséget az jelenti, hogy míg a „Mező érvényességi szabályban” csak egy mező tartalmára adhattunk meg feltételt, addig itt mezők közötti összefüggéseket is előírhatunk. A kérdés már csak az, hogy miként hivatkozhatunk a mezők tartalmára. Egy mező tartalmára a mező nevével hivatkozhatunk, amit szögletes zárójelek között kell megadni. Az érvényességi szabályt most is két módszerrel adhatjuk meg: ¾ vagy begépeljük, ¾ vagy előbb az érvényességi szabály mezőjébe, azután pedig a mező végén lévő ikonra kattintunk. Ez utóbbi esetben elindul a „Kifejezésszerkesztő” (5.2.2.2.5.). Most azonban a függvényeken, állandókon és operátorokon kívül az adattábla mezői is elérhetőek a „Kifejezésszerkesztőben”. Mint már említésre került, a mezőkre szögletes zárójelbe írt nevükkel kell hivatkozni. Ha a mezőket a „Kifejezésszerkesztővel” visszük be, akkor ez automatikusan így történik. Példa: Ha azt akarjuk, hogy egy számlák adatait tároló adattáblában a számla fizetési határideje (a mező neve „Fizetési határidő) legfeljebb 30, és legalább 8 nappal legyen nagyobb, mint a számla kelte (melynek mező neve „Számla kelte”), a feltételt a következőre állítsuk be: [fizetési határidő]<=DateAdd("d";30;[számla kelte]) And [fizetési határidő]>=DateAdd("d";15;[számla kelte])
5.2.4.2 Tábla érvényesítési szöveg A „Tábla érvényesítési szöveg” akkor fog megjelenni, ha olyan adatokat viszünk be az egyes mezőkbe, melyek nem felelnek meg a tábla érvényességi szabályának, és el akarjuk hagyni az adott rekordot. Pontosan olyan szerepe lesz, mint a „Mező érvényesítési szövegnek”: lehetővé teszi a pontatlan adatbevitel kiszűrését, de csak az a rekord elhagyásakor jelzi az adatbeviteli hibát. Példa: Az előző „Érvényességi szabályhoz” javasolt „Érvényesítési szöveg”: „Rossz a fizetési határidő, vagy a számla kelte. A fizetési határidő legalább 15, de legfeljebb 30 nappal későbbi dátum kell, hogy legyen, mint a számla kelte!” 3. Feladat: Hozzuk létre a 2. feladatban megtervezett adattáblákat. Ahol tudunk, adjunk meg mezőtulajdonságokat is („Érvényességi szabály”, „Formátum”, „Maszk”, „Érvényesítési szöveg”, stb.). Megoldás: Azt korábban, a „Keresés varázsló…” kapcsán megbeszéltük, hogy amennyiben egy adattáblába csak bizonyos értékek bevitelét akarjuk megengedni, és ezek a megengedhető értékek az idők folyamán változnak, vagy nagy a számuk, akkor a megengedett értékeket egy külön táblában fogjuk tárolni. Ilyenkor azonban majd fel kell építeni a kapcsolatot a két tábla között. Erre a feladatra célszerű lesz majd a keresés varázslót használni, de akkor előbb mindenféleképpen a megengedhető értékeket tároló táblát kell elkészíteni. Ezért aztán adattáblák létrehozási sorrendje: „Mértékegység törzs”, „Szállító törzs”, „Termék törzs”, „Tranzakciók” és „Tranzakciók tételei” Mértékegység törzs Amennyiben szükséges, kattintsunk az „Adatbázis ablak” bal oldalán az „Objektumok” között „Táblák” gombra (mindezt természetesen a korábban létrehozott „Raktári rendszer” adatbázisban). Kattintsunk
45
ECDL Adatbázis-kezelés modul az „Új” gombra, majd indítsuk el a „Tervező nézetet”. A megjelenő, egyelőre „Tábla1” nevű ablakban adjuk meg az adattábla mezőinek adatait: Első mező Név: Típus: Formátum:
Mértékegység kód Számláló 00
Név: Típus: Mezőméret: Kötelező: Indexelt:
Mértékegység név Szöveg 10 Igen Igen (nem lehet azonos)
mivel csak néhány rekordja lesz, legyen 2 karakteres vezető nullával Második mező
hogy ne lehessen név nélküli rekordot bevinni hiszen csak egy azonos nevű mértékegység lehet
29. Táblázat: A „Mértékegység törzsben” megadandó mezők Adjuk meg az elsődleges kulcsot, amihez jelöljük ki a „Mértékegység kód” sorát a név elé kattintva, ikon segítségével. majd adjuk meg indexnek az eszközsoron található Mentsük el a munkát a mentő ikonra kattintással, majd a név begépelésével: „Mértékegység törzs”. Ezzel az első adattábla elkészült. Zárjuk be az ablakát. Szállító törzs Kattintsunk megint az „Új” gombra, majd indítsuk el most is a „Tervező nézetet”. A megjelenő „Tábla1” nevű ablakban adjuk meg az adattábla mezőinek adatait: Első mező Név: Típus:
Szállító kód Számláló
Formátum:
000
Név: Típus: Mezőméret: Kötelező: Indexelt:
Szállító név Szöveg 30 Igen Igen (nem lehet azonos)
Név: Típus: Mezőméret: Beviteli maszk: Kötelező: Indexelt:
Irányító szám Szöveg 4 0000;;" " Igen Nem
feltételezve, hogy legfeljebb 999 rekordja lesz a táblának (3 karakteres kijelzés vezető nullával) Második mező
hogy ne lehessen név nélküli rekordot bevinni hiszen csak egy azonos nevű szállító lehet Harmadik mező
kötelezően megadandó 4 számjegy így nem lehet irányítószám nélküli rekordot bevinni Negyedik mező
Név: Típus: Mezőméret: Kötelező: Indexelt:
46
Város Szöveg 30 Igen Igen (lehet azonos)
hogy ne lehessen lakhely (város) nélküli rekordot bevinni hiszen több szállító is lehet ugyanabból a városból
Access XP alapokon Ötödik mező Név: Típus: Mezőméret:
Utca és házszám Szöveg 30
Kötelező:
Igen
Indexelt:
Nem
Név: Típus: Mezőméret:
Telefonszám Szöveg 11
Formátum:
@;"Nincs";"Nem ismert"
hogy ne lehessen lakhely (utca és házszám) nélküli rekordot bevinni Hatodik mező
Like "[(]##[)]###-###" Or Érvényességi Like "[(]#[)]###-####" Or szabály: "" Or Is Null Vidéki számot 3-3, pesti számot 3-4 formában kell Érvényesítési megadni. Pl.: szöveg: (96)123-456 vagy (1)123-4567. Kötelező: Nem Nulla hosszúIgen1 ság eng. Indexelt: Nem
ha nem adjuk meg, „Nem ismert”, ha két idézőjelet ütünk, „Nincs” felirat jelenik meg a mintához hasonló formák valamelyikét kell megadni
hibás adatbevitel esetén a megadott szöveg jelenik meg hiszen nincs mindenkinek meg lehessen különböztetni, hogy nincs, vagy csak nem adtuk meg Hetedik mező
Név: Típus: Mezőméret:
Fax szám Szöveg 11
Formátum:
@;"Nincs";"Nem ismert"
Like "[(]##[)]###-###" Or Érvényességi Like "[(]#[)]###-####" Or szabály: "" Or Is Null Vidéki számot 3-3, pesti számot 3-4 formában kell Érvényesítési megadni. Pl.: szöveg: (96)123-456 vagy (1)123-4567. Kötelező: Nem Nulla hosszúIgen ság eng. Indexelt: Nem
ha nem adjuk meg, „Nem ismert”, ha két idézőjelet ütünk, „Nincs” felirat jelenik meg a mintához hasonló formák valamelyikét kell megadni
hibás adatbevitel esetén a megadott szöveg jelenik meg hiszen nincs mindenkinek meg lehessen különböztetni, hogy nincs, vagy csak nem adtuk meg
30. Táblázat: A „Szállító törzsben” megadandó mezők Adjuk meg az elsődleges kulcsot, amihez Jelöljük ki a „Szállító kód” sorát úgy, hogy kattintsunk a név ikon segítségével. elé, majd adjuk meg indexnek az eszközsoron található Mentsük el ezt az adattáblát is a név begépelésével: „Szállító törzs”, majd zárjuk be az ablakát. Termék törzs Adjuk meg az eddigieknek megfelelően ennek az adattáblának is a mezőit: 1
Mivel az Access XP-ben az alapértelmezés „Igen”, nincs feladatunk, de a régebbi verziókban „Nem” az alapértelmezés.
47
ECDL Adatbázis-kezelés modul Első mező Név: Típus:
Termék kód Számláló
Formátum:
0000
Név: Típus: Mezőméret: Kötelező: Indexelt:
Termék név Szöveg 30 Igen Igen (lehet azonos)
feltételezve, hogy legfeljebb 9999 rekordja lesz (4 számjegy vezető nullával) Második mező
hogy ne lehessen név nélküli rekordot bevinni Harmadik mező
Név:
ÁFA kulcs
Típus:
lépései a következők: „Begépelem a szükséges értékeket” és „Tovább” ¾ Oszlopok száma: 1 ¾ az alatta lévő üres cellába „0%” begépelése (idézőjel nem kell) és „Tabulátor” Keresés varázsló… (5.3.2.1.) ¾ „5 %” begépelése és „Tabulátor” ¾ „15 %” begépelése és „Tabulátor” ¾ „25 %” begépelése és „Tovább” ¾ „Befejezés” ¾
Típus (újra kell állítani): Mezőméret (altípus):
Szám
hiszen a százalékokat törtszámként szokás megadni
Egyszeres
mert különben nem lehet törtet tárolni benne
Formátum:
0%
Alapértelmezett érték:
0,25
Indexelt:
Nem
Név:
Mértékegység kód
mivel legalább egy jeggyel kell kiírni a 0 értéket is úgy, hogy százalékjel legyen mögötte hiszen szinte minden 25 %-os ÁFA kulcsú (ez persze egy szolgáltató cégnél lehet, hogy 0,15, egy gyógyászati cégnél pedig 0) Negyedik mező
Típus:
Cím
1
lépései a következők: ¾ „Szeretném, ha a(z) keresőoszlop vezérlőelem megkeresné az adott értékeket a táblában, vagy a lekérdezésben”, és „Tovább” ¾ „Mértékegység törzs” kiválasztása, és „Tovább” Keresés varázsló… (5.3.2.1.) ¾ „Mértékegység kód” és „Mértékegység név” felvétele a „Kijelölt mezők” közé, majd „Tovább” ¾ „Tovább” ¾ „Befejezés”, majd a mentés során a „Termék törzs” név megadása1 Mértékegység hogy ez legyen a fejléce
Ha megkérdezi a program, hogy adjon-e hozzá elsődleges kulcsot, válaszoljunk nemmel!
48
Access XP alapokon Ötödik mező Név: Típus: Mezőméret: Beviteli maszk:
VTSZ szám Szöveg 10 9999-999999;;" "
Cím:
VTSZ, vagy SZJ szám
Kötelező: Indexelt:
Igen Nem
Név:
Szállító kód
bármilyen szám és köz szerepelhet benne így egyértelmű kijelzése lesz az adatnak, de a mezőnév mégis rövid marad hogy ne lehessen ilyen adat nélküli rekordot bevinni Hatodik mező
Típus:
Cím
lépései a következők: ¾ „Szeretném, ha a(z) keresőoszlop vezérlőelem megkeresné az adott értékeket a táblában, vagy a lekérdezésben”, és „Tovább” Keresés varázsló… (5.3.2.1.) ¾ „Szállító törzs” kiválasztása, és „Tovább” ¾ „Szállító kód” és „Szállító név” felvétele a „Kijelölt mezők” közé, majd „Tovább” ¾ „Tovább” ¾ „Befejezés” Szállító hogy ez legyen a fejléce 31. Táblázat: A „Termék törzsben” megadandó mezők
Adjuk meg az elsődleges kulcsot, amihez jelöljük ki a „Termék kód” sorát, majd kattintsunk a ikonra. Mentsük el ezt az adattáblát (nevet már nem fog kérdezni, hiszen korábban már megadtuk) majd zárjuk be az ablakát. Tranzakciók Hozzuk létre az egyik mozgás (5.1.3.) adattáblát: Első mező Név: Típus:
Bizonylatszám Szöveg
Beviteli maszk: ?"/"999;0;" "
betűvel kezdődik, majd egy perjel után egy háromjegyű szám következik (a perjel is letárolásra kerül)
Kötelező:
Igen
Név: Típus: Formátum: Beviteli maszk: Alapértelmezett érték: Kötelező:
Dátum Dátum Rövid dátum 0000.00.00.;;" "
a szokásos dátum formátum
Date()
így aznapi dátum esetén nincs szükség adatbevitelre
Igen
Indexelt:
Igen (lehet azonos)
hogy ne lehessen név nélküli rekordot bevinni hogy egy bizonylaton kétszer is szerepelhessen egy fajta árú
Második mező
49
ECDL Adatbázis-kezelés modul Harmadik mező Név
Típus:
Mezőméret Alapértelmezett érték: Kötelező: Indexelt:
Jelleg lépései a következők: ¾ „Begépelem a szükséges értékeket” és „Tovább” ¾ Oszlopok száma: 2 ¾ az alatta lévő üres cellába „1” begépelése és „Tabulátor” ¾ „nyitó készlet” begépelése és „Tabulátor” ¾ „2” begépelése és „Tovább” ¾ „beszerzés szállítótól” begépelése és „Tabulátor” ¾ „3” begépelése és „Tovább” Keresés varázsló… (5.3.2.1.) ¾ „ügyféltől vissza” begépelése és „Tabulátor” ¾ „4” begépelése és „Tovább” ¾ „hibás áru selejtezése” begépelése és „Tabulátor” ¾ „5” begépelése és „Tovább” ¾ „szállítónak vissza” begépelése és „Tabulátor” ¾ „6” begépelése és „Tovább” ¾ „eladás vevőnek” begépelése ¾ „Tovább” ¾ „Tovább” ¾ „Befejezés” 1 több felesleges 6
feltéve, hogy leggyakrabban eladunk vevő felé
Igen Igen (lehet azonos)
de ez nem gond, hiszen van alapértelmezett értéke
32. Táblázat: A „Tranzakciók” táblában megadandó mezők Adjuk meg az elsődleges kulcsot, amihez jelöljük ki a „Bizonylatszám” sorát, majd adjuk meg indexnek az eszközsoron található ikon segítségével. Mentsük el ezt az adattáblát is a név begépelésével: „Tranzakciók”, majd zárjuk be az ablakát. Tranzakciók tételei Befejezésül hozzuk létre a másik mozgás adattáblát is: Első mező Név:
1
Bizonylatszám
Típus:
Keresés varázsló… (5.3.2.1.)
Kötelező: Indexelt: Csak listaelem
Igen Igen (lehet azonos) Igen
lépései a következők: ¾ „Szeretném, ha a(z) keresőoszlop vezérlőelem megkeresné az adott értékeket a táblában, vagy a lekérdezésben”, és „Tovább” ¾ „Tranzakciók” kiválasztása, és „Tovább” ¾ minden mező felvétele a „Kijelölt mezők” közé, majd „Tovább” ¾ ne rejtsük el a kulcsoszlopot és „Tovább”, majd újra „Tovább” 1 ¾ végül „Befejezés” , majd a mentés során a „Tranzakciók tételei” név megadása (indexet ne adjunk hozzá) hiszen egy bizonylatszámon több is lehetséges hogy csak már felvett bizonylat szerepelhessen (ez az elem a „megjelenítés” regiszteren szerepel
Ha megkérdezi a program, hogy adjon-e hozzá elsődleges kulcsot, válaszoljunk nemmel! Ha olyan hibaüzenetet kapunk, hogy a kapcsolatot nem sikerült felépíteni, a második mező megadása után válasszuk újra a Keresés varázslót, és adjuk meg még egyszer az adatokat!
50
Access XP alapokon Második mező Név:
Típus:
Cím Kötelező: Indexelt: Név: Típus: Mezőméret (altípus) Formátum: Érvényességi szabály: Érvényesítési szöveg: Kötelező: Indexelt:
Termék kód lépései a következők: ¾ „Szeretném, ha a(z) keresőoszlop vezérlőelem megkeresné az adott értékeket a táblában, vagy a lekérdezésben”, és „Tovább” Keresés varázsló… (5.3.2.1.) ¾ „Termék törzs” kiválasztása, és „Tovább” ¾ „Termék kód” és „Termék név” felvétele a „Kijelölt mezők” közé, majd „Tovább” ¾ „Tovább” ¾ „Befejezés” Termék hogy ez legyen a fejléce Igen hogy ne lehessen árucikk nélküli rekordot bevinni Igen (lehet azonos) hiszen egy termék több bizonylaton is szerepelni fog Harmadik mező Mennyiség Szám Egyszeres
hiszen tört értéket is meg kell tudni adni
# ##0,00
mert tört értéket is meg kell tudni adni
<>0
mivel feltétlenül meg kell adni a mennyiséget
A mennyiség nem lehet 0 Nem, vagy Igen, mindegy Nem
ha 0 értéket adnának meg, érthető hibaüzenetet adjon a program mert az „Érvényességi szabály” miatt úgyis meg kell adni Negyedik mező
Név: Típus: Tizedesek Érvényességi szabály: Érvényesítési szöveg:
Nettó egységár Pénznem 0
mert már nincs fillér
>0
hiszen ára mindennek van
Kötelező:
Nem, vagy Igen, mindegy
Indexelt:
Nem
Az ár nem lehet 0
ha 0 értéket adnának meg, érthető hibaüzenetet adjon a program miután az „Érvényességi szabály” miatt úgyis meg kell adni
33. Táblázat: A „Tranzakciók tételei” táblában megadandó mezők Adjuk meg az elsődleges kulcsot, amihez jelöljük ki a „Bizonylatszám” és a „Termék kód” sorát, majd adjuk meg indexnek az eszközsoron található ikon segítségével. Mentsük el ezt az adattáblát is a név begépelésével: „Tranzakciók tételei”, majd zárjuk be az ablakát. 4. Feladat: A „Tábla tulajdonságok” paramétereit állítsuk be úgy, hogy a „Tranzakciók” táblába csak olyan rekordokat lehessen felvenni, amelyekben a „Bizonylatszám” és a „Jelleg” mező tartalma között az alábbi összefüggés áll fent: Jelleg bizonylatszám első betűje ¾ 1 „N” (Nyitó készlet) ¾ 2 „B” (Beszerzés szállítótól) ¾ 3 „Ü” (Ügyféltől vissza) ¾ 4 „H” (Hibás áru selejtezése) ¾ 5 „S” (Szállítónak vissza) ¾ 6 „E” (Eladás vevőnek)
51
ECDL Adatbázis-kezelés modul Megoldás: ikonra, azután az „ÉrNyissuk meg a „Tranzakciók” táblát „Tervező” nézetben, majd kattintsunk a ikonra. Adjuk meg a következő kifejezést (begépeléssel, vagy vényességi szabály” mezőbe, végül a a „Kifejezésszerkesztő” használatával): [Bizonylatszám] Like "N*" And [Jelleg]="1" Or [Bizonylatszám] Like "B*" And [Jelleg]="2" Or [Bizonylatszám] Like "Ü*" And [Jelleg]="3" Or [Bizonylatszám] Like "H*" And [Jelleg]="4" Or [Bizonylatszám] Like "S*" And [Jelleg]="5" Or [Bizonylatszám] Like "E*" And [Jelleg]="6" Zárjuk be a „Kifejezésszerkesztő” ablakát az „OK” gombra kattintva, majd mentsük a változásokat. Végül zárjuk be a táblát is. 5. Feladat: Adjunk meg „Érvényesítési szöveget” is, hogy megkönnyítsük az adatbevitelt. Megoldás: ikonra, azután az Nyissuk meg a „Tranzakciók” táblát „Tervező” nézetben, majd kattintsunk a „Érvényesítési szöveg” mezőbe, és gépeljük be a következő szöveget: Bizonylat első betűje "N" -> "1", Bizonylat első betűje "B" -> "2", Bizonylat első betűje "Ü" -> "3", Bizonylat első betűje "H" -> "4", Bizonylat első betűje "S" -> "5", Bizonylat első betűje "E" -> "6". 6. Feladat: A „Tábla tulajdonságok” paramétereit állítsuk be úgy, hogy a „Tranzakciók tételei” táblába csak olyan rekordokat lehessen felvenni, amelyekben a „Bizonylatszám” és a „Mennyiség” mező tartalma között az alábbi összefüggés áll fent: Bizonylatszám első betűje mennyiség előjele ¾ „N” (Nyitó készlet) + ¾ „B” (Beszerzés szállítótól) + ¾ „Ü” (Ügyféltől vissza) + ¾ „H” (Hibás áru selejtezése) ¾ „S” (Szállítónak vissza) ¾ „E” (Eladás vevőnek) Megoldás: ikonra, azután Nyissuk meg a „Tranzakciók tételei” táblát „Tervező” nézetben, majd kattintsunk a az „Érvényesítési szöveg” mezőbe, és gépeljük be a következő szöveget: ([Bizonylatszám] Like "N*" Or [Bizonylatszám] Like "B*" Or [Bizonylatszám] Like "Ü*") And [Mennyiség]>0 Or ([Bizonylatszám] Like "H*" Or [Bizonylatszám] Like "S*" Or [Bizonylatszám] Like "E*") And [Mennyiség] < 0 Zárjuk be a „Kifejezésszerkesztő” ablakát az „OK” gombra kattintva, majd mentsük a változásokat. Végül zárjuk be a táblát is. 7. Feladat: Adjunk meg most is „Érvényesítési szöveget”. Megoldás: ikonra, azután az Nyissuk meg a „Tranzakciók” táblát „Tervező” nézetben, majd kattintsunk a „Érvényesítési szöveg” mezőbe, és gépeljük be a következő szöveget: Ha a bizonylatszám első betűje "N", "B", vagy "Ü", akkor a mennyiség pozitív, ha "H", "S", vagy "E", akkor a mennyiség negatív.
52
Access XP alapokon 5.2.5 Táblavarázsló A „Táblavarázsló” alkalmazása csak a kisebb gyakorlattal rendelkező felhasználóknak ajánlott. Mint szinte minden varázsló esetében, most is az a probléma, hogy megköti a felhasználó kezét. Persze most is adott az utólagos változtatás lehetősége. Használata során előre elkészített adattáblák mintái közül válogathatunk. Ennek folyamán elsőként azt kell kiválasztani, hogy „Üzleti”, vagy „Személyes” jellegű adattáb19. Ábra: A „Tábla varázsló” lát szeretnénk készíteni, majd a táblamintát, végül a „Mintamezők” közül történő választással a mezőket kell megadnunk. Érdekes módon a „Mező átnevezése” gombbal lehet csak olyan mezőt megadni, ami nem szerepel a „Mintamezők” listában.
5.2.6 Tábla importálása Ez az opció lehetőséget nyújt arra, hogy egy külső adathalmazt szerkesszünk be adatbázisunkba. Az adat forrása lehet: ¾ Microsoft Access; ¾ dBase III, dBase IV, dBase 5; ¾ Microsoft Excel; ¾ Exchange; ¾ HTML dokumentum; ¾ Lotus 1-2-3; ¾ Outlook; ¾ Paradox; ¾ szövegfájl (TXT); ¾ XML dokumentum; ¾ ODBC adatbázis fájl. Az adatok átvételét az Access szinte teljesen automatikusan végzi. Ehhez előbb egy tallózó pár20. Ábra: Excel táblázat importálása beszédablakban az adatforrást kell kiválasztanunk, majd egy varázsló segítségével a fájl típusának függvényében további kérdésekre adott válaszok figyelembevételével megtörténik az adatok átvétele. Mivel legnagyobb valószínűséggel majd Excel állományból veszünk át adatokat, tekintsük át a varázsló ilyenkor feltett kérdéseit röviden. Az importálás lépései: 1. Elsőként azt kell kiválasztani, hogy mely Excel állományból kell az adatokat átvenni. 2. A következő ablakban azt adhatjuk meg, hogy a munkafüzeten belül mely munkalapról vegye az adatokat az Access. 3. Ebben a lépésben arra kell választ adni, hogy az Excel táblázat első sorából vegye-e az Access a mezőneveket, vagy azokat majd mi adjuk meg később. Ez utóbbi esetben, az első sorban lévő adatok lesznek az első rekord adatai. 4. A következő kérdés arra vonatkozik, hogy az adatokat egy már meglévő, vagy egy új adattáblába olvassa be a program. 5. Amennyiben az előző lépésben új adattáblát választunk, meg kell adni a mezők nevét, illetve azt, hogy mely mezők legyenek indexeltek. Ha akarjuk, egyes mezők kihagyásra kerülhetnek az átvétel során. 6. Kiválaszthatjuk az elsődleges kulcsot (de azt is megadhatjuk, hogy ne legyen).
53
ECDL Adatbázis-kezelés modul 7.
Kérhetjük, hogy az átvett adatokat egy újabb varázsló analizálja. Ez valójában egyfajta normalizálást fog jelenteni. Tábla exportálása
Néha előfordul, hogy az Accessben létrehozott adattáblákat más programokkal kell feldolgozni. Ilyenkor az állományt exportálni kell. Ennek menete nagyon egyszerű: ¾ indítsuk el a „Mentés/Exportálás…” menüpontot a „Fájl” menüből; ¾ adjuk meg a rádiógombok segítségével, hogy „Egy külső fájlba, vagy adatbázisba” kívánunk menteni, majd adjuk meg a fájl típusát.
5.2.7 Tábla csatolása Az eljárás gyakorlati menete teljesen megegyezik az importálásnál ismertetettel, de csatoláskor csak egy az adatokra mutató hivatkozás épül be az adatbázisunkba. Ennek eredményeként akár az adatok eredeti helyén, akár az Access programban változtatunk az adatokon, az a másik programban is megjelenik. Hátránya az, hogy a csatolt táblák szerkezetét nem módosíthatjuk tetszésünk szerint.
5.2.8 Speciális adatbázis műveletek Az adatbázisokkal kapcsolatosan még két további, viszonylag gyakran végrehajtandó feladatot is meg kell tárgyalni: ¾ az adatbázisok tömörítését, mely valójában elsősorban a táblák tömörítését jelenti; ¾ illetve a korábbi Access verziókban készült adatbázisok használatakor végrehajtandó konvertálást. Azért most tárgyaljuk őket, mivel ezek a műveletek valójában a táblákat érintik.
5.2.8.1 Adatbázisok tömörítése Bizonyára hallottunk már a töredezettség-mentesítésről, de nem egy-egy fájl, hanem lemezegységek kapcsán. Adatbázisok esetében is az okozza a problémát, hogy a törlések miatt az állományok nem folyamatos lemezterületen fognak elhelyezkedni, ami nagyobb helyfoglalást és lassúbb működést fog okozni. Ezen segíteni úgy tudunk, hogy az adatbázist tömörítjük, amihez az „Eszközök” menü „Adatbázis segédeszközök” pontjából az „Adatbázis tömörítése és helyreállítása…” elemet kell lefuttatni.
5.2.8.2 Táblák konvertálása Bár az Access az idők folyamán sokféle formátumban tárolta az adatbázisokat, manapság már csak a következő típusokkal találkozhatunk: ¾ Access 97; ¾ Access 2000; ¾ Access 2002. Maga a konvertálás automatikusan felkínálásra kerül, ha egy korábbi adatbázis formátumú MDB állományt az újabb Access programverzióban első alkalommal nyitjuk meg. Azt azonban, hogy konvertálást lefuttassuk, vagy sem, a következő szempontok figyelembevételével döntsük el: ¾ az újabb programverziók természetesen felülről kompatibilisek a korábbi adatformátumokkal, de ez 21. Ábra: Tábla konvertálása fordítva nem igaz; ¾ ugyanakkor arra is van lehetőség, hogy korábbi verzióra visszakonvertáljuk az adatbázist. Így csak olyankor konvertáljuk az adatbázist modernebb formátumra, ha tudjuk, hogy azt egy időben nem kell régebbi és újabb Access program verzión is futtatni. Amennyiben első alkalommal nem konvertálunk, akkor már csak az „Eszközök” menü „Konvertálás” pontjából fogjuk elérni ezt a lehetőséget. Ugyancsak ebből a menüből kell indítanunk a korábbi verzióba történő konvertálást.
54
Access XP alapokon 5.3 Adattáblák közötti kapcsolatok Az adatbázisok tervezéséről szóló részben (5.1.) korábban már leszögeztük, hogy az egy feladathoz kötődő adatokat egymáshoz kapcsolódó adattáblákra kell szétválogatni. Ennek több előnye is lesz: ¾ mivel minden csak egy helyen kerül letárolásra, módosítani is elég csak egyszer, azaz megszűnik a frissítési anomália; ¾ előre felvehetjük a törzsekbe azokat az értékeket, melyeket csak később kell alkalmaznunk, tehát nincs beszúrási anomália; ¾ ha kitöröljük az összes olyan rekordot, melyben egy törzs adott értéke szerepel, attól az a törzsben még megmarad, vagyis megszűnik a törlési anomália is (ha például kitöröljük az összes literben mért árucikket a terméktörzsből, attól a liter mértékegység még megmarad a mértékegység törzsben); ¾ a feleslegesen ismétlődő adatok nem foglalnak el indokolatlan tárterületet. Az adattáblákra bontás történhet a már tárgyalt három módszer bármelyikével, azaz a normalizálással, az ER módszerrel, vagy a „józan ész„ elvével. A táblák gondos elméleti megtervezését, majd gyakorlati létrehozását követően azonban az egyes táblák közötti kapcsolatokat még ki kell alakítani. Erre majd két különféle módszert is használhatunk. Mielőtt azonban a kapcsolatok kialakításának módjait elkezdenénk tárgyalni, magukat a kapcsolatokat kell górcső alá vennünk, mert a kapcsolatok különféle tulajdonságai jelentősen befolyásolni fogják majd a kapcsolatok felépítésének végrehajtása során megadandó paramétereket.
5.3.1 A kapcsolatok osztályozása Ahhoz, hogy el tudjuk dönteni a kapcsolat típusát, azt kell megvizsgálni, hogy a táblák egy-egy rekordjához a vele kapcsolatban lévő másik tábla hány rekordja kötődik. Ennek figyelembevételével összesen három különböző kapcsolatfajtát szokás megkülönböztetni: ¾ „egy az egyhez”; ¾ „egy a többhöz”; ¾ és „több a többhöz”.
5.3.1.1 „Egy az egyhez” („1 : 1”) Egy az egyhez kapcsolatoknál az „A” tábla minden rekordjához a „B” tábla egy rekordja kapcsolódik, és ez fordítva is igaz, vagyis „B” minden rekordjához „A” táblának csak egy rekordja kötődik. Az „1 : 1” kapcsolatoknál a kapcsolódást biztosító mező mindkét táblában elsődleges kulcs (vagy legalábbis egyedi kulcs). Az „egy az egyhez” kapcsolat jelölése ¾ „1 : 1”
5.3.1.2 „Egy a többhöz” („1 : N”) „Egy a többhöz” kapcsolat esetében az „A” tábla minden egyes rekordjához a „B” tábla több rekordja is kapcsolódik, de „B” tábla minden rekordjához az „A” táblának csak egy rekordja kötődik. Az „1” oldali táblát szokták „elsődleges”, vagy „szülő” táblának is nevezni, míg a „több” oldal táblájának neve „kapcsolt”, vagy „gyermek” tábla (bár a szülő és gyermek elnevezést inkább csak hierarchikus adatmodellben szerencsés alkalmazni). Minden „1 : N” kapcsolatra jellemző, hogy a kapcsolatot biztosító adat az „1” oldalon elődleges kulcs (vagy esetleg csak egyedi kulcs), míg az „N” oldalon nem szabad elsődleges kulcsnak lennie. Sőt, amennyiben a kapcsoló mező az „N” oldalon kulcs, az ismétlődésnek engedélyezettnek kell lennie! Mint arról már volt szó, az „N” oldali kapcsolómezőt „idegen kulcsnak” szokás nevezni. Az „egy a többhöz” kapcsolat jelölése ¾ „1 : N”; ¾ vagy „1 : ∞”. Mivel a kapcsolatok döntő többsége majd ilyen lesz, ezt a témakört mintafeladatunk segítségével egy kicsit jobban is járjuk körül. A megvalósítandó raktári rendszerünkben az adatokat úgy csoportosítottuk több táblára, hogy döntően „1 : N” kapcsolatokat kell majd alkalmaznunk. Lássunk belőlük kettőt:
55
ECDL Adatbázis-kezelés modul „1” oldal („elsődleges”, vagy „szülő” tábla) Szállító törzs Mértékegység törzs
kapcsoló mező Szállító kód Mértékegység kód
„N” oldal („kapcsolt”, vagy „gyerek” tábla) Termék törzs Termék törzs
34. Táblázat: „1 : N” kapcsolatok a mintafeladatban A 34. táblázat első sorában lévő kapcsolat esetében a „Termék törzs” adattáblában több olyan termék, azaz több olyan rekord is lehetséges, amelyet ugyanattól a szállítótól szereznek be. Tehát a „kapcsolt” („gyerek”) adattábla több rekordja tartalmazhat olyan „Szállító kód” értéket, amit az „elsődleges” („szülő”) adattáblában viszont csak egy rekord vehet fel. Ezt az biztosítja, hogy a „Szállító kód” a „Szállító törzsben” az elsődleges kulcs, míg a „Szállító kód” a „Termék törzsben” még csak nem is indexelt. A második sor kapcsolatánál a „Termék törzs” adatTerméktörzs Mértékegység törzs táblában sok olyan termék, Mértékegy- MértékegyTermék Mérték- … azaz több olyan rekord is leTermék név kód egység kód … ség kód ség név hetséges, amelyet ugyanab123445 Zománcfesték 12 … 11 méter ban a mértékegységben mérnek. Így tehát a „kapcsolt” 145326 Olajfesték 12 … 12 liter („gyerek”) adattábla több re136541 Korong ecset 13 … 13 db kordja kell hogy tartalmazzon … … … … … … olyan „Mértékegység kód” 35. Táblázat: Példa „1 : N” kapcsolatra értéket, amit az „elsődleges” („szülő”) adattáblában csak egy rekord vesz fel. Ezt az biztosítja, hogy a „Mértékegység törzsben” a „Mértékegység kód” elsődleges kulcs, míg a „Termék törzsben” nem az, de még csak nem is index kulcs.
5.3.1.3 „Több a többhöz” (N : M) Eddig ilyen jellegű kapcsolatról ugyan nem beszéltünk, de a gyakorlatban nagyon sokszor fogunk vele találkozni. A valóságban a megoldandó feladatnak kitűzött munka is fog ilyen relációt tartalmazni. Ugye emlékszünk még rá, hogy a feladat megfogalmazásakor kikötöttük, hogy egy árucikket csak egy szállítótól fogunk venni? A valóságban azonban ez nincs így, hiszen ugyanazt az árucikket általában több szállítótól is szokás vásárolni. Ugyanakkor persze egy szállító több árucikkel is kiszolgálhatja a vevőt (ez a feladatunkban már eddig is megengedett volt). Nehezen követhető? Lássunk egy példát! Példa „több a többhöz” kapcsolatra Egy háztartási és vegyi áru boltba az 1 kg-os kiszerelésű fehér színű zománcfestéket (Termék kód: 1254) kizárólag a „Magyar Zománcművek és Festék Rt.” szállította (Szállító kód: 215). Ugyanakkor csak a „Kovács és Társa Festék Kft”-től került beszerzésre (Szállító kód: 189) az 1 literes hígító (Termék kód: 1255), és a „Color Paint Kft.” (Szállító kód: 139) szállította az ecseteket (Termék kód: 1145). Egyszer aztán a „Color Paint Kft.” ügyvezetője egy baráti látogatás alkalmával rábeszélte a példában szereplő cég vezetőjét, hogy festéket és hígítót is szerezzen be néha tőle. Mindennek eredményeként, a „Color Paint Kft.” szállít már fehér zománcfestéket és 1 literes hígítót is szállít. Ezt a feladatot azonban két táblával nem lehet lekezelni, hiszen melyik szállító kódját írjuk be a termék törzsbe? A megoldás az, hogy létre kell hozni egy úgynevezett kapcsoló adattáblát is, melynek mezői közé fel kell venni mindkét adattábla kapcsolómezőjét. A példában ez egy olyan adattábla, mely tartalmazza a „Szállító kódot”, és a „Termék kódot” is. Ha belegondolunk, ehhez nem is kell feltétlenül új adattábla, hiszen a „Tranzakciók tételei” pontosan megfelel erre. Csak annyit kell tennünk, hogy a „Termék törzs” adattáblából átvisszük a „Tranzakciók tételei” táblába a „Szállító kód” mezőt. Mindez egy táblázatban érthetőbb. „N” oldal („kapcsolt”, vagy „gyerek” tábla) Termék törzs
kapcsoló mező Termék kód
„1” oldal („elsődleges”, vagy „szülő” tábla) Tranzakciók tételei
kapcsoló mező Szállító kód
36. Táblázat: „M : N” kapcsolat az átalakított mintafeladatban
56
„N” oldal („kapcsolt”, vagy „gyerek” tábla) Szállító törzs
Access XP alapokon A példát úgy tudtuk megoldani, hogy a „több a többhöz” kapcsolatot két „egy a többhöz” kapcsolatra bontottuk. Ez a megoldás általánosnak tekinthető, melynek értelmében kimondható, hogy minden „több a többhöz” kapcsolat két darab „egy a többhöz” kapcsolatra vezethető vissza. A „több a többhöz” kapcsolat jelölése ¾ N : M.
5.3.2 Kapcsolatok létrehozása Kapcsolatok létrehozására több lehetőség is kínálkozik. Ezek egyikét, a mező „Keresés varázsló…” típusúra választását, már megemlítettem, sőt alkalmaztuk is. Részletesebb megbeszélésére most kerül sor. A másik módszer, a kapcsolatok felépítése a „Kapcsolatok” ablakban.
5.3.2.1 „Keresés varázsló…” Az adatbázis táblái között a kapcsolatokat a legegyszerűbben ezzel a módszerrel tudjuk felépíteni, mert a „Keresés varázsló” használata során csak néhány könnyen érthető kérdésre kell választ adnunk. A „Keresés varázsló” a kapcsolat kialakításához szükséges összes feladatot elvégezi, sőt, azt is megoldja, hogy az adatbevitel megkönnyítése érdekében a „kapcsolt” („gyerek”) táblában a kapcsolómező egy kombinált lista legyen. A kapcsolat felépítését ezzel a módszerrel mindig a „kapcsolt” („gyerek”) tábla felől kell elvégezni, de előbb az „elsődleges” („szülő”) táblát kell 22. Ábra: A „Keresés varázsló…” első lépése létrehozni! A „Keresés varázsló” segítségével azonban úgy is megadhatunk egy kapcsolatot, hogy az „elsődleges” („szülő”) adattábla adatait valójában nem is egy külön adattábla tartalmazza. Ezt a megoldást akkor válaszszuk, ha egy mező megengedett értékeinek száma csekély, és az idők folyamán nem is fog változni. Bármelyik módszert alkalmazzuk is, a „Keresés varázsló” első lépése megegyezik. 5.3.2.1.1 A szülő adattábla adatai valójában a gyerek adattábla paramétereiként tárolódnak Ha a „Keresés varázsló” első ablakában a „Begépelem a szükséges értékeket.” opciót választjuk, akkor érünk erre az ágra. Ezt a megoldást tehát a megbeszéltek értelmében akkor célszerű alkalmazni, ha az „elsődleges” („szülő”) adattábla legfeljebb néhány rekordot tartalmazna, és az értékek várhatóan soha nem is változnának meg. Ilyenkor egyszerűbb, ha a választható értékeket a „kapcsolt” („gyerek”) adattábla létrehozásakor mi magunk gépeljük be. Ilyen esetben persze, mivel valójában csak egyetlen tábla lesz, nincs is igazán értelme „elsődleges” és „kapcsolt” tábláról beszélni. Mintafeladatunkban ezt a megoldást az „ÁFA kulcsoknál” alkalmaztuk. 23. Ábra: Adjuk meg, hogy az adatokat hány oszlopban A következő lépés, ha mi adjuk meg az adatokat szeretnénk szerepeltetni, illetve gépeljük be magukat az adatokat is. Ennek során úgy kell dolgoznunk, mintha egy Word táblázatot töltenénk fel (a következő adatra ugrás tehát Tabulátorral lehetséges). Az oszlopok szélességét a szokásoknak megfelelően állíthatjuk. Ha végeztünk, kattintsunk a „Tovább” gombra.
57
ECDL Adatbázis-kezelés modul A következő lépésben azt kell megadnunk, hogy a begépelt oszlopok közül melyikben szerepelnek a mezőben valójában letárolandó adatok. Ez a lépés egyoszlopos táblázat esetén természetesen elmarad. A utolsó lépésben (mely egyébként megegyezik a másik módszer utolsó lépésével), azt kell megadni, hogy mi legyen a mező felirata. Ez alapértelmezésben megegyezik a mező nevével, és többnyire felesleges is a megváltoztatása. Kattintsunk a „Befejezés” gombra. Látszólag nem történt semmi változás, de ha átlapozunk a tábla tervező nézetében a „Megjelenítés” regiszterre, akkor némi elemzés után (szinte) minden világossá válik.
24. Ábra: Ez a lépés csak többoszlopos adatok esetén jelenik meg
5.3.2.1.2 Valódi kapcsolat létrehozása Arra ismételten felhívom a figyelmet, hogy „Keresés varázsló…” alkalmazásával történő kapcsolat felépítésekor előbb az „elsődleges” („szülő”) adattáblát kell létrehozni, és a mezők közé elsődleges kulcsként fel kell venni a kapcsoló mezőt! Tervező nézetben adjuk meg a „kapcsolt” („gyerek”) adattábla mezőit, köztük egy, az „elsődleges” („szülő”) adattábla kapcsoló mezőjével megegyező nevű mezőt (a nevek egyezése nem kötelező, de célszerű). Ennek a mezőnek a típusát állítsuk be „Keresés varázsló…” értékre, majd a „Keresés varázsló” első ablakában hagyjuk meg kiválasztottnak az alapértelmezett „Szeretném, ha a(z) keresőoszlop…” opciót, és kattintsunk a „Tovább” gombra. A következő lépésben adjuk meg, melyik tábla fogja szolgáltatni a kiválasztható értékeket. Válasszuk ki az „elsődleges” („szülő”) adattábla nevét, majd kattintsunk a „Tovább” gombra.
25. Ábra: Válasszuk ki a „kapcsolt” („gyerek”) táblát Az újabb ablakban adjuk meg azokat a mezőket, melyeknek tartalmát a kapcsoló mező tartalmaként meg szeretnénk jeleníteni a „kapcsolt” 26. Ábra: Állítsuk össze a megjelenítendő mezőket („gyerek”) táblában. Az elsődleges kulcsot mindig meg kell adni! A mezők megadásához előbb kattintsunk rá az „Elérhető mezők” listában a mező nevére, majd a ikonra. Ennek hatására a kérdéses mező átkerül a „Kijelölt mezők” listába. Ha a mezőket összeállítottuk, kattintsunk a „Tovább” gombra. A következő ablakban a szokásos módon állítsuk be az oszlopszélességeket, majd nyomjuk meg a „Tovább” gombot. 27. Ábra: Állítsuk be a szükséges oszlopszélességeket
58
Access XP alapokon Végül adjuk meg a mező feliratát (ez alapértelmezésben megegyezik a mezőnévvel), majd kattintsunk a „Befejezés” gombra. Mivel ez az ablak gyakorlatilag már megegyezik az imént megbeszélt másik eljárás utolsó ablakával, ott nem is szerepelt. Ezzel gyakorlatilag létrehoztunk egy kapcsolatot a két tábla, az elsődleges (szülő), és a kapcsolt (gyerek) adattábla között. Az esetek többségében azonban van még egy feladatunk. Be kell kapcsolni a hivatkozási integritást, aminek mibenlétét rövidesen részletesen megbeszéljük.
28. Ábra: Az utolsó lépés
5.3.2.1.3 A „Keresés varázsló” által beállított megjelenés Amennyiben két tábla között a „Keresés varázslóval” építjük fel kapcsolatot, akkor a „kapcsolt” („gyerek”) táblában „idegen kulcs” szerepet betöltő mező legördülő listaként jelenik meg. Ha ezt a mezőt lenyitjuk, akkor az „elsődleges” („szülő”) tábla adatai közül tudunk válogatni. Ennek az oka az, hogy a „Keresés varázsló” a kapcsolat felépítésén túl további beállításokat is elvégez. Ezek a változtatások azonban csak akkor láthatóak, ha a „kapcsolt” („gyerek”) tábla tervező nézetében átlapozunk a „Megjelenítés” lapra, majd a 29. Ábra: A „Megjelenítés” regiszter tartalma kérdéses idegen kulcs szerepű mezőnél megnézzük annak tartalmát. Amennyiben magunk akarjuk a beállításokat végrehajtani, akkor a következőket kell elvégezni: ¾ Vezérlőelem megjelenése Kombinált lista, vagy Lista. ¾ Sorforrás típusa Tábla/lekérdezés. ¾ Sorforrás Egy SELECT utasításon alapuló SQL kifejezés. Megadása úgy lehetséges, hogy a „Sorforrás” sorába állást követően a sor végén ekkor előtűnő jelre kattintunk. Ezt követően a megjelenő lekérdezés tervezőrács segítségével egyszerűen összeállítjuk a lekérdezést. Ennek módszere a későbbiekben kerül részletesen megtárgyalásra (6.1.1.1.). ¾ Kötött oszlop A sorforrás SQL kifejezésében annak a mezőnek a sorszáma, amelyiket a táblában le kell tárolni (általában 1). ¾ Oszlopszám Az SQL kifejezésben megadott mezők száma. ¾ Oszlopfejléc Általában nem szokás kérni, de ha mégis kérjük, akkor a lista tetején megjelennek a mezőnevek. ¾ Oszlopszélességek Az egyes mezők oszlopainak szélessége egymástól pontosvesszővel elválasztva. Amennyiben egy oszlopot nem akarunk megjeleníteni, annak szélességét állítsuk 0 értékre. ¾ Listasorok A lenyitás után egyszerre megjelenő adatsorok maximális száma. ¾ Listaszélesség Az összes mező együttes szélessége. ¾ Csak listaelem Igen.
5.3.2.2 A „Kapcsolatok” ablak használata ¾ ¾ ¾
A most bemutatásra kerülő eszköz igazán sokoldalú, hiszen segítségével: grafikus formában ábrázoltathatjuk az adatbázis adattáblái közötti kapcsolatokat; a meglévő kapcsolatokat törölhetjük, módosíthatjuk; illetve új kapcsolatokat építhetünk fel.
59
ECDL Adatbázis-kezelés modul E lehetőségek közül akármelyiket is szeretnénk végrehajtani, elsőként a kapcsolatok ablakot kell megnyitnunk. Ehhez vagy az „Eszközök” menü „Kapcsolatok…” opcióját kell választanunk, vagy az eszközsor ikonjára kell kattintanunk (csak akkor elérhető, ha az adatbázis-ablak az aktív) . Ha bezárjuk a „Kapcsolatok” ablakot, akkor nagy valószínűséggel meg fogja kérdezni a program, hogy mentjük-e a „Kapcsolatok” elrendezésének módosítását. Ne értsük félre! Akár „Nem”, akár „Igen” választ adunk erre a kérdésre, az a kapcsolatokat nem befolyásolja, mert a mentés csak az ablak elrendezéseire vonatkozik. Ezek után tekintsük át az egyes eljárások menetét. 5.3.2.2.1 Meglévő kapcsolatok felderítése Amennyiben nem hoztunk létre a „Keresés varázsló” segítségével kapcsolatokat, a megnyíló „Kapcsolatok” ablak üres lesz. Az összes kapcsolat megjelenítése Ha a létező összes meglévő kapcsolatot meg szeretnénk jeleníteni, akkor kattintsunk az eszközikonjára. Ennek hatására az ablakban megsor jelenik az összes egymással valamilyen kapcsolatban lévő tábla. A kapcsolatokat vonalak fogják jelezni. A vonalak az egyes táblák kapcsolómezőinek neveit kötik össze egymással. Az azonban sajnos korántsem biztos, hogy olyan jól áttekinthető az adattáblák közötti kapcsolat, mint ahogy azt az ábrán látjuk. A problémán azzal segíthetünk, hogy az egyes adattáblákat a 30. Ábra: Az összes meglévő kapcsolat kijeleztetése a címsoruknál megfogva addig húzogatjuk az „Kapcsolatok” ablakban ablakon belül, míg meg nem szűnnek az egymást keresztező kapcsolatvonalak. Ha az egyes adattáblák kapcsolómezői nem látszanak a mezőnevek között, akkor az adott táblát jelképező kis ablakot vegyük nagyobbra. Ez akkor okozhat problémát, ha sok mező van az adott táblában, és a kapcsoló mező ezek közül valahol a vége felé található. Csak minket érdeklő kapcsolatok megjelenítése Ha a bonyolult kapcsolatok miatt egy ilyen, az összes kapcsolatot kijelző ablak teljesen áttekinthetetlen, akkor arra is van lehetőség, hogy csak a minket érdeklő kapcsolatokat jelenítsük meg. Ehhez előbb töröljük a „Kapcsolatok” ablakban lévő összes adattáblát. Ne féljünk, ezzel a kapcsolatok nem kerülnek törlésre! Ezt követően kattintsunk a ikonra, majd válasszuk ki dupla kattintással azt (azokat) a táblát (táblákat), ikonra, aminek amelynek (melyeknek) kapcsolataira kíváncsiak vagyunk. Befejezésül kattintsunk a hatására csak a kérdéses adattáblák kapcsolatrendszere jelenik meg grafikus formában. 5.3.2.2.2 Meglévő kapcsolatok jellegének módosítása, kapcsolatok törlése Ha egy kapcsolatot törölni szeretnénk, vagy a kapcsolat jellegén szeretnénk változtatni, akkor kattintsunk rá a kapcsolatot jelző vonalra az egér jobb gombjával, majd a megjelenő helyi menüből a feladatunk céljának megfelelően válasszunk. 1. Ha a „Törlés” opcióra kattintunk, akkor az Access megkérdezi, hogy „Biztosan véglegesen törölni szeretné a kijelölt kapcsolatot az adatbázisból”. A kérdés nem véletlen. Ez a törlés nem visszavonható! 2. Ha a „Kapcsolat szerkesztése…” menüpontot választjuk, akkor az ábra szerinti ablakot kapjuk. Az ablakban állítható legfontosabb paraméter a „Hivatkozási integritás megőrzése”, amiről rövidesen részletesen is lesz szó, de előbb lássuk mit takar az „Illesztés típusa…”.
60
31. Ábra: Kapcsolat tulajdonságai ablak
Access XP alapokon 5.3.2.2.2.1 Az illesztés típusa Amennyiben megnyomjuk az „Illesztés típusa…” gombot, három lehetőségből választhatunk, melyeket a legegyszerűbben egy példán keresztül tudok megmagyarázni. Tegyük fel, hogy van egy házassági partnerközvetítő irodánk. Ügyfeleink adatait két táblában tartjuk nyilván, az egyikben a regisztrált férfi, a másikban a női ügyfeleket. A táblák neve legyen 32. Ábra: Az illesztés „Férfi” és „Nő”, mindkettő elsődleges kulcsa egy-egy „Azonosító” lehetséges típusai nevű mező lesz. Ezeken a mezőkön kívül mindegyik táblában szerepelnek a név és cím adatok, valamint a „Férfi” táblában egy „Partner” nevű mező. Ez lesz a két tábla közötti kapcsolatban az idegen kulcs. Magát a kapcsolatot létrehozhatjuk úgy, hogy a „Férfi” táblában „Keresés varázsló…” típusra adjuk meg a „Partner” nevű mezőt, majd a kérdésekre a tanultaknak megfelelően válaszolunk. Ha sikerül az ügyfelek között személyes kapcsolatot kialakítani, azt úgy tároljuk le, hogy a férfiak táblájába az adott úr rekordjába a „Partner” mezőben az adott hölgypartner azonosítóját megadjuk. Amennyiben majd a későbbiekben egy olyan lekérdezést állítunk össze, melyben mindkét táblából szerepeltetjük a neveket, három lehetőségünk lesz: ¾ azoknak a rekordoknak a listázása, amelyekben a két tábla rekordjai kapcsolódnak egymáshoz, vagyis a párkapcsolattal rendelkező férfiak és nők neve; ¾ az összes férfi neve, és ha van partnerük, annak neve; ¾ az összes hölgy neve, és ha van partnerük, annak a neve. Az alapértelmezés az első lehetőség, vagyis csak a két tábla azon rekordjai szerepelnek a listában, melyek kapcsolódnak egymáshoz. 5.3.2.2.2.2 Hivatkozási integritás Ezzel a jelölőnégyzettel azt állítjuk be, hogy a kapcsolómezők tartalmát hogy kezelje az Access. Ha kipipáljuk (amit csak akkor tehetünk meg, ha legalább az egyik adattáblában elsődleges kulcs a kapcsolómező), akkor a kapcsolódó táblákban a kapcsolómezők adatait nem lehet bárminek megadni, véletlenül törölni vagy módosítani. Egész pontosan: ¾ az „elsődleges” („szülő”) adattáblában nem lehet a mező tartalmát, illetve az egész rekordot törölni, ha a „Kapcsolt” („gyerek”) táblában kapcsolódik hozzá rekord; ¾ és a „kapcsolt” („gyerek”) adattáblában a mező csak olyan értéket vehet fel, mely szerepel az elsődleges (szülő) adattáblában. Ha egy kapcsolatnál a „Hivatkozási integritás” bekapcsolt állapotú, akkor azt a kapcsolatok ablak33. Ábra: Bekapcsolt hivatkozási integritás esetén ban rögtön láthatjuk: ilyenkor a kapcsolatot jelző látszik a kapcsolat típusa vonal végein kijelzésre kerül az, hogy a kapcsolat jellege „egy az egyhez” (1 : 1), vagy „egy a többhöz” (1 : N, illetve 1 : ∞). Az ábrán egy kapcsolat kivételével minden kapcsolat „egy a többhöz”. Ha egy adatbázis adattábláit egymással szinkronban akarjuk kezelni, akkor a „Hivatkozási integritás” jelölőnégyzetet ki kell pipálni. Amennyiben az adatbázis adattáblái közötti kapcsolatokat a „Keresés varázsló…” segítségével építjük fel, akkor a „Hivatkozási integritás” sajnos nem lesz bekapcsolva. Ezért ilyen esetekben ezt az imént megtárgyalt módszerrel utólag kell megtennünk.
61
ECDL Adatbázis-kezelés modul 5.3.2.2.2.3 Kapcsolt mezők kaszkádolt1 frissítése Ha az „elsődleges” („szülő”) adattábla elsődleges kulcsát megváltoztatjuk2, akkor a „kapcsolt” („gyerek”) adattáblában is megváltozik a kapcsoló mező (az idegen kulcs) értéke. 5.3.2.2.2.4 Kapcsolt mezők kaszkádolt törlése A szülőtábla egy rekordjának törlésekor a gyermektábla összes, az adott rekordhoz tartozó bejegyzése törlődik. Lehetőleg ne alkalmazzuk! 5.3.2.2.3 Új kapcsolat felépítése a „Kapcsolatok” ablak segítségével Egy új kapcsolatot a „Kapcsolatok” ablak segítségével is nagyon egyszerűen tudunk felépíteni. Az eljárás menete a következő: ¾ vegyük fel a „Kapcsolatok” ablakba az összekapcsolni kívánt adattáblákat a ikon segítségével; ¾ az egyik adattábla kapcsolómezőjét húzzuk rá a másik adattábla kapcsolómezőjére; ¾ a megjelent párbeszédablakban, amennyiben szükséges, kapcsoljuk be a „Hivatkozási integritást”; ¾ kattintsunk az „Ok” gombra. 8. Feladat: Töröljük a „Szállító törzs” és a „Termék törzs” kapcsolatát! Megoldás: , majd nyissuk meg a „Kapcsolatok” ablakot a ikonTegyük aktívvá az „Adatbázis” ablakot a ikonnal. A nal, azután jeleztessük ki az adatbázis adattáblái közé felépített összes kapcsolatot a megjelenő táblákat rendezzük el úgy, hogy a kapcsolatokat jelző vonalak ne metsszék egymást (például úgy, mint ahogy előző oldalon lévő szemléltető ábrán elhelyezkednek). Annyi különbség biztosan lesz, hogy a kapcsolatok vonalain nem látható az egyes, illetve a végtelen jel, hiszen a „Hivatkozási integritás” nincs bekapcsolva. Kattintsunk az egér jobb gombjával a „Szállító törzs” és a „Termék törzs” táblát összekötő vonalra, majd válasszuk a „Törlés” pontot. A megerősítő kérdésre válaszoljunk igennel! Zárjuk be az „Kapcsolatok” ablakot. 9. Feladat: Töröljük a „Termék törzs” mezői közül a „Szállító kód”-ot, majd vegyük fel a „Tranzakció tételei” táblába! Építsünk fel egy kapcsolatot a két tábla között a „Szállító kód” mezőre alapozva! Megoldás: Tegyük aktívvá az „Adatbázis” ablakot a ikonnal, majd nyissuk meg a „Termék törzs” táblát „Tervező” nézetben (ehhez a „Tervezés” gombra kell kattintani). Jelöljük ki a „Szállító kód” mezőt, majd nyomjuk meg a Delete billentyűt. Mindkét feltett kérdésre válaszoljunk az „Igen” gombra kattintással. Zárjuk be az adattáblát úgy, hogy mentjük a változásokat, majd nyissuk meg a „Tranzakció tételei” táblát „Tervező nézetben”. Vegyük fel a „Szállító kód” mezőt az alábbi paraméterekkel: Név: Típus: Altípus: Cím: Kötelező Indexelt:
Szállító kód Szám Hosszú egész Partner Igen Igen (lehet azonos)
Hogy ne lehessen partner nélkül tranzakciót indítani
37. Táblázat: A megadandó adatok Mentsük el a változásokat, majd zárjuk be a táblát. A kapcsolat felépítéséhez nyissuk meg a „Kapcsolatok” ablakot a ikonnal, majd a „Szállító kód” mezőt húzzuk át a másik adattáblába (mindegy, hogy a „Szállító törzs”-ből a „Termék törzs”-be, vagy 1
Kaszkádolt - azonos tulajdonságok alapján összekapcsolt. Ha az elsődleges kulcs értéke automatikusan kerül generálásra (típusa számlálóra lett választva), akkor az értékét nem tudjuk megváltoztatni.
2
62
Access XP alapokon fordítva). Amikor megjelenik a „Kapcsolatok” nevű párbeszédablak (ennek csak a neve egyezik meg a korábban, a ikonnal megnyitottal), pipáljuk ki a „Hivatkozási integritás megőrzése” jelölőnégyzetet, majd kattintsunk a „Létrehozás” gombra. 10. Feladat: Nézzük meg az eddig létrehozott kapcsolatokat, és kapcsoljuk be a „Hivatkozási integritás megőrzését”. Ahol szükséges, kapcsoljuk be a „Kaszkádolt frissítést” is! Megoldás: Nyissuk meg a „Kapcsolatok” ablakot a ikonnal, majd kérjük minden kapcsolatra a „Hivatkozási integritás megőrzését”! Ehhez kattintsunk sorban a kapcsolati vonalakra az egér jobb gombjával, és a megjelenő helyi menüből válasszuk ki a „Kapcsolat szerkesztése…” opciót, majd a „Hivatkozási integritás megőrzése” jelölőnégyzetet pipáljuk ki, végül kattintsunk az „OK” gombra. A „Kaszkádolt frissítést” ugyan célszerű lenne mindenhol bekapcsolni, de mivel a kulcsmező típusa a legtöbb helyen „Számláló”, a kulcsok értékét úgysem lehet megváltoztatni. Egyetlen olyan elsődleges kulcsunk van, melynek értéke módosítható: ez a „Tranzakciók”. Itt kapcsoljuk be a kaszkádolt frissítést is! Végül, a „Kapcsolatok” ablak tartalmát is mentsük el, majd zárjuk be. 11. Feladat: Kezdjük meg táblák feltöltését. Ezt a munkát természetesen az elsődleges táblákkal kell kezdeni. Legelőször adjuk meg a szokásos mértékegységeket a „Mértékegység törzsben”. Próbaként adjunk meg rekordokat a „Szállító” és a „Termék” törzsbe is, majd próbáljuk ki, hogy tranzakciót is tudunk-e indítani. Megoldás: A „Mértékegység törzsbe” és vigyük be a következő adatokat (a „Mértékegység kód” számláló, tehát nekünk nem kell megadni). Mértékegység kód Mértékegység név 01 02 03 04
Darab Kilogramm Méter Liter Miért jelentek meg a kis pluszjelek a rekordok előtt?
Amennyiben az Access XP verziójában az egymással „egy a többhöz” („1 : N”) kapcsolatban lévő táblák egy oldalán lévő táblát megnyitjuk, akkor a rekordok elején egy kis pluszjelet látunk. Ez arra utal, hogy az adott táblához több rekord is kapcsolódhat egy másik táblából. A témáról a hamarosan tárgyalásra kerülő segéd adatlap megbeszélése során lesz részletesebben szó (5.4.).
Zárjuk be ezt a táblát, és nyissuk meg a „Szállító törzset”, majd adjuk meg az adatokat. Ahhoz, hogy a „Fax szám” mezőben a „Nincs” felirat jelenjen meg, két idézőjelet kell közvetlenül egymás után írni. Szállító kód
Szállító név
Irányítószám
001 Nógrádi PC Suli Kft. 9021 002 Varga és Társa 1021
Város
Utca és házszám
Győr Budapest
Munkácsy u. 1-5. Kökörcsin u. 121.
Telefonszám
Fax szám
(96)313-327 Nincs (1)125-4253 Nem ismert
Zárjuk be ezt a táblát is. Most a „Termék törzset” nyissuk meg, és vigyük be a következő adatokat: Termék kód
Termék név
0001 PC Suli XP alapokon I. 0002 Hangfal
ÁFA kulcs
Mértékegység
5% Darab 25% Darab
VTSZ, vagy SZJ szám 4901 4461
Zárjuk be az adattáblát, és nyissuk meg a „Tranzakciókat”, majd vegyünk fel egy rekordot: Bizonylatszám N/001
Dátum 2005.09.10.
Jelleg 1
63
ECDL Adatbázis-kezelés modul Befejezésül zárjuk be azt a táblát is, majd adjunk meg 2 rekordot a „Tranzakciók tételei” táblában: Bizonylatszám N/01 N/01
Termék PC Suli XP alapokon I. Hangfal
Mennyiség 101,00 2,00
Nettó egységár
Partner
1950,00 Ft Nógrádi PC-Suli Kft. 2250,00 Ft Varga és Társa
Zárjuk be azt a táblát is. 12. Feladat: Vigyünk be további rekordokat a „Szállító törzs”, a „Termék törzs”, a „Tranzakciók” és a „Tranzakciók tételei” adattáblákba! Megoldás: Adjunk meg további kb. 10-10 rekordot előbb a „Szállító törzs”, majd a „Termék törzs” adattáblákba. Azután vigyünk be pár rekordot a „Tranzakciók” táblába úgy, hogy a bizonylatszám első karaktere egyezzen meg a jelleg magyarázó szövegében szereplő első karakterrel, a folytatása pedig egy „/” jel után egy futó sorszám legyen. Végül adjunk a „Tranzakciók” tételeihez is legalább pár tucat rekordot. A később megoldandó feladatok érdekében figyeljünk arra, hogy legyen olyan árucikkünk, melyet ugyan felveszünk a „Termék törzs” táblába, de ne vegyük fel a „Tranzakció tételei” táblába. Ugyanez legyen érvényes a „Szállító törzs” tábla adataira is. És még egy figyelembe veendő kérés: több azonos városbeli rekordot is vegyünk fel a „Szállító törzs” táblába, illetve bizonyos árucikkek is több rekorddal szerepeljenek a „Tranzakció tételei” táblában. Milyen megnevezéseket használjunk a termék törzsekben? Egyáltalán, miért merül fel ez a kérdés? Amikor majd a terméktörzsben adatokat szeretnénk megkeresni, egyáltalán nem lesz mindegy a nevek felépítése. Ha ugyanis a szokásos módon adjuk meg a neveket, akkor a magyar sajátosságából adódóan nehéz lesz az egyes árucikkeket megtalálni. Nyelvtani szabályaink miatt ugyanis elől szerepelnek a jelzők, és utána az alany: ¾ Epson 1110-es mátrixnyomtató; ¾ HP 710-es tintasugaras nyomtató; ¾ stb. Ha sok árucikkünk van, így az azonos jellegűek egymástól messze kerülnek. Ha viszont mindent úgy adunk meg, hogy az alanyt követően a legnagyobb csoport szerepel legelöl, és a legkisebb leghátul, akkor az azonos jellegű áruféleségek egymás mellé kerülnek. Tehát a helyes módszer az előző termékek esetében: ¾ nyomtató, mátrix, Epson 1110-es; ¾ nyomtató, tintasugaras, HP 710-es; ¾ stb. A módszer további előnye, hogy így szinte rákényszerülünk a pontos megnevezésekre.
5.4 Segéd adatlap Az előző oldalon, a kiegészítő információk között már szóba került az, hogy amennyiben egy olyan táblát nyitunk meg, mely valamely „egy a többhöz” („1 : N”) kapcsolat egy oldalán szerepel, akkor a rekordok előtt egy kis pluszjel lesz látható (de csak az XP verzióban). Erre a jelre kattintva a „kapcsolt” („gyerek”) tábla adott rekordhoz kapcsolódó rekordjai fognak megjelenni. Ezt, az egyik tábla rekordjai között megjelenő másik táblarészletet hívják segéd adatlapnak. Amennyiben azt szeretnénk, hogy a segéd adatlap ne csak a pluszjelre kattintás után, hanem mindig látható legyen, a tábla tulajdonságainál tudjuk
64
34. Ábra: Egy tábla lenyitott segéd adatlappal
Access XP alapokon beállítani. Ennek lépései: ¾ nyissuk meg az „elsődleges” („szülő”) táblát tervező nézetben; ¾ a ikonra kattintással lépjünk be a tábla tulajdonságai ablakba; ¾ a „Segéd adatlap kibontva” értékét állítsuk „Igen” értékre; ¾ adjuk meg a „Segéd adatlap magassága” értékét 2-3 cm-re (ez lesz a maximális értéke). A többi, szintén a „Segéd adatlap” megjelenését befolyásoló tulajdonságot („Segéd adatlap neve”, „Almező csatolása”, „Főmező csatolása”, „Irány”) ne állítsuk át.
5.5 Rekordok sorba rendezése, keresése, szűrése A következőkben megbeszélésre kerülő eljárások jelentős mértékben ismerősek lesznek, hiszen az Excel és a Word programban is alkalmazhatóak.
5.5.1 Rendezés (növekvő/csökkenő) Ha egy adattáblát valamely mezőre nézve sorba szeretnénk rendezni, akkor nyissuk meg „Adatlap” nézetben, majd álljunk abba a mezőbe, amit kulcsnak szeretnénk alkalmazni. Ezek után kattintsunk: ¾ a ikonra, ha növekvő; ¾ a ikonra, ha csökkenő sorrendbe akarjuk rendezni. A rendezés kulcsa a „Tábla tulajdonságai” közül a „Rendezés” mezőbe íródik be (5.2.4.). Ha ezt töröljük, újra az elsődleges kulcs szerinti sorrendben fogjuk látni az adatokat (bár ennek túl nagy jelentősége nem lesz).
5.5.2 Keresés és csere Ha egy olyan adatot szeretnénk megkeresni, amely egy mező tartalmával egy vagy több rekord esetében megegyezik, akkor indítsuk el a ikonnal a keresést. Előtte azonban most is a kérdéses mezőre kell állnunk. Amennyiben nem csak az aktuális mezőben, hanem a teljes táblában szeretnénk kerestetni, akkor a „Miben” listát állítsuk át „x tábla” értékre (x helyén az aktuális tábla neve lesz olvasható). Az egyezésnek nem kell teljes körűnek lenni, azt is beállíthatjuk az „Egyezés” listában. A választható lehetőségek a következők: ¾ Mező elején; ¾ Teljes mező; ¾ Mező bármely részében. Ugyancsak megadhatjuk a keresés irányát a „Keresés” listában, valamint kérhetjük a kisés nagybetűk megkülönböztetését. Amennyiben átlapozunk a „Csere” regiszterre, a Word és Excel programokban már megismert módon cserélhetünk is. 35. Ábra: Keresés
5.5.3 Szűrés Az adattáblák szűrésére két lehetőségünk is van, melyeket ismerve nagyon gyorsan tudjuk csak a minket érdeklő rekordokat megjeleníteni. Bármelyiket is használjuk, a szűrési feltételek a „Tábla tulajdonságai” közül a „Szűrő” mezőbe íródnak be (5.2.4.). Akármelyik bemutatásra kerülő módszert is alkalmazzuk, az adattábla összes rekordjának újbóli megjelenítéséhez a ikonra kell majd kattintanunk. Ennek hatására ugyan megmaradnak a szűrési feltételek a „Tábla tulajdonságai” között, de nem lesznek aktívak. Arra azért felhívom a figyelmet, hogy egyik módszer sem alkalmas: ¾ egy rekord különböző mezőiből kiszámítható értékek megjelenítésére (pl. egy „Raktár” adattáblában egy „Készlet” és egy „Egységár” mezőkből nem tudjuk kiszámoltatni a készleten lévő árú értékét); ¾ illetve több rekord egy-egy mezőjéből képzett adat megjelenítésére (pl. ha létezik egy olyan „Dolgozók” adattábla, ahol egy „Besorolási bér” mezőben minden alkalmazott havi bére megtalálható, nem tudjuk kiszámoltatni az átlagos bért). Ilyen igény esetén a „Lekérdezéseket” kell majd alkalmazni (6.).
65
ECDL Adatbázis-kezelés modul 5.5.3.1 Szűrés kijelöléssel Ezt a módszert akkor fogjuk alkalmazni, ha csak egy mezőre vonatkozóan akarunk megadni feltételt, és még erre a mezőre is csak egy értéket fogadunk el (mező részbeni tartalmára nem lehet hatékonyan szűrni). A módszert a következő módon kell alkalmazni: ¾ kattintsunk rá egy olyan rekord olyan mezőjére, amelyben a nekünk megfelelő értéket találjuk a kérdéses mezőben; ¾ indítsuk el a szűrést a ikonnal. Ha például a „Szállító törzs” adattáblában csak azokat a rekordokat kívánjuk megjeleníteni, ahol a „Város” mező tartalma „Győr” akkor keressünk egy olyan rekordot, ahol a „Város” mező tartalma „Győr” (ehhez alkalmazzuk az imént megtárgyalt ikont), jelöljük ki a keresett értéket, majd indítsuk el a szűrést a ikonnal. Így azonban csak nagyon egyszerű feltételnek megfelelő rekordokat tudunk kiszűrni. Ha ennél többre vágyunk, alkalmazzuk az űrlappal történő szűrést.
5.5.3.2 Szűrés űrlappal A bonyolultabb szűrési feltételek megadásához ezt a módszert kell választanunk. Alkalmazásával csak az általunk megadott, akár egészen bonyolult feltételeknek Ide kattintva adhatunk meg megfelelő rekordok lesznek csak „Vagy” kapcsolattal feltételt láthatóak. Alkalmazása két lépésből áll: 1. a szűrési feltételek megadása; 2. a szűrés bekapcsolása. 36. Ábra: A szűrési feltételek megadásáA szűrési feltételeket ilyen felépítésű ablakban kell megadnunk hoz elsőként kattintsunk rá a ikonra, majd a megjelenő ablakba írjuk be az egyes mezőkre vonatkozó feltételeinket. A feltételek megadása során alkalmazhatjuk a korábban megismert függvényeket, állandókat valamint a különféle operátorokat (5.2.2.2.5.2.). Ha egy adott értékkel kell csak megegyeznie a mezőnek, és az érték ismereteink szerint valamely rekordban szerepel, akkor egyszerűen válasszuk ki a legördülő listából. És mi a helyzet akkor, ha több feltételt is meg akarunk adni? Hogy szabályozható a feltételek közötti kapcsolat? Az egy lap egy sorába írt feltételek között „És” logikai kapcsolat fog fennállni. Ha „Vagy” kapcsolatot is akarunk alkalmazni, akkor a másik feltételt (feltételeket) egy másik lapra (lapokra) kell megadni. Ehhez kattintsunk a feltételek megadására szolgáló ablak alján található „Vagy” feliratú fülre, majd vigyük be a feltételt (feltételeket). Miután megadtuk az összes feltételt, kapcsoljuk be a szűrést a csolni is ezzel kell, de ahhoz még egyszer rá kell kattintani).
ikonra történő kattintással (kikap-
Mit tegyünk, ha egy mező többféle értékéhez tartozó adatokat kell kigyűjtenünk? Szűrés helyett alkalmazzunk kereszttáblás lekérdezést, mely eszközt a későbbiekben részletesen megbeszéljük (6.1.6.).
13. Feladat: Szűrjük ki a „Szállító törzs” adattáblából azokat a rekordokat, amelyekben a „Város” mező tartalma nem „Budapest”, és adtunk meg fax és telefonszámot is! Megoldás: Mivel a feltételek több mezőre vonatkoznak, indítsuk el az űrlappal történő szűrést a juk meg a következő feltételeket: Mező Feltétel ¾ Város <>"Budapest" ¾ Telefonszám <>"" ¾ Fax szám <>""
66
ikonnal. Ad-
Access XP alapokon Hajtsuk végre a szűrést a ikonnal. Az összes elem újbóli megjelenítését is a ikonnal kérhetjük. 14. Feladat: Az előzőek mellé szűrjük még ki azokat is, akiknek a „Város” mező tartalma ugyan „Budapest”, de vagy nincs telefonja és fax készüléke, vagy csak nem ismerjük a számot (egyiket sem)! Megoldás: ikonMivel a feltételek most is több mezőre vonatkoznak, indítsuk el az űrlappal történő szűrést a nal. Most is adjuk meg a feltételeket, de most a kritériumok egyik fele a „Vagy” lapra kell, hogy kerüljön. A „Keresendő” lap feltételei: Mező Feltétel ¾ Város <>"Budapest" ¾ Telefonszám <>"" ¾ Fax szám <>"" A „Vagy” lap feltételei: Mező Feltétel ¾ Város ="Budapest" ¾ Telefonszám ="" OR IS NULL ¾ Fax szám ="" OR IS NULL Most is hajtsuk végre a szűrést a hetjük.
ikonnal. Az összes elem újbóli megjelenítését a
ikonnal kér-
5.6 Adattábla szerkezetének módosítása Ehhez az adattáblát tervező nézetben kell megnyitnunk. Szerencsére túl sok megbeszélnivalónk nincs, hiszen az adattáblák tervezésekor szinte minden szóba került. Amire felhívnám a figyelmet az inkább csak néhány speciális veszély.
5.6.1 Mezők sorrendjének megváltoztatása Ez a művelet még feltöltött adattábla esetén sem jelent veszélyt. Végrehajtása úgy lehetséges, hogy a kérdéses mezőt tervező nézetben kijelöljük, majd az egészet a kívánt helyre húzzuk. Mind a kijelölés, mind a húzás a mező sora előtti kis négyzetnél lehetséges. A mezők sorrendjét azonban adatlap nézetben is meg lehet változtatni úgy, hogy a címűknél fogva a megfelelő sorrendbe húzzuk őket.
5.6.2 Mező átnevezése Többnyire ez sem jelent problémát, hiszen a mezőneveket nem sok helyen alkalmazhatjuk hivatkozásainkban (az eddig tanult lehetőségek közül csak a „Tábla tulajdonságokban”). Biztonság kedvéért azért a „Tábla tulajdonságai” ablakot nézzük meg (5.2.4.), és ha szerepel valamelyik mezőben a módosításra került név, itt is módosítsuk. Ha azonban már vannak lekérdezéseink, jelentéseink és űrlapjaink is, ebből sok problémánk adódhat.
5.6.3 Mező törlése Ha az adattábla már tartalmaz rekordokat, akkor ez a művelet természetesen adatvesztéssel jár: minden rekordból törlődik a kérdéses mező tartalma. Kapcsolatokban kapcsolómezőként szereplő mező nem törölhető, csak ha előbb a kapcsolatot töröljük (5.3.2.2.).
5.6.4 Mező típusának megváltoztatása Lehetőség szerint a mezők típusát utólag (miután már feltöltöttük az adattáblát rekordokkal) ne változtassuk meg. Ez esetben ugyanis különféle korlátokba ütközhetünk, illetve könnyen elveszíthetjük a kérdéses mezőben tárolt adatokat. Erről minden esetben hibaüzenetet is kapunk. A következőkben, egy táblázatban összefoglalom a típusváltással kapcsolatosan esetlegesen fellépő problémákat:
67
ECDL Adatbázis-kezelés modul Típus Bármi
Váltás utáni típus Számláló Feljegyzés Szám
Szöveg Pénznem
Feljegyzés
Szám
Dátum/Idő Igen/Nem Szöveg Szám Pénznem Dátum/Idő Igen/Nem Szöveg és Feljegyzés Szám más hosszúsággal (altípussal) Pénznem Dátum/Idő Igen/Nem Szöveg és Feljegyzés
Pénznem
Szám Dátum/Idő Igen/Nem Szöveg és Feljegyzés
Dátum/Idő Szám Pénznem Igen/Nem Szöveg és Feljegyzés Számláló
Igen/Nem OLE
Szám és Pénznem Dátum/Idő Igen/Nem Szöveg és Feljegyzés Szám és Pénznem Dátum/Idő Bármilyen adattípus
Veszélye, illetve korlátozása Nem lehetséges. A mező indexei törlődnek. A mező csak szám, tizedesjel, ezres tagolás és előjel karaktert tartalmazhat. Bármilyen egyéb karakter előfordulása esetén az egész adat törlődik. A mező csak szám, tizedesjel, ezres tagolás és előjel karaktert, valamint a „Területi beállításokban” megadott pénznemet tartalmazhat. Bármilyen egyéb karakter előfordulása esetén az egész adat törlődik. Csak megengedett dátum/idő formátum esetén maradnak meg az adatok. „Igen”/„Nem”, „Ki”/„Be”, és „Igaz”/”Hamis” értékek konvertálódnak. A Szöveg mező hosszánál hosszabb adatok csonkolódnak. lásd: Szöveg Æ Szám lásd: Szöveg Æ Pénznem lásd: Szöveg Æ Dátum/Idő lásd: Szöveg Æ Igen/Nem Ha a Szöveg mező hossza kisebb, mint a számé, az adat csonkolódhat. Az új altípus által meghatározott kritériumok szabják meg a konverzió hibáját. Nincs korlátozás, de az értékek pontossága csökkenhet. - 657 434 és 2 958 465,999 988 43 közötti számokat dátummá alakítja (az Exceltől eltérően itt 1-nek 1899.12.31. felel meg). Üres mező és 0 „Nem”, minden más szám „Igen”. Korlátozás nincs, de ha a Szöveg mező hossza kisebb, mint a számé, az adat csonkolódhat. A Szám mező altípusa által meghatározott kritériumok szabják meg a konverzió hibáját. - 657 434 és 2 958 465,999 988 43 Ft közötti számokat dátummá alakítja (az Exceltől eltérően itt 1-nek 1899.12.31. felel meg). Minden érték „Igen”, kivétel a 0,00 Ft, mert az „Nem”. Ha a mező üres, az is „Nem”. Korlátozás nincs. A kapott szöveg megfelel az „Általános dátum” formátumnak (például: 2000.03.10. 17:15:00). Ha azonban a Szöveg mező hossza kisebb, mint a számé, az adat csonkolódhat. Nincs korlátozás, de ha a szám altípusa hosszú egész, akkor csak a dátumok maradnak meg, az időpontok elvesznek, hiszen az lenne a tizedes (pontosabban ez esetben egészre kerekíti az Access a számokat). Az Exceltől eltérően itt 1-nek 1899.12.31. felel meg. Nincs korlátozás, hiszen a szám típus tizedeseket is képes tárolni. Minden „Igen”, kivéve 00:00-12:00 közötti időket, mert az „Nem”. Ha a mező üres, az is „Nem”. Korlátozás nincs. Azonban ha a Szöveg mező hossza kisebb, mint a Számláló típusú mezőben lévő számé, az adat csonkolódhat. Nincs korlátozás. A Számláló mező értékének 2 958 465-nél kisebbnek kell lennie. Minden „Igen” Az adatokat mindig csak „Igen” és „Nem” szövegre konvertálja. „Nem” Æ 0 és „Igen” Æ -1 (pénznem esetén Ft) „Nem” Æ 12:00:00 és „Igen” Æ 1899.12.29. Nem lehetséges 38. Táblázat: Típusváltás szabályai
68
Access XP alapokon
6. Lekérdezések A lekérdezésekkel igazán sokoldalú eszköz birtokába jutunk, ami már talán az adatbázis különféle elemeinek bemutatásakor is kiderülhetett (3.). A következőkben tekintsük át a lekérdezések szerepét, alkalmazásuk lehetőségeit, illetve a létrehozásuk és a futtatásuk közben esetleg fellépő problémákat és azok elhárításának módszereit. Egy lekérdezés létrehozásához az „Adatbázis ablak” „Lekérdezések” objektumaihoz kell majd mennünk, majd megnyomni az „Új” nyomógombot. A 37. Ábra: Új lekérdezés létrehozása megjelenő párbeszédablakból kiválaszthatjuk, hogy milyen lekérdezést szeretnénk létrehozni. Mint látható, a lekérdezéseknek több fajtája is létezik, hiszen öt lehetőség közül is választhatunk: 1. Tervező nézet; 2. Egyszerű lekérdezés varázsló; 3. Kereszttáblás lekérdezés varázsló; 4. Azonosakat kereső lekérdezés varázsló; 5. Nem egyezőket kereső lekérdezés varázsló. Az első két lehetőséget választva az eredmény ugyanaz lesz: egy „Egyszerű lekérdezés”. A további három lehetőség mindegyike egy-egy varázsló, s mint ilyeneket, elég egyszerűen alkalmazhatjuk majd őket. Ennek ellenére azért róluk is fogunk beszélni.
6.1 Egyszerű lekérdezések Az „Egyszerű lekérdezés” csak a nevében egyszerű, ugyanis tulajdonképpen egy nagyon is sok célra felhasználható eszköz. Az „Egyszerű lekérdezés” név egy gyűjtőfogalom, és valójában öt különféle változata is létezik. Az egyes altípusok pontos szerepét hamarosan részletesen tárgyaljuk. Mint azt az imént tisztáztuk, egy „Egyszerű lekérdezést” két különféle módszerrel is létrehozhatunk: ¾ Tervező nézetben; ¾ és Egyszerű lekérdezés varázslóval. Véleményem szerint célszerűbb a „Tervező nézetet” alkalmazni, ugyanis a lekérdezés feltételeinek megadásakor 38. Ábra: Itt választhatjuk ki a előbb-utóbb úgyis oda jutunk. Tehát válasszuk ki a „Tervező lekérdezésben szereplő táblákat nézetet”, majd kattintsunk az „OK” gombra. A kapott újabb ablakban kattintsunk rá sorban az összes olyan adattábla nevére, majd a „Hozzáadás” gombra, melyeknek mezői szerepet kapnak a lekérdezésben. Egy-egy mező szerepe a következők valamelyike lehet: ¾ feltételt akarunk megadni rá; ¾ kíváncsiak vagyunk az értékére. A táblák között korábban létrehozott kapcsolatok természetesen változatlanul érvényben lesznek (5.3.2.2.). Ha ezzel végeztünk, kattintsunk a „Bezárás” gombra. Hogy adhatunk utólag táblát a lekérdezéshez? Akkor sincs semmi probléma, ha véletlenül korán kattintottunk a „Bezárás” gombra. Kattintsunk a ikonra, és folytassuk az eljárást. De van egy másik lehetőségünk is. A ikonra kattintunk, és az adattábla nevét belehúzzuk a lekérdezés ablakba. Hogy törölhetünk táblát a lekérdezésből? Kattintsunk rá a lekérdezésből törlendő adattáblára a lekérdezés tervező ablakának felső részén, majd nyomjuk meg a Delete billentyűt. Ezzel természetesen csak a „lekérdezés szereplői” közül töröljük az adattáblát.
A tervező nézetben bármikor áttérhetünk majd az egyszerű lekérdezés egyik altípusáról a másikra. A következő lépések jelentős része attól függetlenül ugyanaz lesz, hogy az „Egyszerű lekérdezéseknek” mely
69
ECDL Adatbázis-kezelés modul altípusát kívánjuk alkalmazni. Az egyes altípusok kiválasztása a „Lekérdezés” menüből, vagy a ikonnal lehetséges. A lehetőségeink a következők: ¾ Választó lekérdezés ¾ Kereszttáblás lekérdezés ¾ Táblakészítő lekérdezés… ¾ Frissítő lekérdezés ¾ Hozzáfűző lekérdezés… ¾ Törlő lekérdezés A megadandó paramétereket és alkalmazható eszközöket részletesen a „Választó lekérdezésben” tárgyaljuk meg. A többi lekérdezésnél csak a különbségekre fogom a figyelmet felhívni.
6.1.1 Választó lekérdezés Amennyiben egy „Választó lekérdezést” tervező nézetben létrehozunk, munkánk eredményét csak akkor fogjuk látni, ha majd lefuttatjuk a lekérdezést, vagy áttérünk „Adatlap nézetre”. E lehetőségeket külön pontban tárgyaljuk meg. Nem mintha magunktól nem jönnénk rá, hiszen az „Adatlap nézetre” történő átváltás módszere pontosan megegyezik az adattábláknál tanultakkal. Azért beszélünk mégis róla, mert néhány olyan eszközt is megtárgyalunk majd, melyekről az adattábláknál nem esett szó (noha ott is élnek).
39. Ábra: A lekérdezés összeállítására szolgáló ablak (az adattáblák már felvételre kerültek, és kapcsolatok is látszanak) Maga a „Választó lekérdezés” majd nagyon hasonló eredményt produkál, mint az „Űrlappal” történő szűrés (5.5.3.), ugyanakkor jelentős különbségek is vannak a két eszköz között. Az eltéréseket az alábbi táblázatban foglalom össze, mely a szűrést hasonlítja össze egy választó lekérdezéssel. Szűrés űrlappal Választó lekérdezés Csak egyetlen tábla mezői szerepelhetnek a szűrés Több, egymással kapcsolatban lévő tábla is szerepeleredményében. het a lekérdezésben A lekérdezésben csak azok a mezők lesznek láthatóAz adattábla minden mezője meg fog jelenni. ak, melyek megjelenítését kérjük. Csak egyetlen tábla mezőire adhatunk meg feltéte- Bármely adattábla mezőire megadhatunk feltételt leket. (feltéve, hogy felvettük a lekérdezés tervezőrácsába). Olyan adatot is megjeleníthetünk, mely az eredeti Csak olyan adat jeleníthető meg, mely az adattábadattáblákban nem szerepel, de a mezőkben tárolt lában is szerepel adatokból kiszámítható. A tárolt adatokból különféle statisztikai kigyűjtéseket Összesítő számítások nem végezhetőek. is végeztethetünk. 39. Táblázat: Szűrés és választó lekérdezés összehasonlítása
Egy-egy lekérdezés összeállítása során addig tehát már eljutottunk, hogy felvettük azokat az adattáblákat, melyeknek szerepük lesz a lekérdezésben. Következő lépésben azokat a mezőket kell megadnunk, melyeket a lekérdezés során akár megjeleníteni akarunk, akár csak feltételt kívánunk rájuk megadni. De ezzel még nem feltétlenül leszünk készen, hiszen sok extra lehetőséget is kínál egy-egy választó lekérdezés. Lássuk a lehetőségeket. Mi is a választó lekérdezés? A lekérdezés eredményeképpen létrejött adathalmaz fizikailag a háttértárolón nem létezik. Ez egy pillanatfelvétel, amely a ténylegesen is létező adatokat más csoportosításban, esetleg speciális információkat hordozva mutatja meg.
70
Access XP alapokon 6.1.1.1 Választó lekérdezés tervezése tervező nézetben Még egyszer le szeretném szögezni, hogy egy „Választó lekérdezéssel” a ténylegesen letárolt adatok ikonnal, ”Tervenem fognak megváltozni, csak másként fogjuk őket látni. Ezért ha már le is futtattuk a ző nézetbe” történő átváltással utólag bármikor megváltoztathatjuk a lekérdezést. 6.1.1.1.1 Mezők felvétele a lekérdezés tervezőrácsába A felvétel módszerének megbeszélése előtt azt tisztázzuk, hogy milyen mezőket kell felvennünk a tervezőrácsba: ¾ azokat, amelyeket meg szeretnénk jeleníteni; ¾ és azokat is, melyeket esetleg ugyan nem kívánunk megjeleníteni, de a lekérdezésben valamilyen feltételt kívánunk rá megadni. Mezők törlése, áthelyezése A törléshez jelöljük ki a tervezőrácsban a kérdéses mező oszlopát, majd nyomjuk meg a Delete billentyűt. A kijelölés az Excelhez, vagy a Word táblázatokhoz hasonló módszerrel lehetséges. Egy mező áthelyezéséhez a kijelölés után a mezőt fogjuk meg az oszlopa tetejénél, majd húzzuk a kívánt helyre.
6.1.1.1.1.1 Mezők egyenkénti felvétele a megjelenítendő mezők közé Ha egy mezőt fel kívánunk venni a tervezőrácsba, akkor kattintsunk rá duplát a tervezőrács tetején az adattáblában. Ez még nem jelenti azt, hogy a mező feltétlenül meg is fog jelenni! A megjelenítés kérésének, illetve nem kérésének módszere rögtön ismertetésre kerül, bár szerintem magunktól is rájövünk. 6.1.1.1.1.2 Az összes mező felvétele a megjelenítendő mezők közé Amennyiben egy adattábla minden mezőjét szeretnénk megjeleníteni, kattintsunk a tervezőrács felső részén az adattábla első sorában lévő „*” szimbólumra. Ennek hatására az adattábla összes mezője megjelenik majd a lekérdezésben. Az így megadott mezőkre viszont nem lehet feltételt megadni! 6.1.1.1.1.3 Számított értékek felvétele a megjelenítendő adatok közé Ha egy számított értéket szeretnénk megjeleníteni a lekérdezésben, akkor a tervezőrácsban kattintsunk rá a következő üres oszlopban a „Mező” sorára az egér jobb gombjával, majd a megjelenő helyi menüből válasszuk ki a „Szerkesztés…” opciót. Ezzel egyenértékű a tervezőrácsba történő bal gombbal, majd a ikonra való kattintás. A megjelenő ablakban a mezőkre vonatkozó „Érvényességi szabály” témakörnél (5.2.2.2.5.) már megtárgyalt ablakhoz hasonló eszközzel állíthatjuk össze a kiszámítandó adatot. Azért némi különbség is van: ¾ a lekérdezés ablakba felvett adattáblák mezőire is hivatkozhatunk; 40. Ábra: Számított érték megadása a ¾ illetve néhány úgynevezett „Általános kifejezést” is „Kifejezésszerkesztővel” szerepeltethetünk. Az adattáblákra és mezőikre az Accessben úgy kell hivatkozni, hogy mind az adattábla, mind a mező nevét szögletes zárójelek közé rakjuk. Ezen kívül az adattábla neve mögé még egy felkiáltó jelet is el kell helyeznünk. Ez a módszer egy kicsit emlékeztet az Excelben az egyes munkalapokra történő hivatkozásra, és egyúttal az is érthető, hogy e karaktereket („[”, „]” és „!”) miért nem alkalmazhatjuk a mezőnevekben. A mezőhivatkozások általános alakja tehát: [tábla neve!] [mező neve] Hogyan lehet a számított érték fejlécét megadni? Mi is a probléma? Csak annyi, hogy amennyiben lefuttatjuk a lekérdezést, akkor egy számított kifejezés fejlécében a nem túl sokatmondó „Kif1”, „Kif2”, stb. nevet fogjuk látni. Ezen úgy segíthetünk, hogy tervezőrácsban a számított kifejezésre állunk, majd „Nézet” menü „Tulajdonságok…” opcióját választjuk. Ezzel egyenértékű az, ha eszköztáron rákattintunk a ikonra. A megjelenő ablak némileg ismerős kell, hogy legyen, hiszen az adattáblák tervező nézetében pontosan ezek a mezőtulajdonságok voltak
71
ECDL Adatbázis-kezelés modul beállíthatóak. A probléma megoldásához a „Cím mezőtulajdonság” értékét kell megadni. A következőkben erről lesz szó egy kicsit részletesebben.
6.1.1.1.2 Mezőtulajdonságok A figyelmes olvasó most bizonyára felkapja a fejét, hiszen a „Mezőtulajdonságokról” korábban már esett szó. Miért lehet őket itt újra megadni? Azért, mert egy lekérdezést korántsem csak lekérdezésre használhatunk. Egy választó lekérdezéssel az adattáblák tartalmát pontosan ugyanúgy lehet módosítani, mint az adattáblák „Adatlap” nézetében. A „Mezőtulajdonságokban” beállítható paraméterek is megegyeznek. A különbség csak annyi, hogy itt kevesebb a lehetőségünk. Amennyiben a lekérdezéseknél nem adunk meg semmilyen mezőtulajdonságot, akkor az adattábla tervezésekor megadott tulajdonságok lesznek érvényben. Amennyiben viszont valamely „Mezőtulajdonságot” megadjuk, az csak a lekérdezésre lesz hatással, az adattáblák „Tábla nézetére” nem! Így az eredeti adattábláktól kicsit eltérően viselkedő lekérdezéseket is létrehozhatunk. A lekérdezésekben a „Mezőtulajdonságok” megadásához a következőket kell tennünk: 1. a tervezőrácsban a kérdéses mező oszlopába kell állunk; 2. indítsuk el „Nézet” menü „Tulajdonságok…” opcióját, vagy az eszköztáron rákattintunk a ikonra. Megadható mezőtulajdonságok Leírás (5.2.2.); Formátum (5.2.2.2.1.); Tizedes helyek; Beviteli maszk (5.2.2.2.2.); Cím (5.2.2.2.3.).
Nem megadható mezőtulajdonságok Alapértelmezett érték (5.2.2.2.4.); Érvényességi szabály (5.2.2.2.5.); Érvényesítési szöveg (5.2.2.2.6.); Kötelező (5.2.2.2.7.); Nulla hosszúság engedélyezése (5.2.2.2.8.); Indexelt (5.2.2.2.9.).
40. Táblázat: Tábla és lekérdezés mezőtulajdonságainak összehasonlítása Miért nem kell megadni a lekérdezések mezőtulajdonságait? Az Access ilyen szempontból úgy viselkedik, mint egy objektumorientált alkalmazás, így az azokra vonatkozó alapelvek rá is érvényesek: ¾ mivel a tábla objektumból származtatható a lekérdezés, így a mezőtulajdonságai öröklődnek.
6.1.1.1.3 A mező megjelenítésének kérése/nem kérése Mint arra már utaltam, attól, hogy egy mezőt a lekérdezés tervezőrácsába felveszünk, még nem kell feltétlenül meg is jeleníteni. Ha akarjuk, kérhetjük, ha akarjuk, viszont letilthatjuk a mező listázását. Ez a kérdéses mező „Megjelenítés” jelölőnégyzetének állapotával lesz szinkronban. Mikor célszerű nem kérni egy mező megjelenítését? Akkor, ha a * jelre kattintva veszünk fel minden mezőt a lekérdezés tervezőrácsába. Ilyenkor ugyanis egyegy mezőt nevével is hozzá kell adni a tervezőrácshoz, mert feltételt kívánunk megadni rá. De, mert nem szeretnénk kétszer látni a listában, a megjelenítését letiltjuk.
Itt kérhető a megjelenés
41. Ábra: Megjelenjen?
6.1.1.1.4 A táblanevek megjelenítésének kérése/nem kérése Alaphelyzetben, a lekérdezés tervezőrácsában a mező neve alatt ott látható annak az adattáblának a neve is, ahonnét a kérdéses mező származik. Ez többnyire hasznos is, hiszen előfordulhatnak azonos nevű, de különböző adattáblából vett mezők is. Amennyiben valamilyen oknál fogva nem jelennek meg ezek a nevek a tervezőrácsunkban, kapcsoljuk be ezt a szolgáltatást (ha feleslegesnek, vagy zavarónak érezzük, ugyanúgy lehet kikapcsolni is). Nyissuk meg a „Nézet” menüt, majd kattintsunk rá a „Táblanevek” opcióra, vagy indítsuk el a tervezőrács helyi menüjét, és válasszuk ugyancsak a „Táblanevek” menüpontot.
72
Access XP alapokon 6.1.1.1.5 Az adatok sorrendjének meghatározása A lekérdezés lefuttatása után a kapott adatok valószínűsíthetően valamilyen véletlenszerű sorrendben fognak majd szerepelni. Nyílván valóan szerencsésebb lenne, ha az adatok adott szempont (szempontok) szerint rendezettek lennének. Ennek semmi akadálya, hiszen pillanatok alatt beállítható a sorba rendezés. A tervezőrácsban csak be kell állítani Itt lehet megadni a kiszemelt kulcsmezőnél a rendezés irányát (Csökkenő/Növekvő). Ha a sorrendet több kulcsot is meg akarunk adni, akkor az első kulcstól jobbra kell a 42. Ábra: Az adatok sorrendjétervezőrácsban lennie a második kulcsnak, majd attól szintén jobbra a nek megadása további kulcsoknak. A rendezést végrehajthatjuk a lekérdezés lefuttatása után is (6.1.1.2.). Ez utóbbi módszer hátránya, hogy így csak egykulcsos lehet a rendezés. Ilyenkor az eljárás az adattábláknál ismertetett módszer szerinti: 1. a kulcs mezőbe kell állnunk; 2. majd rá kell kattintanunk a megfelelő ikonra ¾ a ikonra, ha növekvő; ¾ a ikonra, ha csökkenő sorrendbe akarjuk rendezni. 6.1.1.1.6 Feltételek megadása Egy-egy feltételt a korábban már tanult operátorokból (5.2.2.2.5.2.), írott értékekből és állandókból (5.2.2.2.5.1.), függvényekből (5.2.2.2.5.3.) valamint Ez már „Vagy” Ezek között a mezőhivatkozásokból (6.1.1.1.1.3.) állíthatunk össze. kapcsolatban áll feltételek között Bonyolultabb kifejezések esetében használjuk a „Kia többi feltétellel „És” a kapcsolat fejezésszerkesztőt”, amit a ikonnal indíthatunk el, miután beleálltunk a feltétel cellájába. 43. Ábra: Lekérdezés feltételének megadása És mi a helyzet a logikai kapcsolatokkal? Több feltétel megadása esetén a feltételeket az Excel program irányított szűrőjéhez hasonlóan lehet „És”, illetve „Vagy” kapcsolatokkal kombinálni. Ennek értelmében, ha több feltételt adunk meg, akkor: ¾ az egy sorba írt feltételek között a kapcsolat „és”; ¾ a külön sorba írtak között pedig „vagy” a kapcsolat. A feltételek megadását az Access XP sok esetben megkönnyíti, mert bizonyos korrekciókat a mezők típusának megfelelően automatikusan elvégez. A következőkben lássuk ezeket a munkánkat megkönnyítő automatizmusokat: ¾ automatikus szövegkezelés Amennyiben valamilyen karaktersorozattal szeretnénk összehasonlítani egy szöveg típusú mezőt, akkor a feltételként a lekérdezés tervezőrácsba beírandó karaktersorozatot nem kell idézőjelbe raknunk, mert ezt helyettünk automatikusan megteszi az Access. ¾ like operátor kezelése Ha egy karaktersorozatban a * helyettesítő karaktert szerepeltetünk, akkor a mezőre automatikusan a like operátort alkalmazza a program. ¾ dátumok kezelése ha egy dátum típusú mezőre dátum feltételt kívánunk megadni a lekérdezés tervezőrácsba, akkor az XP verzióban már nem kell #éé.hh.nn# formátumban megadni, mert a # karaktereket a program automatikusan beszúrja a szükséges helyekre. 6.1.1.1.7 Adatok csoportosítása és összesítése Az adatokat néha csoportosítani is szeretnénk, például azért, mert az egyes csoportoknak valamilyen összesített adatára vagyunk kíváncsiak (pl., hogy egy szállítótól összesen hány árucikk szerepel, vagy egy terméket milyen átlagos áron tudtunk beszerezni, stb.).
Itt választhatunk összesítő függvényt
44. Ábra: Csoportosítás kérése (összesítő függvény még nincs megadva)
73
ECDL Adatbázis-kezelés modul A csoportosítási szempontot adó mezőt természetesen szerepeltetni kell a tervezőrácsban, mégpedig lehetőleg a bal szélső oszlopában. Ha több mező szerint is csoportosítani akarjuk az adatokat, akkor a legfőbb csoportosítási szempontot adó mező kerüljön bal szélre, és tőle jobbra helyezkedjenek el az alacsonyabb szintű csoportok kulcsmezői. Végül jöjjön az a mező, ha többel is szeretnénk számolni, akkor persze mezők, amelyet összesíteni szeretnénk. Befejezésül természetesen meg kell adnunk még, hogy milyen függvényt kívánunk alkalmazni. De lássuk a gyakorlati lépéseket. 1. Ha a munkához szükséges összes mezőt felvettük a tervezőrácsba, elsőként közöljük az Accessel, hogy a lekérdezésünkben összesítést szeretnénk majd kérni. Ehhez kattintsunk rá a ikonra, vagy válaszszuk ki a „Nézet” menü „Összesítés” pontját. Annyi változást tapasztalhatunk, hogy a tervezőrácsban egy plusz sor jelenik meg, melynek tartalma minden mező esetében „Group by”. 2. Ezt követően a ténylegesen összesítendő mező „Group by” feliratába kattintsunk bele, majd a megjelenő legördülő listából válasszuk ki az alkalmazandó függvényt. A lehetőségek a következők: ¾ Sum összegzi az adott mező tartalmának értékét; ¾ Avg az adott mező tartalmának átlaga; ¾ Min a legkisebb érték az adott mezőben; ¾ Max a legnagyobb érték az adott mezőben; ¾ Count az azonos tartalmú mezők száma; ¾ StDev a szórás értéke adott mezőben; ¾ Var a szórás négyzete adott mezőben; ¾ First a csoporton belüli első rekordban lévő mező értéke (nem minimum!); ¾ Last a csoporton belüli utolsó rekordban lévő mező értéke; Mindezek az adatok természetesen csoportonként jelennek meg. Ha a fenti és a gépünkön megnyitott listát összehasonlítjuk, akkor észrevehetjük, hogy két lehetőséggel több szerepel a gépünkön: ¾ Where Akkor kell alkalmaznunk, ha a lekérdezésben nem óhajtjuk összesíteni, és csoportosítási feltételként sem kívánjuk szerepeltetni a mezőt, de valamilyen okból kifolyólag törölni sem akarjuk a tervezőrácsból (mondjuk feltételt akarunk rá megadni). ¾ Expression Akkor szükséges a használata, ha olyan kifejezést akarunk megadni, mely összesítő függvényt is tartalmaz. Ismerősnek tűnik ez a téma? Nem véletlen, hiszen szinte pontosan ugyanezeket a lehetőségeket nyújtja az Excel részösszegek szolgáltatása. Ott azonban előbb sorba is kellett rendezni az adatokat, majd megadni a részösszeg képzésének kulcsát, illetve az összegzés függvényét. Az Access esetén a sorba rendezés elmaradhat.
15. Feladat: Állítsunk össze egy olyan lekérdezést, melyben kigyűjtésre kerülnek a pillanatnyi készletek. A lekérdezést mentsük el „Cikkszámonkénti készlet” néven. Megoldás: Az „Adatbázis ablak” objektumai közül válasszuk a „Lekérdezéseket”, majd kattintsunk az „Új” gombra. Válasszuk ki a „Tervező nézetet”, és adjuk meg a használni kívánt táblákat. Mivel a mennyiségeket a „Tranzakciók tételei” táblában tároljuk, ezt a táblát kell a lekérdezésünk alapjául választani. Ugyanakkor szükségünk lesz a „Termék törzs” táblára is, hiszen a termék megnevezése, és minden egyéb adata csak ott kerül letárolásra. De ha jobban belegondolunk, szükségünk lesz még a „Mértékegység törzs” táblára is. A táblák megadásához kattintsunk a „Tábla hozzáadása” ablakban a „Tranzakciók tételei” elemre, majd a „Hozzáadás”, a „Termék törzs” és a „Hozzáadás”, „Mértékegység törzs” és a „Hozzáadás”, végül a „Bezárás” gombra. Vegyük sorban fel a tervezőrácsba a megjelenítendő mezőket a nevükre történő dupla kattintással (a sorrendre is ügyeljünk): Tábla Mező ¾ Tranzakciók tételei → Termék kód ¾ Termék törzs → Termék név ¾ Tranzakciók tételei → Mennyiség ¾ Mértékegység törzs → Mértékegység név
74
Access XP alapokon Adjuk meg az összesítés szempontját és az összesítő függvényt. Ehhez kattintsunk rá a ikonra, majd a tervezőrács „Összesítés” sorában a „Mennyiség” mező legördülő listájából válasszuk ki a „Sum” függvényt. A mentést „Pillanatnyi készlet” néven, a szokásos módon hajtsuk végre.
6.1.1.2 Választó lekérdezések futtatása („Adatlap nézete”) Sok újat nem tudok mondani, hiszen az adattábláknál már tanultuk: ¾ vagy kattintsunk a ikonra; ¾ vagy válasszuk ki a „Nézet” menü „Adatlap nézet” pontját. ikonnal, vagy a De akkor is az „Adatlap nézethez” jutunk, ha a lekérdezést lefuttatjuk. Ez utóbbit a „Lekérdezés” menü „Futtatás” pontjával tehetjük meg. Az adatlap nézetben történő adatbevitel viszont a tényleges adattáblákat fogja megváltoztatni! Amennyiben pedig egy-egy új rekordot viszünk be, annak eredményeként az adattáblában (több táblából összeállított lekérdezés alkalmazásakor esetleg több adattáblában is) új rekordot fogunk kapni. Ha nem adtunk meg új „Mezőtulajdonságokat”, akkor az adatbevitel során az adattábla tervezésekor bevitt szabályok lesznek most is érvényben. Milyen probléma léphet fel lekérdezésben történő adatbevitelkor? Többféle is, de a leggyakoribb a következő: Egy lekérdezésben nem szerepeltetjük valamelyik adattábla összes mezőjét, és új rekordot viszünk be. Ekkor amennyiben az adattábla „Mezőtulajdonságai” közül a „Kötelező” (5.2.2.2.7.) értékét „Igenre” állítjuk, és az nem szerepel a lekérdezésben, biztosan hibaüzenetet kapunk. Az Access ugyanis egy mezőbe vár adatot, de azt mi nem tudjuk megadni.
16. Feladat: Futtassuk le az imént készített lekérdezést, majd lépjünk ki a lekérdezésből. Megoldás: ikonra. Kattintsunk rá a 17. Feladat: Gyűjtsük össze a partnerenkénti forgalmat (értékben és darabban egyaránt). A lekérdezést mentsük „Partnerenkénti forgalom” néven. Futtassuk is le a lekérdezést. Megoldás: Hozzunk létre egy új lekérdezést, melybe a következő mezőket kell felvenni (a sorrend nagyon fontos): Tábla Mező ¾ Tranzakciók tételei → Szállító kód ¾ Tranzakciók tételei → Mennyiség A következő üres oszlopba állva indítsuk el a ikonnal a „Kifejezésszerkesztőt”, majd adjuk meg a következő képletet: ¾ [Tranzakciók tételei]![Mennyiség] * [Tranzakciók tételei]![Nettó egységár] Ehhez a ikonra, majd a „Tranzakciók tételei” mappára, végül a „Mennyiség” mezőnévre kell duplát kattintani. Gépeljük be a szorzás műveleti jelét, majd adjuk meg a másik szorzótényezőt is a „Nettó egységár” mezőnévre történő dupla kattintással. A képlet bevitelének befejezéseként kattintsunk az „OK” gombra. Folytassuk a mezők felvételét: Tábla Mező ¾ Szállító törzs → Szállító név ¾ Szállító törzs → Irányítószám ¾ Szállító törzs → Város ¾ Szállító törzs → Utca és házszám ikonra, majd a tervezőrács „Összesítés” sorában a 2. és a 3. oszlop legördüMost is kattintsunk rá a lő listájából egyaránt válasszuk ki a „Sum” függvényt. A mentést a szokásos módon hajtsuk végre. A futtatáshoz kattintsunk rá a ikonra.
75
ECDL Adatbázis-kezelés modul 18. Feladat: Gyűjtsük össze a tranzakciónkénti forgalmat is (de csak értékben). A lekérdezést mentsük „Tranzakciónkénti forgalom” néven. Futtassuk is le a lekérdezést. Megoldás: Most is készítsünk egy új lekérdezést, adjuk hozzá a „Tranzakciók tételei” táblát, majd az első oszlopába adjuk meg a következő kifejezést: ¾ Left([Tranzakciók tételei]![Bizonylatszám];1) A következő oszlopba állva indítsuk el a ikonnal a „Kifejezésszerkesztőt”, és adjuk meg az előző feladatban is szereplő képletet: ¾ [Tranzakciók tételei]![Mennyiség] * [Tranzakciók tételei]![Nettó egységár] ikonra, majd a tervezőrács „Összesítés” sorában a 2. oszlop legördülő Befejezésül kattintsunk rá a listájából most is a „Sum” függvényt válasszuk ki. A mentésről se feledkezzünk el. A futtatást a szokásos módon hajtsuk végre.
6.1.1.3 További lehetőségek „Adatlap nézetében” A most tárgyalásra kerülő lehetőségekkel a lekérdezés egyes oszlopainak globális viselkedését tudjuk szabályozni. Ezek a lehetőségek ugyan elérhetőek az adattáblák „Tábla nézetében” is, de ott nem tárgyaltuk őket (ott talán kevésbé lesz rájuk szükség). Ne felejtsük el, hogy az egyes konkrét adatok megjelenési formáját a „Mezőtulajdonságok” közül a „Formátum” (5.2.2.2.1.), az oszlop feliratát a „Cím” (5.2.2.2.3.) fogja majd meghatározni. Amennyiben a lekérdezésben nem állítunk be mást, akkor még a tábla „Tervező nézetében” (5.2.2.) megadott „Formátum” és „Cím” lesz a lekérdezésben is érvényes. 6.1.1.3.1 Oszlop elrejtése Indítsuk el a manipulálni kívánt oszlop fejlécének (a mező címe) helyi menüjét, majd válasszuk ki az „Oszlop elrejtése” opciót. Ez nem lesz egyenértékű a megjelenítés nem kérésével. Ha újra meg szeretnénk jeleníteni az oszlopot, akkor a „Formátum” menü „Oszlopok felfedése…” opcióját kell választanunk (megint csak az Excelhez hasonlóan). 6.1.1.3.2 Oszlop rögzítése Most is a megfelelő oszlop fejlécének helyi menüjét kell indítanunk, de most az „Oszlop rögzítése” pontot kell kiválasztanunk. Hatására vízszintes görgetés közben az oszlop folyamatosan látható marad.
6.1.2 Frissítő lekérdezés Egy jól összeállított „Frissítő lekérdezéssel” az adattábláinkban lévő adatokat tudjuk gyorsan és roppant hatékonyan módosítani. Akkor célszerű az alkalmazása, ha valamelyik adattáblában, esetleg több kapcsolódó táblában szeretnénk egy-egy mező tartalmát módosítani. De nem véletlenszerű összevisszaságban, hanem egy jól körülírható szabály szerint, továbbá ugyancsak pontosan megadható hatáskörben. Egy új lekérdezés összeállításához válasszuk az adatbázis-ablak objektumai közül „Lekérdezéseket”. Kattintsunk az „Új” nyomógombra, majd a kapott lehetőség közül válasszuk ki a „Tervező nézetet”. A frissítő lekérdezés létrehozása során a következő lépéseket kell végrehajtanunk. 1. Elsőként az összes olyan táblát, melynek funkciója lesz a frissítés során, vegyük fel a tervezőrácsba. Szerepeljen tehát minden tábla, amelynek bármely mezőjére feltételt kívánunk megadni, és természetesen az a tábla is, melynek valamely mezőjét módosítani kívánjuk. 2. Második lépésben vegyük fel az összes olyan mezőt a tervezőrácsba, melyekre feltételt kívánunk megadni, vagy módosítani szeretnénk a tartalmát. Ezt a kérdéses mezők nevére dupla kattintással, esetleg a tervezőrácsba húzással tehetjük meg. 3. Adjuk meg a feltételeket a korábban tanultaknak megfelelően (egy sorba írt feltételek között „És”, a külön sorba írtak között pedig „Vagy” lesz a kapcsoA frissítést végző kifejelat). Bonyolult feltételek összeállításához alkalmazzés most mezőhivatkohatjuk a „Kifejezésszerkesztőt”, amit elindítani a zást és értéket tartalmaz ikonnal tudunk. 45. Ábra: Egy frissítő lekérdezés
76
Access XP alapokon ikonnal (de át is léphetünk „Adatlap nézetbe” a ikonnal). Természe4. Futassuk le a lekérdezést a tesen a program semmilyen adatot nem fog átírni, hiszen egyelőre „Választó lekérdezést” futtattunk. Ellenőrizzük, hogy listában csak azok a rekordok szerepeljenek, melyekben egy, vagy esetleg több mező értékét módosítani akarjuk (de azok a rekordok viszont teljes körűen megjelenjenek). 5. Menjünk vissza a „Tervező nézetbe” a ikonnal, azután váltsunk át „Frissítő lekérdezésre”. Ehhez válasszuk ki a „Lekérdezések” menü „Frissítő lekérdezés” pontját. A másik lehetőség, hogy lenyitjuk a ikont, majd rákattintunk a ikonra. Figyeljük meg, hogy eltűnt a „Rendezés” és a „Megjelenítés”, viszont keletkezett egy „Módosítás” sor. Ebben a sorban adjuk meg a módosítandó mező, esetleg mezők alá az új értéket. Az új adattartalom megadható egyszerűen csak az érték begépelésével, de olyan kifejezéssel is, mely operátorokat (5.2.2.2.5.2.), függvényeket (5.2.2.2.5.3.), értékeket és állandókat (5.2.2.2.5.1.), valamint mezőhivatkozásokat (6.1.1.1.1.3.) is tartalmaz. A kifejezés összeállításához használjuk a „Kifejezésszerkesztőt”, amit a ikonnal tudunk elindítani. 6. Futassuk ismét a lekérdezést a ikonnal. A módosítás nem visszavonható művelet, ezért jól gondoljuk át, hogy valóban „Igen” választ adhatunk-e a megerősítő kérdésre. Az új érték alapvetően kétféle lehet: ¾ olyan adat, mely nem függ a módosítandó mező tartalmától; ¾ illetve a korábbi adatból számított érték. 46. Ábra: Ha az „Igen” gombra kattintunk, az már nem lesz visszavonható Arra nagyon ügyeljünk, hogy az utóbbi esetben a frissítő lekérdezést csak egyszer szabad futtatni! Miért? Mert a további futtatás rossz eredményt ad. Például, ha egy személyi adatbázisban a fizetéseket 10 %-al akarjuk emelni, akkor az első futtatás jó eredményt ad, de a másodikban már 21%, a harmadikban 33,1 %, stb. lesz a fizetésemelés. 19. Feladat: Egy „Frissítő lekérdezéssel” módosítsuk a „Termék törzs” összes rekordjának a „VTSZ szám” mezőjét, ha értéke „4491” „4492-”-re. Ezt a lekérdezést is mentsük el „VTSZ változtatás” néven! Megoldás: Biztonsági okokból előbb egy választó lekérdezést készítsünk, melybe a következő mezőket vegyük fel: Tábla Mező ¾ Termék törzs → Termék kód ¾ Termék törzs → Termék név ¾ Termék törzs → VTSZ szám A „VTSZ szám” mezőbe feltételként adjuk meg a következőt: ¾ "4491" Futassuk le a lekérdezést a ikonnal, és ha csak a módosítandó rekordokat kapjuk meg eredményül, állítsuk át a lekérdezést „Frissítő lekérdezésre”. Ehhez lépjünk vissza „Tervező nézetbe”, és válasszuk ikont, majd kattintsunk ki a „Lekérdezések” menü „Frissítő lekérdezés” pontját, vagy nyissuk le a rá a ikonra. A megjelenő „Módosítás” sorba a „VTSZ szám” oszlopban gépeljük be az új értéket: ¾ "4492" Futassuk le ismét a lekérdezést a ikonnal. A megerősítő kérdésre válaszoljunk az „Igen” gombbal.
6.1.3 Törlő lekérdezés A „Törlő lekérdezéssel” adattáblákból tudunk rekordokat törölni. Akkor célszerű alkalmazni, ha a rekordok egy jól körülírható részét szeretnénk kitörölni valamelyik adattáblából, esetleg adattáblákból. A törlő lekérdezés összeállítása az eddigiek ismerétében már nem jelent problémát. Hozzunk létre egy új lekérdezést az adatbázis-ablak „Lekérdezések” objektumán állva az „Új” nyomógombbal. A megjelenő lehetőségekből válasszuk a „Tervező nézetet”. 1. Először most is adjuk hozzá a lekérdezéshez az összes olyan táblát, melynek szerepe lesz a törlés során. Ez a szerep lehet feltétel, illetve maga a törlés.
77
ECDL Adatbázis-kezelés modul 2. Vegyük fel azokat a mezőket a tervezőrácsba, melyekre feltételt kívánunk megadni. Ehhez a kérdéses mezők nevére kell duplát kattintani, esetleg a tervezőrácsba húzni. 3. Most is adjuk meg a feltételeket, melyek összeállításához alkalmazhatjuk persze a „Kifejezésszerkesztőt”, amit elindítani most is a ikonnal tudjuk. 4. Futassuk le a lekérdezést, vagy lépjünk át „Adatlap nézetbe”. Ne lepődjünk meg azon, hogy az Access még nem töröl semmit, hiszen egyelőre „Választó lekérdezésben” vagyunk. 5. Térjünk vissza „Tervező nézetbe” a ikonnal, majd váltsunk át „Törlő lekérdezésre”. Ehhez válasszuk ki a „Lekérdezések” menü „Törlő lekérdezés” pontját, vagy nyissuk le a ikont, és abból válasszuk ki a Ez az oszlop adja ikon segítségével. Vegyük észre, hogy most is elmeg, mely táblátűnt a „Rendezés” és a „Megjelenítés” sora, viszont ból kell törölni. megjelent egy „Törlés” sor. Adjuk meg, hogy melyik táblából szeretnénk törölni. 47. Ábra: Egy törlő lekérdezés tervezőrácsa Ehhez kattintsunk duplát a tervezőrács felett a tábla mezőit felsoroló lista első sorában lévő * szimbólumra annál a táblánál, amelyből rekordokat akarunk törölni. A feltételek megadása céljából felvett mezőknél „Where”, a törlésre szánt adattábla oszlopában (ezt az oszlopot vettük fel az imént a csillagra kattintással) egy „From” 48. Ábra: Jól gondoljuk meg, hogy mit válaszolunk felirat olvasható a „Törlés” sorban. 6. Újra futassuk le a lekérdezést a ikonnal. Mivel egy törlés minden esetben veszélyes művelet, feltétlenül jól gondoljuk át, hogy valóban „Igen” választ adhatunk-e a megerősítő kérdésre. Mi a helyzet kapcsolattal rendelkező tábláknál? Amennyiben kapcsolattal rendelkezik egy adattábla, ha a hivatkozási integritást bekapcsoltuk, de a „kapcsolt mezők kaszkádolt törlését” nem, az „elsődleges” („szülő”) adattáblából csak a kapcsolattal nem rendelkező rekordok törölhetőek. Különösen óvatosan járjunk el, ha megengedtük a „Kapcsolt mezők kaszkádolt törlését” is (5.3.2.2.2.4.). Ez esetben ugyanis az „elsődleges” („szülő”) táblából törölve a „kapcsolt” („gyermek”) táblából is törlődnek az érintett rekordok.
6.1.4 Táblakészítő lekérdezés A „Táblakészítő lekérdezés” nem sokban különbözik egy „Választó lekérdezéstől”. Az eltérés csak annyi, hogy a lekérdezés eredménye egy valóságban is létező, de teljesen új adattábla lesz. Azt korábban leszögeztük, hogy egy „Választó lekérdezés” eredményéül kapott adathalmaz csak a gép memóriájában került kiválogatásra. A táblakészítő lekérdezés alkalmazása akkor célszerű, ha például a kapott adattáblát egy másik helyen lévő gépen akarják feldolgozni (és a gépek nincsenek hálózatba kötve), vagy az egyébként csak kapcsolatban lévő táblák mezőit egy táblába szeretnénk összegyűjteni. A munkát kezdjük most is azzal, hogy hozzunk létre egy új lekérdezést. Ehhez álljunk az adatbázis objektumai közül a „Lekérdezésekre”, majd kattintsunk az „Új” nyomógombra. A megjelenő lehetőségekből válasszuk a „Tervező nézetet”. 1. Elsőként most is adjuk hozzá a lekérdezéshez az összes olyan táblát, melynek funkciója lesz a lekérdezésben. A funkció lehet az, hogy az adott tábla egy mezőjének tartalmára vagyunk kíváncsiak, illetve az, hogy feltételt akarunk megadni rá. 2. Második lépésben adjuk meg magukat a mezőket. Ehhez a kérdéses mezők nevére kell duplát kattintani, esetleg a tervezőrácsba húzni. 3. Vigyük be a feltételeket. Szükség esetén alkalmazzuk a „Kifejezésszerkesztőt”, amit a ikonnal tudunk indítani. 4. Adjuk meg az esetleges rendezési (6.1.1.1.5.) feltételeket. 5. Futassuk le az egyelőre még „Választó lekérdezést”, vagy lépjünk át „Adatlap nézetbe”. 6. Térjünk vissza „Tervező nézetbe” a ikonnal, majd váltsunk át „Táblakészítő lekérdezésre”. Ehhez ikont, válasszuk ki a „Lekérdezések” menü „Táblakészítő lekérdezés…” pontját, vagy nyissuk le a majd kattintsunk a ikonra.
78
Access XP alapokon 7. A megjelenő ablakba vigyük be az új tábla nevét. Amennyiben létező táblát adunk meg, az Access egyelőre még nem figyelmeztet arra a veszélyre, hogy a tábla korábbi tartalma törlésre kerül. Később viszont – mint azt rögtön látni is fogjuk – igen. 8. Újra futassuk le a lekérdezést a ikonnal. Az Access természetesen most is küld egy figyelmez49. Ábra: Itt adhatjuk meg az új tető üzenetet, de ez most nem jelent olyan nagy tábla paramétereit veszélyt. Igaz ugyan, hogy ez a művelet sem lesz visszavonható, de az eredmény egy új tábla. Ha belegondolunk, akkor nyilvánvaló, hogy amennyiben valami nem sikerült, nincs nagy baj. Javítsuk ki a hibát, és futtassuk újra. Az egyetlen dolog, amire viszont komolyan figyelnünk kell, hogy az a tábla, amit kimenetként megadunk, nehogy egy, már a lekér50. Ábra: Az alsó kérdést jól gondoljuk át, mielőtt válaszolnánk rá dezés létrehozása előtt is létező tábla legyen. Ismételt futtatáskor viszont az erre figyelmeztető üzenettel nem biztos, hogy törődnünk kell. Két további fontos információ a „táblakészítő lekérdezésről”? ¾ ¾
Amikor „Táblakészítő lekérdezést kívánunk alkalmazni, vegyük figyelembe a következő fontos tényeket: Természetesen csak azok a mezők fognak az új táblában szerepelni, melyeket a tervezőrácsba felvettünk, de a *, mint mindent helyettesítő mezőnév most nem alkalmazható. Sajnos az így készített táblák nem fogják örökölni a forrásuknak használt adattáblákban megadott mezőtulajdonságok mindegyikét, csak a típust és a méretet.
20. Feladat: Egy „Táblakészítő lekérdezéssel” gyűjtsük ki az eladásainkat egy „Eladások” táblába. Ezt a lekérdezést is mentsük el „Eladások kigyűjtése” néven! Megoldás: Tervező nézetben állítsuk össze a következő lekérdezést: Tábla Mező ¾ Tranzakciók tételei → Bizonylatszám ¾ Szállító törzs → Szállító név ¾ Termék törzs → Termék név ¾ Tranzakciók tételei → Mennyiség ¾ Mértékegység törzs → Mértékegység név ¾ Tranzakciók tételei → Nettó egységár A következő üres oszlop „Mező” sorába adjuk meg az alábbi kifejezést: ¾ [Tranzakciók tételei]![Mennyiség] * [Tranzakciók tételei]![Nettó egységár] A „Bizonylatszám” mezőbe feltételként adjuk meg a következőt: ¾ Like "E*" (elegendő bevinni csak az E*-ot a feltétel sorba, a többit a program elvégzi) Futassuk le a lekérdezést a ikonnal, és ha csak a keresett rekordokat kapjuk meg eredményül, állítsuk át a lekérdezést „Táblakészítő lekérdezésre”. Ehhez lépjünk vissza a ikonnal„Tervező nézetbe”, és válasszuk ki a „Lekérdezések” menü „Táblakészítő lekérdezés” pontját, vagy nyissuk le a ikont, majd kattintsunk rá a ikonra. A megjelenő ablakba a „Táblanév” mezőbe gépeljük be: „Eladások”. Futtassuk le a lekérdezést a ikonnal, a megjelenő kérdésre az „Igen” gombbal válaszoljunk. Kilépéskor ne felejtsük el „Eladások kigyűjtése” néven elmenteni a lekérdezést.
79
ECDL Adatbázis-kezelés modul Táblakészítő lekérdezéssel létrehozott táblák számítással kapott mezőinek nevei Egyáltalában, mi a gond? Egy számított mező a beszédesnek közel sem nevezhető „Kif1”, „Kif2”, stb. mezőnevet fogja kapni. De mint már tudjuk, a „Mezőtulajdonságok” közül a „Cím”-nek adhatunk egy olyan értéket, mely a táblákban a mező neve helyett fog szerepelni. Ehhez csak nyissuk meg az „Eladások” táblát „Tervező nézetben” majd az utolsó, „Kif1” mező „Cím” tulajdonságába írjuk be az „Érték” nevet.
6.1.5 Hozzáfűző lekérdezés A „Hozzáfűző lekérdezés” és a „Táblakészítő lekérdezés” ikertestvérek. Ennek megfelelően szinte pontosan ugyanúgy kell egy ilyen lekérdezést elkészíteni és lefuttatni, mint azt a „Táblakészítő lekérdezésnél” megbeszéltük. A könnyebb összehasonlíthatóság érdekében e két lekérdezést egy táblázatban állítom párhuzamba. Táblakészítő lekérdezés Hozzáfűző lekérdezés Ha a kimenetként megadott adattábla nem létezik, Ha a kimenetként megadott adattábla nem létezik, az akkor létrehozza. Access a lekérdezés futtatásakor hibaüzenetet küld. Amennyiben a kimenetként megadott adattábla létezik, de a tervezőrácsban megadott mezők eltérnek a tábla mezőitől, akkor három eset lehetséges: 1. Ha a mező az eredmény adattáblában létezik, de a lekérdezés tervezőrácsában nem, a kérdéses Ha a kimenetként megadott adattábla már létezik, mező az új rekordokban egyszerűen üres marad. akkor az új lekérdezés az egész korábbi táblát felülírja: mezői az új lekérdezésben megadottak, 2. Ha a tervezőrácsba ugyan felvettük a mezőt, de rekordjai az új futtatáskor hozzáadottak lesznek. az eredmény adattáblában nem létezik, az Access nem is foglalkozik vele. Erre egy üzenet figyelmeztet. 3. A tervezőrácsban és az adattáblában eltérő nevű mezők szerepelnek. Ez esetben a mezőket össze kell párosítani. Ennek módszere a lekérdezés létrehozásának menetében kerül ismertetésre. 41. Táblázat: Táblakészítő és hozzáfűző lekérdezés összehasonlítása A „Hozzáfűző lekérdezés” létrehozásához álljunk az adatbázis-ablak „Lekérdezések” objektumára, majd kattintsunk az „Új” nyomógombra. A megjelenő lehetőségekből válasszuk a „Tervező nézetet”. 1. Most is azzal kell kezdenünk, hogy a lekérdezéshez hozzáadjuk az összes olyan táblát, melynek szerepe lesz a későbbiekben. A funkció lehet az, hogy az adott tábla egy mezőjének tartalmára kíváncsiak vagyunk, illetve az, hogy feltételt akarunk rá megadni. 2. Az eddigi szokásoknak megfelelően adjuk meg azokat a mezőket, melyeknek funkciója lesz a lekérdezésben. 3. Vigyük be a feltételeket. Szükség esetén alkalmazzuk a „Kifejezésszerkesztőt”, amit a ikonnal tudunk indítani. 4. Adjuk meg az esetleges rendezési (6.1.1.1.5.) feltételeket. 5. Futassuk le a „Választó lekérdezést”, és vizsgáljuk meg az eredményét. ikonnal, és térjünk át „Hozzáfűző lekérdezésre”. Ehhez a 6. Válasszuk ki újra a „Tervező nézetet” a „Lekérdezések” menü „Hozzáfűző lekérdezés…” pontját kell indítanunk, vagy nyissuk le a ikont, majd kattintsunk a ikonra. 7. A megjelenő ablakba vigyük be annak a létező adattáblának a nevét, melyhez rekordokat szeretnénk fűzni. Ha olyan táblát adunk meg, mely nem is létezik, az Access egyelőre most sem figyelmeztet, csak a lekérdezés futtatásakor. Ugyanakkor ez a hiba azért a futtatás előtt is kiderülhet. Amennyiben ugyanis a lekérdezés tervezőrácsába megadott 51. Ábra: Itt adhatjuk meg azt a táblát, adattábla mezőinek neve megegyezik a kimenetmelyhez rekordokat kívánunk adni ként megadott adattábla mezőinek nevével (amely-
80
Access XP alapokon hez rekordokat akarunk fűzni), akkor a mezők párba rendeződve jelennek meg. Nem létező táblának nincs neve, tehát párok sincsenek. A megegyező nevű mezők esetében a tervezőrács „Mező” és „Hozzáfűzés” sorának megegyezik a tartalma. Ha a mezőnevek a két táblában nem egyeznek meg, akkor nekünk kell a „Hozzáfűzés” sor tartalmát minden eltérő nevű mező esetében megadni. Ezt az ábra szerint tehetjük meg: egy legördülő listából egyszerűen csak ki kell Itt választhatjuk választani. ki az eltérő nevű 8. Újra futassuk le a lekérdezést a ikonnal. Az Access természetemezők párját sen most is küld egy figyelmeztető üzenetet. Nagyon vigyázzunk, nehogy olyan rekordok kerüljenek a kimenő táblába, melyek már 52. Ábra: szerepelnek benne, ugyanis ezt a program nem figyeli. Ezért ha Mezők párba rendelése például ugyanazt a lekérdezést többször is lefuttatjuk, a rekordok is többször fognak majd szerepelni a kimenő táblában! Hogy célszerű „Hozzáfűző lekérdezést” futtatni? Elsőként ne „Hozzáfűző lekérdezést”, hanem „Táblakészítő lekérdezést futassunk. Így azután nem lesz probléma a kimenetként megadott adattábla mezőneveivel és típusaival. Mire kell ügyelni? Az adattípusok közül a „Számláló” okozhat galibát. Nevezetesen, amennyiben betartjuk az előző tanácsomat, és a kimeneti adattáblát egy „Táblakészítő lekérdezés” segítségével hozzuk létre, akkor valószínűleg az új tábla mezői közé berakjuk az eredeti tábla elsődleges kulcsát adó mezőt is. Tegyük fel, hogy ez „Számláló” típusú. Második lépésben azután lefuttatjuk a hozzáfűző lekérdezést. Ha valamilyen oknál fogva töröljük a tervezőrácsból az elsődleges kulcsot adó „Számláló típusú” mezőt, akkor az a következő problémához vezet: ¾ a kimeneti táblában már létezik ez a mező; ¾ a lekérdezés nem ad meg rá adatot, de egy ilyen mezőnek mindig van értéke, tehát a rendszer automatikusan fogja generálni (értéke a kimenő táblában lévő legnagyobb értékétől fog indulni). Ennek következményeként a kimeneti és a forrás adattábla eltérő értékeket fog tartalmazni.
6.1.6 Kereszttáblás lekérdezés A „Kereszttáblás lekérdezés” egy egészen különleges képességekkel bíró eszközt ad a kezünkbe. Segítségével adatforrásainkból olyan lekérdezéseket készíthetünk, melyben az információ az eredeti adatforrás értékei szerint kerül kigyűjtésre, ráadásul az általunk megadott összegző függvénnyel feldolgozva. Egyszerre hasonlít egy kicsit a szűrőre és a részösszegekre, azzal a különbséggel, hogy a kereszttáblás lekérdezés esetében egy időben láthatjuk az összes olyan adatot, amit a szűrővel csak külön-külön láthatnánk. Valószínűsítem, hogy sajnos a magyarázat ellenére sem érthető még, hogy mire is jó a „Kereszttáblás lekérdezés”. További kommentár helyett lássunk inkább rá egy példát (a feladatok között pedig szerepel majd az általunk készített adattáblákkal is egy „Kereszttáblás lekérdezés”). Példa: Tegyük fel, hogy egy cég dolgozóinak adatait tartalmazó „Dolgozók” táblában többek között a következő mezők szerepelnek: A mező neve az egyes rekordokban a következő adatok szerepelhetnek csak ¾ Iskolai végzettség alapfokú, középfokú, vagy felsőfokú; ¾ Munkakör szereldei munkatárs, brigádvezető, műszakvezető, raktáros, műszaki vezető, gazdasági vezető, titkárnő, vagy takarító; ¾ Besorolási bér minden dolgozó saját besorolási bére. A feladatunk az lenne, hogy állapítsuk meg az egyes munkakörök átlagos bérét az iskolai végzettség függvényében. Megoldás részösszegekkel és szűréssel 1. Elsőként létrehozunk egy olyan „Választó lekérdezést”, melyben részösszeg képzést is kérünk (ha az adatok egy táblában vannak, még lekérdezést sem szükséges létrehozni). A részösszeg csoportosítási alapja a „Munkakör” és az „Iskolai végzettség” legyen, az alkalmazott függvény pedig az átlag számítására szolgáló „Avg”.
81
ECDL Adatbázis-kezelés modul 2. Ezt követően futtassuk le a lekérdezést. 3-x Kapcsoljuk be a „Szűrés űrlappal” funkciót, és az „Iskolai végzettség” mezőben válasszuk ki előbb az „alapfokú”, majd a „középfokú”, végül a „felsőfokú” elemet. A probléma ennél a megoldási módszernél csak az, hogy nem láthatjuk egyszerre az összes iskolai végzettség átlagát. Ráadásul, ha nemcsak három értéket felvehető adatra szeretnénk kigyűjteni az információkat („alapfokú”, „középfokú”, „felsőfokú”), akkor elég sokáig eltartana az összes szűrési lehetőség. Erre utal a számozás is (3-x), hiszen x értéke az adatokban előforduló variáció függvénye. Megoldás kereszttáblás lekérdezéssel A „Kereszttáblás lekérdezés” készítéséhez is álljunk az adatbázis-ablak „Lekérdezések” objektumára, kattintsunk az „Új” nyomógombra, majd válasszuk a „Tervező nézetet”. 1. Adjuk a lekérdezéshez az összes olyan táblát, melynek valamely mezője szerepet kap. A szerep most csak csoportosítási alap, vagy összegzendő érték lehet. 2. Adjuk meg a mezőket. 3. Térjünk át „Kereszttáblás lekérdezésre” a „Lekérdezések” menü „Kereszttáblás lekérdezés…” pontjával, vagy nyissuk le a ikont, majd kattintsunk a ikonra. 4. Adjuk meg, hogy az egyes mezők közül melyiknek az adatai szerepeljenek a „Sor-”, és az „Oszlopfejlécekben”. Ehhez nyissuk le a kérdéses mező „Kereszttábla” sorában található listát. „Oszlopfejlécnek” csak egy mező, „Sorfejlécnek” azonban több is megadható! 53. Ábra: Adjuk meg a sor- és oszlopfejléceket, 5. Adjuk meg az összegzendő mezőnél alkalmazandó valamint az összesítő függvényt függvényt. Ehhez az „Összesítés” sorban kell lenyitni a választékot, és kiválasztani a „Group by” helyett a megfelelő függvényt. A lehetőségek megegyeznek a korábban megbeszéltekkel (6.1.1.1.7.). Ebben az oszlopban a „Kereszttábla” sorban „Értéket” kell beállítani! 6. Ha szűrni is akarunk, vigyük be a feltételeket. Szükség esetén alkalmazzuk a „Kifejezésszerkesztőt”, amit a ikonnal tudunk indítani. 7. Futassuk le a lekérdezést a ikonnal. A kereszttáblás lekérdezés oszlopainak sorrendje Egy „Kereszttáblás lekérdezés” oszlopainak fejlécei az „Oszlopfejlécnek definiált mező értékeit veszik fel. Az egyes fejlécek azonban az abc-nek megfelelő sorrendben követik egymást, ami nem minden esetben felel meg az elvárásainknak. Amennyiben például egy olyan mezőt adunk meg „Oszlopfejlécnek”, amelyben mondjuk az év hónapjai szerepelnek, akkor az oszlopfejlécek nem „január”, „február”, „március”, stb. sorrendben fognak szerepelni, hanem abc rendben, azaz: „augusztus”, „április”, „december”, stb. Hogy ez mennyire szerencsétlen dolog lenne, azt úgy gondolom, nem kell ecsetelnem. A megoldás a következő: ¾ nyissuk meg a kérdéses lekérdezést tervező nézetben; ¾ álljunk az „Oszlopfejléc” oszlopába a tervezőrácsban, majd kattintsunk rá a ikonra; ¾ a megjelenő táblázat „Oszlopfejléc” sorába vigyük be az egyes értékeket (kisbetű, nagybetű nem számít, de minden másra gondosan ügyeljünk).
54. Ábra: Oszlopfejléc feliratainak sorrendjét így adjuk meg
21. Feladat: A legjobb beszerzési forrás kiválasztásához minden szállítónál számítsuk ki az egyes árucikkek átlagos beszerző árát egy „Kereszttáblás lekérdezéssel”. Ezt a lekérdezést is mentsük el „Átlagos beszerző árak kigyűjtése” néven! Megoldás: Tervező nézetben állítsuk össze a következő lekérdezést:
82
Access XP alapokon Tábla Mező Tranzakciók tételei → Bizonylatszám ¾ Szállító törzs → Szállító név ¾ Termék törzs → Termék név ¾ Tranzakciók tételei → Nettó egységár A lekérdezés típusát állítsuk át a „Lekérdezések” menü „Kereszttáblás lekérdezés” pontjával, vagy a legördülő ikon elemével „Kereszttáblás lekérdezésre”. A „Bizonylatszám” mezőbe feltételként adjuk meg a következőt: ¾ Like "B*" (elegendő bevinni csak az B*-ot a feltétel sorba, a többit a program elvégzi) A „Kereszttábla” sorban a következő értékeket állítsuk be: ¾ Bizonylatszám (nem látható) ¾ Szállító név Oszlopfejléc ¾ Termék név Sorfejléc ¾ Nettó egységár Érték Az „Összesítés” sorában a „Nettó egységár” oszlopban válasszuk ki az „Avg” (átlag) értéket. Futtassuk le a lekérdezést a ikonnal, majd kilépéskor mentsük el. ¾
6.1.7 Paraméteres lekérdezés A paraméteres lekérdezés nem egy új altípusa, hanem az eddig tanult lekérdezések mindegyikénél alkalmazható kiterjesztése a lekérdezéseknek. Hogy ez a plusz módszer mennyivel bővíti ki lehetőségeinket? Ha jól belegondolunk, az eddig tanult eljárásokkal egy-egy adott problémát kiválóan meg tudunk oldani, de amennyiben csak egy kicsit is másra vagyunk kíváncsiak, máris újratervezhetjük lekérdezésünket. Például egy egyszerű „Választó lekérdezéssel” a „Termék törzsből” ki tudjuk gyűjteni az összes olyan árucikket, amelynek „Termék név” mezőjében szerepel a „PC” szó, de amennyiben egy más kifejezést tartalmazó rekordokat kívánunk kikerestetni, akkor a tervezőnézethez visszatérve át kell írni a feltételt. Ezt egy, az Accesshez nem igazán értő felhasználótól nem várhatjuk el. Számára csak az az út járható, hogy egy menüből kiválasztja a megfelelő lekérdezést, majd a program egy ablakba bekéri, hogy minek kell szerepelni a névben. Ez úgy valósítható meg, hogy a lekérdezés tervezőrácsába nem egy konkrét feltételt leíró kifejezést adunk meg, hanem olyat, amelyben paraméter szerepel. Ezt a paramétert azután a lekérdezés futtatásakor az Access be fogja kérni. Miután a funkciót remélhetően megértettük, lássuk a megvalósítás módszerét. Amennyiben a tervező rácsban olyan hivatkozást kívánunk a feltételben elhelyezni, melynek értéke lekérdezésenként más és más, a következők szerint járjunk el: ¾ a tervezőrácsban állítsuk össze a feltételt, de a változó értéket felvehető adat helyét hagyjuk üresen; ¾ az üresen hagyott helyre szögletes zárójelekbe egy olyan mondatot írjunk, mely a kérdéses adatot kéri be. Amennyiben azután lefuttatjuk a lekérdezést, a szögletes zárójelbe írt mondat, mint az adatot bekérő ablak szövege fog megjelenni. Például 55. Ábra: Paraméter amennyiben példánknál maradunk, célszerű a következőt írni a „Feltétel” sorba a bekérése „Termék név” oszlopában: [Adja meg, hogy milyen terméket keres] A paraméterben nem szerepelhet pont, szögletes zárójel, és felkiáltójel „ . [ ] ! ”, továbbá nem egyezhet meg egy létező mezőnévvel! Az egész mondatot viszont rakjuk szögletes zárójelbe. Arra is ügyeljünk, hogy mivel a „Paraméter megadása” nevű ablak mérete fix, az adatot bekérő mondat maximális hossza is behatárolt. 22. Feladat: A 19. feladatban készített, és „VTSZ változtatás” néven elmentett „Frissítő lekérdezésünket” alakítsuk át úgy, hogy futtatásakor kérje be a régi és az új VTSZ számokat. Mentsük el „Paraméteres VTSZ változtatás” néven.
83
ECDL Adatbázis-kezelés modul Megoldás: Tervező nézetben nyissuk meg a kérdéses „VTSZ változtatás” nevű lekérdezést. A „Módosítás” sorba adjuk meg a következő szöveget: ¾ [Adja meg az új VTSZ számot] A „Feltétel” sorba pedig: ¾ [Adja meg a módosítandó VTSZ számot] A „Fájl” menü „Mentés másként…” pontjával mentsük el, majd próbáljuk meg lefuttatni.
6.1.8 Az SQL nézet Az SQL1 egy szabványos informatikai lekérdező nyelv, amelyet adatbázisok lekérdezésére, módosítására használnak. Igazság szerint a varázslók, illetve a tervezők segítségével szabványos SQL parancsokat hozunk létre, amelyeket a rendszer értelmez, de elrejt előlünk. Az Office integráltságából következően valószínűleg az Access is szabványosított SQL parancsokkal kommunikál az adatbázismotorral. Ha a vizuális eszközökkel létrehozott lekérdezésünk SQL megfelelőjére vagyunk kíváncsiak, használjuk az SQL nézetet. Ehhez a „Nézet” menü „SQL nézet” pontját kell választanunk. Újra visszatérni „Tervező”, vagy „Tábla nézetre” a „Nézet” menü megfelelő pontjaival, illetve a vagy a ikonnal lehetséges. Véleményem szerint általában elegendő, ha az alábbi legfontosabb SQL utasításokkal kapcsolatosan a következőket tudjuk: ¾ választó lekérdezés SELECT mezőlista FROM táblanév WHERE feltétel ORDER BY sorrend [DESC]; ¾ törlő lekérdezés DELETE FROM táblanév WHERE feltétel; ¾ frissítő lekérdezés UPDATE táblanév SET mezőnév = újérték WHERE feltétel; A paraméterek értelmezése a következő: ¾ mezőlista a mezőnevek vesszővel elválasztott felsorolása [táblanév].[mezőnév] alakban; ¾ táblanév az érintett tábla neve [táblanév] alakban; ¾ feltétel a tanult szabályok szerinti logikai értéket adó kifejezés; ¾ sorrend annak a mezőnek a neve, amely szerint rendezni akarjuk az adatokat (a DESC kulcsszó megadása esetén csökkenő kulcsú a rendezés). Mivel alapfokon nem feltétlenül illik ismerni az SQL utasítások részletes szintaktikáját ennél részletesebben, azt csak kiegészítő információban ismertetem. A szögletes zárójel a szokásoknak megfelelően most is arra utal, hogy az adott utasításrész csak opcionális. A „{}” (kapcsos zárójel) értelmezése az, hogy ami benne szerepel, abból legalább egyet meg kell adni. A „|” (függőleges vonal) arra utal, hogy a két oldalán lévő lehetőségek egymás alternatívái. Választó lekérdezés: a SELECT utasítás
¾
¾ ¾ ¾
1
SELECT [predikátum] { * | tábla.* | [tábla.]mező1 [AS alias1] [, [tábla.]mező2 [AS alias2] [, …]]} FROM tábla [,…] [IN külső_adatbázis] [WHERE feltétel ] [GROUP BY csoport ] [HAVING feltétel ] [ORDER BY sorrend ] A SELECT utasítás részei: Elem / Kulcsszó leírás predikátum A következő predikátumok egyike: ALL, DISTINCT, DISTINCTROW, vagy TOP. A predikátummal a válaszba kerülő rekordok körét tudjuk meghatározni. Az alapértelmezett predikátum az ALL. * Használatával a megadott tábla vagy táblák minden rekordját kijelöljük. tábla A tábla neve, amely a kiválasztandó rekordok mezőit tartalmazza. mező1, mező2 A mező neve, amelyben az adatokat keressük. Ha több mezőt adunk meg, azok a megjelölt sorrendben lesznek visszakeresve.
SQL, azaz Structured Query Language, magyarul Strukturált Lekérdező Nyelv. Az Amerikai Szabványügyi Hivatal 1986-ban fogadta el, azóta többször módosította.
84
Access XP alapokon Az AS után következő név lesz az adott oszlop fejléce. Gyakorlatilag tehát az „alias1”, „alias2”, stb. megegyezik a „Cím” „Mezőtulajdonsággal” ¾ FROM tábla A FROM kulcsszó után kell megadnunk lekérdezés forrásául használt adattábla nevét. A FROM kulcsszó után megadható még kapcsolatba hozott tábla is. Ennek szintaktikája a következő kiegészítő információ, a FROM INNER JOIN témája. ¾ IN külső_adatbázis Az adatbázis neve, ha a tábla nem az aktuális adatbázisban van. ¾ WHERE feltétel A WHERE kulcsszó után adhatjuk meg a feltételeinket. Több feltétel esetén használjuk a logikai műveleteket (AND, OR, NOT, stb.). Maximum 40 feltételt alkalmazhatunk. ¾ GROUP BY csoport A GROUP BY kulcsszó után kell megadni a csoportosítási alapként használt mezők listáját (maximum 10 db.). ¾ HAVING feltétel A HAVING kulcsszó után adhatjuk meg a feltételeinket. Több feltétel esetén használjuk a logikai műveleteket (AND, OR, NOT, stb.) Maximum 40 feltételt alkalmazhatunk. A GROUP BY záradék igénybevétele esetén a HAVING kulcsszóval szokás megadni a feltételeket. ¾ ORDER BY sorrend Az ORDER BY kulcsszó után adhatjuk meg a lekérdezés sorrendjét a kulcsmezők felsorolásával, több kulcsos rendezés esetén vesszővel elválasztva. Az alapértelmezett rendezési sorrend a növekvő. Amennyiben csökkenő elrendezést kívánunk elérni, a mezői végére még egy DESC kulcsszót is el kell helyeznünk. Véleményem szerint a SELECT utasítást a legjobban úgy tudjuk megismerni, hogy összeállítunk néhány különböző mezőket, feltételeket, sorrendet, csoportosítási alapot és összegzést tartalmazó lekérdezést, majd mindegyiket megnézzük SQL nézetben is. Hamarosan minden világossá és érthetővé fog válni. Természetesen e felfedező tevékenységünkhöz segítségül hívhatjuk a súgót is. Táblák összekapcsolása: FROM INNER JOIN (LEFT JOIN és RIGHT JOIN) művelet ¾
AS alias1
FROM tábla1 INNER JOIN tábla2 ON tábla1.mező1 hasonlító_művelet tábla2.mező2 Az INNER JOIN művelet a következő részekből áll: Elem leírás ¾ tábla1 és tábla2 A két tábla neve, melyek rekordjaiból az egyesített rekordok készülnek. ¾ mező1 és mező2 A kapcsoló mezők neve. Ha a mezők nem szám típusúak, ugyanolyan adattípushoz kell tartozniuk, ugyanolyan jellegű adatokat kell tartalmazniuk, de a nevük lehet különböző. ¾ hasonlító_művelet Bármely összehasonlító művelet: "=", "<", ">", "<=", ">=" vagy "<>". Az INNER JOIN művelet segítségével kiválogathatjuk a tábla1 és a tábla2 táblából minden a hasonlító műveletnek megfelelő rekordját. Ezzel szemben, ha a tábla1 összes rekordját szeretnénk kiválogatni (akkor is, ha némelyikhez nem kapcsolódik a tábla2 egy rekordja sem), vagy a tábla2 összes rekordját (akkor is, ha némelyikhez nem kapcsolódik a tábla1 egy rekordja sem), a LEFT JOIN vagy RIGHT JOIN művelettel létesíthetünk laza illesztést. Táblakészítő lekérdezés: a SELECT INTO utasítás
¾ ¾ ¾ ¾
¾ ¾
SELECT mező1[, mező2[, ...]] INTO új tábla [IN külső_adatbázis] FROM forrás [WHERE feltétel ] A SELECT INTO utasítás a következő részekből áll: Elem / Kulcsszó leírás mező1, mező2, … Az új táblába másolandó mezők neve. INTO új tábla A létrehozandó tábla neve, amelynek meg kell felelnie az elnevezési konvenciónak. Ha az új tábla ugyanaz, mint egy létező táblanév, akkor kezelhető hiba lép fel. IN külső_adatbázis Külső adatbázis elérési útja. FROM forrás Egy létező tábla neve, melyből a rekordokat válogatjuk. Lehet egy vagy több tábla, illetve egyetlen lekérdezés. Frissítő lekérdezés: az UPDATE utasítás UPDATE tábla SET mező = új_érték WHERE feltétel Az UPDATE utasítás részei: Elem / Kulcsszó leírás tábla Azon tábla neve, amelynek adatait módosítani szeretnénk. SET mező = új_érték Az a kifejezés, amely meghatározza, milyen érték kerül be a módosítandó rekordok egyes mezőibe.
85
ECDL Adatbázis-kezelés modul ¾
¾ ¾ ¾ ¾ ¾
¾ ¾
¾
¾ ¾ ¾ ¾
WHERE feltétel
A WHERE kulcsszó után adhatjuk meg a feltételeinket. Több feltétel esetén használjuk a logikai műveleteket (AND, OR, NOT, stb.). Maximum 40 feltételt alkalmazhatunk. Csak a feltételnek eleget tevő rekordok változnak. Hozzáfűző lekérdezés: az INSERT INTO utasítás
INSERT INTO cél [IN külső_adatbázis] [(mező1 [, mező2[, ...]])] SELECT [forrás.]mező1[, mező2[, ...] FROM táblakifejezés Az INSERT utasítás részei: Elem / Kulcsszó leírás cél Annak a létező adattáblának a neve, melyhez hozzá szeretnénk fűzni az új rekordokat. IN külső_adatbázis A külső adatbázis elérési útja. Az elérési út az IN záradéknál van leírva. mező1, mező2, … Ha cél argumentum után szerepelnek, akkor az új rekordban kitöltendő mezők nevei, ha forrás argumentum után szerepelnek, akkor pedig ezekből a mezőkből veendők az adatok. SELECT forrás A tábla vagy lekérdezés neve, melyből a rekordokat át szeretnénk másolni. FROM táblakifejezés Azon tábla vagy táblák neve, amelyekből származnak a beillesztett rekordok. Ez az argumentum lehet egyetlen tábla, vagy az INNER JOIN, LEFT JOIN, vagy RIGHT JOIN eredményeképp született táblakombináció. Törlő lekérdezés: a DELETE utasítás DELETE [tábla.*] FROM tábla WHERE feltétel A DELETE utasítás részei: Elem / Kulcsszó leírás tábla * A táblanév megadása nem kötelező. Kijelöli a táblát, amelyből törölni kell a rekordokat. FROM tábla A FROM kulcsszó után kell megadnunk lekérdezés forrásául használt adattábla nevét. A FROM kulcsszó után megadható még relációba hozott tábla is. Ennek szintaktikája egy korábbi kiegészítő információ, a FROM INNER JOIN témája volt. WHERE feltétel A WHERE kulcsszó után adhatjuk meg a feltételeinket. Több feltétel esetén használjuk a logikai műveleteket (AND, OR, NOT, stb.…). Maximum 40 feltételt alkalmazhatunk. Kereszttáblás lekérdezés: a TRANSFORM utasítás TRANSFORM összesítő_függvény SELECT… PIVOT mező [IN (érték1[, érték2[, ...]])] Elem / Kulcsszó leírás Összesítő_függvény A kiválogatott adatokon végrehajtandó SQL összesítő függvény (pl. „Sum”, „Avg”, stb.). SELECT… Egy komplett SELECT utasítás. PIVOT mező A lekérdezés eredményében oszlopfejként használandó mező vagy kifejezés. IN érték1, érték2 Amennyiben mi akarjuk megadni a fejlécek sorrendjét, azok értékei (meg kell, hogy egyezzenek a mező értékekkel, különben az adott oszlopba semmi nem kerül kigyűjtésre).
23. Feladat: A „Tranzakciók tételei” tábla „Termék kód” és „Szállító kód” mezőinek sorrendjét állítsuk be „Termék név” és „Szállító név” szerinti növekvőre. Megoldás: Tervező nézetben nyissuk meg a „Tranzakciók tételei” nevű táblát, kattintsunk a „Termék kód” sorra, ikonra. majd lapozzunk át a „Megjelenítés” regiszterre. Kattintsunk bele a „Sorforrás” sorba, majd a A megjelenő ablakban a „Rendezés” sort állítsuk „Növekvőre”, majd zárjuk be az ablakot (előtte esetleg váltsunk át SQL nézetbe). Amikor a tervezőrácsból történő kilépéskor a program megkérdezi, hogy mentjük-e a változást, válasszuk az „Igen” lehetőséget. Ugyanezt tegyük meg a „Szállító kód” mezővel is.
86
Access XP alapokon 6.2 Egyszerű lekérdezés varázsló Az „Egyszerű lekérdezés varázsló” használata roppant könnyű. Az elindítása után megjelenő ablakban a más programokból már megismert módszerekkel egyszerűen összeállíthatjuk az új lekérdezésünket. Az első ablakban sorban vegyük fel az összes olyan mezőt, melynek a lekérdezésben szerepe lesz. Ez a szerep lehet: ¾ megjelenítés; ¾ feltétel; ¾ és csoportosítás. Egy-egy mezőt úgy tudunk hozzáadni a lekérdezéshez, hogy elsőként kiválasztjuk azt a táblát vagy lekérdezést, amelyben szerepel. Ezt a „Táblák/lekérdezések” legördülő lista segítségével tehetjük meg. Ezt követően rákattintunk a mező nevére az „Elérhető mezők” listában, majd megnyomjuk a gombot. Amennyiben az adott tábla, vagy lista minden mezőjét szerepeltetni kívánjuk az új lekérdezésben, akkor a gombot nyomjuk meg. Ha másik táblákból is fel kell venni mezőket, akkor válasszuk ki a másik táblákat, és adjuk hozzá azok mezőit is. Kattintsunk a „Tovább” gombra. 56. Ábra: Az „Egyszerű lekérdezés varázsló” 1. lépése A megjelenő újabb ablakban az tudjuk megadni, hogy szeretnénk-e összesítést kérni. Ezt egy rádiógombbal tudjuk eldönteni. Amennyiben igen, azaz a lehetőségek közül az „Összesítés” kerül kiválasztásra, akkor még az összesítéshez alkalmazni kívánt függvényt is meg kell adnunk. Ehhez az „Összesítési beállítások…” gombra kell kattintanunk, majd a numerikus mezőknél kiválasztani a függvényt.
57. Ábra: Ez a lépés csak numerikus adatok esetében jelenik meg Mint az ábrán is látható, a választék nem teljes. De hát úgy kell nekünk, miért dolgozunk a varázslóval! Ha többre vágyunk, a „Tervező nézetben” még utólag módosíthatjuk a lekérdezést. Mindenesetre kattintsunk az „OK, majd a „Tovább” gombra.
58. Ábra: Itt választhatunk függvényt
87
ECDL Adatbázis-kezelés modul Elérkeztünk az utolsó lépéshez. Itt megadhatjuk a lekérdezés nevét, amit a „Milyen címet szeretne adni a lekérdezésnek?” mezőbe kell begépelnünk. Alapértelmezésben az elsőként felvett adattábla vagy lekérdezés nevét kínálja fel az Access. Ezen kívül még eldönthetjük, hogy mi célunk: ¾ a lekérdezés futtatása („A lekérdezés megnyitása az adatok megtekintése céljából”); ¾ vagy a „Lekérdezésterv módosítása”. Ez utóbbit választva a Tervező nézethez jutunk, ahol a tervezőrácsban elvégezhetjük az esetleg szükséges finomításokat.
6.3 Kereszttáblás lekérdezés varázsló
59. Ábra: Ez az utolsó lépés
A „Kereszttáblás lekérdezés varázsló” segítségével pontosan ugyanolyan lekérdezést hozhatunk létre, mint amit már megtárgyaltunk az „Egyszerű lekérdezéseknél” (6.1.6.). A különbség csak annyi, de az nagyon jelentős, hogy varázslóval a lekérdezés forrásaként csak egyetlen adattáblát, vagy lekérdezést lehet megadni. Ha ez nekünk nem felel meg, akkor két lehetőségünk van: ¾ nem varázslóval készítünk „Kereszttáblás lekérdezést”; ¾ vagy előbb létrehozunk egy „Választó lekérdezést” és azt használjuk a „Kereszttáblás lekérdezés varázsló” forrásául. Miután elindítjuk a varázslót, elsőként az adatok forrását kell kiválasztanunk. Mivel az adat forrása lehet lekérdezés is, kérhetjük azok felkínálását is a párbeszédablak középtáján lévő rádiógombokkal. Ha a forrást kiválasztottuk, kattintsunk a „Tovább” gombra.
60. Ábra: Kereszttábla készítése varázslóval A következő lépésben azokat a mezőket kell megadnunk (maximum hármat), melyek a kész lekérdezésben majd, mint sorfejlécek fognak szerepelni. A „Tervező nézetben” ezeknél állítottuk be a „Kereszttábla” sor értékét „Sorfejlécre”. A módszer már ismerős: a névre, majd a gombra kattintás. Ha ezzel is megvagyunk, megint csak a „Tovább” gombra kell kattintani. 61. Ábra: Adjuk meg a „Sorfejléceket”
88
Access XP alapokon A következő ablakban az „Oszlopfejlécet” kell hasonló módon megadni. Itt azonban csak egy mezőt lehet kijelölni. Természetesen most is a „Tovább” gombot kell megnyomni.
62. Ábra: Adjuk meg az „Oszlopfejlécet” Immáron az összegzendő mező felvétele, és az alkalmazandó függvény megadása van csak hátra. A mező megadását gondolom most sem kell részletezni, és a függvény kiválasztása sem okoz63. Ábra: Már csak egy lépés van hátra hat gondot. Természetesen most is „Tovább”. Az utolsó lépésben már csak a mentés nevét kell megadni, amihez már ábrát sem szerepeltetek, hiszen az „Egyszerű lekérdezés varázsló” utolsó lépése pontosan ugyanaz. Lekérdezés a lekérdezésben A lekérdezésekkel történő ismerkedés közben könnyen megzavarhat minket, hogy a lekérdezések készítésénél adatforrásként a rendszer a már elkészített lekérdezéseket is felajánlja. Ennek megértéséhez csak arra kell gondolni, hogy a lekérdezések eredménye szintén egy adathalmaz, vagyis ez is csak egy táblázat. Ennek ellenére, ha csak nem elkerülhetetlen, tartózkodjunk a lekérdezések újabb lekérdezések forrásaként történő szerepeltetésétől, mert az nagyon megnehezíti a hibakeresést. Nagy baj, ha hirtelen nem tudunk választani a varázslóban? Általában a párbeszédpanelek ránk kényszerítik azt, hogy a feltett kérdésekre azonnal válaszoljunk. Ugyanakkor a válaszok eredménye csak a „Befejezés” gomb megnyomása után látszik. Ennek ellenére nyugodtan dolgozhatunk, hiszen a kész lekérdezéseket a Tervező nézet segítségével bármikor módosíthatjuk. Így tehát nincsen olyan párbeszédpanel, amelynek rossz beállítása az egész munkánkat tönkretenné. Ugyanakkor célszerű, ha varázslót csak akkor használjuk, amennyiben egész pontosan tudjuk, hogy mit is akarunk majd eredményként megjeleníteni. A „Választó lekérdezések” számított mezői nem módosíthatók. Miért? Egy „Választó lekérdezésben” az adatok ugyanolyan formátumban jelennek meg, mintha egy adattáblát néznénk. A különbség azonban azonnal nyilvánvalóvá válik, ha megpróbálunk egy számított kifejezést módosítani: annak teljesítését a rendszer megtagadja. Ez érthető is, hiszen gondoljuk csak át: melyik mezőt módosítsa a rendszer, ha a kérdéses adat több mezőben található értékből kerül kiszámításra? SQL specifikus lekérdezés Az eddig tárgyalt lekérdezéseken kívül a „Lekérdezések” menü „SQL specifikus” opciójában további lehetőségeket is találunk. Egyesítő Ennek a lekérdezésnek a segítségével két vagy több tábla azonos mezőit egyesíthetjük egy lekérdezésben. Ezt használjuk például akkor, ha van egy Szállítók, és egy Vevők adattáblánk is, és attól függetlenül, hogy melyik állományban vannak, mi arra vagyunk kíváncsiak, hogy kik jöttek Győrből. Átadó lekérdezés A Microsoft Access átadó lekérdezés közvetlenül küld parancsokat az ODBC1 adatbázis-kiszolgálónak (például a Microsoft SQL Servernek). Átadó lekérdezés esetében csatolás nélkül, közvetlenül dolgozhatunk a kiszolgáló tábláival.
1 ODBC - Open Database Connectivity, azaz Nyílt adatbázis-összekapcsolás. Az SQL adatbázis-kiszolgálón, például a Microsoft SQL Serveren tárolt adatok elérésére vonatkozó szabvány. ODBC illesztőprogram segítségével lehetőség nyílik a Microsoft Access és ilyen SQL adatbázis-kiszolgáló közötti kapcsolat létrehozására, valamint az SQL adatbázis adatainak elérésére.
89
ECDL Adatbázis-kezelés modul Adatdefiniáló lekérdezés Adattáblák szerkezetének módosítására használható SQL parancsok segítségével. Használjuk inkább a már megtanult vizuális eszközöket a „Tervező nézetben”.
6.4 Azonosakat kereső lekérdezés varázsló Az „Azonosakat kereső lekérdezés varázsló” segítségével tulajdonképpen egy összesítést és csoportosítást is tartalmazó választó lekérdezést hozunk létre. Ez egy személyi nyilvántartó adattáblában például lehet az azonos lakóhelyen lakók számának a kigyűjtése, egy áruforgalmi adattábla esetén az egyfajta megnevezésű áruk átlagos ára, stb. Szinte minden megvalósítható, ugyanis az összesítéshez figyelembe veendő mezőt, és az összesítő függvényt majd mi adhatjuk meg (az utóbbit csak némi trükkel). Alkalmazásának az előnye az, hogy mivel csak egyszerű kérdésekre kell csak választ adni, a segítségével az is létrehozhat kigyűjtéseket, aki nem ért olyan mélyen az Accesshez. Persze hátránya is van: a lekérdezés csak egy adattáblára vonatkozhat. Igaz ezen segíthetünk, mégpedig pontosan úgy, mint a „Kereszttáblás lekérdezés varázsló” esetében: ¾ előbb létrehozunk egy olyan választó lekérdezést (akár az „Egyszerű lekérdezés varázslóval), amelybe összegyűjtöttük a szükséges mezőket; ¾ de az így megtervezett lekérdezéssel akár egy új táblát is készíthetünk (egyszerűen csak átváltunk „Táblakészítő lekérdezésre”), és az így kapott adattáblát alkalmazzuk adatforrásként. Ezt a varázslót a „Lekérdezés” objektumhoz tartozó „Új” gombra kattintással, majd az „Azonosakat kereső lekérdezés varázsló” opció kiválasztásával indíthatjuk. Első lépésként adjuk meg az adatforrást, majd kattintsunk a „Tovább” gombra.
64. Ábra: Az első lépés az adatforrás megadása Az újabb lapon azt válasszuk ki, hogy mely mezőben keressük a teljesen azonos értékeket. A módszer most is a szokásos: mezőnévre, majd a gombra kattintás. Lépjünk át a következő lépésre a „Tovább” gombbal.
66. Ábra: Általában csak „Tovább” A következő, immáron 3. ablakban megadhatunk még további mezőket is, melyek, mint tájékoztató adatok fognak megjelenni az egyes csoportokat képző adatok mellet. Én nem javaslom az alkalmazását, ugyanis akkor a csoportok több kisebb egységre bontva jelennek meg. Kattintsunk a „Tovább” gombra. Az újabb, be nem mutatott ablakban megad65. Ábra: Általában itt is csak „Tovább” hatjuk, hogy milyen néven kerüljön mentésre a lekérdezés (a felkínált név az adatforrás neve + „azonosak keresése”). Ezen kívül arról dönthetünk, hogy rögtön, vagy csak miután megnéztük „Tervező nézetben”, aztán futtatjuk a lekérdezést.
90
Access XP alapokon Amennyiben rögtön futtatjuk, természetesen akkor is megtekinthető a lekérdezés terve, hiszen mint ikonra kell kattintani. Ha fordítmondottam, ez nem más, mint egy „Választó lekérdezés”. Ehhez csak a va járunk el, és a tervet nézzük meg előbb, akkor viszont a futtatást indíthatjuk a már megszokott módon, a ikonra kattintással. Véleményem szerint a hozzáértők számára nincs igazán nagy jelentősége ennek a varázslónak. Mit fogunk látni egy „Azonosakat kereső lekérdezés” tervezőrácsában? Nagy valószínűséggel egy olyan „Választó lekérdezést” ahol szerepel egy olyan összegképzés, amelynél a csoportosítási alap („Group by”) a varázsló 2. lépésében az általunk megadott mező, az alkalmazandó függvény a „Count”. Ezen kívül még egy oszlopban is szerepel ugyanaz a mező, amelyben pedig a „First” függvényt látjuk. A „Group by” nem kerül kiíratásra, csak mint csoportképző szerepel. Ha nem csak az azonosak darabszámára vagyunk kíváncsiak, akkor a következőket tehetjük: ¾ „Tervező nézetben” adjunk hozzá a lekérdezéshez egy olyan mezőt, amelynek valamilyen összegzését akarjuk elvégeztetni; ¾ válasszuk ki az alkalmazni kívánt függvényt. Ha az előzőekben is említett példánál maradva nem csak arra vagyunk kíváncsiak, hogy hányszor szerepel egy adott áru a mozgásállományban, hanem az átlagos árára is, akkor adjuk hozzá a tervezőrácshoz az árat tartalmazó mezőt is, majd alkalmazzuk az „Avg” (átlag) függvényt.
6.5 Nem egyezőket kereső lekérdezés varázsló A „Nem egyezőket kereső lekérdezés varázslóval” is egy választó lekérdezést hozunk létre. Mint a kiegészítő információban majd láthatjuk is, semmi különlegesség nem lesz benne, csak egy kis trükk. De mikor is kell alkalmaznunk? Akkor, ha van két olyan adattábla (esetleg lekérdezés), melyben azonos jellegű adatokat is tárolunk, és mi azokra vagyunk kíváncsiak, melyek csak az egyikben szerepelnek. Például keressük azokat a szállítókat, akiktől nem vettünk még árut. Ezek után lássuk a varázsló használatát. Az első ablakban azt az adatforrást kell kiválasztanunk, amelynek mezőit majd, mint kimenő adatokat akkor szeretnénk látni, ha a másik adatforrásban nem szerepel (példánknál maradva ez a „Szállító törzs”). Kattintsunk a „Tovább” gombra.
67. Ábra: Válasszuk azt az adatforrást, amelynek adatait ki akarjuk listázni, ha a másikban nem szerepel. A következő ablakban a másik adatforrást kell megadnunk, azt, amelyben ha az előzőleg megadott adatforrás egy-egy eleme nem szerepel, akkor akarjuk kilistázni (esetünkben ez a „Termék törzs”, vagy ha végrehajtottuk a 9. feladatban szereplő módosítást, a „Tranzakció tételei”), majd „Tovább”. 68. Ábra: Most adjuk meg a másik adatforrást (amelyben keressük a nem egyezőket)
91
ECDL Adatbázis-kezelés modul A következő ablakban azokat a mezőket kell megadni, melyben a nem egyező adatokat keressük. Ha a két adattábla között kapcsolat áll fenn, akkor a kapcsolómezők automatikusan kijelölésre kerülnek (ez most a „Szállító kód). Természetesen most is a „Tovább” gombra kell kattintanunk.
69. Ábra: Itt adjuk meg azokat a mezőket, amelyekben az adatokat keressük
70. Ábra: Végül állítsuk össze azokat a mezőket, melyeket ki akarunk listázni
Az újabb ablakban adjuk meg azokat a mezőket, amelyeket ki akarunk listázni, ha az elsőnek megadott tábla adott mezőjének értéke nem szerepel a második táblában. Mivel az utolsó lépés most is ugyanaz a mentés, mint a többi varázslónál, ezért nem is szerepeltetem a képét.
Mit kapunk a „Nem egyezőket kereső varázsló” használatával? Egy olyan „Választó lekérdezést” melyben a két adatforrás között kapcsolat áll fenn. A tervezőrácsban természetesen megtalálható az a mező, amelyben keressük az elsőként megadott tábla kiválasztott adatát, és ha nem szerepel, akkor kell a listában megjelennie. Ezért ennél a mezőnél fog feltételként megjelenni egy „Is Null” kifejezés.
24. Feladat: Gyűjtsük ki egy lekérdezéssel azokat a partnereket, akikkel még nem történt semmilyen tranzakció. A lekérdezést mentsük „Nem jó partnerek” néven. Megoldás: Indítsuk el a „Nem egyezőket kereső lekérdezés varázslót”. Első lépésben adjuk a lekérdezéshez a „Szállító törzs” táblát, majd „Tovább”. A következő lépésben a „Tranzakció tételei” táblát is adjuk a lekérdezéshez, és „Tovább”. Adjuk meg az összehasonlítandó mezőt (ez automatikusan megtörténik, mivel a kapcsoló mező tölti be ezt a szerepet), és „Tovább”. Az ezt követő lépésben ki kell jelölni azokat a mezőket, melyeket szerepeltetni szeretnénk a lekérdezés kimeneti listájában: ¾ Szállító kód; ¾ Szállító név; ¾ Irányítószám; ¾ Város; ¾ Utca és házszám. Mentsük el a lekérdezést „Nem jó partnerek” néven.
7. Jelentések Amennyiben az adattáblákban tárolt adatokat a legkülönfélébb szempontok figyelembevételével áttekinthető formában szeretnénk kinyomtatni, akkor erre a legcélszerűbb úgynevezett „Jelentést” létrehozni. Ugyan a lekérdezések is kinyomtathatóak, de egy jelentés sok szempontból jelentősen többet nyújt. A könynyebb összehasonlítás érdekében most is egy táblázatban hasonlítom össze a két, hasonló célra alkalmazható eszközt:
92
Access XP alapokon Jelentés Az információk eleve nyomtatható formátumra vannak tervezve. A jelentésekben a tételes adatok és az összegzések egyszerre is megjeleníthetőek. Az adatokat akár diagramban ábrázolva is megjeleníthetjük.
Lekérdezés Az információk nem formázottak. A lekérdezésekben vagy csak a tételes adatok, vagy csak az összegzések jeleníthetőek meg. Az adatok megjelenítése nem lehet grafikus.
42. Táblázat: Jelentés és lekérdezés összehasonlítása A táblázatban szereplő előnyökért cserébe viszont egy jelentés elkészítése sokszor több időt is igényel. Egy-egy konkrét feladat esetén mindezek figyelembevételével már könnyen eldönthetjük, hogy melyiket alkalmazzuk. De van egy olyan eset is, amikor csak és kizárólag a jelentés jöhet szóba: ez a levélcímkék nyomtatása. Természetesen erről a lehetőségről is ejtünk majd szót. Feltétlenül kell a jelentések készítéséhez nyomtató? Előbb arról szeretnék szólni, hogy egyáltalán miért merül fel a kérdés. Nos, a jelentések segítségével elsősorban nyomtatott formában megjelenő kigyűjtéseket fogunk készíteni. Pontosan ezért a jelentések már a képernyőn is a majdani nyomtatott formához hasonlóan fognak megjelenni. Valahogy úgy, mint egy levél az „Nyomtatási képen” a Word programban. Mivel azonban egy-egy oldal nyomtatáskori képe a nyomtatótól is függ, már a képernyőn is csak akkor lehet a jövőbeni kinyomtatott formának megfelelően megjeleníteni, ha a program tudja, hogy milyen nyomtatón lesz majd kinyomtatva. Ezért csak akkor tudunk majd jelentést minden vonatkozásban formázni, ha már nyomtatót is telepítettünk a gépünkre. Ellenkező esetben programverziótól függő módon viselkedik az Access: ¾ A 97-es verzióban egyáltalán nem lehet semmilyen jelentést készíteni, mert a program a jelentés helyett csak egy hibaüzenetet küld. Ezt elkerülendő még akkor is telepítsünk valamilyen nyomtatót, ha valójában nem rendelkezünk nyomtatóval. ¾ Az XP verzió bizonyos formázásokat nem hajt végre. Például egy „Jelentés varázslóval” készülő jelentésnél hiába adunk meg fekvő tájolást, a jelentés álló lapon készül el. Ez legalább ugyanolyan kellemetlen.
7.1 Új jelentés létrehozása Egy új jelentés létrehozása a lekérdezéseknél már megismert eljáráshoz hasonló módon lehetséges: az adatbázis-ablakban a „Jelentések” objektumot kell választani, majd meg kell nyomni az „Új” nyomógombot. A lehetőségek jó része ismerősen cseng: ¾ Tervező nézet; ¾ Jelentés varázsló; Itt válasszuk ki ¾ AutoJelentés: oszlopos; az adatforrást ¾ AutoJelentés: táblázatos; ¾ Diagram varázsló; ¾ Címke varázsló. Fontos tudnunk, hogy egy-egy jelentés ugyan egyaránt alapulhat akár több adattáblán és lekérdezésen is, de ha az 71. Ábra: Új jelentés kezdése „AutoJelentés” opciót alkalmazzuk, az adatok csak egyetlen adatforrásból származhatnak. A jelentések készítésekor célszerű a varázsló alkalmazása, és csak a finomításokat Tervező nézetben elvégezni.
7.1.1 Jelentés varázsló A „Jelentés varázsló” elindítása után elsőként majd azokat a mezőket kell megadnunk, amelyeket a jelentésben szerepeltetni kívánunk. A varázslóval készített jelentés azonban számított mezőt csak akkor tartalmazhat, ha előtte egy lekérdezésben megadjuk annak kiszámítási módját. Ezt ne értsük félre! Numerikus adatokból lehetséges összegzéseket készíteni, de tételes számított adat csak úgy szerepelhet, ha előbb egy lekérdezéssel létrehozzuk. Ez egy konkrét példán keresztül talán jobban érthetővé válik:
93
ECDL Adatbázis-kezelés modul A „Tranzakciók tételei” tábla tartalmazza az egyes tranzakciók során mozgatott áru mennyiségét („Mennyiség”) és egységárát („Nettó egységár”), de a kettő szorzatából számítható összes érték csak akkor szerepelhet egy jelentésben, ha előbb egy lekérdezésben a szorzatot létrehozzuk (mint ahogy azt „Partnerenkénti forgalom” néven elmentett feladatban már meg is tettük). Ugyanakkor lehetséges a „Mennyiség” és a „Nettó egységár” mezők alapján összegzéseket készíteni (összeg, átlag, maximum, stb.). Ezért előbb egy olyan lekérdezést kell készíteni, melyben öszszeállításra kerülnek a szükséges adatok, és csak második lépésként erre alapozva létrehozni a jelentést. De ha az ábrázolandó adatok nem egy adatforrásból származnak, akkor is célszerűbb így eljárni. Ezek után nézzük a varázsló konkrét használatát. Az első lépésében a mezők megadása magától értetődik: ¾ a tábla, vagy lekérdezés kiválasztása; ¾ a kérdéses mező nevére kattintás; ¾ majd a ikonra kattintás (amennyiben az összes mezőt szerepeltetni szeretnénk a jelenikonra kattintsunk). tésben, a Ha a szükséges mezőket megadtuk, nyomjuk 72. Ábra: A Jelentés varázsló első lépésében adjuk meg meg a „Tovább” gombot. a szerepeltetni kívánt adatokat Több forrásból is megadhatunk mezőket? Igen. Akárhány egymással kapcsolatban lévő táblából összeválogathatjuk a mezőket. Több tábla esetén csak annyit plusz munkánk lesz, hogy a mezők megadása előtt mindig ki kell választani a megfelelő táblát is. Ugyanez vonatkozik az űrlapokra is.
A következő lépésben az úgynevezett „Csoportszinteket” kell megadnunk. Ide olyan mezőt vagy mezőket kell felvenni, melyek tartalma több rekord esetében is megegyezik. Ilyen lehet például a minta táblában szereplő adatok közül a „Szállító név”, hiszen nyilvánvalóan több tranzakciót (eladás, vétel, visszáru, stb.) is lebonyolítunk egy-egy szállítóval. A párbeszédablak bal oldalán felsorolásra kerül az összes, a jelentésbe felvett mező. Kattintsunk a csoportosítási alapként szerepeltetni kívánt mezőre, majd a ikonra. Ennek hatására az ablak jobb oldalán kiemelésre kerül a kérdéses mező (az ábrán a „Szállító név” mezőt már így látjuk). Több „Csoportszint” megadása esetén azt is meg kell határoznunk, hogy melyik legyen a magasabb prioritású csoport. Elsőként a legmagasabb szintet, majd sorban egymás után az egyre alacsonyabb szinteket kell megadni. Ha nem felel meg a csoportosítási sorrend, utólag is módosíthatjuk. Ehhez a rossz szinten lévő „Csoportosítási” mezőre kell kattintani, majd a ikonok közül a megfelelővel a jó szintre mozgatni. A folytatáshoz nyomjuk meg a „Tovább” gombot. A harmadik lépésben két feladatunk is lesz: 1. megadhatjuk a nem kiemelt adatok sorrendjét
94
73. Ábra: A második lépésben a csoportosítási szempontokat kell megadnunk
Itt választhatjuk ki a törzsrekordok sorrendjét meghatározó mezőt
74. Ábra: A harmadik lépésben a törzsrekordok sorrendjét szabhatjuk meg
Access XP alapokon (ezeket „törzsrekordoknak” fogjuk hívni); 2. másrészt megszabhatjuk azt is, hogy a numerikus adatok közül melyek kerüljenek valamilyen módon összegzésre. A sorrend megadásához nyissuk le az első legördülő listát, és válasszuk ki a megfelelő mezőt. Az, hogy pillanatnyilag éppen növekvő, vagy csökkenő a rendezés, a kulcs melletti gombról olvasható le (ez a megoldás eléggé megtévesztő, mert akkor lesz csökkenő, ha rákattintunk a „Növekvő” feliratra, és fordítva). A további listákkal második, harmadik és negyedik kulcsot is megadhatunk. Az összegzések megadásához előbb az „Összesítési beállítások…” gombra kell kattintanunk, majd a megjelent ablakban a megfelelő numerikus mezők mellett ki kell jelölni az alkalmazni kívánt függvényt. A rendelkezésünkre álló függvények az „Össz” (összegzés), az „Átl” (átlag), a „Min” (minimum) és a „Max” (maximum). Ugyanebben az ablakban dönthetjük el két rádiógombbal, hogy csak az összesítések, vagy a törzsadatok és az összesítések is szerepeljenek-e a listában. Végül arról is itt rendelkezhetünk, hogy a tételek százalékos megoszlása is listázásra kerüljön-e. A beállítások után az „OK” gombot megnyomva ahhoz az ablakhoz térünk vissza, ahonnét jöttünk. A folytatáshoz természetesen most is a „Tovább” gombra 75. Ábra: Az összesítési beállítások kell kattintani. megadására szolgáló ablak A következő, immáron negyedik ablakban a lap és az adatok elrendezését szabhatjuk meg. Ehhez különösebb magyarázatot nem fűznék, próbáljuk ki a lehetőségeket. Ezeken kívül itt kérhetjük az oszlopszélességek automatikus beállítását is. Ha a nekünk tetsző beállítást kiválasztottuk, kattint-
76. Ábra: Az adatok elrendezését itt állíthatjuk be sunk a „Tovább” gombra. Az utolsó előtti lépésben a jelentés úgynevezett „Stílusát” szabhatjuk meg. A „Stílus” a gyakorlatban a háttér és a szövegek megjelenési formájának meghatározását fogja jelenteni. Itt tényleg nincs más lehetőségünk, mint a próbálkozás. Ha beállítottuk, a „Tovább” gombbal folytassuk a munkát.
77. Ábra: A stílus megadása
95
ECDL Adatbázis-kezelés modul A befejezésben tulajdonképpen a jelentés mentése történik meg, amihez természetesen meg kell adni a nevét. Ezenkívül azt dönthetjük még el itt, hogy a folytatásban a nyomtatási képe, vagy a Tervező nézete jelenjen meg a jelentésnek. Általában célszerűbb a nyomtatási képet választani, és amennyiben nem tetszik, csak akkor kérjük a ikonnal a Tervező nézetet.
78. Ábra: Az utolsó lépésben a mentési nevet adhatjuk meg Természetesen a „Befejezés” gombbal kell zárni a munkát. Összegfokozatok A szakzsargonban az olyan listákat, amelyekben a tételek értékei mellett valamilyen halmozott értékeket is szerepeltetnek, összegfokozatos, vagy kontrolfokozatos listának szokták hívni.
79. Ábra: A kész jelentés nyomtatási képe
25. Feladat: A „Jelentés varázsló” segítségével listázzuk ki az eladásokat úgy, hogy gyűjtsük csoportokba a szállítókat (vevőket), és árucikkeket, és összesítsük az eladásokat. A kész jelentést mentsük el „Eladások” néven. Megoldás: Kezdjünk egy új jelentést úgy, hogy az objektumok közül a „Jelentésekre” állunk, majd megnyomjuk az „Új” gombot. Válasszuk ki az „Eladások” adattáblát („Táblakészítő lekérdezéssel” hoztuk létre egy korábbi feladatban), és a „Jelentés varázsló” első lépésében adjuk meg a következő sorrendben a mezőket: ¾ Szállító név; ¾ Termék név; ¾ Bizonylatszám; ¾ Mennyiség; ¾ Mértékegység név; ¾ Nettó egységár; ¾ Kif1. ikonra kell kattintanunk. Ha ezzel végeztünk, nyomjuk meg a Ehhez sorban a mezőnevekre, és a „Tovább” gombot. A következő lépésben kattintsunk előbb a „Szállító név”, azután a „Termék név” mezőkre, és persze mindkétszer a ikonra (ezzel a csoportosítási alapokat adtuk meg). Lépjünk most is tovább. Rendezési sorrendnek válasszuk ki a „Bizonylatszám” mezőt. Kattintsunk az „Összesítési beállítások…” gombra, majd pipáljuk ki az „Össz” oszlopban a „Kif1” mezőt. A folytatáshoz az „OK” és a „Tovább” gombokra kell kattintanunk. A következő lépések közül az elsőben válasszuk ki a „Balra igazít1” elrendezést, és a „Fekvő” tájolást, majd a „Tovább” gomb után kapott követő ablakban az „Irodai” stílust, és megint csak „Tovább”. Az utolsó lépésben nincs más dolgunk, mint a „Befejezés” gombra kattintás.
96
Access XP alapokon 7.1.2 AutoJelentés Az „AutoJelentés” segítségével készíthetjük el a leggyorsabb módon a jelentéseket. Két fajtája létezik: 1. Oszlopos: ¾ Nem túl szerencsés az elrendezése, ugyanis minden mezőItt kell kiválasztani a adat előtt újra és újra kiírásra kerülnek a mezőnevek. Akkor jelentés adatforrását célszerű mégis alkalmazni, ha a jelentéssel az egyes rekordokat önállóan akarjuk kiíratni. Ez mondjuk egy olyan paraméteres lekérdezésen alapulhat, amelynek csak egyetlen rekord felel meg. 2. Táblázatos: ¾ A mezőnevek a jelentés tetejére, az egyes rekordok adatai pedig szép sorban egymás alá kerülnek kiírásra. Egy-egy 80. Ábra: AutoJelentés készítése rekord egy sornak fog megfelelni. Az AutoJelentés alkalmazása akkor célszerű, ha nagyon gyorsan, teljesen automatikusan szeretnénk jelentést készíteni. Mindössze egyetlen feladatunk lesz: ki kell jelölni, hogy a jelentés mely adattábla vagy lekérdezés alapján készüljön, aminek megadása ez esetben csak előzetesen, az „Új jelentés” ablakban lehetséges. Ezután viszont már semmi dolgunk, ugyanis teljesen automatikusan elkészül a jelentés (stílusa a legutóbbi jelentés stílusa lesz). Pontosabban egy feladatunk mégiscsak lesz: a jelentésből való kilépéskor a program megkérdezi, hogy mentjük-e a jelentést. Igenlő válasz esetén a felkínált név az adatforrás, azaz az adattábla, vagy a lekérdezés neve lesz. Mikor és melyik AutoJelentést használjuk? A kész adatbázis-kezelő rendszerek használatában rutint szerzettek már tapasztalhatták, hogy a legtöbb program két fő modulból áll: ¾ a törzsadatok karbantartásával foglalkozó részekből; ¾ és a gépre vitt folyamat eseményeinek, vagyis a mozgás állományoknak (5.1.3.) a kezeléséből. A törzsadatok karbantartása szinte kivétel nélkül a következő funkciókat kell, hogy tartalmazza: ¾ új rekord hozzáadása; ¾ rekord módosítása; ¾ rekord törlése; ¾ és egy-egy rekord, illetve a teljes tábla listázása. Egy törzs jellegű teljes adattábla listázására tökéletesen megfelel a táblázatos, egy-egy rekord listázására pedig az oszlopos AutoJelentés.
26. Feladat: Az „AutoJelentés: oszlopos” segítségével listázzuk ki a „Mértékegység törzs” adattáblát. Mentsük is el megegyező néven. Megoldás: Kezdjünk az új jelentést úgy, hogy a „Jelentések” objektumon állva rákattintunk „Új” gombra. Válaszszuk ki a „Mértékegység törzs” adattáblát, és az „AutoJelentés: oszlopos” opciót. Más dolgunk nincs is, mint kilépéskor a feltételezett néven elmenteni a jelentést. 27. Feladat: Az „AutoJelentés: táblázatos” segítségével listázzuk ki a „Termék törzs” és a „Szállító törzs” adattáblákat, és persze most is mentsük el a jelentéseket. Megoldás: Ugyanúgy kell eljárni, mint az előző feladatban, de most a „Termék törzs” és a „Szállító törzs” táblákat, és az „AutoJelentés: táblázatos” opciót válasszuk ki. A mentés most is a szokásos módon történik.
7.1.3 Címke varázsló A „Címke varázsló” ugyanarra a célra szolgál, mint a Word körlevelek címke opciója: sok partnernek lehet vele úgy levelet küldeni, hogy a címzést öntapadó címkékre nyomtatjuk rá, és azokat ragasztjuk fel a küldeményre. Ezeket az öntapadó címkéket (szokás őket etikettnek is hívni) szabványos formátumokban
97
ECDL Adatbázis-kezelés modul vásárolhatjuk meg. Mivel azonban országonként eltérő méretek is léteznek, a címkék sajátosságai alapján új formákat is felvehetünk. Elsőként ennek módszerét nézzük meg. Milyen címkét vegyünk? Létezik A4-es nagyságú méretre vágott címke etikett és leporelló formátumban is. Az előbbit tintasugaras és lézer, az utóbbit mátrixnyomtatóhoz használhatjuk. Természetesen a nekünk megfelelőt kell választanunk. Arra azonban minden esetben ügyeljünk, hogy egy printer sem tud a lap teljes felületére nyomtatni. Ezért feltétlenül olyan etikettet válasszunk, amelynek körbe margót is vágtak. Ha nem így teszünk, komoly nehézségeink támadnak a megfelelő elhelyezés kialakításakor.
7.1.3.1 Új címke méret felvétele, meglévő címke paraméterek módosítása, címke törlése A „Címke varázsló” elindítása után Kattintsunk a „Testreszabás…” gombra. Az „Új címkeméret” ablakban válasszunk a célunknak megfelelő lehetőséget a következőkből: ¾ „Új munkafüzet…” új címketípus felvétele; ¾ „Szerkesztés” címke jellemzőinek módosítása; ¾ „Törlés” feleslegessé vált címke törlése. 81. Ábra: Új címkét itt kell felvenni A címke törléséről nincs mit elmondani, a szerkesztés pedig gyakorlatilag megegyezik az új címke felvételével: módosíthatjuk a címke nevét és jellemző méreteit. Az egyes méretek megadásához a méretdobozba kell kattintani, és a szokásos módon a rossz adatot kijavítani. A „Mértékegység”, a „Címketípus” és a „Tájolás” paraméterek értelmezése magától értetődik. Befejezésül kattintsunk az „OK” gombra. 28. Feladat: Próbáljunk felvenni egy új méretű címkét. Megoldás: Indítsuk el a „Címke varázslót” (ehhez előbb ki 82. Ábra: Adjuk meg a jellemző méreteket kell választani egy adattáblát vagy lekérdezést). Kattintsunk a „Testreszabás…”, majd az „Új munkafüzet…” gombokra. Mérjük meg az etikett valódi paramétereit, és adjuk meg őket szép sorban. Befejezésül kattintsunk az „OK” gombra.
7.1.3.2 Címke megcímzése Az első lépés természetesen a címke pontos típusának kiválasztása. Ha olyan címkével rendelkezünk, amelyet nem találunk a felsorolásban, akkor az imént tárgyalt módszerrel vegyük fel.
83. Ábra: Válasszuk ki a megfelelő címkét
98
Access XP alapokon A második lépésben csak annyi dolgunk van, hogy kiválasszuk a címzés karakterformázási jellemzőit. Ezzel kapcsolatban azonban egy fontos megjegyzés: a megadott formátum az egész címzésre egységesen fog vonatkozni.
85. Ábra: Állítsuk össze a tartalmat
84. Ábra: Adjuk meg a karakterformátumot A következő lépésben kell összeállítanunk a címke tartalmát. Egy-egy mező a ikonra kattintással vehető fel a címkére, ha pedig új sorba kívánunk lépni, akkor az Enter billentyűt kell megnyomnunk. Arra is ügyeljünk, hogy a szóköz billentyű segítségével a mezők között hagyjunk üres helyet.
Az utolsó előtti lépésben az esetleges rendezési kulcsot adhatjuk meg. Erre elsősorban akkor lehet szükségünk, ha a leveleket és a borítékokat össze kell párosítani.
87. Ábra: Adjuk meg a mentési nevet
86. Ábra: Adjuk meg az esetleges rendezési kulcsot Elérkeztünk az utolsó lépéshez, ahol a mentési nevet kell megadnunk. Ez alapértelmezésben „Címkék xxx” lesz, ahol „xxx” helyén a tábla, vagy a lekérdezés neve szerepel.
29. Feladat: Készítsünk címkéket a „Szállító törzs” minden rekordjához. Megoldás: Indítsuk el a „Címke varázslót”, de előtte válasszuk ki a „Szállító törzs” adattáblát. Válasszuk ki a megfelelő címkét, majd „Tovább”, és megint „Tovább”, mivel az alapértelmezett betűtípus többnyire megfelel. Kattintsunk sorban a következőkre: ¾ „Szállító név” és ; ¾ „Irányítószám”, majd ; ¾ egy szóköz; ¾ „Város”, azután ; ¾ „Utca és házszám” és ; Kattintsunk kétszer is a „Tovább”, majd a „Befejezés” gombra.
99
ECDL Adatbázis-kezelés modul 7.1.4 Diagram varázsló Azt már az Excel program használatakor is tapasztaltuk, hogy a numerikus adatokat a leggyorsabban akkor tudjuk kiértékelni, ha azokat valamilyen módon grafikusan jelenítjük meg. Erre az Excel „Diagram varázslóját” használtuk, és az Access egyező nevű szolgáltatása is erre a célra fog szolgálni. Valószínűleg azt is tapasztaltuk már, korántsem mindegy azonban, hogy milyen diagramban ábrázoljuk az adatokat, hiszen más célra szolgál egy vonal- és egy kördiagram (azt az Excel XP alapokon című könyvem tárgyalja). Így már nincs is más feladatunk, mint az Access „Diagram varázsló” használatának megbeszélése. Az „Új jelentés” ablakban természetesen most is előbb adatforrást kell választani, és csak azután lehet elindítani a „Diagram varázsló” opciót. Ha nem így járunk el, hibaüzenetet kapunk. Az első lépésben, a diagramban megjelenítendő adat párokat kell megadnunk (hiszen egy diagramban mindig két-két adat egymáshoz való viszonyát ábrázoljuk). Ennek módszere a már megszokott: előbb a mezők nevére, majd a gombra kell kattintanunk.
88. Ábra: Adjuk meg az ábrázolandó adatokat
89. Ábra: Válasszuk ki a diagram típusát A harmadik lépésben az egyes adatmezők szerepét kell meghatároznunk. Ehhez a mezőneveket tartalmazó kis szürke dobozokat kell a diagram megfelelő területére húzni. Ha a független változó több rekordban is ugyanazt az értéket veszi fel, akkor lehetőség van valamilyen összesítő függvény alkalmazására is. Példánknál maradva, amennyiben többször is vásárolnak ugyanazok a cégek a boltunkban, lehetséges az egyes vásárlásokat külön-külön is ábrázolni, de megoldható az egyes vásárlások átlagának, összegének, stb. ábrázolása is. Ehhez a lehetőséghez úgy jutunk, ha duplát kattintunk a most alkalmazott függvény nevét tartalmazó címkére (esetünkben az ábrán ez most a „Sum-Kif1”). Az alkalmazható függvények: ¾ Nincs nincs összegzés; ¾ Sum sima összeg; ¾ Average számtani átlag; ¾ Min legkisebb érték; ¾ Max legnagyobb érték; ¾ Count az előfordulások száma.
100
A második lépésben a diagram típusát kell kiválasztani. Egy tanács: lehetőleg térhatású diagramokat válasszunk, mivel azok mindig látványosabbak.
90. Ábra: Határozzuk meg az adatmezők szerepét
Access XP alapokon Az utolsó lépésben viszont nem a mentési nevet, hanem a diagram címét kell megadnunk. Az alapértelmezett cím megegyezik az adatforráséval. Menteni kilépéskor, vagy Tervező nézetbe történő átváltás után a mentő ikonnal lehetséges. 30. Feladat: Egy „Térhatású kördiagramban” („tortadiagramban”) ábrázoljuk az egyes vevőink összesített eladásait. Mentsük is a jelentést „Eladások diagram” néven. Megoldás: 91. Ábra: Adjuk meg a diagram címét Az „Új jelentés” ablakban válasszuk ki az „Eladások” adattáblát (egy korábbi feladatban hoztuk létre egy „Táblakészítő lekérdezéssel”), majd indítsuk el a „Diagram varázslót”. Adjuk meg a „Szállító név” és a „Kif1” mezőket, azután kattintsunk a „Tovább” gombra. Válasszuk ki a megfelelő diagramtípust (alsó sorban balról a második) és „Tovább”. A következő lépésben nem lesz dolgunk, mivel az Access automatikusan a „Sum” összegző függvényt alkalmazza, és az egyes mezők is jó szerepet kapnak: a „Kif1” kerül a diagramra, a „Szállító név” a magyarázatba. Így csak a „Tovább” gombra kell kattintanunk. A diagram címének felkínált „Eladások” feliratot is fogadjuk el a „Befejezés” gombbal. Kilépéskor mentsük a jelentést „Eladások diagram” néven.
7.1.5 Jelentés: létrehozása, módosítása tervező nézetben Elérkeztünk a jelentések „Tervező nézetének” tárgyalásához. Most nem fogunk olyan részletesen mindre kitérni, mint az adattábláknál, vagy a lekérdezéseknél, aminek az oka elsősorban az, hogy mivel az Access az objektum orientált alkalmazásokhoz hasonlóan viselkedik, rengeteg korábban már megadott tulajdonságot automatikusan örökölnek a jelentések. Másrészt sok, csak speciális esetben alkalmazandó lehetőséget rejt a téma, melyekről úgy érzem, felesleges lenne beszélnünk. Például csak a kiegészítő információkban ejtünk szót a számított kifejezések alkalmazásáról, hiszen ha egy számított értéket szeretnénk a jelentésben szerepeltetni, akkor eddigi tudásunkkal meg tudjuk már oldani a problémát: előbb létrehozunk egy olyan lekérdezést, melyben megadjuk a kérdéses kifejezést, és erre a lekérdezésre alapozva készítjük el a jelentést. A „Tervező nézetet” az „Új lekérdezés” ablakból ugyan úgy is el lehet indítani, hogy nem adjuk meg előre az adatforrást, én mégis azt tanácsolom, hogy maradjunk a már megszokott módszernél: ¾ előbb kijelöljük adatforrást; ¾ majd elindítjuk a megfelelő, esetünkben „Tervező nézet” opciót. Ha nem jelöljük ki az adatforrást Ha nem jelöljük ki előre az adatforrást, akkor nem tudunk adatmezőt hozzáadni a jelentéshez, ugyanis az eszközsoron meg sem jelenik az úgynevezett mezőlista ikon ( ), amellyel a jelentéshez adatmezőket lehetne hozzáadni. Ugyan utólag is megadhatunk adatforrást, de sokkal egyszerűbb előre gondolkodni. Utólag úgy tudjuk megadni az adatforrást, hogy a jelentés függőleges és vízszintes vonalzójának találkozásánál lévő szimbólumra kattintunk, aminek hatására az alakot vesz fel (ha már eleve ilyen, nem kell rákattintani). Ezután kattintsunk a „Tulajdonságok” ( ) ikonra, majd lapozzunk az „Adat” regiszterhez. Ott nyissuk le a „Rekordforrás” listát, és válasszuk ki a megfelelő adattáblát vagy lekérdezést. Ha ilyen nincs, mert több forrásból kívánunk dolgozni, akkor akár egy új lekérdezést is összeállíthatunk. Ehhez csak a ikonra kell kattintanunk. Számított mező szerepeltetése jelentésben (nem külső lekérdezésre alapozva) A megoldás az előző kiegészítő információ végén már elhangzott: a ikonra kattintva hozzunk létre egy lekérdezést. A lekérdezésbe vegyük fel a számított kifejezést a már tanult módon a ikonra kattintással. Az összeállítás után lépjünk ki az „SQL utasítás” ablakból, de a változásokat természetesen mentsük el. Ha ezután a ikonra kattintunk, akkor a mezőlista ablak helyett egy „Select…” ablak nyílik meg, benne a lekérdezés mezőivel. A mezők között természetesen a számított mezők is szerepelnek
101
ECDL Adatbázis-kezelés modul „Kif1”, „Kif2”, stb. néven. A kérdéses ablak címsorában megjelenik az a „SELECT …” SQL utasítás is, amit tulajdonképpen a lekérdezéssel állítottunk össze (ha nem látszik, nagyítsuk meg az ablakot). ¾ ¾
A Tervező nézet elindítása után két új objektum jelenik meg a képernyőn: egy „Eszközkészlet” nevű új eszközsor (ha nincs, a ikonnal bekapcsolható); és maga a jelentés ablak.
7.1.5.1 A jelentés (és a jelentésablak) részei A jelentés ablak egymástól jól elkülöníthető részekre osztható fel. Az egyes szakaszok között egy-egy vízszintes szürke sáv húzódik, amelyben az adott szakasz neve is kijelzésre kerül. Az egyes részek magassága az alatta lévő a szürke sáv felső szélére állva módosítható. Minden jelentés a következő szakaszokból állhat: 1. Jelentésfej: ¾ Mivel az ebben a szakaszban megadott információ csak a jelentés első lapján jelenik meg, itt a főcímen kívül elsősorban általános információkat célszerű szerepeltetni (például szerző, dátum, stb.). 2. Oldalfej: ¾ Az itt megadott adatok minden lap tetején kijelzésre kerülnek. Legáltalánosabb használata az, hogy a törzs szakaszban megadott adatok fejlécét szerepeltetik benne. Az első lapon a „Jelentésfej” megelőzi. 3. Mező1 fejléc: ¾ Az adatokat általában valamilyen szempont szerint csoportosítani is szokás (természetesen csak olyan 92. Ábra: Egy üres jelentés tervező nézetben mező lehet a csoportosítási alap, amelynek tartalma több rekordban is megegyezik). Ebben a szakaszban a csoportosítási alap kerül kijelzésre. Ennek azonban három feltétele is van: legyen csoportosítási alap, kérjük a szakasz kijelzését, és adjuk meg benne a megfelelő információt. Ezek módszeréről később esik szó. 4. Mező2 fejléc: ¾ Szerepe gyakorlatilag megegyezik a „Mező1 fejlécével”. Akkor lesz jelentősége, ha az adatokat több szempont szerint is csoportosítjuk. A magasabb szintű csoport a „Mező1” lesz, azt követi a „Mező2”, „Mező3”, stb. Kijelzésének feltétele is az előző szakaszénak megfelelően alakul. 5. Törzs: ¾ Itt fognak szerepelni a tényleges adatok. Ide tehát majd a mezőneveket kell felvennünk, melyek helyén az egyes rekordokban szereplő tényleges értékek fognak majd megjelenni. 6. Mező2 lábléc: ¾ Itt a másodlagos csoportosítási alap gyűjtött értékeit szokás megadni. Az alkalmazható függvényekről később esik szó. Nincs tévedés, a „Mező2 lábléc” megelőzi a „Mező1 láblécet”. Ez logikus is, hiszen az alacsonyabb szempontú gyűjtést előbb kell összegezni, mint a magasabb szempontút. 7. Mező1 lábléc: ¾ Szerepe megegyezik a „Mező2 láblécével. 8. Oldalláb: ¾ Az itt megadott információk minden lap alján megjelennek. Legáltalánosabb felhasználási módja, az oldalszámozás. 9. Jelentésláb: ¾ Ez a szakasz a jelentés legvégére kerül, de megelőzi az utolsó oldal „Oldalláb” szakaszát. Célszerűen az összes rekordra vonatkozó összegzések szerepelnek általában a szakaszban. Az információk minden szakaszban úgynevezett „vezérlőelemek” segítségével kerülnek megjelenítésre. Ez egy jelentés esetében többnyire egyszerű „Beviteli mező” (mi eddig „adatmezőként” emlegettük), hiszen csak ki szeretnénk listázni az adatokat.
102
Access XP alapokon Nincs „Jelentésfej” és „Oldalfej”. Miért? Azért, mert nincs bekapcsolva. A „Jelentésfej/Jelentésláb” és az „Oldalfej/Oldalláb” szakaszok ki-be kapcsolása a „Nézet” menü megfelelő pontjaival lehetséges. Ha oldalszámozást vagy dátum és idő kijelzést szúrunk be, akkor az „Oldalfej” vagy „Oldalláb” szakasz (ahová a kérdéses információt kértük), automatikusan bekapcsolódik. Például, ha az „Oldalfejbe” kérjük az oldalszámozást, akkor az „Oldalfej”.
7.1.5.2 Vezérlőelemek Az Access terminológiájában az adatok bevitelére használható párbeszédelemeket, valamint a párbeszédelemekhez tartozó magyarázó feliratokat vezérlőelemeknek hívják. 7.1.5.2.1 A vezérlőelemek típusai A „vezérlőelemek” sok-sok egyedi, jellegzetes tulajdonsággal rendelkeznek. Ezeket megvizsgálva legalább két fő szempont figyelembevételével illik csoportosítani őket: ¾ a mezőadatokkal való kapcsolatuk szerint; ¾ és a megjelenési formájuk szerint. 7.1.5.2.1.1 A vezérlőelemek típusai a mezőadatokkal való kapcsolatuk szerint Ebben a szempontban azt vesszük figyelembe, hogy a „vezérlőelem” és az adattábla, vagy lekérdezés egy-egy mezője kapcsolatban áll-e egymással. Természetesen csak két lehetőség van, vagy létezik ilyen kapcsolat, vagy nem. Ezt a szakzsargonban „kötött” és „kötetlen” vezérlőelemnek szokás nevezni. Kötött vezérlőelem ¾ Egy kötött vezérlőelem mindig szoros kapcsolatban áll egy adattábla vagy egy lekérdezés valamely mezőjével. Amennyiben a mező tartalma megváltozik, akkor természetesen a vezérlőelemben megjelenő mezőérték, vagyis a jelentésben látható tényleges adat is módosul (de ez egy „Űrlap” estén fordítva is igaz (8.)). Kötetlen vezérlőelem ¾ A kötetlen vezérlőelem semmilyen Access objektummal nem áll kapcsolatban. Ebbe a típusba elsősorban magyarázó feliratok fognak tartozni (bár az Access saját terminológiájában a vonalak, képek, stb. is vezérlőelemnek számítanak). 7.1.5.2.1.2 A vezérlőelemek típusai megjelenésük szerint A vezérlőelemek típusai már ismerősek kell, hogy legyenek, hiszen megegyeznek a Windows szabványos párbeszédelemeivel. Tekintsük át csak a legfontosabbakat. Amelyeket nem szerepeltetem a felsorolásban, azokra nagy valószínűséggel nem is lesz szükségünk. A következő elemek kötött, és kötetlen módon egyaránt alkalmazhatóak: ¾ „Beviteli mező”; ¾ „Vezérlőelem-csoport” (csak a kiegészítő információkban tárgyaljuk); ¾ „Váltógomb”; ¾ „Választókapcsoló” (lehet, hogy „Rádiógomb” néven ismerjük, és ne keverjük össze a „Váltógombbal”); ¾ „Jelölőnégyzet” ¾ „Kombinált panel”; ¾ „Listapanel”; ¾ „Parancsgomb” (az űrlapoknál tárgyaljuk, mert általában ott kerül alkalmazásra); ¾ „Karton” (szintén csak az űrlapoknál tárgyaljuk); ¾ „Segédűrlap/segédjelentés” (ez teljesen új elem, mi csak az űrlapoknál fogjuk majd használni); ¾ „További vezérlők” (további többtucat vezérlőelem, mint például „Naptár”). Az alábbi elemek mindenképpen kötetlenek: ¾ „Felirat”; ¾ „Oldaltörés”; ¾ „Vonal”;
103
ECDL Adatbázis-kezelés modul „Téglalap”; „Kép”.
¾ ¾
7.1.5.2.2 A vezérlőelemek kezelésének általános szabályai A szabályok ismertetése előtt először próbáljuk meg átgondolni, hogy egyáltalán milyen feladatok merülhetnek fel a vezérlőelemek használatával kapcsolatban. Nos, nagyjából „csak” a következők: ¾ a vezérlőelem elhelyezése a jelentésen; ¾ a vezérlőelem törlése; ¾ a vezérlőelemek típusának megváltoztatása; ¾ egy kötetlen vezérlőelem mezőhöz kötése, vagy éppen egy kötött elem kötöttségének megszüntetése; ¾ a vezérlőelem átméretezése; ¾ a vezérlőelemek pozíciójának megváltoztatása; ¾ a vezérlőelem formázása. A felsorolt feladatok legnagyobb részét a vezérlőelem kötöttségétől és típusától függetlenül ugyanúgy kell elvégezni. Ahol a lehetőségek függenek a típustól és a kötöttségi állapottól, ott erre utalni is fogok. A következőkben ezeknek a feladatoknak a megoldási módszereit próbálom meg összefoglalni. 7.1.5.2.2.1 Beviteli mező elhelyezése a jelentésen Egy jelentésben a kötött vezérlőelemek közül általában csak „Beviteli mező” fog szerepelni. Egy kötött beviteli mezőt úgy tudunk a jelentésünkben elhelyezni, hogy a „Mezőlista” ablakból a jelentés megfelelő szakaszára húzzuk a mezőnevet (ha nincs „Mezőlista” ablakunk, kattintsunk rá a ikonra). Ennek hatására a jelentés adott területén megjelenik két kis objektumkeret: ¾ A két objektumkeretből a bal oldali egy „kötetlen” kapcsolatú, „felirat” típusú ve93. Ábra: zérlőelem lesz. A keretben a mező neve fog szerepelni. Amennyiben azonban az A „Mezőlista” adattábla tervezésekor adtunk meg „Cím” mezőtulajdonságot, akkor nem a mezőnév, hanem az lesz a tartalma (5.2.2.2.3.). A továbbiakban, erre a magyarázó feladatot betöltő keretre „Címke” néven fogunk hivatkozni. ¾ A jobb oldali egy „kötött” kapcsolatú, de „beviteli mező” típusú vezérlőelem, amiben szintén a mező neve fog szerepelni. Amennyiben azonban az adatforrásban (az adattáblában vagy lekérdezésben) a kérdéses mező eleve nem adatmező, hanem más, akkor a táblában deklarált típusnak megfelelő vezérlőelem jelenik meg a jelentésben is. Például, ha a mező az adattáblában egy legördülő lista (mert mondjuk a „Keresés varázsló…” segítségével hoztuk létre a mezőt), akkor itt is egy legördülő lista típusú vezérlőelemet kapunk. Amennyiben ez nem felel meg elképzeléseinknek, akkor mielőtt a „Mezőlista” ablakból a mezőt a jelentés megfelelő szakaszára húznánk, kattintsunk a ikonra. A „Váltógomb”, a „Választókapcsoló”, és a „Jelölőnégyzet” vezérlőelemeket csak „Igen/Nem” adattípus (5.1.6.2.1.6.) esetében van értelme egy mezőhöz kötve alkalmazni, hiszen csak két állapotot tudnak megjeleníteni. Ha azonban egy „Vezérlőelem csoportba” vesszük fel ezeket a típusokat, akkor máris más a helyzet (ennek értelmezése és létrehozásának módszere csak a kiegészítő információban kerül ismertetésre). Hogy lehet más típusú vezérlőelemet megadni? ¾ ¾
¾ ¾
¾
¾
Az előzőekből tulajdonképpen kiderült: előbb kattintsunk rá az eszközkészleten az alkalmazni kívánt típusra; és csak ezután húzzuk rá a mezőt a jelentés megfelelő szakaszára. Vezérlőelem-csoport értelmezése, létrehozása „Vezérlőelem-csoport” létrehozása kattintsunk rá a ikonra; azt a mezőt, amelyhez a vezérlőelem-csoportot szeretnénk rendelni, húzzuk rá a jelentés megfelelő szakaszára (ez általában a törzs szakasz); ezek után válasszuk ki a csoportban elhelyezni kívánt vezérlőelem-típust a ikonok közül a megfelelővel; majd a csoport keretén belül annyi darab vezérlőelemet helyezzünk el egymás alatt, vagy mellett, ahány értéket felvehet a mező;
104
Access XP alapokon az elemeket rendezzük el esztétikus formába (ennek módszere hamarosan bemutatásra kerül); a címkék feliratát adjuk meg az 1, 2, 3, stb. értékekhez tartozó magyarázatokra (ennek értelmezése a következő kiegészítő információban olvasható). Szám és „vezérlőelem-csoport” kapcsolata Bár a „Választókapcsoló”, a (Rádió gomb), a „Váltógomb” és a „Jelölőnégyzet” önállóan csak két állapotot képes kifejezni (vagy igen, vagy nem), többet egy csoportban elhelyezve számot is lehet hozzájuk rendelni. A szám tartalmú mező értéke (mely szöveg, vagy szám adattípusú mező egyaránt lehet), és a kiválasztott (kipipált, vagy benyomott) állapotú vezérlőelem között a következő összefüggés áll fenn: Mező értéke vezérlőelemek állapota ¾ 1 az 1. elem → kiválasztott, többi elem → nem kiválasztott ¾ 2 a 2. elem → kiválasztott, többi elem → nem kiválasztott ¾ 3 a 3. elem → kiválasztott, többi elem → nem kiválasztott ¾ stb. ¾ ¾
7.1.5.2.2.2 Vezérlőelemek törlése Bár szerintem tulajdonképpen felesleges róla beszélni, a teljesség kedvéért mégis szerepeltetem ezt a kérdést is. A törölni kívánt vezérlőelemre kell kattintani, majd a Delete billentyűt megnyomni. Ha a „Címkét” töröljük, attól még a mező megmarad, fordítva viszont mindkettő törlődik. Ennek az oka az, hogy a címkére lehet, hogy nem is lesz szükség (hiszen azt inkább az „oldalfejen” szokás elhelyezni (7.1.5.1.)). 7.1.5.2.2.3 Vezérlőelemek típusának megváltoztatása Ezt a feladatot nagyon egyszerűen hajthatjuk végre. Indítsuk el a kérdéses vezérlőelem helyi menüjét (nem a „címkéhez” tartozót), majd a megjelenő lehetőségek közül válasszuk ki a „Típus megváltoztatása” opciót. Természetesen nem minden típus lesz választható: Kiinduló típus Beviteli mező Listapanel (lista) Kombi panel (legördülő lista) Választókapcsoló (rádió gomb) Váltógomb Jelölőnégyzet
Választható típusok (kötés megmarad) Listapanel (lista), Kombi panel (legördülő lista) Beviteli mező, Kombi panel (legördülő lista) Listapanel (lista), Beviteli mező Váltógomb, Jelölőnégyzet Választókapcsoló (rádió gomb), Jelölőnégyzet Választókapcsoló (rádió gomb), Váltógomb
További típus (kötés felbomlik) Felirat Felirat Felirat
43. Táblázat: Vezérlőelem típusának megváltoztatása 7.1.5.2.2.4 Kötés megváltoztatása Mint tanultuk, a vezérlőelemek lehetnek „kötöttek” és „kötetlenek”. Ha egy „kötetlen” elemet „kötötté” szeretnénk tenni, vagy fordítva, akkor a következő módon kell eljárni: ¾ indítsuk el a vezérlőelem helyi menüjét (vigyázzunk, hogy ne a hozzá tartozó címkéét indítsuk), és ikonra; válasszuk a „Tulajdonságok” opciót, vagy csak jelöljük ki a vezérlőelemet, és kattintsunk a ¾ lapozzunk az „Adat” regiszterhez, és a „Mező, vagy kifejezés” mezőben adjuk meg azt a mezőt, amelyhez a vezérlőelemet kötni szeretnénk (ha éppen ellenkezőleg, a kötést szeretnénk megszüntetni, a kérdéses mezőt töröljük üresre). 7.1.5.2.2.5 Vezérlőelemek átméretezése Logikus lenne, hogy a kötött vezérlőelemeket nem kell átméretezni. Amikor ugyanis a „Mezőlista” ablakból a mező nevét a jelentés megfelelő szakaszára húzzuk, a vezérlőelem mérete a mező jellemzői alapján automatikusan adódhatna. Ez azonban sajnos nem így van, a mező és a vezérlőelem mérete között sajnos nincs összefüggés. A vezérlőelemek átméretezésére több módszer is létezik: ¾ egy, vagy több elemet egyszerre kijelölve az egérrel történő húzásos módszerrel; ¾ egy, vagy több elemet egyszerre kijelölve, a méretjellemzők bevitelével; ¾ több vezérlőelemet egyszerre kijelölve, egy mintához történő igazítással.
105
ECDL Adatbázis-kezelés modul 7.1.5.2.2.5.1 Méretezés az egérrel történő húzással
Ez esetben az átméretezés úgy valósítható meg, hogy a vezérlőelemet (esetleg többet is egyszerre) kijelöljük, majd a vezérlőelemet a „Méretező négyzeteknél” megfogva, húzással a kívánt méretűre állítjuk.
Mozgató négyzet
Hogy lehet több vezérlőelemet egyszerre kijelölni? A Windows „Intéző” programjában (de bármely egyéb ablakában is) többszörös kijelölést úgy lehet végrehajtani, hogy egy objektumot kattintással kijelölünk, a többi kijelölendő objektumra pedig a Ctrl billentyű nyomása közben kattintottunk rá. De úgy is dolgozhattunk, hogy egy üres területről indulva az egér bal gombjával húzás műveletet végezve egy kis szaggatott vonallal határolt téglalapot kaptunk. Ami a vonalon belülre került, az kijelöltté vált. Több ilyen téglalapon belüli objektumokat is kijelölhettünk, ha a második, harmadik, stb. téglalap húzásánál nyomtuk a Ctrl billentyűt. Az Accessben ugyanígy kell eljárni, csak ebben a programban a Ctrl helyett a Shift billentyűt kell használni.
Méretező négyzetek
94. Ábra: Vezérlő elemek részei
7.1.5.2.2.5.2 Méretezés a jellemzők bevitelével ¾
¾
¾ ¾
Ezzel a módszerrel a vezérlőelemek méretezésének menete a következőképpen alakul: jelöljük ki a méretezendő elemet, esetleg elemeket (a címke és a vezérlőelem két külön méretezhető objektum); indítsuk el valamelyik elem helyi menüjét, és válasszuk a „Tulajdonságok” opciót, vagy a kijelölés után egyszerűen csak kattintsunk a ikonra; lapozzunk a „Formátum” regiszterhez; adjuk meg a „Szélesség” és a „Magasság” mezőkbe a kívánt értékeket (ha több elemet is kijelöltünk, a hivatkozott mezőkben csak akkor szerepel az addigi érték, ha valamennyi kijelölt elem adott mérete megegyezik). További formátumjellemzők
A „Formátum” regiszteren még nagyon sok további formátumjellemzőt is találunk, melyek nagy része (én legalábbis úgy gondolom) magától értetődik, illetve egy-két próbálkozás után világossá válik. 7.1.5.2.2.5.3 Méretezés mintához történő igazítással
Amennyiben több vezérlőelemet egyforma méretűre szeretnénk állítani, akkor az is elég, ha egyet átméretezünk, majd a többit annak méreteihez igazítjuk. Ennek módszere a következő: ¾ egy vezérlőelemet méretezzünk valamely korábban ismertetett módszerrel a megfelelőre; ¾ jelöljük ki a mintát, és a hozzá igazítandó többi vezérlőelemet is; ¾ nyissuk meg a „Formátum” menüt, majd abból válasszuk a „Méretezés” elemet, és azon belül a megfelelő további almenüpontot. A lehetőségek a következők: ¾ Legmagasabbra; ¾ Legalacsonyabbra; ¾ Legszélesebbre; ¾ Legkeskenyebbre. Ezzel a módszerrel csak az a baj, hogy ha nagyon közeliek a méretek, akkor többnyire sasszem, de mindenképpen jó arányérzet szükséges a helyes választáshoz. 7.1.5.2.2.6 A vezérlőelemek pozíciójának megváltoztatása A vezérlőelemeket feltétlenül esztétikusan kell elhelyezni, azaz a sorokat és oszlopokat egy vonalba, az egyes elemeket pedig pontosan egyenlő távolságra lenne célszerű elhelyezni. Mivel ez fontos követelmény, az Access természetesen erre is biztosít lehetőséget, mégpedig többet is: ¾ egy, vagy több elemet egyszerre kijelölve az egérrel történő húzásos módszerrel; ¾ egy, vagy több elemet egyszerre kijelölve, a pozíció jellemzők bevitelével; ¾ több vezérlőelemet egyszerre kijelölve, egy mintához történő igazítással.
106
Access XP alapokon Ezek a lehetőségek megegyeznek az átméretezésnél alkalmazhatókkal, és a módszerek is meglehetősen hasonlatosak lesznek. 7.1.5.2.2.6.1 Pozícionálás az egérrel történő húzással
Ha rákattintunk egy vezérlőelemre, vagy az esetleg hozzá tartozó címkére, akkor a vezérlőelem és a címke is kijelölésre kerül. Pontosabban, amire kattintottunk, azon az objektumon megjelennek a méretező és a mozgató négyzetek is, a másik objektumon csak a mozgató négyzet. Ezek értelmezését korábban, a méretezésnél (7.1.5.2.2.5.1.) egy ábra segítségével tisztáztuk. Egy vezérlőelemet: ¾ mozgathatunk a címkéjével egyszerre; ¾ pozícionálhatjuk csak a címkét; ¾ vagy mozgathatjuk csak a vezérlőelemet. A vezérlőelem és címkéjének egyszerre történő mozgatása Ha a vezérlőelemet és a hozzá tartozó címkét együtt szeretnénk mozgatni, akkor álljunk arra az objektumra, amelyre eredetileg rákattintottunk, és amikor az egérkurzor alakot vesz fel, az egérrel egyszerűen húzzuk a megfelelő helyre. A vezérlőelem vagy a címkéje önállóan történő mozgatása Ha a vezérlőelemet vagy a hozzá tartozó címkét külön-külön szeretnénk mozgatni, akkor álljunk az önállóan mozgatandó objektum bal felső sarkában lévő mozgató négyzetre, és amikor az egérkurzor alakot vesz fel, az egérrel húzzuk az új helyére. Amennyiben többszörös kijelölést hajtottunk végre a mozgatás előtt, akkor mindezek a logikának sajnos csak nagyjából megfelelően módosulnak: ¾ vagy az összes vezérlőelemet és címkét mozgathatjuk alakú egérkurzor segítségével; ¾ vagy csak a kérdéses vezérlőelemeket, vagy csak a kérdéses címkéket mozgathatjuk alakú egérkurzorral. 7.1.5.2.2.6.2 Pozícionálás a jellemzők bevitelével
Ennek a módszernek az alkalmazását nem ajánlom, de ha mégis használata mellett döntünk, nagyon óvatosan járjunk el. Miért? Mert ha több elemet is kijelölünk, és mindkét pozíciójukat megadjuk, akkor az összes elem egy helyre kerül. ¾ jelöljük ki a pozícionálandó elemet, esetleg elemeket (a címke és a vezérlőelem két külön pozícionálható objektum); ¾ indítsuk el valamelyik elem helyi menüjét, és válasszuk a „Tulajdonságok” opciót, vagy a kijelölés után egyszerűen csak kattintsunk a ikonra; ¾ lapozzunk a „Formátum” regiszterhez; ¾ adjuk meg a „Balra” és a „Fel” mezőkbe a kívánt értékeket (ha több elemet is kijelöltünk, akkor csak az egyiket). 7.1.5.2.2.6.3 Pozícionálás mintához történő igazítással
Ha a vezérlőelemeket egy sorba vagy oszlopba, továbbá egyenlő távolságra szeretnénk rendezni, akkor a következők szerint járjunk el: ¾ egy-egy vezérlőelemet pozícionáljunk a két szélső helyre; ¾ a középen lévő elemek közül egyet helyezzünk el úgy, hogy oszlopos elrendezésnél vízszintesen, soros elrendezésnél pedig függőlegesen kerüljön a jó helyzetbe; ¾ jelöljük ki az összes vezérlőelemet; ¾ válasszuk ki a „Formátum” menü „Igazítás” pontjának a megfelelő elemét az egyetlen már jó helyen lévő elem alapján („Balra / Jobbra / Fel / Le”); ¾ befejezésül válasszuk ki a „Formátum” menüből, oszlopos elrendezés esetén a „Függőleges távolság”, soros elrendezés esetén a „Vízszintes távolság” „Egyenlő” opcióját. 7.1.5.2.2.7 A vezérlőelemek formázása A vezérlőelemek formázására sok lehetőségünk van, melyek közül a legfontosabbak a következők:
107
ECDL Adatbázis-kezelés modul Formátum hozzá tartozó ikon ¾ számformátum és tizedesek száma nincs ¾ kitöltő és háttérszín ¾ betű és előtérszín ¾ vonal és szegélyszín ¾ vonal és szegélyvastagság ¾ speciális hatás A lehetőségek közül csak azokról beszélünk külön is, melyekkel kapcsolatosan esetleg problémák léphetnek fel. Számformátum és tizedesek száma A számformátumról, mint mezőtulajdonságról korábban már nagyon részletesen beszéltünk. Nos a lehetőségek most is pontosan ugyanazok (5.2.2.2.1.). Amennyiben azonban még az adattáblában beállítottuk az optimális számformátumot, akkor a jelentés is örökli azt. Most már talán kezdjük érteni, hogy miért beszéltük meg olyan részletesen az adattáblákat: ha ott jól adjuk meg a mezőtulajdonságokat, jól építjük fel a kapcsolatokat, akkor a későbbi munka során nagyon sok minden automatikusan csak jó lehet! De hogy járjunk el, ha mégsem felel meg az örökölt formátum (vagy, mert az adatforrásban nincs is megadva a kívánt alak, így a jelentésnek nincs is mit örökölnie)? Kattintsunk a formázandó vezérlőelemre, majd a ikonra. Lapozzunk a „Formátum” regiszterhez, és adjuk meg a „Formátum”, esetleg a „Tizedes helyek” mező tartalmát. Ez utóbbiról korábban kevés szó esett, de azt hiszem, ezek ellenére nem jelenthet problémát az értelmezése. Kitöltő és háttérszín Ha egy vezérlőelemnek adunk a legördülő ikonnal színt, akkor az kitöltő szín, ha a lekérdezés egy szakaszának, akkor az háttérszín lesz. Ez utóbbi lehetőséget ne nagyon alkalmazzuk, mert hamar tintapatront, vagy toner kazettát kell cserélni nyomtatónkban. Speciális hatás Ezzel az eszközzel a vezérlőelem térhatásúvá alakítható. A speciális hatások legördülő ikont lenyitva a következő effektusok közül választhatunk: ¾ sima ¾ domború ¾ homorú ¾ mart ¾ árnyékolt ¾ cizellált 7.1.5.2.2.8 További vezérlőelemek A most röviden bemutatásra kerülő eszközök tulajdonképpen nem is igazi vezérlőelemek. Az adatokkal való kapcsolatukra nézve mindenképpen kötetlenek. 7.1.5.2.2.8.1 Kép
A „Jelentésfejben” célszerű lehet, mondjuk egy cégemblémát elhelyezni, elsősorban esztétikai szemikonpontok miatt. Ehhez csak a ra kell kattintani, majd húzással kijelölni a kép helyét. Ennek hatására 95. Ábra: Kép beszúrása megnyílik a „Kép beszúrása”, amely valójában egy egyszerű tallózó ablak. Keressük ki a képet, majd nyomjuk meg az „OK” gombot.
108
Access XP alapokon A megjelenő kép akkora lesz, mint amekkora területet neki kijelöltünk. Mozgatása és méretezése nem jelenthet gondot a Word program ismeretében. Ugyanakkor meglepetésünkre lehet, hogy csak a kép közepét látjuk a jelentésben. Miért? Azért, mert beállítható, hogy a kép és a neki megadott hely hogyan viszonyuljon egymáshoz. Kattintsunk a ikonra, majd a „Formátum” fül „Méretezési mód” mezőjéből válaszszuk a következőkből a nekünk megfelelőt: ¾ Kivágás A képből annyi jelenik meg, amennyi a neki kijelölt helyen elfér. Alapértelmezésben a kép közepe kerül a kijelölés közepére, azaz mintegy körbevágva lesz látható a kép. ¾ Kitöltés A kép oly módon kerül átméretezésre, hogy a neki kijelölt helyet kitölti. Ez lehet, hogy a kép torzulását is okozza, hiszen nem biztos, hogy a függőleges és a vízszintes összenyomás, vagy nyújtás egyező mértékűre adódik. ¾ Méretezés Mint a „Kitöltés”, de a kép nem torzul, mert csak az egyik, a kisebb arányszámú nagyítást, vagy kicsinyítést igénylő irányban fogja a kép kitölteni a helyét. Ugyanitt lehet azt is beállítani, hogy a kép „Csatolt”, vagy „Beágyazott” legyen-e. 7.1.5.2.2.8.2 Vonal és téglalap
Ezeknek az objektumoknak a használata már semmilyen nehézséget nem okozhat. Természetesen utólag a vonal és a téglalap tulajdonságai is módosíthatóak: ¾ átméretezhető és mozgatható; ¾ a kitöltő és vonalszíne, illetve a vonalvastagsága megváltoztatható; ¾ továbbá speciális hatások rendelhetők hozzá (homorú, domború, stb.).
7.1.5.3 Egy, a jelentés minden szakaszára vonatkozó beállítás („Oldalbeállítás”) Az oldalbeállításról azért kell beszélnünk, mert egy kicsit más paramétereket kell megadni, mint a legtöbb egyéb programokban. Természetesen a lehetőségeket most is a „Fájl” menü „Oldalbeállítás” pontjában találjuk, de a párbeszédablaknak három füle van. Csak azokat az elemeket is96. Ábra: Az oldalbeállítás „Margók” és „Oszlopok” regisztere mertetem, melyek újdonságot jelentenek az eddig tanultakhoz képest. Az „Oldal” regisztert nem is tárgyaljuk, mert ott semmi újdonságot nem találunk.
n
„Margók” regiszter
„Csak adatnyomtatás” Ha ezt a jelölőnégyzetet kipipáljuk, akkor csak az adatmezők tartalma kerül listázásra.
„Oszlopok” regiszter
Az ezen a lapon megadott paramétereknek elsősorban címkék nyomtatásakor lesz jelentősége. Ez esetben viszont a címke jellemzői alapján minden adat automatikusan beállításra kerül. n „Rácsbeállítások” ¾ Oszlopok Azt adhatjuk meg, hogy a törzs szakaszban a rekordokat hány oszlopba listázza ki a program. Ez megegyezik a címkék oszlopszámával. ¾ Sorköz Meghatározza, hogy a törzs szakaszban az egyes sorok milyen távol kerüljenek egymástól. Ez felel meg a címkék közötti függőleges távolságnak.
109
ECDL Adatbázis-kezelés modul Oszlopköz Az oszlopok közötti távolságot vezérli. Megfelel a címkék közötti vízszintes távolságnak. „Oszlopméret” Szélesség A címkék szélességének felel meg. Magasság A címkék magassága. Az egészet Ennek megértéséhez egy kis magyarázatot szeretnék fűzni. Ha megadjuk a margókat, az oszlopok számát, az oszlopok szélességét, és az oszlopközt, akkor az adatok lehet, hogy „túlhatározottak” lesznek. Ez annyit jelent, hogy nem adják ki pontosan a lap szélességét. Ha ezt el szeretnénk kerülni, akkor pipáljuk ki „Az egészet” jelölőnégyzetet. Ilyenkor az oszlopméreteket a program a többi adat és a lapméret alapján automatikusan kikalkulálja.
¾
n ¾ ¾ ¾
7.1.5.4 Még egyszer a jelentések részeiről Miután a jelentéseken használható legfontosabb elemeket és az alkalmazásukkal kapcsolatos kérdések legnagyobb részét megismertük, célszerűnek látszik feladatorientáltan még egyszer áttekinteni a jelentések egyes szakaszait. 7.1.5.4.1 A „Jelentésfej” Mint a jelentések részeinek felsorolásakor leszögeztük, ebben a szakaszban globális feliratokat célszerű elhelyezni. Ennek módszere nagyon hasonlít a Word úgynevezett „Szövegdobozának” használatához: ¾ válasszuk ki az „Eszközkészlet” eszközsorról a „Felirat” elemet a ikonnal, majd húzással adjuk meg a felirat helyét; ¾ gépeljük bele a megadandó szöveget; ¾ majd formázzuk meg. Amennyiben nagyon igényes jelentést szeretnénk készíteni, szúrjunk be egy képet is. 31. Feladat: Az a munka, amelyet ezzel a feladattal kezdünk el, több feladat megoldásával fog teljesen elkészülni. Készítsünk egy új jelentést Tervező nézetben az „Eladások” adattábla felhasználásával. A „Jelentésfejben” adjuk meg a jelentés címét, készítőjének nevét, a dátumot, és egy képet. Mentsük el „Összes eddigi eladások” néven (hiszen egy „Eladások” nevű jelentést korábban már készítettünk). Megoldás: Az „Új jelentés” ablakban válasszuk ki az „Eladások” adattáblát (egy „Táblakészítő lekérdezéssel” hoztuk létre korábban), majd indítsuk el a „Tervező nézetet”. A lap méretének beállítása Amennyiben a megnyíló „Jelentés” ablakban nem látszik a „Jelentésfej”, kapcsoljuk be a „Nézet” menü „Jelentésfej/-láb” pontjával. Elsőként a lap szélességét állítsuk be. A margók nagysága 25 mm mindkét oldalon (ez az alapbeállítás, és mi nem módosítottuk), az A4-es lap mérete 210*297 mm. Ez alapján a kihasználható szélesség 210-2*25=160 mm. A szélességet úgy lehet állítani, hogy ráállunk a jobb szélső függőleges rácsvonalra, és amikor az egérkurzor alakja kettős nyíl, az egérrel elhúzzuk a lap szélét jelző jobb szélső rácsvonalat 160 mm-ig (azt a vonalzón követhetjük nyomon, hogy éppen hol tartunk). Vezérlőelemek megadása Válasszuk ki a ikonnal a „Felirat” vezérlőelemet, majd az egér húzásával jelöljük ki a cím helyét. Gépeljük be: „Összes eddigi eladások”. ikonnal a „Feliratot” (ha az előző választáskor dupIsmét válasszuk ki a lát kattintottunk rá, akkor most nem kell ismét kiválasztani), majd húzással jelöljük ki a készítő nevének helyét. Gépeljük be: „Készítette: Nógrádi 97. Ábra: László” (természetesen mindenki a saját nevét írja). Lapméret beállítás Most a „Beviteli mező” vezérlőelemet válasszuk a ikonnal, majd jelöljük ki a dátum helyét. Meg fog jelenni egy címke is, de ezzel most ne törődjünk. A címke tartalma egyelőre „Szövegx”, a beviteli mezőé pedig „Kötetlen”.
110
Access XP alapokon Cím formázása Kattintsunk rá a címet tartalmazó vezérlőelemre, és a vízszintes méretét nagyítsuk a lap teljes szélességével egyezőre, és húzzuk a lap tetejére, majd formázzuk meg: ¾ a ikonnal állítsuk be a „Kitöltő és háttérszínt” világoskékre; ¾ a „Betű és előtérszínt” a ikonnal állítsuk sötétkékre; ¾ a „Speciális hatások” közül válasszuk a „Domborút” a ikonnal; ¾ a Betűméretet állítsuk 24 pontosra, jellegét félkövérre, igazítását középre zártra (ezt már remélem, nem kell ikonokkal segíteni); ¾ válasszuk ki a „Formátum” menüből a „Méretezés”, azon belül az „Ahogy fér” opciót. A cím, mivel középre igazított volt a szöveg, pontosan a lap közepére került. Az utolsó lépésben alkalmazott „Ahogy fér” opciót korábban nem tárgyaltuk, de a hatása alapján valószínűleg világos a működése. Név formázása Kattintsunk rá a nevünket tartalmazó vezérlőelemre, és húzzuk a lap bal szélére, a cím alá kb. fél centivel, majd formázzuk meg: ¾ a ikonnal állítsuk be a „Kitöltő és háttérszínt” a címével egyezőre; ¾ a „Betű és előtérszínt” is állítsuk a címével egyezőre a ikonnal; ¾ a „Speciális hatások” közül most is a „Domborút” válasszuk a ikonnal; ¾ a Betűméretet azonban csak 14 pontosra állítsuk, jellege most is legyen félkövér, az igazítása azonban balra zárt; ¾ válasszuk ki a „Formátum” menüből a „Méretezés”, azon belül az „Ahogy fér” opciót. Dátum megadása és formázása Kattintsunk rá a „Szövegx” tartalmú elemre, és töröljük a Delete billentyűvel. ikonra. A megjelent „Beviteli meMost a „Kötetlen” tartalmú elemet jelöljük ki, majd kattintsunk a ző” című tulajdonság ablakban lapozzunk át az „Adat” regiszterre, majd kattintsunk bele a „Mező vagy kifejezés” mezőbe, és idézőjelek nélkül gépeljük be: „=Date()” (ezt közvetlenül a „Kötetlen” felirat helyére is begépelhettük volna, de a következő lépésben úgyis a tulajdonság ablakban kell dolgoznunk). Még mindig a „Beviteli mező” tulajdonság ablakban lapozzunk át a „Formátum” regiszterre, és a „Formátum” mezőben a legördülő listából válasszuk ki a „Hosszú dátum” opciót, majd zárjuk be a tulajdonság ablakot (ha nem zárjuk be, az sem baj). A formázást most egy a Word programból valószínűleg már ismert eszközzel, a formátumfestő ecsettel fogjuk végrehajtani. Ehhez előbb kattintsunk a nevünket tartalmazó elemre, majd a formátumfestő ikonra ( ), végül a „=Date()” tartalmú elemre. Befejezésül állítsuk jobbra zártra, és húzzuk a lap jobb szélére, szintén kb. fél centire a cím alá (nem baj, ha nem sikerül pontosan egy magasságba állítani, azt úgyis korrigáljuk). Kattintsunk a Shift billentyű lenyomása mellett a nevünket tartalmazó vezérlőelemre (ennek hatására a nevünk, és a korábban már kijelölt dátum egyaránt kijelölt állapotba került). Legutolsó lépésként válasszuk ki a „Formátum” menüből az „Igazítás”, majd abból szükség szerint a „Fel”, vagy a „Le” opciót. Kép beszúrása Válasszuk ki a ikont, majd adjuk meg a jelentésen a kép helyét. A megnyíló „Kép beszúrása” ablakból válasszuk ki egy nekünk tetsző fájlt (a képen a „C:\WINDOWS\A préri szele.bmp” fájl került beszúrásra). A képet a méretező pontokkal húzzuk ki úgy, hogy töltse be a teljes „jelentésfejet”, majd kattintsunk rá a ikonra, és a „Kép” tulajdonságablakában lapozzunk a „Formátum” regiszterhez. A „Méretezési mód” mező tartalmát állítsuk át „Kitöltöttre”. Befejezésül nyissuk meg a „Formátum” menüt, és válaszszuk ki a „Hátraküldés” menüpontot.
111
ECDL Adatbázis-kezelés modul A nyomtatási kép segítségével nézzük meg, hogy mire jutotikonra tunk. Ehhez csak a kell kattintani. Amennyiben nem látjuk jól az egész lapot, a nagyítás legördülő listából (a tartalma minden valószínűség szerint ) válasszuk ki a „Méretre” elemet. Térjünk vissza a tervező nézethez (
98. Ábra: A kész jelentésfej
), és mentsük a munkánkat (
) „Összes eddigi eladások” néven.
7.1.5.4.2 Az „Oldalfej” és „Törzs” Mint korábban megbeszéltük, az „Oldalfejen” az adatoszlopok magyarázó feliratait szokás szerepeltetni. Véleményem szerint ennek a legegyszerűbb megoldási módja az, hogy a „Törzzsel” egy időben alakítjuk ki az „Oldalfejet” is a következő módon: 1. A „Mezőlista” ablakból húzzuk a jelentés „Törzs” szakaszában vízszintesen nagyjából a megfelelő helyére, függőlegesen pedig a tetejére az adatmezőt (a címke a második, harmadik, stb. mezőnél rálóghat egy már korábban helyére húzott mezőre). 2. Ezután a címkéjével végezzük el az alábbiakat: ¾ a „címkét”, melyben megjelenik a mező neve (csak nem jó helyen) jelöljük ki, majd a vágólapra vágjuk ki (Ctrl - X); ¾ kattintsunk bele az „Oldalfejbe”, majd a vágólap tartalmát illesszük be (Ctrl - V); ¾ hagyjuk a „címkét” ott, ahová került, vagyis az „Oldalfej” bal felső sarkában, és a Shift nyomása közben kattintsunk rá a hozzá tartozó adatmezőre (így egyszerre lett kijelölve az összetartozó címke és az adatmező); ¾ válasszuk ki a „Formátum” menüből az „Igazítás”, majd az első elemnél a „Balra”, a többinél a „Jobbra” opciót; ¾ alakú egérkurzorral a két elemet egyszerre húzzuk vízszintes irányban a kívánt helyre (függőlegesen nem is lehet mozogni). Ezzel nagyjából készen vagyunk, már csak két finomítás van hátra: ¾ ha az adatmező típusa „szöveg”, akkor még a következőket is hajtsuk végre: „Formátum” menü, „Igazítás”, majd „Balra” opció; ¾ ha az adatmező nem „szöveg” típusú, akkor még igazítsuk jobbra zártra a címkét is. Természetesen formázással lehet még csinosítani a jelentés megjelenésén. Ne felejtsük el az „Oldalfej” és „Törzs” szakaszok magasságát beállítani! Így biztosan minden stimmelni fog a nyomtatási képen? 1. ¾
2. ¾
Sajnos gyakran még így sem. Lássunk néhány gyakori problémát, és a megoldást! A numerikus adatmezők tartalma normál alakban jelenik meg. A vezérlőelem szélességét növelni kell, mert nem fér ki a szám. Egy numerikus adatmezőhöz tartozó címke nem pont a hozzá tartozó adat felett jelenik meg. Azért, mert a szám jobbra, a címke pedig balra igazított (bár elvileg az utolsó lépéssel pontosan ezt próbáltuk korrigálni). Állítsuk át a címkét is jobbra igazítottra.
32. Feladat: A „Törzs” és az „Oldalfej” szakaszokba vegyük fel a következő mezőket: ¾ Bizonylatszám; ¾ Mennyiség; ¾ Mértékegységnév; ¾ Nettó egységár; ¾ Kif1. Megoldás: Amennyiben nem látszik, kapcsoljuk be a „Mezőlista” ablakot a ikonnal.
112
Access XP alapokon „Bizonylatszám” mező A „Mezőlista” ablakból húzzuk a „Bizonylatszám” mezőt a jelentés „Törzs” szakaszába. Kattintsunk rá a címkéjére, majd nyomjuk meg a Ctrl - X billentyűkombinációt. Kattintsunk bele az „Oldalfej” szakaszba, majd nyomjuk le a Ctrl - V billentyűkombinációt. A Shift billentyű nyomása közben kattintsunk rá a „Törzs” szakaszban lévő vezérlőelemre, majd válasszuk ki a „Formátum” menüből az „Igazítás”, majd a „Balra” opciót. alakú egérkurzorral egyszerre húzzuk a megfelelő helyre a vezérlőelemet és címkéjét. „Mennyiség” mező A „Mezőlista” ablakból most a „Mennyiség” mezőt húzzuk a jelentés „Törzs” szakaszába. Kattintsunk ennek is a címkéjére, majd nyomjuk meg a Ctrl - X billentyűkombinációt. Kattintsunk bele az „Oldalfej” szakaszba, aztán Ctrl - V billentyűkombináció. A Shift billentyű nyomása közben kattintsunk rá a „Törzs” szakaszban lévő „Mennyiség” vezérlőelemre, majd „Formátum” menü, abból az „Igazítás”, majd „Jobbra” opció. alakú egérkurzorral egyszerre húzzuk a megfelelő helyre a vezérlőelemet és címkéjét. Kattintsunk a jobbra zárás ikonra. „Mértékegység név”, „Nettó egységár”, „Kif1”, mezők Pontosan az előzőeknek megfelelően járjunk el. A „Mértékegység név” mezőnél azonban a alakú egérkurzorral történő mozgatás után még a következőket is hajtsuk végre (mivel szöveges típusú az adatmező): Formátum” menü, „Igazítás”, majd „Balra” opció. Kattintsunk a jobbra zárás ikonra (kivétel a „Mértékegység név” címkéje). A „Kif1” címkét írjuk át „Érték”-re. Formázás Jelöljük ki az „Oldalfej” szakaszban lévő összes címkét, majd állítsuk át félkövérre és sötétkékre ( ). Egy vonallal húzzuk alá az „Oldalfej” szakaszban lévő címkéket. Ehhez a ikonnal kell a „Vonal” elemet kiválasztani, majd az egérrel faltól-falig húzni (ha nyomjuk a Shift billentyűt, könynyebb vízszintes vonalat húzni). Állítsuk át a vonalat is sötétkékre ( ), majd 3 pontosra ( ). Ha megtekintjük a nyomtatási képet, akkor azt tapasztaljuk, hogy a „Mennyiség” és az „Érték” fejlécű oszlopokban negatív számok szerepelnek (hiszen az eladások készletet csökkentők), az „Egységár” oszlopban szerepel tizedes, továbbá az „Érték” oszlopban nem látható a pénznem. Ez kicsit zavaró, amin persze segíthetünk. Ehhez egyenként jelöljük ki a kérdéses adatmezőket tartalmazó vezérlőelemeket, majd kattintsunk a ikonra. Lapozzunk a „Formátum” regiszterhez, és adjuk meg a következő formátumkódokat úgy, hogy az aláhúzás karakter ( _ ) helyén szóköz legyen: Mező formátumkód ¾ Mennyiség #_### ; #_### ¾ Nettó egységár #_###"_Ft" ¾ Kif1 #_###"_Ft"; #_###"_Ft" További probléma, a tételsorok, valamint a magyarázó felirat és a tételsorok távolsága. Ezeken úgy segíthetünk, hogy a jelentés törzs és a jelentésfej magasságát kisebbre veszszük. A nyomtatási kép segítségével nézzük meg most is munkánk eredményét (ehhez kattintsunk a 99. Ábra: Az eddigi munka eredménye ikonra). Azt hiszem, tényleg meg lehetünk elégedve magunkkal, mert kezd nagyon szépen alakulni a jelentés. A munkánkat persze mentsük most is (
), majd térjünk vissza a
Tervező nézetbe.
113
ECDL Adatbázis-kezelés modul 7.1.5.4.3 Csoportosítási fej- és láblécek („Mező1 fejléc”, „Mező1 lábléc”, „Mező2 fejléc”, …) A jelentések szinte mindig sorba rendezett csoportokból állnak, és tartalmaznak összegfokozatokat is (7.1.1.). Természetesen az egyes csoportoknak is kell, hogy legyen egy-egy fejléce, illetve a következő csoport előtt (a láblécben) ott szerepel a halmozott érték. Erre a „Jelentés varázsló” alkalmazásával is van már lehetőségünk, de mint azt láttuk is, az összegfokozatokban a lehetséges összesítő függvényből csak a leggyakrabban alkalmazott „Sum”, „Average”, „Min”, „Max” függvényekre korlátozódik a lehetőségünk. A komolyabb statisztikai függvények csak a „Tervező nézet” használatával vehetők igénybe, bár többnyire nem nagyon lesz rá szükségünk. A csoportosítás és részösszegek témakörrel kapcsolatosan a következő kérdéseket kell megtárgyalnunk: ¾ csoportosítási alapok képzése; ¾ a csoportok fejlécének megadása; ¾ és a láblécekben az összesítő függvények alkalmazása. További összesítő függvények ¾ Count az elemek darabszáma; ¾ StDev és StDevP mintapopuláció és populáció szórása; ¾ Var és VarP mintapopuláció és populáció varianciája. Azt, hogy mi a szórás, és a variancia, inkább ne feszegessük. Elégedjünk meg annyival, hogy ezeknek a függvényeknek statisztikai kimutatások esetében van jelentősége.
7.1.5.4.3.1 Csoportosítási alapok képzése Amikor egy jelentés szakaszainak „Törzsében” megadjuk a listázandó mezőket, akkor ott felesleges szerepeltetni azokat, amelyek alapján csoportosítani szeretnénk a rekordokat. Miért? Mert az Access lehetőséget biztosít arra, hogy az egyes csoportok felett az úgynevezett „Csoportosítási fejlécben” a kérdéses adatot csak egyszer, de kiemelten jelenítsük meg. Ráadásul az így kialakított elsődleges csoporton belül újabb csoportok is létrehozhatóak. Minden csoporthoz tartozhat egy-egy fejléc, illetve lábléc. A fejlécben a csoportosítási alap bázisául szolgáló mező tartalmát, a láblécben pedig az összesített adatokat szokás kiíratni. Például a mintafeladatban szereplő „Tranzakciók tételei” tábla tartalmazza az egyes tranzakciókkal kapcsolatos következő adatokat: ¾ Bizonylatszám; ¾ Szállító kód; ¾ Termék kód; ¾ Mennyiség; ¾ Nettó egységár. Amennyiben ki szeretnénk gyűjteni, hogy az egyes szállítók milyen forgalmat értek el, illetve egy-egy szállító az egyes termékekből mekkora összegben forgalmaztak, akkor elsődleges csoportosítási alapnak a „Szállító kód”, másodlagosnak pedig a „Termék kód” mezőt kell megadni. Természetesen mindegyikhez tartozhat egy-egy fej-, illetve lábléc. Amennyiben így teszünk, akkor a jelentés a következő szakaszokból fog állni: Szakasz neve előfordulása ¾ Jelentésfej egyszer a jelentés legelején; ¾ Oldalfej minden oldal tetején; ¾ Szállító kód fejléc minden új szállító tetején; ¾ Termék kód fejléc minden új termék tetején; ¾ Törzs rekordonként egy-egy sor; ¾ Termék kód lábléc minden termék végén; ¾ Szállító kód lábléc minden szállító végén; ¾ Oldalláb minden oldal alján; ¾ Jeletésláb egyszer a jelentés legvégén. ikonnal Egy-egy ilyen csoportosítási alapot képező mező megadása úgy lehetséges, hogy a bekapcsoljuk a „Rendezés és csoportosítás” ablakot, majd szép sorban megadjuk a csoportosítás alapjául szolgáló mezőket. Ezzel azonban még nem készültünk el, ugyanis további paramétereket is be kell állítanunk.
114
Access XP alapokon n
n
n
n
„Csoportfej” és „Csoportláb” Vagy „Igen”, vagy „Nem” értéket állíthatunk csak be. Szerepe világos: meghatározza, hogy az adott csoportnak legyen-e fej- és lábléce. „Csoportosítás” Itt azt adhatjuk meg, hogy az egyes csoportokat a csoportosítás alapjául szolgáló mező tartalma alapján hogyan képezze a program. A lehetőségek típusfüggők: ¾ „Minden érték” Ez a választási lehetőség minden adattípus esetén elérhető. A program a csoport kialakításakor a csoportosítás alapjául megadott mező teljes tartalmát figyelembe veszi. ¾ „Előtag-karakterek” Csak szöveg típusú mező esetén elérhető. A 100. Ábra: Az adatokat csoportosítani megadott számú hosszebben az ablakban lehet ban vizsgálja csak a mező tartalmát. A figyelembe veendő karakterek számát a „Csoportintervallum” mezőben kell megadnunk. ¾ „Év”, „Negyed”, stb.” Dátum/idő típusú mező esetén választható. A megadott időintervallum szakaszba eső adatokat rakja egy csoportba. Az egyes szakaszok hosszát most is a „Csoportintervallum” mezőben lehet megadni. „Csoportintervallum” Az előző elem tárgyalásakor már szóba került a szerepe: itt adhatjuk meg, hogy ha nem „Minden értéket” választunk ki a „Csoportosítás” legördülő listában, akkor egy-egy csoportba mekkora intervallumból kerüljenek tételek. „Együtt tartás” Eldönthetjük, hogy amennyiben a csoportosítási alap egy új értéket vesz fel, az új lapra kerüljön-e, vagy folytatódjon a már megkezdett lapon. Ha azonban az új csoport olyan sok tételből áll, hogy egy lapra semmiképpen nem fog kiférni, akkor az az „együtt tartás” kérésének ellenére sem kerül új lapra. 33. Feladat: A „Szállító név” és a „Termék név” mezőket vegyük fel csoportosítási alapnak (a „Szállító név” legyen a magasabb szintű). Megoldás: A ikonnal kapcsoljuk be a „Rendezés és csoportosítás” ablakot, majd a „Mező/kifejezés” oszlop első sorából válasszuk ki a „Szállító név” mezőt. Ezek után még kapcsoljuk be a „Csoportfej” és a „Csoportláb” megjelenítését úgy, hogy az ablak alján lévő legördülő listákban mindkettőt „Igen” értékre állítjuk. Most a „Mező/kifejezés” oszlop második sorában adjuk meg a „Szállító név” mezőt, majd itt is kapcsoljuk be a „Csoportfej” és a „Csoportláb” megjelenítését.
7.1.5.4.3.2 Csoportosítási fejlécek megadása Ezt a témát röviden elintézzük, hiszen a tanultak alapján már önállóan is sikerülnie kell. Egyetlen dologról azonban nem szabad elfeledkeznünk: „Mező1 fejléc” csak akkor lehetséges: ¾ ha „Mező1” adatmezőt kijelöltük csoportosítási alapnak; ¾ és kértük a „Csoportfej” megjelenítését is. Maga a fejléc valamilyen módón feltétlenül kerüljön kiemelésre, hiszen az alatta lévő adatok mindegyikére vonatkozik. 34. Feladat: Adjuk meg a csoportosítási fejléceket (esetünkben a „Szállító név fejlécet”, és a „Termék név fejlécet”).
115
ECDL Adatbázis-kezelés modul Megoldás: A „Mezőlista ablakból” a „Szállító név” mezőt húzzuk a „Szállító név fejléc” szakaszba, majd pozícioalakú egérkurzorral annak bal felső sarkába. Formázásként állítsuk át 10 pontosra, félkövérre, náljuk ). Ha szükséges, a „Formátum” menüből válasszuk ki a „Méretezés”, majd abból az és sötétkékre ( ikonnal kell a „Vonal” elemet ki„Ahogy fér” elemet. Egy vonallal húzzuk alá a szakaszt. Ehhez a ), majd 3 ponválasztani, majd az egérrel faltól-falig húzni. Állítsuk át ezt a vonalat is sötétkékre ( ). tosra ( A „Mezőlista ablakból” most a „Termék név” mezőt húzzuk a „Termék név fejléc” szakaszba, majd ezt is pozícionáljuk a szakasz bal felső sarkába. Formázásként állítsuk át félkövérre, és sötétkékre ( ). A méretet itt is állítsuk be, majd egy vonallal húzzuk alá ezt a szakaszt is, de csak 1 pontos kék vonallal. Mindkét szakasz magasságát húzzuk olyan kicsire, amekkorát a tartalmuk igényel. 7.1.5.4.3.3 Összesítő függvények megadása csoportosítási láblécekben Természetesen ez a szakasz is csak akkor létezik, ha megadunk csoportosítási alapot, és kérjük a lábléc megjelenítését is. Magát az összesítést úgy kérhetjük, hogy megadunk egy „kötetlen” jellegű „beviteli mező” típusú vezérlőelemet, majd a „Kötetlen” felirat helyére begépeljük a megfelelő szintakszissal az öszszegző kifejezést, vagy ugyanerre a célra a „Kifejezésszerkesztőt” használjuk. Ez utóbbihoz kattintsunk a ikonra, azután lapozzunk az „Adat” regiszterre, majd kattintsunk bele a „Mező vagy kifejezés” mezőbe, végül pedig kattintsunk a ikonra. A megjelenő „Kifejezésszerkesztő” ablakot korábban már tárgyaltuk (5.2.2.2.5.), igaz, most több lehetőségünk van. A minket pillanatnyilag érdeklő összesítő függvényeket a „Függvények”, „Beépített függvények”, „SQL összesítés” kategóriában fogjuk megtalálni. Utolsó lépésként még a „címke” tartalmát is írjuk át, majd formázzuk is meg a szakaszt. 35. Feladat: Mind a „Szállító név láblécben”, mind a „Termék név láblécben” készítsünk olyan összesítéseket, mely az összes értékesítést adja meg. Megoldás: „Szállítónév lábléc” Az „Eszközkészlet” eszközsoron kattintsunk rá a „Beviteli mező” ikonra ( ), majd kattintsunk bele a „Szállító név lábléc” szakaszba. Húzzuk a vezérlőelemeket alakú egérkurzorral a szakasz jobb felső sarkába. A „Kötetlen” szöveg helyére gépeljük be a következőt (idézőjelek nélkül): „=Sum([Eladások].[Kif1])” A „címke” mezőbe gépeljük be (idézőjel nélkül): „Partner összesen”. Kattintsunk a „Beviteli mező” vezérlőelemre, (ebbe írtuk a kifejezést), majd a ikonra. Lapozzunk a „Formátum” regiszterhez, és a „Formátum” mezőbe gépeljük be („_” helyére persze most is szóközt írva): #_###"_Ft"; #_###"_Ft" Formázásként állítsuk át 10 pontosra, félkövérre, és sötétkékre ( ). Ha szükséges, a „Formátum” menüből válasszuk ki a „Méretezés”, majd abból az „Ahogy fér” elemet. Húzzunk egy vonalat a szakasz tetejének jobb szélére. Ehhez a ikonnal kell a „Vonal” elemet kiválasztani, majd az egérrel ), majd 3 pontosra ( ). 8-10 cm-től a jobb szélig húzni. Állítsuk át a vonalat is sötétkékre ( „Terméknév lábléc” Kattintsunk rá ismét a „Beviteli mező” ikonra ( ), majd kattintsunk bele a „Termék név lábléc” szakaszba. Húzzuk a vezérlőelemeket alakú egérkurzorral a szakasz jobb felső sarkába. A „Kötetlen” szöveg helyére gépeljük be a következőt (idézőjelek nélkül): „=Sum([Eladások].[Kif1])” A „címke” mezőbe gépeljük be (idézőjel nélkül): „Termék összesen”. Kattintsunk a „Beviteli mező” vezérlőelemre, (ebbe írtuk a kifejezést), majd a ikonra. Lapozzunk a „Formátum” regiszterhez, és a „Formátum” mezőbe gépeljük be (a _ helyére szóközt írva): #_###"_Ft"; #_###"_Ft"
116
Access XP alapokon Formázásként állítsuk át félkövérre és sötétkékre ). Ha szükséges, a ( „Formátum” menüből válasszuk ki a „Méretezés”, majd abból az „Ahogy fér” elemet. Húzzunk egy vonalat a szakasz tetejének jobb szélére. Ehhez a ikonnal kell a „Vonal” elemet kiválasztani, azután azt az egérrel 8-10 cm-től a lap jobb széléig húzni. Állítsuk át ezt a vonalat csak 1 pontosra ( ), ugyancsak sötétkékre ( ). Mindkét szakasz magasságát húzzuk olyan kicsire, amekkorát a tar101. Ábra: A jelentés már így néz ki talmuk igényel. A nyomtatási kép segítségével nézzük meg mire jutottunk. Természetesen mentsünk most is (
), majd térjünk vissza a Tervező nézethez (
).
7.1.5.4.4 Az „Oldalláb” Az oldallábbal kapcsolatosan csak azokat a kifejezéseket szeretném megemlíteni, melyeket egy-egy „kötetlen” „beviteli mezőben” majd meg kell adnunk: Cél a vezérlőelem tartalma példa a megjelenő információra ¾ aktuális oldalszám =[Page] &". oldal" 1. oldal ¾ aktuális/összes oldalszám =[Page] & "/" & [Pages] 1/10 A „&” a korábban tanult szövegösszefűző operátor (5.2.2.2.5.2.1.), az újdonság csupán a [Page] és a [Pages], melyek értelmezése a példa alapján világos. 36. Feladat: Az „Oldallábban” középen kerüljön kiíratásra az aktuális oldal / az összes oldal. Megoldás: Az „Eszközkészlet” eszközsoron kattintsunk rá a „Beviteli mező” ikonra ( ), majd kattintsunk bele az „Oldalláb” szakaszba. A „címkét” töröljük, majd a „Kötetlen” tartalmú vezérlőelemet méretezzük át faltól-falig nagyságúra. Igazítását állítsuk be középre zártra, majd gépeljük bele a következőt: =[Page] & "/" & [Pages] & ". oldal". 7.1.5.4.5 A „Jelentésláb” A „Jelentéslábban” is összesíteni szokás, mégpedig a teljes jelentést. Ennek módszere gyakorlatilag megegyezik a csoportosítási lábléceknél megtanultakkal: ¾ adjunk meg egy „Kötetlen” jellegű, „Beviteli mező” típusú vezérlőelemet; ¾ a „címkébe” vigyük be a magyarázó szöveget; ¾ a vezérlőelembe pedig a „Kötetlen” felirat helyett adjuk meg a megfelelő SQL összesítő függvényt, argumentumában a mezőhivatkozással, például (idézőjel nélkül): „=Sum([Eladások].[Mennyiség])”; ¾ befejezésül formázzuk meg a vezérlőelemeket.
117
ECDL Adatbázis-kezelés modul 37. Feladat: Összesítsük az összes eladást is. Megoldás: Az „Eszközkészlet” eszközsoron kattintsunk rá a „Beviteli mező” ikonra ( ), majd kattintsunk bele a „Jelentésláb” szakaszba. Húzzuk a vezérlőket alakú egérkurzorral a szakasz jobb felső sarkába. A „Kötetlen” szöveg helyére gépeljük be a következőt (természetesen idézőjelek nélkül): „=Sum([Eladások].[Kif1])” A „címke” mezőbe gépeljük be (szintén idézőjel nélkül): „Mind összesen”. Kattintsunk a „Beviteli mező” vezérlőelemre, (ebbe írtuk a kifejezést), majd a ikonra. Lapozzunk a „Formátum” regiszterhez, és a „Formátum” mezőbe gépeljük be („_” helyére szóközt írva): #_###"_Ft"; #_###"_Ft" Formázásként állítsuk át 12 pontosra, félkövérre, és sötétkékre ( ). Ha szükséges, a „Formátum” menüből válasszuk ki a „Méretezés”, majd abból az „Ahogy fér” elemet. Húzzunk egy vonalat a szakasz tetejének jobb szélére. Ehhez a ikonnal kell a „Vonal” elemet kiválasztani, majd az egérrel 8-10 cm-től a jobb szélig. Ál102. Ábra: A teljesen kész jelentés lítsuk át a vonalat is sötétkékre ( ), ). majd 4 pontosra ( A nyomtatási kép segítségével nézzük meg a kész jelentést. Remélem, tetszik. Természetesen mentsünk most is ( ), majd lépjünk ki.
7.2 Jelentések törlése, módosítása Szerencsére ezzel kapcsolatban sem lehet sok újdonságot elmondani. Egy jelentést úgy tudunk törölni, hogy az adatbázis-ablak „Jelentések” objektumai közül kijelöljük a törlendőt, majd megnyomjuk a Delete billentyűt. Vigyázzunk, mert ez a törlés nem visszavonható! A módosításhoz pedig egyszerűen csak „Tervező nézetben” kell megnyitni a jelentést, és a nem megfelelő részeket az imént, a „Tervező nézetben” tanultaknak megfelelően megváltoztatni.
8. Űrlapok Űrlapokat döntően majd adatbeviteli célra hozunk létre. Igaz, a korábban már tanult lekérdezéseket, sőt, magukat az adattáblákat is alkalmazhatnánk erre a célra, de ezek több szempontból sem jelentenek igazán jó megoldást. Az összehasonlításra a legjobb módszer most is talán egy táblázat lesz, melyben azonban az adattábla és a lekérdezés mellett szerepeltetem a jelentéseket is. Mint látható, az űrlapok nem az adattáblához, vagy a lekérdezéshez hasonlítanak legjobban, hanem a jelentésekhez. A három fő különbség az űrlap és a jelentés között a következő: ¾ míg a jelentés kimeneti, az űrlap inkább bemeneti eszköz; ¾ a jelentéseket általában ki szokás nyomtatni, míg az űrlapokat nem (bár lehetséges); ¾ és végül a jelentéseken általában több, az űrlapokon viszont sokszor csak egy rekord szerepel.
118
Access XP alapokon A közeli rokonság után talán érthető, hogy a jelentésekkel és az űrlapokkal végzett munka során sok hasonlatosságot fogunk találni. Adattábla Lekérdezés Űrlap Az egyes rekordokban lévő adatok módosíthatóak, illetve új rekord is adható a táblához, vagy éppen ellenkezőleg, meglévő rekordot törölhetünk.
Jelentés Az adatok nem módosíthatóak. Az adatokat megjelenési Az információk nem, vagy képernyőre optimalizálva formázottak. formátuma nyomtatóra optimalizált. Általában több rekord is Választhatóan egy, vagy látható, sőt, többnyire Általában több rekord is látható. valamilyen összegzés is több rekord látható. szerepel a listában. Kizárólag a táblában lévő mezők szeAkár számított mezők is megjeleníthetőek. repelhetnek benne. Csak egy adattáblában Több adattáblában lévő rekordok Az adatok nem lévő mezők módosíthatók. mezői is módosíthatóak. módosíthatóak. Viszonylag kevés párbeszédelem áll A Windows létező összes grafikus rendelkezésre (leginkább csak adatmező, párbeszédeleme alkalmazható. esetleg legördülő lista, jelölőnégyzet). Az adatok megjelenítéséhez szemléletes grafikus Az adatok megjelenítéséhez szemléletes grafikus eszközök egyáltalán nem állnak rendelkezésre. eszközök állnak rendelkezésre (akár diagram is). 44. Táblázat: Az adattábla, a lekérdezés, az űrlap és a jelentés összehasonlítása
8.1 Új űrlap létrehozása Az űrlapkészítés menete a már megszokottnak tekinthető: az adatbázis-ablakban az „Űrlapok” objektumokat kell választani, majd meg kell nyomni az „Új” nyomógombot. A lehetőségek szinte teljesen megegyeznek a jelentéseknél korábban megtárgyaltakkal: ¾ Tervező nézet; ¾ Űrlap varázsló; ¾ AutoŰrlap: Oszlopos; ¾ AutoŰrlap: Táblázatos; ¾ AutoŰrlap: Adatlap; ¾ AutoŰrlap: Kimutatás; ¾ Diagram varázsló; 103. Ábra: Új űrlap kezdése ¾ Kimutatás varázsló. Ha a választható opciókat összehasonlítjuk a jelentéseknél felsoroltakkal (7.1.), akkor csak két különbséget fedezhetünk fel: ¾ a „Címke varázsló” helyett most „Kimutatás varázsló” szerepel; ¾ illetve kettővel többféle „AutoŰrlap” lehetőségünk van (nemcsak „Oszlopos”, és „Táblázatos” közül választhatunk, hiszen megjelent egy „Adatlap” és egy „Kimutatás” formátum is). Mint korábban a jelentések készítésekor, így itt is célszerű a varázsló alkalmazása, és inkább csak a finomítgatásokat kell a Tervező nézetben elvégezni.
8.1.1 Űrlap varázsló Az „Űrlap varázsló” elindítása után is azokat a mezőket kell majd elsőként megadnunk, melyeket az űrlapban szerepeltetni kívánunk. Miután azonban az űrlapok képernyős lekérdezéseken kívül adatbevitelre is szolgálnak, természetesen felmerül a kérdés: Mi lesz a számított mezőkkel? Azokba is vihetünk be adatokat? A válasz logikus: a számított mezőben szereplő adatokat nem lehet megváltoztatni, azok csak listázha-
119
ECDL Adatbázis-kezelés modul tóak. Azt azonban most is le kell szögezni, hogy a varázslót alkalmazva űrlapok esetében is csak akkor szerepelhetnek számított mezők, ha előbb egy „lekérdezésben” meghatározzuk őket. A munka menetére visszatérve az első lépés tehát a mezők megadása, ami pontosan úgy történik, mint a jelentéseknél (hasonlítsuk csak össze a két ablakot): ¾ a tábla, vagy lekérdezés kiválasztása; ¾ a kérdéses mező nevére kattintás; ¾ majd a ikonra kattintás (amennyiben az összes mezőt szerepeltetni szeretnénk az űrlapon, akkor a ikonra kattintsunk). Ha az összes szükséges mezőt megadtuk, nyomjuk meg a „Tovább” gombot. Több forrásból is megadhatunk mezőket? Igen. Ugyanúgy, mint a jelentéseknél, itt is az a módszer, hogy ha másik forrásban szerepel a mező, akkor előbb ki kell választani a táblát, vagy lekérdezést.
104. Ábra: Az Űrlap varázsló első lépésében adjuk meg a szerepeltetni kívánt adatokat Itt most egy kis eltérést tapasztalunk a „Jelentés varázslóhoz” képest (7.1.1.), ugyanis az összesítésekkel kapcsolatos lépések az „Űrlap varázsló” esetében kimaradnak. Miért? Mert űrlappal nem lehet összesíteni (pontosabban csak jóval bonyolultabban). Így azután rögtön az űrlap formázásával kapcsolatos ablakok jelennek majd meg. Az adatok elrendezési lehetőségei azonban eltérnek a „Jelentés varázslóban” korábban megismertektől: ¾ Oszlopos: A beviteli mezők és a hozzájuk tartozó feliratok egymás alatt, oszlopszerű elrendezésben szerepelnek (tehát mindig két oszlop van, az egyik az adatmező, a másik a hozzá tartozó címke). Ha nincs már hely, új oszlop 105. Ábra: Az adatok elrendezését itt állíthatjuk be kezdődik. ¾ Táblázatos: Az űrlap tetején szerepelnek a mezőkhöz tartozó címke feliratok, alatta pedig táblázatos elrendezésben a mezők adatai. A táblázat minden sora megfelel az adattábla egy-egy rekordjának. Ez esetben tehát az űrlapon nemcsak egy rekord látható! ¾ Adatlap: Mindenben megegyezik a „Táblázatos” elrendezéssel, csak igénytelenebb a megjelenése Tehát az űrlap tetején egy sorban a mezőkhöz tartozó címkék, alatta több sorban az adatmezők. ¾ Sorkizárt: Hasonló az „Oszlopos” elrendezéshez, de a mezők és a hozzájuk tartozó címkék több, egymás alatti sorban helyezkednek el. Ezenkívül az elrendezés nevének megfelelően az egyes mezők közötti távolságot úgy állítja be az Access, hogy a jobb szélre kerülő adatmezők jobb oldala egymás alá kerüljön (azaz sorkizárt legyen). Ha a célunknak legjobban megfelelő elrendezést kiválasztottuk, kattintsunk a „Tovább” gombra. Mi a különbség a „Táblázatos” és az „Adatlap” elrendezés között? Előbb magát a kérdést kell megmagyarázni. Miután ugyanarra az adattáblára, vagy lekérdezésre alapozva elkészítünk az „Űrlap varázslóval” egy-egy „Táblázatos”, illetve „Adatlap” elrendezésű űrlapot, majd átváltunk „Tervező nézetre” nem lesz semmilyen különbség a két űrlap között. Amennyiben „Tervező nézetben” rákattintunk a vízszintes és a függőleges vonalzók találkozásánál lévő kis négyzetre, majd a ikon segítségével megnyitjuk a tulajdonságok ablakot, akkor annak „Formátum” regiszterén fogunk találni egy „Alapértelmezett nézet” nevű mezőt. Ennek eltérő értéke okozza a különbséget: ¾ Egyszeres űrlap egy rekord látható;
120
Access XP alapokon Folyamatos űrlap több rekord látható; Adatlap több rekord látható adatlap nézetben. Az alapértelmezett nézet felülbírálható a „Nézet” menü segítségével. ¾ ¾
Az utolsó előtti lépés már teljesen megegyezik a „Jelentés varázslóéval”: az űrlap „Stílusát” kell megadnunk. A „Stílus” most is a háttér, és a szövegek megjelenési formájának meghatározását jelenti. Most sincs más lehetőségünk, mint a próbálkozás. Ha a nekünk tetsző stílust beállítottuk, a „Tovább” gombbal folytassuk a munkát.
106. Ábra: Az űrlap stílusának megadása
107. Ábra: Az utolsó lépés a mentés
A befejezésben tulajdonképpen az űrlap mentése történik meg, amihez természetesen most is a nevét kell megadni. Ezenkívül még azt dönthetjük el, hogy a folytatásban az űrlap nézet, vagy a Tervező nézet jelenjen meg. Általában célszerűbb az előbbit választani, és amennyiben nem tetszik, csak akkor kérjük a Tervező nézetet. Természetesen a „Befejezés” gombbal kell zárni a munkát. Amennyiben valamilyen problémát látunk, térjünk át a „Tervező nézetre” a ikonnal.
38. Feladat: Az „Űrlap varázsló” segítségével készítsünk egy űrlapot a „Termék törzs” adattáblához. A mentési név „Termék törzs” legyen. Megoldás: Kezdjünk egy új űrlapot az „Űrlapok” regiszter „Új” gombjával. Válasszuk ki a „Termék törzs” adattáblát, és az „Űrlap varázsló” ikon seelső lépésében adjuk az űrlaphoz az összes mezőt a gítségével. Kattintsunk a „Tovább” gombra. A következő lépések közül az előbbi ablakban válasszuk az „Oszlopos” szerkezetet, majd az azt követő ablakban a „Nemzetközi” stílust. Az utolsó lépésben nincs más dolgunk, mint a „Befejezés” gombra kattintás. 108. Ábra: A kész űrlap (oszlopos)
8.1.2 AutoŰrlap Az „AutoŰrlap” segítségével készíthetjük el a leggyorsabban az űrlapokat (mint a jelentéseket az „AutoJelentéssel” (7.1.2.)). Négy fajtája létezik: ¾ Oszlopos; ¾ Táblázatos; ¾ Adatlap; ¾ Kimutatás.
Most is itt kell kiválasztani az adatforrást
109. Ábra: AutoŰrlap készítése
121
ECDL Adatbázis-kezelés modul A „Kimutatás” kivételével – melyet „AutoŰrlap” formában szerintem felesleges használni – az egyes elrendezések jellemzőit az imént, az „Űrlap varázslónál” ismertettem. Az alkalmazásuk akkor célszerű, ha nagyon gyorsan, teljesen automatikusan szeretnénk űrlapot készíteni. Most is csak egy feladatunk lesz: ki kell jelölni, hogy az űrlap mely adattábla, vagy lekérdezés alapján készüljön, aminek megadása ez esetben csak előzetesen, az „Új űrlap” ablakban lehetséges. Maga az űrlap automatikusan elkészül (stílusa ennek is a legutóbb alkalmazott stílus lesz). Természetesen kilépéskor a program megkérdezi, hogy mentjük-e az űrlapot. Igenlő válasz esetén a felkínált név az adatforrás (azaz az adattábla, vagy a lekérdezés) neve lesz. Melyik AutoŰrlapot használjuk? Én talán az „oszlopos” elrendezésre szavazok, mivel az a legtöbb esetben jobban megfelel. Mivel az „adatlap” elrendezés semmiben nem jelent többet egy egyszerű lekérdezésnél, vagy magánál az adattáblánál, használatát nem nagyon javaslom.
39. Feladat: Az „AutoŰrlap: Oszlopos” segítségével készítsünk egy adatbeviteli ablakot a „Mértékegység törzs” adattáblához. Mentsük is el megegyező néven. Megoldás: Kezdjünk egy új jelentést a „Jelentések” regiszter „Új” gombjával. Válasszuk ki a „Mértékegység törzs” adattáblát, és az „AutoŰrlap: Oszlopos” opciót. Más dolgunk már nincs is, mint kilépéskor a feltételezett néven elmenteni az űrlapot. 40. Feladat: Az „AutoŰrlap: Táblázatos” segítségével készítsünk egy-egy adatbeviteli ablakot a „Tranzakciók” és a „Szállító törzs” adattáblákhoz, majd most is mentsük el az űrlapot. Megoldás: Ugyanúgy kell eljárni, mint az előző feladatban, de most a „Tranzakciók” adattáblát, és az „AutoŰrlap: Táblázatos” opciót válasszuk ki. A mentés természetesen most is a szokásos módon lehetséges. A megoldás menete a „Szállító törzs” esetében is megegyezik.
8.1.3 Kimutatás varázsló Mint azt az új űrlapokról még csak általánosságban szóló részben (7.1.) megállapítottuk, űrlapok esetében a jelentéseknél szereplő „Címke varázsló” opciót felváltotta a „Kimutatás varázsló”. Mielőtt azonban e varázsló tényleges használatára rátérnék, arról szeretnék néhány mondatban szólni, hogy mikor is kell majd a „Kimutatás varázslóhoz” fordulni (bár az Excelből már ismerhetjük a „Kimutatás varázslót”). Nos, a varázsló segítségével olyan táblázatokat tudunk majd készíteni, amelyek több mező tartalma szerinti halmozott értékeket is tartalmaznak. Igaz, hasonló célra már van egy eszközünk: a „Kereszttáblás lekérdezés”. A „Kimutatás varázsló” azonban lényegesen többet nyújt. Egy kereszttáblás lekérdezéssel ugyanis csak egy mezőt adhatunk meg mind oszlopfejléc, mind érték céljára, kimutatásnál viszont mindegyikből többet is. És bár mindkét eszköznél több sorfejléc is megadható, egy kereszttáblás lekérdezésnél mégsem célszerű ezzel a lehetőséggel sem élni. Kimutatást alkalmazva ráadásul az egyes mezőértékekből gyűjtőkategóriák is képezhetőek. De lássunk egy konkrét példát: egy cég több országból is beszerez bizonyos árucikkeket, majd azokat továbbértékesíti belföldi Szállító tábla Termék tábla Vásárlás tábla Számított adat vevőinek. Az ezzel kapcso- Név Név Bizonylatszám Érték latos fontosabb adatokat Ország VTSZ száma Dátum Mennyiségi egység Mennyiség csak egy lekérdezéssel leEgységár het összegyűjteni, mert adatok nyilván nem egy táblá111. Ábra: Az összegyűjtött adatok, és származási helyük ban kerülnek letárolásra. Termék neve Magyar Francia Olasz Lengyel Cseh Hogy milyen adatok honnét Paprika 570 származnak, azt a táblázat Sajt 542 tartalmazza. Bor 2545 6565 Egy kereszttáblás lekérdezéssel le- Vodka Sör 65645 hetséges egy olyan kigyűjtés a lekérde110. Ábra: Egy kereszttáblás lekérdezés
122
Access XP alapokon zésből, mely országonként tartalmazza azt, hogy a cég milyen árukat szerezett be, illetve átlagosan mekkora mennyiségben vásároltak azokból. Ha azonban „Kimutatás varázslót” alkalmazunk, akkor mind az oszlopfejlécben szereplő származási országokból, mind a sorfejlécben szereplő terméknevekből csoportokat is képezhetünk. Például: ¾ egy csoportot alkothatnak az EU régi tagországai, és egy másikat az újak; ¾ a sorok esetében pedig egybegyűjthetőek a jövedéki, és egy másik csoportba a nem jövedéki termékek. Természetesen az egyes termékek átlagos értékesítési mennyisége származási országonként, és csoportonként is kiszámoltathatók. Sőt! Mivel a kimutatásban több érték adat is szerepelhet, az eladott mennyiségek mellett azok átlagos egységára, értéke, stb. is kiszámoltatható. Ha még e példa után sem érthető miben nyújt többet a kimutatás a kereszttáblás lekérdezésnél, javaslom, hogy lapozzunk bele egy, az Excelről szóló könyv megfelelő fejezetébe (pl. Excel XP alapokon, PC Suli XP alapokon I.), ahol további példák olvashatóak. Ezek után lássuk a „Kimutatás varázsló” használatát. A legelső lépés valójában inkább csak egy tájékoztató ablak, amit a biztonság kedvéért olvassunk azért el, majd a „Tovább” gombbal lépjünk át a következő ablakba.
112. Ábra: A „Kimutatás varázsló” előkészítő képernyője A második lépésben szereplő ablak már régi ismerősünk, hiszen eddig is mindig egy ilyen felépítésű ablakban kellett összeállítanunk a későbbiekben használandó mezőket. Természete113. Ábra: sen most is előbb a mező nevére, majd a Adjuk meg a kimutatásban szereplő mezőket ikonra kell kattintanunk. Ha minden mezőre szükségünk lesz a további munka során, akkor a ikonra kattintsunk. Amennyiben több forrásból kell összeválogatni a mezőket, akkor használjuk a „Táblák/lekérdezések:” legördülő listát. Ha ezzel a feladattal is végeztünk, kattintsunk a „Befejezés” gombra. A következő lépésekben már az Excel programhoz hasonló módon kell dolgoznunk. Azt kell megadni, hogy melyik mező, vagy mezők kerüljenek oszlopfejlécbe, sorfejlécbe, és kimutatásba (az összegnek és a részleteknek szánt területre). Egy további mezőt pedig szűrőként használhatunk. Mindezekhez csak a megfelelő területre kell a mezőket húzni (pontosan úgy, mint ahogy azt az Excel programban). Itt szeretném megjegyezni, hogy amenynyiben az „AutoŰrlap: Kimutatás” elemet választjuk, akkor rögtön ehhez 114. Ábra: Húzzuk a megfelelő helyekre a mezőneveket az ablakhoz érünk.
123
ECDL Adatbázis-kezelés modul A kész kimutatást is majdnem pontosan ugyanúgy lehet használni, mint az Excel programban. A szerkesztés során legnagyobb valószínűséggel majd csoportokat kívánunk képezni, illetve nem az alapértelmezett „Összeg”, hanem valamilyen más összesítő függvényt szeretnénk alkalmazni. Csoportképzés ¾ jelöljük ki azokat a cellákat a sor-, vagy oszlopfejlécben, melyekből egy csoportot akarunk képezni (a többszörös kijelöléshez most a Ctrl billentyűt kell használni); ¾ indítsuk bármelyik kijelölt elem helyi menüjét, és válasszuk az „Elemek csoportosítása” pontot (a csoportok nevei „Csoport1”, „Csoport2”, …, „Csoportn” lesz). Csoport nevének megadása ¾ a „Csoport1”, „Csoport2”, …, „Csoportn” nevek megváltoztatásához indítsuk a csoport nevének helyi menüjét; ¾ válasszuk a „Tulajdonságok” elemet, majd lapozzunk a „Feliratok” regisztert; ¾ a „Felirat” mezőbe vigyük be a csoport új nevét, majd zárjuk be az ablakot. Csoportbontás ¾ indítsuk a felbontandó csoport helyi menüjét, majd válasszuk az „Elemek csoportosításának megszüntetése” pontot. Csoport elemeinek elrejtése, megjelenítése ¾ válasszuk ki a szerkeszteni kívánt csoportot; ¾ csoport elemeinek elrejtéséhez kattintsunk a ikonra; ¾ elrejtett csoportelemek ismételt megjelenítéséhez kattintsunk a ikonra. Más összegző függvények alkalmazása ¾ kattintsunk rá egy olyan adatra, amelynek értékét más összegző függvénnyel szeretnénk kiszámoltatni (ilyen adat általában több is van, és bármelyiket kijelölhetjük); ¾ ezután kattintsunk a ikonra; ¾ adjuk meg az alkalmazni kívánt függvényt. 41. Feladat: A „Kimutatás varázsló” segítségével készítsünk egy táblázatot, amelyben láthatóak az egyes szállítóktól beszerzett különféle árucikkek mozgásának átlagos egységára. Mentsük el a munkánkat „Eladások kimutatás” néven. Megoldás: Lépjünk az „Adatbázis-ablak” „Űrlapok” objektumához, kattintsunk az „Új” gombra, majd válasszuk ki a „Kimutatás varázsló” opciót, és kattintsunk az „OK” gombra. A varázsló első ablakát lépjük át a „Tovább” gombbal. Válasszuk ki az „Eladások” adattáblát, majd a tábla „Szállítónév”, „Terméknév” és „Nettó egységár” mezőit a ikonnal adjuk hozzá a kimutatáshoz. Kattintsunk a „Befejezés” gombra. Húzzuk az egérrel a „Sor” területre a „Termék név”, az „Oszlop” területre a „Szállító név”, és az „Adat” területre pedig a „Nettó egységár” mezőket. Kattintsunk az adatterületen a „Nettó egységár” feliratok bármelyikére (ezzel kijelöltük az összes „Nettó egységárat”), majd nyomjuk meg a ikont. Válasszuk ki az „Átlag” függvényt. 42. Feladat: A kész kimutatásban az egyes árucikkekből képezzünk csoportokat. Megoldás: Jelöljük ki az egy csoportba foglalandó árucikkeket (ezeknek nem kell feltétlenül egymás mellett lenniük), majd indítsuk bármelyik kijelölt elem helyi menüjéből az „Elemek csoportosítása” pontot.
8.1.4 Diagram varázsló Mivel az űrlapok és a jelentések „Diagram varázslójának” használata gyakorlatilag megegyezik, ezért ezt a lehetőséget most nem ismertetem újra.
124
Access XP alapokon 43. Feladat: Egy „Térhatású kördiagramban” („tortadiagramban”) ábrázoljuk az egyes vevőink összesített eladásait. Mentsük is a jelentést „Eladások diagram” néven (ezt a diagramot korábban már elkészítettük, de jelentésként). Megoldás: Az „Új űrlap” ablakban válasszuk ki az „Eladások” adattáblát, majd indítsuk el a „Diagram varázslót”. Adjuk meg a „Szállító név” és a „Kif1” mezőket, majd kattintsunk a „Tovább” gombra. Válasszuk ki a megfelelő diagramtípust (alsó sorban balról a második) és „Tovább”. A következő lépésben nem lesz dolgunk, mivel az Access automatikusan a „Sum” összegző függvényt alkalmazza, és az egyes mezők is jó szerepet kapnak: a „Kif1” kerül a diagramra, a „Szállító név” a magyarázatba. Így csak a „Tovább” gombra kell kattintanunk. A diagram címének felkínált „Eladások” feliratot is fogadjuk el a „Befejezés” gombbal. Kilépéskor mentsük az űrlapot „Eladások diagram” néven.
8.1.5 Űrlap: létrehozása, módosítása tervező nézetben A „Tervező nézet” az űrlapok esetében is arra használható, mint a jelentések esetében: elsősorban egy-egy más módszerrel készült űrlap finomítására, illetve igényesebb űrlapok elkészítésére. Hogyha egy már létező űrlapot kívánunk finomítani, akkor: ¾ vagy az adatbázis-ablakban történő kiválasztása után a „Tervezés” gombra; ¾ vagy ha már nyitva van, a ikonra kell kattintani. Amennyiben Tervező nézetben dolgozunk, a jelentésekhez hasonlóan ez esetben is megjelenik az „Eszközkészlet” nevű eszközsor.
8.1.5.1 Az űrlapok (és az űrlapablak) részei Az űrlapok a jelentésekre olyan szempontból is hasonlítanak, hogy szintén jól elkülöníthető szakaszokra oszthatóak. 1. Űrlapfej: ¾ Általában az űrlap címét szokás benne megadni. Ha esetleg kinyomtatjuk az űrlapot, akkor csak az első lapon jelenik meg. 2. Oldalfej: ¾ Csak nyomtatáskor jelenik meg. 3. Törzs: ¾ Itt fognak szerepelni a tényleges adatok. Ide tehát majd a mezőneveket kell felvennünk, melyek helyén az űrlapon az egyes rekordokban szereplő tényleges értékek fognak majd megjelenni, illetve új rekord felvételekor ezekbe kell megadni az adatokat. Az, hogy adatbevitelkor milyen legyen a mezők úgynevezett bejárási sorrendje, meghatározható. 4. Oldalláb: ¾ Az „Oldalfejhez” hasonlóan csak nyomtatáskor jelenik meg. 5. Űrlapláb: ¾ Ez a szakasz az űrlap legvégére kerül. Olyan vezérlőelemeket célszerű ebben a szakaszban szerepeltetni, melyek az egész árlapra vonatkoznak. Természetesen az egyes szakaszok mérete most is megváltoztatható.
8.1.5.2 A vezérlőelemek ¾ ¾
¾
¾
A vezérlőelemek vonatkozásában kevés újdonságot kell megtárgyalnunk, hiszen: az adatokkal való kapcsolatuk szerint most is beszélhetünk „kötött” és „kötetlen” elemekről; megjelenésük szerint is ugyanazok a típusok léteznek, mint a jelentéseknél („Felirat”, „Beviteli mező”, stb.); a vezérlőelemek elhelyezése, törlése, típusának és kötöttségének megváltoztatása is ugyanúgy történik, mint ahogy azt jelentések esetében már megtárgyaltuk; a méretezés, a pozícionálás és a formázás módszerét is tárgyaltuk már a jelentéseknél.
125
ECDL Adatbázis-kezelés modul
¾ ¾
¾ ¾
Természetesen azért néhány újdonságról is szót kell ejtenünk: a bejárási indexről; a segédűrlap nevű vezérlőelemről (ugyan létezik segédjelentés is, de annak kisebb jelentősége miatt a jelentéseknél nem esett szó róla); a parancsgombról; és az úgynevezett eseményekről.
8.1.5.2.1 A bejárási index Az adatbevitelhez megadható egy úgynevezett „bejárási index”. A „bejárási indexszel” (sorrenddel) azt határozzuk meg, hogy amikor egy vezérlőelemben az adatbevitelt befejeztük és megnyomjuk az Enter, vagy a Tabulátor billentyűt, akkor az Access melyik vezérlőelemre lépjen tovább. Ez, amennyiben nem határozunk meg mást, a vezérlőelemek megadási sorrendjével egyezik meg. Ha az űrlapot az „Űrlap varázsló”, vagy az „AutoŰrlap” segítségével készítettük, akkor a bejárási sorrend fentről le, illetve balról jobbra mutat. Amennyiben ezen módosítani szeretnénk, akkor azt a legegyszerűbben úgy tehetjük meg, hogy a „Nézet” menüből 115. Ábra: Bejárási sorrend megadása elindítjuk a „Bejárási sorrend…” pontot, majd a megjelenő „Bejárási sorrend” ablakban kialakítjuk az új sorrendet. Ehhez előbb az ablak jobb oldalán lévő „Egyéni sorrend” listában kell kijelölni a mozgatni kívánt elemet úgy, hogy a neve előtt lévő kis négyzetre kattintunk a alakú egérkurzorral, majd a kattintás után (tehát előbb az egérgombot fel kell engedni) szintén a kis négyzetet megfogva a kívánt helyre húzzuk az elemet. Ha az „Automatikus sorrend” gombra kattintunk, akkor a sorrend újra felveszi az eredeti fentről le, illetve balról jobbra irányt. Használata akkor célszerű, ha az űrlapot „Tervező” nézetben manuálisan készítettük. Mint az ábrán is látható, az űrlap egyes szakaszaira külön-külön bejárási sorrend adható meg. Mi is valójában a bejárási index? A bejárási index a kötött vezérlőelemek egy tulajdonsága, ami a valóságban egy szám. Ha Tervező nézetben kijelölünk egy vezérlőelemet, azután a ikonnal megnyitjuk a tulajdonságablakot, majd átlapozunk annak „Egyéb” regiszterére, akkor ott találni fogunk egy „Bejárási index” nevű mezőt, benne egy számmal. Némileg érdekes, bár a számítástechnikában szokásosnak nevezhető, hogy az első elem indexe 0, a másodiké 1, stb.
8.1.5.2.2 Három korábban nem tárgyalt vezérlőelem: a segédűrlap, a parancsgomb és a karton A vezérlőelemekről a „Jelentések” című részben már nagyon részletesen esett szó, de akkor ez a három vezérlőelem kimaradt. Ennek az oka elsősorban az, hogy bár mindhárom alkalmazható jelentéseken is, mégis talán inkább űrlapokban szoktak előfordulni. 8.1.5.2.2.1 Segédűrlap Amennyiben egymással „egy a többhöz” („1 : N”) kapcsolatú tábláink vannak, akkor elvárjuk, hogy a „több” („N”) oldalon lévő táblák kapcsolómezőibe csak olyan értékeket lehessen bevinni, melyek az „egy” („1”) oldali táblákban szerepelnek. Ez a legegyszerűbben úgy oldható meg, hogy a „több” („N”) oldali táblák kapcsolómezői eleve egy olyan legördülő listák, melyekben csak az „egy” („1”) oldali táblák kapcsolómezőinek értékei szerepelnek. A listából történő választás megkönnyítése érdekében a listát lenyitva a kapcsolómezők mellett általában láthatóak az „egy” („1”) oldali táblák más mezői is. Az ilyen viselkedés a „Keresés varázsló” használatával könnyedén beállítható. Nem is az adat felvétele a gond, hanem az, hogy amikor a már rögzített rekordokat utólag megnézzük, akkor már csak egy mező értékeit látjuk. Jó lenne, ha az űrlapokon tájékoztató jelleggel megjelennének az éppen kiválasztott kapcsolómezők értékeihez tartozó részletesebb információk is. Ha a „több” („N”) oldali táblákra elhelyezünk egy-egy segédűrlapot, azok pontosan ezt fogják nyújtani. Ez eleinte roppant kényelmesnek fog tűnni, de szokás szerint evés közben jön meg az étvágy. Némi használat után már azt szeretnénk, hogy a segédűrlapon lehessen szelektálni, és amit ott kiválasztottunk, azt
126
Access XP alapokon az értéket vegye fel a fő űrlapon a kapcsolatot biztosító mező. Ezt is meg lehet oldani egy pár soros makróval. 8.1.5.2.2.1.1 Segédűrlap létrehozása
Természetesen többféle módszerrel is létrehozhatunk segédűrlapot, melyek közül talán a legelegánsabb, legegyszerűbb módszert szeretném ismertetni. Ennek menete a következő: 1. Hozzuk létre a segédűrlapként használni kívánt űrlapot: ¾ ehhez az „AutoŰrlap: Adatlap” opciót használjuk (ennek módszerét korábban tárgyaltuk (8.1.2.)), majd zárjuk be, és mentsük is el; ¾ ha elegánsabb megjelenésű segédűrlapot szeretnénk, akkor Tervező nézetben az űrlap tulajdonságai közül az „Alapértelmezett nézet” értékét állítsuk át „Egyszeres űrlapra” (erről a kiegészítő információkban esett szó (8.1.1.)). 2. Hozzuk létre a fő űrlapot: ¾ ehhez szintén az „Űrlap varázslót”, vagy az „AutoŰrlap: Oszlopos” opciót használjuk (természetesen most is mentsük az űrlapot). 3. Rakjuk fel a fő űrlapra a segédűrlapnak szánt űrlapot: ¾ nyissuk meg Tervező nézetben a fő űrlapot; ¾ kattintsunk a ikonra, majd az adatbázis-ablak „Űrlapok” regiszteréről az 1. pontban létrehozott segédűrlapnak szánt űrlapot húzzuk oda, ahol a fő űrlapon el kívánjuk helyezni (például az „Űrlaplábra”); ¾ ha nincs a fő űrlapon elég hely a számára, akkor azt a szakaszt, amelyiken szerepeltetni kívánjuk, méretezzük nagyobbra (ehhez a szakasz alját kell lefelé húzni); ¾ amennyiben nem jó a segédűrlap pozíciója, az egér segítségével, alakú egérkurzorral húzzuk jó helyre. 8.1.5.2.2.1.2 A fő- és segédűrlap kapcsolata
A segéd- és fő űrlap „egy a többhöz” („1 : N) jellegű kapcsolatban áll egymással, mégpedig úgy, hogy a fő űrlap képviseli a „több” („N”) , a segédűrlap pedig az „egy” („1”) oldalt. Amennyiben az adattáblák közötti kapcsolatot helyesen építettük fel, a fő és a segédűrlap közötti kapcsolat automatikusan felépül 116. Ábra: A fő és segédűrlap (az elsődleges és az idegen kulcs segítségével). kapcsolata itt szabályozható Ugyanakkor természetesen lehetőség van ennek utólagos módosítására, vagy törlésére is (illetve, ha ez a kapcsolat valamiért automatikusan nem jön létre, manuálisan is létrehozható). Ennek módszere a következő: ¾ jelöljük ki a segédűrlap vezérlőelemet; ¾ nyissuk meg a tulajdonságok ablakot a ikonnal, majd lapozzunk annak az „Adat” regiszteréhez; ¾ kattintsunk bele a „Főmező csatolása” és az „Almező csatolása” mezők valamelyikébe, majd az ennek hatására a kérdéses mező végén megjelenő ikonra; ¾ ezt követően csak ki kell választani mind a fő, mind a segédűrlapon azt a mezőt (esetleg mezőket), amelyekre a kapcsolatnak épülnie kell. Ha egy meglévő kapcsolatot éppen hogy törölni akarunk, akkor a legördülő listákból válasszuk a „Nincs mező” értékeket. 8.1.5.2.2.2 Parancsgomb A parancsgombok segítségével majd egyszerű kattintással lehet bizonyos fontos eljárásokat indítani. Maguk az eljárások néha nem is olyan egyszerűek (például egy jelentés elektronikus levélhez csatolt elküldése), mégis egyetlen gombnyo-
117. Ábra: A parancsgombhoz így rendelhetünk eljárást
127
ECDL Adatbázis-kezelés modul mással végrehajthatóak lesznek. Nézzük, hogy miként helyezhetünk el egy parancsgombot űrlapunkon, vagy jelentésünkön: 1. Nyissuk meg tervező nézetben a szerkeszteni kívánt űrlapot (jelentést). majd a ikonra (ha nincs meg az „Esz2. Az „Eszközkészlet” eszközsoron kattintsunk rá előbb a közkészlet”, a ikonnal kapcsolható be). 3. Húzással adjuk meg a parancsgomb helyét, aminek hatására elindul a „Parancsgomb varázsló” (csak akkor indul, ha a ikonra is rákattintottunk). A „Parancsgomb varázsló” első lépésében azt kell megadnunk, hogy milyen esemény kerüljön végrehajtásra a gomb megnyomásakor. A lehetőségek elég sokrétűek: Rekordléptetés hatása ¾ Rekord keresése hatása egyenértékű a ikonnal, megnyílik a „Keresés ablak” (5.5.2.); ¾ Következő keresése a következő előfordulásra ugrik; ¾ Ugrás a következő rekordra egyenértékű a ikonnal; ¾ Ugrás az előző rekordra egyenértékű a ikonnal; ¾ Ugrás az első rekordra egyenértékű a ikonnal; ¾ Ugrás az utolsó rekordra egyenértékű a ikonnal. Rekordműveletek hatása ¾ Rekord mentése egyenértékű a ikonnal; ¾ Rekord nyomtatása az aktuális rekordot nyomtatja ki; Rekord törlése Rekord visszavonása Rekordmásolat
egyenértékű a ikonnal; egyenértékű az Esc billentyűvel; az aktuális rekordról egy másolatot készít;
Új rekord hozzáadása Űrlapműveletek Jelenlegi űrlap nyomtatása Lap megnyitása Űrlap bezárása Űrlap megnyitása Űrlap nyomtatása Űrlapadatok frissítése
egyenértékű a , vagy a ikonnal. hatása egyenértékű a ikonnal; egy lap objektumot nyit meg (a lapok az adatbázis adataihoz közvetlenül kapcsolódó weblapok); egyenértékű az űrlapablak kilépés gombjával; egy előre megadott űrlap megnyitása; egy előre megadott űrlap nyomtatása; az űrlap és a távoli adatbázis adatait szinkronizálja;
Űrlapszűrő alkalmazása Űrlapszűrő szerkesztése Jelentésműveletek Jelentés küldése Jelentés küldése fájlba Jelentés nyomtatása Jelentés nyomtatási képe Alkalmazás Alkalmazás futtatása Jegyzettömb megnyitása Kilépés az alkalmazásból MS Excel futtatása MS Word futtatása Egyéb Automatikus tárcsázás Lekérdezés futtatása Makró futtatása Tábla nyomtatása
egyezik a szűrés kijelöléssel / szűrés (5.5.3.1/2.) eljárásokkal; egyezik a ikonnal, megnyitja a szűrés űrlapját (5.5.3./2.). hatása előre megadott jelentést egy címezhető elektronikus levélhez csatolja; egy előre megadott bináris fájlba nyomtatja ki a jelentést úgy; egy előre megadott jelentést nyomtat ki; egy előre megadott jelentés nyomtatási képét mutatja meg. hatása előre megadott program elindítása; megnyitja a Jegyzettömb programot; kilépés az Access programból; elindítja a Word programot; elindítja az Excel programot. hatása elindítja a Tárcsázó programot; egy előre megadott lekérdezés futtatása; egy előre megadott makró futtatása; egy előre megadott tábla kinyomtatása.
¾ ¾ ¾ ¾
¾ ¾
¾ ¾ ¾ ¾ ¾ ¾
¾ ¾ ¾ ¾
¾ ¾ ¾ ¾ ¾
¾ ¾ ¾ ¾
128
Access XP alapokon Ha figyelmesen megnézzük az iménti felsorolást, akkor valószínűleg elgondolkodunk: Mindennek mi az értelme? A felsorolt események mindegyike valamelyik eszköztár ikonjával, menüből, az ablak vezérlőelemeivel, stb. is végrehajtható (kivétel a külső programokat is hívó eljárások, mint pl. „Automatikus tárcsázás”, „A Jegyzettömb megnyitása”, „Jelentés küldése”, stb.). A magyarázat az, hogy a menük, az eszköztárak, az ablakhoz tartozó vezérlőelemek (rekordléptető gombok, stb.) letilthatóak, amelynek módszere hamarosan bemutatásra kerül. Mindennek a célja az, hogy ne piszkálhassanak csak úgy szabadon bele az adatokba az Access programhoz nem értők, vagy éppen túl jól értők. Visszatérve a „Parancsgomb varázsló” használatához, amennyiben kiválasztjuk az eljárást, kattintsunk a „Tovább” gombra. A továbbiak azonban már a választott eljárástól fognak függeni. Ha olyan eljárást választunk, melynek végrehajtásához további paraméter is szükséges, a következő lépésben azt kell megadnunk. Ennek során ki kell választani azt a jelentést, lekérdezést, külső programot, stb., amelyre az eljárás vonatkozni fog. Ezt követően természetesen ismét a „Tovább” gombra kell kattintani.
118. Ábra: Paraméter megadása alkalmazás futtatásához
119. Ábra: Paraméter megadása alkalmazás futtatásához
Az újabb lépésben meg kell határoznunk, hogy a nyomógombon milyen kép vagy felirat szerepeljen. Ha az „Összes kép megjelenítése” jelölőnégyzetet kipipáljuk, mintegy 200 ábra közül választhatjuk ki azt, amelyet a parancsgombon
látni szeretnénk. Ha megtaláltuk a megfelelőt, kattintsunk a „Tovább” gombra. Az utolsó lépés már ismét ugyanaz, meg kell adni a nyomógomb nevét. Ez legyen beszélő, aminek a későbbiekben esetleg jelentősége lehet. A munkát a „Befejezés” gombra történő kattintással zárjuk le. 8.1.5.2.2.3 Karton Akkor célszerű karton vezérlőelemet választa120. Ábra: Adjunk a gombnak egy beszélő nevet ni, amikor az űrlapon, egy oldalon nem férnek el a vezérlőelemek. Használatakor előbb a szokásos módon egérrel történő húzással adjuk meg a karton vezérlőelemet, majd méretezzük a kívánt nagyságúra, és húzzuk a helyére. Az egyes regiszterek elnevezését a ikonra kattintás után a tulajdonságok párbeszédablak „Formátum” regiszterének „Cím” mezőjében kell megadnunk. Ha további regisztereket is hozzá kell adni a kartonhoz, akkor azt a legegyszerűbben a karton helyi menüjének „Lap beszúrása” pontjával tehetjük meg. Egy-egy felesleges regiszter szintén a helyi menüből tudunk törölni. A többi vezérlőelemet azután majd a kartonon kell már elhelyeznünk, de előbb annak megfelelő regiszterét kell kiválasztani.
129
ECDL Adatbázis-kezelés modul 44. Feladat: Készítsünk az „Űrlap varázsló” segítségével egy adatbeviteli képernyőt a „Tranzakciók tételei” adattáblához, majd segédűrlapként helyezzük el rajta a „Termék törzs”, és a „Tranzakciók” táblákat. A segédűrlapokat azonban „Karton” vezérlőelemre rakjuk.
121. Ábra: A feladat képe Megoldás: Az „Új űrlap” ablakban válasszuk ki az „Tranzakciók tételei” adattáblát, majd indítsuk el az „Űrlap varázsló” opciót. Adjuk hozzá az összes mezőt az ikonnal, majd „Tovább”. Szerkezetnek az „Oszlopos” elrendezést válasszuk, és „Tovább”. Stílusnak most is a „Nemzetközi” opciót adjuk meg, majd „Tovább”. Az utolsó ablakban csak a „Befejezés” gombra kell kattintanunk. Váltsunk át „Tervező nézetbe” a ikonnal, majd vegyük jóval nagyobbra az űrlap ablakát, és húzzuk szélesebbre az űrlap törzs szakaszát. ikonnal, majd az egérrel az űrlap „Törzs” Az „Eszközkészleten” válasszuk ki a „Karton” eszközt a szakaszának jobb oldalára helyezzük el. A karton méretét úgy állítsuk be, hogy a „Törzs” szakasz aljától a tetejéig érjen. ikonnal nyissuk meg a tulajdonságok ablakot, majd miután a kartonok vezérlőelem regiszterére A kattintunk, a tulajdonságok ablak „Egyéb” regiszterén a „Név” mezőben adjuk meg a regiszterek feliratait: „Termékek részletes adatai”, és „Szállítók részletes adatai”. Az adatbázis ablakból az egérrel húzzuk a „Termék törzs” űrlapot a „Termékek részletes adatai”, a „Szállító törzs” űrlapot pedig a „Szállítok részletes adatai” kartonra. Sajnos ennek hatására a „Törzs” szakasz méretei önálló életre kelnek. Méretezzük és pozícionáljuk a karton vezérlőelemet és a segédűrlapokat az ábra szerintire. Az egyes segédűrlapokba belejavítani úgy lehet, hogy azt az űrlapot korrigáljuk, amelyet segédűrlapként az űrlapra húztunk. Például lehetséges, hogy a „Szállító törzs” segédűrlapon több vezérlőelemben nem fér el az adat. Ennek javításához a „Szállító törzs” űrlapot kell tervező nézetben megnyitni, és a jelentéseknél bemutatott módszerrel a vezérlőelemeket átméretezni. Ez természetesen azok pozíciójának módosítását is maga után vonja. Kilépéskor mentsük is el a felkínált „Tranzakciók tételei” néven. 45. Feladat: Adjunk egy harmadik kartont is az űrlaphoz, amelyen a tranzakció részletes adatai látszanak, majd ezt a kartont rakjuk legfelülre. Megoldás: Nyissuk meg a „Tranzakciók tételei” űrlapot Tervező nézetben. Kattintsunk az egér jobb gombjával az egyik karton regiszterére, és a megjelenő helyi menüből válasszuk a „Lap beszúrása” elemet. Nyissuk meg a tulajdonságok ablakot, és annak „Egyéb” regiszterének „Név” mezőjébe adjuk meg a „Tranzakció adatai” nevet. Az adatbázis-ablakból a „Tranzakciók” űrlapot húzzuk a „Tranzakciók adatai” kartonra. Kattintsunk az egyik karton regiszterére a jobb egérgombbal, majd a megjelenő helyi menüből válaszszuk a „Lapsorrend…” elemet. Kattintsunk a „Tranzakció adatai” elemre, majd kétszer a „Fel” gombra.
130
Access XP alapokon 8.1.5.2.3 Események „Események” alatt az űrlapok és jelentések használata közben a felhasználó által végrehajtott cselekményeket és az azok hatására bekövetkező történéseket kell érteni. Minden eseményhez egy-egy makró, vagy úgynevezett eljárás (VB programban írt kód) rendelhető. Ezáltal az adatbázis használata nagymértékben finomabbá tehető, automatizálható, és a nem várt hibaesemények is lekezelhetővé válnak. Ugyanakkor, az eseményekhez kapcsolt eljárások és makrók használata többnyire már komolyabb ismereteket igényel. Pontosan ezért mindkét témát csak a www.pcsuli.hu internetcímről letölthető dokumentumban tárgyalom.
8.2 Űrlapok használata, törlése, módosítás Egy jól megírt adatbázis alkalmazásban kizárólag űrlapokat szokás az adattáblákhoz rekordok hozzáadására és törlésére, illetve az adatok módosítására alkalmazni. Igazság szerint nem sok újdonságot tudok e témákban elmondani, de azért egy-két problematikus kérdésre szeretném felhívni a figyelmet.
8.2.1 Űrlapok használata Ha módosítás közben Amennyiben egy űrlap segítségével megnyitunk vagyunk, azt itt egy egy adattáblát, akkor alaphelyzetben az űrlap alján ceruza jelzi lévő úgynevezett „Léptetőgombok” láthatóak. Ez esetben a szokásoknak megfelelően tudjuk mozgatni a rekordmutatót. Ha e „Léptetőgombok” használatát letiltjuk, akkor helyettük természetesen az egyes gombok funkcióit helyettesítő parancsgombokról kell gondoskodnunk. Új rekordot felvenni a , vagy az eszközsoron ikonnal lehetséges. Ez esetben az ablak található bal oldalán a helyett egy ikon jelenik meg. Amennyiben a ceruzára kattintunk, a rekordba íródLéptetőgombok Összes rekord száma nak az adatok. Ez akkor is megtörténik, ha a rekordmutatót mozgatjuk. 122. Ábra: Űrlapok kezelőelemei Amennyiben egy új rekord felvitelét, vagy egy rekord módosítását el kívánjuk vetni, nyomjuk meg az Esc billentyűt. Ilyenkor a helyén újra a ikon jelenik meg. Rekord úgy törölhető, hogy egyszerűen megnyomjuk a Delete billentyűt, de előbb az űrlap bal oldalán kattintsunk a rekord kijelölése érdekében a ikonra. Táblázatos, vagy adatlap típusú űrlap esetén egyszerre több rekord is törölhető, amihez a rekordokat ki kell jelölni. Az egyes vezérlőelemek között a Tabulátor, a Shift - Tabulátor, az Enter, a Shift - Enter, és a Ctrl - Tabulátor billentyűkkel lehet mozogni (és természetesen az egérrel).
8.2.2 Űrlapok törlése, módosítás Mindenben megegyezik a jelentésekkel: Egy űrlapot úgy tudunk törölni, hogy az adatbázis-ablak „Űrlapok” regiszterén kijelöljük, majd megnyomjuk a Delete billentyűt. Vigyázzunk, mert ez a törlés sem visszavonható! A módosításhoz pedig egyszerűen csak „Tervező nézetben” kell megnyitni az űrlapot, és a nem megfelelő részeket a tanultaknak megfelelően meg kell változtatni.
9. Makrók és makrócsoportok Az Access programmal végzett munka során a felhasználóknak folyamatosan és ismétlődően olyan műveleteket kell végrehajtaniuk, mint például: ¾ űrlapok, vagy lekérdezések megnyitása; ¾ egy-egy jelentés nyomtatási képének megtekintése, vagy kinyomtatása; ¾ űrlapból, jelentésből, vagy éppen magából a programból történő kilépés. Ezek a feladatok ugyan nem jelentenek semmilyen nehézséget, de mégis fárasztó, és főként pedig unalmas minduntalan újra és újra végrehajtani őket. Erre a célra – és még sok minden másra – majd az Ac-
131
ECDL Adatbázis-kezelés modul cess programban is makrókat fogunk alkalmazni. Mivel a makrók jelentik az egyik legösszetettebb témakört, könyvemben terjedelmi okokból nem tárgyalom. Ugyanakkor a www.pcsuli.hu internetcímről e témát tárgyaló részletes dokumentum tölthető le.
10. Adatbázis automatizálása Egy igényesen elkészített adatbázis-alkalmazás úgy viselkedik, mintha egy profi programozók által írt felhasználói programot használnánk. Elindításakor egy üdvözlő képernyő, majd egy úgynevezett kapcsolótábla jelentkezik be, melyből a megfelelő pontokat indítva az adatok kezelésére létrehozott űrlapok, lekérdezések és jelentések indulnak el. Az Access eredeti menürendszere helyett esetleg egyedi, csak a program használatához szükséges elemeket tartozó menürendszer jelenik meg. Az eszköztárak egyáltalán nem jelennek meg, vagy azok is egyediek. Ebbe a témakörbe tartozó következő kérdéseket szintén az internet www.pcsuli.hu címéről letölthető dokumentum tárgyalja: ¾ hogy készíthetünk az adatbáziselemek vezérlésére szolgáló kapcsolótáblákat; ¾ hogy tilthatjuk le az Access eredeti menürendszerét és eszközsorait; ¾ miként határozhatjuk meg az adatbázis megnyitásakor elinduló objektumot; ¾ továbbá hogy készíthetünk letiltható üdvözlő képernyőt (ez csak kiegészítő információként fog szerepelni). Ezzel az Access program bemutatásának is a végére értünk. Igazság szerint még bőven lenne miről tárgyalni, de már eddigi ismereteinkkel is rengeteg feladatot meg tudunk már oldani. A „Raktári rendszer” is elkészült, legalábbis bizonyos szinten. Természetesen bőven lenne még mit csiszolni rajta, de a könyv kereteibe csak ennyi fért. A feladatban szereplő példák alapján azonban remélhetően mindenki a saját igényeinek megfelelően testre tudja szabni a programot. Akiknek többfelhasználós környezetben kell dolgozniuk, illetve az adatbázist hol a munkahelyén, hol otthon kell alkalmazniuk, azok nézzék meg a súgó „Tartalom” regiszterének következő témakörét: ¾ Microsoft Access adatbázisok továbbfejlesztése – áttekintés. Sok sikert az Access program használatához is!
132
Access XP alapokon
Tárgymutató Access elindítása .............................................................. 4 eszközigénye ........................................................ 4 képernyője............................................................ 4 telepítése .............................................................. 4 Adatbázis automatizálása.................................................. 132 létrehozása sablonnal.......................................................... 8 üres .................................................................. 7 tömörítése........................................................... 54 Adatbázis-ablak................................. 4, 5, 21, 44, 60, ................................................ 76, 77, 80, 93, 118, ................................................. 119, 125, 127, 131 Adatbázis-kezelők további dBase, Clipper, FoxBASE ....................... 18, 32 Adatbevitel adattáblába ......................................................... 23 lekérdezésbe....................................................... 75 űrlapba ............................................................. 131 Adatlap nézet lekérdezés........................................................... 75 tábla.................................................................... 22 űrlap ................................................................. 120 Adatmodell ............................................................... 6 Adattábla csatolása ............................................................. 54 expotálása........................................................... 54 fogalma ................................................................ 6 formázása ........................................................... 22 importálása......................................................... 53 konvertálása ....................................................... 54 létrehozása.......................................................... 21 adatlap nézetben ............................................ 22 lekérdezéssel.................................................. 78 Tábla varázslóval........................................... 53 tervező nézetben ............................................ 23 neve.................................................................... 15 törlése................................................................. 22 Adattáblák tervezése............................................................... 9 tervezése "józan ésszel" ..................................... 14 tervezése ER módszerrel.................................... 14 tervezése normalizálással................................... 13 törzs és mozgás táblák ....................................... 12 Alapértelmezett érték mezőtulajdonság ................. 32 Alapfogalmak adatmodell............................................................ 6 adattábla ............................................................... 6 anomáliák........................................................... 10 egyedtípus ............................................................ 6 elsődleges kulcs ................................................. 10
idegen kulcs........................................................10 index...................................................................14 jelentés .................................................................7 lekérdezés.............................................................6 makró ...................................................................7 mező .....................................................................6 parciális kapcsolat ..............................................14 redundancia ........................................................10 rekord ...................................................................6 űrlap .....................................................................7 Állapotsor .................................................................5 Anomáliák ....................................................9, 10, 55 Cím mezőtulajdonság .............................................32 Dátum és idő típus ..................................................16 Egyedtípus ..........................................................6, 14 Elsődleges kulcs egyszerű-összetett ..................................11, 42, 43 fogalma...............................................................10 megadása automatikusan ..........................................22, 43 felhasználó által .............................................43 impotáláskor ..................................................53 írásban............................................................21 szerepe................................................................42 egy a többhöz kapcsolatban ...........................55 egy az egyhez kapcsolatban...........................55 ER modellben ................................................14 kaszkádolt frissítésben ...................................62 Keresés varázslóban.......................................58 normalizálásban .............................................13 természetes-mesterséges ........................11, 17, 43 törlése .................................................................44 ER modell...................................................13, 14, 55 Értékek és állandók.................................................33 Érvényesítési szöveg mezőtulajdonság ..................40 Érvényességi szabály mezőtulajdonság..................32 Események............................................................131 Feljegyzés típus ................................................15, 16 Függvények ............................................................36 általános .............................................................39 dátum..................................................................36 matematikai ........................................................36 összesítő .............................................................74 szöveg.................................................................38 típus konverziós .................................................39 Hiperhivatkozás típus .............................................17 Hivatkozási integritás .............................................61 Idegen kulcs fogalma...............................................................10 szerepe................................................................42 egy a többhöz kapcsolatban ...........................55 egy az egyhez kapcsolatban...........................55 ER modellben ................................................14
133
ECDL Adatbázis-kezelés modul kaszkádolt frissítésben ...................................62 Keresés varázslóban.......................................58 normalizálásban .............................................13 Igazságtáblázat........................................................35 Igen/nem típus ........................................................17 Index fogalma...............................................................14 index megadása indexek táblában ............................................42 mezőparaméterként ........................................41 index működése..................................................41 törlése .................................................................42 Indexelt mezőtulajdonság .......................................41 Jelentés AutoJelentés .......................................................97 Címke varázsló...................................................97 csoportosítási alapok fejléceinek megadása .....115 csoportosítási alapok megadása........................114 Diagram Varázsló.............................................100 fogalma...........................................................7, 92 Jelentés varázsló.................................................93 nyomtatási képe..................................................96 oldalbeállítás.....................................................109 összesítő függvények megadása.......................116 részei ................................................................102 jelentésfej .............................................102, 110 jelentésláb ............................................102, 117 mezőN fejléc ........................................102, 114 mezőN lábléc .......................................102, 114 oldalfej .................................................102, 112 oldalláb.................................................102, 117 törzs......................................................102, 112 tervező nézet.....................................................101 törlése, módosítása ...........................................118 új jelentés létrehozásának módjai.......................93 Kapcsolatok kapcsolatok ablak ...............................................59 meglévő kapcsolatok kijelzése.......................60 meglévő kapcsolatok törlése ..........................60 új kapcsolat létrehozása .................................62 létrehozása..........................................................57 kapcsolatok ablakkal......................................62 Keresés varázslóval........................................57 megadása írásban................................................21 osztályozása........................................................55 egy a többhöz .................................................55 egy az egyhez.................................................55 több a többhöz................................................56 szerepe..........................................................10, 55 tulajdonságai hivatkozási integritás .....................................61 illesztés típusa ................................................61 kaszkádolt frissítés .........................................62 kaszkádolt törlés.............................................62 Kaszkádolt
134
frissítés............................................................... 62 törlés .................................................................. 62 Keresés varázsló típus............................................ 17 Kifejezésszerkesztő..............................32, 45, 73, 76, ........................................................78, 80, 82, 116 kifejezések elemei értékek és állandók........................................ 33 függvények.................................................... 36 általános .................................................... 39 dátum ........................................................ 36 matematikai............................................... 36 szöveg ....................................................... 38 típus konverziós ........................................ 39 operátorok ..................................................... 33 logikai ....................................................... 35
igazságtálázata ................................ 35 összehasonlító ........................................... 34
Between........................................... 34 In ..................................................... 34 Like ................................................. 34 szövegösszefűző és aritmetikai................. 34 mező érvényességi szabály................................ 32 rekord érvényességi szabály .............................. 33 Kötelező kitöltés mezőtulajdonság ........................ 40 Lekérdezés adatlap nézet ...................................................... 75 Azonosakat kereső lekérdezés varázsló............. 90 Egyszerű lekérdezés varázsló ............................ 87 egyszerű lekérdezések fajtái .............................................................. 70 feltételek megadása ........................................... 73 fogalma................................................................ 6 frissítő lekérdezés .............................................. 76 hozzáfűző lekérdezés......................................... 80 kereszttáblás lekérdezés..................................... 81 oszlopok sorrendje ........................................ 82 Kereszttáblás lekérdezés varázsló ..................... 88 Nem egyezőket kereső varázsló ........................ 91 paraméteres lekérdezés...................................... 83 SQL nézet .......................................................... 84 táblakészítő lekérdezés ...................................... 78 tervező nézet...................................................... 71 törlő lekérdezés.................................................. 77 új lekérdezés létrehozásának módjai ................. 69 választó lekérdezés ............................................ 70 adatok csoportosítása .................................... 73 csoportok összesítése .................................... 74 futtatása ......................................................... 75 mezők hozzáadása......................................... 71 mezők megjelenítése, elrejtése...................... 72 oszlop elrejtése .............................................. 76 oszlop rögzítése............................................. 76 rekordok sorrendje ........................................ 73 Lista és kombinált lista .......................24, 57, 59, 103
Access XP alapokon Makró fogalma ........................................................ 7, 131 futtatása ............................................................ 131 Mező beszúrása a táblába............................................. 23 egyszerű és összetett .......................................... 16 fogalma ................................................................ 6 hossza........................................................... 15, 18 leírás................................................................... 23 megjelenése beviteli mező ................................................. 24 lista és kombinált lista ....................... 24, 57, 59 neve.................................................................... 15 nevének megváltoztatása ................................... 67 számított mező fejléce ............................................................ 71 megadása jelentésben .................................. 101 megadása lekérdezésbe.................................. 71 típusa.................................................................. 15 dátum és idő................................................... 16 hiperhivatkozás.............................................. 17 igen/nem ........................................................ 17 Keresés varázsló ............................................ 17 OLE ............................................................... 17 pénznem......................................................... 16 szám............................................................... 16 számláló ......................................................... 17 szöveg és feljegyzés................................. 15, 16 típusának megváltoztatása ................................. 67 többértékű .......................................................... 13 törlése a táblából .......................................... 23, 67 Mezők sorrendje a táblában ..................................... 23, 67 Mezőtulajdonságok alapértelmezett érték .......................................... 32 beviteli maszk .................................................... 29 kötelező karakterek........................................ 31 nem kötelező karakterek ................................ 32 tagoló jelek .................................................... 32 beviteli maszk varázsló ...................................... 30 cím ..................................................................... 32 érvényesítési szöveg........................................... 40 érvényességi szabály .......................................... 32 kiértékelése .................................................... 33 formátum............................................................ 25 dátum és idő................................................... 25 igen/nem ........................................................ 28 szám és pénznem ........................................... 26 szöveg és feljegyzés....................................... 28 formátumban színek megadása .......................... 25 indexelt............................................................... 41 kötelező kitöltés ................................................. 40 lekérdezésben..................................................... 72 nulla hosszúság engedélyezése .......................... 40 Normalizálás........................................................... 13
Nulla hosszúság engedélyezése mezőtul. ..............40 Nyomtatási kép.......................................................96 Oldalbeállítás........................................................109 OLE típus ...............................................................17 Operátorok..............................................................33 logikai.................................................................35 összehasonlító ....................................................34 Between .........................................................34 In ...................................................................34 Like ................................................................34 szövegösszefűző és aritmetikai ..........................34 Összegfokozatok.....................................................96 Parciális kapcsolat ..................................................14 Pénznem típus.........................................................16 Redundancia ...........................................................10 Rekord azonosítása .........................................................43 bevitele .................................................23, 75, 131 érvényességi szabály ..........................................33 fogalma.................................................................6 hozzáadása ...........................................23, 75, 131 keresése ..............................................................65 törlése .........................................................23, 131 Rekordmutató .........................................................23 mozgatása...................................................23, 131 Rekordok gyorsabb rendezése ............................................14 hozzáadása lekérdezéssel ...................................80 kaszkádolt törlése ...............................................62 mérete.................................................................18 módosítása lekérdezéssel ...................................76 sorrendje.................................................14, 41, 65 lekérdezésekben .............................................73 törlése lekérdezéssel...........................................77 Rendezés.................................................................65 Sablon adatbázis létrehozása sablonnal............................8 Segéd adatlap....................................................63, 64 SQL nézet ...............................................................84 SQL utasítások DELETE.............................................................86 FROM INNER JOIN..........................................85 INSERT INTO ...................................................86 SELECT .............................................................84 SELECT INTO...................................................85 TRANSFORM ...................................................86 UPDATE ............................................................85 Szám típus ..............................................................16 Számított mező fejléce .................................................................71 megadása jelentésben ...................................................101 lekérdezésben.................................................71 Számláló típus ........................................................17
135
ECDL Adatbázis-kezelés modul Szín egy-egy mező színe a táblában...........................25 tábla színe...........................................................25 Szöveg típus............................................................16 Szűrés .....................................................................65 kijelöléssel..........................................................66 űrlappal...............................................................66 Táblatulajdonságok alapértelmezett nézet ..........................................44 érvényesítési szöveg...........................................45 érvényességi szabály ..........................................45 leírás ...................................................................44 Táblatulajdonságok.................................................44 Tervező nézet jelentés..............................................................101 lekérdezés ...........................................................71 tábla ....................................................................23 űrlap..................................................................125 Többértékű mező ....................................................13 Törlés adattábla .............................................................22 adattábla lekérdezésből ......................................69 elsődleges kulcs..................................................44 jelentés..............................................................118 kapcsolatok.........................................................60 kaszkádolt...........................................................62 mező .............................................................23, 67 mező lekérdezésből ............................................71 rekord ...................................................23, 77, 131 vezérlőelem ..............................................105, 125 Űrlap AutoŰrlap.........................................................121 Diagram varázsló..............................................124 fogalma.........................................................7, 118 Kimutatás varázsló ...........................................122 létrehozása, módosítása tervező nézetben ........125 részei oldalfej .........................................................125 oldalláb.........................................................125 törzs..............................................................125 űrlapfej .........................................................125 űrlapláb ........................................................125 stílusa................................................................121 szerkezete adatlap ..................................................120, 121 kimutatás ......................................................121
136
oszlopos............................................... 120, 121 sorkizárt....................................................... 120 táblázatos............................................. 120, 121 új űrlap létrehozásának módjai........................ 119 Űrlap varázsló.................................................. 119 vezérlő elemek bejárási indexe........................ 126 Űrlapok módosítása ....................................................... 131 segédűrlap fő- és segédűrlap kapcsolata........................ 127 törlése .............................................................. 131 Varázsló adatbázis .......................................................... 8, 9 azonosakat kereső lekérdezés ............................ 90 beviteli maszk.................................................... 30 címke ................................................................. 97 diagram jelentés ........................................................ 100 űrlap ............................................................ 124 egyszerű lekérdezés ........................................... 87 jelentés............................................................... 93 keresés ......................................................... 17, 57 kereszttáblás lekérdezés..................................... 88 kimutatás ......................................................... 122 nem egyezőket kereső lekérdezés...................... 91 parancsgomb.................................................... 127 tábla ................................................................... 53 űrlap................................................................. 119 Véletlenszerű szám generálása .............................. 36 Vezérlőelemek ............................................. 103, 125 átméretezése ............................................ 105, 125 bejárási indexe űrlapban .................................. 126 fajtái megjelenésük szerint ...................... 103, 125 formázása................................................. 107, 125 karton............................................................... 129 kötésének megváltoztatása ...................... 105, 125 kötetlen vezérlőelemek ............................ 103, 125 kötött vezérlőelemek ............................... 103, 125 megadása ................................................. 104, 125 parancsgomb.................................................... 127 pozícionálása ........................................... 106, 125 segédűrlap........................................................ 126 létrehozása................................................... 127 típusának megváltoztatása ....................... 105, 125 törlése ...................................................... 105, 125
Access XP alapokon
Tartalomjegyzék Kapcsolódhat a fejezetben elkészítendő raktárrendszerhez egy számlázó program? ...........4 Az Access eszközigénye, telepítése ..................................................................................................4 Az én Office programom nem tartalmazza az Accesst! Miért? .............................................4 2. Az Access elindítása, képernyőjének felépítése ...............................................................................4 Nem így néz ki a képernyőm (nincs eszközsor és állapotsor, illetve adatbázis-ablak)..........5 3. Mit ért az Access adatbázison? .........................................................................................................5 Különféle adatmodellek.........................................................................................................6 3.1 Adattábla, adatmező, adatrekord ....................................................................................................6 Egyedtípus .............................................................................................................................6 3.2 Lekérdezés......................................................................................................................................6 3.3 Jelentés ...........................................................................................................................................7 3.4 Űrlap...............................................................................................................................................7 3.5 Makró .............................................................................................................................................7 4. Új adatbázis létrehozása....................................................................................................................7 Ahol lehet, használjunk varázslót (?) ....................................................................................9 Nyomtatással kapcsolatos problémák megelőzése ................................................................9 5. Adattáblák tervezése, létrehozása .....................................................................................................9 5.1 Adattáblák tervezése ......................................................................................................................9 5.1.1 Egyetlen tábla problémai: redundancia, anomália .......................................................................9 5.1.2 Több tábla és azok kapcsolata elsődleges és idegen kulccsal....................................................10 5.1.3 Időben állandó és változó adatok tárolása (törzs és mozgás adatok).........................................12 5.1.4 Táblákra bontás eljárásai: a normalizálás, az ER modell és a józan ész módszer .....................13 5.1.4.1 Normalizálás ...........................................................................................................................13 Mit jelent a többértékű mező? .............................................................................................13 5.1.4.2 ER modell................................................................................................................................14 5.1.4.3 Józan ész módszer ...................................................................................................................14 5.1.5 Indexek ......................................................................................................................................14 5.1.6 Adattáblákkal kapcsolatos további tervezési feladatok .............................................................15 5.1.6.1 Tábla és mezőnév....................................................................................................................15 Miért legyen rövid a mezőnév? ...........................................................................................15 Nem jelent majd gondot, ha nem elég szabatos a mezőnév? ...............................................15 5.1.6.2 Mezők típusa és mérete (hossza).............................................................................................15 A feljegyzés típus .................................................................................................................15 Miért pont abban az értéktartományban tudnak adatot tárolni az egyes számtípusok? .....16 5.1.6.2.1 Mire használjuk az egyes típusokat? ....................................................................................16 5.1.6.2.1.1 Szöveg és feljegyzés ..........................................................................................................16 Egyszerű és összetett mező ..................................................................................................16 5.1.6.2.1.2 Szám...................................................................................................................................16 Miért jobb „Szöveg” típust rendelni egyes, csak számot tartalmazó mezőkhöz?................16 5.1.6.2.1.3 Pénznem.............................................................................................................................16 5.1.6.2.1.4 Dátum/idő ..........................................................................................................................16 Mely évekre adhatunk meg dátum és idő adatokat?............................................................16 5.1.6.2.1.5 Számláló.............................................................................................................................17 5.1.6.2.1.6 Igen/Nem............................................................................................................................17 5.1.6.2.1.7 OLE objektum....................................................................................................................17 5.1.6.2.1.8 Hiperhivatkozás .................................................................................................................17 5.1.6.2.1.9 Keresés varázsló….............................................................................................................17 5.1.6.2.2 A mezők hosszáról................................................................................................................18 Mi a helyzet a régebbi adatbázis-kezelőkkel? .....................................................................18 Miért rakjuk külön adattáblába a mértékegységeket?.........................................................20 Hogy lehet a táblákat és kapcsolataikat tömören írásban is megadni? ..............................21 5.2 Adattáblák létrehozása .................................................................................................................21 Adattábla törlése .................................................................................................................22 5.2.1 Adatlap nézet .............................................................................................................................22
1.
137
ECDL Adatbázis-kezelés modul Miért ne használjuk az „Adatlap nézetet” új adattábla létrehozásához? ...........................22 Mi a helyzet az elsődleges kulccsal? ...................................................................................22 5.2.1.1 Tábla formázása Adatlap nézetben......................................................................................... 22 5.2.1.2 Adatbevitel adatlap nézetben.................................................................................................. 23 Rekordmutató ......................................................................................................................23 5.2.2 Tervező nézet és a tábla mezőinek viselkedését befolyásoló mezőtulajdonságok.................... 23 5.2.2.1 Megjelenítés regiszter paraméterei......................................................................................... 24 5.2.2.2 Általános regiszteren található mezőtulajdonságok................................................................ 25 5.2.2.2.1 Formátum............................................................................................................................. 25 Egy hiba a programban ......................................................................................................25 5.2.2.2.1.1 Dátum és idő adattípus formátumai................................................................................... 25 5.2.2.2.1.1.1 Előre meghatározott formátumok ................................................................................... 25 5.2.2.2.1.1.2 Egyedi formátumok ........................................................................................................ 26 5.2.2.2.1.2 Szám és pénznem adattípus formátumai ........................................................................... 26 5.2.2.2.1.2.1 Előre meghatározott formátumok ................................................................................... 26 5.2.2.2.1.2.2 Egyedi formátumok ........................................................................................................ 27 5.2.2.2.1.3 Szöveg és feljegyzés adattípus formátumai....................................................................... 28 5.2.2.2.1.3.1 Előre meghatározott formátumok ................................................................................... 28 5.2.2.2.1.3.2 Egyedi formátumok ........................................................................................................ 28 5.2.2.2.1.4 Igen/Nem adattípus formátumai ........................................................................................ 28 5.2.2.2.1.4.1 Előre meghatározott formátumok ................................................................................... 29 5.2.2.2.1.4.2 Egyedi formátumok ........................................................................................................ 29 Igen/Nem mezőbe történő adatbevitel közben fellépő hiba elhárítása ................................29 5.2.2.2.2 Beviteli maszk...................................................................................................................... 29 5.2.2.2.2.1 Beviteli maszk varázsló..................................................................................................... 30 5.2.2.2.2.2 Beviteli maszkban alkalmazható kódok ............................................................................ 31 5.2.2.2.3 Cím....................................................................................................................................... 32 5.2.2.2.4 Alapértelmezett érték ........................................................................................................... 32 5.2.2.2.5 Érvényességi szabály ........................................................................................................... 32 Mikor értékeli ki a mező érvényességi szabályt az Access? ................................................33 Létezik rekord érvényességi szabály is?..............................................................................33 5.2.2.2.5.1 Értékek és állandók ........................................................................................................... 33 5.2.2.2.5.1.1 Írott érték (literális érték)................................................................................................ 33 5.2.2.2.5.1.2 Állandók ......................................................................................................................... 33 Mi a különbség a "" és a „Null” állandók között?..............................................................33 5.2.2.2.5.2 Operátorok......................................................................................................................... 33 5.2.2.2.5.2.1 Szövegösszefűző és aritmetikai operátorok .................................................................... 34 5.2.2.2.5.2.2 Összehasonlító operátorok.............................................................................................. 34 5.2.2.2.5.2.3 Logikai operátorok.......................................................................................................... 35 5.2.2.2.5.3 Függvények ....................................................................................................................... 36 5.2.2.2.5.3.1 Matematikai függvények ................................................................................................ 36 Példa véletlenszerű, adott értékek közé eső szám előállítására ..........................................36 5.2.2.2.5.3.2 Dátum függvények.......................................................................................................... 36 5.2.2.2.5.3.3 Szöveg függvények......................................................................................................... 38 5.2.2.2.5.3.4 Általános függvények ..................................................................................................... 39 5.2.2.2.5.3.5 Átalakító (típus konverziós) függvények........................................................................ 39 5.2.2.2.6 Érvényesítési szöveg (érvényességi szabály hibaüzenete)................................................... 40 5.2.2.2.7 Kötelező ............................................................................................................................... 40 5.2.2.2.8 Nulla hosszúság engedélyezése ("" karakterlánc engedélyezése)........................................ 40 5.2.2.2.8.1 A „Kötelező” és a „Nulla hosszúság engedélyezése” különféle variációinak alkalmazása ....................................................................................................................... 41 5.2.2.2.9 Indexelt ................................................................................................................................ 41 Hogy működik az indexelés? ...............................................................................................41 5.2.2.2.9.1 Az index megadása a mezőparaméterek listában .............................................................. 41 5.2.2.2.9.2 Index megadása (és törlése) az indexek táblában.............................................................. 42
138
Access XP alapokon Ha nincs egyedi adat a rekordban, kell mesterséges elsődleges kulcs?..............................42 Mi a helyzet a típusok ütközésével és a függvényekkel........................................................42 Nem tárgyalt további mezőtulajdonságok ...........................................................................42 5.2.3 Elsődleges kulcs.........................................................................................................................42 Biztos szükséges legalább az egyik kapcsolatban részvevő táblának elsődleges kulcs? .....43 5.2.3.1 Elsődleges kulcs automatikus létrehozása...............................................................................43 5.2.3.2 Elsődleges kulcs megadása .....................................................................................................43 5.2.3.2.1 Egyszerű elsődleges kulcs megadása....................................................................................43 Hogy tudjuk megszüntetni az elsődleges kulcsot? ...............................................................44 5.2.3.2.2 Összetett elsődleges kulcs megadása....................................................................................44 5.2.4 Tábla tulajdonságai ....................................................................................................................44 5.2.4.1 Tábla érvényességi szabály .....................................................................................................45 5.2.4.2 Tábla érvényesítési szöveg......................................................................................................45 5.2.5 Táblavarázsló.............................................................................................................................53 5.2.6 Tábla importálása.......................................................................................................................53 Tábla exportálása................................................................................................................54 5.2.7 Tábla csatolása...........................................................................................................................54 5.2.8 Speciális adatbázis műveletek ...................................................................................................54 5.2.8.1 Adatbázisok tömörítése ...........................................................................................................54 5.2.8.2 Táblák konvertálása ................................................................................................................54 5.3 Adattáblák közötti kapcsolatok ....................................................................................................55 5.3.1 A kapcsolatok osztályozása .......................................................................................................55 5.3.1.1 „Egy az egyhez” („1 : 1”)........................................................................................................55 5.3.1.2 „Egy a többhöz” („1 : N”) .......................................................................................................55 5.3.1.3 „Több a többhöz” (N : M) .......................................................................................................56 5.3.2 Kapcsolatok létrehozása ............................................................................................................57 5.3.2.1 „Keresés varázsló…” ..............................................................................................................57 5.3.2.1.1 A szülő adattábla adatai valójában a gyerek adattábla paramétereiként tárolódnak.............57 5.3.2.1.2 Valódi kapcsolat létrehozása ................................................................................................58 5.3.2.1.3 A „Keresés varázsló” által beállított megjelenés..................................................................59 5.3.2.2 A „Kapcsolatok” ablak használata ..........................................................................................59 5.3.2.2.1 Meglévő kapcsolatok felderítése ..........................................................................................60 5.3.2.2.2 Meglévő kapcsolatok jellegének módosítása, kapcsolatok törlése .......................................60 5.3.2.2.2.1 Az illesztés típusa...............................................................................................................61 5.3.2.2.2.2 Hivatkozási integritás.........................................................................................................61 5.3.2.2.2.3 Kapcsolt mezők kaszkádolt frissítése.................................................................................62 5.3.2.2.2.4 Kapcsolt mezők kaszkádolt törlése ....................................................................................62 5.3.2.2.3 Új kapcsolat felépítése a „Kapcsolatok” ablak segítségével ................................................62 Miért jelentek meg a kis pluszjelek a rekordok előtt? .........................................................63 Milyen megnevezéseket használjunk a termék törzsekben?.................................................64 5.4 Segéd adatlap................................................................................................................................64 5.5 Rekordok sorba rendezése, keresése, szűrése...............................................................................65 5.5.1 Rendezés (növekvő/csökkenő) ..................................................................................................65 5.5.2 Keresés és csere .........................................................................................................................65 5.5.3 Szűrés.........................................................................................................................................65 5.5.3.1 Szűrés kijelöléssel ...................................................................................................................66 5.5.3.2 Szűrés űrlappal ........................................................................................................................66 Mit tegyünk, ha egy mező többféle értékéhez tartozó adatokat kell kigyűjtenünk? .............66 5.6 Adattábla szerkezetének módosítása ............................................................................................67 5.6.1 Mezők sorrendjének megváltoztatása ........................................................................................67 5.6.2 Mező átnevezése ........................................................................................................................67 5.6.3 Mező törlése...............................................................................................................................67 5.6.4 Mező típusának megváltoztatása ...............................................................................................67 6. Lekérdezések ..................................................................................................................................69 6.1 Egyszerű lekérdezések .................................................................................................................69
139
ECDL Adatbázis-kezelés modul Hogy adhatunk utólag táblát a lekérdezéshez?...................................................................69 Hogy törölhetünk táblát a lekérdezésből?...........................................................................69 6.1.1 Választó lekérdezés................................................................................................................... 70 Mi is a választó lekérdezés?................................................................................................70 6.1.1.1 Választó lekérdezés tervezése tervező nézetben..................................................................... 71 6.1.1.1.1 Mezők felvétele a lekérdezés tervezőrácsába ...................................................................... 71 Mezők törlése, áthelyezése ..................................................................................................71 6.1.1.1.1.1 Mezők egyenkénti felvétele a megjelenítendő mezők közé .............................................. 71 6.1.1.1.1.2 Az összes mező felvétele a megjelenítendő mezők közé .................................................. 71 6.1.1.1.1.3 Számított értékek felvétele a megjelenítendő adatok közé................................................ 71 Hogyan lehet a számított érték fejlécét megadni?...............................................................71 6.1.1.1.2 Mezőtulajdonságok .............................................................................................................. 72 Miért nem kell megadni a lekérdezések mezőtulajdonságait? ............................................72 6.1.1.1.3 A mező megjelenítésének kérése/nem kérése ...................................................................... 72 6.1.1.1.4 A táblanevek megjelenítésének kérése/nem kérése ............................................................. 72 6.1.1.1.5 Az adatok sorrendjének meghatározása............................................................................... 73 6.1.1.1.6 Feltételek megadása ............................................................................................................. 73 6.1.1.1.7 Adatok csoportosítása és összesítése ................................................................................... 73 Ismerősnek tűnik ez a téma? ...............................................................................................74 6.1.1.2 Választó lekérdezések futtatása („Adatlap nézete”) ............................................................... 75 Milyen probléma léphet fel lekérdezésben történő adatbevitelkor?....................................75 6.1.1.3 További lehetőségek „Adatlap nézetében”............................................................................. 76 6.1.1.3.1 Oszlop elrejtése.................................................................................................................... 76 6.1.1.3.2 Oszlop rögzítése................................................................................................................... 76 6.1.2 Frissítő lekérdezés..................................................................................................................... 76 6.1.3 Törlő lekérdezés........................................................................................................................ 77 Mi a helyzet kapcsolattal rendelkező tábláknál? ................................................................78 6.1.4 Táblakészítő lekérdezés ............................................................................................................ 78 Két további fontos információ a „táblakészítő lekérdezésről”? .........................................79 Táblakészítő lekérdezéssel létrehozott táblák számítással kapott mezőinek nevei ..............80 6.1.5 Hozzáfűző lekérdezés ............................................................................................................... 80 Hogy célszerű „Hozzáfűző lekérdezést” futtatni?...............................................................81 Mire kell ügyelni? ...............................................................................................................81 6.1.6 Kereszttáblás lekérdezés ........................................................................................................... 81 A kereszttáblás lekérdezés oszlopainak sorrendje...............................................................82 6.1.7 Paraméteres lekérdezés ............................................................................................................. 83 6.1.8 Az SQL nézet ............................................................................................................................ 84 Választó lekérdezés: a SELECT utasítás.............................................................................84 Táblák összekapcsolása: FROM INNER JOIN (LEFT JOIN és RIGHT JOIN) művelet ....85 Táblakészítő lekérdezés: a SELECT INTO utasítás ............................................................85 Frissítő lekérdezés: az UPDATE utasítás ...........................................................................85 Hozzáfűző lekérdezés: az INSERT INTO utasítás ...............................................................86 Törlő lekérdezés: a DELETE utasítás.................................................................................86 Kereszttáblás lekérdezés: a TRANSFORM utasítás............................................................86 6.2 Egyszerű lekérdezés varázsló ...................................................................................................... 87 6.3 Kereszttáblás lekérdezés varázsló................................................................................................ 88 Lekérdezés a lekérdezésben.................................................................................................89 Nagy baj, ha hirtelen nem tudunk választani a varázslóban?.............................................89 A „Választó lekérdezések” számított mezői nem módosíthatók. Miért? .............................89 SQL specifikus lekérdezés ...................................................................................................89 6.4 Azonosakat kereső lekérdezés varázsló....................................................................................... 90 Mit fogunk látni egy „Azonosakat kereső lekérdezés” tervezőrácsában? ..........................91 6.5 Nem egyezőket kereső lekérdezés varázsló................................................................................. 91 Mit kapunk a „Nem egyezőket kereső varázsló” használatával? .......................................92 7. Jelentések ....................................................................................................................................... 92 Feltétlenül kell a jelentések készítéséhez nyomtató?...........................................................93
140
Access XP alapokon 7.1 7.1.1
Új jelentés létrehozása..................................................................................................................93 Jelentés varázsló ........................................................................................................................93 Több forrásból is megadhatunk mezőket?...........................................................................94 Összegfokozatok ..................................................................................................................96 7.1.2 AutoJelentés...............................................................................................................................97 Mikor és melyik AutoJelentést használjuk?.........................................................................97 7.1.3 Címke varázsló ..........................................................................................................................97 Milyen címkét vegyünk? ......................................................................................................98 7.1.3.1 Új címke méret felvétele, meglévő címke paraméterek módosítása, címke törlése................98 7.1.3.2 Címke megcímzése .................................................................................................................98 7.1.4 Diagram varázsló .....................................................................................................................100 7.1.5 Jelentés: létrehozása, módosítása tervező nézetben.................................................................101 Ha nem jelöljük ki az adatforrást......................................................................................101 Számított mező szerepeltetése jelentésben (nem külső lekérdezésre alapozva).................101 7.1.5.1 A jelentés (és a jelentésablak) részei.....................................................................................102 Nincs „Jelentésfej” és „Oldalfej”. Miért?........................................................................103 7.1.5.2 Vezérlőelemek.......................................................................................................................103 7.1.5.2.1 A vezérlőelemek típusai .....................................................................................................103 7.1.5.2.1.1 A vezérlőelemek típusai a mezőadatokkal való kapcsolatuk szerint ...............................103 7.1.5.2.1.2 A vezérlőelemek típusai megjelenésük szerint ................................................................103 7.1.5.2.2 A vezérlőelemek kezelésének általános szabályai..............................................................104 7.1.5.2.2.1 Beviteli mező elhelyezése a jelentésen ............................................................................104 Hogy lehet más típusú vezérlőelemet megadni?................................................................104 Vezérlőelem-csoport értelmezése, létrehozása..................................................................104 7.1.5.2.2.2 Vezérlőelemek törlése......................................................................................................105 7.1.5.2.2.3 Vezérlőelemek típusának megváltoztatása ......................................................................105 7.1.5.2.2.4 Kötés megváltoztatása......................................................................................................105 7.1.5.2.2.5 Vezérlőelemek átméretezése............................................................................................105 7.1.5.2.2.5.1 Méretezés az egérrel történő húzással ...........................................................................106 Hogy lehet több vezérlőelemet egyszerre kijelölni? ..........................................................106 7.1.5.2.2.5.2 Méretezés a jellemzők bevitelével.................................................................................106 További formátumjellemzők ..............................................................................................106 7.1.5.2.2.5.3 Méretezés mintához történő igazítással.........................................................................106 7.1.5.2.2.6 A vezérlőelemek pozíciójának megváltoztatása ..............................................................106 7.1.5.2.2.6.1 Pozícionálás az egérrel történő húzással .......................................................................107 7.1.5.2.2.6.2 Pozícionálás a jellemzők bevitelével.............................................................................107 7.1.5.2.2.6.3 Pozícionálás mintához történő igazítással .....................................................................107 7.1.5.2.2.7 A vezérlőelemek formázása .............................................................................................107 7.1.5.2.2.8 További vezérlőelemek ....................................................................................................108 7.1.5.2.2.8.1 Kép ................................................................................................................................108 7.1.5.2.2.8.2 Vonal és téglalap ...........................................................................................................109 7.1.5.3 Egy, a jelentés minden szakaszára vonatkozó beállítás („Oldalbeállítás”) ...........................109 7.1.5.4 Még egyszer a jelentések részeiről........................................................................................110 7.1.5.4.1 A „Jelentésfej”....................................................................................................................110 7.1.5.4.2 Az „Oldalfej” és „Törzs” ....................................................................................................112 Így biztosan minden stimmelni fog a nyomtatási képen? ..................................................112 7.1.5.4.3 Csoportosítási fej- és láblécek („Mező1 fejléc”, „Mező1 lábléc”, „Mező2 fejléc”, …)........114 További összesítő függvények............................................................................................114 7.1.5.4.3.1 Csoportosítási alapok képzése .........................................................................................114 7.1.5.4.3.2 Csoportosítási fejlécek megadása ....................................................................................115 7.1.5.4.3.3 Összesítő függvények megadása csoportosítási láblécekben...........................................116 7.1.5.4.4 Az „Oldalláb” .....................................................................................................................117 7.1.5.4.5 A „Jelentésláb” ...................................................................................................................117 7.2 Jelentések törlése, módosítása....................................................................................................118 8. Űrlapok .........................................................................................................................................118
141
ECDL Adatbázis-kezelés modul 8.1 8.1.1
Új űrlap létrehozása ................................................................................................................... 119 Űrlap varázsló ......................................................................................................................... 119 Több forrásból is megadhatunk mezőket?.........................................................................120 Mi a különbség a „Táblázatos” és az „Adatlap” elrendezés között? ...............................120 8.1.2 AutoŰrlap................................................................................................................................ 121 Melyik AutoŰrlapot használjuk?.......................................................................................122 8.1.3 Kimutatás varázsló .................................................................................................................. 122 8.1.4 Diagram varázsló .................................................................................................................... 124 8.1.5 Űrlap: létrehozása, módosítása tervező nézetben.................................................................... 125 8.1.5.1 Az űrlapok (és az űrlapablak) részei..................................................................................... 125 8.1.5.2 A vezérlőelemek ................................................................................................................... 125 8.1.5.2.1 A bejárási index ................................................................................................................. 126 Mi is valójában a bejárási index? .....................................................................................126 8.1.5.2.2 Három korábban nem tárgyalt vezérlőelem: a segédűrlap, a parancsgomb és a karton..... 126 8.1.5.2.2.1 Segédűrlap ....................................................................................................................... 126 8.1.5.2.2.1.1 Segédűrlap létrehozása ................................................................................................. 127 8.1.5.2.2.1.2 A fő- és segédűrlap kapcsolata ..................................................................................... 127 8.1.5.2.2.2 Parancsgomb ................................................................................................................... 127 8.1.5.2.2.3 Karton.............................................................................................................................. 129 8.1.5.2.3 Események ......................................................................................................................... 131 8.2 Űrlapok használata, törlése, módosítás...................................................................................... 131 8.2.1 Űrlapok használata .................................................................................................................. 131 8.2.2 Űrlapok törlése, módosítás...................................................................................................... 131 9. Makrók és makrócsoportok.......................................................................................................... 131 10. Adatbázis automatizálása ............................................................................................................. 132 Tárgymutató................................................................................................................................................. 133 Tartalomjegyzék .......................................................................................................................................... 137
142
Access XP alapokon
143
ECDL Adatbázis-kezelés modul
144