Sunteți pe pagina 1din 20

Comenzi FoxPro

Sistem de gestiune a bazei de date (SGBD Data Base Management System) : -un produs software care asigur interaciunea cu o ba de date! permi"nd definirea! consu#tarea $i actua#i area date#or din ba a de date% Baza de date : -este un ansamb#u structurat de date coerente! fr redondan inuti#! astfe# &nc"t acestea pot fi pre#ucrate eficient de mai mu#i uti#i atori &ntr-un mod concurent% Operatii asupra unui tabel: 1.Crearea structurii unui tabel se realizeaz : - prin meniu ('i#e (ew); -dupa crearea (sau deschiderea) unei baze de date, prin butonul (ew )ab#e din Database Designer; - prin comanda *+,-[),]. Pentru deschiderea unui tabel existent se folose te comanda: .S, /nume0fisier1. Pentru nchiderea unui tabel deschis !n zona de lucru curent se folose te comanda .S, (fr parametri). 2.Introducerea de nregistrri !ntr-un tabel se poate face : -prin comanda -22,(D; -prin comanda B+34S, (cu aceast comand se poate realiza orice opera"ie de adu#are, modificare sau ter#ere !ntr-un tabel), urmat de selectarea op"iunii -dd (ew +ecord din meniul )ab#e (echi$alenta cu combinatia de taste *tr# 5 6). Pentru a completa un c%mp de tip memo:*)+752age Down pentru deschidere i *)+7 5 pentru !nchidere. Pentru a completa un c%mp de tip genera#: - pozi"ionare pe c%mp; de & ori clic'; - ,dit 8nsert 3b9ect; - se ale#e 3b9ect )ype i 3: (de exemplu paintbrus; sau fi#e); - se creaz sau se ale#e desenul; - 'i#e Sa<e -s (se da nume - a#fa%bmp i 3:); *73S,; 2.Modificarea structurii unui tabel se realizeaz: - prin meniu (=iew ()ab#e Designer); - prin comanda M3D8['6] S)+.[*).+,]; - prin clic' dreapta pe tabel !n Database Designer i selectarea op"iunii Modify>. Obs: )n mediul *oxPro, este suficienta introducerea primelor + caractere ale unei comenzi. )n continuare, nu $om mai semnala acest lucru !n mod explicit (prin [ ]). Obs: ,omanda *73S, -77 determin !nchiderea bazei de date i a tuturor tabelelor i indec ilor deschi i.
1

3.Vizualizarea structurii unui tabel se realizeaz prin 78S) S)+.*).+, D8S27-6 S)+.*).+,. .!tergerea de nregistrri: - ter#erea lo#ic a !nre#istrrilor (!nre#istrrile sunt doar marcate pentru ter#ere), comanda D,7,),; - ter#erea fizic a !nre#istrrilor marcate, realizat prin comanda 2-*:. -ac se dore te anularea marca.ului efectuat prin D,7,),, se utilizeaz comanda +,*-77 -77. Obs: +,*-77 anuleaza doar marca.ul de ster#ere al !nre#istrarii curente. ,omanda ?-2 ster#e toate liniile din tabelul curent, dar structura tabelului se pastreaz. ".Co#enzi utile: -D8S27-6 @ 78S) S)+.*).+, - afi eaz structura tabelului deschis !n zona de lucru curent. -B+34S,, 78S)! D8S27-6 -77- afi eaz con"inutul tabelului deschis !n zona de lucru curent. - D8S27-6 -afi eaz !nre#istrarea curent; - *A-(G,, ,D8) - afi eaz c%mpurile tabelului, !n scopul editrii -G3/ n 0 )32 0 B3))3M1 -pozi"ionarea pe a n-a, prima, respecti$ ultima !nre#istrare - S:82 n - saltul peste n !nre#istrri; n poate fi numr ne#ati$. -+,27-*, /c"mp1 48)A /<a#oare1 '3+ /conditie1 - permite actualizarea unei $alori a unui c%mp din tabel. - 73*-), '3+ /conditie1 - caut !nre#istrarea care !ndeplineste condi"ia $unc%ii:apelate preced%ndu-le cu simbolul 232, pentru afi are. ,Bemp#u: 3 reccount()). - +,*(3() - +,**3.()() - '3.(D() - furnizeaz numrul !nre#istrrii curente din tabel. - furnizeaz numrul de !nre#istrri din tabel. - !ntoarce )+., sau '-7S, dup cum ultima comanda 73*-), lansat a #sit o !nre#istrare !ndeplinind condi"ia cerut. - D-),() - !ntoarce data curent. -/7,') @ +8GA)1(4sir0caractere5, n) -!ntoarce cele mai din st%n#a, respecti$ din dreapta, n caractere din ar#umentul sir0caractere. -S.M(), -=G(), *3.()(), M8((), M-C() -!ntorc suma, media, numrul, minimul,maximul $alorilor unei coloane ,alculul i afi area acestor $alori se pot realiza : ca#cu#ate sum(sSa#ariu) Obs: -ac se d comanda S,) )-7: 3'', ca#cu#ate nu afi eaz nimic. )n acest caz, se poate proceda astfel: calculate sum(s6alariu) to x DB Obs: 7xist i comenzile *3.()! -=,+-G,! S.M.eBemp#u count for /conditie1 to B DB
2

&one de lucru. 'ortare (i inde)are.


I. &one de lucru
)n aplica"ii, apare necesitatea de a lucra cu mai multe tabele !n paralel. Pentru aceasta, mediul *oxpro dispune de zone de lucru, iar !n fiecare dintre acestea se poate deschide c%te un tabel. 8ceste zone de lucru sunt numerotate cu numere naturale de la 9 la :&;<;, iar primele 9= pot fi referite i prin literele 8->. -e asemenea, o zon de lucru poate fi referit prin tabelul deschis !n cadrul acesteia.

Co#enzi (i func%ii utile :

.S, /nume0tabe#1 [8( / ona1] deschide tabelul ) !n zona de lucru n . -ac nu se precizeaz zona de lucru, tabelul $a fi deschis !n zona curent. .S, (fr parametri) determin !nchiderea tabelului deschis !n zona de lucru curent. S,7,*) n @ a#ias0tabe# determin ca zona de lucru identificat prin n sau a#ias0tabe# s de$in zona curent . ?n a#ias este un nume atribuit unui tabel ; un tabel poate fi referit prin alias-ul su sau prin zona de lucru !n care este deschis. S,7,*) E selecteaz (determin s fie zon curent) zona de lucru n, unde n este cel mai mic numr de zon nefolosit. S,7,*)(F E @ G @ a#ias0tabe# H) S,7,*)(E) - !ntoarce numrul zonei curente S,7,*)(G) - !ntoarce un numr n, unde n este cel mai mare numr corespunztor unei zone neutilizate. S,7,*)(a#ias0tabe#) - !ntoarce numrul zonei !n care este deschis tabelul cu aliasul respecti$. S,7,*)() - !ntoarce numrul zonei curente dac S,) *3M2-)8B7, este 3'' i numrul minim al zonei neutilizate dac S,) *3M2-)8B7, este 3(% .S,D(F/ ona1H) !ntoarce %)% sau %'%, dup cum zona de lucru specificat este utilizat sau nu (i.e. exist un tabel deschis !n aceasta). -ac nu se specific zona, este $orba de cea curent. DB'(a#ias0tabe# @ ona) !ntoarce numele tabelului care are a#ias-ul respecti$ sau care este deschis !n zona de lucru specificat. Pentru obser$area zonelor de lucru i a tabelelor deschise !n cadrul acestora, se utilizeaz op"iunea Data Session din meniul 4indow.

II. 'ortarea tabelelor


Pentru situa"iile practice, un tabel ordonat este mult mai folositor. @rdonarea unui tabel presupune: - ale#erea unui c%mp al tabelului drept criteriu de sortare; - ale#erea ordinii sortrii: cresctoare sau descresctoare. -ac exist mai multe !nre#istrri pentru care c%mpul-criteriu are aceea i $aloare, ordinea lor poate s nu fie important, dar, de multe ori, se dore te ca !nre#istrrile cu aceea i $aloare a c%mpului criteriu sa fie ordonate la r%ndul lor dup alt criteriu. -e exemplu, la un examen de admitere, primul criteriu este nota obtinuta, iar al doilea, este numele concuren"ilor. Dezavantajele sortrii: - se creeaz noi fi iere pe disc; - este costisitoare ca timp. Avantajul sortrii: cutarea foarte rapid care se poate efectua !ntr-un tabel sortat.

,omanda 6@AB are urmtoarea sintax: 'O*+ +O ,nu#e-fisier. O/ ,ca#p1.012314501C5 06 ,ca#p2.675 02'C8/4I/9348'C8/4I/950,do#eniu.5 0$O*75 0:;I<875 0$I8<4' ,lista-ca#puri.5 7fectul este crearea unui nou tabel cu numele specificat. )n acest tabel sunt copiate !nre#istrrile din tabelul acti$, !n ordinea $alorilor din c%mpul 4campG5, !n ordine cresctoare. )nre#istrrile pentru care 4campG5 are aceea i $aloare sunt la r%ndul lor sortate dupa 4campI5 , etc. Cmplicit, sortarea dup fiecare din aceste c%mpuri se face !n ordine cresctoare. Dodul de sortare se poate preciza pentru fiecare c%mp !n parte, incluz%nd dup numele su una din op"iunile EF8G (pentru sortare cresctoare) sau EF-G (pentru sortare descresctoare). Obs.: Pentru c%mpurile de tip lo#ic, se consider .F. <.T. Hu se poate face sortare dup c%mp memo. -ac dorim ca un tabel s fie sortat dup un c%mp de tip caracter fr a se face distinc"ie !ntre literele mari i mici, $om adu#a dup c%mpul respecti$ op"iunea E/ G. lauze: -S*,(D8(G@ D,S*,(D8(G determin ordinea de sortare pentru toate c%mpurile-criteriu pentru care nu s-a specificat una din op"iunile JK-L sau JKDL% @rdinea implicit este -S*,(D8(GM '8,7DS /#ista0campuri1 - din structura noului tabel $or face parte numai c%mpurile specificate. Cnforma"ia din celelalte c%mpuri nu este copiat !n noul tabel. Humele din list se separ prin $ir#ul. '8,7DS 78:,/#ista sab#oane1 - !n noul tabel sunt copiate c%mpurile ale cror nume se potri$esc cu unul din abloane. '8,7DS ,C*,2)/#ista sab#oane1 - !n noul tabel sunt copiate toate c%mpurile !n afar de cele ale cror nume se potri$esc cu unul din abloane. 4Domeniu5 - poate fi -77! +,S)! (,C) /numar1 sau +,*3+D /numar1 i face ca !n noul tabel creat s fie copiate !nre#istrrile din domeniul specificat. -omeniul implicit este -77- toate !nre#istrrile sunt sortate.

!xem"lu: *ie tabelul *78,() (ccod! cnume! cprenume! coras! cadresa! cte#efon! cafaceri)% 6a se sorteze descrescator dupa cifra de afaceri. use client #ist sort on cafaceriKD to fc#ient use fc#ient #ist

III. Inde)area tabelelor


Cndexarea este posibilitatea de ordonare logi# a unui tabel permi"%nd parcur#erea !ntr-o anumit ordine a !nre#istrrilor fi ierului prin sistemul pointerilor. Cndexarea presupune extra#erea din fiecare !nre#istrare a fi ierului de baz, a cheii care determin ordinea. 8ceast cheie !mpreun cu numrul lo#ic al !nre#istrrii respecti$e $or fi aran.ate !ntr-un $i%ier index (simplu indexat, cu extensia .C-I). ?n index este !n esen" un tablou cu & coloane. @ coloan se refer la !nre#istrarea din tabel prin $alorile date de cheie, iar cealalt coloan con"ine numrul !nre#istrrii ce d pozi"ia ini"ial !n tabel. ,a efect deci, un fi ier index este o sortare virtual a unui tabel, !n timp ce !nre#istrrile acestuia rm%n neschimbate. Exemplu: Iniial: 9 @prean & -ra#omir : 8lbu *i ier sortat dup nume: 9 8lbu & -ra#omir : @prean *i ier indexat dupa nume: : 8lbu & -ra#omir 9 @prean

&odul de lu#ru #u un tabel indexat este urmatorul: 9. mai !nt%i se creeaz fi ierul index asociat tabelului (indexarea tabelului); se dau cheile i criteriile de indexare; &. dac se dore te utilizarea tabelului indexat anterior, se deschide tabelul i o dat cu el se deschid i fi ierele index asociate, fie automat de *oxPro, fie manual de utilizator; :. se realizeaz opera"iile dorite asupra tabelului (ster#ere, modificare, listare), !nre#istrrile fiind $zute !n ordinea dat de indexul acti$. Dodificarea con"inutului tabelului implic actualizarea automat a fi ierelor index deschise pentru tabelul respecti$; +. dup ce se termin lucrul cu tabelul, acesta se !nchide !mpreuna cu fi ierele index asociate. Fisierele index asociate unui tabel pot fi: a. sim"lu indexate (fi iere index simple, cu extensia .C-I) ce contin un sin#ur criteriu de ordonare; b. multi"lu indexate (fi iere index compuse, cu extensia .,-I), care memoreaz mai multe criterii de ordonare, doar unul sin#ur fiind acti$ la un moment dat. ,omanda CH-7I are urmtoarea sintax: I/48= O/ ,criteriu. +O ,fisier.id). 3 +29 ,nu#e-tag. 0O$,$isier.cd).5 0$O*,conditie.5 0COM>2C+5 02'C8/4I/9 3 48'C8/4I/95 0?/I@?85 0244I+IV85 lauze: - .(8N., Pentru cazul in care se produc $alori duplicat pentru campul de indexare, Jisual *oxPro $a construi intotdeauna indec i secundari. -aca dorim un index primar, atunci se specifica aceast clauz. - -DD8)8=, permite crearea unui fi ier index pentru un tabel, !n condi"iile !n care fi ierele index deschise anterior rm%n deschise. Fi%ierele #om"use sunt de & tipuri: - stru#turale, deschise i asociate automat tabelului odat cu deschiderea acestuia, folosind comanda .S,. 7le au acela i nume cu tabelul, au extensia %*DC i sunt create folosind clauza )-G fara 3'> - nestru#turale, nu sunt deschise automat cu tabelul. 8u nume diferit de numele tabelului i $a fi specificat !n clauza 3'>
5

um se des#'id sau se a#tiveaz $i%ierele index( @dat cu deschiderea unui tabel, se pot deschide (i fi(iere inde) asociate acestuia (care anterior au fost create cu o comanda 8(D,C): ?'8 0,fisier.3A577777 F8(D,C /#ista fisiere indeB1@DH F3+D,+ F/eBpresie0numerica1@/fisier%8DC1@F)-GH/nume tag1Fof/fisier%*DC1HHH F-S*,(D8(G@>H>>> -ac nu se d 3+D,+, atunci primul fi ier index din list $a fi cel acti$. 4eBpresie0numerica5 este numrul de ordine al fi ierului index simplu sau al ta#ului. Humrarea se face astfel: - mai !nt%i fi ierele.8DC (!n ordinea din list) - apoi ta#-urile din fi ierele structurale (!n ordinea definirii lor) - apoi ta#-urile din fi ierele nestructurale !n ordinea apari"iei lor. -ac se dore te deschiderea unor fi iere index pentru tabelul acti$ (dup ce acesta a fost deschis) se utilizeaz comanda: S,) 8(D,C )3 F/#ista0fisiere0indeB1 @ DH F3+D,+ /eBp(1 @ /idB indeB fi#e1 @ F)-GH /tag name1 F3' /cdB fi#e1H F-S*,(D8(G @ D,S*,(D8(GHH F-DD8)8=,H 6e $or deschide toate fi ierele din list. Houa list de fi iere index o $a !nlocui pe cea $eche, dac nu se precizeaz clauza -DD8)8=,. Pentru a schimba ordinea de accesare, pentru a selecta un anumit fi ier sau ta# acti$ utilizm: S,) 3+D,+ )3 F/eBp(G1 @ /idB indeB fi#e1 @ F)-GH /tag name1 F3' /cdB fi#e1H F8( /eBp(I1 @ /eBp*1H F-S*,(D8(G @ D,S*,(D8(GHH F8( /eBp(I1 @ /eBp*1H permite acti$area unui index dintr-o alt zon de lucru dec%t cea acti$. 7ste posibil i folosirea de alias-uri !n locul numrului zonei de lucru. um se )n#'id sau se deza#tiveaz $i%ierele index( Pentru a !nchide to"i indec ii, !n afar de cel compus structural, $om da comanda: S,) 8(D,C )3 S,) 3+D,+ )3 dezacti$eaz to"i indec ii, fr a-i !nchide. *73S, 8(D,C K !nchide toate fi ierele index din zona de lucru curent, !n afara celui structural. *i ierele index pot fi !nchise i cu *73S, -77! .S,! *73S, D-)-B-S,S.

*izualizarea indexului a#tiv la un moment dat se realizeaz prin: 78S) S)-).S sau D8S27-6 S)-).S Pot aprea situa"ii c%nd dou sau mai multe !nre#istrri corespund la a#eea%i valoare a #'eii de indexare: S,) .(8N., 3( @ 3'' K din mul"imea de !nre#istrri cu aceea i $aloare a cheii de indexare, $a putea fi accesat numai prima dintre acestea. e se )nt+m"l la modi$i#area #on,inutului unui tabel( Dodificarea con"inutului unui tabel determin actualizarea fi ierelor index deschise pentru tabelul respecti$, dar cele care nu sunt deschise !n momentul executrii modificrilor nu $or fi reactualizate, deci $or memora o stare anterioar a tabelului. 8par astfel discrepan"e !ntre tabel i fi ierul index respecti$, care trebuie reactualizat cu noul con"inut al tabelului, opera"ie care poart numele de reindexare. Aeindexarea este necesar i c%nd se modific tipul indexrii (cu acces unic sau acces multiplu K S,) .(8N.,). ,omanda folosit este: +,8(D,C F*3M2-*)H - determin reactualizarea tuturor fi ierelor .8DC sau a ta#-urilor din .*DC deschise curent pentru tabelul acti$. Fun#,ii re$eritoare la indexarea tabelelor: - (DC()! *DC()- dau numele fi ierelor index deschise !ntr-o zon de lucru. - *unc"ia )-G K !ntoarce numele unui index simplu sau al unei etichete dintr-un index compus. - Humele fi ierului simplu indexat acti$ sau al ta#-ului acti$ cu func"ia 3+D,+% - @rdinea de accesare a !nre#istrrilor unui fi ier indexat este determinat de cheia de indexare. ,heia de indexare se poate afla cu functia :,6. omenzi re$eritoare la indexare a) trecerea de la un fi ier simplu indexat la un ta# dintr-un fi ier index compus cu: *326 8(D,C,S 4#ista de fisiere indeB5 0 -77 F)3 /fisier%*DC1H (ta#-urile $or a$ea acela i nume cu fisierul %8DC) b) opera"ia in$ers: transformare ta# !n fi ier %8DC: *326 )-G /nume tag1 Fof /fisier%*DC1H )3 /fisier%8DC1 c) dup b), ta#-ul rm%ne totu i !n lista de indec i a tabelului. Pentru a ter#e ta#-ul din fi ierul compus: D,7,), )-G>>> Obs: -ac dintr-un fi ier compus se ter# toate ta#-urile, fi ierul este ters !n !ntre#ime de pe disc. d) cutarea unei !nre#istrri !ntr-un tabel indexat se face cu: - comanda S,,: /eBpresie1; dac este #sit, pointerul se pozi"ioneaz pe ea, iar '3.(D() ia $aloarea %)%; altfel pointerul se pozi"ioneaz dup ultima !nre#istrare. - func"ia S,,:(eBpresie!F/eBp(1@/eBp*1H) !ntoarce o $aloare lo#ic: %)% dac este #sit o !nre#istrare (prima din ele) pentru care $aloarea cheii de indexare este e#al cu expresia (din ar#umentul func"iei); prin al doilea ar#ument al func"iei, se specific tabelul !n care se face cutarea (prin zona de lucru sau alias). Obs: *unc"ia S,,: !nlocuie te combina"ia: comanda S,,: i func"ia '3.(D().

Observa,ii: G) Presupunem c a$em & c%mpuri numerice cafaceri! ca<ere i dorim indexare dup cafaceri i in interiorul su dup ca<ere. use c#ient indeB on cafaceri5ca<ere to a#fa #ist 6istemul adun $alorile din c%mpurile cafaceri i ca<ere, iar apoi face indexarea, deci se obtine un rezultat eronat. @peratorul ELG are un sens pentru c%mpuri, $alori numerice, i alt sens pentru caractere. Aezol$area problemei se face prin: a) sort on cafaceri! ca<ere to gama S-. b) indeB on str(cafaceri)5str(ca<ere) to de#ta &) Mitera mare este diferit de litera mic, prin urmare se pot folosi pentru cutri func"iile: .22,+ K transforma literele mici in litere mari 734,+ Ktransforma literele mari in litere mici.

*ela%ii ntre tabele. >rogra#e. $iltre


II. Co#anda B*O:'8
,omanda B+34S, poate a$ea urmtoarele clauze: i. *@A 4conditie5 ii. *A77N7 4camp5 - permite modificarea doar a $alorilor campului specificat iii. H@8PP7H- K interzice inserarea de inre#istrari i$. H@-7M7B7 K interzice marcarea pentru ster#ere in fereastra OA@P67 $. H@D@-C*Q, H@7-CB K interzic modificarea inre#istrarilor existente, dar permit adau#area si ster#erea de inre#istrari $i. BCBM74strin#5 - permite schimbarea titlului ferestrei OA@P67 $ii. J8MC- 4conditie5 permite $erificarea corectitudinii inre#istrarilor introduse $iii. PR7H 4conditie5 - se e$alueaza ori de cate ori pozitionam cursorul pe o noua inre#istrare; in cazul in care conditia este ade$arata, este permisa modificarea liniei respecti$e, altfel nu. ix. *C7M-6 K permite $izualizarea si modificarea numai unei parti din campuri; se pot crea si campuri Eima#inareG (campuiri calculate) ,lauza *C7M-6 are la randul ei o serie de parametri: x. :A K campul $izualizat nu poate fi modificat xi. :JS4conditie5 - permite efectuarea de $alidari suplimentare asupra datelor xii. :7S4strin#5 - mesa.ul de eroare ce $a fi afisat in status bar in cazul in care conditia din :J este falsa. xiii. :OS4limTinf5, 4limTsup5 - permite incadrarea corecta a datelor introduse.

III.

*ela%ii ntre tabele


)ntre tabele apar rela"ii, adic le#turi orientate care determin ca orice repozi"ionare a cursorului !n primul tabel (tabel-printe) s atra# dup sine o repozi"ionare a cursorului !n cel de-al doilea tabel (tabel-copil). Pentru ca s se poat realiza o rela"ie, este necesar ca !ntre cele dou tabele s existe un c%mp comun.@ rela"ie !n care unei !nre#istrri din tabelul printe !i corespunde exact o !nre#istrare !n tabelul copil, se nume te rela"ie one-to-one. @ rela"ie !n care unei !nre#istrri din tabelul printe !i pot corespunde zero, una sau mai multe !nre#istrri din tabelul copil rela"ia se nume te one-to-manU.
8

S!T -!.AT/O0 K creeaz rela"ii one-to-one !ntre tabele. S,) +,7-)83( )3 [4expr95 8()3 4expH95 0 4exp,95 [, 4expr&5 8()3 4expH&5 0 4exp,&5 ...] [-DD8)8=,]]

!xem"lu: Cndexati tabelul copil (S-7-+8-)) dupa c%mpul comun (sdep): 8(D,C 3( sdep )3 idep%idB ?rmtoarea sec$en" de instructiuni creeaz o relatie one-to-one : *73S, D-)-B-S,S .S, sa#ariat 8( G 8(D,C idep%idB .S, departament 8( I S,7,*) I S,) +,7-)83( )3 dcod 8()3 G se#ect G B+34S, (34-8) S,7,*) I B+34S, (34-8) OO tabe# copi# OO tabe# parinte

S!T S1/2 K creeaz rela"ii one-to-manU. ,omanda se utilizeaz !mpreun cu S,) +,7-)83(. 67B 6VCP B@ [4alias95[, 4alias&5] ...] WWW Babelul copil trebuie indexat dupa cheia extern (c%mpul comun K sdep). -ac indexarea se face prin index compus structural, !nainte de crearea relaiei se $a executa comanda: 8(D,C 3( sdep )-G depart -DD8)8=, 8ltfel, dac se indexeaz prin index simplu, $ezi exemplul anterior. *7,-+ *73S, D-)-B-S,S .S, departament in E OO tabe# parinte .S, sa#ariat 3+D,+ )-G depart in E OO tabe# copi# S,7,*) departament S,) +,7-)83( )3 dcod 8()3 sa#ariat OO stabi#ire re#atie one-to one S,) S:82 )3 sa#ariat OO re#atie one-to-many S,7,*) sa#ariat B+34S, (34-8) S,7,*) departament B+34S, (34-8) -!.AT/O034 K Aeturneaz c%mpul pe care s-a facut le#atura. +,7-)83((4expH95[, 4expH&5 0 4exp,5]). 7xpH9 K numarul de ordine al relatiei. 7xp, K alias-ul tabelului. 7xpH& K aria de lucru. Cmplicit folose te aria de lucru curent 3relation(9) TA-5!T34 K Aeturneaz alias-ul tabelului care este "inta unei rela"ii (specificat !n clauza S,) +,7-)83( dup 8()3) )-+G,)(4expH95[, 4expH&5 0 4exp,5]) K la fel ca mai sus D target(G)
9

Instruc%iuni $o)>ro: /F6 FO-6 DO 78/.!6 S A06 DO Co#enzile A !2T6 7A/T6 /02:T.
a) 8' 4expresieTlo#ica5 4set de instructiuni5 [,7S, 4 set de instructiuni 5] ,(D8' b) '3+ /mem<ar1 P /eBp(G1 )3 /eBp(I1 FS),2 /eBp(Q1H /set de instructiuni1 F,C8)H ,(D'3+ mem<ar P $ariabil de memorie; eBp(S expresie numeric. !xem"lu: (afi area numerelor impare de la 9 la 9=) *73S, D-)-B-S,S *7,-+ '3+ mcount P G )3 GE S),2 I D mcount ,(D'3+

AS!6 !9/T6 .OO2 .

!xem"lu: (afi area numelor tiprite cu ma.uscule, utiliz%nd '3+) S,) )-7: 3'' .S, S-7-+8-) G3 )32 S)3+, +,*(3() )3 8 OO S)3+, K comand pentru atribuire; este util atunci c%nd OO stocm aceeai $aloare !n mai multe $ariabile care $or aprea OO !n comand separate prin $ir#ule S)3+, +,**3.()() )3 R '3+ mcount P 8 )3 R G3)3 mcount D8S27-6 .22,+ (snume) ,(D'3+ .S, c) D3 4A87, 4eBpr0#ogica5 4set instructiuni5 F7332H F,C8)H 7H--@

10

!xem"lu: (afi area primelor 9= numere *ibonacci) *73S, D-)-B-S,S *7,-+ S)3+, G )3 tE S)3+, G )3 tG DStEPS!tE DStGPS!tG iPG D3 4A87, i/GE temp P tE 5 tG tE P tG tG P temp DStS5a##trim(str(i!I))!SPS! str(tG!I) iPi5G ,(DD3 d) D3 *-S, *-S, 4expM95 4set instructiuni5 F*-S, 4expM&5 4 set instructiuni 5 %%% *-S, 4expMH5 4 set instructiuni 5H F3)A,+48S, 4 set instructiuni 5H ,(D*-S, OO eBp7 S expresie lo#ic

!xem"lu: (stabilirea !n func"ie de luna curent, a anotimpului !n care ne aflm) S)3+, *M3()A(D-),( )) )3 #una D3 *-S, *-S, 8(78S)(#una!SMarc;S!S-pri#S!SMayS) S)3+, S,ste prima<araTS )3 anotimp *-S, 8(78S)(#una!SRuneS!SRu#yS!S-ugustS) S)3+, S,ste <araTS )3 anotimp *-S, 8(78S)(#una!SSeptemberS! S3ctoberS!S(o<emberS) S)3+, S,ste toamnaTS )3 anotimp 3)A,+48S, S)3+, S,ste iarnaTS )3 anotimp ,(D*-S, 4-8) 48(D34 anotimp (34-8) e) S*-( K mut pointerul in tabelul current si executa un bloc de comenzi pentru fiecare inre#istrare care indeplineste conditiile. 'C2/ F/scope1H F'3+ /eBp7G1H F4A87, /eBp7I1H F/set0instructiuni1H F7332H F,C8)H ,(DS*-(

11

!xem"lu: (afi area salaria"ilor i acordarea unei mriri de &X= la salariul celor din departamentul :=, care c% ti# mai pu"in de X==) c#ose database c#ear use sa#ariat go G disp#ay a## scan a## for scopii1G if ssa#ariu/UEE A7PM8,7 salariat.ssalariu PCBR &X= endif endscan disp#ay a## f) ,C8) apare in blocuri de tipul D3 4A87,! '3+ sau S*-(. Bransfera controlul la instructiunea imediat urmatoare blocului. #) 7332 apare in blocuri de tipul D3 4A87,! '3+ sau S*-(% Poate fi plasata oriunde in interiorul acestor blocuri. Bransfera controlul direct clauzei D3 4A87,! '3+ sau S*-(! fr s se execute instruc"iunile care urmeaz dup 7332. A"li#atie: Parcur#eti tabela de an#a.ati. 6umati salariile celor care lucreaz !n departamentul := si au salariul mai mic decat media pe unitate. (Cndicatie : calcul medie, parcur#ere si pentru fiecare inre#istrare, daca salariul e mai mare ca media sau nu lucreaz !n departamentul :=, salt la sfarsitul ciclului, altfel continuare cu calculul sumei) h) -**,2) K citire $ariabila de la tastatura (sir de caractere) -**,2) [4exp,5] )3 4mem$ar5 !xem"lu: 8,,7PB Y-ati numele unui nou client: Y B@ $arTnume D <ar0nume i) 4-8) [4exp,5] )3 4mem$ar5 F48(D34 F(34-8)HH !xem"lu : 4-8) 48(D34 Jnume#e nou#ui c#ient este: LM 5 <ar0nume (34-8) .) 8(2.) K intoduce date de la tastatura; asemntor cu -**,2) !xem"lu : 8(2.) VDati nume#e nou#ui c#ient: S )3 <ar0nume OOteBtu# dat de #a tastatura se scrie intre g;i#ime#e
?

.$iltre C@uerDE
Cntero#ari K modalitati de consultare a informatiilor din mai multe tabele. 6e creaza o intero#are (*CM7 -5 H7P -5 ZuerU sau *+,-), N.,+6 4numeT[uerU5). NB, (Nuery By ,Bamp#e) este un limba. de intero#are interacti$, care $a permite sa spuneti sistemului ce doriti, si nu cum sa obtineti date din mai multe tabele (neprocedural) % Cn linia de comanda poate scrie *+,-), N.,+6 si se deschide editorul pentru [uerU.
12

Aeamintiti-$a posibilitatile meniului Nuery, atunci cand este deschis un ZuerU. @bser$a"i op"iunile de adu#are sau eliminare de tabele din intero#are K clauza '+3M (a instruc"iunii S,7,*) din SN7), condi"ii de filtrare a !nre#istrarilor din rezultat K clauza 4A,+,, lista c%mpurilor de afi at K lista S,7,*), clauza de ordonare 3+D,+ B6, clauza de #rupare G+3.2 B6, clauza A-=8(G care pune conditii asupra #ruparilor, butonul \Jie] 6ZM^ (din toolbar-ul ZuerU -esi#ner sau din meniu) unde se poate consulta comanda 6ZM #enerata de ecran, si optiunea \Aun ZuerU^ din meniul ZuerU.

Co#enzi (i func%ii utile


S,) 2-)A )3 *73S, D-)-B-S,S @ )-B7,S @ -77 EOF

13

RAPOARTE Rapoartele reprezinta o modalitate de prezentare a datelor. Acestea contin informatii extrase din bazele de date si prezentate intr-o anumita forma pe ecran, la imprimanta sau intr-un fisier. Ca si ecranele, rapoartele pot fi create fie prin program, fie folosind generatorul de rapoarte. Crearea unui raport se poate realiza prin: coman a CREATE REPORT <nume raport> CREATE REPORT ? ! permite ale"erea raport#l#i pe care orim sa $l mo i%icm in lista celor e&istente' meni#: File -> New -> Report (#p aceasta) apare o %ereastr care *a conine mo el#l raport#l#i' +iecare mo el e raport este memorat $ntr-#n %iier c# e&tensia ' R!' (ac #n raport c# n#mele speci%icat e&ist e,a) el *a %i esc-is pentr# mo i%icare' In .ara e meni# s#perioara) *a aprea s#.meni#l Report' /pi#nile s#.meni#l#i View s#nt i ele 0a aptate1 l#cr#l#i c# rapoarte' Modificarea unui raport se realizeaz prin: 2oman a MODIFY REPORT <nume raport> 3eni#: +ile -4 /pen -4 5eport' e tiprire a raport#l#i se poate realiza prin opi#nea Preview a

Vizualizarea $nainte s#.meni#l#i View' Tiprirea unui raport se poate realiza prin: Report -> Run Report 6opi#nea Run Report a s#.meni#l#i Report78 coman a REPORT FORM <nume raport!"r#> - rez#ltat#l acestei ciomenzi este tiprirea pe ecran) $n %ereastra principal oxpro) a $nre"istrrilor $n %ormat#l escries $n %iier#l ' R!' (intre cla#zele acestei comenzi amintim: 9/ :5I;9<5 ! tiprete raport#l la imprimant' <;=I5/;3<;9 ! $nainte e listarea in%ormaiilor) este $ncrcat en*ironment-#l sal*at $n %iier#l '+5>' 2la#za este #til at#nci c?n ta.elele necesare raport#l#i n# s#nt esc-ise' 9/ +I@< An#me4 - e%ect#eaz tiprirea $ntr-#n %iier' ;/2/;B/@< - s#prim tiprirea raport#l#i pe ecran' :5<=I<C ! esc-i e pa"ina :a"e :re*ieD' A(omeni#4- selecteaz omeni#l e $nre"istrri care *or %i listate 6E@@) 5<B9) ;<>9 An#mar4) 5<2/5( An#mar47' +/5 Acon itie4) CFI@< Acon itie4' Fereastra de confi urare a rapoartelor conine) la incep#t) 3 seci#ni 6.enzi7: "eader i ooter: s#nt aezate la $ncep#t#l) respecti* la s%?rit#l %iecrei pa"ini i pot conine in%ormaii ca: n#mr#l e pa"in) ata crerii raport#l#i etc' #etail este cea mai important) pentr# c $n ea *a %i incl#s c?te o at pentr# %iecare $nre"istrare care %ace parte in raport8 aceast seci#ne c#prin e in%ormaiile e %on ale raport#l#i' :e lan"a aceste .enzi) in %#nctie e opti#nile #tilizator#l#i) in raport pot %i incl#se i alte seci#ni) prin interme i#l s#.meni#l#i Report: Title i $ummar%: Inserarea #neia intre ele 6sa# am.elor7 se %ace prin s#.meni#l Report -& Title'$ummar%' Beci#nea Title este incl#s o sin"#r at) la $ncep#t#l raport#l#i "enerat i poate %i %olosit pentr# a a%ia #n titl# "eneric) ata "enerrii raport#l#i etc'

14

2onin#t#l seci#nii B#mmarG apare o sin"#r at) la s%?rit#l raport#l#i i $n "eneral conine ate statistice: me ii) s#me) ma&ime i minime re%eritoare la atele in raport' (roup "eader )continutul acestei benzi apare *n partea superioara a fiec+rui grup,(roup ooter )continutul ei apare in partea inferioara a fiecarui grup,, :entr# a realiza #n raport rupat) ta.el#l in care se e&tra" atele tre.#ie sa %ie sortat sa# in e&at #p c-eia care criteri#l e "r#pare' 2rearea #n#i raport "r#pat se realizeaz prin opi#nea Data $roupin% in s#.meni#l Report' Eici se *or ale"e criteriile e "r#pare ale raport#l#i) iar %iecr#i "r#p $i *or coresp#n e .enzi (roup "eader, (roup ooter speci%ice'

Tool!ar-#l Report Control& conine c#rsor#l e selecie) .#ton#l e te&t 6 .abel7) .#ton#l pentr# intro #cerea c?mp#rilor 6 ields7) .#ton#l pentr# trasarea liniilor 6.ine7) pentr# crearea e rept#n"-i#ri 6Rectangle, Rounded Rectangle7) pentr# inserarea e ima"ini 6Picture'Acti/e! 0ounded Control7' 2ontrol#l 0utton .oc1 permite crearea s#ccesi* a mai m#ltor controale e #n an#mit tip' Hnele caracteristici ale raport#l#i se sta.ilesc prin interme i#l instr#mentelor in tool.ar-#l 'a(out) care se esc-i e prin opti#nea 'a(out Tool)ar in s#.meni#l View' Crearea c"mpurilor de intrare # ie$ire ' Intro #cerea #n#i camp esc-i e o %ereastr e ialo") $n care se poate speci%ica: e&presia c?mp#l#i intro #s %ormat#l e a%iare a c?mp#l#i *aloarea statistic pe care o conine c?mp#l: prin .#ton#l Cal*ulation& in icm c n# orim s reinem o simpl *aloare $n camp) ci o s#m) o me ie) #n ma&im etc' =aloarea statistic poate %i calc#lat pentr# $ntre"#l raport sa# pentr# %iecare pa"in $n parte'
15

2on iia care tre.#ie $n eplinit pentr# ca respecti*#l camp s %ie a%iat: c?mp#l poate %i *izi.il oar $n #nele $nre"istrri) prin #tilizarea .#ton#l#i Print +,en-

$or#e CecraneE @ $orm permite schimbul de informa"ii !ntre utilizator i sistemul Jisual *oxpro, cu a.utorul unei interfe"e familiare pentru $izualizarea i introducerea datelor !n baza de date. *orma afi eaz pe ecran, !ntr-o anumit confi#ura"ie, ferestre i obiecte specifice, txt, linii, chenare, obiecte de control, asupra crora ac"ioneaz utilizatorul cu a.utorul tastaturii sau al mouse-ului, !n $ederea transmiterii op"iunilor sale sistemului. *ormele furnizeaz o mul"ime $ast de obie#te care pot rspunde la evenimente (utilizator sau sistem) astfel !nc%t mana#ementul informa"iei de$ine c%t se poate de simplu i intuiti$. ?n obie#t este o instan" a unei clase, a$%nd astfel at%t date c%t i metode. -e exemplu, un control (buton, list etc.) !ntr-o form !n execu"ie este un obiect. ?n e$eniment este o ac"iune, recunoscut de un obiect, pentru realizarea cruia se scrie un cod (pro#ram) corespunztor. 7$enimentele sunt #enerate fie de ctre ac"iunea utilizatorului (ex: clic' cu mouse-ul), fie de ctre sUstem (cu timer-e). um se #reeaz o $orm( - se deschide fereastra de confi#urare a formei ('orm Designer), !n care se definesc obiectele care alctuiesc ecranul i se stabilesc caracteristicile #lobale ale acestuia. 8ceast fereastr se deschide: prin comanda -!AT! FO-&; prin meniul sistem: 'i#e -1 (ew -1 'orm. - se sal$eaz fi ierul .S*C. - se ruleaz prin meniul 2rogram -1 Do! prin butonul +un de pe bara de instrumente sau prin comanda DO FO-& nume0fisier%scB. e "une la dis"ozi,ie $ereastra Form Designer( Nona #ri a ferestrei este exact forma pe care o $om proiecta, deci dac forma trebuie s aib alt dimensiune este necesar redimensionarea acestei ferestre. -eschiderea Form Designer conduce la apari"ia meniului Form !n bara de meniu superioar i la apari"ia unor op"iuni specifice !n cadrul meniului *ie;. )n 'orm designer se pot deschide urmtoarele toolbar-uri (ultimele : se pot deschide din meniul *ie;): - Form designer< - Form ontrols< .a=out< olor 2alette )oo#bar-u# $or# Controls cuprinde di<erse#e tipuri de obiecte pe care #e putem insera &n ecran: - text (7abe#); - c%mpuri de intrareFie ire ('ie#ds); - linii (7ine)! dreptun#hiuri (+ectang#e! +ounded +ectang#e), ima#ini (8mage, -cti<eC *ontro#) di$erse forme #eometrice (S;ape); - butoane (*ommand Button) sau #rupuri de butoane (*ommand Group); - butoane radio (3ption Group); - c;ecWboB-uri; - *ombo BoB-uri; - liste (7ist BoB); - spinner-e; - #rile (Grid); - pa#ini (2age 'rame).
16

)n fereastra 2ro"erties a formei a$em: - o list ascuns !n care putem $izualiza obiectele create; - o list a propriet"ilor obiectului selectat (toate K -## sau #rupate dup specificul lor K Data! Met;od! 7ayout! 3t;er). @biectul selectat poate fi !ntrea#a form (caz !n care se pot seta propriet"i #enerale ale acesteia, de exemplu titlul) sau un control din cadrul formei.

Stabi#irea mediu#ui de #ucru (-ata 7n$ironment) *iecare form are un mediu de lucru asociat. 8cesta este un obiect care include tabelele utilizate de form i rela"iile !ntre ele. Dediul de lucru poate fi proiectat !n Data !nvironment Designer i se sal$eaz odat cu forma. Data ,n<ironment Designer se deschide din meniul *ie;, iar apoi, prin c#icW dreapta i selectarea op"iunii Add se pot deschide tabelele necesare. -ela,iile dintre tabele se pot stabili prin drag and drop asupra c%mpurilor comune (pe baza crora se realizeaz rela"ia), dinspre tabelul primar (care face referin" la c%mpurile altui tabel) ctre cel referit. *ontroa#e $i containere Containerele pot conine a#te containere sau controa#e! a<"nd ro# de obiect printe pentru a#te obiecte% De eBemp#u! o form este obiectu# printe a# unui obiect din forma respecti<% Controalele pot fi p#asate &n containere! dar nu pot fi prini ai a#tor obiecte% De eBemp#u! un buton nu poate conine un a#t obiect% ,Bemp#e de containere: - grupuri#e de butoane pot conine mai mu#te butoaneM - forma poate conine obiecte de tip pa#e frame, #rid, orice contro#M - obiecte#e #rid pot conine co#oaneM - obiecte#e option #roup conine mai mu#te butoane radioM - obiecte#e pa#e frame > conine paginiM - obiecte#e pa#e obiecte #rid! orice contro#%
17

Butoane Ma crearea unui buton, $om a$ea ne$oie de setarea urmtoarelor propriet"i: #a"tion (mesa.ul afi at pe el); name - numele butonului: fiecare obiect trebuie s aib un nume asociat prin care celelalte obiecte pot s comunice cu el; #an#el K specific dac obiectul respecti$ este unul de anulare; terminate read K specific dac forma este dezacti$at la ac"ionarea butonului (op"iunea este adec$at unui buton ,Bit); "i#ture K fi ierul sau c%mpul #rafic care ar urma s fie plasat pe control; putem face ca butonul s fie ini"ial dezacti$at, urm%nd sa-l acti$m ulterior (prin pro#ram); ;'en event K putem specifica !n ce condi"ii se permite apsarea butonului. ,odul scris trebuie s fie o func"ie care returneaz o $aloare lo#ic. -ac $aloarea !ntoars este .B., butonul se poate apsa !n mod obi nuit, altfel nu are nici un effect; valid event K explicm ce se !nt%mpl atunci c%nd este apsat butonul; message event K apare !nc pentru compatibilitate cu $ersiunile anterioare: rezultatul !ntors de codul scris la procedura Message $a fi trecut !n status bar la momentul apsrii butonului. )n loc de acesta, se recomand utilizarea propriet"ii StatusBarText. este posibil introducerea de comentarii, pentru claritate (comment).

IV.

*omen i uti#e ,omenzi pentru transferul datelor !ntre $ariabile i c%mpuri: 'C2++8* M8MV2* 0M8MO5 - transfer o !nre#istrare dintr-un tabel !ntr-un #rup de $ariabile de memorie; - pentru fiecare c%mp se creeaz c!te o $ariabil de memorie, cu acela i nume, tip de dat, lun#ime i con"inut. 5AT8!- &!&*A- ?&!&O@ - se atribuie fiecrui c%mp al !nre#istrrii curente $aloarea $ariabilei cu acela i nume. T'is$orm.re$res' actualizeaz toate obiectele folosite de aplica"ie

V.

Xnc;iderea unei forme acti<e Pentru a permite utilizatorilor !nchiderea formei acti$e prin clic' pe butonul c#ose sau prin op"iunea close din meniu, se seteaz proprietatea *#oseab#e a formei la true iar apoi se utilizeaz comanda -!.!AS! numeA$orma. -e exemplu, pentru un buton Nuit codul ar putea fi: +;I'$O*M.*elease Obs: T8/S6 T8/SFO-& se utilizeaz pentru a face referin" la forma, respecti$ la obiectul curent. 8scunderea unei forme se realizeaz prin metoda 8/D!.

/ndi#a,ie (idee pentru codul procedurii =a#id la butoane): Outonul ECnceputG: go top scatter mem<ar t;isform%refres;
18

wait Y8nceputu# fisieru#uiY window nowait Outonul EPrecedentG if bof() wait Y8nceputu# fisieru#uiY window nowait e#se sWip-G scatter mem<ar t;isform%refres; endif Outonul E?rmatorG if eof() wait YSfarsitu# fisieru#uiY window nowait e#se sWip5G scatter mem<ar t;isform%refres; endif Outonul E?ltimulG go bottom scatter mem<ar t;isform%refres; wait YSfarsitu# fisieru#uiY window nowait Outonul E8dau#areG go bottom append b#anW scatter mem<ar memo t;isform%refres; Outonul E6ter#ereG 2osPrecno() use __inchidere tabel EsalariatG use sa#ariat eBc#usi<e __ redeschidere tabel in mod Eexclusi$eG OO(altfel nu e posibila ster#erea) go pos de#ete pacW if pos1G go pos-G e#se go top endif Outonul E6al$areG if reccount() P E append b#anW endif gat;er mem<ar t;isform%refres; Outonul ECesireG t;isform%re#ease

19

20

S-ar putea să vă placă și