Baze de Date in Visual Foxpro

download Baze de Date in Visual Foxpro

of 87

description

Lucrul cu bazele de date in VFP

Transcript of Baze de Date in Visual Foxpro

  • 5/28/2018 Baze de Date in Visual Foxpro

    1/87

    Baze de daten 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 existlegturi, alctuind o bazde 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 deschisfereastra 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;

  • 5/28/2018 Baze de Date in Visual Foxpro

    2/87

    2 Baze de daten Visual FoxPro

    lime (Width) - numrul de caractere pe care l ocup fiecaredatmemoratn acel cmp;

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

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

    ajutorul creia datele din tabele sunt vzute ntr-o anumit

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

    fanionul de valoare nul (NULL) - arat dac n cmpulrespectiv 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 sfie 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]

  • 5/28/2018 Baze de Date in Visual Foxpro

    3/87

    Baze de daten Visual FoxPro 3

    o - numele tabelului de date care va fi deschis(extensia implicitDBF);

    o IN - permite deschiderea unui tabel de date ntr-o alt zonde 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- asigurexclusivitatea folosirii unui tabel de date

    atunci cnd se lucreazntr-o reea de calcul;

    o NOUPDATE - protejeaz tabelul de date la scriere (estedeschis 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 undepathdefinete noul director.

    Lista tabelelor de date aflate n directorul de lucru poate fiobinutprin lansarea comenzii:

    DIR

    Se poate limita, temporar, accesul la nregistrrile tabelului dedate prin folosirea comenzii:

    SET FILTER TO

  • 5/28/2018 Baze de Date in Visual Foxpro

    4/87

    4 Baze de daten 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 acestealias-uri utilizatorul poate defini i propriile sale alias-uri.

    Observaii La pornirea FoxPro-uluizona de lucru implicitva fi zona 1 (cu

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

    SELECT

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

    de utilizator. Dacalias-ul este 0 se va selecta prima zonde

    lucru neselectat.

    Pentru a obine informaii despre zonele de lucru folosite itabelele de date deschise se pot folosi doufuncii:

    USED([]) i DBF([])

    Funcia USED returneaz .T. sau .F. dac, n zona de lucru

    curentsau precizatprin alias, este sau nu prelucrat un tabel de

    date. Funcia DBFreturneaznumele tabelului de date deschis n

    zona de lucru.

  • 5/28/2018 Baze de Date in Visual Foxpro

    5/87

    Baze de daten Visual FoxPro 5

    Exemple:

    use personal in 1

    use nomenclator in B alias nomenselect nomen?dbf()C:\PROGRAMFILES\DEVSTUDIO\VFP\JOB\NOMENCLATOR.DBF?used(1).T.

    1.3. Modificarea structurii unui tabel de date

    Modificarea caracteristicilor unui tabel de date poate fi fcutprin

    comanda:

    MODIFY STRUCTURE

    Aceastcomandpermite 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 dedate sunt :

    schimbarea numelor, tipurilor i limii cmpurilor dejaexistente;

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

    acionarea butoanelor Deletei Insert.

    Dupefectuarea modificrilor, FoxPro copiazconinutul 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

  • 5/28/2018 Baze de Date in Visual Foxpro

    6/87

    6 Baze de daten 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 curentiar a doua nchide i elibereaztoate zonele de lucru

    (n acest caz zona curentdevine zona de lucru 1).

    1.5. Editarea coninutului unui tabel de date

    Prelucrarea nregistrrilor. nregistrarea curent.Un grup de nregistrri (domeniu) poate fi:

    All semnifictoate nregistrrile tabelei; Next urmtoarele nregistrri; Record - nregistrarea cu numrul de ordine specificat; Rest restul nregistrrilor din poziia curentpnla sfritul

    tabelului.

    Prelucrarea tabelelor de date se realizeaz la nivel denregistrare. La un moment dat este activ un singur tabel de date i o

    singurnregistrare din acest tabel. Fiecare nregistrare are un numrde ordine, asociat acesteia la introducerea ei n tabelul de date.Numrul de ordine al nregistrrii curente poate fi modificat princomenzile:

    GOTOTOP | BOTTOM | RECORD

    (salt la prima, ultima sau nregistrarea precizatdin tabel);

  • 5/28/2018 Baze de Date in Visual Foxpro

    7/87

    Baze de daten 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. dupcum este detectat sau numarcajul de sfrit de fiier (aflat dupultima nregistrare);

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

    curente.

    Exemple:use personal?recno()1goto record 7?recno()7goto top?recno()1skip 1

    ?bof().T.skip 3?recno()3go bottomskip?eof().T.locate for nume=ALEX

  • 5/28/2018 Baze de Date in Visual Foxpro

    8/87

    8 Baze de daten Visual FoxPro

    Introducerea nregistrrilor noi ntr-un tabel de date

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

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

    vide (adugri, inserri):

    APPEND BLANK sau INSERTBLANK [BEFORE]

    Inserarea se executimplicit dupnregistrarea curent, dacnu

    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 efectueazla

    nivel logic sau fizicprin utilizarea comenzilor DELETE, RECALL, PACK,

    ZAP.

    a)tergerea logic (marcare pentru tergere).Prin marcareapentru tergere nregistrrile din tabelele de date nu sunt

    eliminate definitiv. Pentru tergerea logic este utilizat

    comanda:

    DELETE [] [FOR ] [WHILE ]

    Aceastcomand(precum i altele) folosete clauza FORpentru

    selectarea tuturor nregistrrilor care corespund condiiei logice. Clauza WHILE ntrerupe testarea nregistrrilor cnd

    gsete o nregistrare ce nu respectcondiia dat, .

    Accesul la nregistrrile marcate pentru tergere este controlat decomanda:

    SET DELETED ON OFF

  • 5/28/2018 Baze de Date in Visual Foxpro

    9/87

    Baze de daten Visual FoxPro 9

    Cnd se alege opiunea ON, nregistrrile marcate pentru

    tergere nu vor fi accesibile celorlalte comenzi, iar cnd se

    selecteazopiunea 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 logicpotfi anulate prin folosirea comenzii:

    RECALL [] [FOR ] [WHILE ]

    c)tergerea fizic. Prin folosirea acestui tip de tergerenregistrrile sunt eliminate definitiv din tabelul de date(tergerile fizice nu mai pot fi refcute). tergerile fizice auefect asupra nregistrrilor marcate logic sau asupra tuturornregistrrilor din tabelul de date prelucrat prin utilizarea uneiadin 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 REPLACEpermite actualizarea tabelelor de date cu valori

    precizate n comandi 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.

  • 5/28/2018 Baze de Date in Visual Foxpro

    10/87

    10 Baze de daten Visual FoxPro

    Exemple:

    use personal?reccount()25append blank?reccount()26goto 7insert blank before?recno()7dele next 3

    skip -1recallpack?reccount()24replace 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 BROWSEcare poate fi editatn urmtoarea sintax:

    BROWSE[FIELDS ] [FOR ][FREEZE ][NOAPPEND] [NODELETE] [NOEDIT NOMODIFY]

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

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

    o FREEZE- permite modificri doar pe cmpul precizat;o NOAPPEND invalideazposibilitatea efecturii adugrilor;o NODELETE eliminmarcarile pentru tergere;o NOEDIT NOMODIFY - interzice modificrile.

  • 5/28/2018 Baze de Date in Visual Foxpro

    11/87

    Baze de daten Visual FoxPro 11

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

    o nouopiune, Table, care permite:

    adugarea unei noi nregistrri la un tabel de date:Append NewRecord(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

  • 5/28/2018 Baze de Date in Visual Foxpro

    12/87

    12 Baze de daten 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 tabelelorconform sintaxei comenzii REPLACE: Replace Field.

    Cmpuri MEMO

    Cmpurile MEMO definesc cmpuri de lungime variabil detip text. Un tabel de date, cu cel puin un cmp MEMO, are asociat unfiier 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 MEMOasociat

  • 5/28/2018 Baze de Date in Visual Foxpro

    13/87

    Baze de daten Visual FoxPro 13

    aparin unei anumite nregistrri, n tabelul de date, pe poziiacorespunztoare 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 cmpmemo;

    CLOSE MEMO[,,....] ALL

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

    APPEND MEMO FROM [OVERWRITE]

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

    COPY MEMO TO [ADDITIVE]

    -coninutul unui cmp memose copiazntr-un fiier extern detip text. Dacse folosete clauza ADDITIVE copierea se va face lasfritul unui fiier deja existent.

    1.6. Ordonarea i actualizarea tabelelor de date

    nregistrrile apar, n tabelul de date, n ordinea n care au fostintroduse, dar nu ntotdeauna aceasta este i ordinea lor de utilizare.Ordonarea unui tabel presupune stabilirea unui criteriu dupcare sfieparcurse nregistrrile acestuia. Acest criteriu poate fi un cmp sau o

    combinaie de cmpuri ale tabelului de date numit cheie de ordonare.

  • 5/28/2018 Baze de Date in Visual Foxpro

    14/87

    14 Baze de daten Visual FoxPro

    O cheie de ordonare este o expresie, alctuitdin cmpuri ale tabelului,

    care este evaluatpentru fiecare nregistrare, ordinea de prelucrare anregistrrilor fiind dat de valorile acestei expresii. Se folosesc doumetode de ordonare a bazelor de date: fizici logic.

    Ordonarea fizic(sortarea)

    Sortarea constn rearanjarea fizica datelor din tabel ntr-o altordine, datde criteriul de sortare. Astfel rezultun tabel de date nou

    cu aceleai informaii ca i cel original, dar ordinea fizic(natural) anregistrrilor 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, relativla cmpul

    asociat;o /C- sortare n ordine alfabetic, necontnd literele mari sau mici;o ASCENDING DESCENDING- ordonare ascendentsau 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 atabelelor de date, care permite ca operaiile de consultare i cutare adatelor n tabel sfie rapide. Prin indexare se creeazun fiier index,asociat bazei de date, de dimensiuni mult mai mici dect dimensiuneabazei de date. Fr a detalia structura fiierului index, trebuiemenionat c fiierul index este o list simplu nlnuit a numerelor

    articolelor din baza de date aflate n ordinea lor natural.

  • 5/28/2018 Baze de Date in Visual Foxpro

    15/87

    Baze de daten Visual FoxPro 15

    La definirea structurii bazei de date (prin CREATE sau MODIFY

    STRUCTURE), n coloana Index, se pot defini unul sau mai multe criteriide indexare care sunt identificate prin etichete (numele unei eticheteeste acelai, n acest caz, cu numele cmpului). Activarea unuia saualtuia din criteriile de indexare se realizeazn doumoduri:

    a) la deschiderea tabelului de date:USE ORDER

    b)n timpul lucrului prin comanda:SET ORDERTO TAG

    Stabilirea altor criterii de indexare, diferite de cele definite nstructura tabelului de date, se poate face prin comanda:

    INDEXON TAG [FOR ]

    [ASCENDING DESCENDING][UNIQUE]

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

    indexare

    tergerea unei etichete (criteriu) de indexare se realizeazutiliznd comanda:

    DELETE TAG ALL

    Principalul avantajal indexrii rezult din posibilitatea localizriirapidea unor nregistrri, mult mai eficientdect cea furnizatprinLOCATE. Acest lucru este realizat prin comanda:

    SEEK

  • 5/28/2018 Baze de Date in Visual Foxpro

    16/87

    16 Baze de daten 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 funciaTAG();

    efectul unei comenzi de cutare (SEEKsau LOCATE) poate fiprelungit prin folosirea comenzii CONTINUE;

    funcia FOUND()determin(.T. sau .F.) dacs-a reuit saunu localizarea.Comanda:

    SET EXACTON OFF

    stabilete modalitatea de cutarea pe subiruri de caractere.Clauza impliciteste OFF.

    Dac este un ir de caractere, acesta trebuie pus ntreapostrofuri.

    1.7. Introducerea formatata datelor

    FoxPro ofer posibilitatea introducerii datelor sub forma unormachete sau formate prin asocierea la clauza GET a clauzelorPICTUREi FUNCTION:

    @ [GET][PICTURE] [FUNCTION]

    [READ]

    @plaseazcursorul pe poziia specificata ecranului. GET stabilete poriunea de pe ecran unde vor fi introduse

    valorile ce vor fi atribuite variabilei .

  • 5/28/2018 Baze de Date in Visual Foxpro

    17/87

    Baze de daten 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 cucea a codului.

    Codurile FUNCTIONacioneazasupra tuturor caracterelor dinformatul de afiare.

    Clauzele PICTURE i FUNCTION pot aciona mpreun, darFUNCTIONeste prioritar.

    READdetermincitirea coninutelor zonelor de editare pentruintroducerea valorilor de la tastatur, create prin GET.

    Codurile de formatare PICTUREX Permite orice caracter9 Cifre i semnele + - . E (date numerice)# Cifre, spatii i semnele + - . EA Numai litereW Numai date logiceN Numai litere i cifreY Permite doar caracterele logice Y, y, N i n! Literele sunt convertite n majuscule* Afieazasterix-uri n locul zerourilor iniiale. Specificpoziia punctului zecimal.

    Codurile de formatare FUNCTIONA Permit numai caractere alfabetice (litere)B Aliniere la stngaI CentrareJ Aliniere la dreapta

    C Dupun numr pozitiv se afieazCR(credit)D Format datcalendaristicstabilit de SET DATEE Format datcalendaristiceuropean (britanic)T Eliminspatiile de nceput i sfritX Dupun numr negativ se afieazDB(debit)Z Afieazspatii dacvaloarea cmpului este 0( Numerele negative sunt incluse ntre paranteze! Literele sunt convertite n majuscule.

  • 5/28/2018 Baze de Date in Visual Foxpro

    18/87

    18 Baze de daten Visual FoxPro

    Exemple:

    * citirea unui numr cu dou zecimale pe cmp de 7caractere: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 doucifre 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 modificareastructuriitabelelor de date (vezi comanda MODIFY STRUCTURE) saumodificarea coninutului acestora. n ceea ce privete modificareaconinutului unui tabel de date se au n vedere posibilitile detergere 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 sepoate utiliza comanda BROWSEsau se pot alctui secvene program.

    Exemplu.Fie fiierulAgenda.dbf,avnd structura:

    Nume Caracter 30Data_N Date 8

    Telefon Caracter 10

  • 5/28/2018 Baze de Date in Visual Foxpro

    19/87

    Baze de daten Visual FoxPro 19

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

    procedure introducereclear@10,10 say 'Numele' get nume function '!'@12,10 say 'Data nasterii' get data_n@14,10 say 'Telefonul' get telefonreadendproc

    Folosind aceastprocedurse poate edita urmtoarea secven

    pentru consultarea i actualizarea fiieruluiAgenda.dbf:

    clearuse agendaTEXT

    Alegeti optiunea:1. Afisare2. Adaugare3. Modificare0. Terminare

    ENDTEXT

    opt=0@10,20 say 'Optiunea:' get opt picture '9' range 0,3read

    cleardo case

    case opt=1do afisare

    case opt=2do adaugare

    case opt=3do modificare

    case opt=0cancel

    endcasecancel

    procedure afisarebrowse

    endprocprocedure adaugare

    append blank

  • 5/28/2018 Baze de Date in Visual Foxpro

    20/87

    20 Baze de daten Visual FoxPro

    do introducereendproc

    procedure modificarenumele = space(30)@10,0 say 'Numele cautat' get numele function '!'readlocate for nume=numeleif found()

    do introducereelse

    WAIT'Nume negasit!'endif

    endprocObservaiio Pentru afiarea meniului de opiuni s-a utilizat instruciunea

    TEXT ENDTEXTo 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 nlucrul cu tabele de date. Aceast structur repetitiv realizeazparcurgerea tabelului i executarea unui grup de instruciuni pentrufiecare nregistrare care ndeplinete condiiile specificate. Ciclul esteutilizat, deseori, pentru actualizarea coninutului tabelelor de date,conform unor anumite condiii, sau pentru obinerea informaiilorstatistice.

    Sintaxa este:

    SCAN[] [FOR ] [WHILE ][][LOOP][EXIT]

    ENDSCAN

  • 5/28/2018 Baze de Date in Visual Foxpro

    21/87

    Baze de daten Visual FoxPro 21

    1.10. Extragerea unor informaii statistice

    Comenzile care permit extragerea unor informaii din tabelelede date se aplicasupra unor cmpuri sau asupra unor expresii careconin numele unor cmpuri.

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

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

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

    - nsumeazvalorile 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 ]

    - calculeazanumite 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 prezentneta unei investiii (vezifuncia de calcul financiar);

    CNT() numrul de nregistrri din tabelul de date.

  • 5/28/2018 Baze de Date in Visual Foxpro

    22/87

    22 Baze de daten 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 Datcalendaristic

    sex Sex Logic adresa Adresa angajatului Memo20 Se introduc n tabel urmtoarele nregistrri:

    - n cmpul sexse 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 memocorespunztor30 Informaii privind:

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

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

    ?reccount()

    ?recno()

  • 5/28/2018 Baze de Date in Visual Foxpro

    23/87

    Baze de daten Visual FoxPro 23

    40 Operaii asupra tabelului de date:

    limitarea accesului n tabel la nregistrrile care conin angajaide 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 corespunztoarepersoanelor 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 estecuprins ntre 3500000 i 12000000:

    dele all for salariu >=3500000 and salariu

  • 5/28/2018 Baze de Date in Visual Foxpro

    24/87

    24 Baze de daten Visual FoxPro

    browse

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

    browse

    50 Editarea tabelului de date selectiv (selecii pe orizontali pe

    vertical) utiliznd comanda BROWSE:

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

    editarea nregistrrilor corespunztoare persoanelor de sexmasculin 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 adresalocate 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) iSalariu(cheie secundar), ascendent:

    sort on functia, salariu to Persoaneuse Persoanebrowse

    8

    0

    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 marcaindex on marca tag marca

  • 5/28/2018 Baze de Date in Visual Foxpro

    25/87

    Baze de daten Visual FoxPro 25

    90 Vizualizarea tabelului de date conform celor patru criterii deindexare definite anterior:

    set order to tag numbrowseset order to tag funcbrowseset order to tag salariubrowse?tag()set order to tag marcabrowse100 Folosind criteriul marca, se localizeaznregistrarea de cod

    204 i se face, pentru aceasta, o mrire de salariu de 8%:set order to tag marcaseek '204'replace salariu with salariu*1.08110 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=0scan for functia='Secretara'

    a=a+1endscan?a

    media salarialpentru 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

  • 5/28/2018 Baze de Date in Visual Foxpro

    26/87

    26 Baze de daten Visual FoxPro

    sau (prin program):

    maxim= salariuscanif salariu >maxim

    maxim=salariuendif

    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 suntreunite ntr-o singur colecie. Fiecare baz de date are asociat undicionar de datecare ofermai multflexibilitate n proiectarea imodificarea bazei de date i reduce sarcina programatorului de ascrie cod pentru validrile la nivel de cmp i de nregistrare sau

    pentru a asigura unicitatea valorilor din cmpurile reprezentnd cheiprimare. Fiierele baz de date, coninnd tabele de date iinformaiile asociate lor sunt fiiere avnd extensia implicitdbc.

    Dicionarul de date Visual FoxPro permite crearea sauspecificarea 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 iniiatprin comanda:

    MODIFY DATABASE[]

  • 5/28/2018 Baze de Date in Visual Foxpro

    27/87

    Baze de daten Visual FoxPro 27

    sau prin alegerea opiunii File, New din meniu(n acest caz n casetaNew se selecteazDatabase i New file). Cnd se creeaz o nou

    baz de date, aceasta nu conine nimic (tabele asociate sau alteobiecte).

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

    ObservaieLucrul cu bazele de date se realizeazutiliznd Constructorulbazei de date n fereastra Database Designer, in meniulprincipal fiind activat opiunea Database care oferinstrumentele de lucru cu bazele de date.

    SfatLucrai cu bara de instrumente Database Designer. Dacaceasta nu este afiat utilizai meniul: View,ToolbarsDatabase Designer.

    Bara de instrumente Database Designerpermite efectuarea unoroperaiuni asupra bazelor de date cum ar fi:

    New Table Crearea unui nou tabel de date i includerea luin baza de date; Add Table Includerea unui tabel deja creat n baza de date; Remove Table Eliminarea unui tabel de date din baza dedate; Modify Table Modificarea structurii unui tabel; Browse Table Deschiderea ferestrei de vizualizarea pentruun tabel;

    New Local View Crearea unei vederi (View).

    New Table

    Add Table

    Remove TableNew Local View

    Modify TableBrowse Table

  • 5/28/2018 Baze de Date in Visual Foxpro

    28/87

    28 Baze de daten Visual FoxPro

    2.2. Adugarea tabelelor la baza de date

    Fiecare tabel Visual FoxPro poate exista n una din urmtoareledou stri: ca tabel liber, adic sub form de fiier .dbf neasociatvreunei baze de date, sau ca tabel dintr-o baz de date, adic subform de tabel asociat unei baze de date. Tabelele asociate uneibaze de date au unele proprieti specifice, care nu exist n cadrultabelelor externe, cum ar fi regulile la nivel de cmp i denregistrare, declanatoarele i relaiile permanente.

    Tabelele pot fi asociate cu o baz de date prin crearea lor ncadrul unei baze de date deschise n fundal sau prin adugareatabelelor existente la o bazde date.

    ObservaieUn tabel existent poate fi asociat cu o singur baz dedate.

    2.3. Eliminarea tabelelor din baza de date

    Prin adugarea unui tabel la o baz de date, Visual FoxPromodific nregistrarea din antetul fiierului corespunztor tabeluluipentru a actualiza calea i numele fiierului asociat bazei de date careinclude acum tabelul. Procesul de eliminare a unui tabel dintr-o bazde date (Remove Table)nu numai cterge tabelul i dicionarele dedate din fiierul bazei de date, ci actualizeaz informaia de relaiepentru a reflecta noul statut al tabelului, cel de tabel liber. Eliminarea

    unui tabel dintr-o bazde date nu determintergerea automat afiierului asociat tabelului. Pentru tergerea fiierului .dbf se poateutiliza comanda DELETE.

    2.4. Crearea relaiilor permanente ntre tabele

    Pentru stabilirea unor relaii ntre tabele, trebuie inut cont cacestea nu sunt relaii de egalitate, ci de subordonare. Unul dintre

    tabele va fi printe(Parent Table), iar cellalt copil(Child Table).

  • 5/28/2018 Baze de Date in Visual Foxpro

    29/87

    Baze de daten Visual FoxPro 29

    n Visual FoxPro, sunt utilizai indecii pentru a stabili relaiipermanente ntre tabelele bazei de date. Indecii sunt constituii pe

    baza unor expresii (n particular indecii pot fi nume de cmpuri aletabelelor) prin utilizarea procedeului de indexare. Tipul etichetei deindex sau al cheii determintipul de relaie permanentcare se poatecrea. Este necesar folosirea unei chei primare (Primary) pentrurelaii una la mai multe. Pentru partea mai multe, cheile deindexare sunt chei obinuite(Regular).

    ExempluBaza de date Furnizor.dbc include tabelele clienti.dbf,

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

    i produse.dbf comenzi.dbf. n tabelul clienti.dbf respectivproduse.dbf cheile codc, codp sunt primare (unice), valorilecorespunztoare acestora neputnd fi scrise dect o singurdat ntabel nu pot exista mai muli clieni sau mai multe produse cuacelai cod:

    Figura 2.1

  • 5/28/2018 Baze de Date in Visual Foxpro

    30/87

    30 Baze de daten Visual FoxPro

    n tabela copil, comenzi.dbf,pot apare de mai multe ori acelaicoduri de clieni sau produse. Se impune stabilirea cheilor codc icodpdrept 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 derelaie dintre doutabele. Ca urmare, limea liniei de relaie cretepentru a indica faptul c s-a selectat relaia respectiv. Pentrueliminarea relaiei se apastasta DELETE.

    Figura 2.3

    Figura2.2

  • 5/28/2018 Baze de Date in Visual Foxpro

    31/87

    Baze de daten Visual FoxPro 31

    Crearea integritii refereniale

    Generatorul de Integritate Referenial (ReferentialIntegrity Builder) se lanseazprin meniu: Database, Edit ReferetialIntegrity.Generarea integritii refereniale presupune crearea unuisetde reguli care spstreze relaiile definite ntre tabele atunci cndse insereazsau se terg nregistrri.

    Prin ntrirea integritii refereniale, Visual FoxPro nu permite:

    Sse adauge nregistrri la un tabel copil atunci cnd nu existnici o nregistrare asociatn tabelul printe.

    Sse modifice valori n tabelul printe care ar duce la apariiade nregistrri orfane n tabelul copil. Sse teargnregistrri din tabelul printe atunci cnd exist

    nregistrri asociate n tabelul copil.Generatorul de integritate referenial gestioneaz mai multe

    niveluri de tergere i actualizri n cascadi este instrumentul celmai potrivit pentru generarea integritii refereniale.

    Figura2.4

  • 5/28/2018 Baze de Date in Visual Foxpro

    32/87

    32 Baze de daten Visual FoxPro

    Observaii Se recomand lansarea generatorului de integritate

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

    Se recomand realizarea relaiilor de integritate ncascad.

    Dacse intervine n arhitectura bazei de date, de pild, prinmodificarea tabelelor sau a indecilor folosii ntr-o relaiepermanent, se impune relansarea generatorului nainte de

    a se folosi baza de date astfel nct acesta sreflecte nouaarhitectur. 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 reprezintun tip special de tabele, construite pe bazadatelor din una sau mai multe tabele sau vederi legate ntre ele prinrelaii.Vederile sunt folosite atunci cnd se dorete o altstructuratabelelor (bazelor de date), structurconstruitpe baza unor tabelei vederi deja existente.

    Observaii Vederile sunt incluse n bazele de date, ele neputnd fi

    folosite dect atunci cnd baza de date care le conine estedeschis. Chiar memorarea efectiv a vederilor se face nfiierul bazei de date (.dbc).

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

  • 5/28/2018 Baze de Date in Visual Foxpro

    33/87

    Baze de daten 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 selecteazView i New file), sau folosind butonul New Local Viewdin barade instrumente Database Designer. n meniul principal este activatopiunea Query care ofer instrumentele de lucru pentru vederi iinterogri. Pentru construirea vederilor se folosete un utilitar specialal SGBD-ului Visual FoxPro numit View Designer (Constructorul devederi).

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

    Construirea unei vederi implicparcurgerea urmtoarelor etapeprincipale:

    dac baza de date care urmeaz s conin vederea nueste 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:

  • 5/28/2018 Baze de Date in Visual Foxpro

    34/87

    34 Baze de daten Visual FoxPro

    apoi se stabilesc cmpurile care vor intra n componena

    vederii, cmpuri selectate dintre cele ale tabelelor sursprecizate anterior;

    n continuare, se specific o serie de parametri precum:legturile ntre tabelele specificate, eventualele condiii defiltrare (selecie), ordonare, grupare a datelor n vedere,modul de actualizare a datelor surs pe baza datelor dinvedere etc.

    Aplicaii

    10 Pentru evidena produselor livrate de un furnizor se creeazbaza de date Furnizor.dbc, avnd n componenurmtoarele tabelede 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)

  • 5/28/2018 Baze de Date in Visual Foxpro

    35/87

    Baze de daten Visual FoxPro 35

    unde Codceste codul atribuit firmei, iar Codpeste codul produsului i

    vor constituii cheilede legturntre tabele.

    20 Sse indexeze tabelele de date: clienti.dbfdupcmpul 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.dbfdupcmpul Codp - cheie primar.

    30 Sse 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 Codcdin tabelul clienti.dbfi tragere pestecheia Codcdin tabelulcomenzi.dbf).

    b) ntre tabelele de date produse.dbfi comenzi.dbf.40 S se lansezeGeneratorul de Integritate Referenial (prin

    meniu: Database, Edit ReferetialIntegrity) pentru realizarea relaiilorde integritate n cascad(Cascade) vezi figura 2.4. Sse verificestabilirea integritii refereniale n urmtoarele situaii: o tergere logic (DELETE) n tabelul printe, clienti.dbf, se

    reflectca tergere logicn tabelul copil comenzi.dbf. orice modificare a cheii primare din tabelul printe, clienti.dbf,

    se reflectca modificare n tabelul copil comenzi.dbf.

    50 Sse includn baza de date un tabel vedere, livrari:

  • 5/28/2018 Baze de Date in Visual Foxpro

    36/87

    36 Baze de daten Visual FoxPro

    IndicaieSe va aciona butonul New Local View din bara de instrumente

    Database Designeri 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 - nfuncie de anumite criterii i ntr-un anumit format - unor date dintabele de date care alctuiesc baze de date. Componenta VisualFoxPro-ului care realizeaz acest obiectiv se numete QueryDesigner (Constructorul de interogri), componentasemntoarea 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 implicitQPR) poate fi iniiatprin comanda:

    MODIFY QUERY[]

  • 5/28/2018 Baze de Date in Visual Foxpro

    37/87

    Baze de daten Visual FoxPro 37

    sau prin alegerea opiunii File, New din meniu(n acest caz n casetaNew se selecteazForm i New file).

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

    O interogare este o secvenexecutabilcare poate firulatn urmtoarele moduri:

    din meniul principal(Query, Run Query), prin acionarea butonului din linia de instrumente standard, prin comanda DO.ObservaiePrin lansarea Constructorului de interogri, n fereastraQuery Designer, meniul principal va include opiunea Querycare oferinstrumentele de lucru necesare.

    SfatLucrai cu bara de instrumente Query Designer.Dac aceastanu este afiat utilizai meniul: View, ToolbarsQueryDesigner.

    Bara de instrumente Query Designer permite efectuarea unoroperaiuni cum ar fi:

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

    Add Table

    Remove Table

    Add JoinShow the SQL window

    Query Destination

    Maximize the table

  • 5/28/2018 Baze de Date in Visual Foxpro

    38/87

    38 Baze de daten 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 aconinutului ferestrei Query Designer.Fereastra Query Designer(figura 3.1) este constituitdin dou

    zone, n care sunt afiate tabelele surse de date (mpreuncu legturiledintre ele), respectiv paginile n care se vor preciza parametrii dedefinire a interogrii i anume:

    Fields(cmpuri) specificarea cmpurilor sursce vor fi inclusen tabelul destinaie;

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

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

    Figura 3.1

  • 5/28/2018 Baze de Date in Visual Foxpro

    39/87

    Baze de daten Visual FoxPro 39

    3.2. Fereastra Query Designer

    Specificarea cmpurilor interogriiPentru ca un cmp sfie preluat ntr-o interogare se activeaz

    pagina Fields, dup care acesta se selecteaz din lista Availabilefields(cmpuri disponibile) i se acioneazbutonul Add. Ca urmarenumele cmpului va fi copiat n lista Selected fields(vezi figura 3.1).Dac se dorete introducerea unui cmp calculat se va introduceformula de calcul corespunztoare n caseta Functions andexpresions.

    Specificarea legturilor ntre tabelele de dateModelul 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 cadrulunor secvene program. Stabilirea legturilor dinamice se poaterealiza cu ajutorul comenzii:

    SET RELATION TO INTO ,

    INTO ,unde:

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

    La fel ca n cazul definirii unei vederi (cu View Designer), pentrustabilirea unei legturi ntre doutabele de date, este necesar ca celedoutabele saibcel puin un cmp comun prin intermediul cruia

    se realizeazcorespondena. Relaia stabilitntre doutabele legateeste o relaie de subordonare: unul din tabele va fi tabelul printe,iar cellalt va fi tabelul copil. Mutarea indicatorului de nregistrri altabelului printe pe o anumit nregistrare determin mutareaindicatorului de nregistrri al tabelului copil pe nregistrareacorespunztoare, dar nu i invers.

  • 5/28/2018 Baze de Date in Visual Foxpro

    40/87

    40 Baze de daten Visual FoxPro

    Observaii: Este obligatorie indexarea tabelului copil dup criteriul care

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

    Se pot stabilii doutipuri de legturi ntre tabelul printe itabelul copil:

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

    o legturi unu la mai multe, cnd nregistrriletabelului copil pot lua i valori egale pe cheia deindexare.

    Legturile permanente necesare pentru stabilirea uneiinterogri se aleg folosind pagina Join(figura 3.2), prin specificareacmpurilor care fac obiectul legturii i a tipului de legtur: Inner Join legturinterioar, 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 aucorespondent n tabelul copil;

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

    Full Join vor fi considerate toate legturile.

    Figura 3.2

  • 5/28/2018 Baze de Date in Visual Foxpro

    41/87

    Baze de daten 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 OrderBy. n figura 3.4 s-a selectat ordonarea dup cmpul nume dintabelul Studenti.dbf:

    Gruparea datelor

    Figura 3.3

    Figura 3.4

  • 5/28/2018 Baze de Date in Visual Foxpro

    42/87

    42 Baze de daten Visual FoxPro

    Query Designer (pagina Group By) permite ca mai multe

    nregistrri s fie cumulate dup mai multe criterii, pentru fiecaregrup de nregistrri fiind furnizat n tabelul de destinaie o singurnregistrare. Gruparea poate fi realizat dup unul sau mai multecmpuri care vor forma cheia de grupare. nregistrrile avndaceleai chei de grupare vor furniza n tabela de destinaie o singurnregistrare (cmpurile numerice pentru un grup vor conine valoriobinute prin nsumarea valorilor corespunztoare din grup).

    Destinaia interogrii

    Datele extrase prin interogare pot fi trimise spre o anumitdestinaie (folosind butonul Query Destinationdin bara de butoane aConstructorului de interogri) cum ar fi:

    fereastra Browse- implicit; un tabel permanent (Table)acesta putnd fi folosit ntr-o nou

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

    Graph.

    Figura3.5

  • 5/28/2018 Baze de Date in Visual Foxpro

    43/87

    Baze de daten Visual FoxPro 43

    Aplicaii

    10 Sse 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.dbfdupcmpurile Matricolarespectiv Cod.

    30 Sse creeze i sse ruleze fiierul de interogare a tabelelor de

    date Studenti.dbf, Discipline.dbf, Note.dbf, pentru afiarea notelorstudenilor inclui n baza de date (vezi figura 3.1 i figura 3.2). Ssestabileascca destinaie a interogrii fiierul Catalog.dbf(vezi figura3.5) i sse vizualizeze coninutul acestui tabel.

    40 Sse realizeze interogarea bazei de date pentru afiarea notelorn ordinea alfabetica numelor studenilor (vezi figura 3.4).

    50 S se ruleze fiierul de interogri pentru afiarea notelorstudenilor din grupa FC01 (vezi figura 3.3).

    60 Sse ruleze fiierul de interogri pentru toate cele patru tipuri delegturi (Inner Join, Left Join, Right Join, Full Join) vezi figura 3.2.

  • 5/28/2018 Baze de Date in Visual Foxpro

    44/87

    44 Baze de daten Visual FoxPro

    4. Utilizarea formularelor

    Formularul (forma) reprezint o fereastr pentruintroducerea sau extragerea datelor utilizatorului, n mod interactiv,cu ajutorul unor obiecte de interfa crora le sunt asociateproprieti i metode (secvene de instruciuni secvene de cod).Definirea unui formular se realizeazprin utilizarea tehnologiei POO(Programare OrientatObiect) care permite modificare proprietilorobiectelor incluse n formular, ceea ce se reflect n aspectul

    formularului i a comportamentului acesteia n diferite situaii.

    Form Designer (Constructorul de formulare) este ocomponent a Visual FoxPro - ului dedicat crerii i modificriiformularelor precum i generrii secvenei de cod necesare pentruexecuia acestora (fiierele corespunztoare au extensia implicitscx).

    4.1. Crearea, deschiderea i rularea unui formular

    Crearea unui formular (fiier cu extensia implicitSCX)poate fi iniiatprin comanda:

    MODIFY FORM[]

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

    New se selecteazForm i New file).

    Activarea (deschiderea) unui formular se poate realiza prinmeniu (File, Open, Files of type: Form (*.scx)) sau prin comandaMODIFY FORM.

    Scopul crerii unui formular este obinerea unei secveneexecutabile care poate fi rulatn urmtoarele moduri:

  • 5/28/2018 Baze de Date in Visual Foxpro

    45/87

    Baze de daten Visual FoxPro 45

    din meniul principal(Form, Run Form), prin acionarea butonului din linia de instrumente standard, prin comanda DOFORM.ObservaiePrin lansarea Constructorului de formulare, n fereastraForm Designer, meniul principal va include opiunea Formcare oferinstrumentele de lucru necesare.

    4.2. Elementele constructorului de formulare

    Ferestrele de lucru Form Designer fereastra principalcare 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 fideschise automat n momentul rulrii formularului.

    Ferestrele pentru cod succesiunile de instruciuni careurmeaza fi executate la apariia diferitelor evenimente dincadrul formularului cum ar fi: acionare unui buton, selectareunui obiect, etc.

    Barele utilitare Form Designer Toolbar - bara de butoane standard a

    formularului:

    Data Environment La out Toolbar

    Properties Window Color Palette Toolbar

    Form Controls ToolbarCode Window

  • 5/28/2018 Baze de Date in Visual Foxpro

    46/87

    46 Baze de daten Visual FoxPro

    Lista obiectelor din formular

    Valoareaproprietii

    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.

    SfatLucrai cu barele de instrumente. Dac acestea nu suntafiate utilizai meniul: View, Toolbars

  • 5/28/2018 Baze de Date in Visual Foxpro

    47/87

    Baze de daten Visual FoxPro 47

    4.3. Mediul de date al formularului (Data Environment)

    Constructorul de formulare permite configurarea mediului dedate n care lucreaz formularul, adic a zonelor de lucru i atabelelor de date deschise n ele. Tabelele de date sunt deschiseautomat (fr comenzi speciale), dac acestea sunt incluse n DataEnvironment,nainte de execuia formularului (este de la sine nelescaceste tabele de date au fost deja create).

    Observaii Deschiderea ferestrei Data Environmentpoate fi fcut

    prin meniu (View, Data Environment)sau folosind butonulcorespunztor din bara de butoane Form Designer. Astfel nmeniul principal este inclusopiunea DataEnvironment.

    Includerea (Add) unui tabel n Data Environment esterealizatprin meniu: DataEnvironment,Addsau prin clic cubutonul 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 dedate necesare (dac nu este utilizat, tabelele asociate suntdeschise automat).

    Metoda Load Event poate fi folosit, de asemenea, ladeschiderea tabelelor. Aceasta este iniiat dup metodaOpenTables.

    Metoda Init Eventeste o metodapelatdupmetoda Load,i face anumite iniializri ale obiectelor din formular, inclusiv cudatele din tabelele care sunt deja deschise.

    Metoda CloseTablesare ca scop nchiderea tabelelor de datedin mediul de date al formularului la iniiativa utilizatorului.

    Metodele Unload (descrcare) i Destroy (distrugere aformularului) acioneaz asupra mediului de date i suntactivate dupmetoda CloseTables.

  • 5/28/2018 Baze de Date in Visual Foxpro

    48/87

    48 Baze de daten Visual FoxPro

    4.4. Utilizarea controalelor

    Includerea controalelor n cadrul unui formular se realizeazprin introducerea unor obiecte (Label, Text Box, etc.) n acestformular. Pentru aceasta, se acioneaz butonul corespunztor dinForm Controls Toolbar i se stabilete poriunea dreptunghiular(zona) din formular unde va fi afiat obiectul. Practic, obiectul va fidesenat (se poziioneaz cursorul mouse-ului n colul stnga-sus alzonei 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 fiindconsiderat un obiect. Fereastra Properties permite alegereaobiectului 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 numeobiectelor. Visual FoxPro stabilete valori impliciteproprietilor Captioni Namecum ar fi:

    o Form1, Form2 pentru formulareo Label1, Label2... pentru obiectele Labelo Command1, Command2pentru butoaneo Text1, Text2 pentru obiectele Text Boxo Edit1, Edit2 pentru obiectele Edit Box

    Aceste nume ale obiectelor pot fi folosite aa cum au fostdefinite de Visual FoxPro ns utilizatorul are posibilitateastabilirii unor denumiri proprii.

    Proprietatea FontSize stabilete atributele de scriereprivind dimensiunea fontului folosit.

    Proprietatea FontBold permite scrierea bold. Proprietatea BorderStyle ofer posibilitatea stabilirii

    atributelor de bordare.

  • 5/28/2018 Baze de Date in Visual Foxpro

    49/87

    Baze de daten Visual FoxPro 49

    Proprietatea Format permite introducerea formatat adatelor conform codurilor Function.

    Proprietatea Input Mask permite introducerea formatata datelor conform codurilor Picture.

    ObservaieO categorie special de proprieti o reprezint metodele.Metodele sunt secvene de cod (instruciuni) asociatediferitelor obiecte la activarea/dezactivarea acestora.

    Form Designer ofer posibilitatea modificrii unei proprieti

    prin comenzi de atribuire, referirea la proprietatea respectivfcndu-se prin construcia:

    .

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

    ..

    Existconstrucii speciale, mai scurte, cum ar fi:o This - care se referla obiectul curent;o ThisForm - care indic formularul ce conine

    obiectul curent;o Parent - care se referla obiectul care conine

    obiectul curent.

    ExempleForm1.Caption=Actualizare

    modificproprietatea Caption(titlu) a formularuluiForm1

    Form1.Vizualizare executmetoda Vizualizareataatformularului

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

    Label1ThisForm.Caption=Adugare

  • 5/28/2018 Baze de Date in Visual Foxpro

    50/87

    50 Baze de daten Visual FoxPro

    modificproprietatea Caption(titlu) a formularuluicurent

    ThisForm.Vizualizare execut metoda Vizualizare ataat formularului

    curentThis.Caption=Numele persoanei

    modificproprietatea Caption(titlu) a obiectului

    Obiecte din formular

    Obiecte simple

    Label afieazun text informativ

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

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

    Command Button este tipic pentru startulevenimentelor, pentru cutarea i nchiderea formularelor, mutareadiferitelor nregistrri, imprimarea rapoartelor, etc.

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

    Proprietatea Value furnizeaz valorile numerice 0 sau 1dupcum caseta este neselectatsau selectat(bifat).

    Proprietatea Style schimb stilul de afiare, avndvaloarea 0Standard sau 1-Graphical, caseta de validare

    primind aspectul unui buton neapsat/apsat:

  • 5/28/2018 Baze de Date in Visual Foxpro

    51/87

    Baze de daten Visual FoxPro 51

    Spinner (casete de incrementare/decrementare).Obiectele Spinner permit utilizatorului s-i stabileasc opiunileparcurgnd incremental o plaj de valori sau introducnd directvalorile n caset. Pentru aceasta, cmpul de editare al casetei are n

    dreapta sa dou butoane: unul pentru incrementare i altul pentrudecrementare:

    Proprieti principale: Proprietatea Value stabilete valoarea iniial nscris n

    caseti furnizeazvalorile editate la execuia formularului.

    Proprietile KeyboardHighValuei KeyboardLowValuestabilesc limita superioar i inferioara valorilor introdusen cmpul de editare direct de la tastatur(depirea acestorlimite genereazmesaj de eroare).

    Proprietile SpinnerHighValue i SpinnerLowValuestabilesc limita superioar i inferioara valorilor introdusecu ajutorul butoanelor de incrementare/decrementare(depirea acestor limite nu conduce la eroare dar valoareaaflatn editare nu mai este mrit/micorat).

    Combo Box - List Box (casete cu list - listderulant). Listele sunt obiecte care ofer utilizatorului posibilitateaselectrii unor elemente dintr-o mulime finit, afiat total sauparial pe ecran. Se utilizeazdoutipuri de liste: liste simple - ListBox i liste derulante sau expandabile - ComboBoxcare afieazdoarelementul curent al listei.

    Standard Gra hical

  • 5/28/2018 Baze de Date in Visual Foxpro

    52/87

    52 Baze de daten 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 rulareaformularului;

    o 1 Value (valoare), care presupune c elementelelistei sunt enumerate manual n proprietateaRowSource(listde elemente separate prin virgul);

    o 2 Alias, cnd elementele listei sunt preluate dintr-otabelde date specificatn 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.

  • 5/28/2018 Baze de Date in Visual Foxpro

    53/87

    Baze de daten Visual FoxPro 53

    Proprietatea RowSourcespecificsursa efectivde date.

    Numrul implicit de coloane dintr-o list este 1 ns pot ficonstruite i liste multicoloan. O variantsimplde a obine o listmulticoloan dintr-o list unicoloan o ofer proprietileRowSourceType i RowSource. De exemplu, dac proprietateaRowSourceType este 2 Alias proprietatea RowSource poate aveavaloarea Personal.Marca+Personal.Nume (pentru baza de datePersonal.dbf) astfel nct rezulto listde forma:

    Obiecte compuse (container)

    Obiectele compuse sunt constituite ca un grup de obiectesimple. Construirea(Builder) unui obiect container (de exempluincluderea unor obiecte simple) sau editarea (Edit)unui obiect inclusntr-un container presupuneacionarea butonului drept almouse-ului:

  • 5/28/2018 Baze de Date in Visual Foxpro

    54/87

    54 Baze de daten Visual FoxPro

    Option Group (butoane radio). Butoanele radio sunt un

    tip special de obiecte de interfacare oferposibilitatea alegerii uneisingure opiuni din mai multe posibile (sunt obiecte container).Proprietile cele mai utilizate ale butoanelor radio sunt:

    Proprietatea ButtonCount stabilete numrul decomponente ale obiectului.

    Proprietatea AutoSize determin calcularea automat adimensiunii grupului de butoane n funcie de coninut, dacare valoarea .T. True.

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

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

    Command Group (butoane de comand). Grupurile debutoane de comanda au roluri asemntoare cu ale butoanelor simple(Command Button)doar cele sunt constituite ca obiecte container,deci pot fi construite i editate ca acest tip de obiecte. Cele mai

    importante proprieti (ButtonCount, AutoSize, Value) suntidentice cu ale butoanelor radio.

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

    Standard Graphical

  • 5/28/2018 Baze de Date in Visual Foxpro

    55/87

    Baze de daten Visual FoxPro 55

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

    liniile, coloanelei 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 Gridare o organizare internarborescent, fiind dispus

    pe nivele: la primul nivel sunt situate coloanele apoi antetele coloanelori obiectele de interfa:

    Grila i elementele din grilau 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. nacest caz, nregistrrile tabelei vor fi linii n gril, iarcmpurile tabelului de date vor fi coloane;

    o 2 Prompt sursa de date (tabelul de date) sespecificla execuia formularului;

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

    Proprietatea RecordSource specific denumirea exact asursei de date.

    Grid

    Column1

    Header1

    Text1

    Column2

    Header2

    Text2

    Grila

    Coloana1

    Antet1

    Cmp1

    Coloana2

    Antet2

    Cmp2

  • 5/28/2018 Baze de Date in Visual Foxpro

    56/87

    56 Baze de daten Visual FoxPro

    Aplicaii

    10 Sse editeze urmtorul formular:

    Indicaii Se lanseazConstructorul de formulare. Se stabilescproprietile obiectelorn felul urmtor:

    Obiect Tip Proprietate Valoareproprietate

    Observaii

    Form1Form Caption Calcule

    financiare

    Command1

    ButtonCommand

    Caption Calculeaz Color Pallete : Verde

    FontBold .T. -True

    Label1Label Caption Funcia: Color Pallete : Rou

    Name Opt

    Caption FV Color Pallete : Rou

    Caption PV Color Pallete : RouCaption Payment Color Pallete : Rou

    FV

    PVPayment

    Optiongroup

    FontBold .T. -True

    a1Text Box Name a1 Color Pallete :

    Albastru

    FontSize 11FontBold .T. -True Primul argument

    a2Text Box Name a2 Color Pallete :

    Albastru

    FontSize 11FontBold .T. -True Al doilea argument

  • 5/28/2018 Baze de Date in Visual Foxpro

    57/87

    Baze de daten Visual FoxPro 57

    a3Text Box Name a3 Color Pallete :

    Albastru

    FontSize 11

    FontBold .T. -True Al treilea argument

    rezultatText Box Name Rezultat Color Pallete : Rou

    FontSize 12

    FontBold .T. -TrueAfieazrezultatul

    Se stabilesc metodele(secvenele de cod) folosind pagina Methoddin 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.Valuedo casecase Opt=1ThisForm.rezultat.Value=FV(a1,a2,a3)

    case Opt=2ThisForm.rezultat.Value=PV(a1,a2,a3)

    case Opt=3ThisForm.rezultat.Value=Payment(a1,a2,a3)

    endcase

    Calculeaz

    Click Event(se poate

    executa idublu click peobiect)

    Observaie: Deoarece valorile introduse n Text Box-uri suntde tip ir de caractere, este necesarconvertirea lor n valori

    numerice, utiliznd funcia val. Sesalveazi se executformularulastfel creat.

    20 Sse editeze un formular pentru actualizarea datelor din tabelul dedate Personal.dbf.

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

    tabelul Personal.dbf i se importn 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).

  • 5/28/2018 Baze de Date in Visual Foxpro

    58/87

    58 Baze de daten Visual FoxPro

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

    Se stabilescproprietile obiectelorn felul urmtor:Obiect Tip Proprietate Valoare

    proprietate

    Observaii

    Form1Form Caption Actualizare

    Command1Button

    Command

    Caption Vizualizare Color Pallete : Mov

    Command2Button

    Command

    Caption Adaug Color Pallete : Verde

    Command3Button

    Command

    Caption terge Color Pallete : Albastru

    Command4Button

    Command

    Caption Stop Color Pallete : Rou

    MText Box Name M Poziionare pe o anumit

    marc

    FontBold .T. -True

    ContorSpinner Name Contor Contorulnregistrrilor

    Value 1

    FontBold .T. -True

  • 5/28/2018 Baze de Date in Visual Foxpro

    59/87

    Baze de daten Visual FoxPro 59

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

    Obiect Metoda Secvena de cod

    Vizualizare

    ClickEvent

    browse

    Adaug

    ClickEvent

    append blankThisForm.RefreshThisForm.Contor.Value=recno()

    terge

    ClickEvent

    deletepack

    ThisForm.RefreshThisForm.Contor.Value=recno()

    Stop

    ClickEvent

    ThisForm.Release

    locate for This.Value=Marcaif found()

    ThisForm.RefreshThisForm.Contor.Value=recno()

    endif

    MLost FocusEvent

    Metoda Lost Focuspermite ca la ieirea din cmpul de editare sse 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.Valueif s>=1 and s=

  • 5/28/2018 Baze de Date in Visual Foxpro

    60/87

    60 Baze de daten Visual FoxPro

    30

    Sse editeze un formular pentru evidena unor calificative. nmediul de date al formularului se vor introduce (n aceastordine!)tabelele de date:

    a) Tabelul de date Calificative.dbf, avnd structura:Nume Character 30Nota1 Numeric 2Nota2 Numeric 2Media Numeric 5,2

    b) Tabelul de date Personal.dbf.

    Indicaii Obiectul GrdCalificativepoate fi creat n formular prin tragerea

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

    Environment.

    Se stabilescproprietile obiecteloractive n felul urmtor:

    Obiect Tip Proprietate Valoareproprietate

    Observaii

    Form1Form Caption Acordare

    calificative

    Adaug

    ButtonCommand

    Caption Adaug

    FontBold .T. -True

  • 5/28/2018 Baze de Date in Visual Foxpro

    61/87

    Baze de daten Visual FoxPro 61

    Stop

    ButtonCommand

    Caption Stop

    FontBold .T. -True

    Combo1

    ComboBox

    FontBold .T. -True Permiteselectarea uneicomponente dinfiierulPersonal.dbf

    RowSourceType 2 - AliasRowSource Personal.marca+

    Personal.numeAfiarea listei seface pe doucoloane

    GrdCalificative

    Grid FontSize 10 Liniile listei seadaugprinacionarea

    butonuluiAdaug

    Header1 Caption Numele persoaneiAlignment 2 Middle Center La fel i pentru

    celelalte cmpuriText1 Enabled .F. - False La fel pentru

    coloana 4

    Se stabilesc metodele (secvenele de cod) folosind paginaMethoddin fereastra Properties:

    Obiect Metoda Secvena de cod

    GrdCalificative,Column2,

    Text1

    LostFocus

    repl media with (nota1+nota2)/2

    -cmpul mediarezultdin calcul- la fel pentru GrdCalificative, Column3, Text1append blankrepl nume with personal.marca+personal.nume

    thisform.refresh

    Adaug

    ClickEvent

    -introduce n listmarca i numele persoaneiThisForm.Release

    Stop

    ClickEvent -dezactiveaz(nchide formularul)

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

    Sesalveazi se executformularulastfel creat.

  • 5/28/2018 Baze de Date in Visual Foxpro

    62/87

    62 Baze de daten Visual FoxPro

    5. Proiectarea meniurilor

    Meniurile sunt obiecte de interfa care pun la dispoziiautilizatorului o serie de opiuni care permit alegerea i declanareaunor operaii de prelucrare. Aproape orice interfa grafic conine,ntr-o formsau alta, un meniu. Un meniu apare, de obicei, n parteasuperioara ferestrelor de aplicaii i are o structurstandard, iar ngeneral, orice operaie care poate fi executatn cadrul unei aplicaiitrebuie saibun corespondent n meniul acesteia, pentru a putea fi

    executat. Utilizatorul i construiete un model mental al structuriiaplicaiei prin simpla examinare a meniurilor i a articolelor de meniu,meniul reprezentnd un mijloc prin care utilizatorul comunicsistemului ce operaie sefectueze la un moment dat.

    Un meniu este format, n general, dintr-o bar (sau unsubmeniu orizontal) care conine mai multe opiuni. Fiecare dintreacestea are asociat un submeniu vertical, care este activat numai laalegerea opiunii respective. Alegerea de ctre utilizator a opiunilor

    meniurilor verticale poate declana o operaie de prelucrare sau poatedetermina afiarea unui nou submeniu vertical.

    5.1. Crearea i deschiderea unui meniu

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

    Meniu orizontal(Meniu Bar)

    Submeniu Vertical(Submenu)

    Opiune selectatdin meniul orizontal

    Opiune selectatdin submeniu

  • 5/28/2018 Baze de Date in Visual Foxpro

    63/87

    Baze de daten Visual FoxPro 63

    MODIFY MENU[]

    sau prin alegerea opiunii File, New din meniu(n acest caz n casetaNew se selecteaz Menu i New file). Din fereastra deschis pe

    ecran se alege butonul Menu(meniu), dacse dorete crearea unuimeniu 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 lucruConstructorul de meniuri.

    Activarea (deschiderea) unui meniu care a fost dejagenerat se poate realiza prin selectarea acestuia (File, Open, Files oftype:Menu (*.mxx))sau princomanda MODIFY MENU.

    Sfatnainte de a stabili componentele unui meniu i caracteristicileacestora trebuie precizate o serie de opiuni, cum ar fi poziiafade meniul sistemului Visual FoxPro. Opiunile generale ale

    unui meniu pot fi precizate n fereastra de dialog GeneralOptions (opiuni generale): View, General Optionsdin meniulVisual FoxPro-ului.

    5.2. Definirea componentelor unui meniu

    Butoanele din seciunea Location (locaie) stabilesc poziianoului meniu fade meniul sistem:

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

    specificat n lista derulantalturat(care este afiatnumai laselectarea butonului);

    After noul meniu va fi plasat dupsubmeniul specificat.

  • 5/28/2018 Baze de Date in Visual Foxpro

    64/87

    64 Baze de daten Visual FoxPro

    Se pot specifica secvene de cod (Meniu code) la iniializareameniului (crearea sa) i tergerea meniului (eliminarea sa dinmemorie). Secvenele de cod respective se specific n ferestredeschise prin activarea comutatoarelor Setup (iniializare) iCleanup(tergere), urmatde acionarea butonului OK.

    n fereastra Meniu Designer sunt enumerate i descriseopiunile 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 sauvertical) al meniului proiectat. O opiune poate fi folosit pentruaccesul la un alt submeniu sau poate fi dedicat declanrii uneiaciuni. Pentru a reveni la meniul imediat superior se folosete lista

  • 5/28/2018 Baze de Date in Visual Foxpro

    65/87

    Baze de daten Visual FoxPro 65

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

    n fereastra Constructorului de meniuri, pe coloane, se specificcaracteristicile opiunilor, astfel:

    1. Coloana Prompt cuprinde textele informative ale opiunilor ncare se pot introduce i combinaii speciale, prin intermediulcrora se obin diferite efecte:

    Combinaia Efect\

  • 5/28/2018 Baze de Date in Visual Foxpro

    66/87

    66 Baze de daten Visual FoxPro

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

    o Cmpul de editare Key Label (etichet tast),pentru a indica faptul c opiunea poate fi aleasdirect prin utilizarea unei combinaii de taste.

    Combinaia de taste doriteste introdus n casetaKey Label prin apsarea combinaiei de tasterespective.

    o Cmpul Key Text (text tast) este un textsuplimentar ce poate fi ataat opiunii. n modimplicit Visual FoxPro repet tastele de comandrapiddin caseta Key Labelncaseta Key Text, daracesta poate fi modificat (de exemplu combinaia

    CTRL+L poate fi modificatn ^L). Skip For (srit cnd...) - permite impunerea uneicondiii prin care sse controleze accesul la o opiune. nacest cmp este introdus o expresie logic. Dacvaloarea ei este adevrat, atunci opiunea va fidezactivat, deci nu va fi disponibila pentru utilizator (eaapare cu culori terse, pentru a indica aceast stare).Dac valoarea expresiei este fals, opiunea va putea fialeasde utilizator. De exemplu, pentru ca o opiune s

  • 5/28/2018 Baze de Date in Visual Foxpro

    67/87

    Baze de daten Visual FoxPro 67

    fie accesibilnumai dacun fiier existpe disc condiiaintroduspoate fi: NOT(FILF(Furnizor.dbf)).

    Message (mesaj) - are ca efect apariia unui mesajexplicativ n bara de stare a Visual FoxPro-ului (plasatnpartea inferioara ferestrei mediului de programare).

    5.3. Previzualizarea meniului

    Este recomandabil ca, n faza de editare a unui meniu, s sefacafiarea de proba acestuia, chiar dacel nu a fost salvat sau

    programul corespunztor nu a fost nc generat. Acest procedeu senumete previzualizare. La previzualizare, alegerea unei opiuni ameniului nu este nsoit de execuia comenzii corespunztoare, cidoar de afiarea acesteia. Previzualizarea meniului n curs de editarese realizeaz prin acionarea butonului de meniuri sau utilizndmeniul principal al sistemului: Menu, Preview. n starea deprevizualizare, meniul sistemului este nlocuit de meniul n curs deeditare, iar pe ecran este afiat o fereastr care indic opiunea

    selectatdin 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 acrui rulare meniul s fie activat. Aceastoperaie poate fi realizatdin mediul Visual FoxPro: Menu, Generate... nfereastra deschispe

    ecran se precizeaznumele fiierului ce va fi generat:

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

    O datgenerat meniul, acesta poate fi rulat printr-o comand

  • 5/28/2018 Baze de Date in Visual Foxpro

    68/87

    68 Baze de daten Visual FoxPro

    DO. Deoarece comanda DO presupune extensia implicitPRG (de la

    programe), este necesarspecificarea extensiei .MPR:DO .MPR

    ObservaieRevenirea la meniul standard al mediului de programare VisualFoxPro se realizeazprin comanda:SET SYSMENU TO DEFAULT

    AplicaieS se editeze un meniu pentru crearea i modificarea

    structurii unui fiier ct i pentru editareaconinutului lui:

    Indicaii Se lanseazMenu Designer. Se editeazopiunile meniului principal.

    Opiunea Stopare asociaturmtoarea procedur:Procedureclose allset sysmenu to default

    Se editeazopiunea Fisierdin meniu.

    Se previzualizeaz, se genereazi se ruleazmeniul creat.

  • 5/28/2018 Baze de Date in Visual Foxpro

    69/87

    Baze de daten Visual FoxPro 69

    6. Generarea rapoartelor

    Raportul reprezint un set de informaii, constituite pe bazadatelor introduse anterior n bazele de date, care urmeaza fi tipritla imprimant sau afiat pe display-ul calculatorului. Definirea unuiraport se realizeaz, ca i n cazul formularelor, prin utilizareatehnologiei POO (Programare Orientat Obiect) care permitedefinirea i modificare proprietilor obiectelor introduse n raport.

    Componenta Visual FoxPro-ului care permite crearea imodificarea 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 iniiatprin comanda:

    CREATE REPORT[< nume raport>]

    sau prin alegerea opiunii File, New din meniu(n acest caz n casetaNew se selecteazReport i New file).

    Activarea (deschiderea) unui raport se poate realiza prinmeniu(File, Open, Files of type:Report (*.frx))sau princomanda:

    MODIFY REPORT< nume raport>

    ObservaiePrin lansarea Constructorului de rapoarte, n fereastra

  • 5/28/2018 Baze de Date in Visual Foxpro

    70/87

    70 Baze de daten 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 saleprecum i caracteristicile acestora. Imprimarea (Print) unui raportpoate fi realizatn unul din urmtoarele moduri:

    din meniul principal(Report, Run Report),

    prin acionarea butonului sau a butonului din liniade instrumente,

    prin comanda:REPORT FORM TO PRINTER [PROMPT](clauza PROMPT este folosit pentru specificarea parametrilorde 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 realizeazutiliznd barautilitar de mai jos:

    ObservaieSe poate obine trimiterea raportului spre un fiier (n loc deimprimant) cu ajutorul clauzei TO FILE a comenzii REPORTFORM:REPORT FORM TO FILE [ASCII]

    Prima pagin Ultima pagin

    Selectare pagin

    Pagina urmtoarePagina anterioar

    Scala de afiare

    nchidere afiare

    Tiprire

  • 5/28/2018 Baze de Date in Visual Foxpro

    71/87

    Baze de daten Visual FoxPro 71

    Clauza ASCII determinmodul de scriere n fiier: n prezena

    clauzei formatul fiierului va fi text, iar n absena acesteia formatulva fi unul specific imprimantei (informaiile se depoziteaz n fiierulrespectiv, exact cum s-ar trimite la imprimant).

    6.3. Constructorul de rapoarte

    Report Designer fereastra principal care conine obiecteleraportului.

    Data Environment mediul de date al raportului, fereastrapentru precizarea tabelelor de date care vor fi deschise automat nmomentul rulrii raportului.

    Barele utilitareo Report Designer Toolbar - bara de butoane standard a

    raportului:

    Butoanele din aceast bar de instrumente permitdeschiderea/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.

    SfatLucrai cu barele de instrumente asociate Constructorului derapoarte. Dac acestea nu sunt afiate utilizai meniul: View,Toolbars

    Data Environment

    LayoutToolbar

    Color Palette Toolbar

    Report Controls

    DataGrouping

  • 5/28/2018 Baze de Date in Visual Foxpro

    72/87

    72 Baze de daten Visual FoxPro

    O datpornit Constructorul de rapoarte, pe ecran este afiat

    fereastra de editarea a raportului.

    Un raport este constituit din benzi care nu redau exact ceea ceva fi n raportul final, dar codificmodul n care se determinceea cese afieazn raport. Un raport poate conine urmtoarele benzi:

    Detail (detalii) genereaz rndurile de detalii (coninutul debaz al raportului). Pentru un raport care preia datele dintr-o

    tabel, banda de detalii a raportului ar putea corespundenregistrrilor tabelei; Title(titlu) include o zoncare se afieazo singurdat, pe

    prima pe pagina raportului. Aceastband conine de obiceititlul raportului i eventual, capul de tabel, dac acesta nutrebuie repetat pe fiecare paginn parte);

    Summary (rezumat) - specific o zon care este afiat peultima pagina raportului, la sfrit, o singurdat;

    Page Header (antet de pagin) - genereaz textul care va fiafiat n partea superioara fiecrei pagini a raportului;

    Page Footer (subsol de pagin) - genereaz coninutul priiinferioare a fiecrei pagini a raportului;

    Group Header n(antetul grupului de nivel n) i Group Footer

  • 5/28/2018 Baze de Date in Visual Foxpro

    73/87

    Baze de daten Visual FoxPro 73

    n (subsolul grupului de nivel n) - genereaz n raportul finalmai multe grupuri, n funcie de nite valori numite chei de

    grupare, putndu-se preciza coninutul benzii antet de grup,respectiv subsol de grup;

    Un raport conine cel puin trei benzi: antetul de pagin,detaliile i subsolul de pagin. Dacse dorete inhibarea afirii lor,trebuie reduse la dimensiunea zero (chiar dac apar n fereastraraportului, nu genereaznimic n raportul final). Benzile de titlu i deconcluzii sunt afiate opional, afiarea lor putnd fi validat sau

    invalidatprin meniu: Report, Title/Summary.Fiecare dintre aceste doubenzi are asociat un comutator, New

    page (pagin nou), la activarea cruia banda corespunztoare vancepe pe paginnou:

    Mediul de date al raportului

    Un raport preia date din una sau mai multe tabele i learanjeaz n pagin. Deci la construirea raportului este necesarspecificarea tabelelor surs. Mediul de date al unui raport seconfigureazn fereastra mediului de date deschisprin meniu: View,Data Environment sau prin acionarea butonului corespunztor dinbara de instrumente standard a raportului. O dat deschisaceastfereastr, la meniul sistemului este adugat un nou submeniu, numit

    DataEnvironment, care conine opiuni referitoare la configurareamediului de date.

  • 5/28/2018 Baze de Date in Visual Foxpro

    74/87

    74 Baze de daten Visual FoxPro

    Fontul implicit al raportului

    La construirea unui raport, trebuie stabilit ca font implicit celcare predomin printre obiectele raportului, pentru celelalte obiectefontul urmnd a fi specificat explicit. Fiecrui obiect nou definit nraport i va fi atribuit fontul implicit al raportului, care poate fischimbat ulterior.

    Stabilirea fontului implicit al raportului se face prin meniu:

    Report, Default Font, iar caracteristicile fontului sunt specificate ncaseta de dialog deschispe ecran.

    Tipuri de obiecte incluse n rapoarte

    Editarea unui raport trebuie s nceapprin introducerea unorobiecte n acesta. Pentru aceasta, se acioneaz butonulcorespunztor din Report Controls Toolbar i se selecteaz obiectulcare va fi inclus n raport:

    Label Texte informative.

    Textele informative reprezint un ir de caractere de lungimevariabil. Pentru a stabili poziia textului informativ se poziioneazcursorul n punctul dorit din raport, dup care se execut clic cumouse-ul. Cnd se terminintroducerea textului, se executun clic nafara obiectului nou creat.

    Un obiect Label creat poate fi repoziionat, prin tragere cuajutorul mouse-ului, pe suprafaa raportului. Se pot efectua itrageridintr-o bandn alta, nu numai n cadrul aceleiai benzi.

    Fontul folosit la afiarea textului este stabilit n ferestrea Font,

    Label

    Field

    Line

    Rectangle

    Rounded Rectangle

    Picture/OLEBound Control

  • 5/28/2018 Baze de Date in Visual Foxpro

    75/87

    Baze de daten Visual FoxPro 75

    care se deschide prin meniu: Format, Font. Astfel, pot fispecificate toate caracteristicile fontului: setul caractere (Font),

    dimensiunea (Size),stilul (Font style), culoarea (Color), etc.

    Field Cmpuri.Cmpurile reprezint elementele variabile ale unui raport,

    putnd genera n raportul final mai multe valori, valori care vor fideterminate de sursa de date precizat: o variabil a raportului, oexpresie de calcul, un cmp al unui tabel de date. Caracteristicilelegate de fontul n care se realizeaz afiarea valorii din cmp sestabilesc la fel ca pentru obiectele de tip Label.

    Definirea caracteristicilor unui obiect de tip Field se realizeaznfereastra de dialog Report Expression (deschisprin dublu clic peobiect).

    Poziia cmpului (Field position) relativ la banda din raport ncare este definit poate fi: Float (poziie variabil, n funcie deobiectele definite deasupra lui), Fix relative to top of band (poziiefixrelativ la marginea superioarabenzii), Fix relative to bottom of

    band(poziie fixrelativ la latura inferioara benzii).n caseta Expression se nscrie expresia care va furniza

    valoarea ce trebuie afiat. De multe ori, aceast expresie este unsimplu cmp al unei tabele surssau o variabilde lucru.

  • 5/28/2018 Baze de Date in Visual Foxpro

    76/87

    76 Baze de daten Visual FoxPro

    Formatul de afiare al cmpului (caseta Format) reprezintun

    ir de caractere (macheta de formatare). Acest format se poate stabilii n mod interactiv, prin acionarea butonului din dreapta casetei,care determindeschiderea ferestrei Format.

    Asupra valorilor asociate obiectelor Field se pot aplica diferitefuncii pentru a obine unele informaii sintetice: suma (Sum), mediaaritmetic(Average), valoarea maximi minim(Highest, Lowest),deviaia standard (Standard deviation), variana (Variance). Funciacare se aplic asupra unui cmp al unui raport este precizat n

    fereastra de dialog Calculate Field, deschis prin acionareabutonului Calculations:

    Obiecte semigrafice i grafice.n cadrul unui raport pot fi desenate linii, chenare sau pot fi

    introduse imagini. n legtur cu aceste obiecte pot fi precizateanum