Sunteți pe pagina 1din 161

UNIVERSITATEA LUCIAN BLAGA DIN SIBIU

FACULTATEA DE TIINE ECONOMICE

BAZE DE DATE
- Note de curs (format ID)

SIBIU - 2009
1

BAZE DE DATE

1. BAZE DE DATE BAZE DE DATE RELAIONALE


CONCEPTE DE
BAZ:

OBIECTIVE:

RECOMANDRI
PRIVIND
STUDIUL:
REZULTATE
ATEPTATE:

1. Fiier, Baz de date


2. Sistem de gestiune a bazelor de date (SGBD),
dicionar de date
3. Model entitate-relaie, atribut, constrngere
4. Modelele intern, extern i conceptual i tipurile de
independen
5. Relaie i tabel.
1. Crearea unei perspective clare asupra bazelor de
date.
2. Familiarizarea cu elementele legate de baze de date
i modelele bazelor de date.
3. Crearea unor deprinderi referitoare la proiectarea
bazelor de date.
Pentru parcurgerea prezentului material se recomand
parcurgerea atent a bibliografiei, precum i studierea
atent a materialului aferent n cadrul Activitilor
Asistate (AA).
1. Clarificarea noiunilor legate de baze de date i
modele de date.
2. Clarificarea noiunilor legate de proiectarea i
normalizarea bazelor de date.

1.1. CONCEPTE GENERALE REFERITOARE LA BAZE DE DATE


OBIECTIVE

NOIUNI CHEIE

1. Clarificarea noiunilor referitoare la conceptele generale


legate de baze de date i nivelele de organizare ale
acestora.
2. Clarificarea elementelor referitoare la modelele de date
i tipurile de independen.
Fiiere, baze de date, arhitectura unei baze de date, nivele
de organizare, entitate relaie, atribut, nivel conceptual,
intern sau extern.

1.1.1. Conceptul de "Baz de date"


Dup cum s-a menionat n capitolul precedent, la baza prelucrrii datelor
stau fiierele. Odat cu dezvoltarea informaticii, numrul acestora a crescut,
ajungndu-se ca ntr-o firm s existe mai multe zeci sau sute de fiiere
permanente i temporare legate de gestiunea personalului, materialelor,
produciei, vnzrilor etc. Aceast cretere a avut o serie de dezavantaje, dintre
care amintim [Nichi90]:
redundana este proprietatea unei informaii de a se repeta
nejustificat; de exemplu codul materialelor, care poate ajunge la 20-30
de cifre, se repet n majoritatea acestor fiiere, mrind nejustificat
spaiul fizic ocupat;
inconsistena este legat de apariia distorsionat a unor informaii n
diferite contexte; una dintre cauzele inconsistenei este redundana
deoarece este suficient ca la o apariie (copie) a informaiei redundante,
aceasta s fie introdus greit i informaia poate deveni inconsistent;
validarea datelor este clar c diferite aplicaii care gestioneaz fiiere
disparate pot valida datele diferit; nevalidarea uniform a datelor poate
duce la compromiterea ntregului sistem de fiiere;
disponibilitatea i securitatea datelor reprezint o problem de
asemenea foarte spinos. Datele aflndu-se n fiiere disparate, acestea
pot fi reinute de proprietari nefiind disponibile i comunitii
utilizatorilor. De asemenea, neexistnd un control centralizat asupra lor
nu se poate asigura securitatea acestora.
Pornind de la toate acestea i multe altele, cum ar fi dezvoltarea tehnicii de
calcul, s-a ajuns la ideea bazelor de date.
3

BAZE DE DATE

O prim definiie a bazelor de date este [Nichi&Racovian96]: baza de


date este un sistem integrat, coerent i partajat de fiiere.
Pentru a asigura folosirea n comun a acelorai date de ctre mai muli
utilizatori era necesar asigurarea independenei aplicaiilor fa de structura
logic a datelor.
Din acest motiv, era necesar desprinderea din cadrul programelor de
aplicaie a descrierii structurii datelor. Acest lucru a fost posibil prin definirea
unui fiier de descriere global a bazei de date, denumit dicionar de date.
Bazele de date au aprut n anii 60, odat cu lansarea programului Apollo,
n 1964, pronind de la ceea ce formau sistemele de fiiere nlnuite, introduse
de IBM pentru gestionarea lansrii i urmririi produciei. Astfel au aprut aa
zisele baze de date arborescente sau de ganeraia 1-a.
Conceptul de baz de date, sub aceast denumire, a aprut pentru prima
dat n anul 1969, an n care CODASYL a publicat, n cadrul unei conferine
dedicate limbajelor de gestiune a datelor, un raport tehnic despre acest concept.
Fa de modelul bazat pe fiiere clasice (file-based), noul model de organizare a
datelor n baze de date include un fiier de descriere global a bazei de date
(dicionar de date) care s poat asigura independena programelor fa de
structura datelor.
Pornind de la aceste considerente, se pot da i alte definiii bazelor de
date, cum ar fi [Fotache01]:
O baz de date reprezint o colecie de date, organizate ntr-o structur
descris printr-un model conceptual sau colecie de date aflate n
interdependen, mpreun cu descrierea datelor i a relaiilor dintre ele.
Totalitatea informaiilor stocate n baza de date la un moment dat
reprezint coninutul bazei de date. Coninutul are un caracter volatil, n sensul
c se modific permanent n funcie de volumul i complexitatea proceselor i
fenomenelor economice la care se refer. Structura datelor mpreun cu
legturile dintre entiti i restriciile de integritate formeaz schema bazei de
date, care, de obicei, rmne constant pe durata utilizrii bazei de date.
Gestionarea datelor dintr-o baz de date este asigurat de un sistem de
gestiune a bazelor de date sau SGBD (n limba englez DBMS - Data Base
Management System).
Un SGBD reprezint un ansamblu de programe pentru gestiunea datelor
sau un mediu de programare destinat gestiunii datelor din baza de date. Prin
urmare, el este cel care asigur ncrcarea bazei de date, actualizarea i
interogarea acesteia, ct i interfaa cu sistemul de operare n vederea
simplificrii accesului la date.
In general SGBD-urile au implementate limbaje gazd, care conin att
instruciuni specifice exploatrii datelor din bazele de date, ct i unele
instruciuni din limbajele de programare clasice.

Un SGBD include, n general, o serie de componente [Date2000] grupate


n jurul dicionarului de date, dintre care amintim:
sistemul de gestiune a fiierelor i suporturilor la nivel fizic;
sistemul de gestiune a fiierelor la nivel logic;
limbajul de manipulare a datelor (LMD) i translatorul aferent;
limbajul de descriere a datelor (LDD) i translatorul aferent;
limbajul de consultare sau interogare (Query Language) i procesorul
aferent, care traduce instruciunile limbajului de consultare n
instruciuni inteligibile pentru sistemul de gestiune la nivel logic;
componente de interfa cu programele de aplicaii;
componente de serviciu, legate de jurnalizri, securitate etc.
Trebuie s specificm, ns, c n majoritatea SGBD-urilor, cum este i
cazul xBase sau Visual FoxPro, mai multe componente, cum ar fi de exemplu
cele trei limbaje i translatoarele lor, sunt integrate, formnd o singur
component.
Principalele funcii ale unui SGBD sunt urmtoarele:
Funcia de descriere date
Funcia de manipulare date
Funcia de utilizare
1.1.2. Arhitectura unei baze de date
Asigurarea independenei logice i fizice a datelor impune adoptarea unei
arhitecturi a bazei de date pe trei nivele astfel:
1. nivelul intern
2. nivelul conceptual
3. nivelul extern
Nivelul intern (baza de date fizic), definete baza de date ca fiind o
colecie de fiiere, coninnd datele din cadrul bazei de date, la care se
adaug i alte structuri auxiliare de date i un set de programe, care
interacioneaz cu sistemul de operare pentru mbuntirea
managementului bazei de date. La acest nivel structura bazei de date se
concretizeaz n schema intern. Aici apare independena fa de cile
de acces, adic utilizatorul nu trebuie s fie preocupat de organizarea i
modul de acces la date la nivel fizic.
Nivelul conceptual, este nivelul imediat superior celui fizic, datele fiind
privite prin prisma semanticii lor, respectiv a coninutului i relaiilor cu
alte date. Acesta este i primul nivel de abstractizare a lumii reale,
avnd ca obiectiv principal modelarea realitii existente prin definirea
i descrierea unitilor logice cu care se lucreaz i a legturilor dintre
acestea. Aceast schem este descris n general de administratorul
5

BAZE DE DATE

bazei de date, el fiind singurul care cunoate i manipuleaz schema


conceptual a bazei de date, degrevnd utilizatorii de cunoaterea
ntregii structuri a bazei de date.
Nivelul conceptual se definete cu ajutorul schemei entitate-relaie (ER)[Gardarin86] sau obiect-entitate-relaie (OLE) [Miranda&Busta86].
Prin entiti se neleg concepte cu care opereaz utilizatorii i prin care
acetia i modeleaz aplicaiile, cum ar fi: PRODUSE, BENEFICIARI,
FACTURI (n cazul unei firme productive) sau PROFESORI, STUDENTI,
SALI, MATERII (n cadrul unei faculti).
Fiecare entitate poate avea una sau mai multe atribute. De exemplu, un
STUDENT are MATRICOLA, NUME, DATA-NATERII, etc.
Constrngerile reprezint proprieti ale datelor i se refer la restricii
privind valorile pe care le pot lua aceste date sau la restricii privind legturile
dintre diferite entiti.
n cadrul oricrei operaii de actualizare a datelor din baza de date sau de
ncrcare a acesteia cu date, se verific aceste constrngeri, pentru a asigura
integritatea bazei de date.
Ca urmare, orice modificare n structura de memorare a datelor sau
schimbarea suportului magnetic, va afecta doar interfaa dintre nivelul
conceptual i cel fizic fr a modifica nivelul conceptual. Rezultatul imediat al
independenei fizice a datelor l reprezint imunitatea aplicaiilor fa de
structura fizic de memorare a datelor. La acest nivel structura bazei de date se
concretizeaz n schema conceptual.
Nivelul extern este ultimul nivel de abstractizare la care se poate descrie
o baz de date.
Nivelul extern conine, deci, o parte din unitile logice descrise la nivel
conceptual, dar poate include i uniti logice care nu apar la nivel conceptual
i care nu au corespondent direct n baza de date fizic, obinute de exemplu
prin calcule. Ca urmare, nivelul extern este derivat din nivelul conceptual i
reprezint ceea ce vede utilizatorul din baza de date. Fiecrui utilizator i va
corespunde un model extern propriu, n funcie de cerinele informaionale ale
acestuia.
Unitile logice folosite la nivel extern se numesc numite uniti logice
virtuale, imagini sau vederi i formeaz o baz de date virtual.
Aceste vederi se pot obine n unul din urmtoarele moduri:
1. prin modificarea unor uniti logice reale;
2. prin combinarea a dou sau mai multe uniti logice reale.
Vederile asigur, printre altele, urmtoarele funcii n cadrul unei baze de
date:
1. securitatea bazei de date
2. definirea modului de acces la date;

3. ofer utilizatorului o viziune simplificat i personalizat asupra bazei


de date.
Prin nivelul extern se realizeaz independena logic a datelor din baza de
date.
Interfaa dintre utilizator i SGBD se poate realiza n mai multe moduri,
dintre care amintim :
- printr-un mecanism de apel (cuvnt cheie urmat eventual de parametrii)
inserat n programele scrise ntr-un limbaj tradiional (C, COBOL, etc),
numit limbaj gazd;
- prin comenzi speciale utilizate autonom (specifice SGBD-urilor, n
afara limbajelor tradiionale), n cazul SGBD-urilor autonome.
1.1.3. Modele de organizare a datelor
Analiza, proiectarea i implementarea structurii bazei de date se
realizeaz utiliznd un anumit model de date.
Un asemenea model reprezint un ansamblu de instrumente
conceptuale, care permit descrierea datelor, a relaiilor dintre ele, a semanticii
lor, ct i a restriciilor la care sunt supuse aceste date [Fotache02,
Popescu02]. Un model de date reprezint, deci, un instrument teoretic care ne
ajut s identificm semnificaia sau coninutul unei colecii de date (structura
de organizare a acestora) ct i modul de utilizare a acestora, prin intermediul
operaiilor permise asupra datelor respective.
Modelul de organizare a datelor este deci o reprezentare a obiectelor lumii
reale i a evenimentelor asociate lor, avnd rolul de a pune la dispoziia
utilizatorilor conceptele de baz i notaiile, care s le permit acestora s
comunice clar i rapid informaiile despre datele firmei [Selinger98].
Ca urmare, un model de date include urmtoarele componente
[Selinger98]:
1. un set de reguli de structurare a datelor prin limbajul de descriere date
(LDD).
2. un set de reguli de manipulare a datelor prin limbajul de manipulare
date (LMD).
Modelele utilizate de bazele de date se pot grupa n trei categorii
[Fotache98]: modele bazate pe obiect, modele bazate pe nregistrare i modele
fizice.
Modelele bazate pe obiect permit descrierea datelor la nivel conceptual i
extern. Din aceast categorie fac parte:
a) modelele entitate-asociaii (E-A), entitate-relaie (E-R) sau obiectentitate-relaie (OLE)
b) modelul semantic
c) modelul funcional
7

BAZE DE DATE

d) modelul orientat pe obiecte.


Din categoria modelelor orientate pe nregistrri fac parte:
a) modelul ierarhic
b) modelul reea
c) modelul relaional.
Aceast din urm orientare a dat natere i clasificrii bazelor de date pe
generaii [Miranda&Busta86, Gardarin86].
Astfel, prima generaie de baze de date a fost cea bazat pe structuri
arborescente, adic relaii de tip 1:n. Dintre SGBD-urile cele mai cunoscute din
domeniu amintim: IMS al IBM (utilizat i azi), Total, System2000, Nomad etc.
A doua generaie de baze de date a fost cea bazat pe reele sau relaii de
tip n:m. Aceste baze de date au fost denumite i baze de date de tip CODASYL,
deoarece aceast organizaie a ncercat s dezvolte un standard pentru ele i s le
introduc n standardul COBOL 81. Dintre SGBD-urile cele mai utilizate n
Romnia, din aceast categorie, amintim SGBD-urile de tip Socrate, dezvoltate
de firma francez CII dup proiectul profesorului M.Abrial de la Universitatea
din Grenoble i DBMS-11, al firmei DEC.
In prezent, cel mai rspndit dintre modelele de baze de date este cel
relaional, adic de tip n:1, dezvoltat de E.F.Codd de la IBM, al crui obiectiv
este acela de simplificare a accesului la date de ctre utilizatorii finali. Aceasta
reprezint a treia etap sau generaie n evoluia SGBD-urilor.

1.1.4. Entiti i tipuri de entiti


O entitate este o realitate obiectiv care exist prin ea nsi. Orice entitate,
aa dup cum s-a mai artat, se caracterizeaz prin anumite proprieti, care n
cadrul modelului de date sunt reprezentate prin atribute.
Entitile la rndul lor sunt reprezentate prin tipuri de entiti.
Mulimea entitilor descrise prin tipul de entitate dat reprezint
extensiunea tipului de entitate respectiv, atributele unei instane ale entitii
fiind proprietile particulare sau extensionale ale acesteia.

O prim definiie a bazelor de date este


REZUMAT
[Nichi&Racovian96]: baza de date este un sistem integrat,
coerent i partajat de fiiere.
O baz de date reprezint o colecie de date, organizate ntro structur descris printr-un model conceptual sau colecie
de date aflate n interdependen, mpreun cu descrierea
datelor i a relaiilor dintre ele.
Un SGBD reprezint un ansamblu de programe pentru
gestiunea datelor sau un mediu de programare destinat
gestiunii datelor din baza de date.
Principalele funcii ale unui SGBD sunt urmtoarele:
Funcia de descriere date
Funcia de manipulare date
Funcia de utilizare
Asigurarea independenei logice i fizice a datelor impune
adoptarea unei arhitecturi a bazei de date pe trei nivele
astfel:
1. nivelul intern
2. nivelul conceptual
3. nivelul extern
Din categoria modelelor orientate pe nregistrri fac parte:
d) modelul ierarhic
e) modelul reea
f) modelul relaional.
TESTE DE
Recomandm parcurgerea testelor din ndrumarul de
AUTOEVALUARE laborator
BIBLIOGRAFIE
1. Avram-Nichi R., Ghioiu N., Goron S., Nichi St.,
Tomai N. Baze de date i programarea calculatoarelor
utiliznd limbajul Visual FoxPro, Ed. Risoprint, ClujNapoca, 2003.
2. Marian Cristescu, Baze de date utilizate n mediul
economic, Editura ALMA MATER, Sibiu, 2007.
3. Gabriel Dima ,Mihai Dima, Bazele Visual Foxpro 5.0,
Editura Teora, Bucuresti, 1999.
4. Marin Fotache, Ioan Brava, Ctlin Strmbei, Liviu
Creu, Visual FoxPro; Ghidul dezvoltrii aplicaiilor
profesionale, Editura Polirom Iai, 2002.
5. Nicolae Ghioiu, Visual FoxPro; Exerciii i programe,
Editura Risoprint Cluj, 2003.
9

BAZE DE DATE

1.2. MODELUL RELAIONAL


OBIECTIVE

NOIUNI CHEIE

1. Clarificarea noiunilor referitoare la conceptele generale


legate de relaie, atribut, domeniu
2. Clarificarea elementelor referitoare la chei i legturi
ntre tabele.
3. Familiarizarea cu formele normale i normalizarea
relaiilor.
Atribut, tabel, domeniu, relaie, cheie candidat, cheoe
primar, cheie strin, cele trei forme normale de baz

1.2.1. Modelul de date relaional


1.2.1.1. Caracteristici generale
Primul model de date relaional, aa dup cum s-a amintit, a fost propus de
ctre cercettorul american E.F. Codd de la laboratorul din Palo Alto, al IBM.
Principiile matematice care stau la baza acestui model pornesc de la teoria
matematic a relaiilor, extins la cerinele de gestiune a datelor.
O baz de date relaional este definit ca fiind un ansamblu de tabele
sau relaii ntre care exist anumite legturi, fiecare tabel fiind alctuit din
coloane, denumite atribute i linii, denumite i tuple.
1.2.1.2. Definirea entitilor i structurii acestora
Reamintim c n cadrul modelului relaional entitile se reprezint prin
intermediul relaiilor statice, sau tabelelor, precum i a legturilor dintre ele, sau
a relaiilor dinamice.
Conceptele cu care se opereaz n cadrul modelului relaional n vederea
definirii entitilor i structurii acestora sunt urmtoarele:
1. linia sau tuplul
2. atributul sau caracteristica
3. domeniul
4. nregistrarea logic
5. cardinalitatea relaiei
6. rangul relaiei
7. cheia relaiei

10

Pentru exemplificarea conceptelor anterior prezentate se consider relaia


sau tabelul FACULTI avnd urmtoarea structur:
atribut
FACULTI
Denumire facultate
Adres
Cod facultate
STE
T. ECONOMICE
MIHALI FN
FIL
FILOLOGIE
HOREA 5
BIO
BIOLOGIE
HAJDEU 10
MED
MEDICIN
E. ISAC 20
linie
domeniu
nregistrare logic
(tuplu)
(antet relaie)
Putem considera c un atribut reprezint o utilizare sub un anumit nume a
unui domeniu. Din acelai domeniu pot deriva mai multe atribute, fiecare cu
nume diferite la nivelul unui tabel. Astfel, dac considerm domeniul numerelor
ntregi sau reale, din acest domeniu pot deriva atribute cum ar fi: SALAR,
IMPOZIT, VALOARE, PRET, CANTITATE etc.
1.2.1.3. Fundamentul matematic al conceptului de relaie i
atribut
Din punct de vedere matematic, prin relaie se nelege o submulime a
produsului cartezian al Unor domenii.
Avnd domeniile D1, D2,, Dn, produsul lor cartezian se definete
astfel:
V=D1 x D2 x . x Dn ={ (d1, d2,.,dn)}

i reprezint o asociere ntre elementele fiecrui domeniu, sau mai exact, este
mulimea tuturor combinaiilor sau tuplelor de forma {d1, d2,.,dn}, unde di
Di.
Deci, relaia se definete astfel:
R D1 x D2 x x Dn

unde D1, D2,,Dn reprezint domeniile relaiei R comparabile ntre ele, iar "n"
reprezint rangul relaiei. Dup rang, relaia poate fi: primar, binar, ternar
sau, n general, n-ar.
Desigur c definiia anterioar dat relaiei nu este unica posibil. Astfel,
C.J.Date [Date2000] definete o relaie ca fiind compus din dou pri:
1. Antetul relaiei, ca fiind o mulime de atribute, definite pe cte un
domeniu (nu neaprat distinct), astfel:
{A1 : D1, A2 : D2,.An:Dm}

11

BAZE DE DATE

2. Corpul relaiei, ca fiind o mulime de tuple, fiecare tuplu coninnd o


mulime de valori aferente atributelor definite n antetul relaiei, astfel:
{t1, t2,tk.tn} mulime de tuple
ti = {di1,di2din} mulime de valori aferente unei tuple

Ilustrarea acestui mod de abordare rezult din figura urmtoare:

Antetul relaiei

Corpul relaiei

A1

A2

d11

d12
d22

d1n
d2n

dk1
.
.
dm1

dk2

dkn

t1 d21
t2 .
tk

..

An

dm2
dmn
tm
Deci, o relaie poate fi simbolizat prin mulimea atributelor sale astfel:
sau
(A :D ,A :D ,.,A :D )
R(A1,A2..,An)

Din definiiile noiunii de relaie, rezult urmtoarele proprieti ale


acesteia:
1. Ordinea atributelor n cadrul unei relaii este nesemnificativ (atributele
nu sunt ordonate).
2. Atributele unei relaii trebuie s fie distincte, chiar dac pe acelai
domeniu sunt definite mai multe atribute.
3. Orice atribut are valori atomice, adic la intersecia dintre o linie i o
coloan se afl o singur valoare i nu o colecie de valori sau grupuri
repetitive. In acest caz, se consider c relaia se afl n forma ntia
normal.
4. In cadrul corpului relaiei, tuplele nu sunt ordonate n mod obligatoriu.
5. Intr-o relaie nu exist tuple duplicate.
1.2.2. Legturi ntre relaii
1.2.2.1. Definirea cheilor unei relaii
Dac ntr-o relaie exist mai multe atribute sau combinaii de atribute care
permit identificarea unic a tuplelor, acestea sunt denumite chei candidat. O
astfel de cheie reprezint un atribut sau o mulime de atribute (K) cu
urmtoarele proprieti [Gardarin86] :
1. identificare unic;
12

2. ireductibilitate;
3. valorile atributului.
O entitate poate conine mai multe chei candidat, dar numai una dintre ele
se alege pentru a fi folosit la identificarea tuplelor. Aceast cheie se numete
cheie primar. O cheie candidat care nu este desemnat ca i cheie primar se
numete cheie alternativ.
Pe lng noiunile de cheie candidat i cheie primar, n cadrul modelului
relaional se mai folosete i noiunea de cheie strin. Ea se utilizeaz la
stabilirea legturilor dintre dou tabele, numite tabela principal sau printe i
tabela secundar sau copil. Prin definiie, valoarea cheii strine trebuie s se
regseasc n mulimea cheilor primare ale tabelei principale. Ea reprezint deci
o referin ctre un tuplu din tabela printe care are aceeai valoare a cheii
primare.
1.2.2.2. Tipuri de legturi ntre relaii
Una din componentele modelului relaional se refer la legturile dintre
relaii sau tabele. O legtur (relaie dinamic) se definete ca fiind o asociere
ntre mai multe tipuri sau clase de entiti. Cea mai frecvent legtur ntlnit
n practic este cea dintre dou tipuri de entiti, numit i legtur binar.
Legturile binare, aa cum s-a amintit, dup cardinalitatea lor (numrul
entitilor din fiecare clas de entiti care intr n cadrul legturii) se pot
clasifica astfel:
1. legturi de tip 1-1, prin care unei entiti din mulimea sau clasa M1 i
corespunde o singur entitate n mulimea sau clasa M2;
2. legturi de tip 1-n, prin care unei entiti din mulimea M1 sau din
tabelul M1 i corespund mai multe entiti n mulimea sau tabelul M2,
iar unei entiti din M2 i corespunde o singur entitate n M1;
3. legturi de tip m-n, prin care unei entiti din M1 i corespund mai
multe entiti n M2 i reciproc.
1.2.3. Definirea restriciilor pentru datele dintr-o baz de date
Pentru datele dintr-o baz de date pot fi definite mai multe tipuri de
restricii, cum ar fi: restricia de domeniu, de atomicitate, referenial i restricii
utilizator. Dintre acestea, ne vom referi n continuare la restricia referenial
sau integritatea referenial, pe care se bazeaz stabilirea legturilor dintre dou
tabele.
Integritatea referenial, denumit n unele sisteme (ca de exemplu n
SQL Server), integritate referenial static deoarece se pstreaz n dicionarul
de date, se definete ca fiind un ansamblu de reguli impuse tabelelor ntre care
s-au stabilit anumite legturi. Astfel, pentru a asigura integritatea referenial
13

BAZE DE DATE

trebuie ca atunci cnd se fac modificri ale valorii unui cmp de tip cheie
primar sau strin dintr-un tabel, s nu fie afectat relaia dintre cele dou
tabele, adic s se modifice automat valorile cheii n toate tuplele
corespunztoare.
Integritatea referenial cere ca valorile cheii strine s se regseasc
printre valorile cheii primare. Aceast condiie introduce n baza de date
constrngeri numite constrngeri refereniale.
Operaiile de adugare, modificare i tergere pot afecta integritatea
referenial astfel:
1) In tabela principal (tabela referit sau printe):
a. operaia de adugare se va face fr nici un fel de restricii din punct de
vedere al condiiilor de integritate referenial;
b. operaia de tergere - deoarece prin tergerea unui tuplu din relaia sau
tabela principal, n relaia secundar pot rmne tuple care fac referire
la tuplul ters, pentru a menine integritatea referenial se poate
introduce tergerea restricionat sau n cascad;
- n primul caz, nu se poate terge un tuplu din tabela principal dac
acesta are corespondent tuple n tabela secundar, deoarece tuplele
din tabela secundar rmn orfane, adic vor avea referine
nesatisfcute;
- n al doilea caz, tergerea unui tuplu din tabela principal va fi
urmat de tergerea tuturor tuplelor din relaia secundar care fac
referire la tuplul ters;
c. operaia de modificare poate fi privit ca i n cazul operaiei de
tergere, iar restriciile refereniale sunt cele folosite la operaia de
tergere;
2) In tabela secundar (de referin sau tabela copil):
a. operaia de adugare se poate face numai dac valorile cheii strine
pentru articolele adugate se regsesc printre valorile cheii primare din
tabela principal, altfel operaia de adugare este interzis;
b. operaia de tergere se poate realiza fr nici o restricie din punct de
vedere al condiiilor de integritate referenial;
c. operaia de modificare se poate realiza cu condiia s nu apar
nregistrri fr corespondent n tabela principal.
1.2.4. Schema i coninutul unei baze de date relaionale
Exist dou modaliti de abordare a bazelor de date relaionale i anume
[Fotache2001]:
- schema relaional (intensia sau structura bazei de date);
- coninutul unei relaii (extensia bazei de date).

14

1. Schema relaional sau intensia unei baze de date poate fi definit ca un


ansamblu de relaii asociate semantic prin domeniul de definiie i prin
restricii de integritate. Ea conine:
a. una sau mai multe scheme de relaie, unde fiecare schem de relaie
include numele relaiei i atributele aferente;
b. restricii de integritate, care pot fi:
- restricia cheilor primare, adic fiecare cheie primar trebuie s
fie unic, nenul i cu compoziie minimal;
- restricii refereniale, care decurg din existena cheilor strine;
- alte restricii, cum ar fi cele definite de utilizator (dependene
ntre atribute, valori limit, unicitate, caracter nenul, etc.).
Schema relaional descrie ntotdeauna modelul conceptual din cadrul unei baze
de date.
Relaiile dintre relaie i tabel sunt date de urmtoarele:
1. n timp ce relaia este o mulime teoretic, tabela este un obiect concret
cu o anumit reprezentare (tablou bidimensional);
2. n timp ce ntr-o relaie ordinea atributelor sau tuplelor nu este
semnificativ, ntr-o tabel exist o ordonare att a coloanelor, dat de
ordinea acestora la creare, ct i a nregistrrilor, dat de ordinea n
care au fost introduse n tabel sau ca urmare a indexrii tabelei;
3. n timp ce o relaie teoretic este format ntotdeauna din tuple
distincte, n practic o tabel poate conine i linii duplicat, aa dup
cum s-a mai menionat n cazul SQL Server.
In acest context, noiunea de relaie se identific cu cea de tabel sau fiier,
atributele cu denumirea coloanelor unei tabele sau cu cmpurile unui fiier, iar
tuplele cu liniile tabelei sau cu articolele (respectiv nregistrrile) unui fiier.
Cele de mai sus justific faptul subliniat la definiia bazelor de date, c
baza de date este o colecie de fiiere. n unele SGBD-uri, cum este cazul
Visual FoxPro, fiecare fiier are articole de lungime fix, n timp ce la altele,
cum este cazul SQL Server, articolele pot fi de lungime variabil. Spre
deosebire ns de fiierele obinuite, fiierele bazei de date prezint o serie de
particulariti, dintre care amintim:
1. fiecare fiier are asociat o nregistrare de structur sau un antet, care
include informaii despre coninutul fiierului i se memoreaz n
dicionarul de date;
2. dac fiierul are articole de lungime fix, articolele sau nregistrrile de
date conin un numr de ordine, folosit la identificarea unei nregistrri
n baza de date, numit i indicatorul sau pointer-ul articolului respectiv;
n Visual FoxPro acest pointer poate fi obinut prin funcia RECNO();
3. de regul unul dintre articolele bazei de date este cel tratat curent;
pointer-ul acestui articol se numete pointer-ul sau indicatorul bazei de
date;
15

BAZE DE DATE

4. fiierele din baza de date sunt interconectate ntre ele prin legturi de tip
1-1, 1-n sau m-n.
O baz de date relaional este definit ca fiind un
REZUMAT
ansamblu de tabele sau relaii ntre care exist anumite
legturi, fiecare tabel fiind alctuit din coloane,
denumite atribute i linii, denumite i tuple.
Din punct de vedere matematic, prin relaie se nelege o
submulime a produsului cartezian al domeniilor.
Dac ntr-o relaie exist mai multe atribute sau combinaii
de atribute care permit identificarea unic a tuplelor,
acestea sunt denumite chei candidat
TESTE DE
Recomandm parcurgerea testelor din ndrumarul de
AUTOEVALUARE laborator
BIBLIOGRAFIE
1. Avram-Nichi R., Ghioiu N., Goron S., Nichi St.,
Tomai N. Baze de date i programarea calculatoarelor
utiliznd limbajul Visual FoxPro, Ed. Risoprint, ClujNapoca, 2003.
2. Marian Cristescu, Baze de date utilizate n mediul
economic, Editura ALMA MATER, Sibiu, 2007.
3. Gabriel Dima ,Mihai Dima, Bazele Visual Foxpro 5.0,
Editura Teora, Bucuresti, 1999.
4. Marin Fotache, Ioan Brava, Ctlin Strmbei, Liviu
Creu, Visual FoxPro; Ghidul dezvoltrii aplicaiilor
profesionale, Editura Polirom Iai, 2002.
5. Nicolae Ghioiu, Visual FoxPro; Exerciii i programe,
Editura Risoprint Cluj, 2003.

16

2. ELEMENTE DE LIMBAJ VISUAL FOXPRO


Obiecte cu care opereaz VFP
Metalimbajul utilizat
Sintaxa comenzilor VFP
Familiarizarea cu mediul Visual FoxPro
Cunoaterea elementelor lexicale i sintactice ale
OBIECTIVE
limbajului VFP.
2. Prezentarea obiectivelor de date i a tipurilor de date
utilizate n cadrul programelor Fox.
3. Prezentarea sintaxei comenzilor FoxPro i a
elementelor de metalimbaj.
4. Descrierea principalelor caracteristici ale Visual
FoxPro, ca mediu integrat, obiectual i vizual de
dezvoltare de aplicaii.
5. Familiarizarea cu mediul Visual FoxPro, precum i a
primelor operaii cu mediul.
6. Familiarizarea cu opiunile din meniul principal,
caseta de control, opiunile acestora, precum i cu
gestiunea ferestrelor i a obiectelor de control.
RECOMANDRI 1. Se va studia mai nti modul de form i utilizare a
construciilor simple ale limbajului (cuvinte, literale,
PRIVIND
simboluri speciale) i apoi a celor compuse
STUDIUL
(instruciuni, funcii i expresii).
2. Se va pune n continuare accent pe formarea i
utilizarea obiectivelor date folosite n cadrul limbajului:
constante, cmpuri, variabile.
3. Se va studia tipurile de date utilizate n cadrul
limbajului i conversia ntre tipuri.
4. n finalul studiului privind elementele limbajului se
pune accent pe modul de definire a sintaxei unei
comenzi n Visual FoxPro.
Dup parcurgerea acestui modul utilizatorul trebuie s fie
REZULTATE
n msur s defineasc i foloseasc corect construciile
ASTEPTATE
limbajului la nivelul unui program i s neleag modul
de utilizare al clauzelor din sintaxa comenzilor FoxPro.
Se ateapt. De asemenea:
1. Familiarizarea cu mediul de dezvoltare Visual
FoxPro.
2. Crearea unor deprinderi de utilizare a mediului;

CONCEPTE
DE BAZA

1.
2.
3.
4.
1.

17

BAZE DE DATE

18

2.1. ELEMENTELE LEXICALE I SINTACTICE ALE LIMBAJULUI


VISUAL FOXPRO
OBIECTIVE Cunoaterea modului de formare i utilizare a construciilor
simple i compuse ale limbajului
- Cuvinte
NOIUNI
- Literale
CHEIE
- Instruciuni
- Funcii
- Expresii
2.1.1. Setul de caractere Foxpro
Majoritatea limbajelor de programare, printre care i limbajul FoxPro, au
alfabetul format din urmtoarele caractere:
- literele alfabetului limbii engleze;
- cifrele arabe (0-9);
- caractere speciale;
2.1.2. Elementele lexicale i sintactice ale limbajului FoxPro
Un program FoxPro este alctuit din iruri de caractere sau construcii i
separatori. Construciile limbajului se pot mpri n dou categorii:
- construcii simple;
- construcii compuse.
Construciile simple, reprezint cea mai mic unitate lexical cu neles de sine
stttor, numite i atomi lexicale. Exist urmtoarele categorii de atomi lexicali
sau de construcii simple:
1. identificatori (cuvinte);
2. literali;
3. simboluri speciale.
care formeaz mpreun vocabularul sau lexicul limbajului.
1. Identificatorii, reprezint o secven arbitrar de caractere alfabetice, cifre
sau liniua de subliniere, din care primul caracter este o liter sau liniua de
subliniere.
Exist dou categorii de identificatori sau cuvinte:
a) cuvinte predefinite;
b) cuvinte utilizator.
Cuvinte predefinite; sunt precizate la definirea limbajului. Cu ajutorul lor se
construiesc instruciunile limbajului. Ele se mpart la rndul lor n:
- cuvinte cheie;
- cuvinte rezervate.
19

BAZE DE DATE

Cuvintele utilizator; sunt cuvinte definite de utilizator, fiind folosite n diferite


contexte.
2. Literali; reprezint o valoare constant, de tip numeric sau caracter.
Termenul de literal provine de la cuvntul "ad-literam" i are semnificaia
unei valori precizate explicit.
3. Simboluri speciale; la fel ca i cuvintele rezervate, simbolurile speciale
numite i semne de punctuaie, operatori, delimitatori, au o semnificaie bine
definit fiind utilizate conform destinaiei lor.
2.1.3. Construcii compuse
A doua grup de construcii, alturi de construciile simple, o reprezint
construciile compuse, numite i categorii sintactice de baz obinute prin
agregarea succesiv a construciilor simple conform unor reguli sintactice.
La nivelul limbajului FoxPro din aceast grup fac parte urmtoarele
categorii sintactice:
1. instruciuni;
2. funcii;
3. expresii.
1. Instruciunile limbajului FoxPro se numesc comenzi i constituie ca n
orice limbaj de programare categoria sintactic fundamental.
2. Funciile; reprezint a doua categorie sintactic de baz, utilizate n
majoritatea prelucrrilor asupra datelor din baza de date. Spre deosebire de
comenzi, funciile returneaz o valoare. Expresii FoxPro - reprezint
elemente sintactice de baz prin care se evalueaz rezultatul unor operaii.
Ele conin iruri de operanzi legate ntre ele prin intermediul unor
operatori. Expresiile rezultate n funcie de tipul operanzilor pot fi de tip:
numeric, caracter, dat calendaristic, logic, relaional. Operanzii din
cadrul unei expresii pot fi: variabile (cmpuri, variabile de memorie),
constante i funcii. Operatorii sunt caractere speciale (+, -, *, /, >, < )
sau cuvinte cheie rezervate (AND, OR, NOT) prin care se specific aciunile
ce trebuie executate asupra operanzilor (obiectelor de date). Operatorii
utilizai n cadrul expresiilor FoxPro, se pot grupa dup tipul acestora astfel:
- operatori aritmetici;
- operatori relaionali (de comparaie);
- operatori logici;
- operatori de concatenare;
- operatori pentru date de tip gestiune timp.
Separatori: acetia se mpart n dou categorii distincte astfel:
1) separatori uzuali; care servesc la separarea a doi atomi lexicali i pot
fi: spaiu, tab, retur de car i avans de rnd.
20

2) comentariile; acetia nu influeneaz execuia programului i permit o


nelegere mai bun a textului surs.
2.1.4. Structura unui program FoxPro
Structura unui program FoxPro se poate descrie astfel:
PROGRAM::=<text ASCII> ( 0 sau mai multe linii logice sau fizice)
LINIE LOGIC::={linie fizic} (dou sau mai multe)
2.2. OBIECTE DE DATE I TIPURI DE DATE FOLOSITE IN VISUAL
FOXPRO
OBIECTIVE

NOIUNI
CHEIE

1.Cunoaterea principalelor obiecte de date oferite


utilizatorilor de limbaj (constante, cmpuri, variabile de
memorie);
2.Cunoaterea tipurilor de date folosite n cadrul limbajului
- constante
- cmpuri
- variabile de memorie
- tip numeric, alfanumeric, logic, gestiune timp, special

2.2.1. Obiecte de date


Limbajul FoxPro pune la dispoziia utilizatorilor urmtoarele obiecte de date:
constante, variabile i matrice de variabile.
a) CONSTANTE; sunt date definite de utilizator care nu-i schimb
valoarea n timpul execuiei comenzilor.
b) CMPURI; reprezint componentele principale ale nregistrrilor de
date sau blocurile constructive ale fiierelor .DBF. Ele stocheaz datele
de prelucrat i au caracter de permanen, deci supravieuiesc pe durata
execuiei oricrui program care se refer la fiierul respectiv.
Acest obiect de date se caracterizeaz prin urmtoarele atribute:
- Nume (identificatorul obiectului).
- Tip;
- Valoare;
- Lungime;
c) Variabile de memorie. se caracterizeaz prin urmtoarele atribute:
- Nume;
- Tip;
- Lungimea;
- Durata de via;
- Domeniul de vizibilitate;
In raport cu acest atribut variabilele de memorie pot fi de dou feluri:
21

BAZE DE DATE

1. publice sau globale;


2. private sau locale.
2.2.2.Tipuri de date folosite n Visual FoxPro
In Visual FoxPro sunt implementate urmtoarele tipuri de date:
d) tipul numeric;
e) tipul alfanumeric;
f) tipul logic;
g) tipul pentru gestiune timp;
h) tipul special.
2.3. SINTAXA COMENZILOR VISUAL FOXPRO
OBIECTIVE

NOIUNI
CHEIE

1. Inserarea modului de folosire a clauzelor de domeniu i a


opiunilor de tip filtru din structura comenzilor FoxPro
2. Cunoaterea metalimbajului folosit la definiia formatului
general al unei comenzi
- clauze domeniu
- filtru global
- filtru local

2.3.1. Elemente de metalimbaj


Regulile sintactice prin care se stabilete dac o anumit construcie este corect
alctuit se descriu printr-un limbaj mai simplificat numit metalimbaj. Acest
limbaj apare n teoria limbajelor de programare sub denumirea de BNF (BakusNaum Form) respectiv EBNF reprezentnd o form extins a limbajului BNF.
Metalimbajul conine un ansamblu de simboluri (metasimboluri) i de reguli de
descriere. Forma n care se prezint o construcie de baz (instruciune),
utiliznd metasimboluri, elemente terminale i neterminale, reprezint formatul
general sau sintaxa general a construciei respective.
2.3.2. Sintaxa comenzilor Visual FoxPro
2.3.2.1. Structura i caracteristicile comenzilor FoxPro
Comenzile FoxPro au ca rezultat imediat o aciune. Ele pot aciona asupra: unui
fiier sau unui cmp dintr-un fiier al bazei de date, asupra unei variabile de
memorie sau element dintr-un masiv, asupra unei ferestre sau meniu, etc. Cele
patru clauze-domeniu din sintaxa unei comenzi au urmtoarea semnificaie:

22

1. RECORD<expN>; indic faptul c respectiva comand acioneaz asupra


articolului (nregistrrii) cu numrul de secven definit de valoarea lui
<expN>.
2. NEXT<expN>; indic faptul c respectiva comand acioneaz asupra
urmtoarelor articole ncepnd cu articolul curent, n ordinea dat de index i
respectnd filtrul curent, pn la un numr total de nregistrri egal cu
valoarea <expN>.
3. ALL; indic faptul c respectiva comand acioneaz asupra tuturor
nregistrrilor din fiierul curent, respectnd filtrele n curs. Ea reprezint
pentru majoritatea comenzilor clauza implicit.
4. REST; indic faptul c respectiva comand acioneaz asupra nregistrrilor
cuprinse ntre nregistrarea curent i sfritul fiierului activ.
Opiunile FOR i WHILE au urmtoarea semnificaie:
FOR<expL>; este un filtru global, adic se aplic tuturor articolelor din
domeniul selectat, tratndu-le pe cele pentru care condiia specificat prin
<expL> este adevrat.
WHILE<expL>; este un filtru local, adic se aplic numai articolelor
succesive din domeniul selectat, ncepnd cu articolul curent, ct timp condiia
specificat prin <expL> este adevrat.
REZUMAT

- Un program FoxPro este alctuit din iruri de


caractere sau construcii i separatori.
Construciile
limbajului se pot mpri n dou categorii:
- construcii simple;
- construcii compuse.
Construciile simple, reprezint cea mai mic unitate
lexical cu neles de sine stttor, numite i atomi lexicale.
Exist urmtoarele categorii de atomi lexicali sau de
construcii simple:
1. identificatori (cuvinte);
2. literali;
3. simboluri speciale.
care formeaz mpreun vocabularul sau lexicul limbajului.
A doua grup de construcii, alturi de construciile simple, o
reprezint construciile compuse, numite i categorii
sintactice de baz obinute prin agregarea succesiv a
construciilor simple conform unor reguli sintactice.
La nivelul limbajului FoxPro din aceast grup fac parte
urmtoarele categorii sintactice:
23

BAZE DE DATE

1. instruciuni;
2. funcii;
3. expresii.
Limbajul FoxPro pune la dispoziia utilizatorilor urmtoarele
obiecte de date: constante, variabile i matrice de
variabile. Variabilele la rndul lor sunt de dou tipuri i
anume: cmpuri din fiiere .DBF i variabile de memorie
(memory variables sau memvars).
i) tipul special.
Cele patru clauze-domeniu au urmtoarea semnificaie:

TEME DE
CONTROL

BIBLIOGRAFIE

24

RECORD<expN>; indic faptul c respectiva


comand
acioneaz
asupra
articolului
(nregistrrii) cu numrul de secven definit de
valoarea lui <expN>.
NEXT<expN>; indic faptul c respectiva
comand acioneaz asupra urmtoarelor articole
ncepnd cu articolul curent, n ordinea dat de
index i respectnd filtrul curent, pn la un numr
total de nregistrri egal cu valoarea <expN>.
ALL; indic faptul c respectiva comand
acioneaz asupra tuturor nregistrrilor din fiierul
curent, respectnd filtrele n curs. Ea reprezint
pentru majoritatea comenzilor clauza implicit.
REST; indic faptul c respectiva comand
acioneaz asupra nregistrrilor cuprinse ntre
nregistrarea curent i sfritul fiierului activ.
1. S se dea exemplu de: cuvinte utilizator i literale
numerice i alfanumerice
2. S se construiasc expresii FoxPro folosind toate tipurile
de operatori (aritmetici, relaionali i logici)
1. Avram-Nichi R., Ghioiu N., Goron S., Nichi St.,
Tomai N. Baze de date i programarea calculatoarelor
utiliznd limbajul Visual FoxPro, Ed. Risoprint, ClujNapoca, 2003, pg. 91-110.
2. Marian Cristescu, Baze de date utilizate n mediul
economic, Editura ALMA MATER, Sibiu, 2007, pg. 143159.
3.Gabriel Dima, Mihai Dima, Bazele Visual Foxpro 5.0,
Editura Teora ,Bucuresti,1999,pag . 51-155
4.Marin Fotache, Ioan Brava, Ctlin Strmbei, Liviu Creu,
Visual FoxPro; Ghidul dezvoltrii aplicaiilor profesionale,

Editura Polirom Iai, 2002, pag. 19-48.


5. Manole Velicanu, Ioan Lungu, Mihaela Muntean,
Dezvoltarea aplicaiilor cu baze de date n Visual FoxPro,
Editura All, Bucureti, 2001, pag. 35-36.

25

BAZE DE DATE

2.4. INTRODUCERE N VISUAL FOX PRO


OBIECTIVE

NOIUNI CHEIE

1.Descrierea principalelor caracteristici ale Visual


FoxPro, ca mediu integrat, obiectual i vizual de
dezvoltare de aplicaii;
2.nsuirea lansrii i terminrii unei sesiuni Visual
FoxPro;
3.Familiarizarea cu mediul FoxPro;
4.Principalele moduri de lucru n Visual FoxPro;
1. Familiarizarea cu opiunile din meniul principal sau
caseta de control i rolurile acestor opiuni
2. Familiarizarea cu gestiunea ferestrelor i a obiectelor
de control;
Visual FoxPro, mediu de dezvoltare;
Sesiune Visual FoxPro; moduri de lansare i terminare;
Componentele mediului;
Modurile de lucru n mediu;
Opiunile meniului principal;
Opiunile casetei de control;
Tipuri de ferestre i caracteristicile lor;
Obiecte de control;

2.4.1. Perspectiva cronologic i caracteristici generale ale SGBD


Visual FoxPro
Visual FoxPro este continuatoare FoxPro care deriv din dBase i clonele
acesteia xBase.
A aprut n 1995 sub denumirea Visual FoxPro 3.0, i a evoluat ctre un
limbaj mediu de dezvoltare vizual, orientat pe obiecte, aducnd SGBD FoxPro
la nivelul celor mai moderne medii de dezvoltare.
1. Se bazeaz pe modelul programrii orientate pe obiecte (POO Programming Oriented Object) i a programrii conduse de
evenimente. Ca urmare, elementul de baz cu care lucreaz este
obiectul (fereastr, buton de comand, relaie ntre tabele etc.). In
acest context, un program n Visual FoxPro include o serie de definiii
de date (proprieti) i de algoritmi de prelucrare a acestora (metode,
proceduri). Metodele asociate unui obiect sunt executate fie printr-o
comand explicit a utilizatorului, fie la apariia unor evenimente.
26

2. Ca tehnici sau instrumente de programare, mediul Visual FoxPro


folosete programarea vizual i tehnici de proiectare vizual.
Aceasta permite utilizatorului ca, prin folosirea unor obiecte vizuale
sau a unor asisteni de tipul Form Wizard, Graph Wizard, Report
Wizard etc., s selecteze n mod interactiv opiuni din program i s
fie generate automat programele corespunztoare.
3. Este un mediu integrat de programare sub Windows. Ca urmare, el
include un gestionar al aplicaiilor create n FoxPro, numit PROJECT
MANAGER, care urmrete activitatea de elaborare a aplicaiilor i
pune la dispoziia utilizatorilor uneltele necesare efecturii acestor
operaii, cum ar fi: generatoare (Designers), constructori (Builders) i
asisteni speciali (Wizards), fiecare avnd un anumit domeniu de
utilizare.
4. Este un sistem relaional de gestiune a bazelor de date, asigurnd
crearea de relaii statice ntre tabelele din baza de date.
5. Permite interogri i vizualizri ale datelor aflate pe un server la
distan, asigurnd astfel crearea aplicaiilor client-server, precum i
trecerea la sistemele tranzacionale reale.
n 2003 a aprut pe pia Visual FoxPro 8.0. Extensiile acestei versiuni sunt
multiple i pot fi urmrite n Help-ul sistemului la marcatorul Whats New in
Visual FoxPro 8.0. Sunt modificri eseniale:
legate de IDE asigurnd, printre altele, accesul la serviciile XML;
modificri n limbaj prin extinderea accesului la date la distan i
alte mbuntiri referitoare la date, legate de SQL i motorul de baze
de date, precum i un numr considerabil de cuvinte rezervate noi;
extensii ale editoarelor, etc.
2.4.2. Lansarea n execuie i terminarea unei sesiuni Visual FoxPro
Lansarea sistemului Visual FoxPro din acest director se poate face analog
cu lansarea oricrui program n Windows, n unul dintre urmtoarele moduri:
1. prin selectarea opiunii PROGRAMS din meniul START i apoi a
opiunii Microsoft Visual FoxPro 8.0;
2. prin efectuarea unui dublu clic pe pictograma aferent programului
Visual FoxPro 8.0, dac pictograma este vizibil pe ecran;
3. prin selectarea din fereastra Explorer a directorului care conine
Microsoft Visual FoxPro 8 (de regul Program Files) i apoi, din
lista aprut sau din fereastr se selecteaz opiunea sau pictograma
Launch Microsoft Visual Foxpro 8.0;
4. prin introducerea n caseta de dialog Run din meniul Start a cii
complete a programului Visual FoxPro 8.
27

BAZE DE DATE

Terminarea unei sesiuni de lucru n Visual FoxPro se poate realiza n unul


din urmtoarele moduri:

prin tastarea comenzii QUIT n fereastra de comand;


prin selectarea opiunii EXIT (ALT+F4) din meniul FILE;
prin selectarea opiunii CLOSE din caseta meniului de control a
ferestrei principale Visual FoxPro 8;
prin folosirea butonului CLOSE din meniul principal.

2.4.3. Mediul Visual FoxPro 8.0


2.4.3.1. Fereastra principal (iniial)
Dup lansarea Visual FoxPro, pe ecran este afiat fereastra principal.
1. Bara de titlu (Title Bar); conine numele aplicaiei, respectiv
Microsoft Visual FoxPro, aliniat la stnga, avnd n fa un buton cu
pictograma FoxPro (cap de vulpe). Aceasta este caseta de control a
ferestrei principale. Dac se execut pe ea un click cu unul dintre
butoanele mouse, sau se tasteaz Alt+Bara Spaiu, apare meniul de
control vertical, uzual pentru aplicaiile Windows. De asemenea, n
dreapta apar cele 3 butoane uzuale (de minimizare, zoom i nchidere
a ferestrei).
2. Bara meniului principal (Menu bar), include la lansare urmtoarele
opiuni: File, Edit, View, Format, Tools, Program, Window i Help.
Fiecare opiune din bara meniului principal (sistem) afieaz un
submeniu vertical atunci cnd se execut un click pe opiunea
respectiv
3. Bara cu instrumente standard (Standard Toolbar). Ea conine 20

4.

28

butoane (casete cu pictograme) i o caset derulant. Trebuie s subliniem c


ultimele dou butoane au fost introduse n versiunea 8.0 i nu existau n 7.0. Prin
poziionarea mouse-ului pe orice pictogram din bara cu instrumente, sub
pictograma selectat apare afiat (ntr-o caset) numele opiunii aferente
pictogramei respective. Dup cum este cunoscut n Windows pot fi folosite
meniuri rapide. Meniul rapid pentru Visual FoxPro 8.0 se poate lansa simplu
prin executarea unui click cu butonul din dreapta pe bara de instrumente. Va
apare meniul n care se regsesc cte o opiune pentru principalele programe de
proiectare automat a tabelelor, formelor, rapoartelor etc., dar i alte opiuni.
Fereastra de comand - este poriunea de pe ecran ncadrat de un dreptunghi,
avnd numele COMMAND i permite introducerea direct de comenzi prin
tastare. Este prevzut cu butonul de close cu barele de derulare orizontal i
vertical.

5.

Suprafaa de lucru - reprezint zona din cadrul ferestrei principale n care se


afieaz rezultatul execuiei comenzilor introduse de utilizator. O parte din ea
este acoperit de fereastra de comand.
6. Cursorul este un simbol grafic, care plpie i indic poziia de pe ecran n
care se poate introduce urmtorul caracter. La lansarea sistemului, cursorul
apare n fereastra de comand, pe prima linie.
7. Bara de stare (Status Bar) - indic contextul n care ne gsim la un moment dat,
afind o serie de informaii utile. Zona de mesaje din bara de stare este vid
dac nu este deschis nici o tabel n zona de lucru curent. In schimb, dac este
deschis o tabel, n cadrul zonei se afieaz urmtoarele informaii:
numele tabelei;
numele bazei de date din care face parte tabela, inclus n paranteze;
numrul nregistrrii curente a tabelei;
numrul total de nregistrri a tabelei;
starea curent de partajare a fiierului deschis (a tabelei), prin una din
urmtoarele opiuni: Exclusive, Record Unlocked, Record Locked, File
Locked.

Zona casetelor indicatoare conine trei sau patru casete indicatoare cu


urmtoarea semnificaie:
prima caset indic starea tastei INS. Ea este goal, atunci cnd
editorul Fox se afl n mod inserare, sau conine literele OVR,
indicnd modul de suprascriere;
urmtoarea caset afieaz NUM dac tasta NumLock este
activ;
a treia caset afieaz CAPS dac tasta CapsLock este activ;
ultima caset (opional) conine ora curent.
2.4.3.2. Moduri de lucru
Utilizatorul are la dispoziie mai multe moduri de lucru, n funcie de
nivelul su, scopul urmrit etc.
1.
2.
3.

Modul de lucru interactiv prin comenzi (imediat, conversaional sau direct);


Modul de lucru asistat (interactiv pe baz de meniuri i butoane).
Modul de lucru programat.

Dup intrarea n mediul Visual FoxPro, este selectat implicit primul mod de
lucru, fapt semnalat prin prezena cursorului n fereastra de comand, ceea ce
nseamn c utilizatorul poate introduce comanda dorit.
Trecerea la modul de lucru asistat se face fie printr-un click cu mouse-ul pe una
dintre opiunile meniului principal, fie cu tastatura, prin acionarea tastei F10
sau ALT prin care se selecteaz prima opiune din meniul sistem (File).
Revenirea n fereastra de comand se face prin acionarea tastelor F10, ALT sau
ESC, avnd ca efect deselectarea opiunii active din meniul sistem i apariia
29

BAZE DE DATE

cursorului n fereastra de comand. Dac se utilizeaz mouse-ul, se poziioneaz


cursorul acestuia n fereastra de comand i se execut un click.
2.4.3.3. Meniul sistem i submeniuri
Meniul sistem sau bara meniului principal se afieaz n fereastra principal a
mediului Visual FoxPro, sub bara de titlu i se compune din urmtoarele
elemente:
1.
2.
3.
4.

bara de meniuri (menu bar);


opiuni din bar (menu pads);
meniuri derulante (submeniuri verticale - menu popups);
opiuni din meniu (menu options).

2.4.3.3.1. Rolul opiunilor din meniul principal


Principalele meniuri i submeniurile lor sunt:
1. Meniul FILE - Acest meniu conine comenzi pentru operaii cu
fiiere, cum ar fi: creare, deschidere, salvare, tiprire etc., ct i
comanda de ieire (prsire) din sistemul Visual FoxPro. Cele mai
multe din aceste opiuni se regsesc i pe bara de instrumente
standard. In plus, apar opiunile Import i Export, care asigur
importul, respectiv exportul de date n/din Visual FoxPro din/n alte
aplicaii.
2. Meniul EDIT - Acest meniu conine opiuni referitoare la editarea
programelor, formelor sau rapoartelor, ct i comenzi pentru crearea
obiectelor OLE (Object Linking and Embedding). La fel ca i n cazul
meniului File, o mare parte din aceste opiuni le gsim pe bara de
instrumente standard (Cut, Copy, Paste, Undo, Redo), fiind destinate
lucrului n mod text.
3. Meniul View - Acest meniu conine comenzi pentru vizualizarea
tabelului curent n mod Edit sau Browse, pentru adugarea automat
de noi nregistrri la sfritul fiierului (opiunea Append Mode) sau
pentru modificarea structurii unei tabele (opiunea Table Designer), iar
prin selectarea opiunii Database Designer se afieaz ntr-o fereastr
fiierele din baza de date curent cu structura lor (denumirea
cmpurilor).
4. Meniul Format - Acest meniu conine comenzi pentru formatarea
textului aferent unui program, pentru identarea (alinierea) textului,
selectarea fontului dorit, etc. In momentul folosirii anumitor
generatoare sunt disponibile diverse comenzi suplimentare.

30

5. Meniul Tools - Acest meniu conine diverse instrumente de


programare folosite pentru efectuarea anumitor aciuni asupra datelor
i codului surs. Cele mai importante instrumente sunt cele de tip
Wizard, folosite pentru crearea rapid de tabele, forme, rapoarte, etc.
Un asistent sau vrjitor (Wizard) este un program care ndrum
utilizatorul pe parcursul efecturii unor operaii sau a unor
componente ale unei aplicaii n curs de proiectare. El afieaz o serie
de ferestre cu ntrebri referitoare la obiectul ce urmeaz a fi creat,
ntrebri care se refer n principal la datele ce urmeaz a fi prelucrate,
la felul n care va arta componenta creat etc. Pentru fiecare
component a unei aplicaii (formulare, tabele, rapoarte, baze de date,
etc.) exist cte o opiune a unui submeniu ataat opiunii Wizard.
6. Meniul Program - Acest meniu conine opiuni referitoare la rularea
i compilarea unui program.
7. Meniul Window - Acest meniu conine opiuni pentru gestiunea
ferestrelor afiate pe ecran i a sesiunii de date.
8. Meniul Help - Acest meniu include n primul rnd opiuni care permit
accesarea fiierului de asisten, care conine informaii referitoare la
comenzi i funcii ale sistemului Visual Fox Pro.
2.4.3.4. Caseta de control a ferestrelor n Visual FoxPro
Dat fiind importana ferestrelor n FoxPro, acestea sunt gestionate prin
intermediul opiunilor din caseta de control a ferestrei sau al opiunilor din
meniul Window. Caseta sau meniul de control al unei ferestre conine comenzi
(opiuni) pentru mutarea, redimensionarea sau nchiderea unei ferestre.
Executarea unui dublu click pe acest obiect al ferestrei principale Visual FoxPro
reprezint cea mai rapid cale de ieire din mediul FoxPro.

2.4.3.4.1. Aspecte privind gestiunea ferestrelor n Visual FoxPro


O alt component a interfeei Visual FoxPro, alturi de meniuri, este
reprezentat de ferestre. O fereastr este o poriune dreptunghiular a ecranului
cu proprieti specifice (coordonate, caracteristici grafice, de colorare, etc.), prin
care FoxPro comunic cu utilizatorul.
Pe ecran se pot afia sau deschide simultan mai multe ferestre, care se
acoper sau nu ntre ele, dup cum s-a vzut n cazul opiunii Window. Dintre
acestea, la un moment dat una singur este activ, cea care conine cursorul sau
ultima deschis. Chenarul ei are de regul o culoare mai pronunat. Prin
activare, o fereastr este adus n prim plan, i toate ieirile sunt dirijate spre
31

BAZE DE DATE

fereastra respectiv. Ea rmne activ pn cnd este dezactivat sau este


activat o alt fereastr.
Ieirea dintr-o fereastr sistem se poate realiza prin: acionarea butonului
de nchidere, a tastei ESC, a unui obiect de control din cadrul ferestrei sau prin
selectarea comenzii CLOSE din meniul FILE. Ca urmare, fereastra respectiv
este eliminat de pe ecran, structura ei de control este tears din memoria
operativ iar ieirile sunt dirijate spre o alt fereastr sau pe ecran.
Sistemul Visual FoxPro permite lucrul cu dou tipuri de ferestre i anume:
1) ferestre sistem;
2) ferestre utilizator.
O fereastr cu statut special n cadrul mediului Visual FoxPro o reprezint
fereastra de comenzi (Command Window). Afiarea acestei ferestre se poate
realiza n mai multe moduri: prin selectarea opiunii Command Window din
meniul Window, prin acionarea tastelor CTRL+F2, sau prin acionarea
butonului aferent de pe bara cu instrumente standard.
2.4.3.5. Obiecte de control

Comunicarea dintre sistem i utilizator se realizeaz n cea mai mare


parte prin intermediul obiectelor de control. Acestea apar att n cadrul
ferestrelor sistem ct i utilizator, fiind utilizate pentru diferite scopuri.
Principalele obiecte utilizate n cadrul mediului Visual FoxPro sunt
urmtoarele:
1. COMMAND BUTTON- buton de comand sau comutator
2. OPTION BUTTON
- buton de opiuni, sau butoane radio
3. CHECK BOX
- caset sau buton de validare sau
selecie
4. TEXT BOX
- caset sau chenar de text
5. EDIT BOX
- caset sau chenar de editare
6. LABEL
- etichet
7. SPINNER
- caset de modificare valoric
8. COMBO BOX
- list derulant combinat
9. LIST BOX
- list derulant simpl
10. PAGE FRAME
- cadru de pagin sau pagin
11. GRID
- gril sau caroiaj
12. TIMER
- ceasul
13. TOOLBAR
- bare de instrumente sau de utilitare
Principalele caracteristici ale obiectelor de control sunt urmtoarele:
32

1) obiectele se pot indica fie prin mutarea cursorului mouse-ului pe ele,


fie prin mutarea barei de selecie cu ajutorul tastaturii; n acest ultim
caz deplasarea ntre obiectele de control n cadrul unei ferestre sau
casete de dialog se realizeaz cu ajutorul tastei TAB, pentru
deplasarea n direcia acelor de ceasornic, sau cu ajutorul tastelor
SHIFT+TAB, pentru deplasarea n sens invers;
2) selectarea unui obiect se poate face prin acionarea tastei ENTER,
dup poziionarea pe obiect, sau prin execuia unui click cu mouse-ul,
n momentul n care cursorul mouse-ului este poziionat pe obiect;
3) unele obiecte, aa dup cum s-a vzut i n cazul opiunilor, au
asociat o caset de dialog care este vizualizat atunci cnd se
selecteaz obiectul; numele acestor obiecte este urmat de puncte de
suspensie "" (trei puncte);
4) pentru majoritatea obiectelor de control exist chei rapide (hot keys)
care permit o alegere rapid a obiectului dorit, reprezentate printr-o
liter din denumirea obiectului, care apare de obicei subliniat.
REZUMAT

Modulul are n componen ou uniti.


Prima unitate este destinat studiului mediului Visual
FoxPro, ca mediu integrat, obiectual i vizual de dezvoltare
de aplicaii. Dintre problemele tratate amintim:
lansarea i terminarea unei sesiuni;
componena mediului Visual FoxPro;
moduri de lucru n Visual FoxPro;
opiunile din meniul principal i din caseta de
control;
gestiunea ferestrelor i a obiectelor de control.

TEME
CONTROL

1. Efectuarea unor operaii uzuale cu mediul Visual


FoxPro;
2. Elaborarea unui memento recapitulative;
3. Cunoaterea elementelor lexicale i sintactice ale
limbajului VFP.
4. Prezentarea obiectivelor de date i a tipurilor de date
utilizate n cadrul programelor Fox.
5. Prezentarea sintaxei comenzilor FoxPro i a elementelor
de metalimbaj
BIBLIOGRAFIE 1. R.Avram-Nichi,
N.Ghioiu,
S.Goron,
S.I.Nichi,
N.Tomai, Baze de date i programarea calculatoarelor
utiliznd Visual FoxPro, Risoprint, 2003, p. 47-89.
2. Avram-Nichi R., S.I.Nichi i alii, Culegere de exerciii
33

BAZE DE DATE

i probleme la disciplina Baze de date i programarea


calculatoarelor, UBB Preprint, Cluj, 2003.
3. Marian Cristescu, Baze de date utilizate n mediul
economic, Editura ALMA MATER, Sibiu, 2007, pg.
101-127.
4. Dima G, Dima M., Visual FoxPro 7.0, Teora 2002.
5. M. Fotache i alii, Visual FoxPro, Polirom, 2002.
6. Ghioiu N., Visual FoxPro; exerciii i programe,
Risoprint, 2002.
7. Homorodean M.A, Petrescu S, Limbajul de programare
Visual FoxPro 6.0, Niculescu, 2002.
8. *** , Microsoft Visual FoxPro 6.0: Ghidul
programatorului, Teora, 2001.
9. http://msdn.microsoft.com/vfoxpro
10. http://gotdotnet.com/team/vfp

34

3. CREAREA I GESTIUNEA TABELELOR LIBERE N VISUAL


FOXPRO
1. Crearea, modificarea i listarea structurii tabelelor;
2. Validarea datelor din cadrul unui tabel la nivel de cmp
i nregistrare;
3. Deschiderea i nchiderea tabelelor;
4. ncrcarea tabelelor cu date i listarea coninutului
acestora;
5. Modificarea coninutului unui tabel;
6. tergerea nregistrrilor din cadrul unui tabel
1. Cunoaterea modului de creare i modificare a structurii
OBIECTIVE
tabelelor n Visual FoxPro ;
2. Asimilarea tehnicilor de ncrcare a tabelelor cu date i
de actualizare a datelor din tabelele respective;
RECOMANDRI 1. Se vor studia n continuare operaiile de gestiune cu
tabele libere: creare, deschidere, nchidere, adugarea
PRIVIND
sau eliminarea unei baze de date din proiect, adugare,
STUDIUL
eliminare tabele din baza de date, indexarea
nregistrrilor unui tabel;
2. Pentru nsuirea lucrului cu tabelele se vor studia
tehnicile de creare a structurii tabelelor i de ncrcare a
tabelelor cu date, de actualizare a datelor i de definire a
relaiilor dintre tabele.
1.
nsuirea
tehnicilor de creare a structurii tabelelor, de
REZULTATE
ncrcare a acestora cu date i de actualizare a datelor
ATEPTATE
din tabel;
2. cunoaterea procedurilor de indexare a tabelelor i a
tipurilor de indeci utilizai n Visual FoxPro.
CONCEPTE DE
BAZ

35

BAZE DE DATE

3.1. LUCRUL CU TABELELE LIBERE IN VISUAL FOXPRO


OBIECTIVE

CUVINTE
CHEIE

1. Crearea, modificarea i listarea structurii tabelelor n


Visual FoxPro;
2. Deschiderea i nchiderea tabelelor;
3. ncrcarea tabelelor cu date i listarea coninutului
acestora;
4. Modificarea coninutului unui tabel;
5. tergerea nregistrrilor din cadrul unui tabel;
6. Accesul la nregistrrile unui tabel;
7. Ordonarea nregistrrilor unui tabel.
Structur tabel
Zone de lucru
Alias tabel
Indicatori de nregistrri
Indexare
Sortare.

3.1.1. Crearea, modificarea i listarea structurii tabelelor n Visual FoxPro


3.1.1.1. Crearea unui nou tabel
Tabelele reprezint componentele de baz din cadrul aplicaiilor n Visual
FoxPro. O tabel sau fiier .dbf n Visual FoxPro, poate exista fie ca tabel
inclus ntr-o baz de date, fie ca o tabel liber, care nu este asociat nici unei
baze de date.
Pentru a folosi o tabel, ea trebuie, mai nti, creat, aceasta nsemnnd
definirea structurii acesteia i apoi ncrcarea cu date. Crearea unei noi tabele n
Visual FoxPro se poate realiza n unul din urmtoarele moduri:
1. In mod interactiv, folosind generatorul de tabele Table Designer sau
Table Wizard;
2. Prin comenzi ale limbajului Visual FoxPro.
3.1.1.2. Crearea unui nou tabel prin folosirea generatorului de tabele
(Table Designer)
Lansarea generatorului sau proiectantului de tabele se poate realiza n
unul din urmtoarele moduri:
1. Prin intermediul ferestrei Project Manager.
2. Prin selectarea opiunii New din meniul File sau a pictogramei New
de pe bara de instrumente standard.
3. Prin utilizarea asistentului Wizard
36

3.1.1.3. Crearea unui nou tabel prin utilizarea ferestrei Project Manager
Dup afiarea pe ecran a ferestrei Project Manager, se selecteaz pagina Data i
se execut un clic pe simbolul + de la seciunea Databases, avnd ca efect
afiarea, n cadrul seciunii respective, a bazelor de date coninute n proiect. In
continuare, se va executa clic pe semnul din faa bazei de date n care dorim s
includem noul tabel. Ca urmare, se vor afia elementele incluse n baza de date,
dintre care se va selecta elementul Tables.
Dup selectarea uneia dintre cele dou elemente: Tables sau Free Tables, se
acioneaz butonul New, prin care se afieaz, pe ecran, fereastra de dialog New
Table.
Din cadrul casetei New Table se va selecta butonul New Table dac dorim s
creem singuri structura noului tabel sau butonul Table Wizard dac dorim s
creem structura noului tabel cu ajutorul unui asistent Wizard.
In fereastra Create se precizeaz directorul n care se va salva noua tabel i se
introduce numele tabelei. In final, se execut clic pe butonul Save avnd ca
efect deschiderea ferestrei aferente constructorului de tabele (table Designer).
Aceast fereastr conine un obiect de tip cadru de pagin cu trei pagini avnd
etichetele: Fields, Indexes i Table, fiind activat implicit prima pagin, unde
se va introduce structura noului tabel.
Cea mai mare parte a ferestrei aferente paginii Fields este ocupat de un
dreptunghi plasat n stnga ferestrei n care se introduce structura noului fiier.
Acest dreptunghi conine apte coloane dintre care prima nu are nume, fiind
utilizat pentru tergerea sau inserarea unei noi linii sau schimbarea ordinii
cmpurilor n cadrul structurii. Celelalte coloane au urmtoarele denumiri:
Name, Type, Width, Decimal, Index, NULL i permit specificarea
caracteristicilor unui cmp din structura noului fiier.
Dup introducerea cmpurilor aferente noii structuri, crearea unor indeci i
eventual introducerea n partea de jos a ferestrei Table Designer se selecteaz
butonul OK, prin care se salveaz noua structur i se prsete fereastra Table
Designer, iar pe ecran apare o caset de dialog, prin care se ntreab dac se
introduc sau nu date n noul fiier.
Dup introducerea datelor aferente unei nregistrri se afieaz macheta pentru
urmtoarea nregistrare. Salvarea datelor se realizeaz prin acionarea tastelor
CTRL+W sau CTRL+END pe primul cmp al unui articol vid. Tabelul astfel
obinut rmne activ n zona curent.
3.1.1.4. Crearea unui nou tabel prin selectarea opiunii New din meniul File

37

BAZE DE DATE

La selectarea opiunii New din meniul File sau de pe bara de instrumente


standard pe ecran se deschide fereastra New din care se selecteaz butonul de
opiuni Table indicndu-se astfel c se dorete crearea unui nou tabel, dup care
se acioneaz butonul New File avnd ca efect afiarea pe ecran a ferestrei
Create. In continuare se parcurg aceleai etape ca i n cazul folosirii
constructorului de proiecte (Project Manager).
3.1.1.5. Crearea unui nou tabel prin folosirea asistentului Wizard
In cazul selectrii din fereastra New Table a butonului Table Wizard sau
selectrii din fereastra New a opiunii Wizard are loc crearea structurii noului
tabel cu ajutorul asistentului Wizard. Crearea tabelului are loc n 6 etape, pentru
fiecare etap afindu-se pe ecran o fereastr cu coninutul etapei fiecare
fereastr aferent unei etape conine n partea de jos butoanele Next i Back
pentru trecerea la etapa urmtoare sau revenire la cea anterioar i un buton
Finish care permite ncheierea operaiei de crearea a structurii.
3.1.2. Crearea unei noi tabele prin comenzi ale limbajului Visual FoxPro
Pentru crearea structurii unei tabele prin comenzi ale limbajului Visual FoxPro
se folosesc n principiu 2 comenzi i anume: CREATE i CREATE TABLE.
De asemeni, se mai pot folosi i alte comenzi indirecte care n final permit
obinerea structurii unui nou tabel.
1. Comanda CREATE; aceasta este o comand meninut din versiunea
clasic i
permite crearea n mod conversaional a structurii unui tabel i
eventual ncrcarea
acestuia cu date:
2. Comanda CREATE TABLE
Aceast comand este preluat din limbajul SQL i permite crearea
structurii unui tabel n mod direct, pe baza opiunilor cuprinse n comand.
Dac noul tabel a crui structur se creeaz va fi asociat unei baze de
date, se deschide mai nti baza de date respectiv i apoi se creeaz tabelul.
Dac dorim n schimb s creem un tabel liber va trebui s menionm n
comanda CREATE opiunea FREE. Dac nu este deschis nici o baz de date,
comanda va crea automat un tabel liber, fr s mai menionm n cadrul
comenzii opiunea FREE.
3.1.3. Alte comenzi utilizate la crearea structurii tabelelor din baze
de date
Un tabel din cadrul unei baze de date sau liber se poate crea prin copierea
structurii sale dintr-un tabel existent, dintr-un fiier intermediar sau dintr-un
masiv. In acest sens se folosesc urmtoarele comenzi:
38

a. Comanda COPY STRUCTURE

Execuia acestei comenzi permite copierea parial sau total a structurii unui
tabel de date activ ntr-un nou tabel. Sintaxa comenzii este urmtoarea:
COPY STRUCTURE TO <nume-fiier> [FIELDS<list-de-cmpuri>|
FIELDS LIKEMablon1>| FIELDS EXCEPT<ablon2>|
[[WITH] CDX | [WITH] PRODUCTION]

b. Comanda CREATE FROM

Execuia acestei comenzi permite crearea unui nou fiier, prin copierea structurii
sale dintr-un fiier intermediar n care se ncarc structura de copiat. Comanda
permite n acelai timp i editarea structurii existente nainte de obinerea noii
structuri.
Formatul general al comenzii este urmtorul:
CREATE[<fiier 1>] FROM [<fiier 2>]

unde:
<fiier 1>

<fiier 2>

este numele fiierului care va fi creat. Acesta preia nregistrrile de


date din <fiier 2> pentru crearea structurii sale. Dup execuia
comenzii CREATE noua baz de date devine activ.
este numele fiierului intermediar sau surs, numit i fiier cu
structur extins. Dac nu se specific nici unul din cele dou
fiiere se va deschide o fereastr de dialog din care se selecteaz
fiierele folosite n comand.

Fiierul cu structur extins se obine prin utilizarea comenzii COPY


STRUCTURE EXTENDED cu urmtoarea sintax:
COPY STRUCTURE EXTENDED TO <nume-fiier>
[FILEDS<list-de-cmpuri>| FILEDS LIKE <ablon 1>|
FILEDS EXCEPT<ablon 2>]

3.1.4. Funcii privind structura tabelelor bazei de date


Pentru a avea acces la informaiile din structura unui fiier al bazei de date se
folosesc urmtoarele funcii:

39

BAZE DE DATE

1. Funcia RECCOUNT( ) - returneaz numrul de nregistrri din


cadrul fiierului deschis n zona de lucru specificat prin parametrii
<expN> sau <expC>.
2. Funcia LUPDATE( ) - returneaz data ultimei actualizri pentru
fiierul specificat. Cei doi parametri ai funciei se refer de asemenea
la zona de lucru n care este deschis fiierul.
3. Funcia RECSIZE( ) - returneaz lungimea unei nregistrri din
cadrul fiierului specificat i are aceeai sintax cu funcia
RECCOUNT(). Dac nu este deschis nici un fiier n zona specificat,
funcia returneaz valoarea zero.
4. Funcia FCOUNT() - returneaz numrul de cmpuri din stsructura
fiierului specificat i are aceeai sintax cu funciile precedente. Dac
nu este deschis nici un fiier n zona specificat, funcia returneaz
valoarea zero.
5 Funcia FIELDS() - returneaz un ir de caractere reprezentnd
numele unui cmp din structura fiierului specificat, scris cu
majuscule. Cmpul este identificat prin poziia sa n nregistrarea de
structur
6. Funcia FSIZE() - returneaz mrimea unui cmp din structura
fiierului specificat.
7. Funcia TYPE() - returneaz tipul unui cmp din structura fiierului
specificat i are aceeai
sintax cu funcia FSIZE().

40

3.1.5. Modificarea i vizualizarea structurii unui tabel


Dup crearea unui tabel, utilizatorul poate modifica structura i proprietile
acestora prin: adugarea, modificarea sau tergerea numelui i caracteristicilor
unui cmp sau proprietilor acestuia: valori implicite, chei, reguli de validare,
etc. Modificarea structurii unui tabel se poate realiza n unul din urmtoarele
moduri:
- prin folosirea constructorului de tabele (Table Designer);
- prin comenzi introduse n fereastra de comand sau la nivel de program.
1. Modificarea structurii unui tabel prin utilizarea constructorului
de tabele
Din fereastra Project Manager se selecteaz tabelul a crei structur se modific
i apoi se acioneaz butonul Modify . Ca efect pe ecran apare fereastra
Tabel Designer n care se pot face modificrile dorite. Constructorul de tabele se
mai poate lansa i prin selectarea opiunii Modify din meniul Database. In acest
scop se deschide mai nti fereastra Database Designer i din fereastra
respectiv se va selecta tabelul a crui structur se modific, dup care se
selecteaz opiunea Modify din Database. Ca i n primul caz, pe ecran apare
fereastra Table Designer coninnd structura tabelului selectat anterior.
Modificrile care se pot face referitor la stsructura tabelului activ se refer la:
- adugarea sau eliminarea unor cmpuri (linii) din structura
existent;
- redenumirea unor cmpuri (schimbarea numelui acestora);
- schimbarea ordinii cmpurilor n structur;
- schimbarea dimensiunii sau tipului unor cmpuri;
- schimbarea proprietilor unui cmp (valori implicite, reguli de
validare, comentarii etc.).
- adgarea, modificarea sau tergerea unui index (tag).
Dup efectuarea modificrilor se acioneaz butonul OK prin care se solicit
sistemului salvarea modificrilor efectuate. Sistemul Visual FoxPro afieaz pe
ecran o caset de mesaj prin care se cere confirmarea modificrilor efectuate.
2. Modificarea structurii unui tabel prin comenzi
Pentru modificarea structurii unui tabel se mai pot folosi comanda MODIFY
STRUCTURE i funcia DBSETPROP ( ).
Comanda MODIFY STRUCTURE
41

BAZE DE DATE

Prin execuia acestei comenzi pe ecran se va afia fereastra TABLE DESIGNER


aferent tabelului curent, n care se pot opera modificrile dorite. Dup
efectuarea modificrilor se va afia pe ecran caseta de mesaj cu confirmarea
modificrilor efectuate i apoi se revine n fereastra de comenzi sau n
programul care a lansat comanda MODIFY STRUCTURE.
3.1.6. Listarea structurii unui tabel
Pentru a vizualiza structura unui tabel din baza de date, se folosesc comenzile
LIST sau DISPLAY cu urmtoarea sintax:
DISPLAY STRUCTURE [IN <zon-lucru>]
[TO PRINTER] [TO FILE<fiier>]
[NOCONSOLE]
LIST STRUCTURE [IN <zon-lucru>]
[TO PRINTER] [TO FILE<fiier>]
[NOCONSOLE]

Cele dou comenzi afieaz structura tabelului deschis n zona de lucru curent
numele tabelului, numrul de nregistrri din tabel i data ultimei actualizri.
Structura include numele fiecrui cmp, tipul i lungimea acestora i numrul de
zecimale pentru cmpurile numerice.
Comanda DISPLAY este similar cu LIST cu deosebirea c aceasta
afieaz doar informaiile care ncap pe un ecran sau ntr-o fereastr, dup care
se ntrerupe afiarea iar ntr-o caset apare mesajul "Press any key to
continue". In cazul comenzii LIST, informaiile privind structura tabelului
specificat sunt afiate fr nici o pauz.
3.1.6.1. Meninerea integritii datelor prin reguli de validare
Integritatea datelor dintr-o baz de date se poate realiza prin intermediul de
validare a datelor pe de-o parte i prin integritatea referenial pe de alt parte.
Regulile de validare permit verificarea prelurii datelor de intrare. Cu ajutorul
lor se compar dac valorile introduse n cmpurile unei nregistrri corespund
cerinelor din cadrul expresiei de validare. Conceptul de integritate a datelor
depete sfera integritii la nivel de cmp i nregistrare i se extinde la nivelul
relaiilor dintre tabele prin intermediul integritii refereniale.

42

Integritatea referenial are ca obiectiv meninerea legturilor dintre tabele i


permite efectuarea operaiilor de ncrcare i actualizare a datelor din baza de
date astfel nct aceste legturi s nu fie afectate.
Bazele de date suport reguli de validare la dou niveluri: la nivel de cmp i la
nivel de nregistrare. Pentru a menine integritatea datelor din baza de date,
regulile de validare se pot introduce att la nivelul aplicaiilor (programelor) sau
chiar n cadrul bazei de date prin intermediul procedurilor stocate.
3.1.6.2. Deschiderea i nchiderea tabelelor din baza de date
a. Zone de lucru
Pentru a folosi un tabel al bazei de date, acesta trebuie mai nti deschis sau
activat. Aceast operaie se realizeaz ntr-o zon, rezervat n memoria intern,
n care se memoreaz informaii privind folosirea fiierului respectiv, numit
zon de lucru. Astfel n zona de lucru n care s-a deschis un fiier se
memoreaz:
- nregistrarea de structur (antetul fiierului);
- numrul nregistrrii curente;
- formatul fiierului;
- relaiile dintre fiierele .DBF.
Tot n zona de lucru se creeaz zona tampon aferent fiierului deschis n care
se memoreaz prima nregistrare din fiier. FoxPro asigur 32767 de zone de
lucru numerotate de la 1 la 32767, n care se pot deschide diferite fiiere. In
fiecare zon de lucru se poate deschide ns, un singur fiier. Identificarea
zonelor de lucru se poate realiza:
- cu ajutorul cifrelor de la 1 la 10 sau cu ajutorul literelor de la A la J
pentru primele 10 zone de lucru.
- cu ajutorul cifrelor de la 11 - 32767 pentru celelalte zone de lucru;
- cu ajutorul aliasului fiierului deschis ntr-o anumit zon de lucru.
b. Aliasul unui tabel
La deschiderea unui tabel din baza de date, acestuia i se poate atribui un nume
suplimentar fa de cel definit la creare, de ctre programator sau de ctre
sistem, dac programatorul nu a fcut acest lucru. Acest nume prin care tabelul
poate fi ulterior identificat poart denumirea de alias.
Specificarea aliasului unui tabel se poate face n unul din urmtoarele moduri:
1. Prin intermediul clauzei Alias <nume-alias> din cadrul comenzii USE,
la deschiderea tabelului.
2. De ctre sistem, dac programatorul nu a specificat, n mod explicit,
un alias n comanda USE. In acest caz, aliasul atribuit de sistem este
format astfel:
43

BAZE DE DATE

- din numele fiierului folosit n comanda USE;


- din literele de la A la J pentru primele 10 zone de lucru sau din
caracterele W11 la W32767 pentru celelalte zone de lucru, dac un
fiier este deschis n mai multe zone de lucru.
Aliasul stabilit prin clauza ALIAS din comanda USE, trebuie s respecte
regulile de formare a identificatorilor n FoxPro, respectiv s nceap cu o liter,
iar restul caracterelor s fie alfanumerice sau liniua de subliniere.
c. Deschiderea tabelelor
Pentru deschiderea unui tabel liber sau asociat unei baze de date se pot folosi
urmtoarele variante:
1. Din fereastra Project Manager se selecteaz baza de date din care face
parte tabelul i se acioneaz butonul OPEN avnd ca efect
deschiderea bazei de date respective.
2. De pe bara de instrumente standard se selecteaz pictograma care
determin deschiderea unui obiect avnd ca efect apariia pe ecran a
ferestrei OPEN. In cadrul ferestrei se selecteaz tipul de fiier (DBF)
i apoi din lista aprut numele fiierului. Numele fiierului se poate
introduce i direct n caseta NAME.
3. Prin utilizarea comenzii USE, n fereastra de comand sau n program

44

d. Comanda USE
Comanda USE permite deschiderea sau activarea unui fiier DBF n zona de
lucru curent sau specificat n clauza IN. De asemenea, comanda poate
ndeplini n acelai timp i alte funcii cum ar fi: deschiderea fiierelor index i
stabilirea fiierului index principal sau atribuirea unui alias fiierului deschis
etc.
USE{{<nume-baz-date>.]<nume-tabel>
|SQL<nume-view>|?]
[IN <zon-lucru>|0]
[ONLINE][ADMIN]{AGAIN]
[NOREQUERY[<nr.sesiune-deschis>]]
[NODATA][ALIAS<nume-alias>]
[INDEX<list-fis.-index>|?
ORDER<expN>|<fis.IDX>|
TAG<etichet>[OF<fis.CDX>]
[ASCENDING|DESCENDING}}}
[EXCLUSIVE][SHARED][NOUPDATE]

e. nchiderea tabelelor
Pentru nchiderea fiierelor asociate unei baze de date n fereastra Proiect
Manager se selecteaz baza de date aferent i se acioneaz butonul Cose . Prin
nchiderea bazei de date se nchid automat i fiierele asociate. Dac dorim s
nchidem numai o parte din fiierele deschise asociate unei baze de date sau
libere, se va folosi i fereastra Data Session. Din aceast fereastr se selecteaz
fiierul ce urmeaz a fi nchis i se acioneaz butonul Close. Operaia se repet
pentru fiecare fiier ce urmeaz a fi nchis.
Inchiderea unui tabel se poate face i prin folosirea comenzii USE f nici un
parametru, pentru a nchide fiierul din zona curent, sau cu parametrul IN
<zona-lucru>, pentru a nchide fiierul deschis n zona de lucru precizat n
clauza IN.
3.1.6.3. Funcii privind zonele de lucru, tabelele deschise i cmpurile
aferente
Pentru a obine informaii despre zonele de lucru i tabelele deschise n zonele
respective refolosesc funciile USED() i DBF().
1. Funcia USED(); furnizeaz informaii referitoare la zona de lucru
specificat, n sensul dac este liber sau ocupat cu un tabel deschis n zona
respectiv. Funcia returneaz valoarea .T. (adevrat) dac n zona de lucru
specificat n cadrul funciei exist un tabel deschis i .F. n caz contrar.

45

BAZE DE DATE

2. Funcia DBF(); specific care anume tabel este deschis n zona de lucru
curent sau specificat. Sintaxa funciei este la fel cu cea a funciei USED(),
iar cei doi parametrii au aceeai semnificaie ca i n cazul funciei USED().
Funcia returneaz numele tabelului deschis n zona curent sau specificat,
inclusiv calea de acces. Dac n zona specificat nu este deschis nici un tabel
funcia returneaz irul vid.
3.1.6.4. ncrcarea tabelelor cu date i listarea coninutului acestora
ncrcarea unui tabel cu date const n adugarea n cadrul fiierului aferent de
nregistrri coninnd datele necesare unei aplicaii. Aceast operaie se poate
realiza imediat dup crearea structurii unui tabel, n mod interactiv, prin
preluarea datelor de la tastatur sau ulterior n funcie de necesiti. In general se
prefer a doua variant de ncrcare a tabelelor din baza de date, deoarece n
acest caz, datele se pot ncrca fie prin preluare dintr-un alt tabel fie prin
folosirea unui formular. De asemenea n funcie de poziia pe care o nregistrare
o va ocupa n fiier, adugarea se poate face la sfritul fiierului sau n
interiorul acestuia, printre nregistrrile existente.
a. Adugarea de noi nregistrri la sfritul unui tabel prin meniul sistem
Principalul instrument folosit de Visual FoxPro pentru adugarea de noi
nregistrri n cadrul unui tabel, l reprezint fereastra Browse. Prin intermediul
acestei ferestre se pot de asemenea modifica sau marca/demararea pentru
tergere anumite nregistrri sau se pot vizualiza nregistrrile unui tabel.
Pentru deschiderea ferestrei Browse i adugarea de noi nregistrri se pot folosi
urmtoarele variante: Din fereastra Project Manager se selecteaz baza de date
care conine tabelul sau tabelele ce urmeaz a fi ncrcate. Se selecteaz apoi
din seciunea Tables, tabelul n care se fac adugrile i se acioneaz butonul
Browse. Ca efect pe ecran apare fereastra Browse cu coninutul fiierului Pentru
a aduga o singur nregistrare vid la sfritul ferestrei se selecteaz din meniul
Table opiunea Append New Record sau se acioneaz tastele CTRL+Y. Datele
aferente nregistrrii vide se introduc n fiecare cmp prin tastare, trecerea la
cmpul urmtor realizndu-se cu ENTER.
Pentru a aduga un numr mare de nregistrri se va selecta opiunea Append
Mode din meniul View, prin care se adaug cte o nregistrare vid dup ultima
nregistrare din fereastr. Dup introducerea unei nregistrri se poate aciona
tasta cu sgeata n jos (n modul Browse) sau Enter (n modul Edit) pentru a
aduga o nou nregistrare.
46

Dup ncrcarea acesteia cu date Visual FoxPro va aduga o nou nregistrare


vid pe ultima poziie din cadrul ferestrei i va plasa cursorul pe nregistrarea
respectiv. La terminarea operaiei de ncrcare, datele introduse vor fi salvate
pe disc n fiierul aferent. Dac deschidem din nou fereastra Browse vom vedea
nregistrrile anterior adugate.
b. Adugarea de noi nregistrri prin comenzi ale limbajului Visual
Foxpro; comanda APPEND
Pentru adugarea de noi nregistrri n cadrul unui tabel prin intermediul
limbajului Visual FoxPro se folosesc comenzile: APPEND, care determin
adugarea de nregistrri la sfritul fiierului.
1. Comanda APPEND
La ncrcarea cu date a unui tabel n mod interactiv, comanda APPEND are
urmtoarea sintax:
APPEND [BLANK]

Executarea acestei comenzi determin adugarea de noi nregistrri la sfritul


tabelului activ, deschis n zona de lucru curent. Dac nu este deschis nici un
tabel n zona de lucru curent pe ecran se afieaz fereastra OPEN pentru a
selecta i deschide tabelul n care se vor face adugri. Prin folosirea comenzii
n formatul: APPEND adic fr opiunea BLANK se adaug nregistrri la
sfritul tabelului, prin prelucrarea datelor de la tastatur. Ca urmare pe ecran se
afieaz fereastra de editare APPEND care conine cmpurile tabelului activ
ordonate pe vertical. Valorile aferente fiecrui cmp se tasteaz n dreptul
cmpului respectiv. Dup introducerea datelor aferente unei nregistrri, pe
ecran se afieaz macheta de preluare date pentru urmtorul articol.
3.1.7. Vizualizarea coninutului unui tabel; comenzile LIST i
DISPLAY
La nivel de program listarea coninutului unui tabel se poate realiza cu ajutorul
comenzilor DISPLAY i LIST. Cele dou comenzi permit afiarea coninutului
unui tabel al bazei d date pe ecran, la imprimant sau ntr-un fiier pe disc.
Principala diferen dintre cele dou comenzi const n aceea c la
execuia comenzii DISPLAY, dup umplerea unui ecran se oprete afiarea,
continuarea afirii realizndu-se prin apsarea unei taste, n timp ce la execuia
comenzii LIST afiarea se realizeaz fr nici o pauz.
3.1.7.1. Modificarea coninutului unui tabel
47

BAZE DE DATE

Modificarea valorii unor cmpuri din cadrul nregistrrilor unui fiier al bazei de
date se poate realiza prin meniul sistem sau cu ajutorul comenzilor EDIT,
CHANGE, BROWSE, REPLACE, BLANCK, UPDATE. Operaia de
modificare se poate desfura n unul din urmtoarele moduri:
1. In mod interactiv, prin afiarea pe ecran a unei ferestre de editare n care
apar valorile pentru cmpurile de editare pentru o nregistrare sau un grup de
nregistrri. Valorile de modificat se preiau n cmpurile specificate prin
tastare. Acest mod de lucru apare la folosirea uneia din comenzile: EDIT,
CHANGE sau BROWSE sau la modificarea prin meniul sistem.
2. In mod direct, prin preluarea datelor necesare operaiei de modificare dintrun fiier (comanda UPDATE) sau prin precizarea lor n comanda de
modificare (comanda REPLACE). Cmpurile de modificat sau de asemenea
cuprinse n comand.
La actualizarea n mod interactiv se pot folosi dou moduri de lucru:
a. Modul EDIT, prin care, n fereastra de editare, cmpurile aferente unei
nregistrri sunt ordonate pe vertical, ca i la execuia comenzii APPEND.
b. Modul BROWSE, prin care n fereastra de editare se afieaz un grup de
nregistrri aranjate ntr-un tabel, cmpurile fiind ordonate pe orizontal.
a. Modificarea coninutului unui tabel prin meniul sistem
In majoritatea cazurilor se prefer modul de lucru Browse, prin intermediul
ferestrei Browse, dat fiind multitudinea de faciliti oferite de acest instrument
al mediului Visual FoxPro. Interfaa prietenoas a ferestrei de calcul tabelar,
permite navigarea rapid prin tabel n timp ce sistemul Visual FoxPro asigur o
vitez superioar i caracteristici performante de cutare. de aceea, ea reprezint
modul ideal pentru afiarea i modificarea nregistrrilor unui tabel. Dup
deschiderea unei ferestre Browse n vederea modificrii unuia sau mai multor
cmpuri dintr-o nregistrare, trebuie realizat poziionarea pe nregistrarea
respectiv. In cazul care n fereastra Browse sunt afiate mai puine nregistrri,
deplasarea la o anumit nregistrare se poate realiza cu ajutorul tastelor cu sgei
sau mouse-ului.
b. Modificarea coninutului unui tabel prin comenzi ale limbajului
Visual FoxPro
1. Comanda BROWSE
Execuia acestei comenzi permite afiarea nregistrrilor din fiierul curent, sub
form de tabel ntr-o fereastr de editare. Inregistrrile astfel afiate pot fi
editate (modificate) sau pot fi marcate sau demarcate pentru tergere. De
asemenea, dup afiarea nregistrrilor n fereastra de editare se pot aduga
48

nregistrri vide ale cror cmpuri se vor edita imediat sau ulterior. Inregistrrile
sunt afiate pe ecran n ordinea lor natural sau ntr-o ordine alfabetic definit
de fiierul index activ asociat fiierului de date.
In cadrul tabelei afiate n
fereastra BROWSE, fiecare rnd reprezint o nregistrare, cmpurile fiind
aezate deci pe orizontal, unul dup altul n ordinea definit n structura
fiierului sau specificat n comand.
Tabelul afiat are un antet care include numele fiecrui cmp aa cum apare n
nregistrarea de structur sau cum este definit de utilizator n comand. De
asemenea, n tabel se pot afia toate cmpurile din structura fiierului activ sau
numai cele specificate cu comanda BROWSE sau ntr-o comand SET FIELDS.
2. Comanda REPLACE
Execuia acestei comenzi permite nlocuirea coninutului unuia sau mai multor
cmpuri din cadrul nregistrrilor fiierului activ, cu anumite valori. Execuia
acestei comenzi permite nlocuirea coninutului unuia sau mai multor cmpuri
din cadrul nregistrrilor fiierului activ, cu anumite valori. Spre deosebire de
comenzile precedente, execuia acestei comenzi nu determin deschiderea pe
ecran a unei ferestre de editare n care utilizatorul introduce noile valori ale
cmpurilor, ci realizeaz actualizarea pe baza datelor incluse n comand.
3.1.8. tergerea nregistrrilor din cadrul unui table
3.1.8.1. tergerea nregistrrilor din cadrul unui tabel prin meniul
sistem
tergerea unor nregistrri dintr-un tabel al bazei de date se realizeaz n dou
etape i anume:
1) tergerea logic;
2) tergerea fizic.
3.1.8.2. tergerea nregistrrilor din cadrul unui tabel prin comenzi
ale limbajului Visual FoxPro
1. tergerea logic
Inregistrrile din cadrul unui tabel pot fi marcate pentru tergere folosind
comanda DELETE.
DELETE[<domeniu>][FOR<expL>]
[WHILE<expI> [NOOPTIMIZE]

Cele trei opiuni<domeniu>, FOR<expL> i WHILE <expL> permit selectarea


nregistrrilor ce urmeaz a fi marcate pentru tergere. Domeniul implicit al
49

BAZE DE DATE

comenzii este nregistrarea curent. Accesul la nregistrrile marcate pentru


tergere se pot controla cu comanda SET DELETIND ON/OFF astfel:
a) la folosirea opiunii ON, articolele marcate pentru tergere sunt
ignorate de comenzile FOX;
b) la folosirea opiunii OFF, comenzile FOX pot avea acces la toate
nregistrrile, chiar dac o parte dintre acestea sunt marcate pentru
tergere;
c) opiunea implicit este OFF.
2. tergerea fizic
Aceast operaie const n eliminarea din fiierul curent a tuturor nregistrrilor
marcate pentru tergere i se realizeaz cu ajutorul comenzii PACK cu sintaxa:
PACK[MEMO][DBF]

Dac nu se folosete nici una din clauze, comanda PACK se refer att la
fiierul .DBF ct i la fiierul memo asociat.
3.1.9. Accesul la nregistrrile unui fiier
3.1.9.1. Accesul la o singur nregistrare ; Indicatorul de nregistrri
Din punct de vedere fizic, fiierele din baza de date sunt de tip secvenial,
nregistrrile acestora fiind identificate printr-un numr de secven. Acest
numr se atribuie nregistrrilor din cadrul unui fiier n ordine cresctoare
ncepnd cu 1. Prin operaiile efectuate asupra unor nregistrri, acest numr nu
se modific (valoarea maxim). n schimb acesta se poate modifica prin
inserarea de noi nregistrri sau tergerea unor nregistrri din baza de date.
Pentru a permite accesul la o anumit nregistrare, dintr-un fiier al bazei de
date, FoxPro folosete o locaie de memorie din zona de lucru n care
memoreaz numrul de secven al nregistrrii curente. Aceast locaie poart
denumirea de indicator de nregistrri. El poate fi considerat ca o variabil de
memorie care exist ct timp fiierul este deschis.
Modificarea indicatorului de nregistrri n vederea precizrii nregistrrii
curente se realizeaz prin meniul sistem sau prin comenzi ale limbajului Visual
FoxPro, folosind doua metode:
1. selectarea poziiei unei nregistrri n fiier, metod prin care numrul
nregistrrii curente se stabilete direct prin evaluarea unor expresii;
2. specificarea unor condiii logice, metod prin care numrul
nregistrrii curente se stabilete ca urmare a unui proces de cutare.

50

3.1.9.2. Funcii privind indicatorul de nregistrri


Pentru a afla coninutul indicatorului de nregistrri sau dac acesta specific
prima sau ultima nregistrare din fiier, se folosesc urmtoarele funcii:
1. Funcia RECNO(); returneaz numrul de secven al nregistrrii curente
i are urmtoarea sintax:
RECNO([<expN> | <expC>])

unde cei doi parametrii specifica zona de lucru n care este deschis fiierul la
care se refer funcia, alta dect cea curent.
2. Funcia EOF(); determin dac indicatorul de nregistrri este poziionat la
sfritul fiierului. Astfel funcia returneaz valoarea logic .T. dac indicatorul
de nregistrri a trecut de ultima nregistrare, i .F. n caz contrar.
3. Funcia BOF(); verific dac indicatorul de nregistrri se afl la nceputul
fiierului, adic naintea primei nregistrri. n acest caz nu exist o nregistrare
de tip eticheta cu numrul 0 pentru a semnala trecerea n faa primei nregistrri,
de aceea la orice ncercare de trecere peste prima nregistrare indicatorul de
nregistrri rmne pe prima nregistrare, dar funcia BOF() va returna valoarea
.T. O a doua ncercare de trecere peste prima nregistrare va determina apariia
unui mesaj de eroare. Sintaxa general i semnificaia parametrilor din cadrul
funciei BOF() este aceiai ca i la funcia EOF().
3.1.9.3. Modificarea indicatorului de nregistrri prin meniul sistem
Pentru a avea acces la o anumit nregistrare din cadrul unui tabel, se va
selecta opiunea Go to Record din meniul Table. Ca efect pe ecran se va afia
un submeniu care conine urmtoarele opiuni: Top, Bottom, Next, Previous,
Record , Locate astfel:
3.1.9.4. Modificarea indicatorului de nregistrri prin comenzi ale limbajului
Visual FoxPro
Pentru modificarea indicatorului de nregistrri din cadrul limbajului
Visual FoxPro se folosesc cele dou metode, ca i n cazul meniului sistem i
anume:
1. Selectarea poziiei nregistrrii n fiier, folosind n acest scop
comenzile GO TO i SKIP;
2. Specificarea unor condiii logice la nivelul unor comenzi, metod prin
care indicatorul de nregistrri se modific ca urmare a unui proces de
cutare. n momentul n care se gsete prima nregistrare care
51

BAZE DE DATE

satisface condiia, aceasta devine nregistrare curent. n acest caz se


folosesc comenzile LOCATE, FIND i SEEK.
3.1.9.5. Precizarea nregistrrii curente prin specificarea poziiei acesteia;
comenzile GOTO i SKIP
1. Comanda GOTO
Execuia acestei comenzi realizeaz poziionarea indicatorului de nregistrri pe
nregistrarea cu numrul de secven rezultat din evaluarea expresiei din cadrul
comenzii.
Formatele generale ale comenzii sunt urmtoarele:

[GO | GOTO] [RECORD] <expN1> [IN <expN2> | <expC>]


[GO | GOTO] TOP | BOTTOM [IN <expN> | <expC>]

Prin execuia comenzii GOTO n primul format, are loc poziionarea


indicatorului de nregistrri pe nregistrarea cu numrul de secven rezultat din
evaluarea expresiei specificat prin <expN1>, n fiierul deschis n zona de
lucru curent sau specificat prin clauza IN. n cazul formatului 2, are loc
poziionarea indicatorului de nregistrri la extremele fiierului, adic pe prima
nregistrare (opiunea TOP) sau pe ultima nregistrare (opiunea BOTTOM).
2. Comanda SKIP
Utilizarea acestei comenzi determin modificarea indicatorului de nregistrri
prin efectuarea unui salt peste anumite nregistrri pornind de la nregistrarea
curent.
Sintaxa general a comenzii SKIP este urmtoarea:
SKIP [<expN1>] [IN <expN2>] | <expC>

unde:
<expN1> indic numrul de nregistrri peste care se face saltul,
fa de nregistrarea curent. Rezultatul evalurii
;
expresiei trebuie s reprezinte un numr ntreg pozitiv
sau negativ.
specific zona de lucru n care este deschis fiierul la
clauza
care se refer comanda SKIP.
IN;
3.1.10. Cutarea nregistrrilor n tabelele bazei de date

52

1. Cutarea secvenial; comenzile LOCATE i CONTINUE


Pentru cutarea ntr-un fiier secvenial a unor nregistrri care satisfac anumite
condiii se folosesc comenzile LOCATE i CONTINUE.
Comanda LOCATE permite cutarea n fiierul curent a nregistrrii care
satisface condiia specificat n comand.
2. Cutarea direct; comenzile FIND i SEEK
Aceste comenzi se folosesc dac fiierul la care se refer este indexat i permit
cutarea direct i poziionarea indicatorului de nregistrri pe prima nregistrare
la care valoarea cheii de indexare este egal cu irul de caractere sau valoarea
expresiei din cele dou comenzi.
Sintaxa general a celor dou comenzi este urmtoarea:
SEEK<expresie>

FIND<ir-caractere>

Modaliti de folosire a celor dou comenzi:


1) comanda SEEK sau FIND acioneaz doar asupra fiierului indexat,
considernd parametrii comenzii ca o valoare a cheii de indexare;
2) cele dou comenzi gsesc doar primul articol care satisface criteriul de
cutare;
3) operaia de cutare se desfoar astfel:
a. n cazul cheii de tip ir de caractere este suficient specificarea doar
a primelor caractere din ir, iar comanda FIND sau SEEK gsete
nregistrarea a crei cheie de indexare ncepe cu irul specificat;
b. n cazul cutrii dup valoarea unei chei numerice, se gsete
nregistrarea a crei cheie de indexare este egal cu valoarea
specificat n cele dou comenzi;
c. la cutarea dup coninutul unei variabile de memorie, numele
acesteia se specific n comanda FIND dup procedeul
macrosubstituiei, adic precedat de caracterul & (ampersand).
Dac valoarea variabilei ncepe cu spaii se introduce ntre
ghilimele.
3.1.10.1. Funcii utilizate la cutare
1.Funcia FOUND(); permite testarea reuitei sau nereuitei unei operaii de
cutare i are sintaxa:
FOUND([<expN> | <expC>])

Funcia returneaz valoarea .T. dac ultima comand LOCATE, CONTINUE,


FIND sau SEEK a avut succes i .F. n caz contrar.

53

BAZE DE DATE

2. Funcia SEEK(); caut ntr-un fiier indexat, prima nregistrare pentru care
valoarea cheii de indexare este egal cu valoarea expresiei din cadrul funciei.
Dac se gsete o nregistrare care satisface condiia de cutare, funcia
returneaz valoarea .T. iar indicatorul de nregistrri se poziioneaz pe
nregistrarea respectiv. n caz contrar, funcia returneaz valoarea .F. iar
indicatorul de nregistrri se poziioneaz dup ultima nregistrare. Sintaxa
general a funciei este:
SEEK (<exp> [, <expN> | <expC>])

3.1.11. Ordonarea nregistrrilor din cadrul unui tabel


Prelucrarea datelor financiar-contabile presupune de cele mai multe ori
ordonarea acestora dup anumite criterii. Un fiier al bazei de date este ordonat
dup un anumit criteriu dac fiecare nregistrare a acestuia respect criteriul dat
n raport cu nregistrrile anterioare i posterioare.
n FoxPro se pot folosi dou metode de ordonare a datelor unui fiier al bazei de
date i anume:
1. ordonarea propriu-zis sau sortarea realizat prin schimbarea ntre
ele a nregistrrilor, dup un anumit algoritm de sortare n funcie de
cheia de sortare definit de utilizator.
n acest caz se obine un nou fiier, care conine aceleai nregistrri
cu cele din fiierul surs, dar ordonate dup un anumit criteriu.
2. indexarea, aceasta nsemnnd de asemenea crearea unui nou fiier
care conine informaii cu privire la ordinea nregistrrilor din fiierul
surs, numit fiier index. Spre deosebire de prima metod i n acest
caz se obine un nou fiier, dar acesta nu conine nregistrrile de date
din fiierul surs ci memoreaz numai ordinea acestora.
3.1.12. Sortarea fiierelor din baza de date
La sortarea unui fiier al bazei de date, sistemul FoxPro creeaz un nou
fiier cu un nume diferit de cel al fiierului surs care conine articolele din
fiierul surs ordonate dup un anumit criteriu. Structura sa este aceeai cu cea a
fiierului iniial.
Aceast operaie se realizeaz cu ajutorul comenzii SORT cu urmtoarea
sintax:

54

SORT TO

<fiier> ON <cmp1> [/A | /D] [/C]


[, <cmp2> [/A | /D] [/C] ]
[ASCENDING | DESCENDING]
[<domeniu>] [FOR <expL1>] [WHILE <expL2>]
[FIELDS <list-cmpuri> | [FIELDS LIKE <ablon1> |

Comanda, sorteaz articolele fiierului curent, crend un nou fiier, n care sunt
depuse nregistrrile selectate din fiierul curent, n ordinea specificat prin
comand.
3.1.13. Indexarea nregistrrilor din cadrul unui table; Logica
operaiei de indexare
Cea de a doua metod de ordonare a datelor unui fiier o reprezint indexarea
acestuia, metod prin care se creeaz un fiier index, asociat fiierului de date
activ, n care se memoreaz cheia de indexare i ordinea nregistrrilor din
fiierul activ. Ca urmare n fiierul index pentru fiecare nregistrare de date din
fiierul activ se memoreaz un index format din perechea de informaii: cheia de
indexare i numrul de secven a nregistrrii din fiierul de date. n acest fiier
valorile cheii de indexare apar n ordine cresctoare, iar fiierul de date activ nu
este modificat. n acest fel accesul la o anumit nregistrare se va face prin
intermediul fiierului index asociat, ordinea fizic a nregistrrilor din fiierul
activ nefiind modificat.
3.1.13.1. Tipuri de fiiere index
n Visual FoxPro pot fi create trei tipuri de fiiere index i anume:
fiiere index simple sau independente cu extensia .IDX;
fiiere index compuse structurale cu extensia .CDX;
fiiere index compuse nestructurale cu extensia .CDX.
1. Fiierele index simple sau independente conin cte o singur cheie de
indexare de tip Unique (cheie unic). Ele se numesc independente deoarece
numele lor nu are nici o legtur cu tabela la care sunt asociate. Aceste fiiere se
pot crea n Visual FoxPro numai cu comanda INDEX.
2. Fiiere index compuse structurale; conin mai multe chei de indexare,
fiecare cheie avnd asociat o etichet sau un tag. Pe baza indecilor definii n
fereastra Table Designer, Visual FoxPro creeaz ntotdeauna un fiier index
compus structural cu etichetele definite n caseta Table Designer.Dac dorim s
crem un fiier index simplu sau un fiier compus nestructural va trebui s
folosim comenzi ale limbajului Visual FoxPro (comanda INDEX).
55

BAZE DE DATE

3. Fiier index compus nestructural; conin de asemenea mai multe chei de


indexare, fiecare cheie avnd asociat o etichet sau un tag. Spre deosebire de
fiierele index structurale, aceste fiiere au nume diferit de cel al tabelei la care
sunt asociate. Ca urmare ele trebuie deschise prin comenzi explicite.
3.1.13.2. Crearea fiierelor index
Indexarea reprezint modalitatea cea mai bun de a ordona datele unui tabel. n
Visual FoxPro se pot crea urmtoarele categorii de indeci:
1. Normali (Regular); indic faptul c sistemul Visual FoxPro memoreaz n
fiierul index valoarea aferent expresiei de indexare (cheia de indexare) pentru
fiecare nregistrare din tabela de date, chiar dac n tabel exist mai multe
nregistrri cu aceeai valoare a cheii de indexare.
2. Unici (Unique); permit memorarea n fiierul index a unei valori unice a
cheii de indexare. Astfel, dac mai multe nregistrri din tabela surs au aceiai
valoare a cheii de indexare se memoreaz numai cheia de indexare pentru prima
nregistrare de acest gen. Celelalte nregistrri cu aceiai valoare a cheii de
indexare nu vor putea fi accesate prin intermediul fiierului index, ele fiind
ascunse utilizatorului.
Acest tip de index asigur compatibilitatea cu versiunea FoxPro 2.6 sub
Windows.
Candidat (Candidate); este asemntor cu indexul unic, dar nu accept nici n
tabelul surs nregistrri cu aceeai valoare a cheii de indexare.
n cazul indecilor unici, puteau exista n tabela surs i nregistrri cu aceeai
valoare a cheii de indexare dar se prelua n fiierul index numai valoarea cheii
de indexare aferent primei nregistrri din aceast categorie, celelalte
nregistrri nefiind asociate fiierului index.
Primari (Primary); conin pentru fiecare nregistrare din tabelul surs o
valoare unic a cheii de indexare. Acest tip de index este deci la fel ca si cel
candidat i se utilizeaz n cadrul tabelei printe pentru a asigura integritatea
referenial ntr-o relaie permanent. Pentru o tabel se accept numai un
singur index primar, iar tabela respectiv trebuie s fie inclus n baza de date.

56

3.1.13.3. Crearea indecilor prin meniul sistem


Un index aferent unei tabele apare n fereastra table Designer, n pagina
Indexes, sub forma unei nregistrri care conine: ordinea de indexare
(cresctoare sau descresctoare), numele etichetei din fiierul compus care se
creeaz pe baza indexului, tipul indexului, cheia de indexare i un filtru
pentru nregistrrile care vor fi asociate indexului creat.
Pentru fiecare index aferent unui tabel vom crea cte o nregistrare de acest gen,
reprezentnd un rnd n pagina Indexes. De fiecare dat cnd construim un
index se creeaz de fapt un fiier care pstreaz pointeri la nregistrrile din
fiierul .dbf. Indecii afereni unei tabele pot fi creai fie n momentul definirii
structurii unui tabel, sau ulterior.
a. Crearea fiierelor index prin comenzi ale limbajului Visual FoxPro
Pentru crearea unui fiier index, prin comenzi ale limbajului Visual FoxPro se
folote comanda INDEX.
1. Comanda INDEX
Prin execuia acestei comenzi se creeaz un fiier index simplu sau un fiier
index compus structural sau nestructural. Sintaxa acestei comenzi este
urmtoarea:
REZUMAT

O baz de date n Visual FoxPro are ataat un fiier special cu extensia


.DBC (DataBase Container) n care sunt memorate printre altele
structura tabelelor componente, relaiile permanente dintre tabelele
bazei de date, caracteristici suplimentare ale tabelelor din baza de date,
caracteristici ale bazei de date n ansamblul su i proceduri ce
urmeaz a fi executate la apariia unor evenimente.
Construirea unei baze de date n Visual FoxPro se realizeaz n
urmtoarele etape:
crearea bazei de date, n care se vor memora informaii privind
tabelele i baza de date n ansamblul su;
ncorporarea n noua baz de date a tabelelor simple anterior
create i construirea noilor tabele ce vor fi ncorporate direct n
baza de date;
specificarea pentru tabelele simple incluse n baze de date a unor
caracteristici ce nu se puteau declara n momentul construirii lor,
ca tabele izolate;
stabilirea legturilor permanente ntre tabelele bazei de date;
precizarea unor caracteristici ale noii baze de date;
includerea n baza de date a unor vederi, conexiuni cu date externe
etc.
57

BAZE DE DATE

Crearea fiierului bazei de date de poate realiza n unul din


urmtoarele moduri:
- prin folosirea constructorului de baze de date (DataBase Designer)
apelat din meniul sistem;
- prin folosirea ferestrei PROJECT MANAGER;
- prin folosirea comenzii CREATE.
Adugarea sau eliminarea unei baze de date la/din proiect
Prin crearea unei baze de date cu ajutorul comenzii CREATE DATABASE,
aceasta nu devine automat parte component a unui proiect, chiar dac pe ecran
este deschis fereastra Project Manager.

Avnd n vedere facilitile oferite de instrumentul Project


Manager privind organizarea, vizualizarea i manipularea obiectelor
sale prin intermediul interfeei (fereastra Project Manager) se
recomand ca bazele de date create independent s fie adugate n
cadrul unui proiect existent sau nou creat.
In acest scop, dup lansarea Gestionarului de proiecte i afiarea
pe ecran a ferestrei Project Manager se selecteaz seciunea DataBase
i apoi se execut un clic pe butonul Add . Ca urmare se va afia
pe ecran fereastra Open, din care se selecteaz baza de date ce
urmeaz a fi inclus n proiect.
O baz de date poate fi retras dintr-unproiect i inclus ntr-un
alt proiect sau tears fizic de pe disc, dac nu mai este necesar n
cadrul sistemului. Pentru a elimina o baz de date dintr-un proiect, din
fereastra Project Manager se activeaz butonul Remove iar din caseta
care se afieaz dup activarea acestui buton, se alege opiunea
Remove. Dac dorim ca baza de date respectiv s fie tears fizic de
pe hard-disc se va alege opiunea Delete.
Deschiderea bazelor de date
Pentru deschiderea uneia sau mai multor baze de date, din
fereastra Project Manager se selecteaz baza de date ce urmeaz a fi
deschis i se execut un clic pe butonul Open sau Modify. Operaia
se repet apoi pentru fiecare baz de date ce urmeaz a fi deschis.
De asemenea, pentru deschiderea unei baze de date din fereastra
Project Manager, sau care nu este inclus ntr-un proiect se poate
folosi comanda OPEN
Inchiderea unei baze de date
Pentru nchiderea unei baze de date, avnd pe ecran afiat
fereastra Project Manager, se va selecta mai nti baza de date ce
urmeaz a fi nchis i apoi se activeaz butonul Close. Operaia se
repet pentru fiecare baz de date ce urmeaz a fi nchis. De
asemenea pentru nchiderea bazei de date curente i a tabelelor
58

aferente se poate folosi comanda CLOSE DATABASE.


TEME
DE 1. Se vor efectua lucrri practice de creare a unei baze de date folosind
CONTROL
instrumentele de lucru prezentate anterior;

2. Se vor efectua operaii de gestiune a unei baze de date ;


3. Se vor crea mai multe tabele care se includ n baza de date anterior
creat ;
4. Se vor defini relaii permanente ntre tabelele create i se
vizualizeaz schema bazei de date ;
5. Se ncarc tabelele create cu date i se vizualizeaz coninutul
acestora ;
6. Se actualizeaz tabelele create prin modificare i tergere de
nregistrri ;
7. - se indexeaz tabelele create
BIBLIOGRA 1. Avram-Nichi R., Ghioiu N., Goron S., Nichi St., Tomai N.
FIE
Baze de date i programarea calculatoarelor utiliznd limbajul Visual
FoxPro, Ed. Risoprint, Cluj-Napoca, 2003, pg. 91-110.
2. Marian Cristescu, Baze de date utilizate n mediul economic,
Editura ALMA MATER, Sibiu, 2007, pg. 128-142; 176-180; 202218; 229-237
3. Gabriel Dima ,Mihai Dima, Bazele Visual Foxpro 5.0, Editura
Teora, Bucuresti,1999,pag . 51-155.
4. Marin Fotache, Ioan Brava, Ctlin Strmbei, Liviu Creu, Visual FoxPro;
Ghidul dezvoltrii aplicaiilor profesionale, Editura Polirom Iai, 2002, pag. 3663.

5. Manole Velicanu, Ioan Lungu, Mihaela Muntean, Dezvoltarea


aplicaiilor cu baze de date n Visual FoxPro, Editura All, Bucureti,
2001, pag. 37-87.
6. Nicolae Ghioiu, Visual FoxPro; Exerciii i programe, Editura
Risoprint Cluj, 2003, pag. 7-13, 41-54.
6. Paul Petru, Visual FoxPro 5.0, Editura Promedia, Cluj, 1999, pag.
159-205.

59

BAZE DE DATE

4. CREAREA I GESTIUNEA BAZELOR DE DATE N VISUAL


FOXPRO
7. Crearea bazei de date
8. Deschiderea i nchiderea bazelor de date
9. Adugarea tabelelor n baza de date
10. Eliminarea unei tabele din baza de date
11. Relationarea tabelelor din baza de date
3. Insuirea modului de creare i gestionare a bazei de
OBIECTIVE
date
4. Studiul aspectelor specifice tabelelor din bazele de
date
5. Studiul relaionrilor dintre tabele
RECOMANDRI 3. Recomandm parcurgerea etapelor de creare a unei
baze de date folosind: instrumentul DATABASE
PRIVIND
DESIGNER; comanda CREATE DATA BASE.
STUDIUL
4. Se vor studia n continuare operaiile de gestiune cu
baze de date.
5. Se vor studia relaiile dintre tabele
1. nelegerea i nsuirea deprinderilor practice de creare
REZULTATE
i gestionare a bazelor de date n Visual FoxPro;
ASTEPTATE
2. nsuirea gestiunii tabelelor i a relaiilor dintre ele n
cadrul unei baze de date.
CONCEPTE
DE BAZA

60

4.1. CREAREA I GESTIUNEA BAZELOR DE DATE N VISUAL


FOXPRO
OBIECTIVE

CUVINTE
CHEIE

1. crearea bazelor de date


2. gestiunea bazelor de date; deschidere, nchidere,
adugare sau eliminare de tabele din baza de date;
3. relaionarea tabelelor din baza de date;
- constructorul bazei de date;
- relaii persistente, relaii temporare;
- integritate referenial;

4.1.1. Caracteristici generale


O baz de date n Visual FoxPro are ataat un fiier special cu extensia .DBC
(DataBase Container) n care sunt memorate printre altele structura tabelelor
componente, relaiile permanente dintre tabelele bazei de date, caracteristici
suplimentare ale tabelelor din baza de date, caracteristici ale bazei de date n
ansamblul su i proceduri ce urmeaz a fi executate la apariia unor
evenimente. Se clarific n acelai timp termenii de "baz de date" i "tabel"
folosii n trecut unul n locul celuilalt. Astfel termenul de "baz de date" era
utilizat pentru a desemna unul sau mai multe tabele. Visual FoxPro ncearc s
corecteze utilizarea improprie a celor doi termeni, prin introducerea unui obiect
distinct numit container de baze de date.
Construirea unei baze de date n Visual FoxPro se realizeaz n urmtoarele
etape:
1. crearea bazei de date, n care se vor memora informaii privind
tabelele i baza de date n ansamblul su;
2. ncorporarea n noua baz de date a tabelelor simple anterior create
i construirea noilor tabele ce vor fi ncorporate direct n baza de
date;
3. specificarea pentru tabelele simple incluse n baze de date a unor
caracteristici ce nu se puteau declara n momentul construirii lor, ca
tabele izolate;
4. stabilirea legturilor permanente ntre tabelele bazei de date;
5. precizarea unor caracteristici ale noii baze de date;
6. includerea n baza de date a unor vederi, conexiuni cu date externe
etc.
4.1.2. Crearea bazei de date
Crearea fiierului bazei de date de poate realiza n unul din urmtoarele moduri:
61

BAZE DE DATE

a) prin folosirea constructorului de baze de date (DataBase Designer)


apelat din meniul sistem;
b) prin folosirea ferestrei PROJECT MANAGER;
c) prin folosirea comenzii CREATE.

62

a) Crearea bazei de date prin folosirea constructorului de baze de


date
In acest caz din meniul FILE se selecteaz opiunea NEW avnd ca efect
afiarea pe ecran a ferestrei cu acelai nume (NEW). Afiarea ferestrei New se
poate realiza direct prin efectuarea unui clic pe prima pictogram din bara de
instrumente standard.
Din fereastra New se va selecta butonul Database i apoi opiunea New File.
Ca urmare a selectrii acestei opiuni, pe ecran va fi afiat fereastra CREATE
n care se cere introducerea numelui pentru baza de date i directorul n care se
memoreaz noua baz de date. Dup completarea acestor informaii, prin
acionarea butonului Save pe ecran apare fereastra constructorului bazei de
date. In acelai timp la meniul sistem se adaug opiunea Database, care
conine diferite opiuni pentru operaii cu baze de date.
Deocamdat baza de date nou creat este vid i este deschis n fereastra
Database Designer.
In fereastra Database Designer vom popula noua baz de date cu tabele folosind
opiuni din meniul obinut cu butonul drept al mouse-ului, opiuni din bara cu
instrumente aferent ferestrei Database Designer sau opiuni din meniul
Database. Tabelele introduse pot fi tabele existente (libere) sau create n
momentul respectiv.
b) Crearea bazei de date prin folosirea ferestrei PROJECT
MANAGER
Pentru a deschide fereastra PROJECT MANAGER exist dou posibiliti:
1. dac exist un proiect anterior creat se selecteaz numele proiectului
din submeniul FILE, fapt care determin afiarea pe ecran a ferestrei
PROJECT MANAGER aferent proiectului respectiv. In acest caz
noua baz de date va fi creat n cadrul proiectului respectiv
2. dac nu exist nc nici un proiect definit se selecteaz opiunea
PROJECT din fereastra New. Ca urmare pe ecran apare fereastra
CREATE prin care se solicit numele noului proiect i directorul n
care se memoreaz. Dup introducerea acestor informaii prin
acionarea butonului SAVE se salveaz noul proiect i se deschide pe
ecran fereastra PROJECT MANAGER aferent noului proiect.
In ambele cazuri, din fereastra PROJECT MANAGER se va selecta tabul
(pagina) Data i apoi cmpul Databases. In continuare se activeaz butonul
New tot din fereastra Project Manager avnd ca efect apariia pe ecran a
ferestrei CREATE pentru noua baz de date. Dup completarea informaiilor
solicitate prin acionarea butonului SAVE pe ecran se va afia fereastra
63

BAZE DE DATE

DataBase Designer, n care se pot introduce tabelele care vor compune noua
baz de date (imediat sau ulterior).
c) Crearea bazei de date prin comenzi
Pentru crearea bazei de date prin comenzi se folosete comanda CREATE
cu sintaxa:
CREATE DATABASE [ <nume-baza-dedate>|? ]

La execuia acestei comenzi are loc crearea unei baze de date i deschiderea
acesteia n zona curent.
4.1.3. Adugarea sau eliminarea unei baze de date la/din proiect
Prin crearea unei baze de date cu ajutorul comenzii CREATE DATABASE,
aceasta nu devine automat parte component a unui proiect, chiar dac pe ecran
este deschis fereastra Project Manager. Avnd n vedere facilitile oferite de
instrumentul Project Manager privind organizarea, vizualizarea i manipularea
obiectelor sale prin intermediul interfeei (fereastra Project Manager) se
recomand ca bazele de date create independent s fie adugate n cadrul unui
proiect existent sau nou creat. In acest scop, dup lansarea Gestionarului de
proiecte i afiarea pe ecran a ferestrei Project Manager se selecteaz seciunea
DataBase i apoi se execut un clic pe butonul Add. Ca urmare se va afia pe
ecran fereastra Open, din care se selecteaz baza de date ce urmeaz a fi inclus
n proiect.
4.1.4. Deschiderea i nchiderea bazelor de date
Bazele de date din cadrul unui proiect, pot fi deschise simultan pe ecran
folosind butonul Open sau prin referine la tabelul unei baze de date nchis,
prin folosirea comenzii USE cu simbolul "!". Prin deschiderea unei noi baze se
date, nu are loc nchiderea bazei de date anterior deschise. Acestea rmn n
continuare deschise, iar ultima baz de date deschis devine baza de date
curent, numele ei fiind afiat n caseta de pe bara de instrumente standard a
ferestrei Visual FoxPro.
Pentru deschiderea uneia sau mai multor baze de date, din fereastra Project
Manager se selecteaz baza de date ce urmeaz a fi deschis i se execut un
clic pe butonul Open sau Modify. Operaia se repet apoi pentru fiecare baz de
date ce urmeaz a fi deschis.

64

Dac baza de date nu este inclus n cadrul unui proiect pentru deschiderea
acesteia n mod interactiv se poate folosi fereastra Data Session afiat pe ecran
ca urmare a selectrii opiunii cu acelai nume din meniul Window. De
asemenea, pentru deschiderea unei baze de date din fereastra Project Manager,
sau care nu este inclus ntr-un proiect se poate folosi comanda OPEN n
formatul:
OPEN DATABASE [<nume-baza-date>|?] [EXCLUSIVE][SHARED]
[NOUPDATE] [VALIDATE]

65

BAZE DE DATE

4.1.4.1. nchiderea unei baze de date


Pentru nchiderea unei baze de date, avnd pe ecran afiat fereastra Project
Manager, se va selecta mai nti baza de date ce urmeaz a fi nchis i apoi se
activeaz butonul Close. Operaia se repet pentru fiecare baz de date ce
urmeaz a fi nchis. De asemenea pentru nchiderea bazei de date curente i a
tabelelor aferente se poate folosi comanda CLOSE DATABASE.
4.1.4.2. Adugarea tabelelor n baza de date
Prin adugarea unei tabele n baza de date se creeaz o legtur ntre fiierul
tabelei i containerul bazei de date. Informaia de legtur despre tabel stocat
n fiierul bazei de date este o legtur nainte (), iar informaia de legtur
despre baza de date n care se include o tabel, stocat n fiierul tabelei, este o
legtur napoi ()
Orice tabel din Visual FoxPro poate exista n una din urmtoarele stri:
- tabel liber;
- tabel asociat;
Tabelele asociate unei baze de date au o serie de proprieti specifice, care nu se
ntlnesc n cadrul tabelelor libere sau externe, cum ar fi: relaii persistente ntre
tabele, reguli de validare la nivel de cmp i nregistrare, etc. Ele pot fi asociate
unei baze de date prin crearea lor direct n cadrul bazei de date existente sau
prin adugarea acestora dup ce au fost create ca i tabele libere.
4.1.4.3. Eliminarea unei tabele din baza de date
Dac dorim ca o tabel dintr-o baz de date s fie folosit ntr-o alt baz de
date, sau nu mai avem nevoie de tabela respectiv n baza de date din care face
parte, aceasta poate fi eliminat din aceea baz de date. Prin eliminarea unei
tabele din baza de date, aceasta revine la statutul de tabel liber. Dac dorim
putem opta pentru tergerea fizic a tabelei de pe hard-disc. Pentru eliminarea
unei tabele din baza de date pot folosi urmtoarele procedee:
1. In fereastra Project Manager se selecteaz tabul Data i apoi se
expandeaz seciunile Database i Tables prin efectuarea unui clic pe
semnul + din faa seciunilor respective. Din lista cu tabele incluse n
baz de date se va selecta tabela ce urmeaz a fi eliminat i apoi
butonul Remove sau din submeniu Database se selecteaz opiunea
Remove.Ca efect pe ecran apare o fereastr de mesaj care conine
butoanele de comand: Remove, Delete, Cancel. Prin acionarea
primului buton, tabela selectat anterior este eliminat din baza de
date. Eliminarea tabelei nu determin tergerea fizic a fiierului
66

asociat tabelei. Dac dorim s tergem fizic tabela de pe disc vom


selecta butonul Delete
2. Dac baza de date este deschis n fereastra Database Designer se
selecteaz din cadrul ferestrei tabela ce urmeaz a fi eliminat i apoi
opiunea Remove din susbmeniul Database sau butonul Remove Table
de pe bara de instrumente Database Designer sau opiunea Delete din
meniul shortcut al tabelei selectate.
3. Prin folosirea comenzii REMOVE TABLE:
4.1.5. Relaionarea tabelelor din baza de date
In Visual FoxPro relaiile pe care le crem ntre tabele cu ajutorul
Constructorului bazei de date (Database Designer) se numesc relaii persistente.
In afara acestora se pot defini i relaii temporare sau dinamice prin comenzi
introduse n programele de prelucrare. Ca urmare relaiile temporare sunt
disponibile numai n momentul rulrii programului n care au fost definite dup
care ele nu mai exist.
Tabelele ntre care se creeaz o relaie se numesc: tabel principal sau printe
i respectiv tabel secundar sau fiu.
Intre cele dou tabele se pot defini urmtoarele tipuri de relaii:
1. relaie una-la-una (1-1);
2. relai una-la-mai-multe (1-n);
3. relaie mai-multe la-una (n-1);
4. relaie mai-multe-la-mai-multe (m-n).
In Visual FoxPro sunt implementate primele trei tipuri de relaii. Deoarece
modelul relaional nu poate accepta direct o relaie Mai multe la mai multe
acest tip de relaie se poate nlocui cu 2 relaii : mai multe la una i una la
mai multe prin intermediul unei tabele suplimentare numit i tabel de
jonciune. Pentru a realiza unul din tipurile de relaii amintite, ntre dou tabele,
acestea trebuie s fie indexate dup coninutul aceluiai cmp.
Cmpul din tabela printe dup care se face indexarea acesteia se numete cheie
primar (primary key), iar cel din tabela fiu, dup care se face indexarea, se
numete cheie extern (foreign key). Cheia primar se seteaz la indexarea
tabelei ca i index primar sau candidat (primary index or candidate index), iar
cheia extern se poate seta ca i index primar, candidat, unic sau normal.
4.1.5.1. Relaii permanente
Dup stabilirea cmpurilor cheie din cele dou tabele i a indecilor afereni se
poate defini o relaie permanent ntre cele dou tabele. In acest scop se va afia
pe ecran fereastra constructorului de baze de date (Database Designer) n care
67

BAZE DE DATE

apar tabelele ce compun baza de date. In tabela printe se selecteaz indexul


primar i se face drag-drop la indexul din tabela fiu, avnd ca efect crearea
relaiei ntre cele dou tabele. Faptul c relaia ntre cele dou tabele a fost
creat se indic prin afiarea unei linii care unete cei doi indeci. nceputul
liniei de la tabela printe conine o cruce, iar sfritul liniei spre tabele fiu,
conine o bifurcaie, indicnd o relaie de tip 1-n.
Fiecare relaie permanent reprezint un obiect Visual, sub forma unei linii cu
dou simboluri (cruce i bifurcaie). Ca urmare, ca orice obiect, poate fi
modificat cu ajutorul unor comenzi specifice.
Pentru tergerea unei relaii incorect definite sau care nu mai este necesar, se
execut clic pe linie i apoi se apas tasta DELETE, sau din meniul shortcut al
liniei se selecteaz opiunea Remove.
4.1.5.2. Asigurarea integritii datelor din tabelele legate ntre ele
prin relaii permanente
Printre mecanismele care asigur integritatea bazei de date se numr i cele
privind integritatea entitilor i integritatea referenial.
Integritatea entitilor este implementat prin specificarea n cadrul unei tabele,
a faptului c nu pot accepta valori nule cmpurile care reprezint chei primare.
Integritatea referenial (referenial integrity-RI) definete un ansamblu de
reguli, care permit menionarea integritii datelor din tabelele legate ntre ele, la
operaiile de modificare, adugare i tergerea datelor din tabelele respective,
astfel nct s nu existe nregistrri neparticipante la relaie. Implementarea
acestor reguli ntre tabele se realizeaz prin intermediul unor restricii numite
restricii pentru integritate referenial (RI constraints).
Prin definirea regulilor de integritate referenial, mediul Visual FoxPro va
interzice:
- adugarea de nregistrri n tabela fiu atunci cnd n tabela printe
nu exist nici o nregistrare cu aceeai valoare a cheii de indexare;
- modificarea valorii cheii de indexare n tabela principal care s
duc la apariia de nregistrri orfane n tabela fiu;
- tergerea de nregistrri n tabela printe, dac exist nregistrri
asociate n tabela fiu.
Specificarea restriciilor de integritate referenial i generarea automat a
procedurilor aferente se realizeaz prin intermediul Generatorului de Integritate
Referenial (Referential Integrity Builder).
68

4.1.5.3. Relaii temporare


Alturi de relaiile permanente se pot defini n Visual FoxPro i relaii sau
legturi temporare, care sunt active atta timp ct dureaz o sesiune de lucru sau
un program. Ele se pot crea prin meniul sistem sau prin program. Ca i n cazul
relaiilor permanente, cele dou tabele, principal i secundar, trebuie s fie
indexate pe baza unui cmp comun (cheia primar n tabela principal, cheia
extern n cea secundar).

69

BAZE DE DATE

REZUMAT

O baz de date n Visual FoxPro are ataat un fiier special cu extensia


.DBC (DataBase Container) n care sunt memorate printre altele
structura tabelelor componente, relaiile permanente dintre tabelele
bazei de date, caracteristici suplimentare ale tabelelor din baza de date,
caracteristici ale bazei de date n ansamblul su i proceduri ce urmeaz
a fi executate la apariia unor evenimente.
Construirea unei baze de date n Visual FoxPro se realizeaz n
urmtoarele etape:
crearea bazei de date, n care se vor memora informaii privind
tabelele i baza de date n ansamblul su;
ncorporarea n noua baz de date a tabelelor simple anterior create
i construirea noilor tabele ce vor fi ncorporate direct n baza de
date;
specificarea pentru tabelele simple incluse n baze de date a unor
caracteristici ce nu se puteau declara n momentul construirii lor, ca
tabele izolate;
stabilirea legturilor permanente ntre tabelele bazei de date;
precizarea unor caracteristici ale noii baze de date;
includerea n baza de date a unor vederi, conexiuni cu date externe
etc.
Crearea fiierului bazei de date de poate realiza n unul din urmtoarele
moduri:
- prin folosirea constructorului de baze de date (DataBase Designer)
apelat din meniul sistem;
- prin folosirea ferestrei PROJECT MANAGER;
- prin folosirea comenzii CREATE.
Adugarea sau eliminarea unei baze de date la/din proiect
Prin crearea unei baze de date cu ajutorul comenzii CREATE
DATABASE, aceasta nu devine automat parte component a unui
proiect, chiar dac pe ecran este deschis fereastra Project Manager.
Avnd n vedere facilitile oferite de instrumentul Project
Manager privind organizarea, vizualizarea i manipularea obiectelor
sale prin intermediul interfeei (fereastra Project Manager) se
recomand ca bazele de date create independent s fie adugate n
cadrul unui proiect existent sau nou creat.
In acest scop, dup lansarea Gestionarului de proiecte i afiarea
pe ecran a ferestrei Project Manager se selecteaz seciunea DataBase
i apoi se execut un clic pe butonul Add . Ca urmare se va afia pe
ecran fereastra Open, din care se selecteaz baza de date ce urmeaz a fi

70

inclus n proiect.
O baz de date poate fi retras dintr-unproiect i inclus ntr-un
alt proiect sau tears fizic de pe disc, dac nu mai este necesar n
cadrul sistemului. Pentru a elimina o baz de date dintr-un proiect, din
fereastra Project Manager se activeaz butonul Remove iar din caseta
care se afieaz dup activarea acestui buton, se alege opiunea
Remove. Dac dorim ca baza de date respectiv s fie tears fizic de pe
hard-disc se va alege opiunea Delete.
Deschiderea bazelor de date
Pentru deschiderea uneia sau mai multor baze de date, din
fereastra Project Manager se selecteaz baza de date ce urmeaz a fi
deschis i se execut un clic pe butonul Open sau Modify. Operaia se
repet apoi pentru fiecare baz de date ce urmeaz a fi deschis.
De asemenea, pentru deschiderea unei baze de date din fereastra Project
Manager, sau care nu
este inclus ntr-un proiect se poate folosi
comanda OPEN
Inchiderea unei baze de date
Pentru nchiderea unei baze de date, avnd pe ecran afiat
fereastra Project Manager, se va selecta mai nti baza de date ce
urmeaz a fi nchis i apoi se activeaz butonul Close. Operaia se
repet pentru fiecare baz de date ce urmeaz a fi nchis. De asemenea
pentru nchiderea bazei de date curente i a tabelelor aferente se poate
folosi comanda CLOSE DATABASE.
Relaionarea tabelelor din baza de date
In Visual FoxPro relaiile pe care le crem ntre tabele cu ajutorul
Constructorului bazei de date (Database Designer) se numesc relaii
persistente. In afara acestora se pot defini i relaii temporare sau
dinamice prin comenzi introduse n programele de prelucrare. Ca
urmare relaiile temporare sunt disponibile numai n momentul rulrii
programului n care au fost definite dup care ele nu mai exist.
Tabelele ntre care se creeaz o relaie se numesc: tabel principal sau
printe i respectiv tabel secundar sau fiu.
Intre cele dou tabele se pot defini urmtoarele tipuri de relaii:
- relaie una-la-una; prin care unei nregistrri din tabela printe i
corespunde o singur nregistrare n tabela fiu (copil);
- relaii una-la-mai-multe; prin care unei nregistrri din tabela
printe i corespund mai multe nregistrri n tabela copil;
- relaie mai-multe la-una; prin care pentru o nregistrare n tabela
copil putem avea mai multe nregistrri n tabela printe;
- relaie mai-multe-la-mai-multe; prin care unei nregistrri din tabela
printe i pot corespunde mai multe nregistrri n tabela copil i
71

BAZE DE DATE

invers adic unei nregistrri din tabela copil i pot corespunde mai
multe nregistrri n tabela printe.
Asigurarea integritii datelor din tabelele legate ntre ele prin
relaii permanente
Printre mecanismele care asigur integritatea bazei de date se
numr i cele privind integritatea entitilor i integritatea referenial.
Integritatea entitilor este implementat prin specificarea n
cadrul unei tabele, a faptului c nu pot accepta valori nule cmpurile
care reprezint chei primare.
Integritatea referenial (referenial integrity-RI) definete un
ansamblu de reguli, care permit menionarea integritii datelor din
tabelele legate ntre ele, la operaiile de modificare, adugare i
tergerea datelor din tabelele respective, astfel nct s nu existe
nregistrri neparticipante la relaie. Implementarea acestor reguli ntre
tabele se realizeaz prin intermediul unor restricii numite restricii
pentru integritate referenial (RI constraints).
Specificarea restriciilor de integritate referenial i generarea
automat a procedurilor aferente se realizeaz prin intermediul
Generatorului de Integritate Referenial (Referential Integrity
Builder). Aceasta permite, de asemenea, precizarea tabelelor printe i
fiu din cadrul unei relaii i a evenimentelor din sistem care impun
mediului Visual FoxPro s verifice regulile definite.
TEME DE 8. Se vor efectua lucrri practice de creare a unei baze de date folosind
CONTROL
instrumentele de lucru prezentate anterior;

9. Se vor efectua operaii de gestiune a unei baze de date ;


10. Se vor crea mai multe tabele care se includ n baza de date anterior
creat ;
11. Se vor defini relaii permanente ntre tabelele create i se vizualizeaz
schema bazei de date ;
BIBLIOGR 1. Avram-Nichi R., Ghioiu N., Goron S., Nichi St., Tomai N. Baze
AFIE
de date i programarea calculatoarelor utiliznd limbajul Visual FoxPro,
Ed. Risoprint, Cluj-Napoca, 2003, pg. 91-110.
2. Marian Cristescu, Baze de date utilizate n mediul economic, Editura
ALMA MATER, Sibiu, 2007, pg. 222-230
3.Gabriel Dima ,Mihai Dima, Bazele Visual Foxpro 5.0, Editura Teora
,Bucuresti,1999,pag . 51-155.
4.Marin Fotache, Ioan Brava, Ctlin Strmbei, Liviu Creu, Visual
FoxPro; Ghidul dezvoltrii aplicaiilor profesionale, Editura Polirom
Iai, 2002, pag. 36-63.
5. Manole Velicanu, Ioan Lungu, Mihaela Muntean, Dezvoltarea
72

aplicaiilor cu baze de date n Visual FoxPro, Editura All, Bucureti,


2001, pag. 37-87.
6. Paul Petru, Visual FoxPro 5.0, Editura Promedia, Cluj, 1999, pag.
159-205.
7. Nicolae Ghioiu, Visual FoxPro; Exerciii i programe, Editura
Risoprint Cluj, 2003, pag. 7-13, 41-54.

73

BAZE DE DATE

5. GESTIUNEA PROIECTELOR N VISUAL FOXPRO

3. Rolul proiectelor n dezvoltarea aplicaiilor;


4. Project Manager, componenta Visual FoxPro pentru
gestiunea proiectelor.
1. Familiarizarea cu noiunea de proiect i rolul acestuia
OBIECTIVE
n dezvoltarea aplicaiilor cu particularitz n Visual
FoxPro.
2. Stabilirea modalitilor de gestiune a proiectelor;
3. Personalizarea managerului ;
4. Deprinderea utilizrii Wizard-ului.
RECOMANDRI 1. Studierea atent a bibliografiei;
2. Studiu individual n laborator i exersarea opiunilor
PRIVIND
i componentelor mediului;
STUDIUL
3. Elaborarea unor schie referitoare la nlnuirea logic
a operaiilor.
Crearea unor deprinderi de utilizare a managerului de
REZULTATE
proiect.
ASTEPTATE

CONCEPTE
DE BAZA

74

5.1. GESTIUNEA PROIECTELOR


OBIECTIVE

NOIUNI
CHEIE

1. Familiarizarea cu noiunea de proiect i rolul acestuia n


dezvoltarea aplicaiilor ;
2. Particularitile proiectelor n Visual FoxPro.
3. Stabilirea modalitilor de creare, respective de modificare
a proiectelor;
4. Descrierea paginilor etichetate din Proiect Manager ;
5. Gestiunea unor tipuri de fiiere prin Proiect Manager ;
6. Familiarizarea cu meniul Proiect ;
7. Personalizarea managerului ;
8. Utilizarea Wizard-ului
Proiect i componentele sale n Visual FoxPro ;
Modaliti de creare/modificare a proiectelor;
Tipuri de pagini etichetate n Project Manager;
Opiunile meniului Project;
Gestiunea fiierelor cu ajutorul Prtoject Manager;
Utilizarea Wizard-ului pentru managementul proiectelor i
opiunile acestuia.

5.1.1. Caracteristici generale


Elaborarea sistemelor informatice este o activitate laborioas i sistematic. De
aceea orice astfel de activitate debuteaz cu elaborarea unui proiect. Proiectul
nseamn un ansamblu de date, programe, formulare i rapoarte de diferite
tipuri, organizate ntr-o anumit structur.
Visual FoxPro pune la dispoziia utilizatorilor o modalitate sistematic de
organizare i gestiune a elementelor necesare unui proiect, cu ajutorul
utilitarului Project Manager. Project Manager este o mbuntire a
generatorului de proiecte din FoxPro 2.5, respectiv 2.6, uor de utilizat, avnd,
n acelai timp, o interfa prietenoas, care permite utilizatorilor finali s-i
gestioneze eficient proiectul. El funcioneaz n principiu n urmtorii pai:
1. Folosind interfee grafice, utilizatorul introduce i gestioneaz
elementele componente ale proiectului. Sistemul realizeaz pe baza
acestor elemente un tabel cu extensia .pjx, care este de fapt un
container n care se memoreaz datele referitoare la componentele din
proiect.
75

BAZE DE DATE

2. n a doua faz, dac utilizatorul dorete, poate transforma proiectul fie


ntr-o aplicaie sub form de cod intermediar (cu extensia .app), fie
ntr-o aplicaie executabil (cu extensia .exe).
In cadrul ferestrei aferente acestui utilitar, datele sunt grupate pe categorii
funcionale: baze de date, tabele, rapoarte, forme, etichete, pentru a avea o
eviden mai clar a tuturor elementelor proiectului i, n acelai timp, o vedere
de ansamblu asupra acestora.
5.1.2. Utilizarea constructorului de proiecte (Project Manager)
5.1.2.1. Crearea unui proiect nou
Pentru a crea un proiect nou, din meniul File se selecteaz opiunea New, sau
de pe bara de instrumente se selecteaz pictograma aferent crerii unui nou
fiier. Din fereastra New, se alege butonul de selecie Project i apoi butonul
de comand New File. Ca urmare, pe ecran apare caseta de dialog Create, n
care se stabilete directorul i numele noului proiect (implicit acesta are numele
Project 1 i, aa dup cum s-a vzut, extensia pjx).
Dup introducerea acestor informaii se acioneaz butonul Save, avnd ca
efect afiarea pe ecran a ferestrei Project Manager.
Constructorul de proiecte poate fi lansat i n mod comand, tastnd o comand
de forma:
CREATE PROJECT [numeproiect | ?]
dac n fereastra de comand se tasteaz CREATE PROJECT ? sau
pur i simplu CREATE PROJECT, aciunea se va derula identic cu
lansarea constructorului din meniu;
dac se tasteaz ns comanda sub forma
CREATE PROJECT numeproiect
se trece peste faza de vizualizare a chenarului Create i apare direct
chenarul constructorului de proiecte.
Pentru a deschide un proiect deja existent, din meniul File, se selecteaz
opiunea Open, sau se activeaz pictograma pentru deschidere fiiere (a doua)
de pe bara de instrumente standard. In caseta de dialog Open se va selecta tipul
de fiier ce urmeaz a fi deschis, adic Project i apoi denumirea proiectului,
dup care se acioneaz butonul OK, avnd ca efect afiarea pe ecran a ferestrei
Project Manager aferent proiectului selectat.

76

O alt modalitate mai rapid de afiare a ferestrei Project Manager const, n


selectarea numelui de proiect direct din meniul File, unde dup lista de opiuni
apar i numele tuturor proiectelor existente.
n mod comand, un proiect poate fi deschis printr-o comand de forma:
MODIFY PROJECT [numeproiect | ?]
care va funciona asemntor cu cazul crerii proiectelor i anume:
dac se utilizeaz forma MODIFY PROJECT ? sau MODIFY
PROJECT, operaia se va derula ca i n cazul lansrii sale din
meniu;
dac se utilizeaz forma
MODIFY PROJECT numeproiect
apare direct chenarul constructorului de proiecte, fr a mai apare
fereastra Open.
5.1.2.2. Componentele utilitarului Project Manager
Pentru a asigura o organizare ct mai clar a datelor necesare unui proiect,
fereastra Project Manager conine ase pagini, fie etichetate sau foi de
proprieti, fiecare dintre acestea fiind asociat unei anumite categorii de date.
Fiecare pagin are o etichet cu numele categoriei de informaii pe care o
reprezint.
Principalele componente ale paginilor din fereastra Project Manager sunt
urmtoarele:
1. Pagina Data - conine datele necesare unei aplicaii, fiind organizat
la primul nivel, pe urmtoarele categorii:
Database (baze de date)
Free Tabels (tabele libere)
Queries (interogri)
Fiecare baz de date poate conine urmtoarele subcategorii :
Tables (tabele)
Local View (vederi locale)
Remote View (vederi la distan)
Conections (conexiuni)
Stored Procedures (proceduri stocate)
2. Pagina Documents - include toate documentele utilizate n lucrul cu
tabele, cum ar fi: formulare (Forms) pentru citirea datelor i
vizualizarea lor, rapoarte (Reports), reprezentnd situaii de ieire i
etichete potale (Labels), pentru tiprirea rezultatelor interogrilor.
77

BAZE DE DATE

3. Pagina Clases - Aceast pagin conine toate bibliotecile de clase


definite sau adugate aplicaiei. Bibliotecile de clase n Visual FoxPro
sunt memorate n fiiere cu extensia .vcx i pot conine oricte clase.
Vizualizarea claselor dintr-o anumit bibliotec se face prin execuia
unui click pe semnul "+" din faa numelui bibliotecii.
4. Pagina Code - include codul surs al programelor FoxPro precum i
aplicaiile asociate. Programul principal este marcat prin litere
ngroate. In cadrul paginii, pe lng toate programele surs avem
posibilitatea de a include i alte aplicaii care pot fi asociate cu
aplicaia cu care lucrm. Din cadrul ferestrei Project Manager putem
crea, aduga sau terge fiiere program (cu extensia .prg) legate de
aplicaia respectiv.
5. Pagina Other - n cadrul acestei pagini sunt stocate codurile surs
pentru meniuri, sub form de fiiere cu extensia .mpr, ct i celelalte
fiiere, cum ar fi: icon-uri, bitmap-uri, fiiere de text etc.
6. Pagina All - conine toate obiectele celorlalte pagini.
5.1.2.3. Prelucrarea fiierelor din cadrul ferestrei Project Manager
1. Adugarea i administrarea fiierelor din proiect. Pentru adugarea
unui nou fiier n proiect se va selecta mai nti grupul n care se va
aduga fiierul i apoi se va executa un click pe butonul New, dac
fiierul se creeaz n momentul respectiv, respectiv pe butonul Add,
dac fiierul exist deja.
2. tergerea unui fiier, cum ar fi, de exemplu, o tabel dintr-o baz de
date, se va selecta mai nti fiierul respectiv i apoi se va aciona
butonul Remove
3. Afiarea fiierelor din proiect Operaia de afiare are o semnificaie
diferit i se execut diferit, n funcie de tipul de fiier. Astfel, pentru
a afia o tabel, se selecteaz numele tabelei, dup care se acioneaz
butonul Browse Dac dorim s afiam un alt tip de fiier, de
exemplu un program, se va selecta numele fiierului respectiv, dup
care se va aciona butonul Modify Ca urmare, se va deschide o
fereastr de editare n care apare codul programului respectiv.
4. Modificarea fiierelor. Pentru a realiza aceast operaie se selecteaz
fiierul dorit i apoi se acioneaz butonul Modify Se va afia
fiierul respectiv, putnd fi modificat. In cazul tabelelor, prin
acionarea butonului Modify se va lansa generatorul de tabele care va
afia structura tabelei pentru modificarea cmpurilor sau indecilor
acesteia.
5. Deschiderea i nchiderea unei baze de date. Se realizeaz prin
acionarea butonului Open/Close, iar pentru rularea unui program, a
unei forme sau a unui raport, se va folosi butonul Run.
78

5.1.3. Personalizarea ferestrei Project Manager


Fereastra Project Manager, ca orice fereastr din mediul Windows, poate fi
mutat sau redimensionat pentru a ocupa o poziie convenabil pe ecran. Pe
lng aceste proprieti, exist posibilitatea de a ascunde n ntregime fereastra
aa nct s se vad numai etichetele acesteia sau anumite pagini aferente lor.
Parametrizarea gestionarului de proiecte se poate realiza astfel:
din meniul sistem se alege opiunea Tools i apoi Options;
se selecteaz eticheta Projects;
se selecteaz opiunea corespunztoare din fi.
5.1.3.1. Meniul Project
n momentul afirii ferestrei Project Manager, n meniul sistem apare opiunea
Project. Opiunile submeniului aferent se refer la fiierul proiect deschis, cu
care lucrm, i se regsesc i n meniul rapid sau butoanele din interiorul
ferestrei Project Manager. In plus, apar unele opiuni noi, cum ar fi: Errors i
Refresh, care afieaz erorile ce pot apare la crearea unei aplicaii (Build),
respectiv remprospteaz fereastra Project Manager, dac s-au adugat sau
ters componente.
Opiunea Clean Up Project realizeaz o tergere fizic a nregistrrilor marcate
pentru tergere din toate tabelele proiectului, dup care pe bara de stare apare
mesajul "Project packed".
5.1.3.2. Utilizarea Wizard-ului destinat crerii proiectelor
Dac n meniul vertical File se selecteaz opiunea New, iar din meniul vertical
New se las selecta butonul radio Project i se efectueaz un click pe butonul
Wizardva apare chenarul Application Wizard.
n acest chenar se specific numele proiectului. Dac n directorul curent exist
proiecte cu acelai nume, n chenarul Project file apare numele complectat cu
calea. Utilizatorul poate selectata i cu ajutorul butonului Browse un alt director.
Dup acionarea declanatorului OK, dac n directorul curent mai exist un
proiect cu acelai nume utilizatorul trebuie s confirme c dorete s nlocuiasc
proiectul existent. Dac s-a trecut de aceast faz, apare un mesaj n care
sistemul cere s se atepte generarea aplicaiei dup care apar cele dou ferestre
i anume fereastra Project Manager i fereastra Application Builder cu ajutorul
cruia utilizatorul poate construi direct aplicaia.
Activ este, aa dup cum se poate observa, aceasta din urm. Dac se dorete
generarea unui proiect se execut un click pe oriunde pe fereastra Project
Manager-ului. Dac dorim s crem o aplicaie se selecteaz pe rnd fiele
etichetate. Fr a insista asupra acestora precizm c fiele au urmtoarele
funcii:
79

BAZE DE DATE

General permite stabilirea unor parametrii generali referitori la:


o numele aplicaiei (chenarul Name);
o eventual al unei imagini care va fi vizualizat la lansarea
aplicaiei (chenarul Image) sau prin selectarea butonului Browse),
respectiv a unui icon care poate fi selectat prin butonul Browse din
chenarul Icon;
o tipul aplicaie (Normal executat sub controlul mediului Visual
FoxPro, Module care genereaz module din alte aplicaii sau
Top-Level are semnificaia c aplicaia este o aplicaie de tip
Windows Desktop.
o Caracteristici generale ale aplicaiei (Splash screen) care
semnific faptul c imaginea din Image i informaiile generate cu
fia etichetat Credits vor fi vizualizate pe ecran n momentul
lansrii aplicaiei, Quick start indic faptul c se vizualizeaz
chenarul cu acelai nume pentru accesul la documente si alte tipuri
de fiiere ale aplicaiei, About dialog va vizualiza la lansarea
chenarului cu acelai num e la lansarea aplicaiei i n sfrit User
Logins indic faptul c aplicaia va cere parol la intrarea
utilizatorilor i va gestiona preferinele n situaia folosirii ei n
regim multiutilizator.
Credits specific informaii specifice autorului aplicaiei cum ar fi
nume, instituie etc.
Data permite n esen stabilirea surselor de date i conine:
o Database Wizars i Table Wizard permit crearea unor baze de
date sau tabele. n momentul nchiderii wizard0urilor datele
referitoare la tabele i imagini sunt memorate n tabelul vertical
Datasource;
o declanatorul Select... permite selectarea unor baze de date, tabele
sau imagini;
o decantorul Clear permite tergerea din tabelul vertical a tabelului
sau imaginii selectate;
o listele combinate Form Style i Report Style permit selectarea unor
stiluri de editare a formelor i rapoartelor referitoare la linia sau
liniile selectate din tabelul vertical;
o n sfrit, declanatorul Generate declaneaz generarea unor forme
sau rapoarte pentru tabelele selectate conform stilurilor alese.
Forms permite stabilirea unor elemente eseniale pentru formele
utilizate n aplicaie:
o chenarul text Name permite specificarea unui diminutiv pentru
form;

80

o declanatoarele Add..., Edit i Remove permit lansarea adugrii


unei forme la aplicaie, eventual selectate prin Browse, modificarea
(editarea) unei forme sau eliminarea unei forme din aplicaie;
o chenarul de selecie Single instance indic faptul c se accept o
singur instaniere a formei n cadrul aplicaiei;
o Use Navigator Toolbar i Use Navigator Menu indic faptul c se
va introduce construi o bar de instrumente de navigare, respectiv
un meniu de navigare pentru forma selectat;
o Appear in File New Dialogs i Appear in File Open Dialogs
indic faptul c diminutivul aplicaiei va apare n lista chenarului
de dialog New respectiv Open.
Reports este asemntor cu deosebirea c aceast fi conine un
singur chenar de selecie apare n Print Reports dialog, care specific
faptul c diminutivul raportului va apare n chenarul de dialog Print
Raports.
Advenced permite stabilirea unor caracteristici avansate pentru
aplicaie:
o Help- permite s specificm numele i calea unui fiier Help pentru
aplicaia n acuz;
o Default data directory permite stabilirea directorului implicit n
care se vor afla fiierele de date destinate aplicaiei;
o chenarele de selecie Standard toolbar i Favorites menu indic
faptul c aceste obiecte se vor utiliza n aplicaie;
o declanatorul Cleanup lanseaz un chenar de confirmare pentru a
terge modificrile efectuate de generatorul de aplicaie n tabelele
sistemului (metatabele).

81

BAZE DE DATE

REZUMAT

Modulul are n componen o unitate destinat gestiunii


proiectelor ca medii de dezvoltare de aplicaii cu
particularizare n cazul Visual FoxPro. Dintre problemele
studiate amintim:
Particularitile proiectelor n Visual FoxPro.
Stabilirea modalitilor de creare, respective de
modificare a proiectelor;
Utilizarea ferestrei Project Manager i a meniului
vertical aferent;
Personalizarea managerului de proiecte;
Facilii oferite de Wizard.
1. Elaborarea unui memento recapitulativ;
TEME DE
2. Operaii de creare, modificare i tergere a unor proiecte,
CONTROL,
APLICAII
precum i a unor componente ale lor cu i fr Wizard.
BIBLIOGRAFIE 11. R.Avram-Nichi, N.Ghioiu, S.Goron, S.I.Nichi,
N.Tomai, Baze de date i programarea calculatoarelor
utiliznd Visual FoxPro, Risoprint, 2003, p. 47-89.
12. Avram-Nichi R., S.I.Nichi i alii, Culegere de exerciii
i probleme la disciplina Baze de date i programarea
calculatoarelor, UBB Preprint, Cluj, 2003.
13. Marian Cristescu, Baze de date utilizate n mediul
economic, Editura ALMA MATER, Sibiu, 2007, pg.
125-131.
14.
Dima G, Dima M., Visual FoxPro 7.0, Teora 2002.
15. M. Fotache i alii, Visual FoxPro, Polirom, 2002.
16. Ghioiu N., Visual FoxPro; exerciii i programe,
Risoprint, 2002.
17. Homorodean M.A, Petrescu S, Limbajul de programare
Visual FoxPro 6.0, Niculescu, 2002.
18. *** , Microsoft Visual FoxPro 6.0: Ghidul
programatorului, Teora, 2001.
19. http://msdn.microsoft.com/vfoxpro
20. http://gotdotnet.com/team/vfp

82

6. PROGRAMAREA N VISUAL FOXPRO

CONCEPTE DE 1. Implementarea structurilor de control n Visual FoxPro


2. Gestiunea variabilelor de memorie, a cmpurilor memo
BAZ
i masivelor de date
3. Comenzi de intrare/ieire
4. Proceduri i funcii utilizator
5. Obiecte i clase n Visual FoxPro
1. Cunoaterea comenzilor de implementare a structurilor
OBIECTIVE
de control alternative i repetitive;
2. Cunoaterea modului de definire a variabilelor de
memorie, cmpurilor memo i a masivelor de date.
RECOMANDRI 1. Se recomand studierea principalelor comenzi de
implementare a structurilor de control alternative i
PRIVIND
repetitive (IF, DO, CASE, DO WHILE, FOR, SCAN)
STUDIUL
2. n continuare se vor studia comenzile de intrare/ieire,
prin n testarea pe calculator a modulului de utilizare a
acestora;
3. Se vor studia noiunile de clas i obiect, proprietile
acestora. De asemeni se vor studia conceptele de
metode i evenimente.
- La finele studiului acestui modul utilizatorul trebuie s
REZULTATE
cunoasc modul de folosire al comenzilor de
ATEPTATE
implementare al structurilor de control ct i al
comenzilor de intrare/ieire;
- De asemenea utilizatorul trebuie s fie n msur s
creeze obiecte i s ataeze acestora secvene de
comenzi.

83

BAZE DE DATE

6.1. COMENZI DE IMPLEMENTARE A STRUCTURILOR DE


CONTROL ALTERNATIVE I REPETITIVE
OBIECTIVE

CUVINTE
CHEIE

Cunoaterea modului de funcionare i utilizare a comenzilor


de implementare a structurii de control, alternative i
repetitive.
- IF
- DO CASE
- DO WHILE
- FOR
- SCAN

6.1.1. Implementarea structurilor de control n Visual FoxPro


Limbajul FoxPro conine comenzi pentru implementarea celor trei tipuri de
structuri de control: secveniale, alternative i repetitive, cu urmtoarele
precizri:
1. Comenzile pentru implementarea structurilor de control alternative i
repetitive nu se pot folosi n mod interactiv numai la nivel de program.
2. Limbajul nu conine instruciuni de salt condiionat de tip GOTO
3. In capitolul de fa urmeaz a fi prezentate comenzile pentru implementarea
structurilor alternative i repetitive, respectiv: IF, DO CASE, DO WHILE,
FOR i SCAN. Celelalte comenzi din cadrul limbajului sunt considerate ca i
comenzi pentru realizarea structurilor secveniale, ele fiind prezentate n
cadrul unor capitole distincte (crearea structurii de date, deschiderea bazei de
date, actualizarea bazei de date, intrri/ieiri de date etc.)
6.1.1.1. Structuri alternative
Aceste structuri realizeaz selectarea unei secvene de comenzi n funcie de ndeplinirea sau
nendeplinirea unei condiii. Pentru implementarea acestor structuri se folosesc comenzile IF
i DO CASE.

a. Comanda IF
Aceast comand permite execuia unei secvene de instruciuni pe baza
evalurii unei expresii logice. Fiind cea mai simpl structur de control, poate fi
considerat ca fiind printele familiei structurilor de programare. Sintaxa
general a comenzii este urmtoarea:
IF<expl>
<secv-comenzi1>
[ELSE
<secv-comenzi2>]
ENDIF
84

La ntlnirea acestei comenzi se evalueaz <expL> i dac este adevrat se


execut <secv-comenzi1>, dup care se trece la prima comand dup ENDIF.
Dac condiia din <expL> nu este adevrat se execut <secv-comenzi2>, dup
care se trece la prima comand dup ENDIF. In acest caz, dac opiunea ELSE
lipsete, se trece direct la prima comand dup ENDIF.

b. Comanda DO CASE
In scopul creterii flexibilitii programului, limbajul Visual FoxPro permite implementarea
structurilor de control generalizate sau multiple, fr folosirea de instruciuni IF incluse una
n alta, folosind comanda DO CASE. Ea reprezint extinderea natural a principiului
exclusivitii mutuale la dou sau mai multe situaii. Prin urmare, n loc s folosim expresii
logice reciproc exclusive, Visual FoxPro, permite s includem orice expresie logic dorim
pentru fiecare caz sau situaie n parte. Sintaxa general a comenzii este urmtoarea:
DO CASE
CASE <expL1>
<secv-com1>
CASE <expL2>
<secv-com2>
OTHER WISE
<secv-comn>
ENDCASE

Execuia acestei comenzi are loc astfel:


1. Se evalueaz fiecare expresie logic n ordinea n care apare n
comanda DO CASE, iar ntlnirea primei expresii logice adevrate se
execut secvena de comenzi aferent, dup care se trece la prima
comand dup ENDCASE.
2. Dac nici una din expresiile logice specificate n comanda DO CASE
nu sunt adevrate, se execut grupul de comenzi din clauza
OTHERWISE sau se trece la prima comand dup ENDCASE, dac
clauza OTHERWISE lipsete.
3. Dac mai multe expresii logice din comanda DO CASE sunt
adevrate, se execut numai secvena de comenzi aferent primei
85

BAZE DE DATE

condiii logice adevrate, dup care se trece la prima comand dup


ENDCASE.
6.1.1.2. Structuri repetitive
Structurile repetitive pot fi implementate n limbajul Visual FoxPro cu ajutorul comenzilor:
DO WHILE, FOR i SCAN.

a. Comanda DO WHILE
Dac structura DO CASE ENDCASE este o copie aproape fidel a structurii
IFENDIF, structura DO WHILEENDDO este asemntoare i ea cu
IFENDIF.
Astfel, dac comanda IF execut secvena de instruciuni
dac expresia logic este adevrat, comanda DO WHILE permite execuia
repetat a secvenei de instruciuni ct timp expresia logic din cadrul comenzii
este adevrat. Ea permite astfel implementarea structurilor de control repetitive
cu condiionare anterioar. Formatul general al comenzii este urmtorul:
DO WHILE <expL>
<secv-comenzi>
[LOOP]
[EXIT]
ENDDO

Execuia comenzii ncepe cu evaluarea expresiei logice. Astfel, dac expresia


logic este adevrat se execut secvena de comenzi pn la ENDDO, dup
care se revine la evaluarea expresiei logice. Dac expresia logic este fals se
trece la prima comand dup ENDDO. Instruciunea LOOP determin
revenirea la evaluarea condiiei logice din DO WHILE.,
b. Comanda FOR
Aceast comand se afl ntr-o relaie foarte strns cu comanda DO
WHILE, fiind o variant asemntoare a comenzii DO WHILE. Ea permite
execuia repetat a unei secvene de comenzi de un anumit numr de ori fiind
utilizat pentru implementarea structurilor de control repetitive cu indici.
Formatul general al comenzii este urmtorul:
FOR <var> =<exp1> TO
[,STEP<exp3>]
<secven de comenzi>
[LOOP]
[EXIT]
ENDFOR/NEXT

unde:
<var>;
secvena de
86

<exp2>

este variabila de control care indic de cte ori se execut

<exp1>;
<exp2>;
<exp3>;
control.

comenzi din instruciunea FOR


reprezint valoarea iniial a variabilei de control
definete valoarea final a variabilei de control
definete raia cu care se modific valoarea iniial a variabilei de
Valoarea implicit pentru raie este 1

c. Comanda SCAN
Aceast comand reprezint o alt modalitate de ciclare specializat, fiind
proiectat pentru execuia de secvene de comenzi prin care se prelucreaz
nregistrrile unui tabel din baza de date. Execuia comenzii determin
parcurgerea tabelului curent i efectuarea pentru fiecare nregistrare selectat
din tabel a secvenei de comenzi specificate n comand.
Formatul general al comenzii este urmtorul:
SCAN [<domeniu>] [FOR<expL1>]
[WHILE
<expL2>]
[NOOPTIMIZE]
[LOOP] [EXIT]
<secvena-de-comenzi>
ENDSCAN

Semnificaia opiunilor din cadrul comenzii este urmtoarea:


- <domeniu>, FOR<expL1>, WHILE <expL2>; permit selectarea din
tabelul curent a nregistrrilor pentru care se va executa secvena de comenzi
din comanda SCAN.
- <secvena de comenzi>; conine comenzile ce urmeaz a fi executate pentru
fiecare nregistrare selectat din tabel. Reluarea secvenei de comenzi pentru
urmtoarea nregistrare se face automat la ntlnirea cuvintelor ENDSCN sau
LOOP.

87

BAZE DE DATE

6.2. COMENZI DE INTRARE/IEIRE


OBIETIVE

CUVINTE
CHEIE

nsuirea modului de folosire al comenzilor de intrare/ieire


n mod linie: INPUT, ACCEPT
nsuirea de afiare, coduri de funcii.

6.2.1. Comenzi de intrare/ieire


Aceste comenzi se pot mpri n dou categorii i anume:
1. Comenzi de intrare/ieire n mod linie.
2. Comenzi de intrare/ieire n mod ecran.
Comenzile de intrare/ieire n mod linie permit afiarea, respectiv introducerea
datelor din poziia curent a cursorului. Acestea sunt: ACCEPT, INPUT, WAIT
(de intrare), ?,??,???, DISPLAY, LIST (de ieire).

6.2.1.1. Comenzi de intrare n mod linie; Comenzile ACCEPT i


INPUT
Aceste comenzi permit introducerea de date de la tastatur i preluarea lor ntr-o variabil de
memorie sau ntr-un element dintr-un masiv. Opional, se poate afia un mesaj, definit de
utilizator, referitor la informaia de preluat. Sintaxa general a celor dou comenzi este
urmtoarea:
ACCEPT[<expC>]TO<var>|<element-masiv>
INPUT[<expC>]TO<var>|<element-masiv>

Datele de intrare pentru comanda ACCEPT sunt considerate iruri de caractere, ca urmare
variabila sau elementul de masiv n care se preiau aceste date vor fi de tip ir de caractere. In
cazul comenzii INPUT, datele de intrare sunt interpretate ca o expresie care este evaluat,
rezultatul evalurii, fiind de tip caracter, dat calendaristic, logic sau numeric. Ca urmare,
variabila sau elementul masivului care memoreaz datele de intrare, vor avea tipul specificat
anterior. Parametrul <expC> reprezint promptul sau mesajul care se afieaz naintea datei
de preluat.

6.2.1.2. Comenzi de ieire n mod linie; Formatul de afiare/citire

88

La afiarea valorii unor date sau la citirea lor de pe un periferic se folosesc


clauzele PICTURE i FUNCTION cu urmtoarea sintax:
PICTURE <sir1>
FUNCTION <sir2>

Ele determin afiarea sau citirea datelor precizate ntr-o comand de intrare sau
de ieire, ntr-un format specificat prin <sir1> respectiv <sir2> astfel:
<sir1> conine ntre ghilimele diferite coduri de afiare, cte unul pentru
fiecare caracter din date de afiat
<sir2> conine tot ntre ghilimele coduri de funcie. Un cod de funcie
acioneaz asupra tuturor caracterelor din data de afiat sau citit i definete o
anumit caracteristic a textului de afiat sau citit.
6.3. OBIECTE I CLASE N VISUAL FOXPRO
OBIECTIVE

CUVINTE
CHEIE

1. nsuirea conceptelor de clas, obiect metode i


evenimente;
2. Cunoaterea modului de creare a claselor i obiectelor n
Visual FoxPro i a modului de referire la obiectele unei
clase.
- Clas,
- Obiect,
- Metode,
- Evenimente,
- Controale,
- Containere.

6.3.1. Proceduri i funcii utilizator


6.3.1.1. Crearea i execuia programelor n Visual FoxPro
Crearea unui program n Visual FoxPro presupune parcurgerea urmtoarelor
etape:
1. introducerea programului n fereastra de editare i salvarea acestuia
pe disc; In acest scop se poate folosi fereastra Project Manager de
unde se selecteaz pagina Code i apoi butonul New. Ca urmare, are
loc lansarea editorului de text propriu sistemului Visual FoxPro, iar pe
ecran se afieaz fereastra de editare n care se va introduce
programul.
Lansarea editorului se poate face i prin introducerea
comenzii MODIFY COMMAND [<nume-program>] n fereastra de
comenzi. Se recomand ns folosirea primei metode, prin care
programul creat este inclus automat n proiect. Pentru salvarea
89

BAZE DE DATE

programului se pot aciona tastele CTRL+W sau se selecteaz


opiunea Save sau SAVE AS din meniul File.
2. lansarea n execuie; care se poate realiza n mai multe moduri; din
fereastra Project Manager se selecteaz din pagina Code programul
surs i apoi se execut un clic pe butonul Run.
- n fereastra de comenzi se introduce comanda DO <nume-program>
[WITH <lista-parametru>].
- din meniul PROGRAM se selecteaz opiunea DO.
6.3.1.2. Proceduri i funcii definite de utilizator
Pentru a uura nelegerea, testarea i depanarea unui program, acesta se
structureaz pe module, unde fiecare modul conine o secven de comenzi prin
care se realizeaz o anumit prelucrare. Aceste module se pot defini fie ca
module principale, fie ca proceduri sau funcii utilizator (UFD - User Defined
Functions). Modulele organizate sub form de proceduri i funcii utilizator pot
fi apelate n cadrul unui program, de mai multe ori, prin cte o comand de apel,
fr a rescrie aceste module ori de cte ori sunt executate.
Modul de definire i apelare a unei proceduri sau funcii utilizator, prezint
urmtoarele particulariti:
1. o procedur conine o secven de comenzi grupate sub acelai nume care
realizeaz o anumit prelucrare. Ea este apelat de alte module i poate primi
de la acestea unul sau mai muli parametrii. Dup execuia comenzilor din
cadrul procedurii, se red controlul programului apelant, fr a returna
neaprat vreo valoare.
2. o funcie utilizator conine de asemenea o secven de comenzi. Ea primete
de obicei un set de parametrii de la programul apelant i returneaz acestuia
la terminarea prelucrrii o valoare ca rezultat al prelucrrilor efectuate asupra
parametrilor primii.
Definirea procedurii se realizeaz cu comanda PROCEDURE, iar a funciei cu comanda
FUNCTION.

6.3.1.3. Obiecte i clase n Visual FoxPro


In Visual FoxPro, fa de versiunea clasic, s-au adugat o serie de faciliti, dintre care cea
mai important o reprezint programarea orientat pe obiecte i condus de evenimente. Un
obiect reprezint un ansamblu de date mpreun cu procedurile de prelucrare a acestora.
Procedurile sau comportamentul, poart denumirea de metode, iar datele de atribute sau
proprieti. Obiectele mai pot fi definite ca reprezentnd entiti din lumea real, care
nglobeaz n ele stri (date) i comportamente (funciuni). Reprezentarea unei entiti se
realizeaz printr-un ansamblu de proprieti comune (colecii de proprieti).
90

6.3.1.4. Proprieti, metode i evenimente


Fiecare obiect posed anumite proprieti i metode n funcie de clasa din care
fac parte. Astfel, un buton de comand poate avea urmtoarele proprieti:
- CAPTION - conine textul scris pe buton;
- LEFT
- conine distana fa de marginea din stnga ecranului;
- RIGHT - conine distana fa de marginea din dreapta ecranului;
- TOP,
- conine distana fa de partea de sus a ecranului;
- HIGHT - conine nlimea butonului;
- VISIBLE - conine valorile .T. sau .F. prin care se indic dac
obiectul
este vizibil sau nu pe ecran.
O proprietate este, prin urmare, un atribut al unui obiect (cmp, fereastr, control) pe care l folosim pentru a defini aspectul sau
comportamentul obiectului respectiv. In Visual FoxPro, proprietatea se definete printr-o variabil de memorie n care se
memoreaz valorile pentru proprietatea respectiv. Ea poate avea oricare din tipurile de date acceptate de Visual FoxPro. Aa cum
rezult din exemplul dat, proprietile unui obiect, respectiv a unui buton, identific atributele fizice ale acestuia (lungime, nlime
etc.). Ins, obiectele nu sunt caracterizate numai prin atributele fizice, ci ele conin ceva n plus fa de aceste proprieti, respectiv
metodele. Metodele sunt aciuni pe care le poate executa un obiect i includ cod (instruciuni) care indic modul de comportament al
obiectului respectiv.

Codul aferent obiectelor, se definete de ctre utilizator, n funcie de cerinele


programului i se execut n momentul apelrii metodei respective. Unele dintre
metode, posed cod ncorporat, care indic un anumit comportament al
obiectului. Exemplu metodele:
SHOW
- afieaz i activeaz o fereastr pe ecran;
REFRESH - afieaz starea unui obiect, dup efectuarea unor modificri
asupra obiectului respectiv.
Deci, fa de instruciuni, unei metode utilizatorul i poate ataa o
secven de cod specific unei anumite prelucrri, care se execut n momentul
apelrii metodei respective.
Fiecare obiect n Visual FoxPro, recunoate i rspunde la anumite
evenimente. Acestea pot fi evenimente externe, iniiate de utilizator, sau interne,
iniiale de ctre sistemul Visual FoxPro.
Evenimentele externe sunt generate de anumite aciuni cum ar fi:
efectuarea unui clic cu mouse-ul pe un obiect, apsarea unei taste etc.
Setul de evenimente aferent unui tip de obiect este stabilit anterior. Prin
urmare, utilizatorul nu poate crea noi evenimente care s le asocieze unui
obiect.
Spre deosebire de

evenimente, setul de metode, este infinit extensibil. Ele exist

independent de evenimente i se execut n momentul n care sunt apelate.

Evenimentele au asociate metode. Astfel, dac scriem o metod cu


numele click, care reprezint un eveniment i o asociem unui buton, sau unui alt
obiect, codul metodei se va executa automat, ori de cte ori survine evenimentul
click, adic facem un clic cu mouse-ul pe obiectul respectiv.
91

BAZE DE DATE

6.3.2. Clase

Prin proprieti, obiectele pot s difere ntre ele, sau s se asemene


unul cu altul. De exemplu, dou calculatoare, unul de buzunar, altul
de birou, se deosebesc ntre ele printr-o mulime de caracteristici
(greutate, dimensiuni, culoare etc., numite proprieti), dar principiul
de baz al funcionrii lor este acelai, conin piese electronice
aproape identice, pot efectua aceleai calcule.
Ca urmare, obiectele care au aceleai proprieti i acelai
comportament (rspund la aceleai evenimente prin aceleai aciuni)
aparin aceleai clase. Astfel, cele dou calculatoare (de birou i de
buzunar), prin elementele lor comune (circuite, piese electronice) i
prin faptul c pot rspunde la aceleai evenimente interne sau externe,
se consider c aparin aceleai clase, cea de calculatoare.
Deci, o clas descrie o mulime de obiecte cu proprieti i
comportament similar. Cele dou noiuni, clas i obiect, nu pot fi
ns confundate pentru c nu reprezint acelai lucru.
O clas conine informaii despre felul cum arat i se comport
obiectele care-i aparin. Clasa reprezint deci o noiune abstract
care definete structura i comportamentul obiectelor care-i aparin.
6.3.2.1. Subclase
n Visual FoxPro pot fi create clase derivate sau subclase pornind de la
clasele de baz. Avnd o clas deja definit, putem genera, pornind de la aceast
clas, o nou clas prin operaia de derivare.
O clas derivat motenete automat proprietile i metodele clasei de baz,
deci aceste proprieti nu mai trebuie definite n clasa derivat. In noua clas se
vor include numai caracteristici noi, cele vechi considerndu-se implicit.
6.3.2.2. Tipuri de clase i obiecte
Visual FoxPro conine 28 de clase de baz predefinite cu ajutorul crora putem
crea noi obiecte. Aceste clase se mpart la rndul lor n dou subcategorii:
1 - clase Container
2 - clase Control
92

REZUMAT

Implementarea structurilor de control n Visual FoxPro


Limbajul Visual FoxPro conine comenzi pentru implementarea
celor trei tipuri de structuri de control: secveniale, alternative i
repetitive, cu urmtoarele precizri:
- Comenzile pentru implementarea structurilor de control alternative
i repetitive nu se pot folosi n mod interactiv numai la nivel de
program.
- Limbajul nu conine instruciuni de salt condiionat de tip GOTO
In capitolul de fa urmeaz a fi prezentate comenzile pentru
implementarea structurilor alternative i repetitive, respectiv: IF, DO
CASE, DO WHILE, FOR i SCAN.
Comanda IF
Aceast comand permite execuia unei secvene de instruciuni pe baza evalurii
unei expresii logice. La ntlnirea acestei comenzi se evalueaz <expL> i dac
este adevrat se execut <secv-comenzi1>, dup care se trece la prima comand
dup ENDIF.

Dac condiia din <expL> nu este adevrat se execut <secvcomenzi2>, dup care se trece la prima comand dup ENDIF. In
acest caz, dac opiunea ELSE lipsete, se trece direct la prima
comand dup ENDIF.
Comanda DO CASE
In scopul creterii flexibilitii programului, limbajul Visual FoxPro
permite implementarea structurilor de control generalizate sau
multiple, fr folosirea de instruciuni IF incluse una n alta, folosind
comanda DO CASE.
Comanda DO WHILE
Astfel, dac comanda IF execut secvena de instruciuni dac expresia
logic este adevrat, comanda DO WHILE permite execuia repetat
a secvenei de instruciuni ct timp expresia logic din cadrul comenzii
este adevrat. Ea permite astfel implementarea structurilor de control
repetitive cu condiionare anterioar. Execuia comenzii ncepe cu
evaluarea expresiei logice. Astfel, dac expresia logic este adevrat
se execut secvena de comenzi pn la ENDDO, dup care se revine
la evaluarea expresiei logice. Dac expresia logic este fals se trece la
prima comand dup ENDDO.
Comanda FOR
93

BAZE DE DATE

Aceast comand se afl ntr-o relaie foarte strns cu comanda


DO WHILE, fiind o variant asemntoare a comenzii DO WHILE.
Ea permite execuia repetat a unei secvene de comenzi de un anumit
numr de ori fiind utilizat pentru implementarea structurilor de
control repetitive cu indici.
Comanda SCAN
Aceast comand reprezint o alt modalitate de ciclare
specializat, fiind proiectat pentru execuia de secvene de comenzi
prin care se prelucreaz nregistrrile unui tabel din baza de date.
Execuia comenzii determin parcurgerea tabelului curent i efectuarea
pentru fiecare nregistrare selectat din tabel a secvenei de comenzi
specificate n comand.
Comenzi de intrare/ieire
Aceste comenzi se pot mpri n dou categorii i anume:
- Comenzi de intrare/ieire n mod linie.
- Comenzi de intrare/ieire n mod ecran.
Comenzile de intrare/ieire n mod linie permit afiarea,
respectiv introducerea datelor din poziia curent a cursorului. Acestea
sunt: ACCEPT, INPUT, WAIT (de intrare), ?,??,???, DISPLAY, LIST
(de ieire).
Obiecte i clase n Visual FoxPro
Caracteristici generale
Un obiect reprezint un ansamblu de date mpreun cu
procedurile de prelucrare a acestora. Procedurile sau comportamentul,
poart denumirea de metode, iar datele de atribute sau proprieti.
O proprietate este, prin urmare, un atribut al unui obiect
(cmp, fereastr, control) pe care l folosim pentru a defini
aspectul sau comportamentul obiectului respectiv.
Aa cum rezult din exemplul dat, proprietile unui obiect,
respectiv a unui buton, identific atributele fizice ale acestuia
(lungime, nlime etc.). Ins, obiectele nu sunt caracterizate numai
prin atributele fizice, ci ele conin ceva n plus fa de aceste
proprieti, respectiv metodele.
Metodele sunt aciuni pe care le poate executa un obiect i
includ cod (instruciuni) care indic modul de comportament al
obiectului respectiv.
Codul aferent obiectelor, se definete de ctre utilizator, n
94

funcie de cerinele programului i se execut n momentul apelrii


metodei respective. Unele dintre metode, posed cod ncorporat, care
indic un anumit comportament al obiectului.
Fiecare obiect n Visual FoxPro, recunoate i rspunde la
anumite evenimente. Acestea pot fi evenimente externe, iniiate de
utilizator, sau interne, iniiale de ctre sistemul Visual FoxPro.
Evenimentele externe sunt generate de anumite aciuni cum ar fi:
efectuarea unui clic cu mouse-ul pe un obiect, apsarea unei taste etc.
Setul de evenimente aferent unui tip de obiect este stabilit
anterior. Prin urmare, utilizatorul nu poate crea noi evenimente care s
le asocieze unui obiect.
Spre deosebire de evenimente, setul de metode, este infinit
extensibil. Ele exist independent de evenimente i se execut n
momentul n care sunt apelate.
Clase
O clas conine informaii despre felul cum arat i se comport obiectele care-i
aparin. Clasa reprezint deci o noiune abstract care definete structura i
comportamentul obiectelor care-i aparin.

Subclase
In Visual FoxPro pot fi create clase derivate sau subclase
pornind de la clasele de baz. Avnd o clas deja definit, putem
genera, pornind de la aceast clas, o nou clas prin operaia de
derivare.
O clas derivat motenete automat proprietile i metodele
clasei de baz, deci aceste proprieti nu mai trebuie definite n clasa
derivat
Tipuri de clase i obiecte
Visual FoxPro conine 28 de clase de baz predefinite cu
ajutorul crora putem crea noi obiecte. Aceste clase se mpart la rndul
lor n dou subcategorii:
1 - clase Container
2 - clase Control
1. Se vor elabora programe de folosire a comenzilor de implementare
TEME
a structurilor de control i a comenzilor de intrare/ieire;
CONTROL
2. Se vor elabora programe de creare i utilizare a clasei form i a
obiectelor de tip buton de comand.
BIBLIOGR 1. Avram-Nichi R., Ghioiu N., Goron S., Nichi St., Tomai N.
95

BAZE DE DATE

AFIE

96

Baze de date i programarea calculatoarelor utiliznd limbajul Visual


FoxPro, Ed. Risoprint, Cluj-Napoca, 2003, pg. 224-252.
2. Marian Cristescu, Baze de date utilizate n mediul economic,
Editura ALMA MATER, Sibiu, 2007, pg. 176-200
3.Gabriel Dima, Mihai Dima, Bazele Visual Foxpro 5.0, Editura
Teora, Bucuresti,1999, pag . 175-186, 159-172.
4.Marin Fotache,Ioan Brava, Ctlin Strmbei, Liviu Creu, Visual
FoxPro; Ghidul dezvoltrii aplicaiilor profesionale, Editura Polirom
Iai, 2002, pag. 82-106, 370-417.
5. Manole Velicanu, Ioan Lungu, Mihaela Muntean, Dezvoltarea
aplicaiilor cu baze de date n Visual FoxPro, Editura All, Bucureti,
2001, pag. 217-233, 91-127.
6. Paul Petru, Visual FoxPro 5.0, Editura Promedia, Cluj, 1999, pag.
112-132.
7. Nicolae Ghioiu, Visual FoxPro; Exerciii i programe, Editura
Risoprint Cluj, 2003, pag. 13-15, 56-69.

7. CREAREA I UTILIZAREA FORMULARELOR N VISUAL


FOXPRO
CONCEPTE DE 1.
2.
BAZ
3.
4.
5.

Caracteristici generale
Crearea unui nou formular
Proprieti i metode ale formularelor
Mediu de date ale unui formular
Scrierea codului pentru evenimentele i metodele unui
formular
6. Salvarea i rularea unui formular
7. Descrierea i utilizarea obiectelor grafice

1. nsuirea tehnicilor de creare a unui formular Visual


FoxPro i de adugare de obiecte n cadrul formularului
respectiv;
2. Cunoaterea modului de asigurare a proprietilor i
metodelor unui formular;
3. Cunoaterea principalelor evenimente la nivel de format
i a modului de scriere a codului pentru evenimentele
respective;
4. Cunoaterea obiectivelor grafice ce pot fi ntr-un
formular (proprietate, evenimente): butoane radio, liste,
casete de validare, casete de text, butoane de comand.
RECOMANDRI 1. n vederea cunoaterii modului de creare a unui
formular, se recomand efectuarea de exerciii practice,
PRIVIND
folosind n acest scop Form Wizard i apoi Form
STUDIUL
Designer;
2. Dup crearea formularului se vor studia proprietile
aferente unui formular, urmrind aceste proprieti n
fereastra Properties;
3. Se vor introduce apoi n formularul creat o serie de
obiecte de pe bara Form Controls i apoi se vor defini
proprietile acestora din fereastra Properties;
4. n etapa urmtoare se vor defini evenimentele aferente
formularului i obiectelor incluse n formular i se va
scrie secvena de comenzi pentru fiecare eveniment n
funcie de programul pentru care s-a proiectat
formularul;
5. n ultima etap se salveaz i se lanseaz formularul n
execuie.
OBIECTIVE

97

BAZE DE DATE

REZULTATE
ATEPTATE

98

1. La ncheierea studiului acestui modul, utilizatorul


trebuie s fie n msur s creeze un formular cu diferite
obiecte ncorporate n formular i s defineasc
proprietile i evenimentele aferente formularului i
obiectelor aferente.
2. Formularul astfel creat s fie testat pe calculator i s
permit executarea corect a programului pentru care a
fost proiectat.

7.1. CREAREA FORMULARELOR N VISUAL FOXPRO I


ADUGAREA OBIECTELOR LA FORMUALR
OBIECTIVE

CUVINTE
CHEIE

1. nsuirea modulelor de creare a unui formular: prin


comenzi, cu utilitarele Form Designer sau Form Wizard;
2. Cunoaterea tehnicilor de adugare a obiectelor n cadrul
unui formular folosind bara de instrumente Form Controls
i aplicaia Form Builder.
- FORM DESIGNER
- FORM WIZARD
- FORM BUILDER
- FORM CONTROLS.

7.1.1. Citirea datelor; Formulare


In versiunile precedente ale SGBD FoxPro, termenul utilizat pentru elementul
de interfa la introducerea de date era cel de "ecran de introducere" sau de
machet de introducere" construit i afiat pe ecran, sau n cadrul unei ferestre,
prin intermediul unor comenzi specifice sau cu generatorul de ecrane. Odat cu
apariia ns a limbajelor orientate pe obiect, ecranele de introducere date au fost
nlocuite cu formulare.
Formularul poate fi considerat ca o fereastr avnd toate atributele unei
ferestre sub Windows: bara de titlu, caseta meniului de control, butoane de
minimizare, maximizare, nchidere. In plus, acestea reprezint n Visual FoxPro
un obiect avnd ca toate celelalte obiecte, proprieti, metode i evenimente
asociate. Acestea definesc aspectul exterior al formularelor i determin n
acelai timp comportamentul acestuia n diverse situaii.
Dintre proprietile unui formular putem meniona: nume, dimensiuni, culoare
fond, culoare scris. Pe lng proprieti o formular mai are ataate secvene de
cod (metode) executabile n anumite situaii. Modelul programrii orientat pe
obiecte, implementat n Visual FoxPro, este i unul condus de evenimente. Ca
urmare, la specificarea unei secvene de cod ataat unui eveniment, acesta se
execut automat ori de cte ori se produce evenimentul respectiv (de exemplu
apsarea unei taste, execuia unui clic cu mouse-ul etc.)
In cadrul unui formular se pot insera diferite obiecte grafice, care permit citirea
i manipularea datelor de intrare. Aceste obiecte au i ele asociate anumite
proprieti, metode i evenimente i permit astfel prelucrarea datelor de intrare
sau afiarea unor date din tabelele bazei de date.
Dup creare, formularul poate fi rulat imediat prin selectarea butonului (Run)
de pe bara de instrumente standard.

99

BAZE DE DATE

7.1.2. Crearea unui nou formular


Crearea unui formular se poate realiza n unul din urmtoarele moduri:
- prin intermediul comenzilor limbajului Visual FoxPro
- prin intermediul utilitarului Form Designer
- prin intermediul utilitarului Form Wizard
n primul caz este necesar cunoaterea comenzilor de definire obiecte, clase i
proprieti ale formularului i obiectelor incluse n formular ct i a comenzilor
de definire a procedurilor asociate unor evenimente.
Pentru a nltura inconvenientele definirii formularelor prin program, sistemul
Visual FoxPro, dispune de un utilitar special cu ajutorul cruia utilizatorul poate
crea mult mai rapid diferite formulare numit Form Designer (constructor de
formulare). Alturi de acest instrument se mai pot folosi utilitarele Formular
Builder i Formular Wizard.
Utilitarul Form Builder (opiunea Quik Form) a meniului Form, este utilizat
pentru a popula rapid un formular cu cmpuri ale unei tabele. El nu se folosete,
prin urmare, la crearea unui formular, ci numai pentru introducerea rapid a
componentelor acestuia. Vom crea formularul n formula iniial cu Form
Designer sau Form Wizard, adugndu-i apoi cmpurile dorite cu Form Builder.
De altfel, i celelalte obiecte introduse ntr-un formular n meniul Shortcut
opiunea Builder care permite specificarea rapid a caracteristicilor obiectului
respectiv.
Cu Form Wizard se poate crea un formular, pe etape, cu toate obiectele
ncorporate, gata pentru a fi lansat n execuie i care poate fi folosit ntr-o
aplicaie mai simpl .
Dup creare, formularele sunt memorate n fereastra Project Manager, seciunea
Documents, la pictograma cu textul Forms.
7.1.2.1. Crearea unui nou formular prin utilizarea generatorului
Form
Designer
Constructorul de formulare constituie cel mai folosit instrument de creare a unui
formular, deoarece acesta ofer utilizatorului posibilitatea de a vedea aspectul
formularului i a fiecrui obiect inclus n formular, pe msur ce acesta se
construiete.
Pe durata proiectrii formularului, acesta se poate lansa n execuie folosind
butonul Run i apoi se poate reveni, din nou, n faza de creare, selectnd
butonul Modify Form.
Pentru crearea unui formular cu ajutorul utilitarului Formular Designer se
folosesc urmtoarele variante:

100

1. Se selecteaz din fereastra Project Manager seciunea Documents, iconul


sau pictograma cu textul Forms. In continuare, tot din cadrul ferestrei Project
Manager se selecteaz butonul New sau opiunea New File din meniul
Project. In ambele cazuri, pe ecran apare fereastra New Form, din care se va
selecta opiunea cu acelai nume
2. Se selecteaz din meniul File, opiunea New, care determin afiarea, pe
ecran, a ferestrei New. Din aceast fereastr se selecteaz butonul radio Form i
apoi opiunea New File.
3. Se introduce n fereastra de comenzi comanda:
CREATE FORMULAR <nume-formular>

7.1.2.2. Crearea unui formular cu Form Wizard


n cadrul unei aplicaii de tip Wizard, la crearea unui obiect aplicaia respectiv
afieaz anumite ntrebri, urmnd ca pe baza rspunsului ales de proiectant s
fie creat un anumit obiect.
Form Wizard funcioneaz dup acelai principiu i ca atare va solicita din
partea proiectantului informaii privind: tabelele utilizate, denumirea
cmpurilor, modaliti de indexare, tipuri de obiecte ce urmeaz a fi incluse n
formular, etc. Toate ntrebrile referitor la aceste informaii sunt concepute n
cadrul a 4-6 etape dup care vom obine un formular care poate fi ulterior
modificat.
Pentru crearea unui formular cu Formular Wizard se parcurg urmtorii pai:
- se selecteaz din fereastra Project Manager seciunea Forms i apoi
butonul New care determin deschiderea ferestrei New Form din care
se selecteaz butonul Form Wizard;
- se selecteaz din meniul File, opiunea New care determin afiarea
ferestrei New din care se selecteaz butonul radio Form i apoi
butonul Wizard;
In ambele cazuri prin selectarea butonului Form Wizard sau Wizard in
al doilea caz ,pe ecran se afieaz fereastra Wizard Selection cu dou opiuni:
Form Wizard i One -To-Many Form Wizard. Dup selectarea tipului de
formular dorit se acioneaz butonul OK iar pe ecran apare fereastra Form
Wizard.
Prin intermediul celor dou opiuni se indic tipul de formular ce poate fi creat
cu Form Wizard i anume:
a - Form Wizard; creeaz un formular simplu bazat pe un singur tabel n care
se pot efectua operaii de afiare nregistrri, de modificare, adugare i
tergere, prin intermediul unui set de butoane de comand .
b - One-to-Many; creeaz un formular unu la mai multe, care se bazeaz pe
dou tabele ntre care se definete o relaie de tip 1-n. Ca urmare se pot afia
nregistrri din tabelul printe i cele aferente din tabelul fiu.
7.1.3.Adugarea obiectelor la un formular
101

BAZE DE DATE

Pentru ca un formular s poat fi rulat i s execute o anumit prelucrare


(ncrcarea unui tabel cu date sau actualizarea unui tabel etc.) acesta trebuie s
conin diferite controale sau obiecte de control cu proprietile configurate i
codul surs asociat evenimentelor.
La un formular se pot aduga: controale, containere, clase definite de
utilizator i obiecte OLE. Containerele sunt obiecte care pot conine alte
containere sau controale. Astfel, un formular ca i container poate conine
diferite controale (butoane de comand, casete de validare etc.) Controalele pot
face parte din containere, dar nu pot conine alte obiecte, adic nu pot fi printe
pentru alte obiecte.
Pentru a aduga un control ntr-un formular se folosete bara cu instrumente
Form Controls. Dac acesta nu este deschis i afiat pe ecran, pentru a o
deschide se selecteaz din meniul View opiunea Form Controls Toolbar.
Aceast bar conine toate obiectele ce pot fi adugate n cadrul unui
formular sub forma unor pictograme. Pentru a aduga orice control ntr-un
formular se execut un clic pe pictograma acestuia de pe bara Form Controls,
dup care se execut un clic pe formular n locul unde dorim s fie plasat
obiectul respectiv.
7.2. PROPRIETI I METODE ALE FORMULARELOR
OBIETIVE

CUVINTE
CHEIE

- cunoaterea principalelor proprieti i evenimente


aferente unui formular i a modului de configurare a
acestuia;
- cunoaterea structurii ferestrei PROPERTIES i a
modului de selectare a proprietilor i metodelor aferente
formularului i obiectelor incluse n formular;
- cunoaterea modului de scriere a codului (secvene de
comenzi) pentru evenimentele unui formular;
- fereastra PROPERTIES, caseta OBJECT, pagina
METODS, evenimentele INIT, LOAD, SHOW, CLICK.

7.2. Proprieti i metode ale formularelor; Fereastra Properties


Fereastra Properties este comun formularului i tuturor obiectelor din formular
creat cu Visual FoxPro. Cu ajutorul acestei ferestre vizualizm i configurm
proprietile i metodele formularului i ale obiectelor din formular pe toat
durata proiectrii acestuia. La deschiderea unui formular, fereastra Properties va
afia proprietile i metode aferente formularului. Pentru a edita sau modifica
aceste proprieti ale formularului sau ale unui alt obiect inclus n formular se va
selecta obiectul din caseta Object.

102

7.2.1. Componentele ferestrei Properties


Fereastra Properties conine urmtoarele componente:
1. Zona pentru proprieti i metode apare n partea stng de jos a ferestrei i
conine proprietile i metodele pentru obiectul curent selectat (lista Properties
and Events).
2. Zona de valori apare n partea dreapt de jos a ferestrei i conine valorile
aferente proprietilor unui obiect.
3. Taburi (pagini)apar n partea superioar a ferestrei, n numr de cinci i
permit vizualizarea proprietilor i metodelor obiectului curent selectat astfel:
dac se selecteaz tabul All se afieaz toate proprietile i metodele obiectului
curent, iar dac este selectat unul din celelalte taburi, se afieaz doar un subset
de proprieti sau metode pentru obiectul curent, n funcie de denumirea
tabului.
4. Caseta de configurare proprieti (Property setting)aceast component,
numit i cutie de editare se afl deasupra zonei dreptunghiulare care conine
proprietile i metodele pentru obiectul curent selectat i afieaz valoarea
proprietii selectate.
5. Caseta de obiecte (Object) conine denumirea obiectului curent selectat, cu
care lucrm la un moment dat. Prin execuia unui clic pe pictograma aferent
formularului se afieaz ntr-o list toate obiectele incluse n formular sub forma
unei ierarhii specifice platformei Windows.

103

BAZE DE DATE

7.2.2. Configurarea proprietilor i metodelor unui formular n


timpul proiectrii
Fereastra Properties afieaz la deschidere proprietile i metodele
obiectului curent selectat. Pentru a edita proprietile sau metodele altui
obiect, mai nti se va selecta obiectul respectiv n caseta Object. In
cadrul ferestrei Properties se va selecta apoi proprietatea sau metoda ce
urmeaz a fi modificat din lista Property and Events i se tasteaz noua
valoare n cutia de editare Property Setting n cazul unei proprieti.
Dac modificm codul unei metode dup selectarea metodei se execut
un dublu clic pe metoda respectiv avnd ca efect afiarea ferestrei
aferent metodei n care se poate modifica codul existent sau introduce alt
cod, dup care fereastra se nchide revenindu-se n fereastra Properties.
Fereastra aferent metodei de modificat se poate deschide i prin
selectarea opiunii Code din meniul Window. Pentru a trece de la o
procedur la alta, n cadrul ferestrei de editare, se pot folosi tastele PgUp
sau PgDn.
La selectarea i configurarea proprietilor sau metodelor unui obiect se
au n vedere urmtoarele aspecte:
1. proprietile protejate la scriere (Read only) sunt scrise n zona Property
and Events cu caractere italice n timp ce proprietile read-write sunt scrise
cu caractere normale.valorile implicite ale proprietilor apar scrise cu litere
normale (Regular) iar valorile modificate de utilizator cu litere ngroate
(Bold). In cazul metodelor modificate, n dreptul acestora apare scris cu litere
ngroate, expresia: [User Procedure].
2. pentru a readuce o metod sau proprietate modificat la valoarea iniial,
nainte de a aciona tasta Enter se va putea folosi opiunea Reset to Default
din meniul Shortcut al obiectului respectiv.
4 - n cadrul ferestrei Properties putem atribui proprietilor valori rezultate n
urma evalurii unor expresii sau funcii, prin introducerea, n caseta de
editare, a semnului egal urmat de expresia sau funcia respectiv . Exemplu,
pentru textul reprezentnd titlul unei ferestre (proprietatea Caption) putem
introduce n caseta de editare expresia:= ALIAS() pentru a obine ca text
numele fiierului curent selectat.
o proprietate se poate configura i n cadrul metodei aferente unui obiect. De
exemplu: n metoda Init a formularului putem schimba textul formularului
astfel:
This. Caption=Proc1()
6 - dup definirea (modificarea) proprietilor unui formular, acestea devin
efective, cu excepia cazului n care proprietatea Visible are valoarea .F.
7.2.3. Definirea aspectului exterior al unui formular
104

Principalele caracteristici ale unui formulae referitoare la aspectul


exterior sunt cele privind poziia formularului pe ecran i dimensiunea acestuia.
Definirea dimensiunii i poziiei unui formular se realizeaz prin
intermediul urmtoarelor proprieti:
1.Top i Left - permit definirea poziiei pentru colul din stnga sus al ferestrei
formularului. In mod implicit, Visual FoxPro plaseaz un formular nou n
colul din stnga sus al ferestrei constructorului de formulare (Top=0, Left=0)
2.AutoCenter - determin poziionarea formularului n centrul ferestrei
constructorului de formulare, dac proprietatea AutoCenter are valoarea .T.,
fr a ine cont de valorile proprietilor Left i Top.
3.Hight i Width - definesc dimensiunea unui formular, respectiv nlimea i
lungimea acesteia, exprimate n pixeli.
3. AlwayOnTop - indic dac un formular este afiat deasupra celorlalte
ferestre deschise. Valoarea implicit este .F.
Alte proprieti referitoare la aspectul unui formular sunt urmtoarele:
1 - Caption - reprezint titlul formularului sau textul care apare pe bara de titlu
i care implicit are aceeai valoare cu numele formularului definit prin
proprietatea Name.
2 - Bordstyle - definete chenarul unui formular prin intermediul a patru valori
astfel:
3 - BackColor i ForeColor - definesc culoarea pentru fond n cadrul
formularului (BackColor) i respectiv pentru scris (ForeColor). Aceste
proprieti pot fi modificate prin selectarea culorii dorite din fereastra Color
Palette sau din fereastra Color care se afieaz pe ecran prin execuia unui
dublu clic pe proprietatea BackColor sau ForeColor din fereastra Properties.
7.2.4. Configurarea metodelor i proprietilor unui formular prin
comenzi
Pentru a configura proprietile sau metodele unui obiect prin comenzi, acesta
trebuie mai nti identificat n raport cu iararhia containerului din care face
parte. Acest lucru se realizeaz n cazul formularului, prin intermediul unei
variabile, la care se va face referin pentru configurarea unei proprieti.
Variabila obiect pentru formular este chiar numele fiierului .scx.
Proprietile sau metodele pot fi configurate prin intermediul referinelor la
obiect, i proprietate sau metod , separate prin punct, astfel:
Container. obiect..proprietate = valoare variabil -obiect.control.metod

105

BAZE DE DATE

7.2.4.1. Scrierea codului pentru evenimentele/metodele unui


formular
Fiecare obiect se caracterizeaz prin atributele stare i comportament. Starea
unui obiect se definete prin proprietile sale, iar comportamentul prin
metodele pe care pe poate executa i evenimentele la care poate rspunde.
In condiiile programrii orientate pe obiect i condus de evenimente,
utilizatorul este cel care controleaz programul. Prin urmare, programul ateapt
ca utilizatorul s fac ceva (apsarea unei taste, execuia unui clic cu mouse-ul)
urmnd ca programul s rspund la evenimentul respectiv prin declanarea
unor operaii de prelucrare.
La apariia unui eveniment programul va executa codul metodei asociate
evenimentului respectiv. Pentru fiecare obiect inclus ntr-un formular ct i pentru
formularul respectiv, metodele i evenimentele aferente apar n fereastra
Properties, pagina Methods. Pentru a ataa cod n cadrul unei metode aferent
unui obiect, se selecteaz mai nti obiectul, iar n pagina Methods din fereastra
Properties se vor afia toate metodele i secvenele asociate obiectului
respectiv, fiecare cu valoarea [Default], ceea ce nseamn c fereastra de cod a
metodei respective este vid .
Pentru a deschide fereastra de cod a obiectului selectat se execut dublu clic pe
metoda respectiv sau se selecteaz opiunea Code din meniul shortcut al
formularului sau din submeniul View. Fereastra aferent codului unei metode
are urmtoarea structur :
In caseta Object va apare obiectul selectat. Prin acionarea butonului din dreapta
casetei se va deschide o list derulant coninnd toate obiectele incluse n
formular.
In partea dreapt a ferestrei apare caseta Procedure care conine metoda pentru
care se va scrie cod i n acest caz prin acionarea butonului cu sgeat n jos
apar metodele i evenimentele asociate obiectului selectat.
7.2.4.2. Principalele evenimente i metode la nivel de formular
Pentru un formular exist anumite evenimente la care acesta poate rspunde i
pentru care utilizatorul trebuie s introduc comenzi (secvene de cod) n cadrul
metodelor asociate evenimentelor respective.
Alegerea metodelor n care se va introduce cod, se face n funcie de tipul de
obiect i de momentul n care se lanseaz (apeleaz ) metoda respectiv i
presupune cunoaterea de ctre proiectant a evenimentelor la care formularul i
obiectele incluse n formular poate rspunde.
Principalele metode asociate comportamentului unui formular i obiectelor
incluse n formular sunt urmtoarele:
1. Init; aceast metod este apelat la crearea formularului avnd rolul de
iniializare a acesteia. In acelai timp fiecare obiect inclus n formular poate
106

2.

3.

4.

5.

6.

7.

8.

9.

avea metoda sa Init proprie. Aceasta este apelat atunci cnd se creeaz
obiectul la rularea formularului.
Load; este apelat imediat dup crearea unui formular, dar naintea metodei
Init i altor metode. Ca urmare, n cadrul acestei metode se pot include
comenzi de deschidere a bazei de date, a tabelelor i de iniializare a unor
variabile de lucru.
Unload; este apelat la terminarea programului i permite transmiterea
parametrilor din cadrul formularului ctre programul apelant prin comanda
RETURN cu sintaxa RETURN <variabil >.
Show; permite afiarea pe ecran a unei formulare anterior creat . Dac pe
ecran se afieaz mai multe formulare una singur este activ , n sensul c
reprezint pentru utilizator inta intrrilor.
GotFocus; trecerea controlului de la o formular la alta sau n cadrul
aceluiai formular de la un obiect la altul, este controlat de evenimentele
GotFocus (preluare control) i respectiv LostFocus (pierdere control).
SetFocus; permite transferul controlului de la un formular la altul sau de la
un obiect la altul, n cadrul aceluiai formular, atunci cnd trecerea are loc
prin comenzi introduse n cadrul altor metode.
Valid; este una din metodele frecvent utilizate i permite execuia unei
secvene de comenzi la trecerea de la un obiect la altul n cadrul
formularului. Metoda este deci apelat la prsirea unui obiect si n funcie
de valoarea returnat de expresie logic din cadrul comenzilor din Valid, se
permite sau nu trecerea la obiectul urmtor.
Refresh; conine comenzi pentru remprosptarea valorii obiectelor din
cadrul formularului ca urmare a unor modificri efectuate cu aceste valori.
Exemplu: la calculul stocului ca urmare a unor operaii de intrare/ieire n
metoda Valid a cmpurilor Intrri i respectiv Ieiri se va introduce
comanda. Refresh iar n cadrul metodei Refresh aferenta cmpului Stoc vom
introduce comanda Stoc=Stoc+Intrri-Ieiri
Release; se apeleaz la terminarea programului i are rolul de a descrca
(terge) formularului din memorie. Astfel dac avem n cadrul formularului
un buton de ieire, n metoda Click aferent ,vom apela metoda Release,
eventual dup nchidereabazei de date, astfel:
CLOSE DATABASES
THISFORM.RELEASE

10. Click; este de asemenea una dintre metodele cel mai frecvent utilizate,
fiind asociat att butoanelor de comand ct i cmpurilor de preluare
date din cadrul unui formular. De exemplu la execuia unui clic pe un
buton de ieire se va introduce n metoda Click aferent butonului
comenzile de afiare mesaj terminare program i comanda de tergere
a formularului (Release).
107

BAZE DE DATE

7.2.4.3. Salvarea i rularea unui formular


Dup construirea unui formular acesta se salveaz ca orice fiier, prin selectarea
opiunii SAVE din File prin care se afieaz fereastra Save As n care se
introduce numele fiierului reprezintnd formularul. De asemenea pentru
salvarea formularului se poate selecta iconul aferent de pe bara de instrumente
standard.
Dac se nchide un formular nainte de salvare se va afia o caset de dialog n
care se cere confirmarea modificrilor dup care pe ecran apare fereastra Save
As. Dac se dorete salvarea formularului ca definiie de clas se va selecta
opiunea Save as Class din File.
Pentru lansarea n execuie a unui formular se pot folosi urmtoarele procedee:

1. - n fereastra Project Manager se selecteaz pagina Documents i apoi


opiunea Forms. Din cadrul seciunii respective se selecteaz denumirea
formularului i se acioneaz butonul Run.
2. - din submeniul Form (care apare la afiarea unui formular pe ecran) se
selecteaz opiunea Run Form (CTRL+E).
3. - de pe bara de instrumente standard se selecteaz pictograma de lansare
formular (!) sau se tasteaz comanda: DO FORM <nume-formular>
Pentru nchiderea formularului activ se pot folosi urmtoarele variante:

108

se execut un clic pe butonul de nchidere al formularului;


se selecteaz opiunea CLOSE din meniul de control al formularului;
se introduce comanda RELEASE n fereastra de comenzi sau n program,

codul metodei sau evenimentului Click a unui buton de ieire


astfel:Thisform.Release

7.3. DESCRIEREA I UTILIZAREA OBIECTELOR GRAFICE


OBIECTIVE

CUVINTE
CHEIE

1. Cunoaterea principalelor obiecte grafice folosite n cadrul


unui formular i legtura lor cu sursa de date;
2. Cunoaterea proprietilor i evenimentelor pentru
principalele tipuri de obiecte ale unui formular i a
modului de configurare a acestora.
OPTION GRUP
LIST BOX
DROP DOWN
CHECK BOX
COMBO BOX
TEXT BOX
COMMAND BUTTON.

7.3.1. Descrierea i utilizarea obiectelor grafice


Obiectele grafice folosite n Visual Fox pot fi clasificate dup mai multe criterii:
1- dup posibilitatea de a include alte obiecte:
- obiecte container
- obiecte simple
2- dup faptul dac sunt sau nu vizibile pe ecran la execuie:
- obiecte vizuale
- obiecte non-vizuale
3- dup posibilitatea de a avea legtur cu datele de prelucrat:
- obiecte legate de date
- obiecte nelegate de date
4- dup modul de utilizare
- formuri
- controale
Aceste clasificri de ordin general sunt aplicabile oricror obiecte grafice i
implicit claselor din care fac parte. Pornind de la faptul c Visual Fox este un
sistem de gestiune a datelor, un rol important l are clasificarea n obiecte legate
sau nelegate de date. Prin acionarea asupra unui obiect legat de date, valoarea
pe care acest tip de obiect o memoreaz este stocat n sursa de date (tabel,
variabil de memorie, etc.). Legarea unui obiect de acest tip cu sursa de date se
face setnd proprietatea: Control Source sau Record Source. Aceast
proprietate memoreaz sursa de date la care este legat un obiect. Astfel, dac
avem pe ecran un obiect de tip TextBox iar proprietatea ControlSource are
valoarea Angajat. Salar, atunci valoarea afiat pe ecran pentru obiectul
TextBox (cmp editare) va fi valoarea cmpului Salar din tabela Angajat. Orice
modificare a valorii obiectului va determina automat i modificarea acesteia din
109

BAZE DE DATE

sursa de date. Valoarea proprietii ControlSource poate fi i numele unei


variabile de memorie, a crei valoare se va afia n cmpul de editare a
obiectului.
In acelai timp valoarea respectiv din sursa de date este memorat ntr-o zon
aferent unei proprieti a obiectului numit Value. Aceasta se poate numi
valoarea obiectului, ea fiind valoarea pe care obiectul o nmagazineaz.
Atribuind o valoare acestei proprieti vom putea modifica valoarea cmpului
din sursa de date.
Dac acionm asupra unui obiect care nu este legat cu o surs de date,
proprietatea Value este singura care se schimb. Dup execuia formularului din
care face parte obiectul, valoarea respectiv se pierde. Legtura dintre obiectul
i sursa de date se face n funcie de tipul de obiect. Ca urmare tipul de date din
surs depinde de tipul de obiect. Astfel un obiect de tip CheckBox nu poate fi
pus n legtur cu o surs de date de tip caracter deoarece el accept valori
logice.
7.3.2. Punerea la dispoziia utilizatorului a unui set de opiuni
predefinite
In cazul introducerii de date ntr-o tabel printr-un formular, exist posibilitatea
selectrii, pentru anumite cmpuri a valorii prestabilite a acestora dintr-o tabel
de tip nomenclator. Astfel de date se pot referi la: nume client, adres client,
adres furnizor etc. Aceste date, care sunt finite, deoarece i agenii comerciali
ai unei firme sunt n numr finit, sunt memorate ntr-o tabel separat . La
ncrcarea unei tabele care necesit astfel de date, n loc s introducem aceste
date manual pentru fiecare agent comercial, vom folosi un obiect de tip ComboBox care
conine anumite cmpuri din tabela secundar .

Prin selectarea unor cmpuri din acest obiect, datele aferente sunt introduse
automat n tabela care se ncarc. In felul acesta se ofer utilizatorului un set de
opiuni predeterminate. Acest mod de lucru asigur un control automat al
datelor de intrare, n sensul c n baza de date vor fi introduse numai date valide.
Pentru acest tip de introducere de date, putem folosi urmtoarele obiecte:
1. Grup de butoane de opiuni (Option Group)
2. Casete cu list i liste derulante (ListBox, DropDown, ListBox)
3. Casete de validare (CheckBox)
7.3.3. Utilizarea grupurilor de butoane de opiuni (Option Group)
Grupurile de butoane de opiuni, reprezint obiecte de tip container i conin
butoane de opiuni sau butoane radio. Ele permit utilizatorului alegerea unei
opiuni din mai multe variante posibile i nu introducere de date. Astfel, putem
folosi un grup de butoane pentru a specifica modul de afiare a datelor unor
prelucrri (la imprimant, pe ecran, ntr-un fiier) sau pentru a selecta anumite
110

nregistrri dintr-un tabel (prima, ultima, urmtoarea, precedenta).


Un grup de butoane de opiuni, se reprezint pe ecran sub forma unui
dreptunghi care conine dou sau mai multe cerculee urmate fiecare de cte un
text. Fiecare cercule poate conine punct sau spaiu n funcie de faptul dac
butonul a fost sau nu selectat. Grupul de butoane de opiuni poate apare i sub
forma unui grup de butoane de comand textul cu numele butonului fiind afiat
pe butonul respectiv.
Cea mai important dintre proprieti este ButtonCount, care se definete
nainte de a eticheta butoanele individuale din cadrul grupului i reprezint
numrul de butoane din grup. Prin modificarea acestei proprieti utilizatorul
poate include n grup numrul de butoane dorit.
O alt proprietate important este Value, care indic la nivelul grupului de
butoane, numrul de ordine al butonului selectat. La afiarea pe ecran a
grupului de butoane, dac proprietatea Value are valoarea 1, atunci primul buton
apare selectat, dac are valoarea 2, al doilea buton apare selectat, etc.
Proprietatea Value la nivelul unui buton, dac are valoarea 0 indic buton
neselectat, iar 1 sau alt valoare indic buton selectat. Fiecare buton din grup
poate avea una din cele dou valori. La rularea programului, n momentul
selectrii unui buton celelalte se deselecteaz automat.
O alt proprietate este Control Source prin care se face legtura cu o surs de
date (cmp sau variabil ). La nivel de grup, cmpul sau variabila va conine fie
numrul de ordine al butonului selectat fie prompterul acestuia (textul aferent
butonului selectat) n funcie de tipul cmpului sau variabilei. Textul aferent
fiecrui buton din grupul de butoane este memorat de proprietatea Caption.
7.3.4. Utilizarea casetelor de validare (CheckBox)
Aceste obiecte se folosesc pentru a specifica o stare cum ar fi: adevrat sau fals,
activat sau fals, activat sau dezactivat, deschis sau nchis, fiind reprezentate pe
ecran printr-o caset care poate conine un simbol de bifare sau spaiu, n funcie
de selectarea sau nu a obiectului, urmate de un text.
In cadrul unui form putem defini mai multe obiecte de acest tip din care
utilizatorul poate selecta la un moment dat unul, mai multe, toate sau niciunul.
Atunci cnd utilizatorul selecteaz o caset de validare n interior apare semnul
de bifare. Ca i n cazul butoanelor de opiuni, casetele de validare pot apare n
form grafic, respectiv sub form de butoane avnd afiat pe buton titlul sau o
imagine, prin setarea proprietii Style.
7.3.4.1. Utilizarea casetelor cu list i list derulant (List Box i
Dropdown List Box)
Casetele cu list (ListBox) i cele cu list derulant (Dropdown List) conin
elemente de un anumit tip, afiate parial sau total pe ecran, ntr-un dreptunghi.
111

BAZE DE DATE

Intr-o caset cu list (ListBox) sunt vizibile toate sau o parte din elementele
listei, n timp ce ntr-o list derulant (Dropdown List), n starea neactivat ,
este vizibil un singur element, cel curent selectat. Prin execuia unui clic pe
butonul cu sgeat n jos din dreapta casetei, se afieaz o list derulant , cu
toate elementele casetei.
Lista derulant sau expandabil reprezint un obiect ComboBox i este de dou
feluri n funcie de proprietatea Style a obiectului:
- cu posibilitatea de completarea manual a elementului de selectat. Aceasta
permite pe lng selectarea unui anumit element din list dup expandare,
introducerea manual, prin tastare n cadrul casetei, n locul elementului
curent selectat a valorii noului element care devine curent selectat
(proprietatea Style=0 Dropdown Combo).
- cu selectarea elementului dorit din lista expandat , fr posibilitatea de a
introduce date. (Style=2 Dropdown ListBox). Casetele cu list (ListBox) se
utilizeaz n cazul n care exist spaiu suficient pe form i dorim s mrim
perspectiva utilizatorului asupra datelor din care trebuie s aleag, n caz
contrar, pentru a face economie de spaiu se va folosi o list derulant
(Dropdown ListBox).
Caracteristica principal a celor dou tipuri de liste const n faptul c ele ofer
utilizatorului un set de opiuni predefinite, din care acesta poate selecta opiunea
sau opiunile dorite. In acest fel se simplific n mod considerabil proceduta de
introducere date la ncrcarea tabelelor din baza de date, prin faptul c
utilizatorul selecteaz din list datele necesare, n loc s introduc manual fiecare
valoare. Introducerea manual a datelor, pe lng faptul c necesit timp, mrete
probabilitatea de introducere a unor date eronate.

7.3.4.2. Introducerea datelor ce nu pot fi predeterminate


In cazul n care utilizatorul nu poate anticipa valorile ce urmeaz a fi preluate
n cadrul unui obiect de control se pot folosi urmtoarele controale:
- casete de text
- casete de editare
- casete combinate.
7.3.4.3. Utilizarea casetelor de introducere text (TextBox)
Casetele de text, reprezint unul din cele mai importante obiecte de interfa
utilizate n cadrul programelor de introducere date, deoarece permit preluarea
oricrui tip de date cu excepia celor de tip Memo i General. Prin intermediul
lor utilizatorul poate aduga sau modifica datele unor cmpuri din nregistrrile
unui tabel. Valoarea afiat n caset este stocat n variabila sau cmpul asociat
casetei definit prin proprietatea Control Source, ct i n zona aferent
proprietii Value aferent casetei.
112

7.3.4.4. Crearea unei casete de text


Crearea acestui obiect se face prin selectarea butonului aferent de pe bara cu
instrumente standard i trasarea cu mouse-ul a zonei ocupate de obiect pe
suprafaa formularului. Dup definirea obiectului se seteaz proprietile
acestuia i se definete coninutul metodelor asociate evenimentelor pentru
caseta de text.
O modalitate mai simpl de creare i configurare a proprietilor unei casete de
text o reprezint utilizarea instrumentului TextBox Builder. Lansarea acestuia
se poate face prin selectarea de pe bara de instrumente standard a pictogramei
aferente sau prin selectarea opiunii Builder din meniul Shortcut al obiectului.
7.3.4.5. Preluarea datelor cuprinse ntr-un interval dat (casete cu
butoane de incrementare-decrementare (Spinnere)
Prin utilizarea acestui obiect, utilizatorul are posibilitatea controlului asupra
datelor introduse n prelucrare, n sensul ncadrrii lor ntr-un anumit interval.
Acest obiect se folosete, n special, n cazul datelor numerice. Utilizatorul
poate alege valoarea de introdus, fie prin acionarea unor butoane, fie prin
tastarea valorii datei respective. Obiectul de tip Spinner apare ca i un cmp de
editare cu dou butoane, unul de incrementare, altul de decrementare, plasate n
partea dreapt a cmpului de editare (casetei).
Prin acionarea butonului de incrementare sau decrementare, cu ajutorul mouseului, are loc creterea sau descreterea valorii din cmpul de editare, cu o
valoare fix stabilit de utilizator. Valoarea minim i respectiv maxim a
cmpului de editare ct i cea cu care se modific cele dou valori se stabilesc la
proiectarea formului care conine obiectul de tip Spinner.
Acest obiect se poate utiliza pentru introducerea de date ntr-un cmp din cadrul
unei tabele, sau ar putea reprezenta valoarea indicatorului de nregistrri dintr-o
tabel, n vederea poziionrii pe nregistrarea respectiv, pentru modificare sau
tergere.
7.3.4.6. Butoane de comand (Command Button)
Butoanele de comand constituie unul dintre cele mai frecvent utilizate obiecte
de interfa care apar n cadrul unui form. Ele se afieaz pe ecran sub forma
unui dreptunghi tridimensional, coninnd n interiorul su un text sau o
imagine.
Textul scris pe buton se definete prin proprietatea Caption ca la orice obiect de
control, iar imaginea prin proprietatea Picture i reprezint un fiier .BMP sau
.ICO.

113

BAZE DE DATE

In cadrul unui formular se pot defini dou tipuri de butoane: simple i implicite.
La nivelul unui formular se poate defini un singur buton implicit i unul sau mai
multe butoane simple.
Butonul implicit este activat automat la apsarea tastei Enter sau spaiu,
indiferent de poziia cursorului. Pentru a defini un buton de tip implicit va trebui
ca proprietatea Default s aib valoarea adevrat (.T.). Pe ecran, un astfel de
buton apare cu marginea din dreapta i de jos ngroate. Prin apsarea tastei
Enter se va executa automat codul din cadrul metodei asociate evenimentului
Click a butonului respectiv.
Selectarea unui astfel de buton se realizeaz prin execuia unui clic pe butonul
respectiv. Evenimentul cel mai frecvent aferent unui astfel de control este Click
Event. Ca urmare, codul pentru aciunile de executat la activarea unui buton de
comand se introduc n metoda Click asociat evenimentului Click Event.

114

REZUMAT

Formularul poate fi considerat ca o fereastr avnd toate atributele


unei ferestre sub Windows: bara de titlu, caseta meniului de control,
butoane de minimizare, maximizare, nchidere. In plus, acestea
reprezint n Visual FoxPro un obiect avnd ca toate celelalte
obiecte, proprieti, metode i evenimente asociate. Acestea definesc
aspectul exterior al formulare i determin n acelai timp
comportamentul acestuia n diverse situaii.
Modaliti de creare a unui formular
Crearea unui formular se poate realiza n unul din urmtoarele
moduri:
- prin intermediul comenzilor limbajului Visual FoxPro
- prin intermediul utilitarului Form Designer
- prin intermediul utilitarului Form Wizard
Adugarea obiectelor la un formular
Pentru ca un formular s poat fi rulat i s execute o anumit
prelucrare (ncrcarea unui tabel cu date sau actualizarea unui tabel
etc.) acesta trebuie s conin diferite controale sau obiecte de
control cu proprietile configurate i codul surs asociat
evenimentelor.
La un formular se pot aduga: controale, containere, clase definite
de utilizator i obiecte OLE. Containerele sunt obiecte care pot
conine alte containere sau controale. Astfel, un formular ca i
container poate conine diferite controale (butoane de comand,
casete de validare etc.) Controalele pot face parte din containere, dar
nu pot conine alte obiecte, adic nu pot fi printe pentru alte
obiecte.
Pentru a aduga un control ntr-un formular se folosete bara cu
instrumente Form Controls. Dac acesta nu este deschis i afiat
pe ecran, pentru a o deschide se selecteaz din meniul View
opiunea Form Controls Toolbar. Bara Form Controls, ca de altfel
toate barele de instrumente, este mobil ; prin urmare ea poate fi
deplasat pe ecran n locul dorit. De obicei, aceasta se plaseaz n
marginea ecranului pentru a rmne liber suprafaa formularului.
Prin plasarea barei pe marginea ecranului aceasta se transform ntro linie vertical sau orizontal, operaia de mutare fiind numit
ancorare.
Fereastra Properties
Fereastra Properties este comun formularului i tuturor obiectelor
115

BAZE DE DATE

din formular creat cu Visual FoxPro. Cu ajutorul acestei ferestre


vizualizm i configurm proprietile i metodele formularului i
ale obiectelor din formular pe toat durata proiectrii acestuia. La
deschiderea unui formular, fereastra Properties va afia proprietile
i metode aferente formularului. Pentru a edita sau modifica aceste
proprieti ale formularului sau ale unui alt obiect inclus n formular
se va selecta obiectul din caseta Object.
Configurarea proprietilor i metodelor unui formular
n
timpul proiectrii
Fereastra Properties afieaz la deschidere proprietile i metodele
obiectului curent selectat. Pentru a edita proprietile sau metodele
altui obiect, mai nti se va selecta obiectul respectiv n caseta
Object. In cadrul ferestrei Properties se va selecta apoi proprietatea
sau metoda ce urmeaz a fi modificat din lista Property and
Events i se tasteaz noua valoare n cutia de editare Property
Setting n cazul unei proprieti.
Scrierea codului pentru evenimentele/metodele unui
formular
Fiecare obiect se caracterizeaz prin atributele stare i
comportament. Starea unui obiect se definete prin proprietile
sale, iar comportamentul prin metodele pe care pe poate executa i
evenimentele la care poate rspunde.
Pentru a ataa cod n cadrul unei metode aferent unui obiect, se
selecteaz mai nti obiectul, iar n pagina Methods din fereastra
Properties se vor afia toate metodele i secvenele asociate
obiectului respectiv, fiecare cu valoarea [Default], ceea ce nseamn
c fereastra de cod a metodei respective este vid .
Pentru a deschide fereastra de cod a obiectului selectat se execut
dublu clic pe metoda respectiv sau se selecteaz opiunea Code din
meniul shortcut al formularului sau din submeniul View.
Principalele evenimente i metode la nivel de formular
Principalele metode asociate comportamentului unui formular i
obiectelor incluse n formular sunt urmtoarele:
1. Init; aceast metod este apelat la crearea formularului avnd
rolul de iniializare a acesteia.
2. Load; este apelat imediat dup crearea unui formular, dar
naintea metodei Init i altor metode.
3. Unload; este apelat la terminarea programului i permite
116

transmiterea parametrilor din cadrul formularului ctre programul


apelant prin comanda RETURN.
4. Show; permite afiarea pe ecran a unei formulare anterior creat .
5. GotFocus; trecerea controlului de la un formular la altul.
6. SetFocus; permite transferul controlului de la un formular la altul.
7. Valid; este una din metodele frecvent utilizate i permite execuia
unei secvene de comenzi la trecerea de la un obiect la altul n cadrul
formularului.
8. Refresh; conine comenzi pentru remprosptarea valorii
obiectelor din cadrul formularului ca urmare a unor modificri
efectuate cu aceste valori.
9. Release; se apeleaz la terminarea programului i are rolul de a
descrca (terge) formularului din memorie.
10. Click; este de asemenea una dintre metodele cel mai frecvent
utilizate, fiind asociat att butoanelor de comand ct i cmpurilor
de preluare date din cadrul unui formular
11. Relaionarea tabelelor din baza de date
In Visual FoxPro relaiile pe care le crem ntre tabele cu ajutorul
Constructorului bazei de date (Database Designer) se numesc relaii
persistente. In afara acestora se pot defini i relaii temporare sau
dinamice prin comenzi introduse n programele de prelucrare. Ca
urmare relaiile temporare sunt disponibile numai n momentul
rulrii programului n care au fost definite dup care ele nu mai
exist.
Tabelele ntre care se creeaz o relaie se numesc: tabel principal
sau printe i respectiv tabel secundar sau fiu.
Intre cele dou tabele se pot defini urmtoarele tipuri de
relaii:
- relaie una-la-una; prin care unei nregistrri din tabela printe i
corespunde o singur nregistrare n tabela fiu (copil);
- relaii una-la-mai-multe; prin care unei nregistrri din tabela
printe i corespund mai multe nregistrri n tabela copil;
- relaie mai-multe la-una; prin care pentru o nregistrare n tabela
copil putem avea mai multe nregistrri n tabela printe;
- relaie mai-multe-la-mai-multe; prin care unei nregistrri din
tabela printe i pot corespunde mai multe nregistrri n tabela
copil i invers adic unei nregistrri din tabela copil i pot
corespunde mai multe nregistrri n tabela printe.
12. Asigurarea integritii datelor din tabelele legate ntre ele
prin relaii permanente
Printre mecanismele care asigur integritatea bazei de date se
numr i cele privind integritatea entitilor i integritatea
117

BAZE DE DATE

referenial.
Integritatea entitilor este implementat prin specificarea n
cadrul unei tabele, a faptului c nu pot accepta valori nule cmpurile
care reprezint chei primare.
13. Integritatea referenial (referenial integrity-RI) definete un
ansamblu de reguli, care permit menionarea integritii datelor din
tabelele legate ntre ele, la operaiile de modificare, adugare i
tergerea datelor din tabelele respective, astfel nct s nu existe
nregistrri neparticipante la relaie. Implementarea acestor reguli
ntre tabele se realizeaz prin intermediul unor restricii numite
restricii pentru integritate referenial (RI constraints).
14. Specificarea restriciilor de integritate referenial i generarea
automat a procedurilor aferente se realizeaz prin intermediul
Generatorului de Integritate Referenial (Referential Integrity
Builder). Aceasta permite, de asemenea, precizarea tabelelor printe
i fiu din cadrul unei relaii i a evenimentelor din sistem care impun
mediului Visual FoxPro s verifice regulile definite.
1. Se vor elabora programe de folosire a comenzilor de
TEME
implementare a structurilor de control i a comenzilor de
CONTROL
intrare/ieire;
2. Se vor elabora programe de creare i utilizare a clasei form i a
obiectelor de tip buton de comand.
BIBLIOGRA 1. Avram-Nichi R., Ghioiu N., Goron S., Nichi St., Tomai N.
Baze de date i programarea calculatoarelor utiliznd limbajul
FIE
Visual FoxPro, Ed. Risoprint, Cluj-Napoca, 2003, pg. 259-307.
2. Marian Cristescu, Baze de date utilizate n mediul economic,
Editura ALMA MATER, Sibiu, 2007, pg. 286-297
3. Gabriel Dima ,Mihai Dima, Bazele Visual FoxPro 5.0, Editura
Teora ,Bucuresti,1999, pag . 205-308.
4. Marin Fotache,Ioan Brava, Ctlin Strmbei, Liviu Creu, Visual
FoxPro; Ghidul dezvoltrii aplicaiilor profesionale, Editura Polirom
Iai, 2002, pag. 253-286.
5. Manole Velicanu, Ioan Lungu, Mihaela Muntean, Dezvoltarea
aplicaiilor cu baze de date n Visual FoxPro, Editura All, Bucureti,
2001, pag. 240-277.
6. Paul Petru, Visual FoxPro 5.0, Editura Promedia, Cluj, 1999,
pag. 280-408.
7. Nicolae Ghioiu, Visual FoxPro; Exerciii i programe, Editura
Risoprint Cluj, 2003, pag. 70-82.

118

8. RAPOARTE I MENIURI

Raport din punct de vedere conceptual


Componentele unui raport n VFP
Controalele raportului
Constructorul de rapoarte
Gestiunea rapoartelor (creare, modificare, exploatare
i tergere)
- Asisteni pentru gestiunea rapoartelor i utilizarea lor;
- Meniuri i rolul lor;
- Fereastra constructorului de meniuri;
- Opiunile posibile la generarea meniurilor i
submeniurilor;
- Crearea i modificarea meniurilor;
- Exploatarea meniurilor.
1. Familiarizarea cu semantica general legat de
OBIECTIVE
rapoarte.
2. Familiarizarea cu structura rapoartelor din Visual
FoxPro.
3. Formarea deprinderilor de creare i utilizare a
rapoartelor.
4. Familiarizarea cu noiunea de meniu i elementele sale
componente
5. Crearea abilitii de creare i utilizare meniurilor n
Visual FoxPro.
RECOMANDRI 5. Se vor proiecta din punct de vedere conceptual machete
de rapoarte i de meniuri.
PRIVIND
6. Se vor studia cu atenie constructorii celor dou
STUDIUL
categorii.
7. Se vor crea diferite rapoarte i meniuri pentru aplicaii
economice.
8. Se vor testa operaiile i opiunile referitoare la
managementul celor dou categorii.
Dup parcurgerea acestui modul utilizatorul trebuie s fie
REZULTATE
n msur s defineasc i foloseasc corect rapoartele i
ASTEPTATE
meniurile i s implementeze pe baza lor aplicaii
complexe din informatica economic i de afaceri.

CONCEPTE
DE BAZA

119

BAZE DE DATE

8.1. RAPOARTE N VISUAL FOXROO


OBIECTIVE

NOIUNI
CHEIE

1. Familiarizarea cu semantica general legat de rapoarte.


2. Familiarizarea cu structura rapoartelor din Visual
FoxPro.
3. Formarea deprinderilor de creare i utilizare a
rapoartelor
- Raport
- Componentele unui raport n VFP
- Controalele raportului
- Asisteni i utilizarea lor

n literatura de specialitate exist definiii mai mult sau mai puin formalizate
ale acestui obiect.
Raport prezentarea informaiilor referitoare la o anumit tem. efectuat
obicei ntr-o form tiprit. Programele de baze de date pot oferi funcii
speciale de creare i generare de rapoarte [Microsoft99].
Raportul este o extragere a datelor din baza de date. El poate fi tiprit pe
ecranul calculatorului, sau pe orice alt dispozitiv de ieire [Kroenke92].
Orice raport are ataate 2 fiiere. O tabel sistem special cu extensia .FRX, n care sunt
memorate specificaiile raportului, adic caracteristicile raportului i elementele sale
componente. Acest fiier este interpretat de un modul al SGBD pentru afiarea raportului
respectiv.
Pentru orice raport avem dou momente im portante:

crearea machetei raportului (simplist crearea raportului);


exploatarea acestei machete (vizualizarea raportului).
8.1.1. Structura unui raport
Structura rapoartelor difer n principiu, n funcie de formatul de afiare al datelor i de
complexitatea acestuia. Datele pot fi afiate n raport, pe linii, pe coloane sau combinat, n
funcie de domeniul pentru care se elaboreaz raportul. In ceea ce privete complexitatea
rapoartelor, unele pot afia date dintr-o singur tabel, altele din mai multe tabele. De
asemenea, n cadrul unui raport, datele din tabele pot fi grupate pe niveluri, conform unor
criterii de grupare definite de utilizator. In acest caz, pentru fiecare nivel de grupare se pot
defini nregistrri totalizatoare ( totaluri pentru anumite coloane sau cmpuri) ct i un total
general, la nivelul ntregului raport.

120

In Visual FoxPro, rapoartele reprezint un obiect de tip Report. Din acest


punct de vedere, el are o structur compus din dou pri:
1. Mediul de date asociat raportului (Data Environment) unde se definesc
datele aferente raportului sub forma de tabele.
2. Structura de afiare; conine benzile sau zonele care compun raportul i
obiectele Structura de date ; include datele aferente raportului i este
reprezentat prin incluse n raport, prin care se realizeaz legtura cu sursa
de date.
8.1.2. Crearea unui raport
Elaborarea unui raport se realizeaz pe etape, astfel:
1. Conceperea proiectului de raport.
2. Definirea structurii de date, respectiv precizarea tabelei sau tabelelor din
care se preiau datele de afiat.
3. Lansarea generatorului de rapoarte (Report Designer) prin care se
afieaz pe ecran macheta de raport. Raportul astfel obinut este vid.
Crearea unui raport se poate realiza i cu instrumentul Report Wizard.
4. Definirea sursei de date a raportului.
5. Includerea n raport a obiectelor necesare, pentru a face legtura cu sursa
de date.
6. Salvarea i previzualizarea raportului.
8.1.2.1. Crearea unui raport cu utilitarul Report Designer
Pentru a crea un raport vid (fr nici un obiect inclus n el) se pot folosi
urmtoarele variante:
1. se selecteaz din meniul File opiunea New, iar din fereastra New, butonul
radio Report i apoi butonul de comand NewFile.
2. din fereastra Project Manager se selecteaz pagina Documents i apoi
seciunea Reports. Se selecteaz apoi butonul New, care determin afiarea
pe ecran a ferestrei New Report din care se selecteaz butonul cu acelai
nume. Dac vrem s crem raportul cu utilitarul Wizard se va selecta
butonul Report Wizard.
3. prin utilizarea comenzii
CREATE REPORT <nume-raport>

Sintaxa general a comenzii CREATE REPORT este:


CREATE REPORT [nume_raport | ?] [NOWAIT] [SAVE]
[WINDOW Fereastr1] [IN [WINDOW] Fereastr2 | IN SCREEN
8.1.2.2. Fereastra constructorului de rapoarte

121

BAZE DE DATE

Ca urmare a folosirii uneia din cele 3 modaliti de lansare a constructorului de


rapoarte, pe ecran se va afia fereastra constructorului de rapoarte cu titlul
Report Designer-Report1 i bara cu obiecte de control (ReportControl), iar la
meniul sistem se adaug submeniul Report. Suprafaa ferestrei este mprit n
zone sau benzi, al cror numr depinde de complexitatea raportului. Benzile
raportului difer ntre ele, att din punct de vedere al semnificaiei acestora, ct
i din punct de vedere al frecvenei cu care sunt afiate datele benzii respective.
Astfel, va exista o band care va conine titlul raportului i care va apare o
singur dat pe prima pagin, o band cu datele raportului, care va apare de
attea ori cte nregistrri se vor afia n raport, o band de sfrit de pagin, etc.
In mod implicit, la afiarea ferestrei Report Designer, aceasta conine 3 benzi,
cu urmtoarele denumiri i semnificaii:
Page Header; conine antetul de pagin, care se va afia la nceputul fiecrei
pagini din raport. In cadrul antetului de pagin se include denumirea coloanelor
raportului i eventual data curent.
Detail; reprezint zona principal a raportului, n care se vor afia datele
aferente raportului, respectiv nregistrrile din tabela folosit ca surs de date.
Fiecare nregistrare din tabel va ocupa o linie n cadrul acestei zone.
Page Footer; reprezint zon de sfrit de pagin, unde se poate afia numrul
de pagin.
In mod suplimentar, la raport se mai pot aduga i alte benzi, ca urmare a selectrii unor
opiuni din meniul Report. Aceste benzi sau zone sunt urmtoarele:

Tip band
Title

Frecvena de afiare
Mod de afiare
- o singur dat pe raport, - prin selectarea opiunii
pe prima pagin
Title/Summary din meniul
Report
o
dat
pe
coloan
- prin selectarea opiunii
Column
PageSetup din meniul File
Header
- prin selectarea opiunii
Group Header - o singur dat pe grup
Grouping din meniul Report
- prin selectarea opiunii
Group Footer - o singur dat pe grup
Grouping din meniul Report
- o dat pe coloan
- prin selectarea opiunii
Column
PageSetup din meniul File
Footer
- o dat pe raport
- prin selectarea opiunii
Summary
Title/Summary din meniul Report
Semnificaia acestor benzi este urmtoarea:
1. Title/Summary; Banda Title conine titlul raportului i alte informaii
suplimentare cum ar fi: sigla firmei i eventual antetul de tabel, dac acesta
122

2.

3.

4.

5.

nu a fost inclus n antetul de pagin. Aceast band se afieaz prin


selectarea opiunii Title/Summary din meniul Report. Ca efect pe ecran
apare fereastra Title/Report cu cele dou opiuni: Title i Summary. Fiecare
din cele dou comutatoare au asociat un alt comutator numit NewPage, la
activarea cruia banda respectiv se va afia pe o pagin nou.
Group Header; include cmpul dup care se realizeaz gruparea datelor n
raport i se afieaz o dat pentru fiecare grup. Pentru includerea benzii n
raport se va selecta opiunea Data Grouping din meniul Report. Banda se
poate afia numai dac s-a realizat n prealabil gruparea datelor.
Group Footer; include informaii referitoare la sfritul de grup, respectiv
totaluri la nivel de grup i explicaiile necesare. Banda se afieaz prin
selectarea opiunii Data Grouping din meniul Report.
Column Header; conine antetul de coloan i se poate afia numai dac
raportul conine cel puin dou coloane. Setarea numrului de coloan se
face prin selectarea opiunii Column Number din fereastra Page Setup,
fereastr care se afieaz prin selectarea opiunii cu acelai nume din meniul
File
Column Footer; conine informaii privind sfritul de coloan i se
afieaz dup selectarea numrului de coloane (cel puin dou) din fereastra
Page Setup.
8.1.3. Proprieti ale benzilor i raportului

1. Fiecare band va afia n raportul final un numr de instane ale sale n


funcie de tipul de band.
2. Fiecare zon sau band a raportului are n fereastra constructorului de
rapoarte asociat o bar prin care se delimiteaz de alte zone. Fiecare bar
sau zon a raportului are anumite proprieti, care pot fi modificate de
utilizator. Pentru a se seta aceste proprieti se face un dublu clic pe bara
delimitatoare a benzii dorite, avnd ca efect afiarea pe ecran a unei ferestre
cu titlul benzii respective.
3. Toate ferestrele aferente unei benzi au aceeai structur, doar denumirea
acestora difer n funcie de tipul benzii la care se refer. In cadrul ferestrei
aferent unei benzi se poate seta nlimea benzii prin intermediul unui
obiect de tip Spinner cu denumirea Hight sau se poate seta aceeai
dimensiune pentru toate instanele unei benzi tot prin intermediul unui
spinner cu numele Constant band height.
4. De asemenea, la afiarea unei instane a unei benzi se pot specifica anumite
prelucrri pentru dou evenimente aferente unei instane, astfel:
a) nainte de afiarea fiecrei instane a benzii se poate evalua o expresie
introdus n caseta On Entry. Dac expresia este mai complex, poate fi
123

BAZE DE DATE

construit i specific n fereastra Expression Build care se deschide prin


selectarea butonului cu trei puncte din dreapta casetei On entry.
b) dup fiecare afiare a instanei unei benzi se poate evalua o expresie
introdus n caseta On exit sau n fereastra Expression Build.
In afar de proprietile aferente benzilor, un rol important l au proprietile
aferente raportului n ansamblul su, care se refer la:
-

mrimea paginii pe care se va afia raportul


orientarea paginii
marginile exterioare ale paginii
limea coloanelor i spaiile dintre ele n cazul unui raport
multicoloan
- tipul de imprimant n cazul tipririi raportului la imprimant.
Pentru a seta aceste proprieti se afieaz pe ecran fereastra Page Setup, prin
selectarea opiunii cu acelai nume din meniul File
Prin selectarea butonului Print Setup se afieaz pe ecran o fereastr n care se
poate seta tipul de imprimant, dimensiunea hrtiei utilizate la imprimare i
orientarea acesteia (Portrait sau Landscape).
8.1.4. Adugarea de controale n cadrul unui raport
Toate informaiile afiate n cadrul unui raport sunt specificate prin intermediul
unor obiecte. Aceste obiecte se pot include n cadrul unui raport, prin preluarea
lor din bara Report Controls, care se afieaz pe ecran odat cu lansarea
constructorului de rapoarte.

Bara Report Controls conine 6 tipuri de controale. De asemenea, pe


bara cu instrumente se mai gsete butonul Lock care blocheaz
fiecare control selectat, pentru a permite crearea automat a mai
multor instane ale obiectului respectiv, ct i butonul cu sgeat
nclinat spre stnga, care permite selectarea unuia sau mai multor
obiecte din benzile raportului.
Pentru includerea unui obiect n raport, se selecteaz obiectul dorit din
bara Report Controls i se execut un click pe suprafaa raportului,
unde dorim s apar obiectul respectiv. Ca efect pe ecran se afieaz:
- fereastra Report Expresion; dac s-a selectat obiectul Field
- fereastra Report Picture; dac s-a selectat obiectul
Picture/OLE
124

- obiectul selectat; dac s-a selectat LINE RECTANGLE,


ROUNDED RECTANGLE
- cursorul, dac s-a selectat obiectul Label.
Dup includerea n raport a unor controale, n funcie de
compelxitatea acestuia, utilizatorul poate modifica proprietile
oricrui control, prin efectuarea unui dublu clic pe controlul respectiv.
Aa cum rezult din structura barei Report Controls, n raport se pot
include trei categorii de obiecte:
- blocuri de text
- cmpuri
- obiecte grafice (linii, dreptunghiuri, imagini).
Semnificaia acestora este urmtoarea:
8.1.4.1. Controlul LABEL

Acest control permite inserarea de texte (iruri de caractere) n cadrul


raportului. Prin folosirea acestui obiect se poate, de exemplu, scrie
titlul raportului, antetul de pagin, alte explicaii necesare n funcie
de structura raportului. Prin execuia unui dublu clic pe textul existent
n raport, se afieaz pe ecran fereastra Text.
Caseta Object Position permite stabilirea poziiei textului referitor la marginile
benzii, iar butonul Print When permite afiarea textului la care se refer
numai dac expresia introdus n fereastra Print Wheneste adevrat. Ca
urmare, n funcie de valoarea unei expresii care se poate referi la cmpuri din
tabela surs, putem afia sau ascunde un anumit text.
Pentru scrierea titlului unui raport, dup afiarea n raport a benzii Title, prin
selectarea opiunii Title Summary din meniul Report, se procdeaz astfel:
- se selecteaz obiectul Label i se execut un clic pe band n locul de unde
ncepe introducerea titlului
- se introduce titlul prin tastare
- se aranjeaz formatul titlului (font, stil, dimensiune, caractere) prin
intermediul opiunii Font din meniul Format
- se stabilete culoarea cu care dorim s scriem textul prin intermediul barei
Color Pallete, de unde se selecteaz Foreground i apoi culoarea dorit
- se poate ncadra titlul ntr-un dreptunghi prin selectarea obiectului Rectangle
din bara Report Controls.
8.1.4.2. Controlul FIELD
Prin includerea acestui obiect ntr-un raport se realizeaz afiarea datelor din
cmpurile unui tabel n raportul respectiv. Aceste date pot fi de orice tip, mai
puin cele de tip General. Prin urmare, pentru a afia coninutul unui cmp dintr125

BAZE DE DATE

un tabel n raport, va trebui s includem n raport un obiect de tip Field aferent


cmpului respectiv n care se va transfera informaia din tabel ,pentru afiare.
Expresiile pot conine combinaii de cmpuri sau funcii utilizator. Astfel,
pentru afiarea n raport a datei curente se va folosi funcia DATE(), iar pentru
afiarea numrului de pagin n raport, se va folosi variabila de sistem
PAGENO_.
8.1.4.3. Adugarea unui cmp la raport
Dup selectarea obiectului Field, din bara ReportControl, se execut un click pe
suprafaa raportului, unde dorim s fie afiat obiectul respectiv. Ca efect, pe
ecran apare mai nti fereastra Report Expression, aferent cmpului respectiv,
unde se pot seta proprietile acestui obiect astfel :
1. n caseta de editare Expression, se introduce sursa de date a cmpului,
respectiv o expresie ce urmeaz a fi evaluat pentru fiecare apariie a benzii.
2. n caseta Format, se introduce formatul de afiare pentru cmpul specificat
n Report Expression, sub forma unui ir de caractere n funcie de tipul
cmpului respectiv.
3. n seciunea Field Position, se definete poziia cmpului, referitor la banda
n care este inclus, prin intermediul opiunilor:
Float; poziie mobil a cmpului n funcie de dimensiunea obiectelor
deinute deasupra lui.
Fix relativ to top of band ; poziie fix fa de marginea superioar (de
sus) a benzii
Fix relativ to bottom of band; poziie fix fa de marginea inferioar
(de jos) a benzii
4. cu comutatorul Stretch With Overflow; se permite extinderea n funcie d
coninutul sursei de date (la cmpurile Memo).
5. n caseta Comment; se pot introduce diverse comentarii, care nu se vor
afia n raport. Ele se pot referi la tipul datelor aferente cmpului respectiv,
la modul d afiare n raport a acestora, etc.
6. butonul Calculation ; permite deschiderea unei ferestre numit Calculate
Field, unde se pot seta prin intermediul unor opiuni modalitate de calcul
pentru cmpul respectiv, cum ar fi : suma valorii datelor din cmp, media
aritmetic, numrare nregistrri, valoarea minim sau maxim.
7. butonul Print When ; permite deschiderea unei ferestre cu acelai nume, n
care se pot preciza condiiile de afiare u unui cmp, astfel :
seciunea PrintRepeatedValues permite afiarea sa suprimarea afirii
de valori consecutive care se repet, pentru un anumit cmp prin
intermediul butoanelor radio Yes sau No ;
comutatorul Removeline if Blank ; permite, dac este selectat,
eliminarea din raport a liniilor goale (cu toate cmpurile vide);

126

n caseta Print Only Expression is True; se introduce o expresie care se


evalueaz i numai dac este adevrat se afieaz coninutul cmpului
respectiv.
In cadrul ferestrei se selecteaz fereastra DATE( ), cu dublu clic, din lista Date,
funcie care va apare i n caseta Expression for Field on Report, dup care se
acioneaz butonul OK. Ca efect se revine n fereastra Report Expression unde
apare funcia DATE( ) n caseta Expression, dup care se acioneaz butonul
OK. Ca urmare, se deschidere fereastra Report Expression, iar n raport n banda
aferent apare cmpul aferent datei curente astfel: DATE( ). In mod similar se
procedeaz la afieaz numrului de pagin, folosind n acest caz variabila de
sistem _PAGENO
8.1.4.4. Controalele
RECTANGLE

LINE,

RECTANGLE

ROUNDED

Aceste controale servesc pentru includerea n raport a unor forme geometrice, astfel:

controlul LINE include n raport linii orizontale sau verticale;


controlul Rectangle permite includerea n raport a unor chenare de form
dreptunghiular;
controlul Rounded Rectangle include n raport cercuri ovale sau
dreptunghiuri cu colurile rotunjite.

Rezult c, prin intermediul acestor controale putem mbunti aspectul unui raport prin
includerea titlului raportului i a antetului de pagin ntr-un dreptunghi sau prin sublinierea
unor texte, etc.

Dup selectarea unuia din cele trei obiecte de pe bara Report Controls se mut
cursorul pe suprafaa raportului i se deseneaz obiectul selectat la mrimea
dorit de utilizator, sau se execut un clic n raport n locul unde dorim s apar
obiectul, avnd ca efect afiarea n raport a obiectului respectiv.
Pentru a seta proprietile obiectului, se execut un dublu-clic pe obiect, fapt ce
determin afiarea pe ecran a ferestrei Rectangle/Line pentru obiectele Line
sau Rectangle i a ferestrei Rounded Rectangle pentru obiectul Rounded
Rectangle.
8.1.4.5. Controlul PICTURE/OLE BOUND CONTROL
Prin utilizarea acestui control, se poate include ntr-un raport o imagine preluat
dintr-un fiier de tip Bitmap cu extensia .MBP sau .ICO. De obicei aceste
imagini se introduc n banda de titlu sau de antet de pagin i pot reprezenta
sigla firmei, care elaboreaz raportul.
Aceste imagini odat introduse n raport nu se modific odat cu trecerea de la o nregistrare
la alta. Dac dorim s apar cte o imagine pentru fiecare nregistrare va trebui ca tabela de

127

BAZE DE DATE

date s conin un cmp de tip General, care s apar n raport i n care se introduce obiectul
de tip OLE.

Pentru includerea n raport a unui obiect de tip PICTURE, se selecteaz obiectul


din bara Report Controls i se face un clic pe suprafaa raportului unde dorim s
apar imaginea. Ca efect, pe ecran apare fereastra Report Picture.
In cadrul acestei ferestre, se selecteaz mai nti butonul radio File din zona
Picture from, iar n caseta aferent se introduce calea de acces ctre fiierul
Bitmap. Dac nu se cunoate calea de acces se poate selecta imaginea din
fiierele ce apar n fereastra Open care se deschide prin acionarea butonului cu
trei puncte din dreapta casetei File.
Pentru introducerea n raport a unui obiect de tip General, n fereastra Repoart
Picture se selecteaz butonul radio Field n loc de File, iar n caseta aferent se
introduce numele cmpului din tabela selectat.
8.1.4.6. Ajustarea controalelor unui raport
Principalele operaii privind ajustarea controalelor unui raport, se refer la :

redimensionare ;
copiere ;
mutare ;
tergere ;
aliniere ;

Din meniul View, iar pentru alinierea manual opiunea Snap to Grid din meniul Format prin
care la mutarea unui obiect se ine cont de ptrelele de pe suprafaa raportului.

- schimbare tip caractere ;


- schimbarea culorii ;
8.1.5. Crearea unui raport cu ajutorul asistenilor
8.1.5.1. Folosirea utilitarului Quick Report

Pentru popularea unui raport cu date luate direct din tabela definit ca surs de
date a raportului, se folosete utilitarul Quick Report care este o aplicaie de tip
Builder. Lansarea utilitarului se face prin selectarea opiunii Quick Report din
meniul Report, dup crearea unui raport vid cu Report Designer.
Prin urmare, dup afiarea pe ecran a ferestrei Report Designer, reprezentnd meniul vid, se
va selecta opiunea Quick Report din meniul Report. Ca efect, pe ecran va apare fereastra
Quick Report.

Dac n momentul lansrii utilitarului Quick Report, nu este deschis nici un


tabel, care s reprezinte sursa de date a raportului ce va fi creat, pe ecran se
128

afieaz mai nti fereastra Open, din care se va selecta tabela dorit dup care
se va afia fereastra Quick Report.
In funcie de opiunile selectate din aceast fereastr va fi creat un raport
corespunztor. In acest scop se selecteaz mai nti din tabela care reprezint
sursa de date, cmpurile care urmeaz a fi afiate n raport, prin acionarea
butonului de comand Fields Ca efect pe ecran se deschide fereastra Field
Picher. In cadrul acestei ferestre, se selecteaz cmpurile dorite din seciunea
All Fields prin mutarea lor n seciunea Selected Fields i se acioneaz butonul
OK, avnd ca rezultat revenirea n fereastra Quick Report.
Dup stabilirea cmpurilor ce urmeaz a fi afiate se va stabili poziia acestora
n raport, adic pe orizontal sau vertical, prin selectarea celor dou butoane
aferente, din seciunea Field Layout.
In fereastra Quick Report se mai gsesc trei comutatoare cu urmtoarea
semnificaie:
- Titles; afieaz denumirea cmpurilor n banda de antet de pagin ;
- Add Alias ; adaug aliasul tabelului la denumirile cmpurilor ;
- Add Table ; adaug tabelul n fereastra Data Environment.
Dup selectarea acestor opiuni, prin acionarea butonului OK, are loc ieirea
din fereastra Quick Report, iar pe ecran se afieaz structura noului raport care
conine:
- banda de antet de pagin cu denumirea cmpurilor ce vor fi afiate ;
- banda Detail cu cmpurile aferente ;
- banda de sfrit de pagin unde se include automat data curent i
numrul de pagin.
8.1.5.2. Crearea unui raport cu Report Wizard
Crearea unui raport prin utilizarea utilitarului Report Wizard, presupune
parcurgerea
urmtoarelor etape:
- se lanseaz utilitarul Report Wizard i se selecteaz apoi tipul de
raport
- se parcurg cei ase pai solicitai de Report Wizard pentru a ajunge la
forma final a raportului.
8.1.5.3. Lansarea generatorului Report Wizard
Pentru lansarea generatorului Report Wizard se selecteaz din fereastra Project
Manager pagina Documents i apoi butonul New. Din fereastra New Report
care se afieaz pe ecran se selecteaz butonul Report Wizard care determin
afiarea pe ecran a ferestrei Wizard Selection.
O alt modalitate de lansare a generatorului Report Wizard const n selectarea
din meniul File a opiunii New. Din fereastra New, care apare pe ecran se va
selecta butonul radio Report i apoi butonul de comand Wizard, avnd ca efect
129

BAZE DE DATE

afiarea pe ecran a ferestrei Wizard Selection i se urmeaz paii indicai de


acesta.
8.1.6. Mediul de date al unui raport
8.1.6.1. Componenta Data Environment
Datele afiate n cadrul unui raport se preiau din diferite tabele, care reprezint
sursa de date a raportului. Aceste date, mpreun cu anumite variabile utilizate
n raport, alctuiesc mediul de date al raportului. Acesta reprezint n Visual
Foxpro un obiect real, n sensul programrii orientate pe obiecte, adic are
ataate anumite proprieti i metode.
Mediul de date se definete n fereastra Data Environment unde se pot include tabelele i
vederile necesare construirii unui raport. Afiarea ferestrei Data Environment, se poate
realiza n unul din urmtoarele moduri:

a. prin selectarea opiunii Data Environement din meniul View


b. prin selectarea opiunii Data environment din meniul shortout al ferestrei
Report Designer.
c. prin selectarea pictogramei aferente ferestrei, din bara cu instrumente Report
Designer.
Spre deosebire de obiectele din raport, cele din fereastra Data Environement, sunt obiecte
reale, n sensul c au ataate proprieti, rspund la anumite evenimente i execut secvene
de cod din metodele aferente.

Ca urmare, utilizatorul poate introduce cod (secvene de instruciuni) n cadrul


unor metode pentru evenimentele care nsoesc datele raportului. Proprietile,
metodele i evenimentele asociate mediului de date, se pot vedea n fereastra
Properties afiat prin fereastra opiunii Properties din meniul shortcut al
ferestrei Data Environment, sau din meniul shortcut al unei tabele din cadrul
ferestrei Data Environment.
De asemeni aceast component (fereastra Data Environment) realizeaz toate
operaiile legate de gestiunea datelor necesare raportului astfel:
- deschide tabelele aferente raportului existente n fereastra Data Environment,
la lansarea n execuie a raportului;
- aduce n raport datele necesare din tabele;
- nchide tabelele la terminarea execuiei raportului.
Pentru includerea n fereastra Data Environment a tabelelor necesare unui raport se pot folosi
urmtoarele modaliti de lucru:

- se face drag-drop cu tabelul dorit din fereastra Project Manager n fereastra


Data Environment;

130

- se selecteaz opiunea Add din meniul data Environment sau din meniul
shortcut al ferestrei Data Environment. Ca efect pe ecran apare fereastra
Add Table or View, din care se selecteaz baza de date i tabela necesar.
Dup adugarea tabelelor n cadrul ferestrei Data Environment, se stabilete
indexul care se acceseaz datele din tabel pentru a fi aduse n raport. In acest
scop, n fereastra Proprerties se selecteaz proprietatea Order, reprezentnd
ordinea de indexare, pentru tabelul respectiv i se introduce n caseta aferent un
nume de index sau se alege un index din lista de indeci a tabelei. Dup
indexare, n fereastra Database Designer, se poate defini o relaie temporar
ntre 2 tabele prin operaia drag-drop a cheii primare, la cheia extern din
tabela fiu.
8.1.6.2. Sursa de date a unui raport

1.
2.

3.
4.

5.

Sursa de date a unui raport se poate defini n mai multe moduri, astfel:
prin includerea tabelelor necesare raportului n fereastra Data Environment;
prin folosirea unei fraze SELECT din SQL, inclus ntr-un program simplu,
alturi de comanda de previzualizare a raportului. In fraza SELECT, se
specific prin opiunea INTO CURSOR <nume_tabel>, numele unei tabele
temporare care va conine datele necesare raportului,.
prin includerea frazei SELECT n metoda aferent environementului INIT a
containerului Data Environment aferent raportului
prin definirea unui program simplu n care se introduce comenzi pentru
deschiderea bazei de date, a tabelului, utilizate n raport, setarea indexului
aferent tabelului surs i lansrii n execuie a raportului
prin includerea comenzilor de deschidere a bazei de date i tabelelor aferente
raportului n metoda evenimentului clic asociat unui buton de comand de
lansare n execuie a raportului.
8.1.6.3. Gruparea datelor n rapoarte

In practic, foarte frecvent rapoartele trebuie s conin informaii privitoare la grupe de


articole din tabelele de date pentru care sunt ele elaborate, grupele respective formndu-se pe
anumite criterii. Fiecare criteriu de grupare este descris printr-o expresie pe care o numim
expresie de grupare sau cheie de grupare; ea conine unul sau mai multe cmpuri ale tabelei
de date pentru care se elaboreaz raportul. Acele instane pentru care expresia de grupare are
aceeai valoare, alctuiesc un grup. Deci, ntr-un raport cu datele grupate dup o cheie de
grupare, exist attea grupuri cte valori distincte are cheia de grupare respectiv. n
exemplul anterior, de cate ori se schimb valoarea cheii care descrie anul se schimb grupul.
131

BAZE DE DATE

Gruparea datelor se poate realiza pe un nivel sau pe mai multe nivele de


grupare. In general, n Visual FoxPro numrul nivelelor de grupare nu este
limitat. In cazul gruprii datelor, raportul va conine pe lng benzile care s-a
vzut deja c le poate conine un raport, i benzile pentru gruparea datelor.
Astfel, pentru fiecare nivel de grupare se definete o band de antet de grup i o
band de picior de grup. Antetul, respectiv piciorul fiecrui grup va conine
informaii introductive, respectiv informaii de sintez referitoare la grupul
respectiv.
Pentru gruparea datelor se selecteaz opiunea Data Grouping din meniul
vertical Report sau executnd un click cu butonul din dreapta mouse apare
meniul vertical contextual din care se poate selecta opiunea Data Grouping
.Indiferent de modul de lansare apare chenarul corespunztor care are forma din
figura alturat.
Dup cum se poate constata n chenarul Data Grouping apare o list simpl cu
denumirea Group expressions. n fiecare linie a listei se poate introduce cte o
expresie de grupare. n cazul nostru am introdus linia de studii, secia, anul i
urma s introducem grupa. Pentru modificarea acestei ordini se poate proceda
cum se procedeaz n mod uzual cu schimbarea ordinii elementelor dintr-o list
i anume : sau se trage (operaie de drag ) cu butonul din stnga mouse-ului
apsat de butonul din stnga opiunii (cel cu sgeat dubl), n sus sau n jos
mutnd opiunea, sau se execut un click cu butonul din stnga mouse-ului i se
tasteaz Ctrl+PgUP pentru a muta opiunea cu o poziie n sus, respectiv
Ctrel+PgDn pentru a o aduce cu o poziie n jos.
Pentru introducerea expresiei de grupare se poate fie tasta direct valoarea expresiei, fie se
poate executa un click pe butonul din dreapta liniei respective, operaie care declaneaz
apariia ferestrei constructorului de expresii (ca n figura de mai sus) cu care se poate construi
expresia de grupare.

Pentru tergerea unei expresii de grupare se execut un click pe linia de ters i


se execut cu click pe declanatorul Delte. Opiunea curent va fi tears, iar
opiunile urmtoare vor avansa cu cte o poziie.
Fiecare grup poate avea o serie de proprieti specificate prin chenarul Group
properties. Selectarea butoanelor din grup are urmtoarele semnificaii:
Start group on new column, respectiv, Start each group on new page
indic faptul c fiecare la fiecare schimbare de grup se va trece la coloan
(este selectabil numai n cazul rapoartelor multicoloan), respectiv, pagin
nou.
Reset page number to 1 for each group specific faptul c la schimbarea
grupului se trece la pagin nou i se ncepe numerotarea paginilor ncepe de
la 1.
132

Reprint group header on each page specific faptul c n situaia n care


grupul va fi pe mai multe pagini, antetul grupului va fi tiprit pe toate
paginile, dup antetul de pagin, nu numai pe prima pagin.
Start group on new page when less than aceast opiune are un contor
(spinner) cu care se poate stabili distana minim (n numr de linii) de la
baza paginii la care poate ncepe antetul unui grup pe pagin.
8.1.6.4. Utilizarea variabilelor n cadrul rapoartelor
n unele situaii, de exemplu dac dorim calculul mediei generale pe grupe sau
ani i dorim s le afim n liniile de sumar, avem nevoie de variabile.
Variabilele n rapoarte se definesc astfel:
Din meniul sistem selectnd opiunea Report se selecteaz din meniul
vertical opiunea Variables.
Apare fereastra Report variables.
n aceast fereastr se definesc numele variabilelor n lista vertical
Variables. Avnd n vedere c ordinea de definire a variabilelor este
important, valorile acestora determinndu-se n ordinea definirii, aceast
ordine se poate schimba analog ca n paragraful precedent, adic trgnd de
sgeata dubl din faa numelui variabilei sau executnd un click iar apoi
tastnd PgUp sau PgDn.
Pentru fiecare variabil putem stabili valoarea de memorat cu opiunea
Value to store sau valoarea iniial Initial value. Fiecare dintre cele dou
opiuni are cte un chenar de editare unde se poate tasta numele unui cmp
sau o expresie. Dac nu se dorete tastarea expresiei se poate executa click
pe butonul din dreapta chenarului i se lanseaz automat chenarul
constructorului de expresii cu care se poate construi expresia dorit. Asupra
acestor expresii se pot executa operaii de agregare. De exemplu, se dorete
calcularea mediei aritmetice mediilor studenilor unei grupe. Pentru aceasta
avem un chenar cu butoane radio Calculate. Dac se pstreaz selectat
butonul Nothing nseamn c n variabil se pstreaz sau respectiv
variabila este iniializat cu valoarea expresiei din chenarul de tip text. Altfel
se execut operaii de agregare asupra expresiei cum ar fi: numrarea, se
calcularea sumei, a valorii medii, minimului, maximului, abaterii medii
ptratice sau a dispersiei.
Prin chenarul de selecie Release after report se poate stabili ca variabila s
fie eliberat dup terminarea raportului sau ultima valoare s rmn i dup
terminarea raportului.
Ultima opiune este legat de iniializarea variabilei i este Reset at. Aceasta
este o list derulant care poate avea diferite valori n funcie de context.
Astfel avem n totdeauna End of Report, dar pot fi End of Pag, End of
Column, sau End of Group.
133

BAZE DE DATE

8.1.6.5. Exploatarea rapoartelor


Previzualizarea se realizeaz prin selectarea opiunii Print preview din meniul
File. Rezultatul este apariia imaginii tiprite i a unei care de instrumente,
conform figurii de mai jos, n care butoanele au urmtoarea semnificaie : treci
la prima pagin, treci la pagina precedent, deplasare la o pagin dat, treci la
pagina urmtoare, treci la ultima pagin nchide fereastra i tiprete. n bara
de instrumente mai apare i o list deschis n care se poate preciza scala de
afiare n procente.
Exploatarea efectiv a machetei de raport se poate realiza :
Din meniul sistem selectnd opiunea Run Report din meniul vertical
Report.
Prin comanda REPORT.
Dac se utilizeaz opiunea RUN REPORT apare un chenar de dialog de forma
celui de mai jos, cu care se pot fixa parametrii tipririi.
Prin comand tiprirea, previzualizarea sau memorarea unui raport pe fiier se
realizeaz prin comanda :
REPORT FORM Fiier1 | ? [ENVIRONMENT] [domeniu] [FOR
lExpresie1]
[WHILE lExpresie2] [HEADING cHeadingText] [NOCONSOLE]
[NOOPTIMIZE] [PLAIN] [RANGE nPaginStart [, nPaginSfrit]]
[TO PRINTER [PROMPT] [NODIALOG] | TO FILE NumeFiier2
[ASCII]]
[NAME NumeObiect][SUMMARY] [NORESET] [NOPAGEEJECT]
[PREVIEW [[IN] WINDOW NumeFereastr | IN SCREEN] [NOWAIT]]
unde
FORM Fiier1 | ? indic numele fiierului machetei de forme sau lanseaz
fereastra Open pentru deschiderea fiierului respectiv; parametrul este
obligatoriu.
ENVIRONMENT] se folosete numai pentru a compatibiliza Visual FoxPro
cu FoxPro 2.6.
Domeniu poate lua valorile ALL, NEXT n, REST i RECORD n, cu
semnificaiile cunoscute. Domeniul implicit este ALL, adic se vizualizeaz
toat baza de date.
FOR i WHILE sunt filtrul global i local cu semnificaiile cunoscute.
HEADING permite definirea unui text care se tiprete pe fiecare pagin.
Dac se utilizeaz simultan HEADING i PLAIN, PLAIN are prioritate.
NOCONSOLE inhib vizualizarea raportului pe ecran.
NOOPTIMIZE inhib aciunea optimizatorului de expresii RUSHMORE.
134

PLAIN permite vizualizarea anterelor numai pe prima pagin a raportului,


inhibnd tiprirea acestor antete pe paginile urmtoare.
RANGE permite stabilirea paginii de nceput i sfrit a tipririi; prin lips se
tiprete tot raportul.
TO PRINTER [PROMPT] [NODIALOG] indic faptul c tiprirea se
dorete s se efectueze la imprimant; PROMPT precizeaz faptul c se
dorete afiarea chenarului de dialog prin care utilizatorul poate seta
imprimanta (este un chenar din Windows). NODIALOG indic faptul c se
dorete ca n timpul tipririi s nu fie afiate mesaje de dialog.
TO FILE NumeFiier2 [ASCII] permite stabilirea fiierului text n care va fi
salvat raportul. n mod normal raportul este fiier cu extensia .txt. Dac se
dorete ca s fie fiier ASCII (pentru imprimante postscript) se utilizeaz
parametrul aferent. Trebuie subliniat c graficele nu sunt generate n
fiierele ASCII.
NAME NumeObiect permite definirea unei nume de variabile care s
primeasc proprietile i metodele obiectului corespunztor raportului.
Acest nume poate fi utilizat de evenimente care utilizeaz obiectul.
SUMMARY indic faptul c nu se dorete tiprirea sau vizualizarea
coninutului zonei de detaliu ci numai a sumarului (care de regul conine
date agregate cum ar fi totaluri, subtotaluri, etc.).
NORESET indic faptul c variabilele system care se iniializeaz la
nceputul oricrui raport (_PAGENO i _PAGETOTAL) nu trebuie
iniializate.
NOPAGEEJECT indic faptul c utilizatorul nu dorete eliminarea ultimei
pagini la terminarea tipririi raportului. Nu se poate utiliza n mod comand
ci numai n program (fiiere .prg).
PREVIEW indic faptul c raportul se previzualizeaz pe ecran
[IN] WINDOW NumeFereastr | IN SCREEN este un parametru care apare
la majoritatea comenzilor i stabilete locul de vizualizare (ntr-o fereastr
utilizator sau tot ecranul).
NOWAIT se poate utiliza numai n mod programat (nu i comand) i indic
faptul c programul nu trebuie s atepte terminarea previzualizrii.

135

BAZE DE DATE

8.2. Meniuri
OBIECTIVE 1. Familiarizarea cu noiunea de meniu i elementele sale
componente
2. Crearea abilitii de creare i utilizare meniurilor n Visual
FoxPro.
- Meniuri i rolul lor;
NOIUNI
- Fereastra constructorului de meniuri;
CHEIE
- Opiunile posibile la generarea meniurilor i
submeniurilor;
- Crearea i modificarea meniurilor;
- Exploatarea meniurilor.
Meniu list de opiuni din care utilizatorul o poate selecta pe cea necesar
pentru o anumit aciune, cum ar fi alegerea unei comenzi sau aplicarea unui
anumit format unei poriuni de document. La mai multe programe de aplicaie,
n special cele care dispun de interfa grafic, meniurile reprezint o
alternativ mai uor de nvat i de folosit dect memorarea comenzilor i a
utilizrii lor [Microsoft99].
Meniurile sunt de mai multe feluri. Primele meniuri, meniurile clasice, au fost utilizate n
versiunile vechi de dBASE i Fox. Ele apar sub form de liste, utilizatorul putnd alege
opiunea prin tastarea unui identificator (de exemplu numrul opiunii n list).
O aplicaie cu meniurile bine proiectate se nelege mult mai uor de ctre beneficiarii
acesteia.

De regul principalele funcii ale unei aplicaii sunt incluse n meniu. Astfel, de
exemplu, n VisualFox 8.0 comanda Browse apare ca opiune n meniul vertical
View. n acelai timp alte opiuni cum ar fi Insert nu apar n nici un meniu sau
submeniu.
Din cele de mai sus se poate observa c meniurile sunt n principal de dou
tipuri:
Meniuri orizontale (cum este n figura de mai sus meniul principal al Visual
Foxului); acesta este format din opiuni (denumite i pad-uri). Acestea, la
rndul lor, pot lansa o aciune sau un submeniu vertical.
Meniurile verticale au o serie de opiuni I (bare, care la rndul lor pot lansa
comenzi, alte submeniuri verticale sau orizontale sau ferestre de dialog.
Ca i n cazul rapoartelor, n gestiunea meniurilor avem dou etape importante:
Crearea sistemului de meniuri.
Exploatarea sistemului de meniuri.
136

8.2.1. Crearea unui sistem de meniuri


Indiferent de dimensiunea i complexitatea aplicaiei, pentru crearea unui
sistem de meniuri sunt necesare o serie de etape. Numrul acestora difer de la
autor la autor. n esen ns aceast activitate revine la urmtorii pai:
Pasul 1 : - proiectarea sistemului meniului, care const n stabilirea locului
acestuia, opiunile utilizate i submeniurile aferente, chei rapide de acces, etc.
Pasul 2: - crearea meniurilor i submeniurilor;
Pasul 3: - ataarea funciilor i aciunilor de opiunile meniului cum ar fi :
- afiare unor formulare sau casete de dialog ;
- inserarea de cod de iniializare de variabile, deschideri de fiiere etc.
nainte activarea opiunii ;
- inserare secvenelor de cod asociate diferitelor evenimente legate de
activarea/dezactivarea opiunilor sau meniului ;
Pasul 4 : - generarea programului aferent meniului ;
Pasul 7 : - testarea sistemului (programului, aplicaiei).
8.2.2. Planificarea unui sistem de meniuri
Planificarea unui sistem de meniuri este o operaie de analiz i ca atare se efectueaz de
regul independent de calculator fiind o operaiune migloas, dar de care depinde n mare
msur succesul aplicaiei, modul n care aceasta va fi receptat de utilizator. Numrul
recomandrilor pentru proiectarea meniurilor poate fi mare i important.

n faza de proiectare se descriu fiecare opiune. Astfel, de exemplu la creare se vizualizeaz


un meniu vertical cu tabelele care pot fi create. Dac o tabel este creat deja i este utilizat
ea nu va mai fi selectabil. Analog se analizeaz i se descriu funciile fiecrei opiuni. Se
stabilesc caracterele de acces (cele subliniate n aa fel ca ele s nu creeze confuzie. Pentru
unele opiuni, de exemplu pentru tergerea articolelor marcate (PACK) putem stabili
combinaia de taste Ctrl+P.

8.2.3. Crearea i modificarea meniurilor


Crearea meniurilor se poate realiza prin mai multe metode. Primele meniuri au fost create cu
ajutorul unor comenzi de tip @say, @get cu care se pot genera diferite obiecte. Aceast
metod este destul de anevoioas pentru neinformaticieni, motiv pentru care deja n FoxPro
2.5-2.6 s-a recurs la un constructor grafic de meniuri, denumit atunci generator de meniuri.
137

BAZE DE DATE

Ca i n cazul constructorului de rapoarte, constructorul de meniu lucreaz n


dou faze:
o n prima faz se genereaz o tabel sistem care are extensia MNX;
o n a doua faz se genereaz pornind de la acesta un program cu extensia
MPR care se execut ca orice program cu comanda DO.
8.2.4. Lansarea constructorului de meniuri
Constructorul de meniuri, denumit Menu Designer poate fi lansat din comand sau din
meniul sistem.

Comanda de creare a unui meniu nou are sintaxa:


CREATE MENU [NumeFiier | ?] [NOWAIT] [SAVE] [WINDOW
WindowName1]
[IN [WINDOW] WindowName2 | IN SCREEN
Din aceast sintax este important poriunea:

CREATE MENU [NumeFiier | ?]


Ceilali parametrii fiind deja prezentai n seciunile anterioare.

Dac se lanseaz deci comanda


CREATE MENU test
apare fereastra constructorului de meniuri. Selectnd declanatorul Menu se va
construi un meniu orizontal cu opiuni sub forma unor meniuri verticale;
selectnd Shortcut, va apare un meniu vertical cu opiuni sub forma unor
submeniuri verticale.
Dac nu se precizeaz numele fiierului sau se tasteaz semnul ntrebrii, apare
ca i n cazul crerii celorlalte obiecte (tabele, ferestre, rapoarte etc.) se
genereaz temporar cu numele Menu1, iar n momentul n care se dorete
generarea programului sistemul va vizualiza fereastra standard ave As cu care
se poate fixa numele meniului.
Crearea unui meniu cu ajutorul meniului sistem
1. Se selecteaz opiunea New din meniul vertical File.
2. Din fereastra New se selecteaz butonul radio Menu i declanatorul
New File.
3. Apare chenarul New Menu i activitatea se continu.
Crearea unui meniu din managerul de proiect
1. Se selecteaz opiunea New din meniul vertical File.
2. Din fereastra New se selecteaz butonul radio Project i declanatorul
New File.

138

3. Apare fereastra constructorului de proiecte (Figura 4.1) din care se


poate selecta opiunea Other din meniul vertical sau eticheta cu
acelai nume.
4. Apar opiunile meniului vertical din figura de mai jos.
5. Selectnd opiunea Menu i declanatorul New.
6. Apare fereastra New Menu.
8.2.5. Modificarea descrierii meniurilor
Ca i n cazul crerii meniurilor i n cazul modificrii se poate proceda n dou moduri.

Comanda de modificare a unui meniu nou are sintaxa:


MODIFY MENU [FileName | ?] [[WINDOW WindowName1]
[IN [WINDOW] WindowName2 | IN SCREEN]] [NOWAIT] [SAVE]

Din aceast sintax este important poriunea:


MODIFY MENU [NumeFiier | ?]
Ceilali parametrii fiind deja prezentai n seciunile anterioare.
Dac se lanseaz deci comanda
MODIFY MENU test
va apare fereastra Menu Design cu starea curent a meniului.
Dac se lanseaz comanda:

MODIFY MENU
apare fereastra OPEN din care se poate selecta meniul dup care apare fereastra
Menu Designer ca n cazul precedent.
8.2.5.1. Modificarea unui meniu cu ajutorul meniului sistem
Se selecteaz opiunea Open din meniul vertical File, dup care se procedeaz
ca n cazul comenzii MODIFY MENU fr numele fiierului meniu.
8.2.5.2. Modificarea unui meniu din managerul de proiect
Se procedeaz ca n cazul ii2 din paragraful precedent cu observaia c la pasul 5
n loc s se selecteze declanatorul New se va executa un click dublu pe
opiunea Menu din meniul vertical Others.
Va apare lista meniurilor disponibile n directorul curent. Se efectueaz un click
pe meniul dorit i pe declanatorul Modify, dup care se procedeaz ca n cazul
comenzii MODIFY MENU fr numele fiierului meniu.
8.2.6. Stabilirea unor proprieti i coduri ale meniurilor
139

BAZE DE DATE

Aceste proprieti i coduri se pot stabili n orice moment al crerii sau


modificrii meniurilor din meniul vertical View.
8.2.6.1. Stabilirea proprietilor generale
Pentru stabilirea proprietilor generale se poate realiza selectnd din meniul
vertical View opiunea General Options. Aceasta vizualizeaz fereastra cu
acelai nume.
n zona Procedure utilizatorul poate scrie o secven de program care s fie
executat la activarea meniului. Dac codul nu ncape n chenarul de editare
acesta va defila vertical. Dac utilizatorul dorete s editeze o secven mai
masiv de cos poate selecta declanatorul Edit i va apare o fereastr de editare
accesibil numai n momentul nchiderii ferestrei General Options.
Chenarul Location permite stabilirea locului meniului n cauz fa de meniul
sistem. Astfel, dac se las selectat Replace, acest meniu va nlocui meniul
sistem. Dac se selecteaz Append, meniul actual se va aduga meniului
sistem, iar dac se selecteaz Before sau After, n dreptul butonului apare o
list derulant din care se poate selecta o opiune din meniul sistem n faa
cruia sau dup care s se insereze meniul curent.
Dac se selecteaz opiunile Setup, respective Cleanup din chenarul Menu
code, apare cte un chenar n care se pot edita secvenele de cod care s fie
executate automat la iniializarea meniului, respective la tergerea sa din
memorie.
Opiunea Top level este legat de vizualizarea meniului ntr-un document SDI
(Single Document Interface). Fr a intra n amnunte, precizm c dac nu se
selecteaz aceast opiune, Visual FoxPro lucreaz n regim MDI (Multiple
Document Interface) adic exist o fereastr principal, care este rdcina
arborelui de documente. n regim SDI toate documentele sunt independente i la
acelai nivel.
8.2.6.2. Stabilirea codului pentru meniu sau submeniuri
Acest cod se poate stabili selectnd din meniul vertical View opiunea Menu
Options. Va apare o fereastr cu numele meniului sau submeniului pentru care
se creeaz sau editeaz secvena de cod i zona de editare i declanatoarele cu
semnificaia din fereastra General Options.
8.2.7. Crearea unui meniu rapid
Selectnd la crearea unui meniu nou opiunea Quick Menu, va apare fereastra
constructorului de meniuri n forma de mai jos. Se poate observa c att
opiunile meniului orizontal ct i a celor verticale sunt cele din meniul sistem.
Utilizatorul poate modifica acest meniu sau poate genera un meniu cu un nume
140

dat. Extensia implicit a acestui program va fi MPR. Programul astfel obinut


poate fi refolosit n meniul care se creeaz pentru revenirea la meniul sistem.
Trebuie s menionm c dac nu se asigur aceast revenire nu putem continua
eventual activitatea cu Visual FoxPro.
Putem observa c revenirea la meniul sistem se poate realiza i n alte moduri,
de exemplu, genernd pe opiunea TERMIN, comanda
SET SYSMENU TO DEFAULT

8.2.8. Construirea efectiv a meniului i submeniurilor


Fereastra constructorului de meniuri are n stnga un chenar n care avem o list vertical
format din 3 elemente:

Chenarul de tip text Prompt este zona n care se definesc textele care vor apare
n cadrul opiunilor, de exemplu n figura de mai sus \<File. Referitor la aceste
texte trebuie s subliniem faptul c, aa dup cum se poate observa, anumite
caractere au n fa simbolul \. Semnificaia acestui fapt este:
Dac \< este n faa unui caracter, acesta va deveni caracter de selecie n
sensul cunoscut din Windows, adic, n cadrul numelui opiunii din meniu va
apare subliniat i dac meniul (submeniul) respective este active i se
tasteaz caracterul respectiv se lanseaz automat opiunea;
Dac \ singur apare n faa unei opiuni, aa dup cum se poate constata din
exemplul de mai jos (opiunea Creare), aceast opiune va fi scris mai slab i
nu este selectabil. Coloana Result este o list derulant n care se poate
stabili rezultatul aciunii de activare a opiunii respective din meniu
(submeniu).
Dac este prima selecie a unui element din coloan n dreptul elementului
respective apare un declanator Create. Elementele din lista derulant pot fi:
Command indic faptul c prin selectarea opiunii respective din meniu se
dorete executarea unei singure comenzi. Dac se selecteaz aceast opiune
n dreptul ei apare un chenar de editare a textului comenzii care se dorete s
fie executate n cazul selectrii opiunii.
PadName Orice meniu are dou nume. Unul este cel din interfa, care
apare n coloana Prompt i unul care apare n programul generat cu extensia
.MPR (care este numele de PAD). Orice opiune dintr-un meniu are un
numr (BAR#) . Dac utilizatorul nu i d el un nume PAD-ului, sistemul
va genera automat un identificator. Acesta este fix, dac este PAD sistem i
se schimb de la generare la alta dac este PAD utilizator. Dac n cadrul
programului utilizatorul vrea s utilizeze un PAD, el trebuie s foloseasc
numele de PAD. Stabilirea unui nume de PAD pentru un meniu aferent unei
141

BAZE DE DATE

opiuni, se poate realiza n chenarul Prompt Options. Numele standard de


PAD-urilor sistem pot fi obinute cu ajutorul funciei SYS(2013).
Submenu- lanseaz crearea/editarea unui submeniu. Fereastra de editare a
unui submeniu este asemntoare cu cea a meniului principal (Bar) cu
unele mici modificri. Astfel, n locul opiunii PAD va apare BAR# care
este numrul intern al opiunii. De exemplu, tiprirea are numrul intern,
care se poate obine tot cu funcia SYS(2013), sau din crearea unui meniu
rapid (QUICK MENU) i efectuarea unui click pe declanatorul Edit i
selectarea opiunii _mfi_sysprint. De asemenea, spre deosebire de meniul
bar, aici declanatorul INSERT BAR este accesibil. Din figura de mai jos
se poate remarca, faptul c opiunile dintr-un meniu vertical se pot grupa.
Pentru a le grupa se trage o linie orizontal. Pentru a insera o line de
separaie n coloana Prompt se utilizeaz combinaia \-. Se poate observa de
asemenea fr dificultate din figur dac o opiune dintr-un meniu vertical
are un submeniu, numele lui este urmat de un vrf de sgeat. Numrul
nivelelor de meniuri nu este limitat.
Procedure indic faptul c la selectarea opiunii corespunztoare din
meniu se dorete executarea unei proceduri (secvene de comenzi). Dac se
selecteaz opiunea Procedure, apare alturi de zona respectiv un
declanator pe care scrie Create la crearea procedurii i respectiv Edit dac
procedura a fost deja creat i se dorete, eventual, modificarea ei.
Ultima coloan a acestei ferestre este Options. n aceast fereastr putem
stabili opiuni legate de obiectul n cauz. Dac se selecteaz o opiune, de
exemplu Vizualizare, n dreptul ei apare un buton pe coloana Options.
Efectund un click pe butonul respective apare chenarul Prompt options cu
ajutorul creia se pot stabili opiunile dorite. Aceast fereastr are mai multe
chenare.
- Primul chenar Shortcut, are dou zone de tip tex, Key Label i Key
Text, cu ajutorul crora putem defini combinaii de taste pentru apelul
scurtcircuitat al meniului sau al opiunii, analog metodei binecunoscute
din Windows. Opiunile au pentru scurtcircuitare Ctrl+tast. De
exemplu, pentru vizualizare se poate utiliza combinaia Ctrl+V. Nu se
admite combinaia Ctrl+J. Iniial cursorul de inserare este n Key Label
iar textul afiat este (Press the key). Acionnd deodat Ctrl+V aceasta se
nscrie n ambele zone. Ulterior, ca n exemplul nostru, utilizatorul poate
s schimbe textul n zona Key Text.
- Chenarul Negotiate se utilizeaz numai n situaia n care titlul meniului
va fi un container pentru un obiect. n acest caz se poate stabili forma
containerului i sursa obiectului.
- Skip for permite stabilirea unei expresii logice care dac ia valoarea True
opiunea nu este selectabil. Expresia poate fi construit i cu ajutorul

142

Constructorului de expresii, dac se efectueaz un click pe butonul de


lng chenarul de editare.
n chenarul Message se poate introduce o expresie de tip caracter care
dup evaluare este afiat pe linia de stare a ferestrei.
Pad Name/Bar# are semnificaia de mai sus, cu observaia c Pad Name
este utilizabil numai n situaia utilizrii unuia dintre prompterele diferite
de PAD, iar BAR poate fi folosit numai n meniurile contextuale.
Picture - se utilizeaz dac n stnga textului din meniu sau n meniu se
afieaz un grafic sau se utilizeaz o resurs sistem.
Comment permite editarea unui comentariu ca i n cazul generrii
altor obiecte.

Revenind la Menu Designer, n dreapta sus apare lista derulant Menu Level,
cu ajutorul cruia se poate stabili nivelul de meniu care este afiat curent. Dac
se dorete navigarea n meniu, de exemplu trecerea la meniul bar, se execut
un click pe sgeat i din lista expandat se selecteaz Menu Bar. n felul
acesta ne putem deplasa pe structura arborescent a meniului.
n fereastra Menu Designer avem i chenarul Item cu patru declanatoare
INSERT, INSERT BAR, DELETE i MOVE ITEM. Cu aceste se poate
insera o opiune naintea unei alte opiuni din meniul bar (INSERT). n acest
caz apare o opiune cu numele standard New Item.
Folosind INSERT BAR apare lista vertical Insert System Menu Bar din care
dac se selecteaz, de exemplu, New, se obine linia \New din figura de mai jos.
Dac se selecteaz butonul Move Item apare fereastra cu acelai nume, iar din
lista derulant To Location se poate selecta locaia din meniu unde se dorete
mutarea opiunii.
Ultima opiune din fereastra Menu Designer este Preview, cu care putem
vizualiza n orice moment modul de funcionare a meniului care se construiete
sau se editeaz, ca i n cazul exemplului nostru.

143

BAZE DE DATE

8.2.9. Opiunile meniului vertical Menu i generarea


meniurilor
Odat cu lansarea comenzii de creare sau modificare a unui meniu, n meniul
bar va apare opiunea MENU. Dac se selecteaz aceast opiune apare un
meniu vertical.
Opiunile meniului au fost prezentate anterior rmnnd doar opiunea de
generare. Deci, dac se salveaz fr generare meniul, se obine tabela special
cu extensia MNX. Dac se selecteaz opiunea Generate apare chenarul cu
numele Generate Menu.
n chenarul Output File putem modifica numele cu care se genereaz meniul
(implicit este numele cu care s-a generat tabela .mnx) i eventual calea, fie
tastnd direct, fie utiliznd un sistem Browse cu ajutorul butonului alturat.
Efectund un click pe butonul Generate se genereaz automat programul cu
extensia .mpr, care se execut prin comanda
DO <nume_meniu>.mpr
Trebuie remarcat c exist i alte metode de creare a meniurilor i opiunilor
cum ar fi comenzile DEFINE PAD, DEFINE POPUP i DEFINE BAR
De asemenea, Visula Fox Pro permite crearea unor meniuri contextuale. Aceste
meniuri se utilizeaz executnd un click cu butonul din dreapta pe un obiect.
Meniurile contextuale se creeaz asemntor cu cele bar, deosebirile fiind date
numai de faptul c n chenarul New Menu se selecteaz declanatorul Shortcut,
n loc de Menu, iar meniul este vertical.

144

REZUMAT

TEME DE
CONTROL,
APLICAII
BIBLIOGRAFIE

Modulul este format din dou uniti.


Prima unitate este destinat gestiunii rapoartelor.
Problemele principale tratare n aceast unitate sunt:
1. Structura i planificarea unui raport, din punct de vedere
conceptual;
2. Componentele unui raport n VFP;
3. Controalele raportului i modul de utilizare a acestora
4. Structura constructorului de rapoarte de rapoarte i modul de
utilizare a lui;
5. Gestiunea rapoartelor (creare, modificare, exploatare i
tergere)
6. Asisteni pentru gestiunea rapoartelor att pentru rapoarte
rapide ct i utilizarea Wizard-ului.
A doua unitate este destinat meniurilor. Principalele probleme
tratate se refer la:
1. Probleme conceptuale referitoare la meniuri i rolul lor;
2. Structura i utilizarea ferestrei constructorului de meniuri;
3. Opiunile posibile la generarea meniurilor i submeniurilor;
4. Gestiunea meniurilor (creare, modificare, tergere);
5. Exploatarea meniurilor.
3. Se vor elabora aplicaii legate de cele dou teme din modul.
4. Se vor elabora aplicaii complexe de Informatic Economic
Afaceri,
1. Avram-Nichi R., Ghioiu N., Goron S., Nichi St., Tomai
N. Baze de date i programarea calculatoarelor utiliznd
limbajul Visual FoxPro, Ed. Risoprint, Cluj-Napoca, 2003, p.
310-350.
2. Marian Cristescu, Baze de date utilizate n mediul economic,
Editura ALMA MATER, Sibiu, 2007, pg. 321-352
3. Gabriel Dima ,Mihai Dima, Bazele Visual Foxpro 5.0,
Editura Teora ,Bucuresti,1999.
4. Marin Fotache,Ioan Brava, Ctlin Strmbei, Liviu Creu,
Visual FoxPro; Ghidul dezvoltrii aplicaiilor profesionale,
Editura Polirom Iai, 2002.
5. Manole Velicanu, Ioan Lungu, Mihaela Muntean,
Dezvoltarea aplicaiilor cu baze de date n Visual FoxPro,
Editura All, Bucureti, 2001.
6. Nicolae Ghioiu, Visual FoxPro; Exerciii i programe,
Editura Risoprint Cluj, 2003.
145

BAZE DE DATE

9. INTEROGRI(QUERIES) N VISUAL FOXPRO

- Interogarea ca metod de extragere a datelor;


- Sursa datelor;
- Tipuri de interogri;
- Gestiunea interogrilor;
- Interogri i rolul lor;
- Crearea i modificarea interogrilor;
- Rularea interogrilor.
6. nsuirea tehnicilor de creare a unei interogri Visual
OBIECTIVE
FoxPro;
7. Familiarizarea cu structura interogrilor din Visual
FoxPro;
8. Formarea deprinderilor de creare i utilizare a
interogrilor;
9. Crearea abilitilor de creare i utilizare a interogrilor
n Visual FoxPro.
RECOMANDRI 9. Se vor proiecta din punct de vedere conceptual structuri
logice de interogri;
PRIVIND
10.
Se vor studia cu atenie modalitile de construire
STUDIUL
a interogrilor;
11.
Se vor crea diferite interogri pentru aplicaii
economice.
Dup parcurgerea acestui modul utilizatorul trebuie s fie
REZULTATE
n msur s defineasc i foloseasc corect interogrile
ASTEPTATE
i s implementeze pe baza lor aplicaii complexe din
informatica economic i de afaceri.
CONCEPTE
DE BAZA

146

9.1. CREAREA INTEROGRILOR


OBIECTIVE

NOIUNI
CHEIE

4.
5.
6.
1.
2.
3.
4.

Sursa datelor;
Tipuri de interogri;
Crearea i modificarea interogrilor.
Interogare:
Tipuri de interogri;
Metode de creare;
Execuia interogrilor.

9.1.1. Tipuri de interogri:


 de selectie: permit selectarea anumitor inregistrari din tabele pe baza unor
criterii de selectie;
 de actiune: realizeaza o actiune (adaugare, actualizare, stergere) asupra
unei tabele sau permit crearea unei tabele noi care sa contine anumite
campuri selectate pe baza unor criterii
Crearea interogarilor in Visual FoxPro se face utilizand Query Designer prin
selectarea optiunii Query->New.
Pai:
P1: Se selecteaza tabelele din care se vor utiliza datele;
P2: Selectarea campurilor dorite se realizeaza in fereastra Fields, care permite si
contruirea de expresii noi cu ajutorul utilitarului Expression Builder (optiunea
Functions and Expressions vezi paragraful Costruirea expresiilor in
Expression Builder). Vezi figura 1.

147

BAZE DE DATE

Figura 1: Selectarea si construirea expresiilor ce vor apare in interogare


P3: (opional): Vizualizarea si modificarea legaturilor dintre tabele se face in
fereastra Join in cazul in care se doreste schimbarea legaturilor.
P4: Specificarea criteriilor de selectie se realizeaza in fereastra Filter prin
utilizarea operatoriilor (vezi tabelul) si prin crearea de noi expresii cu ajutorul
utilitarului Expression Builder (opiunea Expressions). Vezi figura 2.

Figura 2: Stabilirea criteriilor de selectie


Operatori:
<, >, =, >=, <=, NOT
148

Operatori de comparatie

BETWEEN ... AND ... ntre dou valori (inclusiv).


SELECT codp, cant FROM randfact WHERE cant BETWEEN 10 AND 15;
IN(list)
egal cu oricare valoare din list
SELECT codf, denumire FROM furnizori WHERE codf IN (7902, 7566,
7788);
SELECT codf, denumire FROM furnizori WHERE denumire IN
(ALFA,DELTA);
LIKE
similar cu un ablon
% - oricte caractere; _ - un caracter;
SELECT denumire, localitate FROM furnizori WHERE localitate LIKE
S%;
SELECT denumire, localitate FROM furnizori WHERE localitate LIKE
_A%;
IS NULL
are valoarea NULL
SELECT codf, denumire FROM furnizori WHERE denumire IS NULL;
P5: Ordonarea datelor se realizeaza in ferestra Order By, iar gruparea acestora
in functie de un anumit camp se realizeaza in fereastra Group By. Aceste
optiuni sunt utilizate numai in cazul interogarilor de grup (ex. Pentru a calcula
totalul unei facturi, datele vor fi grupate mai intai in functie de campul nrserie
din tabela Facturi si apoi se va aplica functia SUM() pentru insumarea valorilor
produselor).
9.1.2. Construirea expresiilor n Expresion Buider
Sintaxa generala este:
[Expresie] AS ALIAS
unde:
[Expresie] este o constructie formata din campuri si functiile oferite de limbaj
Alias este o denumire, sinonim pt expresia respectiva
Exemplu:
1) RandFact.Cant * RandFact.Pret AS Valoare - se calculeaza valoarea unui
produs
2) 0.19 * (RandFact.Cant * RandFact.Pret) AS TVA - se calculeaza
valoarea TVA pt un produs
3) Socuri.SI + Stocuri.CI Stocuri.CE AS Stoc_Final se calculeaza stocul
final pt un produs aflat in depozit
4) SUM(1.19 * (RandFact.Cant * RandFact.Pret)) AS Valoare_Factura se
calculeaza valoarea totala a unei facturi. Atentie! Pt acest tip de expreie
trebuie grupate inregistrarile in functie de nrserie in optiunea Group By
149

BAZE DE DATE

5) COUNT( Ranffact.Codp) AS NrProduse numara totalul produselor pe


fiecare factura. Atentie! Pt acest tip de expreie trebuie grupate
inregistrarile in functie de nrserie in optiunea Group By
9.2. Nucleul SQL Structured Query Language
Limbaj standard de interogare a bazelor de date. Implementat n
majoritatea SGBD-urilor, dar nu numai.
Interogarea bazelor de date, fie dintr-un limbaj de nivel nalt (C++,
Pascal, Visual C, Delphi...), fie dintr-un limbaj de programare Web (PHP, ASP,
JSP), se face, cel mai adesea, prin fraze SQL.
SELECT

[DISTINCT] { * , atribut [alias] , expresii AS ALIAS ...}

FROM
tabel;
WHERE {conditii, precizarea legaturilor dintre tabele}
GROUP BY tabela..camp
HAVING {conditii impuse valorilor de grup}
ORDER BY tabela . camp ASC/DESC
unde:
SELECT

specific atributele selectate;

DISTINCT
*
atribut
expresie
alias
FROM table
WHERE

suprim valorile duplicate;


selecteaz toate atributele;
selecteaz coloana numit;
permite construirea de expresii si valori noi
denumiri pentru atributele selectate;
specific tabela ce conine coloanele selectate.
clauza permite specificarea conditiilor si a criteriilor
de selectie a datelor
se precizeaza campul dupa care vor fi grupate datele in
cazul expresiilor si functiilor de grup (SUM(), AVG(),
COUNT(), MIN(), MAX())
in cazul functiilor de grup conditiile impuse acestora
se precizeaza in clauza HAVING
precizeaza ordonarea in functie un anumite campuri
ascendent (ASC) implicit sau descendent (DESC)

GROUP BY

HAVING
ORDER BY

Frazele SQL:
 Nu sunt case sensitive;
 Pot fi scrise pe mai multe linii;
150

 Cuvintele cheie nu pot fi prescurtate sau scrise pe mai multe linii;


In construirea frazelor SQL se utilizeaza operatorii prezentati anterior la
Queries:
Atributele se specific n ordinea n care se doresc a fi afiate, nu
obligatoriu n ordinea n care apar n descrierea tabelelor.
Afiarea se face implicit cu litere mari, la stnga pentru datele de tip dat
calendaristic i caracter, i la dreapta pentru datele numerice.
Valoarea NULL, ca i n alte limbaje, semnific valoare ne-disponibil, nealocat, i nu este acelai lucru cu blank sau zero.
Cu ajutorul frazelor select se pot extrage informaii din baza de date.
Utiliznd aceast instruciune se pot realiza toate cele trei operaii specifice
modelului relaional.
Selecia:

Operator unar, prin care se obine o nou relaie care conine


toate atributele relaiei iniiale i un numr redus de tupluri.
Reducerea se face dup o condiie numit condiie de selecie.

Proiecia:

Operator unar, prin care se obine o nou relaie care conine un


numr redus de atribute fa de relaia iniial i toate valorile
sau combinaiile distincte de valori ale acestor atribute.
Atributele care se regsesc n relaia rezultat se numesc
atribute de proiecie.

151

BAZE DE DATE

Jonciunea: Operator binar, caz particular de produs cartezian. Relaia


rezultat va conine tuplurile corespunztore atributelor de join
care se afl ntr-o anumit relaie. Cel mai utilizat caz de
jonciune este acela n care atributele de join au aceeai
semnificaie, relaia n care acestea trebuie s se afle este de
egalitate, unul dintre atribute e cheie primar ntr-una dintre
relaii, iar cellalt este cheie extern.

EXEMPLE:
1. Sa se selecteze toti furnizorii din tabela furnizori:
SELECT * FROM furnizori
2. Sa se selecteze campurile codf, denf si adresa din tabela furnizori:
SELECT codf, denf, adresa FROM furnizori
3. Sa se selecteze numai furnizorii din Bucuresti:
SELECT * FROM furnizori
WHERE adresa LIKE %BUCURESTI%
4. Sa se selecteze facturile neachitate:
SELECT * FROM facturi
WHERE stare = N
5. Sa se selecteze facturile emise de furnizorul cu codul F4:
SELECT * FROM facturi
WHERE codf = F4

152

6. Sa se selecteze facturile emise de furnizorii firmei (in clauza WHERE se


va preciza conditia de legatura dintre tabele)
SELECT furnizori.*, facturi.*
FROM furnizori, facturi
WHERE facturi.codf=furnizori.codf
7. Sa se selecteze facturile neachitate emise de furnizorul F4:
SELECT furnizori.*, facturi.*
FROM furnizori, facturi
WHERE facturi.codf=furnizori.codf AND facturi.stare=N AND
facturi.codf = F4
8. Sa se calculeze valoarea fiecarui produs (valoare =cant* pret)
SELECT facturi.*, randfactura.*, randfactura.cant * randfactura.pret AS
Val_Prod
FROM facturi, randfactura
WHERE facturi.nrserie=randfactura.nrserie
9. Sa se selecteze numai produsele cu valoarea cuprinsa intre 1 si 3 mil:
SELECT facturi.*, randfactura.*, randfactura.cant * randfactura.pret AS
Val_Prod
FROM facturi, randfactura
WHERE facturi.nrserie=randfactura.nrserie and randfactura.cant *
randfactura.pret BETWEEN 1000000 AND 3000000
10. Sa se calculeze valoarea totala a fiecarei facturi (se utilizeaza functie
SUM() si clauza GROUP BY pt gruparea datelor in functie de
facturi.nrserie ) si sa se sorteze descrescator in functie de valoare:
SELECT facturi.*, SUM( randfactura.cant * randfactura.pret ) AS
Total_Fact
FROM facturi, randfactura
WHERE facturi.nrserie=randfactura.nrserie
GROUP BY facturi.nrserie
ORDER BY Total_Fact DESC
9.3. Crearea interogrilor prin Querz Wizard

153

BAZE DE DATE

O aplicaie pe lng tabele i formulare, poate conine i interogri i


rapoarte folosite pentru selecia i afiarea datelor necesare utilizatorilor.
Interogrile pot avea diferite destinaii, astfel nct pot fi utilizate i n cadrul
altor componente ale aplicaiei.
Cnd utilizm o interogare n cadrul aplicaiei, de fapt, utilizm o
instruciune SELECT SQL, pe care o putem crea prin intermediul unei
interogri scrise n fereastra Proiectantului de Interogri (Query Designer) sau
prin codul scris pentru un eveniment sau pentru o procedur.
Folosind instruciunea SELECT SQL avem posibilitatea s combinm
diverse surse de date, s filtrm nregistrrile, s manipulm datele i s
ordonm rezultatele, putem, de asemenea, s controlm rezultatele unei
interogri i locul de stocare al acestora.
Pentru a crea o instruciune SELECT SQL folosim Proiectantul de
Interogri sau comenzi:
cu ajutorul Proiectantul de Interogri (Query Designer) generm instruciunea,
apoi copiem coninutul ferestrei SQL ntr-o fereastr de cod prin comenzi,
scriem instruciunea SELECT SQL ntr-o fereastr de cod.
Pentru a afia rezultatele interogrii ntr-un grafic putem folosi: Graph
Wizard, Proiectantul de Interogri sau o instruciune SELECT SQL. n
ultimele dou variante trebuie inserat n setul de rezultate un cmp de tip
numeric pentru a crea graficul. Putem alege unul din cele ase tipuri de grafice,
fiecare cu cte dou variante.
Exemplu:
Deoarece modul de proiectare i utilizarea a interogrilor este asemntor
vederilor, vom prezenta n continuare modalitatea concret de proiectare a unei
interogri comenzi_qry.qpr creat pe baza unei vederi cu numele comenzi_view.
SET DEFAULT TO c:\anca\carte-sgbd
SET DATE TO DMY
OPEN DATABASE "c:\anca\carte-sgbd\comenzi.dbc" EXCLUSIVE
MODIFY DATABASE
Prin aceast secven de comenzi am specificat directorul curent de lucru,
am setat modul de afiare a datei calendaristice la formatul zz/ll/aa, am deschis
baza de date comenzi.dbc, care conine i vederea comenzi_view, i am activat
fereastra Database Designer. Din meniul File, opiunea New, Query, Wizard,
activm caseta Wizard Selection de unde selectm opiunea Query Wizard
pentru a proiecta interogarea cu ajutorul asistentului (Wizard).
Specificarea sursei de date i a cmpurilor. Mai nti selectm numele
vederii care va furniza sursa de date pentru interogare i cmpurile care vor face
parte din structura interogrii, ca n figura 3.

154

Figura 3. Fereastra Proiectantului de Interogri (Query Wizard)


Specificarea condiiei de filtrare a nregistrrilor. n etapa urmtoare de
proiectare vom specifica condiia de filtrare a nregistrrilor (figura 4), i
anume, aceea ca interogarea s conin numai nregistrrile clienilor din
CRAIOVA.

Figura 4. Specificarea condiiei de filtrare a nregistrrilor


Ordonarea nregistrrilor. Pentru ca nregistrrile s fie ordonate
cresctor dup data comenzii vom specifica aceast cerin ca n figura 5.

155

BAZE DE DATE

Figura 5. Specificarea condiiei de ordonare a nregistrrilor


Salvarea interogrii. Vom salva interogarea n fiierul comenzi_qry.qpr.
Fereastra Proiectantului de Interogri (Query Designer) pentru acest fiier este
prezentat n figura 6.

Figura 6. Fereastra Proiectantului de Interogri pentru fiierul comenzi_qry.qpr


Comanda SELECT SQL care genereaz aceast interogare are
urmtoarea sintax:
SELECT *;
FROM comenzi!comenzi_view;
156

WHERE AT("CRAIOVA",Comenzi_view.adresa) > 0;


ORDER BY Comenzi_view.datacda
Pentru a vizualiza rezultatul interogrii folosim comanda DO care are
sintaxa DO nume_fiier.ext sau meniul Query, opiunea Run Query.
n cazul acestui exemplu, comanda DO are urmtoarea sintax:
DO comenzi_qry.qpr
n urma execuiei acestei comenzi se obine rezultatul prezentat n figura
7.

Figura 7. Rezultatul interogrii comenzi_qry


Exemplu de proiectare a unei interogri cu numele Furnizori folosind BD
Evidenta Facturi.

Pentru realizarea interogrii se folosete varianta Query Wizard.

157

BAZE DE DATE

Pasul 1: se selecteaz din tabela Furnizori, respectiv, tabela Facturi, cmpurile


care vor apare n interogare, cu observaia c se preia o singur dat cmpul
CUI din tabela Furnizori (el apare i n structura tabelei Facturi).

Pasul 2: se valideaz relaia creat ntre cele dou tabele prin cmpul comun
CUI.

158

Pasul 3: se poate stabili o condiie de filtrare a nregistrrilor, astfel nct


n interogare vor apare numai acele nregistrri din BD care ndeplinesc condiia
impus (ex. FURNIZORI.DENUMIRE equals CRAIOVA).

Pasul 4: se pot stabili cmpurile dup care sunt ordonate datele din
interogare.

159

BAZE DE DATE

Pasul 5. Este salvat interogarea n fiierul Furnizori.qpr.

Se pot aduga n structura interogrii pe lng cmpurile componente ale


tabelelor i expresii calculate (ex. Facturi.valfaratva*0.19 care determin
valoarea tva-ului pt. Fiecare factur i Facturi.valfaratva*1.19 care determin
totalul general al fiecrei facturi).

n figura de mai sus este prezentat rezultatul interogrii BD Eviden Facturi.

TEME DE
160

5. Se vor realiza aplicaii legate de diferitele tipuri de

CONTROL,
APLICAII
BIBLIOGRAFIE

interogri;
6. Se vor elabora aplicaii complexe de Informatic Economic
i de afaceri,
1. Avram-Nichi R., Ghioiu N., Goron S., Nichi St., Tomai
N. Baze de date i programarea calculatoarelor utiliznd
limbajul Visual FoxPro, Ed. Risoprint, Cluj-Napoca, 2003, p.
218-245.
2. Marian Cristescu, Baze de date utilizate n mediul economic,
Editura ALMA MATER, Sibiu, 2007, pg. 247-285
3. Gabriel Dima ,Mihai Dima, Bazele Visual Foxpro 5.0,
Editura Teora, Bucuresti,1999.
4. Marin Fotache,Ioan Brava, Ctlin Strmbei, Liviu Creu,
Visual FoxPro; Ghidul dezvoltrii aplicaiilor profesionale,
Editura Polirom Iai, 2002.
5. Manole Velicanu, Ioan Lungu, Mihaela Muntean,
Dezvoltarea aplicaiilor cu baze de date n Visual FoxPro,
Editura All, Bucureti, 2001.
6. Nicolae Ghioiu, Visual FoxPro; Exerciii i programe,
Editura Risoprint Cluj, 2003.

161

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