FoxPro for Windows 2.6



A FoxPro rendszer a Microsoft cég terméke, amely az xBase-es nyelveken alapuló adatbáziskezelőt és alkalmazásfejlesztőt tartalmaz. A rendszer viszonylag kis erőforrásigénnyel rendelkezik: 386-os processzor, 4MB RAM, VGA kártya és Windows 3.0 környezet.

A rendszer mind interaktív utasítások végrehajtására, mind programok futtatására alkalmas, s a rendszer teljes verziójában lehetőség nyílik önállóan futtatható EXE állományok készítésére is. Az interaktív kezelőfelületnek két változata van, az egyik egy e gyszerű parancsablak, melybe szövegesen begépelhetjük utasításainkat, míg a másik egy katalógus menedzser, melyben egy grafikus felületen, menüszerűen jelölhetjük ki, hogy mely tevékenységeket kívánjuk elvégezni. A katalógus menedzser felépítésében és műk ödési módjában nagyban hasonlít a szintén Microsoft termék Access kezelőfelületére.

A FoxPro által közvetlenül kezelt állományok a hagyományos dBase struktúrát hordozzák. A dBase-hez hasonlóan itt is munkaterületekben kell gondolkodni, a kezelendő táblákat egyenként meg kell nyitni, s mindíg csak egy táblázat mozoghatunk szabadon. A para ncsok így itt is alapvetően mindíg egy táblára vonatkoznak. A FoxPro parancsnyelve a dBase kezelő nyelvére hasonlít, nemcsak az adatkezelésben, hanem a vezérlési szerkezetekben, a segédfüggvényekben, a képernyő beviteli-kiírási utasításokban is. A hagyom ányos utasítások mellett a FoxPro számos új lehetőséget is tartalmaz, mint például a tömbkezelést, a filekezelést, az SQL SELECT utasítást, vagy a Windows környezethez szükséges objektumcsoportot.

A következőkben átvesszük az alapvető adatkezelési műveleteket, mind a menüből, mind a paracssorból történő meghívása esetén. A FoxPro bejelentkező képernyéjét mutatja a következő ábra.


Új adattábla létrehozása

A főmenü FILE menüpontjából válasszuk ki a NEW menüpontot. Ekkor megjelenik egy tipuslista, amelyből a TABLE/DBF elemet jelöljük ki. Ezután kattintsunk rá a NEW gombra. Ennek hatására megjelenik a táblázat szerkezetének definiálásra szolgáló ablak.



Ebben a táblázatban kell az adattábla struktúráját, az adattábla mezőit megadni. Minden sor egy adattábla mezőnek felel meg. A táblázat egyes oszlopainak jelentése:



Az összes szükséges mező definiálása után az OK gombbal zárhatjuk le a felvitelt. Ugyanez a táblázat szolgálhat az adattábla szerkezetének későbbi módosítására is. Ekkor az INSERT illetve DELETE nyomógombokkal lehet új mezőt felvinni vagy létezőt törölni. Az OK gomb megnyomása után van lehetőség az adattábla DBF állományának DOS specifikáció megadására. Az így megadott név lesz az adattábla neve is.

Az adattábla létrehozásának közvetlen parancsa: CREATE.

Adattábla adatainak módosítása, megtekintése, adatok felvitele, törlése

A főmenü FILE menüpontjából válasszuk ki a NEW menüpontot. Ekkor megjelenik egy tipuslista, amelyből a TABLE/DBF elemet jelöljük ki. Ezután jelöljük ki a megnyíló ablakban az adattáblát tartalmazó állományt, s nyomjuk meg az OPEN nyomógombot. Az adattábla ennek hatására bekerül a következő szabad munkaterületre. A FoxPro ablak bal alsó sarkában láthatjuk az aktuális adattábla azonosító nevét.

Az adattállományt parancssorból a SELECT 0, majd a USE táblanév utasításokkal nyithatjuk meg.

Az adatoklekérdézeséhez a főmenü DATABASE menüpontjából válasszuk ki a BROWSE alpontot. Ekkor megjelenik egy táblázat az aktuális adattábla adataival. A táblázatban tetszőleges irányban lehet mozogni. A főmenü ideiglenesen bővül egy új ponttal, a BROWSE menüponttal. Ennek almenőjében lehetőség van egy új rekord beszúrására (APPEND RECORD) és a rekordok törlésjelzőjének módosítására (TOGGLE DELETE).
Az adatkezelési táblázatot a BROWSE utasítással is meghívhatjuk.

Indexek létrehozása adattáblákhoz

A megnyitott táblához úgy hozhatunk létre indexstruktúrát, hogy a főmenü DATABASE menüpontjából a SETUP almenüpontot.

A megjelenő ablakban az indexelés mellett lehetőség van az adattábla szerkezetének módosítására (MODIFY) és az adattábla adataira vonatkozó megszorítások megadására is. Ez utóbbi esetén az adattáblát leszűkíthetjük bizonyos mezőire (FIELDS nyomógomb, s lá sd a SET FIELDS TO utasítást), vagy bizonyos rekordjaira, amelyek egy feltételt kielégítenek (FILTER DATA nyomógomb, s lásd a SET FILTER TO utasítást).



Az indexelésre vonatkozólag az ADD szolgál új indexállomány betöltésére, a MODIFY az index móűdosítására, s a SET ORDER pedig az élő, aktuális index kijelölésére (ez utóbbihoz lásd az SET ORDER TO parancsot). Az ADD parancs után megjelenő ablakban kivála szthatjuk a betöltendő indexállományt. Ha azonban nem létező indexállományt kívánunk betölteni, hanem egy új index állományt szeretnénk létrehozni, akkor a megjelenő ablakban a NEW gombot kell megnyomni. Az eztán megjelenő ablakban van lehetőség az új indexállomány definiálásra.



Az index létrehozásakor meg kell adni az indexelés alapjául szolgáló kifejezést. Ennek meghatározása az INDEX KEY segítségével történik. Az ASCENDING (növekvő) illetve DESCENDING (csökkenő) szolgál a rendezettségi sorrend meghatározára. Ha az indexállomán yba nem kívánunk minden rekordot felvenni, akkor az INDEX FILTER segítségével megadhatjuk a rekodokra vonatkozó szűrőfeltételt.

Az FoxPro egyik lényeges előrelépése a dBase rendszerhez viszonyítva az indexkezelés területén mutatkozik meg. A FoxPro-ban ugyanis a hagyományos NDX jelegű állományok mellett lehetőség van egy úgynevezett összetett index, COMPOUND index állomány létrehoz ására is,melynek kiterjesztése CDX. Az összetettség arra utal, hogy az állomány a hagyományos indexállományoktól eltérően nem egyetlen egy indexet tartalmaz, hanem többet is. Így például egyetlen egy állományban tárolhatjuk az autó adattáblához a rendszám és autótipus szerinti indexeket is. Ennek előnye a tömörebb tárolás és könnyebb kezelhetőség.

Jelentős javulás az is, hogy az indexállományt lehet STRUCTURAL index állományként definiálni, mely esetben a filenév megegyezik az adattábla nevével, természetesen a kiterjesztésttől eltekintve, s e indexállomány az adattábla megnyitásakor automatikusan betöltődik. Így nincs szükség e tábla explicit megnyitására. A táblában tárolt indexek mindíg aktualizálódnak, s megszűnik az inkonzisztens indexek veszélye. Minden állományhoz csak egyetlen strukturális index hozható létre, mely mellett számos nem struk turális index is létezhet még, melyeket természtesen külön meg kell nyitni a felhasználónak, ha aktualizálni vagy alkalmazni kivánja.

A SINGLE file index esetén az indexállomány, melynek kiterjesztése IDX, csak egyetlen egy indexet tartalmaz a hagyományos NDX állományhoz hasonlóan.

A legtöbb adatbáziskezelőhöz hasonlóan a FoxPro esetében is az indexstruktúra egy B-fa szerkezetben valósul meg.



Minden csomópontban a kulcsértékek a kulcsok rendezett listája a megfelelő pointerekkel együtt. A pointerek a leveleknél lemez blokkokra mutatnak, míg a többi csomópontban az alatta elhelyezkedő csomópontokra utalnak. Emiatt minden értéknek elő kell fordu lnia a levélben is. A teljes rendezettség gyorsabb előállításához a testvér csomópontokon is össze vannak kötve egy kettős láncolattal. Az ábrán szereplő -1 jel a NULL pointert jelöli.
Az indexállomány elejés elhelyezkedő indexfejben találhatók adatok a gyökérblokk eléréséről, a szabad blokkok listájáról, a kulcs alakjáról, tartalmáról, esetleges szűrési feltételeiről. A csomópontokban egy jelző mutatja, hogy a csomópont levél, gyökér v agy belső csomópont, s egy számláló tartja nyilván, hogy mennyi bejegyzés van már letárolva a csomópontba.

A nyitott adatállományok nyilvántartására és az elemi adattábla kezelési funkciók elvégzésére célszerű a FoxPro által biztosított VIEW ablakot használni. Az ablak megnyitása a WINDOW főmenüpont VIEW almenüpontjával történik.



A már ismertetett funkciók mellett lehetőség van az adattáblák összekapcsolásárása is. Ehhez a RELATION nyomógombot aktivizálva az éppen kijelölt táblázhoz hozzárendelhetünk egy másik táblát. A kijelölés a SET RELATION TO utasításnak felel meg, melynél a kijelölt tábla az aktuális munkatábla. Ebből következőleg a kapcsolatnál megadott céltáblának indexelve kell lennie a kapcsolódó mező alapján. A létrehozott kapcsolatot átalakíthatjuk egy-több kapcsolattá, melyben a munkatáblán kiadott SKIP utasítás a ka pcsolt tábla azon rekordjai közül, melyek a munkatábla aktuális rekordjához kapcsolódnak, a soronkövetkezőre ugrik, s csak akkor lép előre a munkatáblában is a rekordpointer, ha már minden kapcsolódó rekordot érintettünk a kapcsolt táblában. A hagyomány os egy-egy kapcsolat alkalmas az autó-tulajdonos viszony leírására az autót választva munkatáblaként. Ilyen feladat lehet például, hogy listázzuk ki minden autót a tulajdonos adatival együtt. A több-több kapcsolatnál több kapcsolódó rekord is előfordulhat , így például ezt kell alkalmazni arra a feladatra, amikor minden embert meg kell jeleníteni az esetleges autóival együtt.

Öszetett lekérdezések elvégézése

A FoxPro lehetőséget biztosít egy vagy több táblára is kiterjedő rugalmas lekérdezések definíálásra. Az egyszer összeállított lekérdezési parancssor letárolható és a későbbiekben bármikor újra futattható. A lekérdezést egy QBE (Query By Example) formalizm ussal lehet definiálni, ami azt jelenti, hogy nem kell a lekérdezési parancsot ismerni, elegendő a lekérdezés paramétereit megadni. Az összeállított lekérdezéshez kiiratható a lekérdezés SQL nyelvbeli megfelelője is. A végrehajtott lekérdezés eredményeit többféle módon is meg lehet jeleneníteni, így például táblázatban és grafikonon is.

A RUN főmenüpont QUERY menüpont segítségével hívható meg az RQBE (relációs QBE) rendszer. A megjelenő ablakban kész lekérdezést nyithatunk meg, vagy a NEW menüponttal magunk is definiálhatunk egy új lekérdezést.



Új lekérdezés definiálásakor a felhasználónak elöbb definiálnia kell, hogy melyik táblából melyik mezöket kívánja szerepeltetni a lekérdezésben, valamint több adattábla esetén meg kell adni, hogy ezek között a táblák között mely mezök biztosítják a kapcso latot.

A TABLES (Táblák) listából kell kiválasztani a felhasználónak egy adattáblázatot. A CLEAR nyomógombbal kitörülhetünk egy adott táblázatot a listából, az ADD (Hozzávesz) nyomógombbal újabb táblázatok nyithatók meg. Egynél több táblázat kiválasztása után megjelenik a "RQBE kapcsolódási feltétel" párbeszédpanel. Mivel több adattábla esetén JOIN műveletet értelmez a rendszer, ebben a panelben lehet megadni a rekordok kapcsolódási feltételelét. Ehhez két mezöt és reláci ós operát kell megadnunk. Ha a kapcsolódási feltételt a késöbbiekben meg szeretnénk változtatni, akkor rá kell kattintani valamely táblázat nevére, amely a kapcsolatban szerepel.

A SELECTION CRITERIA az eredményben megjelenő rekodok szűrésére szolgál, amely megfelel egy szelekciós relációs algebrai műveletnek.

Az OUTPUT FIELDS (Kiválasztott mezök) blokkon belül található mezök lesznek az eredményben megjelenített mezők. A FIELDS kiválasztónégyzetre történö rákattintással meghíható a mezők kiválasztását szolgáló asegédablak. A panel bal oldalán az aktuális munk aterületen megnyitott táblázat mezöit találjuk. Ebböl a listából a mezöre történö kétszeres kattintással, vagy a mezö kijelölésével és MOVE nyomógombbal lehet áthelyezni mezöt a jobboldalon található Kiválasztott mezök listába. Az ALL nyomógombbal az össz es mezö átkerül a kiválasztott mezök listába. A FUNCTIONS/EXPRESSIONS (Függvények/Kifejezések) fiókban a FoxPro belsö függvényei találhatóak. Ezek segítségével számított értékek helyezhetök el a kiválasztott mezök listában. A kiválasztott mezök közül ki szürhetök azok, amelyeknél ismétlödés fordul elö. Ezt a NO DUPLICATES beikszelésével tehetjük meg.

Az eredményrekordok rendezése az ORDER BY kiválasztónégyzet révén valósítható meg. A megjelenö párbeszédpanelban adhatjuk meg a sorrendképzés alapját. A panel baloldalán található a SELECTED OUTPUT, vagyis a kiválasztott mezök listája. Ezek közül helyezh etünk át mezöket az OREDRING CRITERIA (Rendezési feltételek) címszó alá. Az ORDER OPTIONS (Rendezés) blokkon belül két választókapcsoló található, melyekkel meghatározhatjuk a rendezés növekvö illetve csökkenö sorrendjét. Az OK nyomógombbal ismét vissza térhetünk a lekérdezéstervezöbe.

A GROUP BY és a HAVING választókapcsolókkal csoportok képezhetők. Csoportokban a csoportképzés alapjául szolgáló mezők, valamint olyan kifejezések szereplhetnek, amelyek a csoport egésészére vonatkozólag egyedi értékkel rendelkeznek (pld. aggregációs füg gvények). A HAVING opcióban megadott feltételek ilyenkor a csoportra vonatkoznak, s nem a csoportokba képzett alaprekordokra.

A SEE SQL nyomógombbal meghívhatjuk azt az ablakot, amelyben az összeállított lekérdezés SQL megfelelője látható. Az ablakban csak megtekinteni tudjuk az SQL utasítást, annak módosítására nincs lehetőség.
A lekérdezés eredményének meghatározására szolgál az OUTPUT lista. Ebből listából a következő kimenetek határozhatók meg:



A DO QUERY nyomógombbal indítható el az összeállított lekérdezés.

Gyors jelentéskészités

A RQBE modulon keresztül lehetőség van nemcsak képernyőn megjelenő browse ablakok és grafikonok előállitására, hanem nyomtatóra kiküldhető listák készitésére is. Az igy elkészitett listák egy alapértelmezési formátumban jelennek meg, melynek alakját a ké sőbbiekben majd testre szabhatjuk az igényeknek megfelelően egy jelentés szerkesztő segitségével.

A jelentés előállitásához az RQBE ablak OUTPUT mezőjében kimenetként a REPORT/LABEL értéket kell beállitani. A lista ekkor még a képernyőn fog tobábbra is megjelenni, a nyomtatóra való kiküldéshez be kell állitani a céleszközt. Ehhez az OPTION funkciót vá lasszuk ki az RQBE ablakban. A kinyiló ablak szolgál a megjelenités paramétereinek beállitására.

Az ablak bal felső sorában jelölhetjük ki, hogy hol, milyen eszközre igazitva kivanjuk megjeleniteni az eredményt. A lista készitéséhez a REPORT opciót válasszuk ki. Ezzel együtt a ki kell jelölni a lista formátumát is a QUICK REPORT check box segitségéve l. A megjelenő paraméterablakban adhatunk nevet a létrejövő lista formátum állománynak., s beállithatjuk, hogy oszlopformátumú vagy a rekordonkénti listázást kérjük-e. A PAGE PREVIEW kijelölésekor az eredményt előzetesen a képernyőn is megtekinthetjük, ho gy megfelel-e a formátuma. Ha a képernyő mellett a nzomtatóra is kiküldjük a listát, akkor az OUTPUT DESTINATION csoportban a TO PRINTER opciót kell beállitani.

Körlevelek készitése

A FoxPro és Winword együttes felhasználásával kényelmesen és gyorsan készithetünk körleveleket. A körlevélnek lesz egy fix, rögzitett része, melybe csak bizonyos részeket változtatunk. Igy például a karácsonyi üdvözleteket körlevéllel is elkészithetjük,, ha minden személynek ugyanazt a szöveget irjuk, s csak a megszólitás, a cimzés az egyedi. Az egyedi adatokat egy adattáblában tárolhatjuk, s az összefűzéskor minden rekordhoz készül egy levél, melyben a változó részek a rekord mezőiből jöhetnek. A körlevé l készitéséhez szükség van tehát egy dokumentum mintára és egy adattáblára. A dokumentum mintába beszúrhatunk változókat, melyek alapesetben az adattábla egy-egy mezőjének felelnek meg. Az összefűzés során a rendszer sorba veszi az adattábla rekordjait, s minden rekordhoz készit egy levelet,melyben a változókat a mezők aktuális tartalmával helyettesiti. A rugalmasság fokozására a dokumentumba úgynevezett vezérlő elemek is beszúrhatók, melyekkel feltételes összefűzés valósitható meg. Ebben az esetben nem m inden rekordnál lesz az eredmény levél egyforma felepitesu.

A körlevél készitését a Winword 2.0 -ban mutatjuk be. Feltesszük, hogy létezik egy offices elnevezésű adattáblánk. A Winword-ben nyissunk egy új dokumentumot, majd adjuk ki a FILE főmenüből a PRINT MERGE parancsot. A megjelenő ablakban ATTACH DATA FILE op cióval kijelölhetjük az adattábla azonositóját. Ennek hatására az adattábla tartalma bekerül a Winword-be mint egy új állomány. Eztkövetően elkezdhetjük megirni a körlevél vázát.

A körlevélbe a változókat az INSERT MERGE FIELD nyomógomb segitségével illeszthetjük be. A kinyiló listában választhatunk a rendelkezésre álló mezők között. A lista a normál adattábla mezők mellet vezérlő utasitásokat is tartalmaz. A bemutatott példában k ét ilyen vezérlő elem található. Az egyik a SKIPIF, amelynek hatására csak azok a rekordok kerülnek bevonásra, melyekben a megadott kifejeés hamis értékű. A másik az IF szerkezet, mely szövegrészek feltételes kiirását teszi lehetővé. Az ábrában szereplő d okumentum csak azon rekordokra fog kiiródni, ahol az ONO mező tartalma 3-nál nagyobb. Azon rekordoknál, ahol ONO tartalma 5-nél is nagyobb a "NAGY SZERENCSÉJE VAN" szöveg fog kiiródni a megszólitás után, mig egyéb esetben a "NINCS SZERENCSÉJE" szöveg fog megjelenni a levélben.

A körlevelek megirása a PRINT MERGE menüpont MERGE opciójával, vagy az össefűzési ikon aktivizálásával lehetséges. A körlevelek egy új dokumentumba kerülnek, melyeket le lehet tárolni, vagy ki is lehet nyomtatni.



Wizard-ok használata

A Wizard funkció segitségével közvetlenül előállithatunk többek között alapértelmezés szerinti formátumban megjelenő listákat, lekérdezéseket, sőt adattábla kezelő programokat is. A wizard funkció elinditásához válasszuk ki a RUN főmenüpont WIZARD alpontj át,majd adjuk meg, mely objektumtipusra (lista, képernyőprogram, lekérdezés) van szükségünk (REPORT a listához, SCREEN a képernyőprogramhoz). Az objektumtipus megadása után egy pár lépésen keresztül válaszolnunk kell az objektum legfontosabb paramétereir e.

A példában a lista wizard induló ablakát látjuk. A paraméterek beállitása után a NEXT gombbal folytathatjuk a szükséges paraméterek megadását. Az utólsó ablakban eldönthetjük, hogy az elkészült objektumot rögtön futtatjuk vagy csak később kivánjuk felhasz nálni.

A lista esetén az egyes lépésekben az alábbi paramétereket kell beállitani:



A rendszer ezután rákérdez, mely állományba helyezze le az elkészült jelentéstformátumot. A lementett formátumot egy későbbi időpontban a RUN főmenüpont REPORT almenüpontján keresztül futtathatjuk. Az elkészült lista az aktuális, futás idejeére vonatkozó adattábla tartalmat tükrözi.

A képernyőprogramok esetén a megadandó paraméterek a következők:



A képernyőformátum lementése után a futtatáskor lehetőségünk van az adattábla egyszerű kezelésre a generált programon keresztül.

A program a következő nyomógombokat tartalmazza:





A wizard lehetőséget ad egy gyors prototipus készítésére, melyet azonban ritka kivételektől eltekintve még tekinthetünk a végleges megoldásnak. A finomítások, a speciális funkciók beszúrásának elvégzése a megfelelő szerkesztővel, a képernyő illetve jelent és szerkesztővel lehetséges.