baze de date in visual foxpro

Upload: benga-alexandru-cristian

Post on 15-Oct-2015

9 views

Category:

Documents


0 download

DESCRIPTION

Pentru a invata fox pro

TRANSCRIPT

  • Baze de date n Visual FoxPro 1

    Baze de date n Visual FoxPro

    1. Tabele de date

    FoxPro este un mediu de dezvoltare integrat, care, pe lng

    instrumentele de programare, ofer i un sistem de tabele de date

    relaionale care simplific procesele de gestionare i organizare

    eficient a datelor. Datele sunt organizate tabelar, pe linii (records,

    articole nregistrri) i coloane (fields, cmpuri), mai multe tabele,

    ntre care exist legturi, alctuind o baz de date relaional.

    1.1. Crearea unui tabel de date definirea structurii

    Crearea unui tabel de date implic specificarea numelui

    tabelului (fiier cu extensia implicit DBF) i este iniiat prin

    comanda

    CREATE []

    sau prin alegerea opiunii File, New (n acest caz n caseta New se

    selecteaz Table i New file). Ca urmare pe ecran este deschis

    fereastra constructorului de tabele, n care vor fi precizate

    caracteristicile noului tabel (nume, tip, lungime, etc.) i a indecilor

    folosii la ordonarea datelor din list.

    Fiecare cmp (field, coloan) al unui tabel este caracterizat prin:

    nume (Name); tip (Type) - ir de caractere, numeric, dat calendaristic sau

    moment de timp, logic, memo;

  • 2 Baze de date n Visual FoxPro

    lime (Width) - numrul de caractere pe care l ocup fiecare dat memorat n acel cmp;

    numrul de zecimale (Decimal) - pentru datele de tip numeric;

    fanionul de indexare (Index) - indic dac se stabilete un index pe cmpul respectiv (indecii reprezint o tehnologie cu

    ajutorul creia datele din tabele sunt vzute ntr-o anumit

    ordine, dat de un anumit criteriu numit criteriu de indexare);

    fanionul de valoare nul (NULL) - arat dac n cmpul respectiv poate fi memorat o valoare nul, pentru a se face

    diferenierea ntre un cmp lsat necompletat i unul completat

    cu valoarea 0.

    1.2. Deschiderea (activarea) tabelelor de date

    Pentru iniierea unei sesiuni de lucru cu un tabel de date, acesta

    trebuie s fie activat (deschis). Deschiderea unui tabel de date se poate

    realiza prin meniu (File, Open, Files of type: Table (*.dbf)) sau prin

    comanda USE:

    USE [] [IN ] [TAG ] [ASCENDING DESCENDING] [ALIAS ] [EXCLUSIVE] [NOUPDATE]

  • Baze de date n Visual FoxPro 3

    o - numele tabelului de date care va fi deschis

    (extensia implicit DBF);

    o IN - permite deschiderea unui tabel de date ntr-o alt zon de lucru dect cea curent;

    o TAG - face precizarea unei variante de indexare; o ASCENDING DESCENDING - precizeaz tipul ordonrii

    (implicit ascendent) atunci cnd se folosete indexarea;

    o ALIAS - stabilete un nou alias; o EXCLUSIVE - asigur exclusivitatea folosirii unui tabel de date

    atunci cnd se lucreaz ntr-o reea de calcul;

    o NOUPDATE - protejeaz tabelul de date la scriere (este deschis doar pentru consultare).

    Observaii Derularea unei sesiuni de lucru n FoxPro se realizeaz n

    directorul de lucru implicit. Acest director poate fi schimbat

    prin comanda:

    SET DEFAULT TO unde path definete noul director. Lista tabelelor de date aflate n directorul de lucru poate fi

    obinut prin lansarea comenzii:

    DIR Se poate limita, temporar, accesul la nregistrrile tabelului de

    date prin folosirea comenzii:

    SET FILTER TO

  • 4 Baze de date n Visual FoxPro

    Zone de lucru

    Pentru manipularea simultan a mai multor tabele de date,

    FoxPro folosete zone speciale de memorie numite zone de lucru, n

    care depune informaiile necesare efecturii operaiilor cu tabelele de

    date respective.

    Pentru identificarea unei zone de lucru se folosesc alias-uri

    (literele A, B, C sau cifrele 1, 2, 3, ) care permit identificarea

    tabelelor de date i altfel dect prin numele lor. n afar de aceste

    alias-uri utilizatorul poate defini i propriile sale alias-uri.

    Observaii La pornirea FoxPro-ului zona de lucru implicit va fi zona 1 (cu

    alias 1 sau A). Aceasta se poate schimba prin comanda :

    SELECT

    Comanda este urmat de o cifr, liter sau de un alias definit

    de utilizator. Dac alias-ul este 0 se va selecta prima zon de

    lucru neselectat.

    Pentru a obine informaii despre zonele de lucru folosite i tabelele de date deschise se pot folosi dou funcii:

    USED([]) i DBF([]) Funcia USED returneaz .T. sau .F. dac, n zona de lucru

    curent sau precizat prin alias, este sau nu prelucrat un tabel de

    date. Funcia DBF returneaz numele tabelului de date deschis n

    zona de lucru.

  • Baze de date n Visual FoxPro 5

    Exemple:

    use personal in 1 use nomenclator in B alias nomen select nomen ?dbf() C:\PROGRAM FILES\DEVSTUDIO\VFP\JOB\NOMENCLATOR.DBF ?used(1) .T.

    1.3. Modificarea structurii unui tabel de date

    Modificarea caracteristicilor unui tabel de date poate fi fcut prin

    comanda:

    MODIFY STRUCTURE

    Aceast comand permite modificarea structurii tabelului de date

    activ prin deschiderea unei ferestre de dialog, aceeai ca la crearea

    tabelului de date. Modificrile care pot fi aduse structurii unui tabel de

    date sunt :

    schimbarea numelor, tipurilor i limii cmpurilor deja existente;

    tergeri, inserri de cmpuri, prin plasarea cursorului pe zona de modificare (prima coloan din fereastra de dialog) i

    acionarea butoanelor Delete i Insert.

    Dup efectuarea modificrilor, FoxPro copiaz coninutul tabelului

    de date vechi n tabelul de date nou, cu efectuarea schimbrilor

    respective.

    Caracteristicile unui tabel de date (structura) pot fi vizualizate

    prin comanda:

    DISPLAY STRUCTURE

  • 6 Baze de date n Visual FoxPro

    1.4. nchiderea prelucrrii tabelelor de date

    Finalizarea operaiei de prelucrare a tabelelor se poate face prin

    comenzile:

    USE sau CLOSE ALL Prima comanda nchide prelucrarea tabelului de date din zona

    de lucru curent iar a doua nchide i elibereaz toate zonele de lucru

    (n acest caz zona curent devine zona de lucru 1).

    1.5. Editarea coninutului unui tabel de date

    Prelucrarea nregistrrilor. nregistrarea curent.

    Un grup de nregistrri (domeniu) poate fi:

    All semnific toate nregistrrile tabelei; Next urmtoarele nregistrri; Record - nregistrarea cu numrul de ordine specificat; Rest restul nregistrrilor din poziia curent pn la sfritul

    tabelului.

    Prelucrarea tabelelor de date se realizeaz la nivel de nregistrare. La un moment dat este activ un singur tabel de date i o singur nregistrare din acest tabel. Fiecare nregistrare are un numr de ordine, asociat acesteia la introducerea ei n tabelul de date. Numrul de ordine al nregistrrii curente poate fi modificat prin comenzile:

    GOTO TOP | BOTTOM | RECORD

    (salt la prima, ultima sau nregistrarea precizat din tabel);

  • Baze de date n Visual FoxPro 7

    SKIP []

    (salt nainte sau napoi cu un numr de nregistrri);

    LOCATE [] [FOR ] [WHILE ]

    (cut prima nregistrare care respect condiia ,

    domeniul nregistrrilor fiind dat de clauzele i

    WHILE).

    Poziia curent n tabelul de date poate fi stabilit cu ajutorul

    funciilor:

    EOF() returneaz .T. sau .F. dup cum este detectat sau nu marcajul de sfrit de fiier (aflat dup ultima nregistrare);

    BOF() returneaz .T. sau .F. pentru nceput de fiier; RECNO() furnizeaz numrul de ordine al nregistrrii

    curente.

    Exemple:

    use personal ?recno() 1 goto record 7 ?recno() 7 goto top ?recno() 1 skip 1 ?bof() .T. skip 3 ?recno() 3 go bottom skip ?eof() .T. locate for nume=ALEX

  • 8 Baze de date n Visual FoxPro

    Introducerea nregistrrilor noi ntr-un tabel de date

    Numrul de nregistrri dintr-o baz de date, furnizat de funcia

    RECCOUNT(), poate fi modificat, prin introducerea unor nregistrri

    vide (adugri, inserri):

    APPEND BLANK sau INSERT BLANK [BEFORE]

    Inserarea se execut implicit dup nregistrarea curent, dac nu

    se folosete opiunea BEFORE, iar urmtoarele nregistrri sunt

    translatate spre sfritul tabelului de date i renumerotate.

    tergerea nregistrrilor dintr-un tabel

    Eliminarea unor nregistrri din tabelele de date se efectueaz la

    nivel logic sau fizic prin utilizarea comenzilor DELETE, RECALL, PACK,

    ZAP.

    a) tergerea logic (marcare pentru tergere). Prin marcarea

    pentru tergere nregistrrile din tabelele de date nu sunt

    eliminate definitiv. Pentru tergerea logic este utilizat

    comanda:

    DELETE [] [FOR ] [WHILE ]

    Aceast comand (precum i altele) folosete clauza FOR pentru

    selectarea tuturor nregistrrilor care corespund condiiei logice

    . Clauza WHILE ntrerupe testarea nregistrrilor cnd

    gsete o nregistrare ce nu respect condiia dat, .

    Accesul la nregistrrile marcate pentru tergere este controlat de comanda:

    SET DELETED ON OFF

  • Baze de date n Visual FoxPro 9

    Cnd se alege opiunea ON, nregistrrile marcate pentru

    tergere nu vor fi accesibile celorlalte comenzi, iar cnd se

    selecteaz opiunea OFF, nregistrrile sunt accesibile indiferent

    de marcajul de tergere (starea implicit este OFF). Aceast

    comand este util atunci cnd se lucreaz pe grupuri de

    nregistrri.

    b) Demarcarea tergerii logice. Marcajele de tergere logic pot

    fi anulate prin folosirea comenzii:

    RECALL [] [FOR ] [WHILE ]

    c) tergerea fizic. Prin folosirea acestui tip de tergere nregistrrile sunt eliminate definitiv din tabelul de date (tergerile fizice nu mai pot fi refcute). tergerile fizice au efect asupra nregistrrilor marcate logic sau asupra tuturor nregistrrilor din tabelul de date prelucrat prin utilizarea uneia din comenzile:

    PACK sau ZAP

    Modificarea coninutului nregistrrilor Modificarea coninutului nregistrrilor dintr-un tabel de date

    presupune nlocuirea valorilor din unul sau mai multe cmpuri cu altele

    noi. Comanda REPLACE permite actualizarea tabelelor de date cu valori

    precizate n comand i are urmtoarea sintax:

    REPLACE WITH [, WITH ...] [] [FOR ] [WHILE ] REPLACE nlocuiete vechea valoare din cmpul cu

    valoarea expresiei , valoarea din cmpul cu

    i aa mai departe.

  • 10 Baze de date n Visual FoxPro

    Exemple:

    use personal ?reccount() 25 append blank ?reccount() 26 goto 7 insert blank before ?recno() 7 dele next 3 skip -1 recall pack ?reccount() 24 replace for nume=ALEX nume with ALEXANDRU

    Fereastra BROWSE Principala comand, pentru realizarea diferitelor operaiuni

    asupra tabelelor de date, prin deschiderea unei ferestre de lucru, este

    comanda BROWSE care poate fi editat n urmtoarea sintax:

    BROWSE [FIELDS ] [FOR ]

    [FREEZE ] [NOAPPEND] [NODELETE] [NOEDIT NOMODIFY]

    o FIELDS - permite ca numai cmpurile precizate s intre n editare (selecie pe vertical);

    o FOR precizeaz condiiile conform crora nregistrrilor vor fi afiate n fereastra BROWSE;

    o FREEZE - permite modificri doar pe cmpul precizat; o NOAPPEND invalideaz posibilitatea efecturii adugrilor; o NODELETE elimin marcarile pentru tergere; o NOEDIT NOMODIFY - interzice modificrile.

  • Baze de date n Visual FoxPro 11

    Ca efect al lansrii comenzii BROWSE, n meniul principal, apare

    o nou opiune, Table, care permite:

    adugarea unei noi nregistrri la un tabel de date: Append New Record (Ctrl+Y);

    stabilirea nregistrrii curente: Go to Record; precizarea unor criterii de poziionare, Locate, la fel ca prin

    folosirea comenzii cu acelai nume:

    Domeniul

    Clauza FOR

    Clauza WHILE

  • 12 Baze de date n Visual FoxPro

    tergerea datelor din tabele: o marcare (demarcare) pentru tergere: Toggle Deletion

    Mark (Ctrl+T) sau clic cu mouse-ul pe fanionul de

    tergere din dreptul nregistrrii:

    o tergere fizic: Remove Deleted Records; o tergeri conform sintaxei comenzilor DELETE i RECALL:

    Delete Records, Recall Records;

    modificri ale valorilor nscrise n cmpurile tabelelor conform sintaxei comenzii REPLACE: Replace Field.

    Cmpuri MEMO Cmpurile MEMO definesc cmpuri de lungime variabil de tip text. Un tabel de date, cu cel puin un cmp MEMO, are asociat un fiier suplimentar n care sunt depuse informaiile legate de acest cmp. Pentru a putea identifica datele din fiierul MEMO asociat, care

    Fanionul de tergere

    Tabelul de date

    Fiierul MEMO asociat

  • Baze de date n Visual FoxPro 13

    aparin unei anumite nregistrri, n tabelul de date, pe poziia corespunztoare a nregistrrii, se memoreaz o adres spre fiierul MEMO (poziia primului caracter al cmpului respectiv).

    Modificarea cmpurilor MEMO se poate face n fereastra Browse sau prin comenzi specifice: MODIFY MEMO [,,....] - se deschide cte o fereastr de editare pentru fiecare cmp

    memo; CLOSE MEMO [,,....] ALL

    - se vor nchide ferestrele de editare corespunztoare cmpurilor memo specificate n list (sau toate - ALL);

    APPEND MEMO FROM [OVERWRITE]

    - coninutul unui fiier extern, de tip text, va fi adugat la sfritul cmpului memo precizat (dac se folosete clauza OVERWRITE vechiul coninut al cmpului se pierde);

    COPY MEMO TO [ADDITIVE]

    -coninutul unui cmp memo se copiaz ntr-un fiier extern de tip text. Dac se folosete clauza ADDITIVE copierea se va face la sfritul unui fiier deja existent.

    1.6. Ordonarea i actualizarea tabelelor de date

    nregistrrile apar, n tabelul de date, n ordinea n care au fost introduse, dar nu ntotdeauna aceasta este i ordinea lor de utilizare. Ordonarea unui tabel presupune stabilirea unui criteriu dup care s fie parcurse nregistrrile acestuia. Acest criteriu poate fi un cmp sau o combinaie de cmpuri ale tabelului de date numit cheie de ordonare.

  • 14 Baze de date n Visual FoxPro

    O cheie de ordonare este o expresie, alctuit din cmpuri ale tabelului, care este evaluat pentru fiecare nregistrare, ordinea de prelucrare a nregistrrilor fiind dat de valorile acestei expresii. Se folosesc dou metode de ordonare a bazelor de date: fizic i logic.

    Ordonarea fizic (sortarea) Sortarea const n rearanjarea fizic a datelor din tabel ntr-o alt ordine, dat de criteriul de sortare. Astfel rezult un tabel de date nou cu aceleai informaii ca i cel original, dar ordinea fizic (natural) a nregistrrilor este schimbat.

    SORT TO ON [/A /D] [/C] [, [/A /D] [/C] ...]

    [ASCENDING DESCENDING] [] [FOR ] [WHILE ] [FIELDS ]

    o - numele tabelului de date nou creat; o ,,.... - lista cheilor de sortare; o /A , /D - sortare ascendent, descendent, relativ la cmpul

    asociat; o /C - sortare n ordine alfabetic, necontnd literele mari sau mici; o ASCENDING DESCENDING - ordonare ascendent sau descendent

    cu specificarea ordinii pentru toate cmpurile; o FIELDS - selecie pe vertical (filtrare).

    Ordonarea logic (indexarea)

    Indexarea este o metod mult mai eficient de ordonare a tabelelor de date, care permite ca operaiile de consultare i cutare a datelor n tabel s fie rapide. Prin indexare se creeaz un fiier index, asociat bazei de date, de dimensiuni mult mai mici dect dimensiunea bazei de date. Fr a detalia structura fiierului index, trebuie menionat c fiierul index este o list simplu nlnuit a numerelor articolelor din baza de date aflate n ordinea lor natural.

  • Baze de date n Visual FoxPro 15

    La definirea structurii bazei de date (prin CREATE sau MODIFY STRUCTURE), n coloana Index, se pot defini unul sau mai multe criterii de indexare care sunt identificate prin etichete (numele unei etichete este acelai, n acest caz, cu numele cmpului). Activarea unuia sau altuia din criteriile de indexare se realizeaz n dou moduri:

    a) la deschiderea tabelului de date: USE ORDER b) n timpul lucrului prin comanda: SET ORDER TO TAG

    Stabilirea altor criterii de indexare, diferite de cele definite n structura tabelului de date, se poate face prin comanda: INDEX ON TAG [FOR ] [ASCENDING DESCENDING] [UNIQUE]

    o TAG - identific un criteriu de indexare; o UNIQUE - clauz care nu admite dubluri pe cmpul de

    indexare tergerea unei etichete (criteriu) de indexare se realizeaz utiliznd comanda: DELETE TAG ALL Principalul avantaj al indexrii rezult din posibilitatea localizrii rapide a unor nregistrri, mult mai eficient dect cea furnizat prin LOCATE. Acest lucru este realizat prin comanda: SEEK

  • 16 Baze de date n Visual FoxPro

    Comanda SEEK caut prima nregistrare pentru care valoarea expresiei calculate cu valori din cmpurile acesteia este egal cu , pe criteriul de indexare selectat.

    Observaii la un moment dat poate fi activ un singur criteriu de indexare,

    numele etichetei corespunztoare fiind furnizat de funcia TAG();

    efectul unei comenzi de cutare (SEEK sau LOCATE) poate fi prelungit prin folosirea comenzii CONTINUE;

    funcia FOUND() determin (.T. sau .F.) dac s-a reuit sau nu localizarea. Comanda:

    SET EXACT ON OFF

    stabilete modalitatea de cutarea pe subiruri de caractere. Clauza implicit este OFF.

    Dac este un ir de caractere, acesta trebuie pus ntre apostrofuri.

    1.7. Introducerea formatat a datelor FoxPro ofer posibilitatea introducerii datelor sub forma unor machete sau formate prin asocierea la clauza GET a clauzelor PICTURE i FUNCTION: @ [GET] [PICTURE ] [FUNCTION ] [READ]

    @ plaseaz cursorul pe poziia specificat a ecranului. GET stabilete poriunea de pe ecran unde vor fi introduse

    valorile ce vor fi atribuite variabilei .

  • Baze de date n Visual FoxPro 17

    PICTURE i FUNCTION permit formatarea afirii datelor. Ambele clauze sunt urmate de un ir de caractere care conine coduri referitoare la modul de afiare.

    Codurile PICTURE se refer doar la un anumit caracter din formatul de afiare i anume la cel de pe aceeai poziie cu cea a codului.

    Codurile FUNCTION acioneaz asupra tuturor caracterelor din formatul de afiare.

    Clauzele PICTURE i FUNCTION pot aciona mpreun, dar FUNCTION este prioritar.

    READ determin citirea coninutelor zonelor de editare pentru introducerea valorilor de la tastatur, create prin GET.

    Codurile de formatare PICTURE

    X Permite orice caracter 9 Cifre i semnele + - . E (date numerice) # Cifre, spatii i semnele + - . E A Numai litere W Numai date logice N Numai litere i cifre Y Permite doar caracterele logice Y, y, N i n ! Literele sunt convertite n majuscule

    * Afieaz asterix-uri n locul zerourilor iniiale . Specific poziia punctului zecimal.

    Codurile de formatare FUNCTION

    A Permit numai caractere alfabetice (litere) B Aliniere la stnga I Centrare J Aliniere la dreapta C Dup un numr pozitiv se afieaz CR (credit) D Format dat calendaristic stabilit de SET DATE E Format dat calendaristic european (britanic) T Elimin spatiile de nceput i sfrit X Dup un numr negativ se afieaz DB (debit) Z Afieaz spatii dac valoarea cmpului este 0 ( Numerele negative sunt incluse ntre paranteze ! Literele sunt convertite n majuscule.

  • 18 Baze de date n Visual FoxPro

    Exemple: * citirea unui numr cu dou zecimale pe cmp de 7 caractere: a=0 @10,10 GET a PICTURE '9999.99' READ * citirea oricror caractere pe cmp de lungime 10: b=space(10) @10,10 GET b PICTURE REPLICATE ('X',10) READ * introducere cu majuscule: b=space(10) @10,10 GET b PICTURE REPLICATE ('!',10) READ * introducerea unei majuscule i a dou cifre cu centrare: .....PICTURE 'A99' FUNCTION 'I!' * urmtoarele machete de editare sunt echivalente: ..... PICTURE 'AAAAA' FUNCTION '!' ..... PICTURE 'XXXXX' FUNCTION 'A!'

    1.8. Actualizarea tabelelor de date Actualizarea tabelelor de date nseamn modificarea structurii tabelelor de date (vezi comanda MODIFY STRUCTURE) sau modificarea coninutului acestora. n ceea ce privete modificarea coninutului unui tabel de date se au n vedere posibilitile de tergere sau adugare a unor nregistrri precum i modificarea coninutului celor existente (vezi comenzile DELETE, PACK, RECALL, REPLACE). Pentru editarea de la tastatur a tabelelor de date se poate utiliza comanda BROWSE sau se pot alctui secvene program.

    Exemplu. Fie fiierul Agenda.dbf, avnd structura: Nume Caracter 30 Data_N Date 8 Telefon Caracter 10

  • Baze de date n Visual FoxPro 19

    Pentru introducerea, de la tastatur, a unor date n acest fiier se poate concepe urmtoarea procedur:

    procedure introducere clear @10,10 say 'Numele' get nume function '!' @12,10 say 'Data nasterii' get data_n @14,10 say 'Telefonul' get telefon read endproc

    Folosind aceast procedur se poate edita urmtoarea secven pentru consultarea i actualizarea fiierului Agenda.dbf:

    clear use agenda TEXT Alegeti optiunea: 1. Afisare 2. Adaugare 3. Modificare 0. Terminare ENDTEXT opt=0 @10,20 say 'Optiunea:' get opt picture '9' range 0,3 read clear do case case opt=1 do afisare case opt=2 do adaugare case opt=3 do modificare case opt=0 cancel endcase cancel procedure afisare browse endproc procedure adaugare append blank

  • 20 Baze de date n Visual FoxPro

    do introducere endproc procedure modificare numele = space(30) @10,0 say 'Numele cautat' get numele function '!' read locate for nume=numele if found() do introducere else WAIT 'Nume negasit!' endif endproc

    Observaii o Pentru afiarea meniului de opiuni s-a utilizat instruciunea

    TEXT ENDTEXT o Pentru afiarea mesajului de eroare Nume negasit! s-a

    utilizat instruciunea WAIT.

    1.9. Ciclul SCAN Ciclul SCAN este un ciclu cu numr finit de pai, specializat n lucrul cu tabele de date. Aceast structur repetitiv realizeaz parcurgerea tabelului i executarea unui grup de instruciuni pentru fiecare nregistrare care ndeplinete condiiile specificate. Ciclul este utilizat, deseori, pentru actualizarea coninutului tabelelor de date, conform unor anumite condiii, sau pentru obinerea informaiilor statistice. Sintaxa este: SCAN [] [FOR ] [WHILE ] [] [LOOP] [EXIT] ENDSCAN

  • Baze de date n Visual FoxPro 21

    1.10. Extragerea unor informaii statistice

    Comenzile care permit extragerea unor informaii din tabelele de date se aplic asupra unor cmpuri sau asupra unor expresii care conin numele unor cmpuri.

    COUNT [TO ] [FOR ] [] [WHILE ]

    - numr nregistrrile din tabelul de date, numrul de nregistrri putnd fi memorat ntr-o variabil de lucru;

    SUM [TO] [FOR ] [] [WHILE ]

    - nsumeaz valorile expresiilor din lista de expresii() i le atribuie, eventual, unei liste de variabile ();

    AVERAGE [TO ]

    [FOR ] [] [WHILE cond>]

    - la fel ca SUM avnd ca rezultat media aritmetic.

    CALCULATE [TO] [FOR ] [] [WHILE ]

    - calculeaz anumite expresii folosind urmtoarele funcii ():

    SUM() - suma; AVG() media aritmetic; STD() deviaia standard; VAR() abaterea medie ptratic; MAX() val maxim, nu neaprat numeric; MIN() val minim, nu neaprat numeric; NPV(,)[,])

    valoarea prezent net a unei investiii (vezi funcia de calcul financiar);

    CNT() numrul de nregistrri din tabelul de date.

  • 22 Baze de date n Visual FoxPro

    Aplicaii

    10 Se creaz tabelul (fiierul) de date Personal.dbf avnd

    structura:

    Cmp Semnificaie Tip de dat nume Numele angajatului ir de caractere marca Cod numeric angajat ir de caractere functia Funcia angajatului ir de caractere salariu Salariul brut Numeric datanast Data naterii Dat calendaristic sex Sex Logic adresa Adresa angajatului Memo

    20 Se introduc n tabel urmtoarele nregistrri:

    ) - n cmpul sex se nscriu valorile .T. (masculin) i .F. (feminin) - valorile din cmpul adresa (text de lungime variabil) nu pot fi nscrise

    direct n tabel, dar sunt stocate ntr-un fiier asociat tabelului de date

    numit fiier memo. Trimiterea spre acest fiier se poate face printr-un

    dublu clic, cu mouse-ul pe cmpul memo corespunztor 30 Informaii privind:

    fiierele tabel de date prezente pe disc, n directorul de lucru: dir

    numrul de nregistrri ale tabelului de date i numrul de ordine al nregistrrii curente:

    ?reccount()

    ?recno()

  • Baze de date n Visual FoxPro 23

    40 Operaii asupra tabelului de date:

    limitarea accesului n tabel la nregistrrile care conin angajai de sex masculin:

    set filter to sex=.T.

    browse

    anularea filtrrii: set filter to

    browse

    localizarea nregistrrii cu marca 177 : locate for marca=177

    browse

    marcarea pentru tergere a nregistrrilor 2 i 4: delete record 2

    delete record 4

    browse

    marcarea pentru tergere a nregistrrilor corespunztoare persoanelor cu vrste mai mari de 40 ani:

    delete all for (year(date())-year(datanast))>40

    browse

    demarcarea tuturor nregistrrilor: recall all

    browse

    tergerea fizic a nregistrrilor pentru care salariul este cuprins ntre 3500000 i 12000000:

    dele all for salariu >=3500000 and salariu

  • 24 Baze de date n Visual FoxPro

    browse

    nlocuirea valoric a salariului, la toi salariaii, cu 12%: replace all salariu with salariu*1.12

    browse

    50 Editarea tabelului de date selectiv (selecii pe orizontal i pe

    vertical) utiliznd comanda BROWSE:

    afiarea pe cmpurile nume, functia, salariu : browse fields nume, functia, salariu

    editarea nregistrrilor corespunztoare persoanelor de sex masculin i a cmpurilor nume, salariu:

    browse fields nume, salariu for sex=.T.

    editarea tabelului de date doar pe cmpul salariu: brow freeze salariu

    60 Introducerea adresei persoanelor avnd marca 204 i 161 : locate for marca='204' modify memo adresa locate for marca='161' modify memo adresa 70 Se creaz, prin sortare, un tabel de date Persoane.dbf, ordonarea fcndu-se dup cmpurile Functia (cheie primar) i Salariu (cheie secundar), ascendent: sort on functia, salariu to Persoane use Persoane browse 80 Se definesc urmtoarele criterii de indexare:

    criteriul nume+functia, num: index on nume+functia tag num

    criteriul functia+salariu, func: index on functia+str(salariu,8) tag func

    criteriul salariu, descendent: index on salariu tag salariu descending

    criteriul marca index on marca tag marca

  • Baze de date n Visual FoxPro 25

    90 Vizualizarea tabelului de date conform celor patru criterii de indexare definite anterior: set order to tag num browse set order to tag func browse set order to tag salariu browse ?tag() set order to tag marca browse 100 Folosind criteriul marca, se localizeaz nregistrarea de cod 204 i se face, pentru aceasta, o mrire de salariu de 8%: set order to tag marca seek '204' replace salariu with salariu*1.08 110 Informaii despre tabelul de date:

    numrul total de nregistrri: count to tot ?tot

    numrul de angajai Secretara: count for functia='Secretara' to a ?a sau (prin program): a=0 scan for functia='Secretara' a=a+1

    endscan ?a

    media salarial pentru funcia Secretara: average salariu for functia='Secretara' to b sau: calculate avg(salariu) for functia='Secretara' to b ?b

    salariul maxim: calculate max(salariu) to m ?m

  • 26 Baze de date n Visual FoxPro

    sau (prin program): maxim= salariu scan if salariu >maxim maxim=salariu endif endscan ?maxim

    2. Utilizarea bazelor de date i a vederilor

    2.1. Crearea unei baze de date (Database)

    Prin crearea unei baze de date mai multe tabele de date sunt reunite ntr-o singur colecie. Fiecare baz de date are asociat un dicionar de date care ofer mai mult flexibilitate n proiectarea i modificarea bazei de date i reduce sarcina programatorului de a scrie cod pentru validrile la nivel de cmp i de nregistrare sau pentru a asigura unicitatea valorilor din cmpurile reprezentnd chei primare. Fiierele baz de date, coninnd tabele de date i informaiile asociate lor sunt fiiere avnd extensia implicit dbc. Dicionarul de date Visual FoxPro permite crearea sau specificarea unor elemente cum ar fi:

    Cheile primare i secundare; Relaiile dintre tabelele bazelor de date; Valorile implicite ale cmpurilor; Mtile de intrare i a formatelor de afiare a cmpurilor; Regulile la nivel de cmp i de nregistrare; Procedurile stocate.

    Crearea unei baze de date poate fi iniiat prin comanda:

    MODIFY DATABASE []

  • Baze de date n Visual FoxPro 27

    sau prin alegerea opiunii File, New din meniu (n acest caz n caseta New se selecteaz Database i New file). Cnd se creeaz o nou baz de date, aceasta nu conine nimic (tabele asociate sau alte obiecte).

    Pentru iniierea unei sesiuni de lucru cu o baz de date, aceasta trebuie s fie activat (deschis). Deschiderea unei baze de date se poate realiza prin meniu (File, Open, Files of type: Database (*.dbc)) sau prin comanda MODIFY DATABASE.

    Observaie Lucrul cu bazele de date se realizeaz utiliznd Constructorul bazei de date n fereastra Database Designer, in meniul principal fiind activat opiunea Database care ofer instrumentele de lucru cu bazele de date.

    * Sfat Lucrai cu bara de instrumente Database Designer. Dac aceasta nu este afiat utilizai meniul: View, ToolbarsDatabase Designer.

    Bara de instrumente Database Designer permite efectuarea unor operaiuni asupra bazelor de date cum ar fi:

    New Table Crearea unui nou tabel de date i includerea lui n baza de date; Add Table Includerea unui tabel deja creat n baza de date; Remove Table Eliminarea unui tabel de date din baza de date; Modify Table Modificarea structurii unui tabel; Browse Table Deschiderea ferestrei de vizualizarea pentru un tabel; New Local View Crearea unei vederi (View).

    New Table

    Add Table

    Remove Table New Local View

    Modify Table Browse Table

  • 28 Baze de date n Visual FoxPro

    2.2. Adugarea tabelelor la baza de date Fiecare tabel Visual FoxPro poate exista n una din urmtoarele dou stri: ca tabel liber, adic sub form de fiier .dbf neasociat vreunei baze de date, sau ca tabel dintr-o baz de date, adic sub form de tabel asociat unei baze de date. Tabelele asociate unei baze de date au unele proprieti specifice, care nu exist n cadrul tabelelor externe, cum ar fi regulile la nivel de cmp i de nregistrare, declanatoarele i relaiile permanente. Tabelele pot fi asociate cu o baz de date prin crearea lor n cadrul unei baze de date deschise n fundal sau prin adugarea tabelelor existente la o baz de date. Observaie

    Un tabel existent poate fi asociat cu o singur baz de date.

    2.3. Eliminarea tabelelor din baza de date Prin adugarea unui tabel la o baz de date, Visual FoxPro modific nregistrarea din antetul fiierului corespunztor tabelului pentru a actualiza calea i numele fiierului asociat bazei de date care include acum tabelul. Procesul de eliminare a unui tabel dintr-o baz de date (Remove Table) nu numai c terge tabelul i dicionarele de date din fiierul bazei de date, ci actualizeaz informaia de relaie pentru a reflecta noul statut al tabelului, cel de tabel liber. Eliminarea unui tabel dintr-o baz de date nu determin tergerea automat a fiierului asociat tabelului. Pentru tergerea fiierului .dbf se poate utiliza comanda DELETE.

    2.4. Crearea relaiilor permanente ntre tabele Pentru stabilirea unor relaii ntre tabele, trebuie inut cont c acestea nu sunt relaii de egalitate, ci de subordonare. Unul dintre tabele va fi printe (Parent Table), iar cellalt copil (Child Table).

  • Baze de date n Visual FoxPro 29

    n Visual FoxPro, sunt utilizai indecii pentru a stabili relaii permanente ntre tabelele bazei de date. Indecii sunt constituii pe baza unor expresii (n particular indecii pot fi nume de cmpuri ale tabelelor) prin utilizarea procedeului de indexare. Tipul etichetei de index sau al cheii determin tipul de relaie permanent care se poate crea. Este necesar folosirea unei chei primare (Primary) pentru relaii una la mai multe. Pentru partea mai multe, cheile de indexare sunt chei obinuite (Regular).

    Exemplu Baza de date Furnizor.dbc include tabelele clienti.dbf,

    comenzi.dbf, produse.dbf. Aceste tabele de date sunt indexate dup cmpurile codc (cod client) i codp (cod produs). Tabelele clienti.dbf i produse.dbf sunt tabele printe iar tabelul comenzi.dbf este tabel copil, stabilindu-se relaii una la mai multe: clienti.dbf comenzi.dbf

    i produse.dbf comenzi.dbf. n tabelul clienti.dbf respectiv produse.dbf cheile codc, codp sunt primare (unice), valorile corespunztoare acestora neputnd fi scrise dect o singur dat n tabel nu pot exista mai muli clieni sau mai multe produse cu acelai cod:

    Figura 2.1

  • 30 Baze de date n Visual FoxPro

    n tabela copil, comenzi.dbf, pot apare de mai multe ori acelai

    coduri de clieni sau produse. Se impune stabilirea cheilor codc i codp drept chei normale:

    Crearea unei relaii permanente ntre tabele: n fereastra Database Designer, se alege numele indexului

    primar (cum ar fi codc) i apoi se trage spre numele indexului din tabela legata (cum ar fi codc din comenzi.dbf).

    tergerea unei relaii permanente dintre tabele: n fereastra Database Designer, se execut clic pe linia de

    relaie dintre dou tabele. Ca urmare, limea liniei de relaie crete pentru a indica faptul c s-a selectat relaia respectiv. Pentru eliminarea relaiei se apas tasta DELETE.

    Figura 2.3

    Figura2.2

  • Baze de date n Visual FoxPro 31

    Crearea integritii refereniale

    Generatorul de Integritate Referenial (Referential Integrity Builder) se lanseaz prin meniu: Database, Edit Referetial Integrity. Generarea integritii refereniale presupune crearea unui set de reguli care s pstreze relaiile definite ntre tabele atunci cnd se insereaz sau se terg nregistrri.

    Prin ntrirea integritii refereniale, Visual FoxPro nu permite: S se adauge nregistrri la un tabel copil atunci cnd nu exist

    nici o nregistrare asociat n tabelul printe. S se modifice valori n tabelul printe care ar duce la apariia

    de nregistrri orfane n tabelul copil. S se tearg nregistrri din tabelul printe atunci cnd exist

    nregistrri asociate n tabelul copil. Generatorul de integritate referenial gestioneaz mai multe niveluri de tergere i actualizri n cascad i este instrumentul cel mai potrivit pentru generarea integritii refereniale.

    Figura2.4

  • 32 Baze de date n Visual FoxPro

    Observaii Se recomand lansarea generatorului de integritate

    referenial imediat dup includerea unui nou tabel i stabilirea relaiilor cu alte tabele deja incluse.

    Se recomand realizarea relaiilor de integritate n cascad.

    Dac se intervine n arhitectura bazei de date, de pild, prin modificarea tabelelor sau a indecilor folosii ntr-o relaie permanent, se impune relansarea generatorului nainte de a se folosi baza de date astfel nct acesta s reflecte noua arhitectur. Altfel, pot fi generate rezultate imprevizibile.

    2.5. nchiderea unei baze de date

    nchiderea unei baze de date se poate realiza prin comenzile: CLOSE DATABASE -sau- CLOSE ALL

    2.6. Crearea unei vederi (View)

    Vederile reprezint un tip special de tabele, construite pe baza

    datelor din una sau mai multe tabele sau vederi legate ntre ele prin relaii. Vederile sunt folosite atunci cnd se dorete o alt structur a tabelelor (bazelor de date), structur construit pe baza unor tabele i vederi deja existente. Observaii Vederile sunt incluse n bazele de date, ele neputnd fi

    folosite dect atunci cnd baza de date care le conine este deschis. Chiar memorarea efectiv a vederilor se face n fiierul bazei de date (.dbc).

    Vederile sunt vzute i prelucrate ca orice alt tabel. Vederile sunt tabele logice, nestocnd fizic date.

  • Baze de date n Visual FoxPro 33

    Figura 2.5

    Crearea unei vederi n cadrul unei baze de date se poate realiza

    prin meniu, File, New (n acest caz n caseta New se selecteaz View i New file), sau folosind butonul New Local View din bara de instrumente Database Designer. n meniul principal este activat opiunea Query care ofer instrumentele de lucru pentru vederi i interogri. Pentru construirea vederilor se folosete un utilitar special al SGBD-ului Visual FoxPro numit View Designer (Constructorul de vederi).

    Modul de utilizare a acestui utilitar este asemntor celui folosit pentru construirea interogrilor (Query Designer).

    Construirea unei vederi implic parcurgerea urmtoarelor etape

    principale: dac baza de date care urmeaz s conin vederea nu

    este deschis, se deschide, eventual se creeaz; apoi se pornete Constructorul de vederi; urmeaz precizarea sursei de date, adic a tabelelor din

    care se preiau datele pentru construirea vederii respective:

  • 34 Baze de date n Visual FoxPro

    apoi se stabilesc cmpurile care vor intra n componena vederii, cmpuri selectate dintre cele ale tabelelor surs precizate anterior; n continuare, se specific o serie de parametri precum:

    legturile ntre tabelele specificate, eventualele condiii de filtrare (selecie), ordonare, grupare a datelor n vedere, modul de actualizare a datelor surs pe baza datelor din vedere etc.

    Aplicaii

    10 Pentru evidena produselor livrate de un furnizor se creeaz baza de date Furnizor.dbc, avnd n componen urmtoarele tabele de date:

    a) clienti.dbf (Client C, 35 / Codc C, 4 / Adresa - memo)

    b) comenzi.dbf (Data D / Cantitate N, 10 / Codc C, 4 /

    Codp C, 5)

    c) produse.dbf (Denumire C, 35 / Pret N, 10 /Um C, 6 / Codp C, 5 / Stoc N, 12)

  • Baze de date n Visual FoxPro 35

    unde Codc este codul atribuit firmei, iar Codp este codul produsului i vor constituii cheile de legtur ntre tabele. 20 S se indexeze tabelele de date:

    clienti.dbf dup cmpul Codc, cruia i se va atribuii statutul de cheie primar (vezi figura 2.2);

    comenzi.dbf dup cmpurile Codc i Codp crora li se va atribuii statutul de chei normale (vezi figura 2.3);

    produse.dbf dup cmpul Codp - cheie primar.

    30 S se realizeze relaiile de tip una la mai multe (vezi figura 2.1): a) ntre tabelele de date clienti.dbf i comenzi.dbf (clic cu

    mouse-ul pe cheia Codc din tabelul clienti.dbf i tragere peste cheia Codc din tabelul comenzi.dbf).

    b) ntre tabelele de date produse.dbf i comenzi.dbf.

    40 S se lanseze Generatorul de Integritate Referenial (prin meniu: Database, Edit Referetial Integrity) pentru realizarea relaiilor de integritate n cascad (Cascade) vezi figura 2.4. S se verifice stabilirea integritii refereniale n urmtoarele situaii: o tergere logic (DELETE) n tabelul printe, clienti.dbf, se

    reflect ca tergere logic n tabelul copil comenzi.dbf. orice modificare a cheii primare din tabelul printe, clienti.dbf,

    se reflect ca modificare n tabelul copil comenzi.dbf.

    50 S se includ n baza de date un tabel vedere, livrari:

  • 36 Baze de date n Visual FoxPro

    ) Indicaie Se va aciona butonul New Local View din bara de instrumente

    Database Designer i se vor include n vedere cele trei tabele de date (vezi

    figura 2.5), precum i cmpurile necesare. La nchiderea ferestrei View

    Designer, acestei vederi, i se va asocia numele livrari.

    60 S se obin situaia livrrilor, afind coninutul tabelului livrari (Browse):

    3. Interogarea bazelor de date O interogare a unei baze de date reprezint extragerea - n funcie de anumite criterii i ntr-un anumit format - unor date din tabele de date care alctuiesc baze de date. Componenta Visual FoxPro-ului care realizeaz acest obiectiv se numete Query Designer (Constructorul de interogri), component asemntoarea cu View Designer (Constructorul de vederi). Datele extrase printr-o interogare pot fi prezentate sub diverse forme (Browse, rapoarte, grafice, etc,).

    3.1. Crearea, deschiderea i rularea unei interogri

    Crearea unei interogri (fiier cu extensia implicit QPR) poate fi iniiat prin comanda: MODIFY QUERY []

  • Baze de date n Visual FoxPro 37

    sau prin alegerea opiunii File, New din meniu (n acest caz n caseta New se selecteaz Form i New file).

    Activarea (deschiderea) unui formular se poate realiza prin meniu (File, Open, Files of type: Query (*.qpr)) sau prin comanda MODIFY QUERY.

    O interogare este o secven executabil care poate fi rulat n urmtoarele moduri:

    din meniul principal (Query, Run Query),

    prin acionarea butonului din linia de instrumente standard, prin comanda DO .

    Observaie Prin lansarea Constructorului de interogri, n fereastra Query Designer, meniul principal va include opiunea Query care ofer instrumentele de lucru necesare.

    * Sfat Lucrai cu bara de instrumente Query Designer. Dac aceasta nu este afiat utilizai meniul: View, ToolbarsQuery Designer.

    Bara de instrumente Query Designer permite efectuarea unor operaiuni cum ar fi:

    Add Table Includerea unui tabel de date n interogare; Remove Table Eliminarea unui tabel; Add Join Stabilirea sau modificarea unor legturi ntre tabelele de date incluse n interogare; Show the SQL window transpunerea secvenei de interogare n instruciuni SQL;

    Add Table

    Remove Table

    Add Join Show the SQL window

    Query Destination Maximize the table

    i

  • 38 Baze de date n Visual FoxPro

    Query Destination stabilirea destinaiei unei interogri: o fereastr Browse, un tabel permanent, o list la imprimant (report), un grafic, etc. Maximize the table View modificarea formei de afiare a coninutului ferestrei Query Designer.

    Fereastra Query Designer (figura 3.1) este constituit din dou zone, n care sunt afiate tabelele surse de date (mpreun cu legturile dintre ele), respectiv paginile n care se vor preciza parametrii de definire a interogrii i anume:

    Fields (cmpuri) specificarea cmpurilor surs ce vor fi incluse n tabelul destinaie;

    Join (legtur) legturile ntre tabelele surs; Filter (filtru) condiiile de selecie (filtrare) a datelor din tabelele

    de date; Order By (ordonare) specific ordinea de prelucrare; Group By (grupare) criteriile de grupare a datelor; Miscellaneous (altele).

    Figura 3.1

  • Baze de date n Visual FoxPro 39

    3.2. Fereastra Query Designer

    Specificarea cmpurilor interogrii Pentru ca un cmp s fie preluat ntr-o interogare se activeaz pagina Fields, dup care acesta se selecteaz din lista Availabile fields (cmpuri disponibile) i se acioneaz butonul Add. Ca urmare numele cmpului va fi copiat n lista Selected fields (vezi figura 3.1). Dac se dorete introducerea unui cmp calculat se va introduce formula de calcul corespunztoare n caseta Functions and expresions.

    Specificarea legturilor ntre tabelele de date Modelul relaional al bazelor de date permite stabilirea unor legturi ntre tabelele de date. Aceste relaii pot fi permanente, memorate n fiierul bazei de date, sau stabilite dinamic n cadrul unor secvene program. Stabilirea legturilor dinamice se poate realiza cu ajutorul comenzii: SET RELATION TO INTO , INTO , unde:

    - tabelul printe este cel activ; - TO stabilete criteriile de ordonare; - INTO precizeaz tabelele copil.

    La fel ca n cazul definirii unei vederi (cu View Designer), pentru stabilirea unei legturi ntre dou tabele de date, este necesar ca cele dou tabele s aib cel puin un cmp comun prin intermediul cruia se realizeaz corespondena. Relaia stabilit ntre dou tabele legate este o relaie de subordonare: unul din tabele va fi tabelul printe, iar cellalt va fi tabelul copil. Mutarea indicatorului de nregistrri al tabelului printe pe o anumit nregistrare determin mutarea indicatorului de nregistrri al tabelului copil pe nregistrarea corespunztoare, dar nu i invers.

  • 40 Baze de date n Visual FoxPro

    Observaii: Este obligatorie indexarea tabelului copil dup criteriul care

    stabilete legtura (de obicei acesta este un cmp comun cu al tabelului printe, dar poate fi i o expresie oarecare).

    Se pot stabilii dou tipuri de legturi ntre tabelul printe i tabelul copil:

    o legturi unu la unu, cnd n tabelul copil valorile cheii de indexare sunt unice;

    o legturi unu la mai multe, cnd nregistrrile tabelului copil pot lua i valori egale pe cheia de indexare.

    Legturile permanente necesare pentru stabilirea unei interogri se aleg folosind pagina Join (figura 3.2), prin specificarea cmpurilor care fac obiectul legturii i a tipului de legtur: Inner Join legtur interioar, ntre nregistrrile din tabelul

    printe care au corespondent n tabelul copil i invers; Left Join legtura la stnga, cnd vor fi luate n considerare

    i nregistrrile din tabelul printe (din stnga) care nu au corespondent n tabelul copil;

    Right Join legtura la dreapta, cnd vor fi luate n considerare i nregistrrile din tabelul copil (din dreapta) care nu au corespondent n tabelul printe;

    Full Join vor fi considerate toate legturile.

    Figura 3.2

  • Baze de date n Visual FoxPro 41

    Condiiile de selecie a nregistrrilor

    Principala funcie a unei interogri este aceea de selecie. Criteriile de selecie sunt precizate n pagina Filter.

    Ordonarea afirii rezultatelor interogrii Specificarea ordinii de afiare se face cu ajutorul paginii Order By. n figura 3.4 s-a selectat ordonarea dup cmpul nume din tabelul Studenti.dbf:

    Gruparea datelor

    Figura 3.3

    Figura 3.4

  • 42 Baze de date n Visual FoxPro

    Query Designer (pagina Group By) permite ca mai multe nregistrri s fie cumulate dup mai multe criterii, pentru fiecare grup de nregistrri fiind furnizat n tabelul de destinaie o singur nregistrare. Gruparea poate fi realizat dup unul sau mai multe cmpuri care vor forma cheia de grupare. nregistrrile avnd aceleai chei de grupare vor furniza n tabela de destinaie o singur nregistrare (cmpurile numerice pentru un grup vor conine valori obinute prin nsumarea valorilor corespunztoare din grup).

    Destinaia interogrii

    Datele extrase prin interogare pot fi trimise spre o anumit destinaie (folosind butonul Query Destination din bara de butoane a Constructorului de interogri) cum ar fi: fereastra Browse - implicit; un tabel permanent (Table) acesta putnd fi folosit ntr-o nou

    prelucrare; ecranul (Screen); o list la imprimant (Report); un grafic (Graph) construit cu ajutorul componentei Microsoft

    Graph.

    Figura3.5

  • Baze de date n Visual FoxPro 43

    Aplicaii 10 S se creeze urmtoarele tabele de date:

    Studenti.dbf (nume C, 30 / matricola N,4 /grupa C,4) Discipline.dbf (materia C, 30 / cod C,4) Note.dbf (nota N,2 / matricola N, 4 / cod C,4):

    20 S se indexeze tabelele de date Studenti.dbf, Discipline.dbf dup cmpurile Matricola respectiv Cod. 30 S se creeze i s se ruleze fiierul de interogare a tabelelor de date Studenti.dbf, Discipline.dbf, Note.dbf, pentru afiarea notelor studenilor inclui n baza de date (vezi figura 3.1 i figura 3.2). S se stabileasc ca destinaie a interogrii fiierul Catalog.dbf (vezi figura 3.5) i s se vizualizeze coninutul acestui tabel. 40 S se realizeze interogarea bazei de date pentru afiarea notelor n ordinea alfabetic a numelor studenilor (vezi figura 3.4). 50 S se ruleze fiierul de interogri pentru afiarea notelor studenilor din grupa FC01 (vezi figura 3.3). 60 S se ruleze fiierul de interogri pentru toate cele patru tipuri de legturi (Inner Join, Left Join, Right Join, Full Join) vezi figura 3.2.

  • 44 Baze de date n Visual FoxPro

    4. Utilizarea formularelor Formularul (forma) reprezint o fereastr pentru introducerea sau extragerea datelor utilizatorului, n mod interactiv, cu ajutorul unor obiecte de interfa crora le sunt asociate proprieti i metode (secvene de instruciuni secvene de cod). Definirea unui formular se realizeaz prin utilizarea tehnologiei POO (Programare Orientat Obiect) care permite modificare proprietilor obiectelor incluse n formular, ceea ce se reflect n aspectul formularului i a comportamentului acesteia n diferite situaii. Form Designer (Constructorul de formulare) este o component a Visual FoxPro - ului dedicat crerii i modificrii formularelor precum i generrii secvenei de cod necesare pentru execuia acestora (fiierele corespunztoare au extensia implicit scx).

    4.1. Crearea, deschiderea i rularea unui formular

    Crearea unui formular (fiier cu extensia implicit SCX) poate fi iniiat prin comanda: MODIFY FORM [] sau prin alegerea opiunii File, New din meniu (n acest caz n caseta New se selecteaz Form i New file).

    Activarea (deschiderea) unui formular se poate realiza prin meniu (File, Open, Files of type: Form (*.scx)) sau prin comanda MODIFY FORM. Scopul crerii unui formular este obinerea unei secvene executabile care poate fi rulat n urmtoarele moduri:

  • Baze de date n Visual FoxPro 45

    din meniul principal (Form, Run Form),

    prin acionarea butonului din linia de instrumente standard, prin comanda DO FORM .

    Observaie Prin lansarea Constructorului de formulare, n fereastra Form Designer, meniul principal va include opiunea Form care ofer instrumentele de lucru necesare.

    4.2. Elementele constructorului de formulare

    Ferestrele de lucru

    Form Designer fereastra principal care conine obiectele

    formularului. Properties fereastra de proprieti avnd ca rol

    modificarea proprietilor obiectelor formularului (metode, nume, titluri, dimensiuni, fonturi, culori, etc.).

    Data Environment mediul de date al formularului, fereastra pentru precizarea tabelelor de date care vor fi deschise automat n momentul rulrii formularului.

    Ferestrele pentru cod succesiunile de instruciuni care urmeaz a fi executate la apariia diferitelor evenimente din cadrul formularului cum ar fi: acionare unui buton, selectare unui obiect, etc.

    Barele utilitare Form Designer Toolbar - bara de butoane standard a

    formularului:

    Data Environment Layout Toolbar

    Properties Window Color Palette Toolbar

    Form Controls Toolbar Code Window

  • 46 Baze de date n Visual FoxPro

    Lista obiectelor din formular

    Valoarea proprietii

    Proprietate

    Obiect

    Form Designer Toolbar

    Form Controls Toolbar

    FORMULARUL

    Butoanele din aceast bar de instrumente permit deschiderea/nchiderea ferestrelor: Data Environment, Properties, Code (afiarea secvenei de cod) sau a barelor de lucru:

    Form Control Toolbar butoanele de control; Color Palette Toolbar stabilirea atributelor de culoare; Layout Toolbar alinierea obiectelor n formular,

    suprapunerea obiectelor, etc.

    * Sfat Lucrai cu barele de instrumente. Dac acestea nu sunt afiate utilizai meniul: View, Toolbars

  • Baze de date n Visual FoxPro 47

    4.3. Mediul de date al formularului (Data Environment) Constructorul de formulare permite configurarea mediului de date n care lucreaz formularul, adic a zonelor de lucru i a tabelelor de date deschise n ele. Tabelele de date sunt deschise automat (fr comenzi speciale), dac acestea sunt incluse n Data Environment, nainte de execuia formularului (este de la sine neles c aceste tabele de date au fost deja create).

    Observaii Deschiderea ferestrei Data Environment poate fi fcut

    prin meniu (View, Data Environment) sau folosind butonul corespunztor din bara de butoane Form Designer. Astfel n meniul principal este inclus opiunea DataEnvironment.

    Includerea (Add) unui tabel n Data Environment este realizat prin meniu: DataEnvironment, Add sau prin clic cu butonul dreapta al mouse-ului.

    Mediul de date al formularului este considerat un obiect, deci are asociate metode i proprieti. Cele mai importante metode, legate de folosirea datelor sunt:

    Metoda OpenTables este folosit la deschiderea tabelelor de date necesare (dac nu este utilizat, tabelele asociate sunt deschise automat).

    Metoda Load Event poate fi folosit, de asemenea, la deschiderea tabelelor. Aceasta este iniiat dup metoda OpenTables.

    Metoda Init Event este o metod apelat dup metoda Load, i face anumite iniializri ale obiectelor din formular, inclusiv cu datele din tabelele care sunt deja deschise.

    Metoda CloseTables are ca scop nchiderea tabelelor de date din mediul de date al formularului la iniiativa utilizatorului.

    Metodele Unload (descrcare) i Destroy (distrugere a formularului) acioneaz asupra mediului de date i sunt activate dup metoda CloseTables.

  • 48 Baze de date n Visual FoxPro

    4.4. Utilizarea controalelor

    Includerea controalelor n cadrul unui formular se realizeaz prin introducerea unor obiecte (Label, Text Box, etc.) n acest formular. Pentru aceasta, se acioneaz butonul corespunztor din Form Controls Toolbar i se stabilete poriunea dreptunghiular (zona) din formular unde va fi afiat obiectul. Practic, obiectul va fi desenat (se poziioneaz cursorul mouse-ului n colul stnga-sus al zonei de afiare, se ine apsat butonul stng i se trage cursorul spre colul dreapta-jos).

    Proprieti i metode

    Un formular poate conine mai multe obiecte, el nsui fiind considerat un obiect. Fereastra Properties permite alegerea obiectului i a proprietii a crei valoare se schimb, ca de exemplu:

    Proprietatea Caption este destinat stabilirii unui titlu (denumire) pentru formular sau obiect.

    Proprietatea Name permite atribuirea unor nume obiectelor. Visual FoxPro stabilete valori implicite proprietilor Caption i Name cum ar fi:

    o Form1, Form2 pentru formulare o Label1, Label2... pentru obiectele Label o Command1, Command2 pentru butoane o Text1, Text2 pentru obiectele Text Box o Edit1, Edit2 pentru obiectele Edit Box

    Aceste nume ale obiectelor pot fi folosite aa cum au fost definite de Visual FoxPro ns utilizatorul are posibilitatea stabilirii unor denumiri proprii.

    Proprietatea FontSize stabilete atributele de scriere privind dimensiunea fontului folosit.

    Proprietatea FontBold permite scrierea bold. Proprietatea BorderStyle ofer posibilitatea stabilirii

    atributelor de bordare.

  • Baze de date n Visual FoxPro 49

    Proprietatea Format permite introducerea formatat a datelor conform codurilor Function.

    Proprietatea Input Mask permite introducerea formatat a datelor conform codurilor Picture.

    Observaie O categorie special de proprieti o reprezint metodele. Metodele sunt secvene de cod (instruciuni) asociate diferitelor obiecte la activarea/dezactivarea acestora.

    Form Designer ofer posibilitatea modificrii unei proprieti prin comenzi de atribuire, referirea la proprietatea respectiv fcndu-se prin construcia: .

    Referirea la un obiect din cadrul unei formulare se realizeaz printr-o construcie asemntoare, adic: ..

    Exist construcii speciale, mai scurte, cum ar fi: o This - care se refer la obiectul curent; o ThisForm - care indic formularul ce conine

    obiectul curent; o Parent - care se refer la obiectul care conine

    obiectul curent.

    Exemple Form1.Caption=Actualizare

    modific proprietatea Caption (titlu) a formularului Form1

    Form1.Vizualizare execut metoda Vizualizare ataat formularului

    Form1.Label1.Caption=Numele persoanei modific proprietatea Caption (titlu) a obiectului

    Label1 ThisForm.Caption=Adugare

  • 50 Baze de date n Visual FoxPro

    modific proprietatea Caption (titlu) a formularului curent

    ThisForm.Vizualizare execut metoda Vizualizare ataat formularului

    curent This.Caption=Numele persoanei

    modific proprietatea Caption (titlu) a obiectului

    Obiecte din formular

    Obiecte simple

    Label afieaz un text informativ

    Text Box definete un cmp de editare n care utilizatorul poate introduce un text.

    Edit Box pentru editarea variabilelor ir de caractere, tablou, cmpuri ale tabelelor de date, cmpuri memo.

    Command Button este tipic pentru startul evenimentelor, pentru cutarea i nchiderea formularelor, mutarea diferitelor nregistrri, imprimarea rapoartelor, etc.

    Check Box (casete de validare). Obiectele Check Box permit utilizatorului s specifice o stare de tip logic (true sau false), astfel nct la executarea formularului s se poat alege ntre dou stri. Principalele proprieti care le sunt asociate sunt:

    Proprietatea Value furnizeaz valorile numerice 0 sau 1 dup cum caseta este neselectat sau selectat (bifat).

    Proprietatea Style schimb stilul de afiare, avnd valoarea 0Standard sau 1-Graphical, caseta de validare primind aspectul unui buton neapsat/apsat:

  • Baze de date n Visual FoxPro 51

    Spinner (casete de incrementare/decrementare). Obiectele Spinner permit utilizatorului s-i stabileasc opiunile parcurgnd incremental o plaj de valori sau introducnd direct valorile n caset. Pentru aceasta, cmpul de editare al casetei are n dreapta sa dou butoane: unul pentru incrementare i altul pentru decrementare:

    Proprieti principale: Proprietatea Value stabilete valoarea iniial nscris n

    caset i furnizeaz valorile editate la execuia formularului. Proprietile KeyboardHighValue i KeyboardLowValue

    stabilesc limita superioar i inferioar a valorilor introduse n cmpul de editare direct de la tastatur (depirea acestor limite genereaz mesaj de eroare).

    Proprietile SpinnerHighValue i SpinnerLowValue stabilesc limita superioar i inferioar a valorilor introduse cu ajutorul butoanelor de incrementare/decrementare (depirea acestor limite nu conduce la eroare dar valoarea aflat n editare nu mai este mrit/micorat).

    Combo Box - List Box (casete cu list - list derulant). Listele sunt obiecte care ofer utilizatorului posibilitatea selectrii unor elemente dintr-o mulime finit, afiat total sau parial pe ecran. Se utilizeaz dou tipuri de liste: liste simple - List Box i liste derulante sau expandabile - ComboBox care afieaz doar elementul curent al listei.

    Standard Graphical

  • 52 Baze de date n Visual FoxPro

    Listele simple, List Box afieaz la un moment dat mai multe elemente (nu neaprat pe toate):

    Listele expandabile, Combo Box, afieaz, n stare neactivat,

    doar un element al listei:

    Proprieti ale listelor: Proprietatea RowSourceType stabilete sursa de date a

    elementelor unei liste cum ar fi: o 0 None (surs nespecificat), cnd specificarea

    elementelor listei se face n mod dinamic, la rularea formularului;

    o 1 Value (valoare), care presupune c elementele listei sunt enumerate manual n proprietatea RowSource (list de elemente separate prin virgul);

    o 2 Alias, cnd elementele listei sunt preluate dintr-o tabel de date specificat n proprietatea RowSource;

    o 3 SQL Statement (instruciuni SQL); o 4 - Query (interogare); o 5 Array (tablou) elementele listei sunt preluate

    dintr-un tablou; o etc.

  • Baze de date n Visual FoxPro 53

    Proprietatea RowSource specific sursa efectiv de date. Numrul implicit de coloane dintr-o list este 1 ns pot fi construite i liste multicoloan. O variant simpl de a obine o list multicoloan dintr-o list unicoloan o ofer proprietile RowSourceType i RowSource. De exemplu, dac proprietatea RowSourceType este 2 Alias proprietatea RowSource poate avea valoarea Personal.Marca+Personal.Nume (pentru baza de date Personal.dbf) astfel nct rezult o list de forma:

    Obiecte compuse (container) Obiectele compuse sunt constituite ca un grup de obiecte simple. Construirea (Builder) unui obiect container (de exemplu includerea unor obiecte simple) sau editarea (Edit) unui obiect inclus ntr-un container presupune acionarea butonului drept al mouse-ului:

  • 54 Baze de date n Visual FoxPro

    Option Group (butoane radio). Butoanele radio sunt un tip special de obiecte de interfa care ofer posibilitatea alegerii unei singure opiuni din mai multe posibile (sunt obiecte container). Proprietile cele mai utilizate ale butoanelor radio sunt:

    Proprietatea ButtonCount stabilete numrul de componente ale obiectului.

    Proprietatea AutoSize determin calcularea automat a dimensiunii grupului de butoane n funcie de coninut, dac are valoarea .T. True.

    Proprietatea Value furnizeaz valorile numerice 1, 2, 3, reprezentnd numrul de ordine al butonului selectat (implicit 1).

    Proprietatea Style a fiecrui obiect din container schimb stilul de afiare, avnd valoarea 0Standard sau 1-Graphical :

    Command Group (butoane de comand). Grupurile de butoane de comanda au roluri asemntoare cu ale butoanelor simple (Command Button) doar c ele sunt constituite ca obiecte container, deci pot fi construite i editate ca acest tip de obiecte. Cele mai importante proprieti (ButtonCount, AutoSize, Value) sunt identice cu ale butoanelor radio.

    Grid (Grile). Grila este un obiect container, variant mbuntit a ferestrei Browse, care conine mai multe obiecte de interfa, plasate matricial, cum ar fi: coloane, antete (header), cmpuri de editare, fiecare cu propriul set de proprieti i metode.

    Standard Graphical

  • Baze de date n Visual FoxPro 55

    Elementele componente ale unei grile sunt cele prezente i n mediul ferestrei Browse:

    liniile, coloanele i celulele; barele de derulare folosite atunci cnd dimensiunea grilei

    depete dimensiune zonei vizibile; antetul (header) capul de tabel; coloana de marcare a liniilor; coloana de tergere a liniilor.

    Obiectul Grid are o organizare intern arborescent, fiind dispus pe nivele: la primul nivel sunt situate coloanele apoi antetele coloanelor i obiectele de interfa:

    Grila i elementele din gril au anumite proprieti cum ar fi: Proprietatea RecordSourceType stabilete sursa de date

    a grilei: o 0 Table i 1 Alias, sursa de date este un tabel de

    date care va fi deschis automat la iniializarea grilei. n acest caz, nregistrrile tabelei vor fi linii n gril, iar cmpurile tabelului de date vor fi coloane;

    o 2 Prompt sursa de date (tabelul de date) se specific la execuia formularului;

    o 3 - Query (interogare); o 4 SQL Statement (instruciuni SQL).

    Proprietatea RecordSource specific denumirea exact a sursei de date.

    Grid

    Column1

    Header1

    Text1

    Column2

    Header2

    Text2

    Grila

    Coloana1

    Antet1

    Cmp1

    Coloana2

    Antet2

    Cmp2

  • 56 Baze de date n Visual FoxPro

    Aplicaii 10 S se editeze urmtorul formular:

    ) Indicaii Se lanseaz Constructorul de formulare. Se stabilesc proprietile obiectelor n felul urmtor:

    Obiect Tip Proprietate Valoare proprietate

    Observaii

    Form1 Form Caption Calcule

    financiare

    Command1 Button Command

    Caption Calculeaz Color Pallete : Verde

    FontBold .T. -True

    Label1 Label Caption Funcia: Color Pallete : Rou

    Name Opt

    Caption FV Color Pallete : Rou Caption PV Color Pallete : Rou

    Caption Payment Color Pallete : Rou

    FV PV Payment

    Optiongroup

    FontBold .T. -True

    a1 Text Box Name a1 Color Pallete :

    Albastru FontSize 11 FontBold .T. -True

    Primul argument

    a2 Text Box Name a2 Color Pallete :

    Albastru FontSize 11 FontBold .T. -True

    Al doilea argument

  • Baze de date n Visual FoxPro 57

    a3 Text Box Name a3 Color Pallete :

    Albastru FontSize 11 FontBold .T. -True

    Al treilea argument

    rezultat Text Box Name Rezultat Color Pallete : Rou

    FontSize 12

    FontBold .T. -True

    Afieaz rezultatul

    Se stabilesc metodele (secvenele de cod) folosind pagina Method din fereastra Properties:

    Obiect Metoda Secvena de cod a1=val(ThisForm.a1.Value) a2=val(ThisForm.a2.Value) a3=val(ThisForm.a3.Value) Opt=ThisForm.Opt.Value do case case Opt=1 ThisForm.rezultat.Value=FV(a1,a2,a3) case Opt=2 ThisForm.rezultat.Value=PV(a1,a2,a3) case Opt=3 ThisForm.rezultat.Value=Payment(a1,a2,a3) endcase

    Calculeaz

    Click Event (se poate executa i dublu click pe obiect)

    Observaie: Deoarece valorile introduse n Text Box-uri sunt de tip ir de caractere, este necesar convertirea lor n valori numerice, utiliznd funcia val.

    Se salveaz i se execut formularul astfel creat.

    20 S se editeze un formular pentru actualizarea datelor din tabelul de date Personal.dbf.

    ) Indicaii Se include n mediul de date al formularului, Data Environment,

    tabelul Personal.dbf i se import n formular, ca obiecte, cmpurile

    tabelului de date, prin tragere, cu mouse-ul n zona de editare a

    formularului. Aceste obiecte vor fi considerate de Constructorul de

    formulare ca fiind de tip Text Box (txtNume, txtMarca,

    txtFunctia, txtSalariu, txtDatanast), de tip Edit Box (pentru

    cmpul Adresa care este Memo) sau de tip Check Box (pentru

    cmpul Sex).

  • 58 Baze de date n Visual FoxPro

    Se eticheteaz denumirile cmpurilor din tabelul de date (Numele, Marca, etc.) folosind obiecte de tip Label.

    Se stabilesc proprietile obiectelor n felul urmtor: Obiect Tip Proprietate Valoare

    proprietate

    Observaii

    Form1 Form Caption Actualizare

    Command1 Button

    Command

    Caption Vizualizare Color Pallete : Mov

    Command2 Button

    Command

    Caption Adaug Color Pallete : Verde

    Command3 Button

    Command

    Caption terge Color Pallete : Albastru

    Command4 Button

    Command

    Caption Stop Color Pallete : Rou

    M Text Box Name M Poziionare pe o anumit

    marc

    FontBold .T. -True

    Contor Spinner Name Contor Contorul nregistrrilor

    Value 1

    FontBold .T. -True

  • Baze de date n Visual FoxPro 59

    Se stabilesc metodele (secvenele de cod) folosind pagina Method din fereastra Properties:

    Obiect Metoda Secvena de cod

    Vizualizare

    Click Event

    browse

    Adaug

    Click Event

    append blank ThisForm.Refresh ThisForm.Contor.Value=recno()

    terge

    Click Event

    delete pack ThisForm.Refresh ThisForm.Contor.Value=recno()

    Stop

    Click Event

    ThisForm.Release

    locate for This.Value=Marca if found() ThisForm.Refresh ThisForm.Contor.Value=recno() endif

    M Lost Focus Event

    Metoda Lost Focus permite ca la ieirea din cmpul de editare s se execute secvena care permite: - poziionare pe cmpul Marca - introducerea, n Text Box-uri, a valorilor din tabelul de date (refresh) - afiarea numrului nregistrrii curente - recno() s=This.Value if s>=1 and s=

  • 60 Baze de date n Visual FoxPro

    30 S se editeze un formular pentru evidena unor calificative. n mediul de date al formularului se vor introduce (n aceast ordine!) tabelele de date:

    a) Tabelul de date Calificative.dbf, avnd structura: Nume Character 30

    Nota1 Numeric 2 Nota2 Numeric 2 Media Numeric 5,2

    b) Tabelul de date Personal.dbf.

    ) Indicaii Obiectul GrdCalificative poate fi creat n formular prin tragerea

    tabelului Calificative.dbf, cu mouse-ul, din fereastra Data

    Environment.

    Se stabilesc proprietile obiectelor active n felul urmtor:

    Obiect Tip Proprietate Valoare

    proprietate Observaii

    Form1 Form Caption Acordare

    calificative

    Adaug Button Command

    Caption Adaug

    FontBold .T. -True

  • Baze de date n Visual FoxPro 61

    Stop Button Command

    Caption Stop

    FontBold .T. -True

    Combo1

    Combo Box

    FontBold .T. -True Permite selectarea unei componente din fiierul Personal.dbf

    RowSourceType 2 - Alias RowSource Personal.marca+

    Personal.nume Afiarea listei se face pe dou coloane

    GrdCalificative

    Grid FontSize 10 Liniile listei se adaug prin acionarea butonului Adaug

    Header1 Caption Numele persoanei Alignment 2 Middle Center La fel i pentru

    celelalte cmpuri Text1 Enabled .F. - False La fel pentru

    coloana 4

    Se stabilesc metodele (secvenele de cod) folosind pagina Method din fereastra Properties:

    Obiect Metoda Secvena de cod

    GrdCalificative,

    Column2, Text1

    Lost Focus

    repl media with (nota1+nota2)/2

    -cmpul media rezult din calcul - la fel pentru GrdCalificative, Column3, Text1 append blank repl nume with personal.marca+personal.nume thisform.refresh

    Adaug Click Event

    -introduce n list marca i numele persoanei ThisForm.Release

    Stop Click Event -dezactiveaz (nchide formularul)

    Se stabilete ordinea de activare a obiectelor prin acionarea butonului Set Tab Order.

    Se salveaz i se execut formularul astfel creat.

  • 62 Baze de date n Visual FoxPro

    5. Proiectarea meniurilor

    Meniurile sunt obiecte de interfa care pun la dispoziia utilizatorului o serie de opiuni care permit alegerea i declanarea unor operaii de prelucrare. Aproape orice interfa grafic conine, ntr-o form sau alta, un meniu. Un meniu apare, de obicei, n partea superioar a ferestrelor de aplicaii i are o structur standard, iar n general, orice operaie care poate fi executat n cadrul unei aplicaii trebuie s aib un corespondent n meniul acesteia, pentru a putea fi executat. Utilizatorul i construiete un model mental al structurii aplicaiei prin simpla examinare a meniurilor i a articolelor de meniu, meniul reprezentnd un mijloc prin care utilizatorul comunic sistemului ce operaie s efectueze la un moment dat.

    Un meniu este format, n general, dintr-o bar (sau un submeniu orizontal) care conine mai multe opiuni. Fiecare dintre acestea are asociat un submeniu vertical, care este activat numai la alegerea opiunii respective. Alegerea de ctre utilizator a opiunilor meniurilor verticale poate declana o operaie de prelucrare sau poate determina afiarea unui nou submeniu vertical.

    5.1. Crearea i deschiderea unui meniu

    Crearea unui meniu (fiier cu extensia implicit MNX) poate fi iniiat prin comanda:

    Meniu orizontal (Meniu Bar)

    Submeniu Vertical (Submenu)

    Opiune selectat din meniul orizontal

    Opiune selectat din submeniu

  • Baze de date n Visual FoxPro 63

    MODIFY MENU [] sau prin alegerea opiunii File, New din meniu (n acest caz n caseta New se selecteaz Menu i New file). Din fereastra deschis pe ecran se alege butonul Menu (meniu), dac se dorete crearea unui meniu cu bar i submeniuri verticale, respectiv butonul Shortcut (scurttur), dac se dorete construirea unui submeniu vertical, avnd subordonate alte meniuri verticale. Astfel va fi lansat n lucru Constructorul de meniuri.

    Activarea (deschiderea) unui meniu care a fost deja generat se poate realiza prin selectarea acestuia (File, Open, Files of type: Menu (*.mxx)) sau prin comanda MODIFY MENU.

    * Sfat nainte de a stabili componentele unui meniu i caracteristicile acestora trebuie precizate o serie de opiuni, cum ar fi poziia fa de meniul sistemului Visual FoxPro. Opiunile generale ale unui meniu pot fi precizate n fereastra de dialog General Options (opiuni generale): View, General Options din meniul Visual FoxPro-ului.

    5.2. Definirea componentelor unui meniu

    Butoanele din seciunea Location (locaie) stabilesc poziia

    noului meniu fa de meniul sistem:

    Replace nlocuirea meniului sistem; Append adugare; Before - plasarea noului meniu naintea submeniului sistemului

    specificat n lista derulant alturat (care este afiat numai la selectarea butonului);

    After noul meniu va fi plasat dup submeniul specificat.

  • 64 Baze de date n Visual FoxPro

    Se pot specifica secvene de cod (Meniu code) la iniializarea meniului (crearea sa) i tergerea meniului (eliminarea sa din memorie). Secvenele de cod respective se specific n ferestre deschise prin activarea comutatoarelor Setup (iniializare) i Cleanup (tergere), urmat de acionarea butonului OK.

    n fereastra Meniu Designer sunt enumerate i descrise

    opiunile meniului creat i o serie de obiecte de interfa folosite la

    manipularea acestor opiuni. La un moment dat, n fereastra de lucru, este afiat numai grupul de opiuni al unui subsistem (orizontal sau vertical) al meniului proiectat. O opiune poate fi folosit pentru accesul la un alt submeniu sau poate fi dedicat declanrii unei aciuni. Pentru a reveni la meniul imediat superior se folosete lista

  • Baze de date n Visual FoxPro 65

    derulant Menu level (nivel meniu), n care sunt disponibile toate meniurile superioare ierarhic meniului curent.

    n fereastra Constructorului de meniuri, pe coloane, se specific

    caracteristicile opiunilor, astfel: 1. Coloana Prompt cuprinde textele informative ale opiunilor n

    care se pot introduce i combinaii speciale, prin intermediul crora se obin diferite efecte:

    Combinaia Efect \< Dac este plasat naintea unuia dintre caracterele irului

    face ca acel caracter s fie folosit ca o tast pentru selectarea direct a opiunii respective, atunci cnd meniul este activat. Caracterul respectiv apare subliniat n textul opiunii

    \ Determin dezactivarea opiunii respective. Aceasta apare pe ecran n culori terse, iar alegerea sa nu declaneaz nici o aciune (chiar dac n cazul su au fost specificate operaii de executat)

    \- Trasarea unei bare delimitatoare ntre mai multe grupuri de opiuni ale aceluiai submeniu

    2. Coloana Result este destinat precizrii operaiunilor care vor fi executate la selectarea acestora: Submenu - activarea unui nou submeniu coninnd

    propriul grup de opiuni. Coloana a treia va conine un buton (Create sau Edit) la a crei acionare se va intra n editarea submeniului respectiv;

    Command - permite lansarea unei comenzi FoxPro specificat n cmpul de editare din dreapta listei (coloana a treia);

    Procedure - executarea mai multor comenzi grupate ntr-o procedur. Butonul din dreapta listei permite intrarea n editarea procedurii respective.

    3. Coloana a treia specific operaiunea de executat la alegerea opiunii.

    4. Coloana Options (opiuni) este utilizat pentru deschiderea ferestrei de dialog Prompt Options, pentru specificarea unor parametri suplimentari ai opiunii respective cum ar fi:

  • 66 Baze de date n Visual FoxPro

    Shortcut (scurttur) - cale direct de alegere. Un Shortcut conine:

    o Cmpul de editare Key Label (etichet tast), pentru a indica faptul c opiunea poate fi aleas direct prin utilizarea unei combinaii de taste. Combinaia de taste dorit este introdus n caseta Key Label prin apsarea combinaiei de taste respective.

    o Cmpul Key Text (text tast) este un text suplimentar ce poate fi ataat opiunii. n mod implicit Visual FoxPro repet tastele de comand rapid din caseta Key Label n caseta Key Text, dar acesta poate fi modificat (de exemplu combinaia CTRL+L poate fi modificat n ^L).

    Skip For (srit cnd...) - permite impunerea unei condiii prin care s se controleze accesul la o opiune. n acest cmp este introdus o expresie logic. Dac valoarea ei este adevrat, atunci opiunea va fi dezactivat, deci nu va fi disponibila pentru utilizator (ea apare cu culori terse, pentru a indica aceast stare). Dac valoarea expresiei este fals, opiunea va putea fi aleas de utilizator. De exemplu, pentru ca o opiune s

  • Baze de date n Visual FoxPro 67

    fie accesibil numai dac un fiier exist pe disc condiia introdus poate fi: NOT(FILF(Furnizor.dbf)).

    Message (mesaj) - are ca efect apariia unui mesaj explicativ n bara de stare a Visual FoxPro-ului (plasat n partea inferioar a ferestrei mediului de programare).

    5.3. Previzualizarea meniului

    Este recomandabil ca, n faza de editare a unui meniu, s se fac afiarea de prob a acestuia, chiar dac el nu a fost salvat sau programul corespunztor nu a fost nc generat. Acest procedeu se numete previzualizare. La previzualizare, alegerea unei opiuni a meniului nu este nsoit de execuia comenzii corespunztoare, ci doar de afiarea acesteia. Previzualizarea meniului n curs de editare se realizeaz prin acionarea butonului de meniuri sau utiliznd meniul principal al sistemului: Menu, Preview. n starea de previzualizare, meniul sistemului este nlocuit de meniul n curs de editare, iar pe ecran este afiat o fereastr care indic opiunea selectat din acest meniu.

    5.4. Generarea i rularea meniurilor

    Un meniu editat poate fi salvat ca un fiier cu extensia implicit .MNX. Pentru a putea folosi meniul, trebuie generat un program la a crui rulare meniul s fie activat. Aceast operaie poate fi realizat din mediul Visual FoxPro: Menu, Generate... n fereastra deschis pe ecran se precizeaz numele fiierului ce va fi generat:

    n mod implicit, acesta are acelai nume cu cel al fiierului n care este memorat meniul, dar extensia .MPR.

    O dat generat meniul, acesta poate fi rulat printr-o comand

  • 68 Baze de date n Visual FoxPro

    DO. Deoarece comanda DO presupune extensia implicit PRG (de la programe), este necesar specificarea extensiei .MPR: DO .MPR

    Observaie Revenirea la meniul standard al mediului de programare Visual FoxPro se realizeaz prin comanda: SET SYSMENU TO DEFAULT

    Aplicaie S se editeze un meniu pentru crearea i modificarea structurii unui fiier ct i pentru editarea coninutului lui:

    ) Indicaii Se lanseaz Menu Designer. Se editeaz opiunile meniului principal.

    Opiunea Stop are asociat urmtoarea procedur: Procedure close all set sysmenu to default

    Se editeaz opiunea Fisier din meniu.

    Se previzualizeaz, se genereaz i se ruleaz meniul creat.

  • Baze de date n Visual FoxPro 69

    6. Generarea rapoartelor

    Raportul reprezint un set de informaii, constituite pe baza datelor introduse anterior n bazele de date, care urmeaz a fi tiprit la imprimant sau afiat pe display-ul calculatorului. Definirea unui raport se realizeaz, ca i n cazul formularelor, prin utilizarea tehnologiei POO (Programare Orientat Obiect) care permite definirea i modificare proprietilor obiectelor introduse n raport.

    Componenta Visual FoxPro-ului care permite crearea i modificarea rapoartelor precum i generarea secvenei de cod necesare pentru execuia acestora este Report Designer.

    6.1. Crearea i deschiderea unui raport

    Crearea unui raport (fiier cu extensia implicit .FRX) poate fi iniiat prin comanda: CREATE REPORT [< nume raport>] sau prin alegerea opiunii File, New din meniu (n acest caz n caseta New se selecteaz Report i New file).

    Activarea (deschiderea) unui raport se poate realiza prin meniu (File, Open, Files of type: Report (*.frx)) sau prin comanda: MODIFY REPORT < nume raport>

    Observaie Prin lansarea Constructorului de rapoarte, n fereastra

  • 70 Baze de date n Visual FoxPro

    Report Designer, meniul principal va include opiunea Report care conine opiuni referitoare la diferite operaii.

    6.2. Imprimarea i afiarea rapoartelor

    Un raport este un fiier n care sunt memorate elementele sale precum i caracteristicile acestora. Imprimarea (Print) unui raport poate fi realizat n unul din urmtoarele moduri:

    din meniul principal (Report, Run Report),

    prin acionarea butonului sau a butonului din linia de instrumente,

    prin comanda: REPORT FORM TO PRINTER [PROMPT]

    (clauza PROMPT este folosit pentru specificarea parametrilor de tiprire)

    Pentru afiarea sau previzualizarea (Preview) pe ecran se poate utiliza:

    butonul din linia de instrumente standard, comanda:

    REPORT FORM PREVIEW Vizualizarea informaiilor din raport se realizeaz utiliznd bara utilitar de mai jos:

    Observaie Se poate obine trimiterea raportului spre un fiier (n loc de imprimant) cu ajutorul clauzei TO FILE a comenzii REPORT FORM:

    REPORT FORM TO FILE [ASCII]

    Prima pagin Ultima pagin

    Selectare pagin

    Pagina urmtoare Pagina anterioar

    Scala de afiare

    nchidere afiare

    Tiprire

  • Baze de date n Visual FoxPro 71

    Clauza ASCII determin modul de scriere n fiier: n prezena clauzei formatul fiierului va fi text, iar n absena acesteia formatul va fi unul specific imprimantei (informaiile se depoziteaz n fiierul respectiv, exact cum s-ar trimite la imprimant).

    6.3. Constructorul de rapoarte

    Report Designer fereastra principal care conine obiectele

    raportului. Data Environment mediul de date al raportului, fereastra

    pentru precizarea tabelelor de date care vor fi deschise automat n momentul rulrii raportului.

    Barele utilitare o Report Designer Toolbar - bara de butoane standard a

    raportului:

    Butoanele din aceast bar de instrumente permit deschiderea/nchiderea ferestrelor: Data Environment, Data Grouping (gruparea datelor) sau a barelor de lucru:

    o Report Control Toolbar butoanele de control; o Color Palette Toolbar stabilirea atributelor de culoare; o Layout Toolbar alinierea obiectelor n formular,

    suprapunerea obiectelor, etc.

    * Sfat Lucrai cu barele de instrumente asociate Constructorului de rapoarte. Dac acestea nu sunt afiate utilizai meniul: View, Toolbars

    Data Environment

    Layout Toolbar

    Color Palette Toolbar

    Report Controls

    Data Grouping

  • 72 Baze de date n Visual FoxPro

    O dat pornit Constructorul de rapoarte, pe ecran este afiat fereastra de editarea a raportului.

    Un raport este constituit din benzi care nu redau exact ceea ce va fi n raportul final, dar codific modul n care se determin ceea ce se afieaz n raport. Un raport poate conine urmtoarele benzi: Detail (detalii) genereaz rndurile de detalii (coninutul de

    baz al raportului). Pentru un raport care preia datele dintr-o tabel, banda de detalii a raportului ar putea corespunde nregistrrilor tabelei;

    Title (titlu) include o zon care se afieaz o singur dat, pe prima pe pagin a raportului. Aceast band conine de obicei titlul raportului i eventual, capul de tabel, dac acesta nu trebuie repetat pe fiecare pagin n parte);

    Summary (rezumat) - specific o zon care este afiat pe ultima pagin a raportului, la sfrit, o singur dat;

    Page Header (antet de pagin) - genereaz textul care va fi afiat n partea superioar a fiecrei pagini a raportului;

    Page Footer (subsol de pagin) - genereaz coninu