Készítette: Pető László DBASE Készítette: Pető László
Az egyed A nyilvántartás szereplői pl.: az osztály tanulói A nyilvántartás célja határozza meg, hogy az egyedekről milyen adatokat tartunk nyilván. pl.: tanárok - érdemjegy; cipész - lábméret
A rekord Ugyanazon egyedről nyilvántartott adatok összessége általában sorszámmal látjuk el tanulókról például rekordot alkothat: név, születési hely, születési dátum, testvérek száma, tanulmányi átlag, bejáró-e.
A mező A nyilvántartás oszlopai A rekordok adatai a mezők sorrendjének megfelelően kell, hogy kövessék egymást.
Az adatbázisfájl A nyilvántartás valamilyen háttértárolón, fájlban helyezkedik el. Több összetartozó adatbázisfájl és a hozzájuk tartozó kiegészítő állományok (pl. indexfájl) alkotják az adatbázist.
A relációs adatbázis
Az adatbázis-kezelők feladata Az adatbázisfájl létrehozása Az adatbázisfájl kiegészítése újabb rekordokkal A rekordok tartalmának módosítása Rekordok törlése Válogatás a rekordok között Művelet elvégzése az adatbázisfájlban szereplő adatokkal
Az adatbázis-kezelők feladata A rekordok sorrendjének megváltoztatása Több adatbázisfájl egyidejű használata Az adatok kiírása Jelentéskészítés Lekérdezések végrehajtása
DBASE Az egyik legegyszerűbb és legismertebb adatbázis-kezelő Az adatbázisfájl nevének kiterjesztése csak DBF lehet.
A mező neve A mezők azonosítója max. 10 karakterből állhat. Az azonosítókat a felhasználó adja meg. Szerepelhetnek benne: az angol ABC nagy betűi számjegyek aláhúzásjel
Példa mezőnevekre
Adattípusok szám dátum karaktersorozat (szöveg) logikai
Szám Csak számjegyeket, tizedespontot és előjelet tartalmazhat -18.25 1965 +34.22
Dátum 8 karakterből áll: az év 4 számjegye, a hónap 2 számjegye és a nap 2 számjegye 1965.02.21 2004.08.11
Karaktersorozat Tetszőleges karaktereket tartalmazhat Bartók Béla 76-324616 76324616
Logikai adat Igen vagy nem jellegű kérdésekre tartalmazhat választ. Az igent az Y vagy a T betű jelentheti A nemet az N vagy az F betű jelentheti
Rövidítések
Példa
A mező hossza Azt a számot, amely megadja, hogy a mező legfeljebb hány karaktert tartalmazhat, a mező hosszának nevezzük.
Megjegyzések A logikai mező hossza mindig 1. A dátum mező hossza mindig 8. Karakteres mező nem lehet hosszabb 254-nél. Numerikus mező nem lehet hosszabb 19-nél. A tizedesjegyek száma nem lehet több 15-nél. A numerikus mező hossza legalább kettővel kell, hogy több legyen, mint a tizedesjegyek száma.
Az adatbázisfájl tervezése Kik lesznek az egyedek? Milyen adatokat akarunk az egyedekről tárolni? (mezők) Mi legyen a mezők neve? Milyen típusúak legyenek a mezők? Milyen hosszúak legyenek a karakteres és a numerikus mezők? A numerikus mezők hány tizedest tartalmazzanak?
Példa - KÖNYV Szerző Cím Kiadás éve Vannak-e benne képek? Ára
Példa - ISMERŐSÖK Név Születési dátum Irányítószám Város Utca Házszám
Szükséges állományok DBASE.EXE - maga a program DBASE.OVL - kiegészítés DBASEINL.OVL - kiegészítés DBASE.MSG - üzenetek HELP.DBS - súgó CONFIG.DB - konfigurációs állomány
Megjegyzés A gép CONFIG.SYS állománya a következő sorokat kell tartalmazza mindenképp: FILES = 20 BUFFERS = 15 Az nem baj, ha nagyobb értékek szerepelnek!
Bejelentkező képernyő
A parancs-cella Milyen parancs végrehajtása van folyamatban. Ha Parancs Sor felirat látható, akkor nincs végrehajtás alatt álló feladat.
A meghajtó-cella Az aktuális meghajtót mutatja.
Az adatbázisfájl-cella Annak az adatbázisfájlnak a nevét mutatja, amin éppen dolgozunk. Ha üres, akkor nincs nyitott adatbázisfájl.
A rekord-cella Ha dolgozunk egy adatbázison, akkor az abban lévő összes rekord számát mutatja, és azt, hogy hányadik rekordon állunk.
Az üzemmód-cella INS billentyűvel válthatunk a betoldó és a felülíró üzemmód között. Az üzemmódok állapotát mutatja.
A lámpa-cella A NumLock és a CapsLock lámpák állapotát jelzi ki.
A kurzor kurzor Ide kell begépelni a parancsokat. Kis és nagybetűk egyaránt használhatók Egy parancs max. 254 karakterből állhat. A parancs begépelése után ENTER-t kell ütni. Az előzőleg kiadott parancsok között a fel és le nyilakkal közlekedhetünk.
CLEAR Képernyő törlése
QUIT Kilépés a DBASE-ből
Az adatbázisfájl létrehozása CREATE fájlnév CREATE WORK.DBF
Az adatbázisfájl szerkezetének begépelése
Az adatbázisfájl szerkezetének mentése CTRL+END
Az adatbázis feltöltése
Az adatbázisfájl feltöltése Lezárás: CTRL+END
Az adatbázisfájlok számbavétele DIR
Adatbázisfájl megnyitása USE önmagában kiadva lezárja a nyitott adatbázisfájlt USE fájlnév USE KIRALY.DBF
Adatbázisfájl szerkezetének kiíratása DISPLAY STRUCTURE
Az aktuális rekord A nyitott adatbázisfájl kitüntetett rekordja Célszerű azt aktuálissá tenni, amelyikre szükségünk van. A rekord-cella mutatja az aktuális rekord sorszámát. Ha a rekord-cellában EOF látható, akkor nincs aktuális rekord. Ha a rekord-cellában None látható, akkor a fájlnak nincsenek rekordjai.
Kijelölés GO paranccsal GO 7 : a hetedik rekordot tesszük aktuálissá GO TOP : az első rekord így is aktuálissá tehető GO BOTTOM : az utolsó rekord így is aktuálissá tehető
Kijelölés SKIP paranccsal SKIP 4 : ha pl. jelenleg a 6. rekord az aktuális, akkor a 10. válik aktuálissá SKIP -3 : ha jelenleg a 9. rekord volt aktuális, akkor a 6. válik aktuálissá. SKIP szám nélkül ugyanaz, mint SKIP 1 Ha a paranccsal az első rekord előttire hivatkoznánk, akkor az első válik aktuálissá. Ha az utolsó utánira hivatkoznánk, akkor nem lesz aktuális rekord.
Rekord hozzáfűzése APPEND Befejezés: CTRL+END
Rekord betoldása INSERT : Az aktuális rekord után told be
Rekord betoldása INSERT BEFORE : Az aktuális rekord elé told be.
Aktuális rekord kiíratása DISPLAY
Adatbázis tartalmának kiíratása DISPLAY ALL
Adatbázis tartalmának kiíratása LIST
Módosítás EDIT
Módosítás CHANGE
Módosítás BROWSE
Rekordok törlése DELETE : kijelöli a törlésre szánt rekordot RECALL : megszünteti a rekord törlésre kijelöltségét PACK : valamennyi törlésre kijelölt rekordot eltávolítja az adatbázisból. Visszavonhatatlan következményekkel jár.
DELETE
RECALL
PACK
ZAP Az adatbázisfájl összes rekordját visszavonhatatlanul törli.
Konstansok, konstanstípusok pl.: a GO 9 parancsban a 9 konstans. numerikus karakteres logikai
Konstansok megadása Numerikus: -18.25 1965 +34.22
Konstansok megadása Karakteres ”Bartók Béla” ‘76-324616‘ ‘76324616‘
Konstansok megadása Logikai .Y. (igaz) .N. (hamis) .T. (igaz) .F. (hamis)
Műveletek + : összeadás - : kivonás * : szorzás / : osztás ** vagy ^ : hatványozás .AND. : logikai és .OR. : logikai vagy .NOT. : logikai tagadás
Műveletek < : kisebb > : nagyobb = : egyenlő <= : kisebb vagy egyenlő >= : nagyobb vagy egyenlő <> vagy # : nem egyenlő $ : benne foglaltatik-e?
Művelet eredményének kiíratása
Számtani műveletek
Naptári műveletek
Összefűző műveletek
Logikai műveletek
Összehasonlító műveletek
Karakterkereső műveletek
A kifejezés fogalma A kifejezés nem más, mint konstansoknak mezőneveknek műveleti jeleknek olyan összekapcsolása, aminek van értelme. Használhatók még gömbölyű zárójelpárok.
Kifejezések értelmetlen numerikus és karakteres mező tartalmát összeadni
Kifejezések
Műveletek sorrendje (1. szint, legmagasabb rendű) ** vagy ^ : hatványozás (N) + : összefűzés szóközmeghagyással (C) - : összefűzés szóközáthelyezéssel (C) $ : bennefoglaltatik (C)
Műveletek sorrendje (2. szint) - : előjelváltás (N)
Műveletek sorrendje (3. szint) * : szorzás (N) / : osztás (N)
Műveletek sorrendje (4. szint) + : összeadás (N) - : kivonás (N) + : dátum növelése (D) - : dátum csökkentése (D) - : dátumok különbözete (D)
Műveletek sorrendje (5. szint) < : kisebb (L) > : nagyobb (L) = : egyenlő (L) <= : kisebb, vagy egyenlő (L) >= : nagyobb, vagy egyenlő (L) # : nem egyenlő (L)
Műveletek sorrendje .NOT. : tagadás (6. szint) .AND. : és (7. szint) .OR. : vagy (8. szint)
Példák
Numerikus kifejezések
Numerikus kifejezések
Dátum jellegű kifejezések
Dátum jellegű kifejezések
Karakteres kifejezések
Karakteres kifejezések
Logikai kifejezések
Logikai kifejezések
Példa
Példa
Feladatok Kiss Gyula, Herczeg András, Sólyom Melinda esetén értékelje ki az ALAPBER+POTLEK-LEVONAS kifejezést! Kiss Gyula, Herczeg András, Fekete Béla és Babai Attila esetén értékelje ki az EGYETEM.AND.VEZETO kifejezést
Feladatok Herczeg András, Fekete Béla és Sólyom Melinda esetén értékelje ki az EGYETEM.AND.ALAPBER>=220000 kifejezést! Sutus Csabáné,Kertai Sándor és Kun András esetén értékelje ki a VEZETO.OR.LEVONAS>0 kifejezést!
Feladatok Csabai Antal, Kada Erika és Pfleigel Péter esetén értékelje ki a .NOT.VEZETO.AND.MUNKA_KEZD-SZUL_DATUM>23*365 kifejezést! Adja meg, hogy Kis András, Falus Róbert és Kada Erika hány napot élt addig a napig, amikor belépett!
Hatáskör fogalma aktuális rekordra vonatkozik (DISPLAY, DELETE, RECALL) valamennyi rekordra vonatkozik (LIST, EDIT, CHANGE) módosítás nélkül a parancsok mindig alapértelmezett hatáskörrel lépnek életbe.
Hatáskör módosítása RECORD NEXT ALL REST
RECORD általános hatáskörű parancs csak az aktuális rekordra vonatkozzon LIST RECORD 5 (csak az 5. rekordot listázza) DELETE RECORD 7 (csak a 7. rekordot jelöli ki törlésre)
NEXT a parancs az aktuális rekordtól számított néhány rekordra fog vonatkozni RECALL NEXT 3 (ha az aktuális rekord a 7., akkor a 7. 8. 9. rekord kijelöltsége meg fog szűnni.) LIST NEXT 4 (ha az aktuális rekord a 6., akkor 6. 7. 8. 9. rekord tartalma íródik ki.)
ALL a parancs hatáskörébe az összes rekord bele fog tartozni DISPLAY ALL (valamennyi rekord tartalmát megmutatja) DELETE ALL (az összes rekordot ki fogja jelölni törlésre)
REST a parancs hatáskörébe az aktuális és az azt követő összes rekord fog beletartozni. LIST REST (az aktuális rekordtól az adatbázis utolsó rekordjáig minden rekordot listáz) RECALL REST (az aktuális rekordtól az utolsóig megszünteti a kijelöltséget)
A feltétel Egyes parancsok hatásköre beállítható úgy, hogy csak azokon hajtódjon végre, amelyekre valamilyen feltétel teljesül.
FOR DISPLAY FOR TESTVER>3 : azokat mutatja, akiknek több testvérük van 3-nál. LIST FOR BEJARO : kilistázza a bejárókat. DELETE TESTVER>3.AND.BEJARO : kijelöli törlésre a bejárók közül azokat, akiknek 3-nál több testvérük van.
Feladat
Feladat
Feladat Írasd a képernyőre azokat a mozdonyokat, amelyek nem villanymozdonyok, és a sebességük 100 km/h-nál kisebb! Írasd a képernyőre az összes olyan mozdonyt, amelyeknek a tömege 100 tonnánál kisebb és a sebessége 100 km/h-nál nagyobb!
Feladat Írasd a képernyőre a 100 km/h-nál nagyobb sebességű Ganz-MÁVAG gyártmányú mozdonyt! Írasd ki a képernyőre a Blau Lady típusú mozdony adatait!
Kifejezéslista Tetszőleges típusú kifejezések felsorolása egymástól vesszővel elválasztva. NEV+SZUL_HELY,TESTVER*10,BEJAR.AND.TESTVER>=1,SZUL_DATUM+1
Példa
Feladat A dolgozókat tartalmazó adatbázisból listázzuk az összes dolgozó nevét és havi alapbérét! A 4. rekordtól kezdve listázzuk az összes dolgozó nevét és éves alapbérét! Listázzuk az egyetemet végzett vezető beosztású dolgozók nevét és éves járandóságát!
Feladat Listázzuk a 60000 Ft-nál kevesebb havi alapbérű dolgozók nevét és alapbérét! Listázzuk az összes nem vezető beosztású 64000 Ft-nál magasabb havi alapbérű dolgozó nevét Listázzuk az összes olyan dolgozó nevét és havi alapbérét, aki 23 éves kora után került a céghez!
Rekordsorszám letiltása OFF DISPLAY ALL : A rekordsorszámot is kiírja. DISPLAY ALL OFF : nem írja ki a rekordsorszámokat
Kiíratás a nyomtatóra LIST : a képernyőre listáz TO PRINT LIST : a képernyőre listáz LIST TO PRINT : a nyomtatóra listáz A papír nyomtatóból való kivétele előtt be kell írni a lapemelést eredményező EJECT parancsot.
Mezőlista Vannak olyan parancsok, amelyek hatásköre korlátozható néhány mezőre. A mezőlista mezőnevek vesszővel történő felsorolása. NEV,TESTVER NEV,SZUL_HELY,BEJARO A mezőlista használata előtt mindig ki kell írni a FIELDS szót!
Példák BROWSE FIELDS NEV,ATLAG : csak a tanulók nevét és átlagát módosíthatjuk. EDIT RECORD 4 FIELDS NEV,SZUL_HELY : csak a 4. rekordban szereplő tanuló neve és születési helye módosítható. CHANGE FIELDS NEV,SZUL_DATUM,TESTVER FOR BEJARO : csak a bejárók nevét, születési dátumát és testvéreinek számát módosíthatjuk.
A mezők tartalmának automatikus módosítása REPLACE [hatáskör] mezőnév1 WITH kifejezés1[,mezőnév2 WITH kifejezés2…] [FOR feltétel]
Példa
Példa A vegyi anyagok ára egységesen 20%-kal nőtt, a haszonkulcs pedig mostantól 30% lett: REPLACE BESZERZ_AR WITH BESZERZ_AR*1.2,H_KULCS WITH 30 FOR KOD=‘V’ Az élelmiszerek kódját E betűről L-re szeretnénk változtatni: REPLACE KOD WITH ”L” FOR KOD=‘E’
Összegzés SUM [hatáskör] [numerikus_kifejezéslista] [FOR feltétel] A dolgozók összes alapbére és pótléka: SUM ALAPBER,POTLEK A dolgozók számára az egész év folyamán mekkora összeget kell kifizetnünk: SUM 12*(ALAPBER+POTLEK-LEVONAS)
Átlagolás AVERAGE [hatáskör] [numerikus_kifejezéslista] [FOR feltétel] A dolgozók havi alapbérének és pótlékának átlaga: AVERAGE ALAPBER,POTLEK A dolgozók évi járandóságának átlaga: AVERAGE 12*(ALAPBER+POTLEK-LEVONAS)
Számlálás COUNT [hatáskör] [FOR feltétel] Hány olyan egyetemet végzett dolgozó van, akinek alapbére nem éri el a 80000 Ft-ot? COUNT FOR EGYETEM.AND.ALAPBER<80000
Példák SUM az eredmény három szám: a havi alapbérek, a havi bérpótlékok és a havi levonások összege AVERAGE az eredmény három szám: a havi alapbérek, a havi bérpótlékok és a havi levonások átlaga
Példák Mennyi az egyetemet végzett vezető beosztású dolgozók havi járandóságának átlaga: AVERAGE (ALAPBER+POTLEK-LEVONAS) FOR EGYETEM.AND.VEZETO
Feladatok A tanulói adatbázisból tudjuk meg, hogy a tanulóknak összesen hány testvérük van? Mennyi az osztály tanulmányi átlaga? Hány tanulónak jobb a tanulmányi átlaga 3,75-nél? Mennyi a bejáró tanulók átlaga? Hány tanuló születet 1970 előtt?
Adatbázisfájl szerkezetének megváltoztatása MODIFY STRUCTURE Ha a mező típusát megváltoztatjuk, akkor a mező tartalma törlődhet!!! Ha a mező hosszát csökkentjük, akkor a mező tartalma csonkulhat!!! Mező hosszának növelésénél a tartalom megmarad, helykitöltő karakterekkel gyarapszik.
Adatbázisfájl szerkezetének megváltoztatása Ha egy mezőt megszüntetünk, akkor tartalma elvész!!! Új mező létrehozása után a feltöltésig üres a tartalma. Ha a mező nevét és hosszát egyszerre változtatjuk, akkor tartalma elvész.
Fájl másolása COPY FILE teljes_fájlazonosító TO teljes fájlazonosító nem lehetséges globális fájlhivatkozás, mint a DOS COPY parancsánál!!! Nyitott adatbázisfájl nem másolható!!!
Fájl átnevezése RENAME teljes_fájlazonosító TO teljes_fájlazonosító
Fájl törlése ERASE teljes_fájlazonosító globális fájlhivatkozás nem alkalmazható, mint a DOS DEL parancsánál
Kimásolás az adatbázisfájlból COPY [hatáskör] [FIELDS mezőlista] TO teljes_fájlazonosító [FOR feltétel] a másolatba csak a hatáskör által kijelölt rekordok mezőlistában megadott mezői kerülnek át.
Feladatok A tanulói nyilvántartásból másolj ki olyan adatbázist, amely a 3,75-nél jobb átlagú tanulók adatait tartalmazza! A tanulói nyilvántartásból készítsd el a bejáró tanulók nyilvántartását!
Keresés az adatbázisfájlban LOCATE [hatáskör] [FOR feltétel] CONTINUE Ha a megadott feltételnek több rekord is eleget tesz, akkor a következő megfelelő rekordra lépéshez kell a CONTINUE parancs
Rendezés Az adatbázisfájlról olyan másolatot készítünk, amelyben a rekordok valamilyen szempont szerint sorrendben helyezkednek el. SORT [hatáskör] ON igénylista [FOR feltétel] TO teljes_fájlazonosító
Igénylista egy vagy több mezőnevet tartalmazhat vesszővel elválasztva a mezőnevek /után kapcsolók követhetik /A : növekvő sorrend /D : csökkenő sorrend /C : kis- és nagybetű között nem tesz különbséget (csak karakteres mezőnél) alapértelmezés a növekvő sorrend
Példa Névsor szerinti rendezés: SORT ON NEV TO A:\NEVSOR.DBF Tanulmányi átlag szerinti csökkenő sorrend: SORT ON ATLAG /D TO A:\JEGYEK.DBF Születési hely szerint, ha az ugyanaz, akkor a testvérek száma szerint, ha az is ugyanaz, akkor születési dátum szerint csökkenő: SORT ON SZUL_HELY,TESTVER,SZUL_DATUM /D TO A:\HELY.DBF
Példa Rendezd átlag szerint csökkenő, ha az egyenlő, akkor névsor szerint azokat, akiknek 3 testvérük van! SORT ON ATLAG /D,NEV FOR TESTVER=3 TO A:\HAROM.DBF
Feladatok A dolgozói nyilvántartást rendezd névsor szerint! A dolgozói nyilvántartást rendezd alapbér szerinti csökkenő sorrendbe! A dolgozói nyilvántartást rendezd levonás szerinti csökkenő sorrendbe, azon belül születési dátum szerinti csökkenő sorrendbe!
Indexelés A rekordok kezelési sorrendjét anélkül változtatjuk, hogy azok fizikai sorrendje változna. A kezelési sorrend módosítását egy általunk megadott kifejezéssel, a kulcskifejezéssel valósítjuk meg. A kulcskifejezés értéke minden rekordnál kiszámítódik, a rekordok ezen érték szerint növekvően alakítják ki a kezelési sorrendet.
Indexelés A kialakuló sorrend egy indexfájlban tárolódik. Az indexfájl ugyanannyi rekordból áll, mint az adatbázisfájl. Két mezőből áll: a kulcskifejezés értéke a rekordok eredeti sorszáma Az adatbázisfájlt ilyenkor indexelt adatbázisfájlnak nevezzük
Példa Kulcskifejezés: TESTVER*10+ATLAG
Példa Az indexfájl: Kezelési sorrend: Első a 6. Rekord második a 3. Rekord harmadik a 2. Rekord negyedik az 5. Rekord ötödik az 1. Rekord hatodik a 4. Rekord
Az indexfájlok azonosítása Az indexfájl nevét az határozza meg, aki az indexfájlt létrehozza. Az indexfájl kiterjesztése NDX kell, hogy legyen. Megadáskor elhagyható a kiterjesztés, azt a dBase automatikusan a fájlnévhez adja.
Indexelési műveletek Indexfájl létrehozása indexfájlok megnyitása és lezárása főindexfájl kijelölése a főindexfájl módosító szerepének használata újraindexelés
Indexfájl létrehozása INDEX ON kulcskifejezés TO teljes_fájlazonosító Példa névsor szerinti indexelés esetén: INDEX ON NEV TO NEVSOR.NDX Példa átlag szerinti indexelés esetén: INDEX ON 5-ATLAG TO JEGYEK.NDX
Indexelés Az indexfájl létrehozása után automatikusan az új indexfájl hatása érvényesül. A DISPLAY parancs mindig az érvényes index szerinti sorrendet mutatja.
Példa INDEX ON SZUL_HELY+NEV TO HELY.NDX elsősorban a születési hely szerinti növekvő sorrend alakul ki azoknál a rekordoknál, ahol a születési hely ugyanaz, ott a név szerinti ABC sorrend lesz érvényben.
Példa INDEX ON TESTVER*10+ATLAG TO TEST.NDX a testvérek száma szerint rendez ahol a testvérek száma egyenlő, ott a tanulmányi átlag szerinti növekedő sorrend lesz érvényben.
Megjegyzés Kívánatos, hogy az adatbázisban végrehajtott változások az indexfájlban is megjelenjenek. Csak azokban az indexfájlokban történik változás, amelyek a módosítás pillanatában nyitva voltak.
Indexfájlok megnyitása SET INDEX TO teljes_fájlazonosítók_listája a listában a teljes fájlazonosítókat vesszővel kell elválasztani. A SET INDEX TO paraméter nélkül bezárja az összes nyitott indexfájlt!!!
Megjegyzés Ha megnyitunk egy indexfájlt, akkor az összes addigi nyitott lezáródik. Egyszerre maximum 7 indexfájl nyitható meg. Ha az INDEX paranccsal létrehozunk egy indexfájlt, akkor az automatikusan megnyílik, az összes addig nyitott záródik.
Főindexfájl kijelölése A nyitott indexfájlok közül egyet ki lehet tüntetni. A kitüntetett indexfájl neve főindexfájl. A SET INDEX parancsban az első helyen álló indexfájl automatikusan főindexfájllá válik.
Főindexfájl változtatása SET ORDER TO numerikus_konstans A numerikus konstans határozza meg, hogy a legutolsó SET INDEX parancsban szereplő indexfájlok közül melyik legyen a főindexfájl.
Megjegyzés SET ORDER TO 0 : Az indexfájlok nyitva maradnak, de nem lesz főindexfájl egyik sem. Ha új indexfájlt hozunk létre, akkor mindaddig az lesz a főindexfájl, míg másként nem rendelkezünk.
A főindexfájl módosító szerepe Ha van kijelölt főindexfájl akkor módosulhat: egyes parancsok hatásköre egyes parancsok működése
A GO és a SKIP parancs módosulása GO TOP, GO BOTTOM az indexfájl szerinti elsőt és utolsót jelenti, GO 5 továbbra is az eredeti adatbázisfájl ötödik rekordját. A SKIP parancs az indexelés szerint ugrál a rekordok között.
A hatáskör módosulása RECORD p: az eredetit jelenti NEXT p: az indexfájl szerint működik REST: az indexfájl szerint működik ALL: az indexfájl szerint működik DISPLAY, LIST, EDIT, CHANGE, DELETE, RECALL, LOCATE, CONTINUE, BROWSE: az indexfájl szerint működik.
Újraindexelés Előfordulhat, hogy az adatbázist úgy módosítottuk, hogy nem volt nyitva az indexfájl. A változásnak szeretnénk érvényt szerezni ebben az indexfájlban is. REINDEX A nyitott indexfájlokat újra létrehozza.
Az indexelés előnyei a rendezéssel szemben A rendezés megduplázza az adatbázisfájlt, nagyobb lesz a helyfoglalás. Az indexfájl viszont kisméretű. Az eredeti adatbázisfájl módosítása után mindig létre kell hozni a rendezett adatbázisfájlt. Indexelésnél legfeljebb akkor kell újraindexelni, ha az indexfájl nem volt nyitva a módosítás után.
Feladatok A dolgozói adatbázist indexelje névsor szerint! A dolgozói adatbázist indexelje alapbér szerint! Zárja le az indexfájlokat! Nyissa meg mindkét indexfájlt úgy, hogy a bér szerinti legyen a főindexfájl! Változtassa meg a főindexfájlT4
Gyorskeresés FIND karakteres_konstans vagy FIND numerikus_konstans (attól függ, hogy a főindexfájl karakteres, vagy numerikus kifejezéssel lett létrehozva) a parancs a legelső olyan rekordot teszi aktuálissá, amelynél a kulcskifejezés értéke a megadott konstanssal egyenlő. (ha több ilyen van, akkor azok úgyis egymásután jönnek.)
Példa Keressük meg azokat a dolgozókat a dolgozói nyilvántartásból, akiknek 20000 Ft a havi alapbére! INDEX ON ALAPBER TO ALAPR.NDX FIND 20000
Példa Keressük a Kovács Béla nevű dolgozókat! INDEX ON NEV TO NEVREN.NDX FIND ”Kovács Béla”
Munkaterület A Dbase-ben tíz munkaterületet használhatunk Eddig mindig az 1-est használtuk Ugyanazok a műveletek érvényesek minden munkaterületen, mint az 1-esen. Ugyanaz az adatbázisfájl nem nyitható meg több munkaterületen!
A munkaterület azonosítója 1-től 10-ig számokkal A-tól J-ig betűvel az illető munkaterületen megnyitott adatbázisfájl nevével Például, ha az 1-es munkaterületen a TANULO.DBF-et nyitottuk meg, akkor az 1-es munkaterület azonosítási lehetőségei: 1; A; TANULO
Aktuális munkaterület Az a munkaterület, amit az adott pillanatban használunk. Eddig mindig az 1-es volt az aktuális.
Munkaterület váltása SELECT munkaterület_azonosító A képernyőn külön jel nem mutatja, hogy melyik az aktuális. Példa: USE TANULO (az egyes munkaterületen megnyitjuk a TANULO.DBF-et) SELECT 2 (átlépünk a 2-es munkaterületre) USE KONYV (a 2-es munkaterületen megnyitjuk a KONYV.DBF-et)
Munkaterület váltása Az 1-est a következőkkel aktiválhatjuk: SELECT 1; SELECT A; SELECT TANULO A 2-est a következőkkel aktiválhatjuk: SELECT 2; SELECT B; SELECT KONYV
Aktív adatbázisfájl Az aktuális munkaterületen megnyitott adatbázisfájl. A DISPLAY, LIST, GO, SKIP, APPEND, INSERT, EDIT, CHANGE, BROWSE, DELETE, RECALL, PACK, ZAP, ?, REPLACE, SUM, AVERAGE, COUNT, MODIFY STRUCTURE, DISPLAY STRUCTURE, LOCATE, CONTINUE, SORT, INDEX, SET INDEX, SET ORDER és REINDEX parancsok mindig az aktuális adatbázisra vonatkoznak.
Feladat Az 1-es munkaterületen nyisd meg a KONYV.DBF-et! A 2-es munkaterületen nyisd meg a TANULO.DBF-et! A 3-as munkaterületen nyisd meg az ISMEROS.DBF-et! A 4-es munkaterületen nyisd meg a POSTA DBF-et!
Összetett mezőnév Ha nem az aktív adatbázisfájl egy mezőjére hivatkozunk, akkor összetett mezőnevet kell használnunk. Adatbázis_neve->mezőnév TANULO->ATLAG (a TANULO.DBF ATLAG mezője) DISPLAY TANULO->ATLAG,CIM (nem aktuális adatbázis mezőiben lévő adatok kiíratása.)
Adatbázisfájlok kapcsolata (Feladaton keresztül) ISMEROS.DBF
Adatbázisfájlok kapcsolata (Feladaton keresztül) POSTA.DBF
I. A 3-as munkaterületen nyissuk meg az ISMEROS.DBF-et! SELECT 3 USE ISMEROS A 4-es munkaterületen nyissuk meg a POSTA.DBF-et! SELECT 4 USE POSTA
II. Tedd aktuálissá a 3-as munkaterületet, majd ott tedd aktuálissá az 5. Rekordot és írasd ki az IRSZ mező tartalmát SELECT 3 GO 5 DISPLAY IRSZ
III. Tedd aktuálissá a 4-es munkaterületet, hozz létre egy indexfáljt, amely biztosítja az irányítószámok szerinti növekvő sorrendet, majd keresd meg azt a rekordot, amelyben ugyanaz az irányítószám szerepel, mint az ISMEROS.DBF 5. rekordjában! INDEX ON SZAM TO IRREN FIND irányítószám
IV. Írasd ki az 5. Rekordban szereplő ismerősöd nevét, és hogy melyik településen lakik! DISPLAY ISMEROS->NEV, POSTA->TELEPULES
Kapcsoló-kifejezés Amely alkalmas két adatbázisfájl közötti kapcsolat kialakítására. Az előző feladatban az IRSZ illetve a SZAM mezők voltak a kapcsoló-kifejezések. Megjegyzés: Az előző feladatban nem alakult ki tartós kapcsolat az adatbázisfájlok között.
Két adatbázisfájl összekapcsolása A kapcsoló-kifejezések segítségével tartós kapcsolatot alakítunk ki az adatbázisfájlok között. Az összekapcsolt adatbázisok nem egyenrangúak; vezér szolga A tartósság azt jelenti, hogy a vezér bármely rekordját aktuálissá téve a szolga azon rekordja válik aktuálissá, amely biztosítja, hogy a kapcsoló-kifejezések értéke ugyanaz legyen.
Az összekapcsolás menete A vezért és a szolgát is meg kell nyitni egy-egy munkaterületen. A szolgával kapcsolatban létre kell hozni egy indexfájlt, amely a kapcsoló-kifejezés szerinti növekvő sorrendet biztosítja. Ezt az indexfájlt főindexfájllá kell tenni. A vezért meg kell tenni aktív adatbázisfájlnak.
Az összekapcsolás menete SET RELATION TO kapcsoló-kifejezés INTO fájlnév kapcsoló-kifejezés: a vezér kapcsoló-kifejezése fájlnév: a szolga neve
Az előző feladat tartós kapcsolattal SELECT 3 USE ISMEROS.DBF SELECT 4 USE POSTA.DBF INDEX ON SZAM TO IRREN.NDX SET RELATION TO IRSZ INTO POSTA LIST NEV, POSTA->TELEPULES
Adatbázisfájlok együttes tervezése Ha tervezéskor kiderül, hogy egy mezőben az értékek gyakran ismétlődnek, akkor azokat érdemes külön adatbázisfájlban elhelyezni, mert ott csak egyszer kell őket szerepeltetni. Valamilyen kóddal érdemes helyettesíteni, ami mindkét adatbázisban kapcsoló-kifejezés lesz.
Több adatbázisfájl összekapcsolása Egy vezérhez egyidejűleg csak egy szolga kapcsolható A szolga azonban vezére lehet egy harmadik adatbázisfájlnak. Ily módon max. 8 adatbázisfájl kapcsolható össze. (Kétszer nem szerepelhet a láncban ugyanaz az adatbázisfájl)
Példa FORGALOM.DBF egy áruház napi forgalmi adatait tartalmazza
Példa ARU.DBF tartalmazza, hogy melyik cikkszám melyik árut jelenti, az áru egységárát, mennyiségi egységét.
Példa MERETK.DBF innen lehet megtudni, hogy melyik mértékegységkód melyik mértékegységet jelöli
Példa A FORGALOM.DBF és az ARU.DBF a cikkszám segítségével kapcsolhatók össze Az ARU.DBF és a MERTEK.DBF a mértékegységkód segítségével kapcsolhatók össze.
PÉLDA Adatbázisfájlok megnyitása: SELECT 1 USE FORGALOM SELECT 2 USE ARU SELECT 3 USE MERTEK
Példa A FORGALOM és az ARU összekapcsolása SELECT 2 INDEX ON CIKK TO R1.NDX SELECT 1 SET RELATION TO F_CIKK INTO ARU
Példa Az ARU és a MERTEK összekapcsolása: SELECT 3 INDEX ON MEKOD TO R2.NDX SELECT 2 SET RELATION TO A_MEKOD INTO MERTEK
Példa Írassuk ki a napi forgalmi adatokat úgy, hogy az áru neve, értéke és a mértékegység neve is ki legyen írva: SELECT 1 LIST ARU->ARU_NEV, MENNYISEG*ARU->EGYSEGAR, MERTEK->ME_NEV
Példa A napi forgalom összértékének a kiszámítása: SELECT 1 SUM MENNYISEG*ARU->EGYSEGAR
Az összekapcsoltság megszüntetése A vezért aktívvá kell tenni SET RELATION TO
A függvény fogalma Olyan eszköz, amelynek segítségével bizonyos kifejezések értékéből új értéket képes előállítani. Az így nyert érték a függvényérték A függvényt a neve azonosítja
Függvény típusa Numerikus dátum karakteres logikai
Matematikai függvények
Abszolútérték ABS(n) ? ABS(-41) ? ABS(41) ? ABS(254-67*54)
Egészrész INT(n) ? INT(3.45) ? INT(-4.56) ? INT(3/7-65/3)
Négyzetgyök SQRT(n) ? SQRT(49) ? INT(SQRT(72))
Kerekítés ROUND ROUND(n1,n2) : az n1 számot n2 darab tizedesre kerekíti ? ROUND(12.78654,2) ? ROUND(12.78654,4) ? ROUND(5/3,1) ? ROUND(SQRT(72)+SQRT(95),1)
Maximum MAX MAX(n1,n2) :két szám közül kiválasztja a nagyobbikat
MIN MIN MIN(n1,n2) :két szám közül kiválasztja a kisebbiket.
Példa A példán kívül többet is érdemes fölvenni!!!!
Példa Mekkora a képcső átmérője (átlója)? ? SQRT(HOSSZ**2+SZEL**2) Az eredményt egy tizedes pontossággal adjuk meg! ? ROUND(SQRT(HOSSZ**2+SZEL**2),1)
Példa Minden olyan képcső típusát és átmérőjét írassuk ki, amelyből legalább 1000 darabot gyártottak! DISPLAY ALL TIPUS, SQRT(HOSSZ**2 +SZEL**2) FOR MENNY>=1000
Példa Írassuk ki az összes képcső típusát, átmérőjének egységére eső önköltségét és területének egységére eső önköltségét! DISPLAY ALL TIPUS, KOLT/SQRT( HOSSZ**2+SZEL**2), KOLT/(HOSSZ* SZEL)
Példa Írassuk ki az összes képcső típusát, valamint az átmérő egységére és a terület egységére eső önköltség közül a nagyobbikat! LIST TIPUS,MAX(KOLT/SQRT(HOSSZ **2+SZEL**2),KOLT/(HOSSZ*SZEL))
Példa Írassuk ki az összes képernyő típusát és az átmérő egységére, valamint a terület egységére eső önköltség különbségének abszolút értékét! DISPLAY ALL TIPUS,ABS(KOLT/SQRT( HOSSZ**2+SZEL**2)-KOLT/(HOSSZ* SZEL))
Példa Írassuk ki az összes képcső típusát és a hosszúság és szélesség arányának egészrészét! DISPLAY ALL TIPUS,INT(HOSSZ/ SZEL)
Karakterkezelő függvények szöveg szöveg szöveg
Balrész-függvény LEFT LEFT(c,n) Típusa: karakteres Kiválasztja a c karaktersorozat első n számú karakterét
Példa LEFT(”Albacomp”,4) értéke ”Alba” LEFT(”Magyarország”,3) értéke ”Mag”
Jobbrész-függvény RIGHT RIGHT(c,n) Típusa: karakteres Kiválasztja a c karaktersorozat utolsó n db karakterét
Példa RIGHT(”Albacomp”,4) értéke ”comp” RIGHT(”Magyarország”,6) értéke ”ország”
Középrész-függvény SUBSTR SUBSTR(c,n1,n2) Típusa: Karakteres Kiválaszt a c karaktersorozatból az n1-edik karaktertől kezdve n2 darabot.
Példa SUBSTR(”Albacomp”,2,3) értéke ”lba” SUBSTR(”Magyarország”,2,5) értéke ”agyar”
Sokszorozó függvény REPLICATE REPLICATE(c,n) Típusa: karakteres Megismétli a c karaktersorozatot n-szer
Példák REPLICATE(”ti”,4) értéke ”titititi” REPLICATE(”+”,12) értéke ”++++++++++++”
Kisbetű-függvény LOWER LOWER( c) Típusa: karakteres A c karaktersorozat nagybetűit kisbetűre változtatja (a magyar ékezetes karakterek kivételével)
Példa LOWER(”Kovács Éva”) értéke ”kovács Éva” LOWER(”Magyar”) értéke ”magyar”
Nagybetű-függvény UPPER UPPER( c) Típusa: karakteres Értéke: a c karaktersorozat kisbetűit nagybetűkre cseréli (a magyar ékezetes betűk kivételével)
Példák UPPER(”elégséges”) értéke ”ELéGSéGES” UPPER(”Magyar”) értéke ”MAGYAR”
Bal oldali szóközöket levágó függvény LTRIM LTRIM( c) Típusa: karakteres a c karaktersorozat elejéről levágja a szóközöket LTRIM(” Bartók Béla”) értéke ”Bartók Béla”
Jobb oldali szóközöket levágó függvény RTRIM RTRIM( c) Típusa: karakteres a c karaktersorozat végéről levágja a szóközöket RTRIM(”Kodály Zoltán ”) értéke ”Kodály Zoltán”
Hossz-függvény LEN LEN( c) Típusa: numerikus A c karaktersorozat hossza
Példák LEN(”Albacomp”) értéke 8 LEN(”Magyarország”) értéke 12
ASCII kód függvény ASC ASC( c) Típusa: Numerikus A c karaktersorozat első karakterének ASCII kódja ASC(”alma”) értéke 65 ASC(”medve”) értéke 109
Karaktert adó függvény CHR CHR(n) Típusa: karakteres Az n számhoz, mint ASCII kódhoz tartózó karakter CHR(65) értéke ”a”
Karakterkereső függvény AT AT(c1,c2) Típusa: numerikus az a szám, amely megmutatja, hogy a c1 karaktersorozat hányadik karaktertől kezdve található meg a c2 karaktersorozatban. Ha nincs benne, akkor az értéke 0.
Példák AT(”kun”,”Kiskunlacháza”) értéke 4
Szóközöket adó függvény SPACE SPACE(n) Típusa: karakteres SPACE(n) ugyanazt jelenti, mint REPLICATE(” ”,n)
Betűvizsgáló függvény ISALPHA ISALPHA( c) Típusa: logikai igaz, ha c karaktersorozat első karaktere betű, egyébként hamis ISALPHA(”Magyarország”) értéke .T. ISALPHA(”1965”) értéke .F.
Karakterkezelő függvények alkalmazása
Példa
Példák Írasd ki az első rekordban szereplő elem nevének hosszát! DISPLAY LEN(TRIM(NEV)) Írasd ki a 6. rekord nevének első 6 betűjét! DISPLAY LEFT(NEV,6)
Példák Írassuk ki az 5. rekord nevét csupa nagybetűvel! DISPLAY UPPER(NEV) Jelenítsük meg a harmadik rekord nevét és vegyjelét úgy, hogy közöttük pontosan három szóköz legyen! DISPLAY TRIM(NEV)+SPACE(3)+TRIM (VEGYJEL)
Példák Írassuk ki azoknak az elemeknek a nevét és vegyjelét, amelyek neve ”um” végződésű! DISPLAY NEV,VEGYJEL FOR AT(”um”,NEV)>0 Írassunk a képernyőre 80 db * karaktert! REPLICATE(”* ”,80)
Feladatok Írasd ki azoknak az elemeknek a nevét, vegyjelét és rendszámát, amelyek neve 7 karakternél hosszabb! Írasd ki az összes elem nevét és rendszámát úgy, hogy a nevüknek csak az első 5 betűje szerepeljen!
Feladatok Írasd ki csupa nagybetűvel azoknak az elemeknek a nevét, amelyeknek a rendszáma 10-nél nagyobb! Írasd ki a 10-nél kisebb rendszámú elemek nevét és vegyjelét úgy, hogy közöttük pontosan 2 szóköz legyen!
Dátumkezelő függvények
A mai dátumot megadó függvény DATE DATE() Típusa: Dátum jellegű A mai dátumot adja meg.
Évszám-függvény YEAR YEAR(d) Típusa: Numerikus A d dátumban szereplő évszámot adja eredményül.
Hónap-függvény MONTH MONTH(d) Típusa: Numerikus A d dátumban szereplő hónap sorszámát adja
Nap-függvény DAY DAY(d) Típusa: Numerikus A d dátumban szereplő nap sorszámát adja
DOW DOW DOW(d) Típusa: Numerikus A d dátum a hét hányadik napja volt?
Példa Írassuk ki a dolgozói nyilvántartásból azokat, akik 1965-ben születtek! DISPLAY ALL NEV FOR YEAR(SZUL_DATUM)=1965 Írassuk ki az összes adatát a 35 évnél idősebbeknek! DISPLAY ALL FOR DATE()-SZUL_DATUM>35*365
Példa Írassuk ki azoknak a nevét, akik február 20-án születtek! DISPLAY ALL NEV FOR MONTH(SZUL_DATUM)=2.AND.DAY( SZUL_DATUM)=20 Írassuk ki azokat, akik szerdán születtek! DISPLAY ALL NEV FOR DOW(SZUL_DATUM)=4
Feladat Írasd ki azokat, akik a Halak jegyében születtek (február 20. és március 21. között)! Számítsd ki, hogy a 40 évnél idősebbek mennyit keresnek összesen! Számítsd ki, hogy a decemberi születésűeknek mennyi az átlagos alapbére! Számláld meg, hogy hányan születtek vasárnap!
Választó függvény IIF IIF(l,t1,t2) Típusa: t1 és t2 típusával megegyező Ha l igaz, akkor az értéke t1, ha hamis, akkor t2
Típusváltoztató függvények A kifejezés értékéből más típusú konstanst tudnak létrehozni. Akkor alkalmazzuk, ha olyan műveletet szeretnénk végrehajtani, ami az adott típussal nem lehetséges.
STR STR STR(n1,n2,n3) Az n1 numerikus értéket szöveggé alakítja, n2 hosszon, n3 tizedesjeggyel. n2 alapértéke 10 n3 alapértéke 0
Példa STR(16.78,8,4) értéke ” 16.7800” STR(16.78,5) értéke ” 17”
VAL VAL( c) A c karaktersorozatot számmá alakítja csak akkor használandó, ha a c-ben csak számjegyek, előjel és tizedespont található VAL(”15.78”) értéke 15.78
CTOD CTOD( c) A c karaktersorozatot, ha lehet dátummá alakítja CTOD(”1965.02.21”) értéke 1965. február 21-i dátum
DTOC DTOC(d) A d dátumot karaktersorozattá változtatja A CTOD függvény inverze.
DOS parancs végrehajtatása RUN DOS_PARANCS RUN MD ADATOK
VÉGE