Sunteți pe pagina 1din 6

IV.

Baze de date
Principalul domeniu de utilizare a calculatorului l reprezint cel al prelucrrii informaiilor. Pe msur ce societatea se dezvolt cresc i necesitile de informare ale acesteia, deci crete volumul de informaii ce trebuie prelucrate. Apare astfel problema memorrii acestor informaii, a prelucrrii lor n vederea obinerii diverselor rezultate solicitate. Pe discuri, informaiile sunt depozitate n fiiere. O baz de date reprezint tocmai un astfel de fiier, cu o anumit organizare ce permite accesul rapid i complet la informaiile stocate n acesta. Pentru a specifica o anumit nregistrare din tabel se folosete "indicatorul de nregistrri", ce reprezint o zon de memorie care conine numrul nregistrrii curente. Acesta poate fi considerat ca o variabil de memorie asociat bazei de date i care exist atta timp ct este deschis tabela. La un moment dat o singur nregistrare este cea curent, numrul acesteia fiind dat n indicatorul de nregistrri. Indicatorul de nregistrri poate fi modificat prin comenzi FoxPro, acest lucru fiind echivalent cu deplasarea sgeii indicatorului de nregistrri n sus i n jos, de-a lungul bazei de date.

Crearea i editarea tabelelor de date


FoxPro este un mediu de dezvoltare integrat, care, pe lng instrumentele de programare, ofer i un sistem de baze de date relaionale care simplific procesele de gestionare i organizare eficient a datelor. Datele sunt organizate tabelar, pe linii (records, articole, nregistrri) i coloane (fields, cmpuri), mai multe tabele, ntre care exist legturi, alctuind o baz de date relaional. Crearea unui tabel de date definirea structurii La crearea unei tabele trebuie specificat structura acesteia. Pentru a specifica n mod univoc structura tabelei, trebuie indicate cmpurile care o compun (printr-un nume asociat fiecrui cmp), ct i caracteristicile acestora (tipul de date ce se memoreaz n acel cmp, lungimea cmpului etc.). Crearea unui tabel de date implic specificarea numelui tabelului (fiier cu extensia implicit DBF) i este iniiat prin comanda CREATE [<fiier>] sau prin alegerea opiunii File, New (n acest caz, n caseta New se selecteaz Table i New file). Ca urmare, pe ecran este deschis fereastra constructorului de tabele, n care vor fi precizate caracteristicile noului tabel (nume, tip, lungime etc.) i a indecilor folosii la ordonarea datelor din list. Fiecare cmp (field, coloan) al unui tabel este caracterizat prin: nume (Name); tip (Type) - ir de caractere (C), numeric (N), dat calendaristic (D) sau moment de timp (T), logic (L), memo (M); lime (Width) - numrul de caractere pe care l ocup fiecare dat memorat n acel cmp; numrul de zecimale (Decimal) se activeaz doar pentru datele de tip numeric; fanionul de indexare (Index) - indic dac se stabilete un index pe cmpul respectiv (indecii reprezint o tehnologie cu ajutorul creia datele din tabele sunt vzute ntr-o anumit ordine, dat de un anumit criteriu numit criteriu de indexare); ordonarea poate fi ascending/descending. fanionul de valoare nul (NULL) - arat dac n cmpul respectiv poate fi memorat o valoare nul, pentru a se FACE diferenierea ntre un cmp lsat necompletat i unul completat cu valoarea 0.

Deschiderea (activarea) tabelelor de date Pentru a folosi o tabel, aceasta trebuie mai nti deschis (se presupune c aceasta exist pe disc, adic a fost creat anterior). Deschiderea tabelei presupune rezervarea n memoria intern a calculatorului a unei zone n care FoxPro va memora toate informaiile necesare utilizrii acestei tabele (cum ar fi structura, numrul de nregistrri etc.). Aceast zon special de memorie poart numele de zon de lucru (work area). n mod implicit, FoxPro lucreaz cu o singur zon de lucru i permite deschiderea unei singure tabele; astfel, cnd se deschide o tabel, se nchide automat tabela deschis anterior. ns, FoxPro permite lucrul simultan cu mai multe tabele, prin deschiderea acestora n zone de lucru diferite. Astfel, Fox-ul dispune de 25 zone de lucru, n care depune informaiile necesare efecturii operaiilor cu tabelele de date respective. Asocierea bazelor de date la zonele de lucru este controlat de programator, acesta avnd la dispoziie comenzi i funcii specializate n acest scop. Dup deschiderea unei tabele ntr-o zon de lucru, se poate trece la lucrul cu aceasta, adic vor putea fi preluate informaii din tabel, modificate informaii deja existente, adugate noi informaii, terse informaii din tabel etc. Zone de lucru 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. Astfel, exist dou posibiliti: fie se folosesc pentru toate zonele numere de la 1 la 25, fie se folosesc litere de la A la J pentru primele 10 zone, iar pentru urmtoarele se folosesc numere de la 11 la 25. n afar de aceste aliasuri utilizatorul poate defini i propriile sale alias-uri. Observaii: 1. La pornirea FoxPro-ului zona de lucru implicit va fi zona 1 (cu alias 1 sau A). Aceasta se poate schimba prin comanda : SELECT <expN>|<expC>

Comanda este urmat de o cifr, liter sau de un alias definit de utilizator. Dac alias-ul este 0 se va selecta prima zon de lucru neselectat. 2. Pentru a obine informaii despre zonele de lucru folosite i tabelele de date deschise se pot folosi dou funcii: USED([<alias>]) i DBF([<alias>]) Funcia USED returneaz .T. sau .F. dac, n zona de lucru curent sau precizat prin alias, este sau nu prelucrat un tabel de date. Funcia DBF returneaz numele tabelului de date deschis n zona de lucru. Exemple: 1. SELECT A sau SELECT 1 USE pers sau USE pers IN 1 2. SELECT B sau SELECT 2 USE student sau USE student IN B alias stud select stud ?dbf() c:\program files\devstudio\vfp\job\student.dbf ?used(2) .T. Pentru iniierea unei sesiuni de lucru cu un tabel de date, acesta trebuie s fie activat (deschis). Deschiderea unui tabel de date se poate realiza prin meniu (File, Open, Files of type: Table (*.dbf)) sau prin comanda USE: USE [<fiier>] [IN <zona de lucru>] [TAG <nume etichet>] [ASCENDING / DESCENDING] [ALIAS <alias>] [EXCLUSIVE] [NOUPDATE] o <fiier> - numele tabelului de date care va fi deschis (extensia implicit DBF); o IN - permite deschiderea unui tabel de date ntr-o alt zon de lucru dect cea curent; o TAG - face precizarea unei variante de indexare; o ASCENDING /DESCENDING - precizeaz tipul ordonrii (implicit ascendent) atunci cnd se folosete indexarea; o ALIAS - stabilete un nou alias; o EXCLUSIVE - asigur exclusivitatea folosirii unui tabel de date atunci cnd se lucreaz ntr-o reea de calcul; o NOUPDATE - protejeaz tabelul de date la scriere (este deschis doar pentru consultare). Observaii: 1. Derularea unei sesiuni de lucru n FoxPro se realizeaz n directorul de lucru implicit. Acest director poate fi schimbat prin comanda: SET DEFAULT TO <path> unde path definete noul director. 2. Lista tabelelor de date aflate n directorul de lucru poate fi obinut prin lansarea comenzii: DIR 3. Se poate limita, temporar, accesul la nregistrrile tabelului de date prin folosirea comenzii: SET FILTER TO <cond>

Modificarea structurii unui tabel de date Modificarea caracteristicilor unui tabel de date poate fi fcut prin comanda: MODIFY STRUCTURE Aceast comand permite modificarea structurii tabelului de date activ prin deschiderea unei ferestre de dialog, aceeai ca la crearea tabelului de date. Modificrile care pot fi aduse structurii unui tabel de date sunt : schimbarea caracteristicilor cmpurilor deja existente (nume, tip i lime); tergeri, inserri de cmpuri, prin plasarea cursorului pe zona de modificare (prima coloan din fereastra de dialog) i acionarea butoanelor Delete i Insert. Dup efectuarea modificrilor, FoxPro copiaz coninutul tabelului de date vechi n tabelul de date nou, cu efectuarea schimbrilor respective. Caracteristicile unui tabel de date (structura) pot fi vizualizate prin comenzile: DISPLAY STRUCTURE sau LIST STRUCTURE nchiderea prelucrrii tabelelor de date Dup terminarea lucrului cu baza de date urmeaz nchiderea acesteia, constnd n: - desfacerea legturii dintre zona de lucru i baza de date; - eliberarea memoriei alocate la deschidere (eliberarea zonei de lucru); - nchiderea fiierului bazei de date, cu memorarea modificrilor efectuate. Finalizarea operaiei de prelucrare a tabelelor se poate face prin comenzile: USE sau CLOSE ALL Prima comanda nchide prelucrarea tabelului de date din zona de lucru curent, iar a doua nchide i elibereaz toate zonele de lucru (n acest caz zona curent devine zona de lucru 1). Introducerea (adugarea) nregistrrilor noi ntr-o tabel de date Dac tabela este goal se folosete comanda APPEND. Numrul de nregistrri dintr-o baz de date, furnizat de funcia RECCOUNT(), poate fi modificat, prin introducerea unor nregistrri vide (adugri, inserri). Astfel, comanda APPEND BLANK permite adugarea unei nregistrri vide la sfritul tabelei, fr posibilitatea de editare. Comanda INSERT permite inserarea unei noi nregistrri, dup nregistrarea curent (practic, se va deschide o fereastr de editare asemntoare celei din comanda APPEND). Comanda INSERT BEFORE permite inserarea unei noi nregistrri, naintea nregistrrii curente. Comanda INSERT BLANK insereaz o nregistare vid dup nregistrarea curent, iar comanda INSERT BLANK BEFORE insereaz o nregistare vid naintea nregistrrii curente. Observaie: Inserarea se execut implicit dup nregistrarea curent, dac nu se folosete opiunea BEFORE, iar urmtoarele nregistrri sunt translatate spre sfritul tabelului de date i renumerotate. Exerciii: 1. Inserai o nregistrare goal (vid) ntre a 5-a i a 6-a. GO 5 INSERT BLANK sau GO 6 INSERT BLANK BEFORE

2. Inserai o nou nregistrare, naintea celei de-a 9-a nregistrri. GO 9 INSERT BEFORE 3. Inserai o nregistrare vid dup cea de-a 14-a nregistrare i completai coninutul acesteia utiliznd comanda BROW. Editarea coninutului unui tabel de date Prelucrarea nregistrrilor. nregistrarea curent. Un grup de nregistrri (domeniu) poate fi: All semnific toate nregistrrile tabelei; Next expN urmtoarele expN nregistrri, plecnd de la nregistrarea curent, inclusiv aceasta; Record expN- nregistrarea cu numrul de ordine specificat, dat de valoarea expN; Rest restul nregistrrilor ce urmeaz din poziia curent pn la sfritul tabelului. Domeniul precizat mai sus poate fi restrns prin urmtoarele dou clauze, numite i filtre pentru selectarea nregistrrilor din domeniul precizat: [ FOR cond] sau [WHILE cond] Clauza FOR precizeaz c dintr-un domeniu se vor lua numai acele nregistrri care au valoarea adevrat pentru expresia logic asociat; se continu cutarea chiar dac expresia logic nu mai este adevrat. La clauza WHILE nregistrrile vor fi luate atta timp ct expresia logic asociat este adevrat; atunci cnd se gsete o nregistrare ce nu respect condiia dat, se ntrerupe testarea pentru restul nregistrrilor. Vizualizarea coninutului unei tabele Vizualizarea tuturor nregistrrilor se face cu comenzile: LIST sau DISPLAY ALL Vizualizarea parial folosete aceleai comenzi, avnd urmtoarea sintax: DISPLAY|LIST [FIELDS lista campuri] [domeniu][FOR cond1][WHILE cond2] Clauza FIELDS permite preluarea datelor doar din cmpurile specificate n list (cmpurile sunt separate prin virgul, iar ordinea este cerut de utilizator) Observaii: 1. Comanda DISPLAY afieaz nregistrrile ecran cu ecran, trecerea la urmtorul ecran realizndu-se prin apsarea unei taste oarecare. n cazul comenzii LIST afiarea este continu, fr pauza dintre ecrane. 2. Domeniul implicit pentru comanda DISPLAY este nregistrarea curent, iar pentru comanda LIST domeniul implicit este ALL. Astfel, LIST este echivalent cu DISPLAY ALL. Exemple: 1. Afiai pesoanele care au numele Popescu i prenumele Ion. 2. Afiai persoanele care au salariul cuprins ntre 500 i 1000 lei. 3. Afiai persoanele care nu au copii i au vrsta de cel puin 30 ani. 4. Afiai numele, prenumele, data naterii, domiciliul i profesia tuturor nregistrrilor din tabel.

5. Afiai toate persoanele care au domiciliul n Bucureti. 6. Afiai persoanele care au vrsta cuprins ntre 30 i 50 de ani. 7. Afiai persoanele care sunt cstorite i au copii, dar numai cmpurile nume, prenume i numr copii. 8. Listai toi inginerii care nu locuiesc n Bucureti i sunt nscui nainte de anul 1989. 9. Listai persoanele necstorite, care nu au copii. 10. Afiai numele, prenumele, domiciliul i profesia tuturor celor care nu sunt ingineri i au salariul cel puin 3000 lei. DISP FIELDS nume, pren, dom, prof FOR UPPER(prof) # INGINER and sal>=3000 11. Afiai toate persoanele cstorite, de sex masculin, care au cel puin un copil. 12. Listai numele, prenumele i data naterii pentru toate persoanele de sex feminin care au ajuns la vrsta de pensionare.