Informatica
FOX PRO - comenzi si functii Fox ProFOX PRO Modificarea structurii unei BD: MODIFY STRUCTURE, comanda permite modificarea BD active Ex1: nume camp tip dimensiune SEX C 1 SALAR N 7 COPII L SECTIE N 3 FUNCTIE C 10 Ex2: Adaugati in BD Agenda un camp Obs, de tip Memo, care sa contina informatii suplimentare despre persoanele inregistrate in BD Adaugarea unui articol in BD: APPEND - pemite adaugarea unui articol la sfarsitul BD. APPEND BLANK - permite adaugarea unui singur articol gol Ex3: Adaugati in Personal informatii despre alti 2 angajati in asa fel incat salariul lor sa depaseasca valoarea de 500 000. Campul Copii se completeaza cu una din valorile T sau F afisand pe ecran continutul BD Ex4: Adagati in BD Biblio informatii despre inca un titlu. Afisarea contine Obs (de tip memo) se realizeaza cu comanda LIST OBS =Comenzi si functii Fox Pro= A. Functii - returneaza o valoare si pot fi de tip sistem sau create de utilizatoi. Sunt caracterizate de nume si o pereche de paranteze rotunde care le diferentiaza de comenzi. Niciodata pe linia de comanda nu vom avea unctii de sine statatoare. Functiile pot sa apara numai in combinatie cu comenzile Fox Pro. Ex: funcii sistem: DATE( ) - returneaza o valoare de tip data calendaristica (data curenta) Pentru afisarea datei curente folosim comanda ? si functia DATE: ?DATE( ) sau ?TIME( ) Obs: Comanda '?' are rolul de a afisa pe ecran rezultatul functiei cu care se combina B. Comenzile - executa o actiune: Use, List, Display, ?, … =Sintaxa comenzilor Fox Pro= Comenzile Fox Prosunt alcatuite din una sau mai multe componente care determina modul in care poate fi folosia comanda respectiva. Comanda Fox pro este un sir de maxim 254 de caractere care incepe obligatoriu cu numele comenzii (un verb in limba engleza sau un caracter special), eventual (nu obligatoriu) urmat de parametrii. Obs: In Fox Pro este permisa prescurtarea unei comenzi la primele 4 litere. Ex: Display - Disp List Structure - List stru =Sintaxa generala a unei comezi Fox Pro= Nume comanda[<domeniu>][<lista de expresii>] Ex: Sintaxa maxima a comenzii display este: DISPLAY [[field]<field-list>] [<scope>] [FOR<expL1>] [WHILE<expL1>] [OFF] [TO PRINTER|TO FILE] [NOCONSOLE|TO FILE <file>] [NOOPTIMIZE] Conventii de scriere: cuvintele cheie rezervate de sistemul Fox Pro pentru uzul propriu se sciu cu majuscule. Fiecare comanda contine cel putin un cuvant cheie (numele comenzii sau functiei). Exemple de cuvinte cheie: Display, For, While, Off (se mai numesc clauze) < > - indica informatile care trebuie introduse de utilizatori la scrierea comenzii. Parantezele nu se scriu ( ) - apar in sintaxa functilor si sunt obligatorii [ ] - indica partile optionale ale comenzilor si functiilor Fox Pro Continutul parantezelor poate sa apara sau nu la scrierea comenzii in functie de scopul urmarit de utilizator. | - bara verticala, separa2 optiuni care nu pot sa apara in acelasi timp pe linia de comanda exp - poate fi inlocuita cu o expresie de orice tip expN - poate fi inlocuita numai cu o expresi numerica a) Domeniul - cand operam asupa unei BD avem posibilitatea sa specificam numai o parte a articolelor din baza asupra careia sa aiba efect comanda. Aceste articole formeaza un domeniu. Delimitarea domeniului se poate face utilizand clauzele Scop, For si While SCOPE - poate fi inlocuit cu urmatoarele cuvinte cheie: All - are efect asupra tuturor articolelor din BD. Ex:Display All Next <expN> - are efect asupra urmatoarelor expNarticole incepand cu articolul curent. Ex: Display Next 3 Obs: La Display, domeniul e implicit Next 1 Rest - comanda va avea efect asupra tuturor articoleor din BD, incepand cu cel curent pana la sfarsit Record <expN> - comanda va avea efect asupra inegistrrii cu nr. expN. Ex: Display Record 4 Clear - curata ecranul FOR - in prezenta acestei clauze, comanda va afecta toate articolele din BD care indeplinesc conditia logica specificata. Ex: Display For salar> 500 000 WHILE - se va executa comanda atata timp cat este respectata conditia logica impusa de clauza While Testarea expresiei logice incepe cu articolul curent. Eefctul comenzii inceteaza la primul articol pentru care valoarea expresiei nu este adevarata, chiar daca dupa acest articol mai exista altele care indeplinesc conditia data. Ex: display While salar>500 000 b)Lista de expresii - o expresie Fox Pro reprezinta o combinatie de valori ale campurilor BD, functii, valori ale variabilelor de memorie, constante si operatori. Elementele unei liste de expresii se delimiteaza cu virgula. Exista 4 tipuri de expresii Fox Pro: <expC>, <expN>, <expD>, <expL> Intr-o expresie pot aarea urmatoarele elemente (operatii): campuri ale BD, functii, valori ale variabilelor de memorie, siruri. Toti operanzii unei expresii trebuie sa fie de acelasi tip de date, in caz contrar, Fox Pro va afisa un mesaj de eroare Expresii de tip caracter <expC> campuri de tip caracter ale BD functii care returneaza valoarea de tip caracter valori ale variabilelor de memorie care contin date de tip caracter constante de tip caracter (siruri de caractere) Obs: Sirul de caractere e delimitat de ghilimele sau apostrof. Ex: 'Cluj' sau 'Cluj' Expresii de tip numeric <expN> campuri ale BD de tip numeric functii care returneaza valori numerice variabile de memorie care contin valori numerice constante de tip numeric nume cu sau fara semn) Expresii de tip data calendaristica <expD> idem <expN> variabile de memorie care contin data calendaristica Expresii de tip logic <expL> idem <expN> variabile de memorie de tip logic. Contine valorile .T. sau .F. sau .Y. sau .N. In expresii pot interveni oeranzi si operatori. Ex: 2+3. 2,3 - operanzi; + - operator. Operanzii pot fi: 1. Nume de campuri. Ex: Display Nume, Data nasterii 2. Functii - functiile utilizate in expresii pot fi: sistem sau definite de utilizator. Intre paranteele rotunde se pot transmite paramerii. Ex: ?DATE(), ?TIME(), ?RECNO() - returneaza numarul articolului curent 3. Variabile - reprezinta locatii de memorie in care se pastreaza anumite valori 4. Constante - cele 4 tipuri tratate mai sus: N, C, L, D. SET HEADING OFF - inhiba afisarea numelor campului Operatori - se impart pe caregorii in functie de tipul datelor asupa carora opereaza 1. Operatori aritmetici - actioneaza asupra datelor de tip numeric ^ ** - ridicare la putere * - inmultirea / - impartirea % - modulo (restul impartirii intregi) + - adunare/scadere Prioritatea operatorilor incepand de la cei mai prioritari: ** ^, */, %, +- Ex: 23 - ?2**3 2. Rationari - sunt utilizate in expresii care returneaza o valoare logica. Opereaza cu date de orice tip: <, >, =, <>, #, <=, >=, $ Obs: $ si = = se foloseste numai entru siruri de caractere 3. Operatori logici - .NOT.(negatie), .AND. (si logic), .OR. (sau logic) 4. Operatori de concatenare - sunt utilizati in expresii de tip caracter si opereaza cu operatii de tip caracter. Sunt de 2 tipuri: simplu (+ realizeaza concatenarea a doua siruri de caractere) si special (- Realizeaza concatenarea de caractere cu mutarea spatiilor de la sfasitul primului sir la sfarsitul celui de-al doilea) ex: ?'Cluj' + 'Napoca' - Cluj Napoca ?'Cluj' + '-' + 'Napoca' - Cluj-Napoca Display nume+prenume - POP ANA Display nume-prenume - POPANA Ex 1: Afisati varsta salariabilor din BD Personal Display All nume prenume 'Varsta' , year (DATE()) - year (datan) Ex2: Afisati toti salariatii sub 40 ani Display All For year (DATE()) Ex3: Afisati toti salariatii care au salar mai mic de 800 000 si au copii =Comenzi pentru intretinerea unei BD. Pozitionarea in BD= Fiecare articol al unei BD este caracterizat de un numar (Record Number); articolul curent este articolul celei carei informatii sunt disponibile la un moment dat. Numarul curent este returnat de functia RECNO( ) Articolele unei BD sunt inregistrate astfel: BOF (Begin Of File) EOF (End Of File) Functia BOF returneaza valoarea rue, ca sunt conditionat e inceputul fisierului de BD inaintea primului articol. In orice alta situatie, valoarea returnata de functia BOF este False. Funcita EOF returneaza valoarea True daca sunt pozitionat la sfarsitul articolului de BD (dupa ultimul articol). Valoarea returnaa de funcia EOF este False. Exista 3 modalitati de pozitionare intr-o BD: a) Pozitionarea absoluta GOT<expN> GO TOP - pozitionare pe primul articol GO BOTTOM - ozitionare pe ultimul articol GO 5 - pozitionare pe articolul 5 b) Pozitioarea relativa - permite pozitionarea fata de articolul curent. SKIP [+][-][expN>] c) Pozitionarea conditionata - permite pozitionarea e primul articol care indeplineste o anumita conditie. LOCATE FOR <expL>[WHILE <expL2>]. Daca a gasit un articol care indelineste conditia o afiseaza pe ecran. In aceasta situatie, functia FOUND( ) returneaza coloana True. Initierea urmatorului articol care sa indeplineasca conditi se face cu comanda CONTINUE. Ex: Sa se afiseza numele primului angajat care are un salar de 500 009 =Stergerea logica a unui articol din BD= DELETE - comanda marcheaza articolul pentru stergere. Stergerea realizaa de comanda Delete este doar o stegere logica, stegerea nu are loc definitiv Sintaxa comenzii: DELETE [<domeniu>] sau [FOR<expL1>] sau [WHILE<expL2>] Obs: Domeniul implicit al comenzii Delete este articolul curent Ex: Marcati pentru stergere toti angajatii care nu au copii, apoi afisati pe ecran numele si prenumele tuturor angajatilor. DELETE FOR copii=.F. LIST FIELDS nume, prenume, copii =Anularea marcajului pentru stergere= Se face cu comanda RECALL. Domeniul implicit al acestei comezi este articolul curent. Sintaxa comenzii: RECALL [<domeniu>][FOR<expL1>][WHILE <expL2>] Ex1: Anulati marcajul pentru stergere al primului angajat care nu are copii LOCATE FOR copii=.F. RECALL LIST FIELDS nume, prenume, copii Ex2: Anulati marcajul pentru stergere al tuturor articolelor marcate cu comana Delete. RECALL ALL =Stergerea fizica = Se realizeaza cu comanda PACK, comanda care sterge toate articolele marcate cu comanda Delete. Ex: marcati pentru stergere toti angajatii care au salarul de 850 000 DELETE FOR SALAR=850000 LIST FIELDS nume, salar =Comanda ZAP= Realizeaza stergerea fizica a tuturor articolelor din BD. Practic, aceasta comanda goleste BD obtinand o baza cu vechea structura, dar fara nici un articol. Ex: Afisati continutul BD Agenda. Stergeti fizic toae articolele din BD =Modificarea unui articol din BD. Comanda EDIT= EDIT [FIELDS <fields, list>][<scope>][FOR<expL1>][WHILE<expL2>] Ex1: Modificati articolul 3 din BD Personal. EDIT RECORD 3 Ex2: Modificati articolul din BD care inndeplineste o conditia logica EDIT FOR copii=.T. Comanda CHANGE - se utilizeaza in acelasi mod ca si Edit =Comanda BROWSE= Este una din cele mai puternice comezi Fox pro. Permite: deschiderea unei feestre numite Browse cu asect de tabel bidimensional in care ca antet apar numele campurilor BD, iar in fiecare linie apare continutul unui articol. afisarea articolelor BD editarea articolelor existente (modificare, stergere) adaugarea unor articole noi Dupa activarea ferestrei Browse in meniul principal apare o noua otinue care permite opraii speciale comenzii browse (modificare, maracre pentru stergere, mutarea campurilor, modiicarea dimensiunii pentru afisare campuri…) =Navigarea in ferestre= ↑/↓ - deplasarea in sus/jos cu un articol Page Up/Down - deplasarea in sus/jos cu o pagina TAB - deplasarea de la un camp la altul Shift+TAB - deplasarea la stanga =Adaugarea unui articol nou= CTRL+W BROWSE APPEND RECORD (ALT+B) =Stergerea unui articol din BD= CTRL+T Click pe butonul stang al mouseului in extremitatea stanga a art Prin Browse comanda Toggle Delete In fereastra BROWSE avem posibilitatea de a schimba ordinea si dimensiunea campurilor BD cu ajutorul mouse-ului. =Iesirea = cu salvarea modificarilor: CTRL+W sau CTRL+End fara salvarea modificarilor Esc sau CTRL+Q =Sintaxa comenzii BROWSE= BROWSE [FIELDS <field-list>] [FOR <expL1>] [FREEZE<field-name>] [NOOAPPAND] [NODELETE] [NOEDIT|NOMODIFY] [TITLE <expC>] [VALID [:F] <expL2>] [WHEN <expL3>] [WIDTH <expN1>] [[WINDOW <window name 1>] [IN [WINDOW] [<window name 2>|IN SCREEN]] [COLOR SCHEME <expN2>] [COLOR <color-pair list>] FIELDS - permite afisarea selectiva a campurilor BD (cele specificate in lista de campuri) Ex: BROWSE FIELDS nume, prenume FOR - ermite afisarea articolelor pentru care conditia logica data de <expL1> este adevarata. Ex: BROWSE FIELDS nume, prenume, functie FOR salar>800000 FREEZE <field name> - permite modificarea numai a campului specificat de field name. Celelalte campuri afisate in fereastra vor fi de ip Read Only. Campul pe care dorim sa-l modficam trebuie sa apara in lista de campuri afisate in fereastra. Ex: Afisati in Browse campurile nume, prenume, functie si salar cu restrictia ca umai coninutul campului functie poate fi modificat. BROWSE FIELDS nume, prenume, functie, salar FREEZE functie NOAPPEND - nu permite adaugarea unor noi articole in BD prin Browse. Ex: BROWSE NOAPPEND NODELETE - nu permite marcarea articolelor pentru stegere in fereastra Browse NOEDIT|NOMODIFY - nu permite modificarea articolelor existente in BD. In aceasta situatie este posibila stergerea unor articole si adaugarea unor articole noi TITLE <expC> - permite modificarea numelui ferestrei Browse cu noul text introdus cu <expC>. Ex: BROWSE FIELDS nume, prenume, TITLE BD… VALID[:F] - permite introducerea unei conditii de validare a datelor la nivel de arhiva. Se executa numai dupa ce am modificat continutul unui articol si trecem folosind sagetile la un alt articol. Nu se executa daca singurul camp modificat este de tip Memo. A nu se confunda cu optiunea :V la nivel de camp. Folosind optiunea [:F] fortez validarea datei introduse inaintea trecerii la un nou articol. Ex: BROWSE FIELD nume, prenume, salar VALID :F salar>600000 WIDTH - permite limitarea dimensiunii tuturor campurilor afisate in fereastra Browse. Se modifica numai dimensiunea de afisare a campurilor. In structura BD dimensiunea campurilor ramane asa cum s-a stabilit la crearea structurii. Daca informatia inregistrata intr-un camp nu se vede in intregime, cu sageata spre dreapta se poate face sa defileze continutul campului respectiv. IN[WINDOW] - permite afisarea tastei browse intr-o fereastra creata de utilizator cu numele specificat dupa aceasta clauza COLOR SCHEME / COLOR - permite afisarea ferestrei Browse intr-o anumita schema de culori. Ex: BROWSE WIDTH 4 COLOR SCHEME 5 =Operatii specifice pentru Browse= campuri calculate - contin date de tip Read Only , expresii de orice tip valide in Fox Pro Ex: Afisati in fereastra Browse numele, prenumele si varsta din BD Personal - campuri Read Only - nu este permmisa decat afisarea lor si nu pot fi decat modificate Ex: BROWSE FIELDS nume, prenume, salar:R BROWSE FIELDS nume:R, prenume:R - validarea valorii introduse intr-un camp Ex1: Modificati salarul angajatilor avand in vedere ca salarul minim pe economie este de 800 000 BROWSE FIELDS nume, prenume, salar:V=salar>800000 Ex2: Fortarea validarii valorilor introduse in camp chiar atunci cand se trece u cursorul prin camp BROWSE FIELDS nume, prenume, salar:V=salar>800000:F Ex3: Afisarea unui mesaj propriu in cazul introducerii in camp al unei valori necorespunzatoare BROWSE FIELDS nume, prenume, salar:V=salar>800000:F:E 'salarul minim este de 800000' Ob: daca dorim scrierea unei comenzi pe mai multe linii, fiecare linie de comanda trebuie delimitata cu ;
- schimbarea numelui anumitei coloane <nume camp>:H=<expC> Ex: Afisati campul copii al BD Personal intr-o coloana numele Angajatul are copii? BROWSE =Ordonarea unei BD= a) prin indexare: ordonare logica b) prin sortare: ordonare fizica =Indexarea unei BD= Inseamna ordonarea logica a articolelor logice dupa criterii. Ordonarea fizica a articolelor din BD nu se modifica, in urma indexarii se creaza un fisier auziliar fisierului de BD cu extensia .IDX sau .CDX, in functie de tipul insdexului creat. Numarul de fisiere index al unei BD nu este limitat, dar ordinea de accesare a BD la un moment dat necontrolata de un fisier tip Master Index File sau Mater Tag. Numarul de fisiere index deschise la un moment dat este limitat numai de dimensiunea memoriei si de resursele sistemului in acel moment. La modificarea unei BD toate fisierele index deschise sun modificate automat. Tipuri de indecsi: 1. index simplu - Bd este ordonata dupa o singura cheie. Fisierul index are extensia .IDX. se deschide cu o observatie specifica la deschiderea BD 2. index compus - poate fi structural sau nestructural. BD este ordonata dua mai mule chei (tag-uri). Daca este structural, fisierul de indexare are numele BD si se deschide automat la deschiderea BD. Fisierul de indexare compus are extensia .CDX. fisierul tag are nume propriu de maxim 10 caractere; incepe de la o litera, cifra sau caracter-underscare Cheile de indexare sunt campuri ale BD sau expresii vlide Fox Pro =Crearea unui index= Pentru o BD deschisa se face cu comanda INDEX. Index Simplu: INDEX ON <cheia>TO<nume fisier>[FOR<expL>] Index Compus: INDEX ON <cheia> TAG <tag nume> [FOR <expL>] [ASCENDING]|[DESCENDING][ADDITIVE] Articolele BD indexate vor fi afisate si accesate in ordinea stabilita de cheia specificata =Activarea indecsilor= 1. La deschiderea BD index simplu - USE<nume baza> INDEX<nume fisier index> index compus - se activeaza automat fisierul .CDX al sructurii USE<nume baza> ORDER TAG<tag name> [OF<cdx file>] se foloseste daca dorim deschiderea unui alt tag 2. Dupa deschiderea BD SET INDEX TO <lista fisiere index> REINDEX - actualizarea inecsilor activi CLOSE INDEX - inchiderea indecsilor activi. Comanda include toate fisierele index deschise in zona de lucru curenta in afara de cel structural. Obs1: Index deschis nu inseamna ca BD este ordonata Obs2: Ordonarea la un moment dat se face dupa o singura cheie daca sunt activi toti indecsi creati. Obs3: Ordonarea dupa un index structural (.cdx) se face numai cu comanda SET ORDER TO AG <tag name> =Functii de transformare= - CTOD transforma o expresie de tip sir de caractere intre expresie de tip data calendaristica CTOD( ) DTOC( ) - STR(<expN1>[,<expN2>[,<expN3>]) - transforma expresia numerica in sir de caractere expN1 - este expresia numerica evaluata expn2 - lungimea sirului de caractere expN3 - nuaraul de zecimale din sirul returnat Ex1: Ordonati BD Personal dupa numele angajatilor INDEX ON nume TO inume ROS inume:inume.idx LIST FIELDS nume Ex2: Ordonati BD Personal dupa prenume INDEX ON prenume To ipren LIST FIELDS prenume Ex3: Ordonati BD ersonal dupa salar INDEX ON salar O isalar LIST Ex4: deschideti BD Personal si indecsi USE PERSONAL INDEX inume, ipren, isalar; Inume - index Master dupa care va fi ordonata BD =Crearea de indecsi compusi= Ex5: Indexati baza dupa nume+salar INDEX ON nume+str(salar) TAG INS; str(salar) - cheia se converteste in fisier tip C ca sa se poata aduna Obs: se creaza fisierul Personal.cdx care se deschide automat ori de cate ori deschidem BD SET ORDER TO TAG ins LIST FIELDS nume, prenume, salar =Sortarea unei BD= Ordonarea fizica a articolelor unei BD se realizeaza cu comanda SORT SORT TO <nume fisier> ON <camp1> [/A] [/D] [/C] [,camp2 [/A] [/D] [/C] [ASCENDING/DESCENDING] [<scope>] [FOR <expL1>] [WHILE <expL2>] [FIELDS<field list>] Dupa executarea comenzii se creaza un nou fisier in care articolele vor fi ordonate dupa cheile precizate. Daca dorim sa sortam numai anumite articole din BD folosim clauzele For si While, sau precizam un anumit domeniu (scope). Daca dorim ca noua BD sa contina numai anumite campuri din BD initiala folosim clauza Fields Un camp de tip Memo saugeneral nu poate fi folosit ca si cheie de indexare Ex: creati o noua BD cu numele Spers.dbf in are articolele sa fie ordonate decrescator dupa campurile nume si prenume si sa contina numai campurile nume, prenume, salar si functie. Noua BD sa contina toate articolel BD Personal. SORT TO spers ON nume/D, pren/D FIELDS nume, pren, salar & functie =Programe Fox Pro= Def: Un program este un fisier de tip text care contine comenzi Fox Pro Avantaje: programele executa automat o secventa de comenzi salvand timp atunci cand este necesara executarea repetata a unei secvente de comenzi. Se pot obtine programe noi prin modificarea unor programe existente asemanatoare. Prin intemediuol unor programe se pot rula si alte programe. Anumite structuri de comenzi pot fi utilizate numai in programe. Programele permit refolosirea variabilelor cu scopul parametrarii aplicatiei create. Crearea unui index: INDEX ON <cheie> TO<nume index> INDEX ON <cheie> TAG <nume tag> Activare: USE <nume baza> INDEX <nume index> USE<nume baza> ORDER TAG <nume tag> Actualizare: REINDEX Inchidere: CLOSE INDEX Stabilire index Master: SET ORDER TO <nume index>TAG<nume tag> =Crearea unui program= File/New/Program Modify Command <nume program> In urma executarii comenzii de creare a unui program pe ecran apare o fereastra de editare avand numele programului in care vom introduce comanzile asa cum le-am introduce pe linia de comanda in fereastra de comenzi. Comenzile se executa secvential (in ordinea scrierii lor in fisier linie cu linie) =Iesirea din fereastra de editare= Cu salvare: CTRL+W sau Save as Fara salvare: Esc Lansarea in executie a programului: DO <nume program> =Exemple de programe= - se intra cu Modify Command F1 =Program 1= * afiseaza lista angajatilor in BD Personal * F1 * Orice program necesita deschiderea fisierelor din BD folosite USE PERSONAL CLEAR ? 'Am deschis fisierul personal' WAIT - && - (comentariu pe o linie de program oreste programul pana apasam o tasta) CLEAR ? 'Lista angajatilor' DISPLAY ALL nume, prenume, salar USE ? 'OK! Am terminat!' WAIT Obs1: * - introduce o linie de comentariu in textul program Obs2: && - introduce un comentariu in interirul unei linii de programe MODIFY COMMAND F1 CLEAR WAIT [<expC>][WINDOW] Wait - se foloseste pentru oprirea temporara a executiei programului. Se poate folosi numai in program WAIT - opreste executia programului si afiseaza pe ecran mesajul 'Press any key to continue' WAIT 'Apasati o tasta' - opreste executia programului si afiseaza mesajul 'Apasati o tasta' Wait 'Apasati o tasta' WINDOW - opreste executia programului si afiseaza pe ecran in fereastra de mesaje a sisemului textul 'apasati o tasta' =Progam 2= *F2 *Stabilirea conditiilor de lucru SET TALK OFF SET HEADING OFF *Deschiderea bazei de date USE PERSONAL CLEAR *Afisarea persoane fara copii si salar>800000 ? 'Nu au copii si au salar pre mare' LIST FIELDS nume, prenume, salar FOR .not. copii WAIT CLEAR *Afisare persoane angajate inainte de 11 ianuarie 1980 LIST FIELDS nume, prenume, functie, dataa< WAIT 'Cei angajati inainte de 01/01/80 *Afisare persoane nascute azi LIST FIELDS nume, prenume, functie FOR MONTH(datan)=MONTH(date()) .and. DAY(datn)=DAY(date)) WAIT 'Cei nascuti azi' WINDOW *Afisati persoanele cu prenume ION LIST FIELDS nume, prenume, FOR UPER (prenume)='ION' WAIT CLEAR USE *Refacerea conditiilor de lucru SET TALK ON SET HEADING ON SET TALK ON/OFF - activeaza/inhib aparitia pe ecran a mesajelor care apar in urma executarii unor comenzi SET HEADING ON/OFF - activeaza/inhiba aparitia pe ecran a capului de coloana afisat de comenzile Display sau List UPPER(<expC>) - transforma toate listerele din sirul de caractere <expC> in majuscule OWER (<expC>) - transforma toate literele sirului de caractere <expC> in litere mici =Executatea conditionata a unei secvente de program= Exista comenzi care nu au sens in lucrul interactiv, ci numai in programe. Dintre acestea face pate mecanismul de programare structurata care permite executarea selectiva a anumitor secvente de comenzi. IF …. ELSE …. ENDIF Sintaxa IF <expL> <comenzi1> ELSE <comenzi2> ENDIF La intalnirea comenzii IF se evalueaza expresia logica <expL> si in functie de rezultat daca <expL> are valoarea True se executa secventa de comenzi <comenzi 1>, daca este False se executa secventa <comenzi 2> Executarea unei secvente de comenzi atata timp cat este satisfacuta o conditie DO WHILE <expL> <comenzi> [LOOP] [EXIT] ENDDO Se incepe cu evaluarea expresiei <expL>. Daca valoarea este True se executa secventa <comenzi> pana la ENDDO dupa care se reevalueaza <expL> si se executa sau nu secventa <comenzi> in functie de vloarea logica a <expL> LOOP - intrerupe executarea comenzilor din corpul ciclului DO WHILE si sare la o noua evaluare a expresiei logice <expL> de la inceput. EXIT - intrerupe executarea comenzilor din corpul ciclului DO WHILE si sare in afara ciclului DO WHILE executand urmaoarea comanda de dupa ENDDO =Program 3= *F3 *Afiseaza numele si renumele clientilor *Stabilirea parametrilor de lucru SET TALK OFF SET HEADING OFF CLEAR *deschid BD USE PERSONAL GO TOP && Pozitionare pe primul articol *Afisare antet tabel ? 'Nume Prenume' *Afisare linii de tabel DO WHILE .not. EOF( ) DISP nume, prenume SKIP ENDDO USE SET TALK ON SET HEADING ON LOCATE IF….ENDIF DO WHILE =Program 4= *F4 *Afiseaza toti salariatii care incep cu litera 'P' SET TALK OFF SET HEADING OFF CLEAR *Deschid BD USE PERSONAL GO TOP LOCATE FOR UPPER (nume)='P' IF FOUND( ) DO WHILE .not. EOF( ) DISP nume, prenume, salar OFF CONTINUE ENDDO ELSE WAIT WINDOW 'Nu Exista' ENDIF USE SET TALK ON SET HEADING ON Implicit SET EXACT este OFF REPLACE - inlocuieste datele dintr-un camp cu valoarea unei exresii <camp1> WITH<expr1>[ADDITIVE] <camp2> WITH<expr2>[ADDITIVE] [<SCOPE>] [FOR<EXPL1>][WHILE<EXPl2>] ADDITIVE - se aplica numai campurilor de tip memo. Daca apare in sintaxa comenzii in campul memo rezultatul expresiei se adauga la sfarsitul textului existent. Daca nu apare rezultatul expresiei se scrie peste textul existent NEXT 1 =Program 5= *F5 *Modificarea salarului tuturor cu 20% SET TALK OFF SET HEADING OFF CLEAR USE PERSONAL REPLACE ALL SALAR WITH salar*1.2 WAIT 'OK!Am marit salarul!' BROWSE FIELDS nume, prenume, salar REPLACE ALL functie WITH 'maistru' FOR funcie='muncitor' .and. salar>600000 WAIT WINDOW 'OK!muncitorii I-am facut maistrii!' REPLACE ALL salar WITH salar+50000 FOR functie='secretara' .and. copii=.T. Copii=.F. =>.not. copii Copii=.T.=>copii =Gestiunea memoriei de lucru= Memoria de lucru este impartita in locatii variabilelor de memorie. Variabilele se incarca temporar cu valori. Variabila ste identificata printr-un nume dat de programator NrCrt - numar curent In functie de durata de viata, variabilele sunt de doua tipuri: locale si globale A. Variabile locale - durata de viata a unei variabile locale este durata de executie a unui program sau a unei proceduri. Se definesc prin initializare (nu este necesara declararea lor). Aceste variabile isi inceteaza existenta la iesirea din program / procedura. Continutul unei variabile locale poate fi utilizat in programul / procedura curenta si in programele care sunt apelate de acestea. B. Variabile globale durata de viata a unei variabile globale este duraa de executie a aplicatiei din care face parte programul sau procedura in care apare variabila. Se definesc prin declarare PUBLIO <lista variabile. Isi inceteaza existenta in doua situaii: la inchiderea aplicatiei din care face parte programul si la anularea ei deliberata prin comana RELEASE <lista variabile>. Continutul unei variabile globale de memorie este deosebit de eficienta la validarea datelor de intrare intr-o plicatie asigurandu-se astfel si integritatea BD. Valorile introduse de utilizator vor fi incarcate in variabile de memorie, iar campurile din BD vor fi actualizate cu continutul acestor variabile doar dupa ce utilizatorul a verificat si confirmat corectitudinea acestor informatii. 1. STORE<expr>TO<lsta variabile><variabila de memorie>=<expr> Comanda ncarca rezultatul evaluarii sau toate variabilele unei liste. Daca variabilele nu exista, ele sunt create si initializate. Ex: STORETO mdata1 STORE DATE( ) TO madata2 STORE 'SALUT' TO mcar STORE 150 TO mnr STORE .T. TO mlog 2. INPUT [<expC>] TO <variabila de memorie> Comanda permite introducerea datelor preluate de la tastatura in variabila de memorie specificata. Datele introduse de la tastatura pentru a fi tratate ca siruri de caractere trebuie introduse intre apostrofuri ' ' sau ghilimele ' ' Ex: INPUT 'Introduceti numele angajatului:' TO nume !!!Numele se pune intre apostrof ! INPUT 'Data nasterii' TO mdatan Comanda INPUT este similara cu conda ACCEPT care insa nu cere ca datele introduse sa fie curpinse intre ' ', ele fiind intotdeauna tratate ca siruri de caractere [<expC>] TO <variabila de memorie> Ex: ACCEPT 'Introduceti numele' TO mnume Popescu 3.DISPLAY MEMORY LIST MEMORY [LIKE<m*>] Comenzile afieaza numele, tipul, continutul si starea tuturor variabilelor de memorie curent definite 4.CLEAR MEMORY RELEASE ALL Cele doua comenzi realizeaza stergerea vriabilelor de memorie. Comanda CLEAR MEMORY sterge din memoria toate variabilele locale si globale. Variabilele sistem nu sunt afectate 5. PUBLIC<lista variabile> - se foloseste pentru a declara variabile globale 6. RELEASE <lista variabile> Ex: RELEASE mcar, mr =Program 6= - afiseaza numele, prenumele si salarul persoanelor cu numele introdus - programul se poate obtine din modificarea rograului 4 F4.prg Modi comm F4 *F6 SET HEAD OFF SET TALK OFF SET EXACT ON ACCEPT 'Introduceti numele cautat:' TO mnume USE PERSONAL GO TOP LOCATE FOR UPPER (nume)=UPPER (mnume) IF FOUND ( )DO WHILE .not. EOF( ) DISP nume, prenume, salar CONTINUE ENDDO ELSE WAIT WINDOW 'Nu exista' ENDIF USE SE T HEAD ON SET TALK ON SET EXACT OFF =Program 7= - marcheza pentru stergere tot al doilea articol din BD *F7 SET TALK OFF USE PERSONAL CLEAR DISPLAY ALL nume, prenume, salar WAIT 'Tastati orice…' GO TOP DO WHILE .not. EOF ( ) DELETE SKIP +2 ENDDO CLEAR DISP ALL nume, prenume, salar WAIT 'Lista salariatilor' WINDOW ACCEPT 'Doriti stergere efectiva (s) sau nu (n)' TO rasp rasp=ALLTRIM (rasp) if rasp='s' .or. rasp='s' PACK ELSE If rasp $ 'Nn' RECALL ALL ENDIF ENDIF DISP ALL nume, prenume, salar WAIT WINDOW 'Lista salariatilor ramasi' USE SET TALK ON Alltrim - elimina spatiul de la inceputul si de la sfarsitul unui sir de caractere CTRL+F10 - mareste fereastra =Functii si proceduri= =Proceduri - intr-un program anumite rutine (secvente de intructiuni) se repeta frecvent. Acestea se pot plasa in proceduri pentru a reduce dimensiunea programului si a usura intretinerea si depanarea lui. Structura unei proceduri: PROCEDURE <nume procedura> PARAMETERS <lista de parametrii formali> <corp procedura> RETURN Declararea procedurii: PROCEDURE <nume procedura> Obs: <nume procedura. Poate avea maxim 10 caractere> Declararea listei de parametri formali: PARAMETERS <lista de parametri formali> Obs1: Lista parametrilor formali indica numele parametrilor care pot fi utilizat in corpul procedurii si ordinea apartiei parametrilor la apelul procedurii Obs2: Transmiterea parametrilor se poate face prin: - referinta: valoarea parametrilor este trecuta programelor apelate (implicit) - valoare: valoarea parametrilor nu este trecuta programelor apelate Obs3: Numarul maxim de parametrii este de 24 Corpul procedurii - este o secventa de comenzi care pot utiliza parametrii formali ca operanzi ai expresiilor Terminarea procedurii: RETURN - incheie executia unei proceduri dand controlul programului apelat la comanda care urmeaza apelului procedurii Apelul procedurii: DO <nume procedura> [WITH<lista parametrii efectivi>] [IN <nume fisier>] Procedurile si functiile pot fi continute in fisierul in care se gaseste programul apelat sau in alte fisiere SET PROCEDURE TO <nume fisier> =Functii= - functia este o procedura care returneaza o valoare prin numele ei Strucura unei functii: FUNCTION <nume functie> PARAMETERS <lista parametri formali> <corp functie> RETURN [<expr>] Declarare functie: nume functie poate avea maxm 10 caractere. Declararea listei parametrilor formali se face cu PARAMETERS <lista parametri formali> Transmiterea parametrilor: de referinta si de valoare(implicit) , ca la procedura. Numarul maxim de parametrii e de 24 Corpul functiei: secventa de comenzi care pot utiliza parametri formali ca operanzi ai expresiilor Terminarea functiei: RETURN[<expr>] - incheie executia functiei, reda controlul programului apelat si returneaza valoarea calculata in corpul functiei Apelul functiei: se poate apela in cadrul unei expresii sau intr-o comanda = in cazul in care nu intereseaza valoarea returnata de catre functie =<nume functie>(<lista parametri efectivi>) =Structura DO CASE…END CASE= Executa primul grup de comenzi dintre cuvintele cheie. DO CASE si END CASE pentru care expresia logica asociata este adevarata Sintaxa comenzii DO CASE CASE<expL1> <comenzi1> [CASE<expL2> <comenzi2> CASE <expLn> <comenzi n> [OTHERWISE <comenzi>] ENDCASE =Program pentru exemplifcarea unei functii= *TESTF.PRG *Aiseaza in ce trimestru al anului se situeaza data calendaristica introdusa de utilizator CLEAR INPUT 'Introduceti data' To mdata ? TRIMESTRU (mdata) ? 'In data de azi trimestrul este…' ? TRIMESTRU (DATE()) FUNCTION trimestu PARAMETERS datacalend DO CASE CASE MONTH (datacalend)>9 RETURN 'Trimestrul4' CASE MONTH (datacalend)>6 RETURN 'Timestrul3' CASE MONTH (datacalend)>3 RETURN'Trimestrul1' OTHERWISE RETURN 'Trimestrul1' =Diferenta intre o functie si o procedura= Functia primeste un set de parametrii de la programul apelant si returneaza acestuia o valoare poate intra in componenta unei expresii ca operand apelul unei functii se face prin numele acestuia urmat intre ( ) de parametrii Procedura primeste de la programul apelat un grup de parametrii, realizeaza anumite prelucrri dupa care revine in programul apelant o procedura definita de utilizator este similara cu comenzile standard Fox Pro se executa prin comanda DO urmata de numele procedurii, iar parametrii se introduc in lista clauzei WITH =Comenzi pentru editarea si prelucrarea ecranelor (formelor)= Comanda @…SAY - afiseaza iesirea la opozitie (linie, coloana) si intr-un format specificat Sintaxa comenzii: @<linie, coloana> SAY,expr> [FUNCTION<expC1>] [PICTURE<expC2>] [SIZE <expN1>,<expN2>] [COLOR SCHEME<expN3>|COLOR<color pair list>] - linia poate lua valori de la 0-24 - coloana poate lua valori de la 0-80 Comanda @…GET - creaza o regiune de editare pe ecran pentru editarea unei variabile sau camp al BD Sintaxa comenzii: @<linie, coloana>GET<vrmem>|<field> [FUNCION<expC1>] PICTURE<expC2>] [DEFAUL<exp1>] [ENABLE|DISABLE] [MESSAGE<expc3>] [[OPEN]WINDOW<window name>] [RANGE[<exp2>][<exp3>]] [SIZE<expN1>,<expN2>] [VALID<expL1>|<expN3>[ERROR<expC4>]] [WHEN<exp2>] [COLOR SCHEME<expN4>|COLOR<color pair list>] FUNCTION<expC1> - modifica formatul datelor prelucarate in functie de valoarea lui <expC1>; actioneaza asupra tuturor caracterelor din formatul de afisare Expresia de tip caracter poate lua urmatoarele valori: A - permite numai introduceea carcacterelor alfabetice (fara spatii si simboluri) B - aliniaza la stanga datele numerice din interiorul campului D - utilizeaza formatul curent setat cu comanda SET DATE E - editeaza data calendaristica in format British (dd/mm/yy) indiferent de setarea facuta cu SET DATE I - centreaza textul ininteriorul campului J - aliniaza la dreapta textul din interiorul campului K - selecteaza un camp intreg pentru editare atunci cand ursorul se pozitioneaza pe acel camp M<lista> - creaza mai multe posibilitati de alegere prestabilie afisate intr-o lista. (lista este o colectie de elemente separate prin virgula).Daca variabilele memoriei sau campului relucrate de @…GET nu contin nici unul din elementele listei, atunci afiseaza primul element al listei. Deplasarea in lista se face cu bara de spatiu sau tastand prima listera a unui element din lista. Alegerea unui element se face cu enter. Se utilizeaza numai cu date de tip caracter S<n> - limiteaza latimea de afisare a zoeni de editare la n caractere. Daca datele sunt mai lungi, dimensiunea zonei de editare se poate vizualiza cu sageti stanga-dreapta T - anuleaza spatiile din variabila sau campul prelucrat cu comanda @…GET Z- afiseaza variabila de memorie sau campul din BD prelucrat cu @…GET care au valoae nula ca spatiu ! - transforma toate literele in majuscule(se foloseste numai pentru date de tip caracter) PICTURE<expC2> - modifica formatul datelor prelucrate in functie de valoarea <expC2>. Se refera doar la un anumit caracter din formatul de afisare. Expresiile tip caracter pot lua urmatoarele valori; A - permite numai introduceea carcacterelor alfabetice (fara spatii si simboluri) L - permite numai introducerea datelor e tip logic N - permite numai introducerea literelor si cifrelor X - permite introducerea oricarui tip de caracter Y - permite numai introducerea caracterelor Y,y,N,n (de la yes si no) 9 - permit numai introducerea cifrelor in datele de tip caracter. Permite numai introducerea cifrelor cu semn in datele de tip numeric # - permite introducerea cifrelor, spatiilor, si a se mnelor + si - ! - converteste toate literele in majuscule - speifica pozitia punctului zecimal - separa cifrele de la stanga punctului zecimal DEFAULT<expr1> - daca o variabila de memorie specificata in comanda @…GET nu exista, ea este creata si initializata automat <expr1> - detemina tipul de valoare a variabiliei create ENABLE|DISABLE - conroleaza accesul al zona de editare; valoarea implicita este Enable; Disable implica accesul in zona de editare MESSAGE<expC3> - afiseaza mesajul continut in <expC3> pe ultima linie a ecranului (linia 24) [OPEN] WINDOW <window name> - indica fereastra in care apare zona de editare; daca exista si clauza Open, fereastra de editare a campului memo este deschisa automat in momentul pozitionarii pe acel camp RANGE[<expr2>[<expr3>]] - specifica domeniul in care trebuie sa se incadreze valorile introduse in zona respectiva. In cazul introducerii unro valori invalide se afiseaza un mesaj de eroare SIZE<expN1>,<expN2> - controleaza inaltimea si lungimea zonei de editare VALID <expL1>|<expN3> [ERROR <expC4>] - permite validarea datelor introduse in regiune de editare. Datele sunt validate in momentul iesirii din regiunea de editare prin evalurea expresiei logice <expL1>. Ca expresie de validare poate apare si o functie creata de utilizator. <expN3> indica numarul campului la care se trece dupa iesirea din zona de editare. <expn3> poate lua urmatoarele valori: 0 - ramane pe campul curent 1- trece la punctul urmator +n - sare inante cu n campuri -n - sare inapoi cu n campuri WHEN<expL2> - se executa inaine de a se acorda accesul la zona de editare. Daca <expL2> are valoarea .F. se trece la urmatoarea zona de editare COLOR SCHEME<expN4> - stabileste culoarea regimului de editare READ [CYCLE] - declanseaza citirea campurilor GET definite in acel moment. Trecerea la urmatorul camp se face cu tastele Enter, Tab si Sageata in jos. Trecerea la campul GET anterior are loc la actionarea tastelor Shift+Tab sau Sageata in sus. Iesierea din comanda se realizeaza fie dua ce a fost citit si ultimul camp GET, fie la apasarea tastei Esc sau CTRL+W. Clauza CYCLE determina continuarea comenzii READ chiar si dupa iesirea din ultimul camp GET, saltul facandu-se la primul camp GET definit. Comanda @…BOX @…TO - permit desenarea unui chenar Sintaxa comenzii: @<l1,c1>,<l2,c2>BOX[<expc>] @<l1,c1>TO<l2,c2>[DOUBLE|PANEL|<border string>] Ex: @ 5,5, 10,10 BOX @2,5, 12,55 BOX '' @2,5 TO 12,55 DOUBLE Comanda @…CLEAR - sterge o zona a ecranului sau a unei ferestre Sintaxa comenzii: @<l1,c1>[CLEAR|CLEAR TO <l2,c2>] Ex: @2,3 - sterge linia 2 de la coloana 3 @2,3 CLEAR - sterge incepand din punctul de coordonate 2,3 pana in coltul din dreapta jos al ecranului @2,3 CLEAR TO 5,7 - sterge de la linia 2, coloana 3 pana la linia 5 coloana7 Comanda @…FILL - schimba culorile intr-o regiune desemnata Sintaxa comenzii @<l1,c1> FILL TO <l2,c2>[COLOR SCHEME<expN>|COLOR<color pair list>] Ex: @ 15,25 FILL TO 20,50 COLOR SCHEME 8 Comanda SHOW GET <var> SHOW GETS -SHOW GET- reafiseaza un obiect GET -SHOW GETS - reafiseaza toate obiectele GETS Ambele comenzi se folosesc in urma modificarii continutului sau caracteristicilo obiectelor GET Ex1: Stergeti tot continutul BD Personal. Verificati daca BD are structura urmatoare: MARCA N 3 SCOALA 1 C 15 SCOALA2 C 15 Ex2: Creati pentru BD Personal un fisier Index cu numele npers dupa campul nume Ex3: Creati pentru BD Scoli un fisier Index cu numele ms dupa campul marca =Program8= *F8 - Program de adaugare a unui nou angajat in BD Personal *Deschid BD Personal indexata dupa nume USE PERSONAL INDEX mpers *adauga articol gol APPEND BLANK CLEAR *Titlu operatie @ 1,10 SAY 'Adaugare angajati' COLOR SCHEME *Detalii @3,5 SAY 'Marca:' GET marca PICTURE '999' @4,5 SAY 'Prenume:' GET prenume PICTURE '! !!!' @5,5 SAY 'Nume:' GET nume PICTURE '! !!!' @6,5 SAY 'Data nasterii:' GET datan FUNCTION 'D' @7,5 SAY 'Data angajarii:' GET dataa FUNCTION 'D' @8,5 SAY'Salar:' GET salar PICTURE '9999999999' RANGE 200000, 900000 @9,5 SAY 'Functie:' GET functie PICTURE 'xxxxxxxxxx' @10,5 SAY 'Copii:' GET copii PICTURE 'L' @2,2 TO 11,75 DOUBLE READ CLEAR CLOSE INDEXES USE FUNCTION FVAng *Functie e valiare a angajarii IF YEAR dataa)>YEAR(datan)+16 RETURN .T. ELSE RETURN .F. ENDIF =Elemente de control Fox Pro= Reprezinta elemente afisate pe ecran prin intermediul carora se pot introduce sau solicita informatii sau se pot alege, contine sau anula executarea anumitor comenzi. Cele mai utilizate elemente de control Fox Pro: CHECK BOXES (comutatoare) [x][ ] RADIO BUTTONS (butoane radio)(.) ( ) POPUPS (meniuri vericale) PUSH BUTTONS (declansatoare) <<OK>> <CANCEL> Elementele de construire se creaza cu variante comenzi @…GET Activarea elementelor de control se face cu READ sau READ CYCLE CHECK BOXES - pe ecran apare un patrat cu un text alaturat gol [ ] sau cu x [x] (este un comutator cu doua pozitii). Acest tip de element de control ofera posibilitatea bascularii intre 2 stari LISTA - lista verticala in interiorul unui dreptunghi care da posibilitatea de a se alege mai multe optiuni. Se foloseste in special pentru afisarea directoarelor si fisierelor atunci cand doresc sa aleg un fisier dintr-o lista POPUPS - dreptunghi care contine setui de optiuni. La selectarea unui Popup, Fox Pro afiseaza o lista de optiuni din care poate alege una singura PUSH BUTTONS - texte descriptive ce pot fi selectate RADIO BUTTONS - ofera posibilitatea selectarii unor optiuni. Doar o singura optiune din lista poate fi seletata la un moment dat. In momentul selectarii unei optiuni toate celelalte vor fi deselectate =Modul de lucru= Crearea elementelor de control setate cu comenzi @…GET. Folosind clauzele PICTURE si FUNCTION se stabileste tipul butonului pe care-l definim. Majoritatea elementelor de control lanseaza o actiune specifica folosind clauza VALID. Activitatea buoanelor se face cu comenzile READ si READ CYCLE HOT KEYS - se pot defini chei rapide pentru Check Boxes, Radio Buttons, Push Buttons, Popups. Ele ofera o cale mai rapida de alegere a unei optiuni. De obicei, se foloseste prima litera a optiunii. Aceasta apare cu o culoare.se definesc cu caracteul < inaintea caracterului dorit
N - nonterminating (nu termina comanda READ sau READ CYCLE) T - terminating (termina comanda READ sau READ CYCLE) H - horizontal V - vertical Ex: Check Box: FUNCTION '*C Nume' PICTURE '@*C Nume' sau PICTURE '@*C' FUNCTION 'Nume' Ex: Popup: …FUNCTION '^Mar; Caisa; Portocala'
Ex: Push Button …FUNCTION '* Urmator; Precedent; OK; Anulare'
Ex:Radio Button …FUNCTION '*R Nimic; Simplu; Dublu' ) Nimic ( ) Simplu ( ) Dublu Empty - testeaza daca e gol campul Functia REPLICATE - in sir prin multiplicarea unui subsir de un numar dat de ori. Ex: REPLICATE ('!',15) CLEAR READ - iese din comanda READ activa Comanda SHOW GETS - reafiseaza obiectele sau elementele de control eclarate cu comenzi @…GET SELECT <expN>|<expC> <expN> - poate lua valori de la 1-25 <expC> - poate fi o litera de la A-J sau de al W1-W25 Comanda SELECT - permite deschderea mai multor zone de lucru; fiecare BD este deschisa intr-o zona de lucru. Practic, zona de lucru reprezinta o zona de memorie in care este un fisier activ. <expC> poate fi si numele BD descisa in zona respectiva Comanda SET RELATION - stabileste o relatie intre doua BD deschise in zone de lucru diferite. BD parinte trebuie deschisa in zona curenta de lucru, iar BD cu care se stabileste relatia trebuie sa fie deschisa intr-o alta zona (cu SELECT). Cele doua BD trebuie sa aiba un camp identic, iar BD cu care se stabileste relaia trebuie sa fie indexata dupa acel camp. Dupa ce relatia este definita cu SET RELATION, schimbarea pozitiei in BD parinte determina pozitionarea in a doua B pe articolul corespunzator. Daca nu se gaseste nici un articol corespunzator, ozitionarea in a doua BD se face cu EOF Sintaxa comenzii: SET RELATION TO [<expr1> INTO<expN1>|<exprC1> [,<expr2> INTO<expN2>|<expC2>… Ex: SET RELATION TO marca INTO scoli =Ferestre (Windows)= Interfata Fox Pro consta din meniuri, ferestre, dialoguri si alte facilitati menite sa usureze comunicatia dintre Fox Pro si utilizator. Fereastra este o zona strict delimitata de ecran in care se afiseaza informati. Pe ecran pot aparea mai multe ferestre simultan, dar numai una e fereastra curenta. Ferestrele pot fi de doua feluri: definite de utilizator sau ferestre ale sisemului (ferestre de comenzi, debug…) Operatii pentru lucrul cu feestre definite de utilzator: A.Definirea DEFINE WINDOWS <nume fisier> 1. Stablire limite afisare(colt stanga sus - dreapta jos: FROM <line1, col1> TO <line2, col2> 2. Fereastra utilizator se poate defini in alta fereatra specificata [IN [WINDOW] <nume fisier2> | IN SCREEN] 3. Titlul ferestrei apare pe marginea de sus a ferestrei: [TITLE <expC1>] 4. Definirea tipului margnii ferestrei [DOUBLE | PANEL | NONE | SYSTEM | <lista chenar>] 5. Permite sau nu inchiderea ferestrei din aplicvatie[CLOSE |NOCLOSE] 6. Permite sau nu schimbarea dimensiunii ferestrei din aplicatie [GROW | NOGROW] 7. Umbrirea ferestrei [SHADOW] 8. [COLOR SCHEME<expN1>] B. Activarea ferestrei 1. ACTIVATE WINDOW [<nume fereatrs 1> [,<nume ferestra2>…] | ACTIVATE WINDOW ALL [IN [WINDOW <nume fereastra3> | SCREEN] 2. SHOW WINDOW <nume fereastra 1>|,<nume fereastra2>] - afiseaza fereastra fara a o activa C. Dezactivarea ferestrei 1. DEACTIVATE WINDOW <nume fereastra1> [,<nume fereastra2>] | ALL 2. HIDE WINDOW <nume ferestra1> [,<nume fereastra2>] - ascunde fereastrele fara a le dezactiva D. Stergerea din memorie e ferestrei (se sterge si definitia ferestrei) 1. CLEAR WINDOW - sterge toate ferestrele 2. RELEASE WINDOWS - sterge ferestrele menionate <lista ferestre> =Meniul= Contine de obicei o linie (bara orzontala) numita bara de meniu cu Popup-uri (meniuri verticale) corespunzatoare fiecarei etichete (Pad) din bara de meniu Operatii pentru utilizarea unui meniu: A. Definirea barei de meniu DEFINE MENU <nume meniu> 1. Creaza o bara de meniu similara cu bara sistem Fox Pro. Se poate simplifica linia pe care va apare bara de meniu [BAR [AT LINE <expN1>] 2. Se poate specifica o anumita fereastra in care sa apara bara de meniu implicit in bara principala Fox Pro [IN [WINDOW] <nume fereastra> | IN SCREEN] 3. Stabileste un mesaj care se afiseaza ori de cate ori e selectat un Pad. Apare pe ultima linie a ferestrei (linia 24) [MESSAGE <expC1>] 4. Implicit, se plaseaza un spatiu la stanga si la dreapta fiecarui ad al meniului. Clauza anuleaza aceste spatii [NOMARGIN] 5. [COLOR SCHEME <expN2>] B. Definirea etichetelor meniului 1. Specifica textul care apae pe bara de meniu corespunzator eticheei; se pune <inaintea caracterului care va desemna tasta directa DEFINE PAD <nume pad> OF <nume meniu> PROMPT <expC1> 2. Unde se plaseaza eticheta, relaiv la coltul stanga sus al meniului (implicit pe linia 0) [AT <linie, coloana>] 3. Specifica locul in care sa apara eticheta fata de alta eticheta; implicit etichetele se afiseaza in ordinea definirii lor [BEFORE <nume pad> | AFTER <nume pad> 4. O eticheta poate fi de zactivata in anumite conditii (daca se indeplineste o conditie logica) [SKIP [FOR <expL>]] 5. Efineste mesajul care apare la selectarea padului [MESSAGE <expC2>] 6. [COLOR SCHEME <expN>] <nume pad> - numele etichetei <nume meniu> - nume meniu din care face parte eticheta C. Definirea actiunii care se executa la selectarea etichetei 1. Specifica un anumit meniu vertical (opup) sau meniu( menu) care se executa la selectarea etichetei (pad) ON PAD <nume pad> OF <nume meniu> {ACTIVATE POPUP<nume popup>|ACTIVATE MENU <nume meniu>] 2. Se executa comanda se selectarea padului ON SELECTION PAD <nume pad> OF <nume meniu> [<comanda>] D. Activare sau lansare in meniu ACTIVATE MENU <nume meniu>. La activarea meniului se selecteaza implicit primul pad E. Dezactivare meniu DEACTIVATE MENU <nume meniu1>, <nume meniu2>,… =Meniul vertical (Popup)= Meniul vertical contine o lista de optiuni selectabile (Bar) Operatii pentru utiliarea unui Popup: A. Definire popup: DEFINE POPUP <nume popup> [FROM <lin1, col1>] [TO<lin2, col2>] [IN [WINDOW]<nume fereastra>| IN SCREEN] [MESSAGE <expC1>] [PROMPT FIELD <expr>| PROMPT FILES [LIKE <macheta>] | PROMPT STRUCTURE] [TITLE <expC2>][SHADOW] [COLOR SCHEME <expN>] Clauza PROMPT FIELD - specifica un nume de camp dintr-o BD deschisa ale carui valori sunt afisate in Popup Clauza PROMPT FILES - se creaza un popup care afiseaza fisierele care se conformeaza machetei. Ex: *.txt Clauza PROMPT STRUCTURE - afiseaza in popup numele campurilor BD curente B. Definirea optiunii (Bare) DEFINE BAR <expN1> OF <nume popup> 1. Defineste textul care se afiseaza e bar-ul respectiv PROMPT <expC1> 2. Specifica o cheie directa pentru apelul optiunii [KEY <eticheta cheie>] 3. [MESSAGE <expC2> 4. Permite dezactivarea unui bar pentru o anumita conditie logica [SKIP [FOR <expL1>]] 5. [BEFORE <expN2>|Aafter <expN3>] 6. [COLOR SCHEME <expN4>] C. Definire actiune pentru fiecare bara 1. ON BAR <expN> OF <nume popup1> [ACTIVATE POPUP<nume popup2> | ACTIVATE MENU <nume meniu>] 2. ON SELECETION BAR <expN> OF <nume popup> [<comana>] D. Definire actiune la nivel de popup ON SELECTION POPUP <nume popup>|ALL [<comanda>] ALL - la selectarea oricarei optiuni din popup se executa comanda E. Activare popup ACTIVATE POPUP <nume popup> [AT<linie, coloana>] [BAR<expN>] AT - popup-ul apare in pozitia indicata BAR - la aparitia popup-ului este selectat implicit barul mentionat F. Dezactivare popup DEACTIVATE POPUP <nume popup-uri> G. Stergere popup din memorie RELEASE POPUP <lista popup-uri> Popup-ul trebuie dezactivat inainte de a fi stes din memorie. RELEASE MENUS[<lisa meniuri>] - necesita dezactivarea in prealabil a meniurilor de sters Functia BAR returneaza numarul ultimei optiuni selectate intr-un popup definit cu DEFINE POPUP. Dupa executarea comenzii DEACTIVATE MENU se excuta comanda mediat urmatoare celei dezactivate (aici este vorba de RELEASE MENU) =Rapoarte de listare= Pentru extragerea datelor se folosesc rapoarte. Generatorul de raoarte (Report Writer) este o unealta puternica pentru generarea formelor de listare, acesta creaza un fisier .FRX si un fisier memo asociat .FRT. un raport se poate realiza pornind de la una sau mai multe BD deschise. A. Crearea raportului: CREATE REPORT <nume fisier> B. Modificarea raportului: MODIFY REPORT <nume fisier> C. Apelarea raportului: RECORD FORM <nume fisier> [PREVIEW] [NOCONSOLE] [TO PTINTER | TO FLE<fisier>] Clauza PREVIEW permite afisarea raportului pe ecran Clauza NOCONSOLE interzice afisarea raportului pe ecran atunci cand este tiparit sau listat inr-un fisier. Clauza TO PRINTER|TO FILE listeaza raportul la imprimanta sau in fisier Ex: create report listang Title: lista angajatilor PgHead: Marca Nume Prenume Functie Salar Studii - dupa fiecare cuvant se da Enter PgFoot: date ( )
|