Sunteți pe pagina 1din 26

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.

ro Carti si articole online gratuite de la A la Z

Initiere in Visual FOXPRO Note de curs

Autor Mat. Eugen Maftei

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z

Organizarea datelor n Baze de Date (BD)


Introducere
Datele prelucrate cu ajutorul calculatorului sunt organizate, adic au o anumit structur. Cele mai obinuite forme de organizare a datelor sunt bazele de date. Exist mai multe definiii pentru bazele de date. Pentru nceput vom accepta ideea c o baz de date este o colecie de date structurate conform unui model de date i care servete uneia sau mai multor aplicaii. Un model de date este un set de noiuni, concepte i reguli pentru structurarea i prelucrarea datelor cu ajutorul calculatorului. n istoria bazelor de date se cunosc mai multe modele de date: - modelul ierarhic, - modelul reea, - modelul relaional, - modelul obiectual. Dac modelul ierarhic i reea de organizare a bazelor de date reprezint trecutul n istoria bazelor de date, modelul relaional face istoria prezentului, iar modelul obiectual bate la ua istoriei bazelor de date. n continuare vor fi dezvoltate ideile de baz ale modelului relaional. Modelul relaional (fundamentat de Dr. E.F.Codd n anul 1970) se bazeaz pe prelucrrile ramurii matematicii cunoscut sub numele de Algebra Relaional. Aceste prelucrri implic: - o colecie de obiecte numite relaii (tabele), - un set de operatori care acioneaz asupra relaiilor pentru a produce noi relaii. O relaie poate fi vzut ca o tabel (cu linii i coloane) i reprezent forma principal de organizare a datelor ntr-o baz de date de tip relaional.

Organizarea datelor in tabele


Tabela (relaia) este o colecie de date cu o anumit structur, i are un nume prin care se identific. Datele dintr-o tabel sunt organizate n linii (nregistrari). Liniile unei tabele sunt formate dintr-o succesiune de valori numerice sau nenumerice - acelai numr de valori pentru fiecare linie. Valorile de pe o anumit coloan au aceeai semnificaie din lumea real. S presupunem c avem o tabel, cu numele SALARIATI, n care sunt stocate date despre salariaii unei organizaii, dup cum urmeaz: 110 Popescu 130 Ionescu 120 Georgescu . . . Ion Petre Vasile . Bucuresti Cluj Iasi . . 20.04.1975 05.10.1979 11.11.1969 . . Director 3500 350 10 Cont.sef 3000 300 10 Programator 3000 400 20 . . . .

Analiznd datele din tabela SALARIATI se poate aprecia c: - valorile de pe prima coloan au semnificaia de Marc Salariat - valorile de pe a 2-a coloan au semnificaia de Nume Salariat, - valorile de pe a 3-a coloan au semnificaia de Prenume Salariat, - valorile de pe a 4-a coloan au semnificaia de Locul de Naterii, - valorile de pe a 5-a coloan au seminificaia de Data Naterii, - valorile de pe a 6-a coloan au semnificaia de Funcia,
2

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z valorile de pe a 7-a coloan au semnificaia de Salar, valorile de pe a 8-a coloan au semnificaia de Spor, valorile de pe ultima coloan au semnificaia de Cod Servici

Semnificaia valorilor de pe o linie se exprim prin noiunea (conceptul) de Cmp. Cmpul este cea mai mica unitate informaional, identificabil i accesibil, utilizat n structurarea (organizarea) datelor. Mulimea cmpurilor definesc structura tabelei, iar valorile care formeaz o linie reprezint valorile cmpurilor din structura tabelei. n general un cmp este caracterizat prin: - nume (prin care se identific i se face referire), - tipul cmpului, prin care se definete natura valorilor care se pot memora n cmp (numeric, ir de caractere, dat calendaristic, etc.) - lungime (dimensiune) cmp, care definete numrul maxim de caractere a celei mai mari valori a cmpului, Identificarea liniilor Modelul relaional permite identificarea liniilor dintr-o tabel prin conceptual de cheie primar (index primar). Cheia primar este format dintr-un cmp sau grup de cmpuri a crui valori identific n mod unic liniile ntr-o tabel. Nu sunt admise dou linii n tabel pentru care cmpul sau grupul de cmpuri declarat cheie primar (index primar) s aib aceeai valoare. Organizarea tabelelor Pentru a organiza o colecie de date sub forma unei tabele, mai nti trebuie s definim structura tabelei. A defini structura a unei tabele nseamn a specifica, cel puin: - numele tabelei, - cmpurile tabelei, iar pentru fiecare cmp s se specifice: . numele cmpului, . tipul cmpului, . lungimea cmpului, n aceste condiii structura tabelei SALARIATI ar putea fi definit n felul urmtor: Nume tabel: SALARIATI Coloane: CODS N,3 NUMES C,10 PRENS C,15 LOCNAST C,12 DATAN D FUNCTIA C,10 SALAR N,5 SPOR N,4 CODSERV N,2 Dup descrierea structurii unei tabele, tabela poate fi populat cu date (adic se pot introduce linii n tabel).

Atenie. Facei diferena dintre stuctura unei tabele i datele tabelei (aa cum facei
deosebirea dintre proiectul unei case i casa propriu-zis).
3

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z Asupra datelor unei tabele se pot efectua urmtoarele operaii: - introducerea (memorarea) de noi linii, - tergerea anumitor linii, - modificarea liniilor, adic modificarea valorilor anumitor cmpuri de pe anumite linii, - citirea (regsirea, localizarea) anumitor linii din tabel n vederea prelucrrii datelor din aceste linii. Asupra structurii unei tabele se pot face urmatoarele operaii: - introducerea de noi cmpuri, - tergerea unor cmpuri, - modificarea caracteristicilor anumitor cmpuri,

Organizarea datelor n baze de date relaionale


n modelul relaional, o baz de date poate fi considerat o colecie de una sau mai multe tabele dependente ntre ele, care servesc uneia sau mai multor aplicaii. Pentru a nelege mai bine noiunea de baza de date s definim, mai nti, "ce se nelege prin tabele dependendente?". Fie 2 tabele T1 i T2. Spunem ca tabelele T1 i T2 sunt dependente sau n coresponden, dac oricrei linii din tabela T1 i corespunde cel puin o linie din tabela T2. n acest caz, T1 reprezint "tabela printe", tabela T2 reprezint "tabela copil", iar dependena dintre aceste tabele este reprezentat prin diagrama din Figura 1.

Atenie. UneleSGD-urii (ex. Visual FOXPRO) folosesc termenul de relaie, probabil mai
sugestiv, n locul termenilor de coresponden sau dependen. n acest curs vor fi utilizai termenii de coresponde sau dependen pentru a se evita confuzia cu termenul de relaie utilizat de E.F.Cod pentru tabel. Dac am utiliza termenul de relaie am fi tentai, uneori, s utilizm expresia relaia dintre relaii.

Figura 1 Diagrama dependenei a dou tabele Dac oricrei linii din tabela T1 i corespunde o singur linie din tabela T2 atunci corespondena dintre cele doua tabele este tipul 1:1 (unu la unu) (Figura 2.A).

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z Dac exist linii din tabela T1 crora le pot corespunde mai multe linii din tabela T2 atunci corespondena dintre cele doua tabele este de tipul 1:N (unu la mai muli sau 1 la N) (Figura 2.B).

Figura 2 Dependene 1:1 i 1:N

Definirea dependenelor
Maniera cea utilizat pentru definirea dependenelor dintre dou tabele este aceea a definirii unui cmp de legtur. Cmpul de legtur este format din una sau mai multe cmpuri, care apar n structura ambelor tabele cu aceeai semnificaie sau semnificaii echivalente n lumea real. Unei linii printe din tabela printe i va corespunde linia sau liniile fiu din tabela copil, pentru care cmpul de legtur din liniile copil are aceeai valoare cu cmpul de legtur din linia printe. ntre tabele unei baze de date relaional pot fi definite dou categorii de dependene: - dependene permanente, - dependene temporare. Dependenele permanente Dependenele permanente au o durat mare de existen, chiar att timp ct exist baza de date, dac se dorete. Rolul dependenelor permanente este acela de a defini condiii de integritate referenial, care au la baz principiul c "ntr-o tabel copil nu trebuie s existe nici o linie care s nu corespund unei linii din tabela printe" (nu sunt admii copii fr prini, adic copii orfani). Condiia de integritate referenial permite existena de liniii n tabela printe crora nu le corespund nici o linie n tebela copil. n general, n aceast situaie se atribuie ca linie copil o linie vid. Dependenele temporare Dependenele temporare, dup cum sugereaz i denumirea sunt cu caracter temporar. O dependen temporar este definit pentru a simplifica prelucrrile care implic date din mai multe tabele dependente. Dependenele temporare pot de tipul printe/copil de tipul1:1 sau 1:N. n cazul dependenelor de tipul printe/copil ntre dou tabele A i B pot s apar situaii de genul: - o prelucrare poate s cear ca tabela A s fie printe i tabela B s fie copil, - iar alt prelucrare s cear tabela B printe i tabel A copil. Observaie n cazul mai multor tabele dependente ntre ele, indiferent de tipul dependenei, pot s apar urmtoarele situaii:
5

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z o tabel s fie tat la mai multe tabele fiu, o tabel s fie tabel fiu pentru mai multe tabele tat, o tabel s fie fiu n raport cu o tabel i s fie tat n raport cu alt tabel.

Structura unei baze de date


Dac la nceputurile organizrii datelor n baze de date, o baz de date coninea numai date, astzi bazele de date permit ca pe lng date s conin i alte tipuri de informaii cum ar fi cod de programe, forme, rapoarte, etc.. Din aceste motive o baz de date poate fi privit ca un container n care pot fi stocate obiecte de diverse tipuri , gestionat de un instrument software specializat, numit Sistem de Gestiune a Bazelor de Date (SGBD), care servete uneia sau mai multor aplicaii utilizator. Obiectele pot fi de tip: - tabel, vedere, - cod program, - form , raport, etc.. O baz de date relaional trebuie s respecte o serie de reguli, printre care: - o baz de date relaional apare ca o colecie de tabele (relaii), - dou tabele dintr-o baz de date nu pot avea acelai nume, - ntr-o tabel nu sunt admise duplicatele (doua linii identice), - ordinea liniilor dintr-o tabel este nesemnificativ, - ordinea coloanelor dintr-o tabel este nesemnificativ, - valorile de pe coloane sunt atomice (nedecompozabile), - liniile dintr-o tabel pot fi identificate prin intermediul valorilor unei coloane sau a mai multor coloane, care pot forma aa numitele chei unice sau chei primare , - reducerea la maximum a redundanelor, - operaiile asupra datelor din tabele se execut prin intermediul operatorilor relaionali, - limbajul utilizat pentru regsirea i ntreinerea datelor este un limbaj neprocedural, prin care nu se cere utilizatorului s defineasc cile de acces la date sau s cunoasc structura fizic a datelor.

Rolul dependenelor permanente ntre tabele


Dependenele permanente sunt utilizate, n majoritatea bazelor de date relaionale, pentru definirea condiiilor de integritate referenial. Dac ntre dou tabele s-a definit o dependen permanent, printe/copil, atunci condiia de integritate referenial, definit pe tabele, afecteaz urmtoarele operaii: - Introducerea de noi linii n tabela copil. Orice linie nou pentru tabela copil este acceptat, dac valoarea cmpului de legtur se regsete printre valorile campului de legtur din liniile tabelei printe, ceea ce nsemn c pentru linia copil din tabela copil exist o linie printe n tabela printe. Dac valoarea cmpului de legtur nu se regsete printre valorile cmpului de legtur din liniile tabelei printe, linia nu este acceptat n tabela copil. - tergerea de linii din tabela tat. Dac unei linii parinte din tabela parinte nu-i corespunde nici o linie copil n tabela copil, atunci linia din tabela parinte poate fi

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z tears. Dac unei linii parinte din tabela parinte i corespunde cel puin o linie copil n tabela copil, atunci poate fi ntreprins una din urmtoarele aciuni: . linia din tabela parinte nu se terge, . tergerea liniei parinte este nsoit de tergerea liniilor copil corespunztoare din tabela copil: are loc fenomenul de tergerea n cascad. - Modificarea valorilor cmpului de legtur din tabela tat. Dac unei linii parinte din tabela parinte nu-i corespunde nici o linie copil n tabela copil, atunci valoarea cmpului de legtur din linia printe poate fi modificat. Dac unei linii printe din tabela parinte i corespunde cel puin o linie copil n tabela copil, atunci poate exista una din urmtoarele situaii: . nu se poate modifica valoarea cmpului de legtur din linia parinte, . modificarea valorii cmpului de legtur din linia parinte este nsoit de modificarea cu aceeai valoare a cmpului de legtur din liniile copil corespunztoare din tabela copil: are loc fenomenul de modificare n cascad. - Modificarea valorilor cmpului de legtur din tabela copil. La modificarea valorii cmpului de legtur dintr-o linie a tabelei copil poate s apar una din situaiile: . dac noua valoare a cmpuluii de legtur nu se regsete printre valorile cmpului de legtur din liniile tabelei printe, atunci noua valoare nu este acceptat, . dac noua valoare a cmpului de legtur se regsete printre valorile cmpului de legtur din liniile tabelei printe, atunci noua valoare este acceptat: deci linia copil i schimb linia printe.

Indexarea tabelelor
Citirea liniiilor dintr-o tabel se poate face n dou moduri: - n mod secvenial, - n mod direct. n citirea secvenial pentru a citi linia cu numrul k trebuie citite cele k-1 linii anterioare, adic altfel zis, liniile din tabel se citesc una dupa alta n ordinea n care ele sunt memorate n tabel. Prin citirea n mod direct o linie este localizat direct, fr a mai fi nevoie de citirea altor linii din tabel. Citirea n mod direct se bazeaz pe aa numitele "criterii de selecie", care pot fi: - numrul sau identificatorul intern al liniei n cadrul tabelei, - valorile unei coloane sau a unui grup de coloane din structura tabelei. Citirea n acces direct pe baza valorilor unui coloane sau a unui grup de coloane se face prin tehnica indexrii. n ce const tehnica indexarii? O coloan sau un grup de coloane din structura tabelei sunt declarate "coloan index", prescuratat "index" sau "coloan cheie", prescurtat "cheie". Pe baza coloanei index, se creaz o "tabel index", care este format din "nregistrri index". n general, o nregistrare index este format din dou valori: valoarea indexului (coloanei index) i valoarea care reprezint numrul sau identificatorul intern (adresa liniei) al liniei corespunztoare din tabel (Figura. 4).
7

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z

<valoare index>

<id. linie>

Figura 4 nregistrarea index n tabela index, nregistrrile index sunt memorate n ordinea cresctoare sau descresctoare a valorilor indexului (vezi exemplul din Figura 5). Citirea n acces direct pe baza unui index, presupune faptul ca utilizatorul furnizeaz valoarea indexului (coloanei index) iar sistemul citete nregistrarea index pentru care indexul are valoarea indicat. n acest caz procesul de citire se desfaoar n modul urmtor: - mai nti, se citete nregistrarea index din tabela de index, pentru care indexul are valoarea indicat (exist metode de citire direct a nregistrrilor index, favorizate de faptul ca nregistrrile index sunt ordonate dup valoarea indexului), - iar apoi, pe baza numrului sau identificatorului intern al liniei gsit n nregistrarea index se citeste direct nregistrarea corespunzatoare din tabel (vezi Figura 5). n unele situaii indexarea este utilizat i pentru citirea secvenial. n acest caz, liniile nu mai sunt citite secvenial n ordinea n care sunt memorate n tabel, care reprezint "ordinea fizic", ci n ordinea dat de nregistrrile index din tabela de index, care reprezint "ordinea logic". n acest caz, indexarea n citirea secvenial, ofer o ordonare a liniilor dintr-o tabel, fr ca liniile din tabel s fie ordonate fizic. Citirea secvenial a liniilor tabelei din Figura 1.5 va furniza liniile din tabel n ordinea: 2, 4, 1, 5, 3.

Fig. 5 Tabel index Indecii asociai unei tabele se pot defini: fie la definirea structurii tabelei, fie ulterior n mod explicit prin comenzi dedicate. Pentru o tabel pot fi definii, n general, orici indeci dorim, dar aspectele legate de performan cer ca numrul acestora s fie redus (cel mult 2 sau 3 indeci pentru o tabel).

Tipuri de indeci
n practica structurrii tabelelor exist urmtoarele tipuri (categorii) de chei (indeci): - chei candidate (indeci candidai), pentru care nu exist dou linii n care cheia s aib aceeai valoare: pot fi definii mai multe chei candidai pentru o tabel, - cheie primar (indeci primar), pentru care nu exist dou linii n care cheia s aib aceeai valoare: ntr-o tabel poate fi definit o singur cheie primar,

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z
-

chei normale (indeci normali), care admit existena a dou sau mai multe linii n care cheia s aib aceeai valoare: pot fi definii mai multe chei normale pentru o tabel

Sisteme de Gestiune a Bazelor de Date (SGBD)


Funciile unui SGBD
Pentru lucrul cu baze de date exist instrumente software specializate numite generic Sisteme de Gestiune a Bazelor de Date (SGBD). Piaa software-lui este bogat n SGBDuri care au diverse denumiri, cum ar fi: Visual FOXPRO, PARADOX, ACCESS, SQL-Server, Oracle, SYBASE etc. Un SGBD pune la dispoziia utilizatorilor o gam larg de funcii care asigur : - Funciile de baz ale SGBD-ului, cum ar fi: . crearea i modificarea structurii bazei de date i a obiectelor BD, . introducerea, tergerea sau modificarea datelor din tabelele bazei de date, . citirea datelor din tabelele bazei de date n vederea prelucrrii lor. - Faciliti pentru dezvoltarea de aplicaii utilizator (crearea i execuia de aplicaii utilizator cu meniuri, forme, rapoarte, etc.). Lucrul cu baza de date n primul rnd trebuie s tii, c dac dorii s lucrai n aplicaiile dumneavoastr cu baze de date gestionate de un anumit SGBD, trebuie s achiziionai acel SGBD, dup care sl instalai pe calculatorul dumneavoastr, sau pe un calculator din reeaua de calculatoare unde lucrai. Modul de instalare al unui SGBD depinde de SGBD i de sistemul de operare sub care vei lucra. Din punct de vedere al numrului de utilizatori care pot accesa n acelai timp datele bazei de date, exist: - SGBD-uri cu baze de date locale, la care accesul la baza de date este permis numai pentru un utilizator, - SGBD-uri cu baze de date partajate, la care accesul la baza de date este permis mai multor utilizatori. SGBD-urile de astzi nu mai lucreaz cu baz de date local, ci cu baz de date partajat ntre utilizatorii unei reele de calculatoare. Accesul partajat la o baz de date se bazeaz pe aa numita tehnologie client-server.

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z n tehnologia client-server, baza de date este memorat pe discurile unui calculator din reea i reprezint baza de date server. Clientul este orice utilizator, eventual de pe alt calculator din reea, care dorete s lucreze cu baza de date. Clientul este reprezentat printr-o aplicaie utilizator sau printr-o component a SGBD-ului.

Figura 8 Tehnologia Client/Server

10

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z

Introducere in Visual FOXPRO


Visual FOXPRO este un SGBD relational al firmei MicroSoft. El ofera toate facilitatile recunoscute pentru un SGBD modern.

Lansare in executie V.Foxpro


Dublu-clic pe pictograma

Mod lucru in V.Foxpro


Interactiv (Limbaj De Programare) Asistat (meniului, ferestrelor de dialog, asistentilor) Prin programe (comenzi stocate intr-un fisier text)

Limbajul V Foxpro
Este format din comenzi. Fiecare c-da este formata din cuvinte: Cheie Utilizator Cuvintele sunt organizate in clauze Numai din cuvointe cheie Numai din cuvinte utilizator Combinati de cuvinte cheie si utilizator Exista clauze Optionale Obligatorii Se descrie o c-da, se descriu:

11

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z Functia Sintaxa Comentarii Exemple

Metalimbajul Utilizat in sintaxe


Cuv cheie se scriu cu majuscule Cuv utilizator se scriu cu litere mici Cuv se separa printr-un spatiu sau alt separator descris in sintaxa

[clauza optionala] {clauza1 | clauza2| } [clauza optionala] sau {clauza1 | clauza2| }


Sintaxa generala a comenzilor

Verb-comanda [clauze]

Variabilele de mediu de lucru V.Fox nume valori Setarea variabilelor de mediu asistat prin comenzi SET cu sintaxa

SET numevar TO valoare


Exemplu
Setarea directorului implicit de stocare si regasire a fisierelor create cu VFP

Crearea unei bazei de date VFP


Crearea unei tabele in BD
Creati tabela SALARIATI cu structura descrisa anterior Creati Tabela SERVICII cu urmatoarea structura

Codserv Denserv

N,2 C,12
12

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z

Cheltuieli N,7 Sef C,20 Ca sa putem stabili o relatie permanenta intre 2 tabele, trebuie ca:
tabela parinte sa fie indexata dupa campul de legatura (index primar sau candidat) tabela copil sa fie indexata dupa campul de legatura (orice index)

Cum definim relatia? D&D (Drag and Drop) de la cheia camp de legatura din tabela parinte (cheaia CODSERV din SERVICII) la cheia camp de legatura din tabela copil (cheaia CODSERV din SALARIATI).

Comenzi Visual FOXPRO (Sintaxe prescurtate)


Comanda CREATE DATABASE Creaza o baza de date V.FOXPRO Sintaxa CREATE DATABASE numebd

Comanda OPEN DATABASE


Deschide o baz de date. Syntaxa OPEN DATABASE [numefis ] [{EXCLUSIVE | SHARED}] [NOUPDATE]

n numefis putei specifica i calea directorului unde este stocat fiierul BD. Dac omitei numele bazei de date, atunci VFP afieaz o fereastr de dialog pentru a selecta fiierul bazei de date pentru deschidere. Starii variabilei de mediu EXCLUSIVE: ON, atunci deschiderea este exclusive OFF, atunci deschiderea este partajat
13

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z

Baza de date curent


Mai multe baze de date pot fi deschise la un momen dat, dar numai una poate fi BD curent. O serie de comenzi (ADD TABLE, MODIFY DATABASE, etc.) sau funcii opereaz pe baza de date curent. O baz de date poate fi fcut curent: Prin comanda SET DATABASE TO Prin alegerea ei din lista expandabil, din trusa standard a lui VFP Comanda SET DATABASE TO are sintaxa: SET DATABASE TO [numebd] Unde numebd este numele unei BD deschis, care se dorete s devin curent SET DATABASE TO face ca nici obaz de date s nu fie curent.
Exemple CREATE DATABASE bdc1 CREATE DATABASE bdc2 SET DATABASE TO bdc1 CREATE tabela1 CLOSE TABLES REMOVE TABLE tabela1 SET DATABASE TO bdc2 ADD TABLE tabela1

Deschiderea tabelelor
Zone de lucru n VFP
Pentru deschiderea tabelelor VFP utilizeaz nite zone de memorie intern numite zone de lucru. O tabel se deschide ntr-o zon de lucru, iar ntr-o zon de lucru nu se dechide dect o singur tabel. n zona de lucru sunt memorate informaii despre tabela deschis n zon. Zonele de lucru sunt identificate printr-un numr (1,2,3, ), iar primele 10 zone de lucru mai pot fi identificate printr-un alias de forma A, B, C, , J. Pot fi cel mult 32767 zone de lucru. La un moment dat o singur zon este zon de lucru curent sau zon de lucru activ. Cnd o zon de lucru este curent, atunci tabela deschis n ea este tabel curent. Unele comenzi lucreaz pe tabela curent, sau au ca baz de lucru tabela curent.

Comanda SELECT
Activeaz o zon de lucru. Sintaxa SELECT {idzon | aliastabel}

Comanda USE
Deschide sau nchide o tabel.

14

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z

Sintaxa
USE

[ [numebd.]numetabel [IN idzona] [ALIAS aliastabel] [{EXCLUSIVE | SHARED}] [NOUPDATE] ]


Comanda USE fr nici o clauz, nchide tabela curent.

Aliasul tabelei sau aliasul zonei de lucru (pentru primele 10 zone de lucru) sunt necesare la referirea campurilor dintr-o tabela care nu este tabela curenta, dupa sintaxa:

aliastabela.numecamp aliaszona.numecamp Despre indexare


Cnd un cmp sau o combinaie de campuri este declarat cmp index sau cmp cheie este generat o tabel numit tabela de index (pe scurt index), care este formata din inregistrri index. Cmpul sau combinaia de cmpuri index, reprezint aa numita expresie index. O inregistrare index este formata din dou valori Valoare expresie index

Numarul inregistrarii

Inregistrarile index sunt stocate n index. n ordinea ascend sau descendent a valorilor expresiei index.
Tabela index A 3 B 1 C 5 D 2 E 4 (1) (2) (3) (4) (5) Tabela B D A E . C .

Stocarea unui index (tabel index) se poate face: ntr-un fiier mono-index (cu orice nume i extensia .IDX) n fiierul multi-index structurat care are acelasi nume cu numele tabelei, dar cu extensia .CDX ntr-un fiier multi-index utilizator, cu orice nume i extensia .CDX

Observaie
Noi vom lucra cu indecsi stocati in fisierul multi-index structurat. Fiierul multi-index structurat se deschide automat cnd se deschide tabela.

Utilitatea indecilor
Definirea dependentelor permanente Definirea dependentelor temporare Citirea direct a nregistrrilor Citirea secvenial a nregistrrilor

Ordinea nregistrarilor dintr-o tabel poate fi: Ordine fizic, care corespunde ordinii de stocare a nregistrrilor n tabel. Ordinea logic, care corespunde ordinii dat de un index. De cele mai multe ori, pentru ca un index s fie utilizat ntr-o prelucrare trebuie ca el s fie fcut index activ sau index master. 15

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z

Comanda INDEX
Creaz un index pentru tabela curent Sintaxa de creare a unui index stocat n fiierul multi-index structurat

INDEX ON expresie TO TAG numeindex [FOR cond_sel_nr_ind] [{ASCENDING | DESCENDING}] [{UNIQUE | CANDIDATE}]
Dac nu este specificat ordonarea, implicit este ASCENDING. Dac nu este specificat tipul indexului, atunci, implicit, el este regular (normal)

Comanda SET ORDER TO


Activeaz un index sau face un index, index master. Sintaxa

SET ORDER TO

[ [TAG] numeindex ] [IN {idzona | aliastab}]

SET ORDER TO anuleaz indexul master.

Comanda CLOSE
nchide diverse tipuri de fiiere. Sintaxa CLOSE

{ALL | DATABASES [ALL] |

TABLES [ALL]

Comanda APPEND
Adaug una sau mai multe nregistrri la sfritul unei tabele. Sintaxa APPEND [BLANK]

[IN

{ idzon | aliastabel}

Setari Data calendaristica SET CENTURY ON | OFF SET DATE { AMERICAN | ANSI | BRITISH | FRENCH | GERMAN | ITALIAN | JAPAN | TAIWAN | USA | MDY | DMY | YMD }
Semnificatii AMERICAN ANSI mm/dd/yy yy.mm.dd 16

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z
BRITISH/FRENCH dd/mm/yy GERMAN dd.mm.yy ITALIAN dd-mm-yy JAPAN yy/mm/dd TAIWAN yy/mm/dd USA mm-dd-yy MDY mm/dd/yy DMY dd/mm/yy YMD yy/mm/dd

Exemplu:
Comenzile ? si ??

SET DATE BRITISH

Evalueaz o expresie i afieaz rezultatul evalurii Sintaxa

{ ? | ?? } Expresie
Unde expresie este o expresie valid VFP. ? Expresie execut retur-de-car nainte de afiarea rezultatului evalurii expresiei. ?? Expresie nu execut un retur-de-car nainte de afiarea rezultatului evalurii expresiei.

Datele cu care lucreaza V.FOXPRO

Tabele, inregistrari, campuri, valori de campuri Constante Variabile Functii Expresii


Constante

Marimi care nu-si modifica valoarea in timp Numerice: 2, -3.14 Sir de caractere: ABC123 sau ABC123 sau abc123

Data calendaristica si timp:

Format: {^aaaa/ll/zz}
Exemplu Logice: .T. Variabile

{^aaaa/ll/zz hh:mm:ss}

{^2012/01/01} {^2012/01/01 14:50:30}

sau .F.

Marimi care isi schimba valoarea in timp. Au nume si ocupa un spatiu de memorie RAM. Pot fi de tip: Numeric, 17

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z
Sir de caractere Data calendaristica Logice

Functii
Functiile sunt subprograme ce executa anumite prelucrari si returneaza o valoare. Unor functii li se pot transmite date pe care aceastea le prelucreaza. Transmiterea de date se face prin asa numitii parametrii ai functiei. Apelul functiei:

numefct([parametri])
Tipuri de functii: Numerice, Sir de caractere Data-timp Logice De conversie Functia DATE() returneaza data din sistemul de calcul.

Expresii
O expresie este o succesiune de operanzi si operatori care respecta anumite reguli. Operanzi definesc datele Operatorii definesc operatiile care se executa asupra operanzilor

Tipuri de expresii Numerice Sir de caractere Data/timp Relationale Logice

Expresii Numerice

Operanzi numerici (campuri, constante, variabile,functii) Operatori aritmetici Operatori Numerici


Operator
() **, ^ *, / % +, Groupare in subexpresii Ridicare la putere Inmultire si impartire Modulo (restul) Adunarea si scaderea

Actiune
?(4-3) * (12/2) ? 3 ** 2 ?3^2 ?2*7 ? 14 / 7 ? 15 % 4 ? 4 + 15

Exemplu

18

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z

Expresiile sir de caractere O expresie de tip sir de caractere este formata din:
Operatorii de concatenare +, -. Operanzi de tip sir de caractere

Operator Exemple

Action

+
-

Concatenare obisnuita.

?Popescu
Concatenare cu eliminarea spatiilor din dreapta primului operand.

+Vasile

?Popescu
Expresiile Data/timp
Este formata din Operanzi data/timp sau numerici Operator + Operatorii + sau Actiune Addition Subtraction

-Vasile

Code datacal+nr Datacal datacal-nr Datacal datacal1-datacal2 Nrzile

?Date( )+1000
?{^2012/01/01}-date()
Expresiile relationale

Este formata din 2 operanzi de acelasi tip legati printr/un operator de comparare (relational) O expresie relationala are una din valorile .T. sau .F. Relational Operators
Operator < > = <>, #, !=diferit <= >= $ Action mai mic mai mare egal mai mic egal cu mai mare egal cu inclus in Code ? 23 < 54 ?1>2 ? ABC =abc ? .T. <> .F. ? {^1993/01/01} <= {^1992/01/01} ? 32 >= 32.5 ?pop$prtopopescu 19

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z

operad1$operand2 ? 'escu' $ 'popescu' are valoarea .T. ? 'dan' $ davidescu are valoarea .F.

Expresii logice
O expresie logica este formata din una sau mai multe expresii relationale legate prin operatorii logici: NOT, AND sau OR.
Operator () NOT AND OR Action grupare subexpresii negare logica AND logic (SI) OR logic (SAU) Code cVar AND (cVar2 AND cVAR3) IF NOT cVarA = cVarB IF ! nVar1 = nVar2 lVar0 AND lVar9 lVarX OR lVarY

NOT

.T. .F. .T. .T. .F. .T. .T. .T.

.F. .T. .F. .F. .F. .F. .T. .F.

AND .T. .F. OR .T. .F.

Comenzile DISPLAY i LIST


Afieaz valori de cmpuri sau expresii din nregistrrile tabelei curente. 20

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z
Sintaxa

{ DISPLAY | LIST } [list_cmpuri_expresii] [domeniu] [FOR expr_sel] [OFF] [NOCONSOLE] [{TO PRINTER [PROMPT] | TO FILE numefis_ies}]
Comentarii list_cmpuri_expresii este list de cmpuri i/sau expresii, separate prin virgul, a cror valori se doresc a se afia. Dac nu este specificat sunt afiate valorile tuturor cmpurilor din tabela curent. Coninutul cmpului memo nu este afiat dect n cazul n care este specificat explicit n list. Dimensiunea de afiare a cmpurilor memo este determinat de parametrul MEMOWIDTH.

domeniu

specific mulimea de nregistrri din tabela curent pe care va lucra comanda. Clauza domeniu poate avea una din valorile: ALL, NEXT nr_nregistrari, RECORD nr_nregistrare, REST.

Exemple
LIST NUMES, PRENS, SALAR+SPOR OFF for codserv=10 AND SALAR>1000 LIST NUMES, PRENS, SALAR+SPOR OFF for escu$numes LIST NUMES, PRENS, (DATE()-datanast)/365 TO FILE FISSAL LIST RECORD 2

tergerea de nregistrri
tergerea nregistrrilor dintr-o tabel se face n doi pai: - tergerea logic sau marcarea nregistrrilor pentru tergere. - tergerea fizic.

Comanda DELETE
Marcheaz anumite nregistrri pentru tergere.

Sintaxa

DELETE

[domeniu]

[FOR exprlog] [IN {idzona | aliastab}]

Domeniu: ALL RECORD nr REST NEXT nr


21

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z Dac domeniu nu este specificat, comanda lucreaz pe nregistrarea curent.

Functia DELETED()
Funcia DELETED [IN {idzona | aliastab}] returneaz valoarea .T. dac nregistrarea este marcat pentru tergere i valoarea .F. dac nregistrarea nu este marcat pentru tergere. Exemplu pentru afiarea nregistrrilor marcate pentru tergere LIST FOR DELETED()

Comanda PACK
terge fizic nregistrrile marcate pentru tergere din tabela curent. Sintaxa

PACK Comanda RECALL


Anuleaz marcatorul de nregistrare tears logic pentru anumite nregistrri terse fizic din tabela curent. Sintaxa

RECALL [domeniu] [FOR exprsel]


Dac domeniu nu este specificat , implicit este nregistrarea curent.

Comanda ZAP
Sterge fizic toate inregistrarile dintr-o tabela. Sintaxa

ZAP [IN {idzona | aliastab}]


Dac variabila SAFETY este pe ON, atunci Visual FoxPro ntreab dac dorii s tergei nregistrrile tabelei currente.

Modificare nregistrri
Modificarea nregistrrilor dintr-o tabel, adic modificarea valorilor anumitor cmpuri din anumite nregistrri, se poate face: Interactiv (prin c-zile BROWSE sau EDIT) Automat pe baza unor expresii (prin c-da REPLACE

Comenzile BROWSE i EDIT


Permit afiarea i modificarea, introducerea i tergerea interactv a nregistrrilor din tabela curent. Sintaxa

22

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z

{ BROWSE | EDIT }

[FIELDS list_cmpuri]

[FOR expr_sel] [FREEZE numecmp] [NOAPPEND] [NODELETE] [{NOEDIT | NOMODIFY}] [TITLE titlu]
list_cmpuri poate fi o list de: cmpuri din structura tabelei curente sau a unor tabele n relaie cu tabela curent, cmpuri calculate, separate prin virgul.

Un cmp din list poate fi urmat de opiunile:

[:R] [:H = constantasircar]


Unde :R definete cmp Read-Only :H definete un titlu pentru coloan.

Cmpuri calculate (Calculated Fields)


Un cmp calculat este un cmp Read-Only, a crui valoare se calculeaz pe baza unei expresii valide VFP.

nume_camp_calculat = expresie
Exemplu BROWSE FIELDS numes:H=Nume salariat, prens:R:H=Prenume salariat ,castig=salar+spor:H=Total castig

Expr_sel din clauza FOR este o expresie logica. Vor fi afisate date numai din inregistrarile pentru
care expresia este adevarata.

Prin clauza FREEZE puteti specifica campul pe care sa fie pozitionat, tot timpul, cursorul de editare. Comanda REPLACE
Actualizeaz valorile unor cmpuri din anumite nregistrri pe baza valorilor anumitor expresii. Sintaxa

REPLACE numecamp1 WITH expresie1 [ADDITIVE] [, numecamp2 WITH expresie2 [ADDITIVE]] ... [domeniu] [FOR condselinr]
Numecamp1, numecamp2, sunt numele cmpurilor a cror valori se vor modifica cu valorile expresiilor expresie1, expresie2, . Domeniu dac nu este specificat este nregistrarea curent.
23

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z ADDITIVE adaug valoarea la sfritul valorii existente pentru cmpul memo.

Citirea nregistrrilor
Citirea nregistrrilor dintr-o tabel se poate face: - direct (pe baza numrului de nregistrare sau a unui index), - secvenial.

Comanda GOTO (GO)


Citete o nregistrare dintr-o tabel pe baza numrului de nregistrare. nregistrarea citit devine nregistrare curent n tabel. Sintaxa

GOTO

[RECORD] nrinr

[IN {idzona | aliastab}]

Sau

GOTO

{ TOP | BOTTOM}

[IN {idzona | aliastab}]

Comanda SEEK
Citete n mod direct prima nregistrare dintr-o tabel pentru care un index are o valoare precizat. nregistrare citit devine nregistrare curent Sintaxa

SEEK val_expr_ind [ORDER [TAG] numeind ] [IN {idzona | aliastab}]


Dac SEEK gsete o nregistrare, atunci:

RECNO( ) returneaz numrul nregistrrii citite FOUND( ) returneaz Adevrat (.T.), EOF( ) returneaz Fals (.F.).
Dac SEEK nu gsete nici o nregistrare, atunci:

RECNO( ) returneaz numrul de nregistrrii din tabel plus 1 FOUND( ) returneaz False (.F.), EOF( ) returneaz Adevrat (.T.).

Comanda LOCATE
Citete secvenial prima nregistrare din tabela curent care ndeplinete o condiie specificat n comand. nregistrarea citit devine nregistrare curent. Sintaxa 24

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z

LOCATE

FOR cond_citire [domeniu]

Dac LOCATE gsete o nregistrare, atunci:

RECNO( ) returneaz numrul nregistrrii citite FOUND( ) returneaz Adevrat (.T.), EOF( ) returneaz Fals (.F.).
Dac LOCATE nu gsete nici o nregistrare, atunci:

RECNO( ) returneaz numrul de nregistrrii din tabel plus 1 FOUND( ) returneaz False (.F.), EOF( ) returneaz Adevrat (.T.).

Dup ce LOCATE gsete nregistrarea putei executa o comand CONTINUE pentru a citi urmtoarea nregistrare care ndeplinete condiia din LOCATE.

Comanda CONTINUE
Comanda CONTINUE citete urmtoarea nregistrare care ndeplinete condiia din ultima comand LOCATE executat. . nregistrarea citit devine nregistrare curent. Sintaxa

CONTINUE Comanda SKIP


Citete o nregistare printr-un salt nainte sau napoi cu un numr de nregistrri dintro tabel. nregistrarea citit devine nregistrare curent. Sintaxa

SKIP
Comentarii

[nr_salt_inr] [IN {idzona | aliastab}]

Nr_sal_inr specific numrul de nregistrri srite fa de nregistrarea curent, dintr-o tabel, pn la nregistrarea citit: - Dac valoarea este pozitiv, saltul se face spre sfritul tabelei (nainte), - Dac valoarea este negativ, saltul se face spre nceputul tabelei (napoi). Dac nr_sal_inr nu este specificat, atunci este 1 (unu). Dac nregistrarea curent este ultima nregistrare din tabel, atunci un SKIP nainte determin ca: RECNO( ) s returneze o valoare cu 1 mai mare dect numrul nregistrrilor din tabel, EOF( ) s returneze Adevrat (.T.),

Dac nregistrarea curent este prima nregistrare din tabel, atunci un SKIP -1 determin ca: - RECNO( ) s returneze valoare 1, - BOF( ) s returneze Adevrat (.T.),

Observaie
25

Initiere in Visual FOXPRO Autor: Eugen Maftei www.cartiaz.ro Carti si articole online gratuite de la A la Z

Dac tabela pe care lucreaz comenzile GO TOP, GO BOTTOM, LOCATE, CONTINUE i SKIP sunt controlate de un index master, atunci aceste comenzi respect secvena (ordinea) nregistrrilor dat de indexul master.

Relatii temporare intre tabele


Cerinte Toate tabelele trebuie sa fie deschise in zone de lucru diferite Tabelele trebuie sa fie indexate dupa campul de legatura si indexul respectiv trebuie sa fie index master Tabela parinte trebuie sa fie tabela curenta Pentru Relatia de tipul 1:1 scrieti o comanda SET RELATION cu urmatoarea sintaxa: SET RELATION TO [campleg1_tata INTO {idzonafiu1 | aliastabfiu1}] [campleg2_tata INTO {idzonafiu2 | aliastabfiu2}] . . . [ADDITIVE] Pentru Relatia de tipul 1: Pentru Relatia de tipul 1:1 scrieti o comanda SET RELATION cu urmatoarea sintaxa: scrieti o comanda SET RELATION cu urmatoarea sintaxa: SET SKIP TO [aliasfiu1 [, aliasfiu2] ...

26

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