Baze de date în Visual FoxPro 1
Baze de date în Visual FoxPro
1. Tabele de date
FoxPro este un mediu de dezvoltare integrat, care, pe lâng
instrumentele de programare, ofer i un sistem de tabele de date
rela ionale care simplific procesele de gestionare i organizare
eficient a datelor. Datele sunt organizate tabelar, pe linii (records,
articole înregistr ri) i coloane (fields, câmpuri), mai multe tabele,
între care exist leg turi, alc tuind o baz de date rela ional .
1.1. Crearea unui tabel de date definirea structurii
Crearea unui tabel de date implic specificarea numelui
tabelului (fi ier cu extensia implicit DBF) i este ini iat prin
comanda
CREATE [<fi ier>]
sau prin alegerea op iunii File, New (în acest caz în caseta New se
selecteaz Table i New file). Ca urmare pe ecran este deschis
fereastra constructorului de tabele, în care vor fi precizate
caracteristicile noului tabel (nume, tip, lungime, etc.) i a indec ilor
folosi i la ordonarea datelor din list .
Fiecare câmp (field, coloan ) al unui tabel este caracterizat prin:
nume (Name);
tip (Type) - ir de caractere, numeric, dat calendaristic sau
moment de timp, logic, memo;
2 Baze de date în Visual FoxPro
l ime (Width) - num rul de caractere pe care îl ocup fiecare
dat memorat în acel câmp;
num rul de zecimale (Decimal) - pentru datele de tip numeric;
fanionul de indexare (Index) - indic dac se stabile te un
index pe câmpul respectiv (indec ii reprezint o tehnologie cu
ajutorul c reia datele din tabele sunt v zute într-o anumit
ordine, dat de un anumit criteriu numit criteriu de indexare);
fanionul de valoare nul (NULL) - arat dac în câmpul
respectiv poate fi memorat o valoare nul , pentru a se face
diferen ierea între un câmp l sat necompletat i unul completat
cu valoarea 0.
1.2. Deschiderea (activarea) tabelelor de date
Pentru ini ierea unei sesiuni de lucru cu un tabel de date, acesta
trebuie s fie activat (deschis). Deschiderea unui tabel de date se poate
realiza prin meniu (File, Open, Files of type: Table (*.dbf)) sau prin
comanda USE:
USE [<fi ier>] [IN <zona de lucru>] [TAG <nume etichet >]
[ASCENDING DESCENDING]
[ALIAS <alias>] [EXCLUSIVE] [NOUPDATE]
Baze de date în Visual FoxPro 3
o <fi ier> - numele tabelului de date care va fi deschis
(extensia implicit DBF);
o IN - permite deschiderea unui tabel de date într-o alt zon
de lucru decât cea curent ;
o TAG - face precizarea unei variante de indexare;
o ASCENDING DESCENDING - precizeaz tipul ordon rii
(implicit ascendent ) atunci când se folose te indexarea;
o ALIAS - stabile te un nou alias;
o EXCLUSIVE - asigur exclusivitatea folosirii unui tabel de date
atunci când se lucreaz într-o re ea de calcul;
o NOUPDATE - protejeaz tabelul de date la scriere (este
deschis doar pentru consultare).
Observa ii
Derularea unei sesiuni de lucru în FoxPro se realizeaz în
directorul de lucru implicit. Acest director poate fi schimbat
prin comanda:
SET DEFAULT TO <path> unde path define te noul director.
Lista tabelelor de date aflate în directorul de lucru poate fi
ob inut prin lansarea comenzii:
DIR
Se poate limita, temporar, accesul la înregistr rile tabelului de
date prin folosirea comenzii:
SET FILTER TO <cond>
4 Baze de date în Visual FoxPro
Zone de lucru
Pentru manipularea simultan a mai multor tabele de date,
FoxPro folose te zone speciale de memorie numite zone de lucru, în
care depune informa iile necesare efectu rii opera iilor cu tabelele de
date respective.
Pentru identificarea unei zone de lucru se folosesc alias-uri
(literele A, B, C sau cifrele 1, 2, 3, ) care permit identificarea
tabelelor de date i altfel decât prin numele lor. În afar de aceste
alias-uri utilizatorul poate defini i propriile sale alias-uri.
Observa ii
La pornirea FoxPro-ului zona de lucru implicit va fi zona 1 (cu
alias 1 sau A). Aceasta se poate schimba prin comanda :
SELECT <expN> <expC>
Comanda este urmat de o cifr , liter sau de un alias definit
de utilizator. Dac alias-ul este 0 se va selecta prima zon de
lucru neselectat .
Pentru a ob ine informa ii despre zonele de lucru folosite i
tabelele de date deschise se pot folosi dou func ii:
USED([<alias>]) i DBF([<alias>])
Func ia USED returneaz .T. sau .F. dac , în zona de lucru
curent sau precizat prin alias, este sau nu prelucrat un tabel de
date. Func ia DBF returneaz numele tabelului de date deschis în
zona de lucru.
Baze de date în Visual FoxPro 5
Exemple:
use personal in 1
use nomenclator in B alias nomen
select nomen
?dbf()
C:\PROGRAM
FILES\DEVSTUDIO\VFP\JOB\[Link]
?used(1)
.T.
1.3. Modificarea structurii unui tabel de date
Modificarea caracteristicilor unui tabel de date poate fi f cut prin
comanda:
MODIFY STRUCTURE
Aceast comand permite modificarea structurii tabelului de date
activ prin deschiderea unei ferestre de dialog, aceea i ca la crearea
tabelului de date. Modific rile care pot fi aduse structurii unui tabel de
date sunt :
schimbarea numelor, tipurilor i l imii câmpurilor deja
existente;
tergeri, inser ri de câmpuri, prin plasarea cursorului pe zona
de modificare (prima coloan din fereastra de dialog) i
ac ionarea butoanelor Delete i Insert.
Dup efectuarea modific rilor, FoxPro copiaz con inutul tabelului
de date vechi în tabelul de date nou, cu efectuarea schimb rilor
respective.
Caracteristicile unui tabel de date (structura) pot fi vizualizate
prin comanda:
DISPLAY STRUCTURE
6 Baze de date în Visual FoxPro
1.4. Închiderea prelucr rii tabelelor de date
Finalizarea opera iei de prelucrare a tabelelor se poate face prin
comenzile:
USE sau CLOSE ALL
Prima comanda închide prelucrarea tabelului de date din zona
de lucru curent iar a doua închide i elibereaz toate zonele de lucru
(în acest caz zona curent devine zona de lucru 1).
1.5. Editarea con inutului unui tabel de date
Prelucrarea înregistr rilor. Înregistrarea curent .
Un grup de înregistr ri (domeniu) poate fi:
All semnific toate înregistr rile tabelei;
Next urm toarele înregistr ri;
Record - înregistrarea cu num rul de ordine specificat;
Rest restul înregistr rilor din pozi ia curent pân la sfâr itul
tabelului.
Prelucrarea tabelelor de date se realizeaz la nivel de
înregistrare. La un moment dat este activ un singur tabel de date i o
singur înregistrare din acest tabel. Fiecare înregistrare are un num r
de ordine, asociat acesteia la introducerea ei în tabelul de date.
Num rul de ordine al înregistr rii curente poate fi modificat prin
comenzile:
GOTO TOP | BOTTOM | RECORD <expN>
(salt la prima, ultima sau înregistrarea precizat din tabel);
Baze de date în Visual FoxPro 7
SKIP [±<expN>]
(salt înainte sau înapoi cu un num r de înregistr ri);
LOCATE [<domeniu>] [FOR <cond1>] [WHILE <cond2>]
(c ut prima înregistrare care respect condi ia <cond1>,
domeniul înregistr rilor fiind dat de clauzele <domeniu> i
WHILE).
Pozi ia curent în tabelul de date poate fi stabilit cu ajutorul
func iilor:
EOF() returneaz .T. sau .F. dup cum este detectat sau nu
marcajul de sfâr it de fi ier (aflat dup ultima înregistrare);
BOF() returneaz .T. sau .F. pentru început de fi ier;
RECNO() furnizeaz num rul de ordine al înregistr rii
curente.
Exemple:
use personal
?recno()
1
goto record 7
?recno()
7
goto top
?recno()
1
skip 1
?bof()
.T.
skip 3
?recno()
3
go bottom
skip
?eof()
.T.
locate for nume=ALEX
8 Baze de date în Visual FoxPro
Introducerea înregistr rilor noi într-un tabel de date
Num rul de înregistr ri dintr-o baz de date, furnizat de func ia
RECCOUNT(), poate fi modificat, prin introducerea unor înregistr ri
vide (ad ug ri, inser ri):
APPEND BLANK sau INSERT BLANK [BEFORE]
Inserarea se execut implicit dup înregistrarea curent , dac nu
se folose te op iunea BEFORE, iar urm toarele înregistr ri sunt
translatate spre sfâr itul tabelului de date i renumerotate.
tergerea înregistr rilor dintr-un tabel
Eliminarea unor înregistr ri din tabelele de date se efectueaz la
nivel logic sau fizic prin utilizarea comenzilor DELETE, RECALL, PACK,
ZAP.
a) tergerea logic (marcare pentru tergere). Prin marcarea
pentru tergere înregistr rile din tabelele de date nu sunt
eliminate definitiv. Pentru tergerea logic este utilizat
comanda:
DELETE [<domeniu>] [FOR <cond1>] [WHILE <cond2>]
Aceast comand (precum i altele) folose te clauza FOR pentru
selectarea tuturor înregistr rilor care corespund condi iei logice
<cond1>. Clauza WHILE întrerupe testarea înregistr rilor când
g se te o înregistrare ce nu respect condi ia dat , <cond2>.
Accesul la înregistr rile marcate pentru tergere este controlat de
comanda:
SET DELETED ON OFF
Baze de date în Visual FoxPro 9
Când se alege op iunea ON, înregistr rile marcate pentru
tergere nu vor fi accesibile celorlalte comenzi, iar când se
selecteaz op iunea OFF, înregistr rile sunt accesibile indiferent
de marcajul de tergere (starea implicit este OFF). Aceast
comand este util atunci când se lucreaz pe grupuri de
înregistr ri.
b) Demarcarea tergerii logice. Marcajele de tergere logic pot
fi anulate prin folosirea comenzii:
RECALL [<domeniu>] [FOR <cond1>] [WHILE <cond2>]
c) tergerea fizic . Prin folosirea acestui tip de tergere
înregistr rile sunt eliminate definitiv din tabelul de date
( tergerile fizice nu mai pot fi ref cute). tergerile fizice au
efect asupra înregistr rilor marcate logic sau asupra tuturor
înregistr rilor din tabelul de date prelucrat prin utilizarea uneia
din comenzile:
PACK sau ZAP
Modificarea con inutului înregistr rilor
Modificarea con inutului înregistr rilor dintr-un tabel de date
presupune înlocuirea valorilor din unul sau mai multe câmpuri cu altele
noi. Comanda REPLACE permite actualizarea tabelelor de date cu valori
precizate în comand i are urm toarea sintax :
REPLACE <câmp1> WITH <exp1> [, <câmp2> WITH <exp2> ...]
[<domeniu>] [FOR <cond1>] [WHILE <cond2>]
REPLACE înlocuie te vechea valoare din câmpul <câmp1> cu
valoarea expresiei <exp1>, valoarea din câmpul <câmp2> cu
<exp2> i a a mai departe.
10 Baze de date în Visual FoxPro
Exemple:
use personal
?reccount()
25
append blank
?reccount()
26
goto 7
insert blank before
?recno()
7
dele next 3
skip -1
recall
pack
?reccount()
24
replace for nume=ALEX nume with ALEXANDRU
Fereastra BROWSE
Principala comand , pentru realizarea diferitelor opera iuni
asupra tabelelor de date, prin deschiderea unei ferestre de lucru, este
comanda BROWSE care poate fi editat în urm toarea sintax :
BROWSE [FIELDS <list de câmpuri>] [FOR <cond>]
[FREEZE <câmp>]
[NOAPPEND] [NODELETE] [NOEDIT NOMODIFY]
o FIELDS - permite ca numai câmpurile precizate s intre în editare
(selec ie pe vertical );
o FOR precizeaz condi iile conform c rora înregistr rilor vor fi
afi ate în fereastra BROWSE;
o FREEZE - permite modific ri doar pe câmpul precizat;
o NOAPPEND invalideaz posibilitatea efectu rii ad ug rilor;
o NODELETE elimin marcarile pentru tergere;
o NOEDIT NOMODIFY - interzice modific rile.
Baze de date în Visual FoxPro 11
Ca efect al lans rii comenzii BROWSE, în meniul principal, apare
o nou op iune, Table, care permite:
ad ugarea unei noi înregistr ri la un tabel de date: Append New
Record (Ctrl+Y);
stabilirea înregistr rii curente:
precizarea unor criterii de pozi ionare, Locate , la fel ca prin
folosirea comenzii cu acela i nume:
Domeniul
Clauza
Clauza
12 Baze de date în Visual FoxPro
tergerea datelor din tabele:
o marcare (demarcare) pentru tergere: Toggle Deletion
Mark (Ctrl+T) sau clic cu mouse-ul pe fanionul de
tergere din dreptul înregistr rii:
Fanionul de tergere
o tergere fizic : Remove Deleted Records;
o tergeri conform sintaxei comenzilor DELETE i RECALL:
Delete Records, Recall Records;
modific ri ale valorilor înscrise în câmpurile tabelelor
conform sintaxei comenzii REPLACE: Replace Field.
Câmpuri MEMO
Câmpurile MEMO definesc câmpuri de lungime variabil de
tip text. Un tabel de date, cu cel pu in un câmp MEMO, are asociat un
fi ier suplimentar în care sunt depuse informa iile legate de acest
câmp. Pentru a putea identifica datele din fi ierul MEMO asociat, care
Fi ierul MEMO
asociat
Tabelul de date
Baze de date în Visual FoxPro 13
apar in unei anumite înregistr ri, în tabelul de date, pe pozi ia
corespunz toare a înregistr rii, se memoreaz o adres spre fi ierul
MEMO (pozi ia primului caracter al câmpului respectiv).
Modificarea câmpurilor MEMO se poate face în fereastra Browse
sau prin comenzi specifice:
MODIFY MEMO <câmp memo1>[,<câmp memo2>,....]
- se deschide câte o fereastr de editare pentru fiecare câmp
memo;
CLOSE MEMO <câmp memo1>[,<câmp memo2>,....] ALL
- se vor închide ferestrele de editare corespunz toare câmpurilor
memo specificate în list (sau toate - ALL);
APPEND MEMO <câmp memo> FROM <fi ier> [OVERWRITE]
- con inutul unui fi ier extern, de tip text, va fi ad ugat la
sfâr itul câmpului memo precizat (dac se folose te clauza
OVERWRITE vechiul con inut al câmpului se pierde);
COPY MEMO <câmp memo> TO <fi ier> [ADDITIVE]
-con inutul unui câmp memo se copiaz într-un fi ier extern de
tip text. Dac se folose te clauza ADDITIVE copierea se va face la
sfâr itul unui fi ier deja existent.
1.6. Ordonarea i actualizarea tabelelor de date
Înregistr rile apar, în tabelul de date, în ordinea în care au fost
introduse, dar nu întotdeauna aceasta este i ordinea lor de utilizare.
Ordonarea unui tabel presupune stabilirea unui criteriu dup care s fie
parcurse înregistr rile acestuia. Acest criteriu poate fi un câmp sau o
combina ie de câmpuri ale tabelului de date numit cheie de ordonare.
14 Baze de date în Visual FoxPro
O cheie de ordonare este o expresie, alc tuit din câmpuri ale tabelului,
care este evaluat pentru fiecare înregistrare, ordinea de prelucrare a
înregistr rilor fiind dat de valorile acestei expresii. Se folosesc dou
metode de ordonare a bazelor de date: fizic i logic .
Ordonarea fizic (sortarea)
Sortarea const în rearanjarea fizic a datelor din tabel într-o alt
ordine, dat de criteriul de sortare. Astfel rezult un tabel de date nou
cu acelea i informa ii ca i cel original, dar ordinea fizic (natural ) a
înregistr rilor este schimbat .
SORT TO <fi ier> ON <câmp1> [/A /D] [/C]
[, <câmp2>[/A /D] [/C] ...]
[ASCENDING DESCENDING]
[<domeniu>] [FOR <cond>] [WHILE <cond>]
[FIELDS <list de câmpuri>]
o <fi ier> - numele tabelului de date nou creat;
o <câmp1>,<câmp2>,.... - lista cheilor de sortare;
o /A , /D - sortare ascendent , descendent , relativ la câmpul
asociat;
o - sortare în ordine alfabetic , necontând literele mari sau mici;
o - ordonare ascendent sau descendent
cu specificarea ordinii pentru toate câmpurile;
o FIELDS - selec ie pe vertical (filtrare).
Ordonarea logic (indexarea)
Indexarea este o metod mult mai eficient de ordonare a
tabelelor de date, care permite ca opera iile de consultare i c utare a
datelor în tabel s fie rapide. Prin indexare se creeaz un fi ier index,
asociat bazei de date, de dimensiuni mult mai mici decât dimensiunea
bazei de date. F r a detalia structura fi ierului index, trebuie
men ionat c fi ierul index este o list simplu înl n uit a numerelor
articolelor din baza de date aflate în ordinea lor natural .
Baze de date în Visual FoxPro 15
La definirea structurii bazei de date (prin CREATE sau MODIFY
STRUCTURE), în coloana Index, se pot defini unul sau mai multe criterii
de indexare care sunt identificate prin etichete (numele unei etichete
este acela i, în acest caz, cu numele câmpului). Activarea unuia sau
altuia din criteriile de indexare se realizeaz în dou moduri:
a) la deschiderea tabelului de date:
USE <fi ier> ORDER <nume etichet >
b) în timpul lucrului prin comanda:
SET ORDER TO TAG <nume etichet >
Stabilirea altor criterii de indexare, diferite de cele definite în
structura tabelului de date, se poate face prin comanda:
INDEX ON <exp> TAG <nume etichet >
[FOR <cond>]
[ASCENDING DESCENDING]
[UNIQUE]
o TAG - identific un criteriu de indexare;
o UNIQUE - clauz care nu admite dubluri pe câmpul de
indexare
tergerea unei etichete (criteriu) de indexare se realizeaz
utilizând comanda:
DELETE TAG <nume etichet > ALL
Principalul avantaj al index rii rezult din posibilitatea localiz rii
rapide a unor înregistr ri, mult mai eficient decât cea furnizat prin
LOCATE. Acest lucru este realizat prin comanda:
SEEK <exp>
16 Baze de date în Visual FoxPro
Comanda SEEK caut prima înregistrare pentru care valoarea
expresiei calculate cu valori din câmpurile acesteia este egal cu
<exp>, pe criteriul de indexare selectat.
Observa ii
la un moment dat poate fi activ un singur criteriu de indexare,
numele etichetei corespunz toare fiind furnizat de func ia
TAG();
efectul unei comenzi de c utare (SEEK sau LOCATE) poate fi
prelungit prin folosirea comenzii CONTINUE;
func ia FOUND() determin (.T. sau .F.) dac s-a reu it sau
nu localizarea.
Comanda:
SET EXACT ON OFF
stabile te modalitatea de c utarea pe sub iruri de caractere.
Clauza implicit este OFF.
Dac <exp> este un ir de caractere, acesta trebuie pus între
apostrofuri.
1.7. Introducerea formatat a datelor
FoxPro ofer posibilitatea introducerii datelor sub forma unor
machete sau formate prin asocierea la clauza GET a clauzelor
PICTURE i FUNCTION:
@<linie, coloan > [GET<variabil >]
[PICTURE <expC>] [FUNCTION <expC>]
[READ]
@ plaseaz cursorul pe pozi ia specificat a ecranului.
GET stabile te por iunea de pe ecran unde vor fi introduse
valorile ce vor fi atribuite variabilei <variabil >.
Baze de date în Visual FoxPro 17
PICTURE i FUNCTION permit formatarea afi rii datelor.
Ambele clauze sunt urmate de un ir de caractere care con ine
coduri referitoare la modul de afi are.
Codurile PICTURE se refer doar la un anumit caracter din
formatul de afi are i anume la cel de pe aceea i pozi ie cu
cea a codului.
Codurile FUNCTION ac ioneaz asupra tuturor caracterelor din
formatul de afi are.
Clauzele PICTURE i FUNCTION pot ac iona împreun , dar
FUNCTION este prioritar .
READ determin citirea con inutelor zonelor de editare pentru
introducerea valorilor de la tastatur , create prin GET.
Codurile de formatare PICTURE
X Permite orice caracter
9 Cifre i semnele + - . E (date numerice)
# Cifre, spatii i semnele + - . E
A Numai litere
W Numai date logice
N Numai litere i cifre
Y Permite doar caracterele logice Y, y, N i n
! Literele sunt convertite în majuscule
* Afi eaz asterix-uri în locul zerourilor ini iale
. Specific pozi ia punctului zecimal.
Codurile de formatare FUNCTION
A Permit numai caractere alfabetice (litere)
B Aliniere la stânga
I Centrare
J Aliniere la dreapta
C Dup un num r pozitiv se afi eaz CR (credit)
D Format dat calendaristic stabilit de SET DATE
E Format dat calendaristic european (britanic)
T Elimin spatiile de început i sfâr it
X Dup un num r negativ se afi eaz DB (debit)
Z Afi eaz spatii dac valoarea câmpului este 0
( Numerele negative sunt incluse între paranteze
! Literele sunt convertite în majuscule.
18 Baze de date în Visual FoxPro
Exemple:
* citirea unui num r cu dou zecimale pe câmp de 7
caractere:
a=0
@10,10 GET a PICTURE '9999.99'
READ
* citirea oric ror caractere pe câmp de lungime 10:
b=space(10)
@10,10 GET b PICTURE REPLICATE ('X',10)
READ
* introducere cu majuscule:
b=space(10)
@10,10 GET b PICTURE REPLICATE ('!',10)
READ
* introducerea unei majuscule i a dou cifre cu centrare:
.....PICTURE 'A99' FUNCTION 'I!'
* urm toarele machete de editare sunt echivalente:
..... PICTURE 'AAAAA' FUNCTION '!'
..... PICTURE 'XXXXX' FUNCTION 'A!'
1.8. Actualizarea tabelelor de date
Actualizarea tabelelor de date înseamn modificarea
structurii tabelelor de date (vezi comanda MODIFY STRUCTURE) sau
modificarea con inutului acestora. În ceea ce prive te modificarea
con inutului unui tabel de date se au în vedere posibilit ile de
tergere sau ad ugare a unor înregistr ri precum i modificarea
con inutului celor existente (vezi comenzile DELETE, PACK, RECALL,
REPLACE). Pentru editarea de la tastatur a tabelelor de date se
poate utiliza comanda BROWSE sau se pot alc tui secven e program.
Exemplu.
Fie fi ierul [Link], având structura:
Nume Caracter 30
Data_N Date 8
Telefon Caracter 10
Baze de date în Visual FoxPro 19
Pentru introducerea, de la tastatur , a unor date în acest fi ier
se poate concepe urm toarea procedur :
procedure introducere
clear
@10,10 say 'Numele' get nume function '!'
@12,10 say 'Data nasterii' get data_n
@14,10 say 'Telefonul' get telefon
read
endproc
Folosind aceast procedur se poate edita urm toarea secven
pentru consultarea i actualizarea fi ierului [Link]:
clear
use agenda
TEXT
Alegeti optiunea:
1. Afisare
2. Adaugare
3. Modificare
0. Terminare
ENDTEXT
opt=0
@10,20 say 'Optiunea:' get opt picture '9' range 0,3
read
clear
do case
case opt=1
do afisare
case opt=2
do adaugare
case opt=3
do modificare
case opt=0
cancel
endcase
cancel
procedure afisare
browse
endproc
procedure adaugare
append blank
20 Baze de date în Visual FoxPro
do introducere
endproc
procedure modificare
numele = space(30)
@10,0 say 'Numele cautat' get numele function '!'
read
locate for nume=numele
if found()
do introducere
else
WAIT 'Nume negasit!'
endif
endproc
Observa ii
o Pentru afi area meniului de op iuni s-a utilizat instruc iunea
TEXT ENDTEXT
o Pentru afi area mesajului de eroare Nume negasit! s-a
utilizat instruc iunea WAIT.
1.9. Ciclul SCAN
Ciclul SCAN este un ciclu cu num r finit de pa i, specializat în
lucrul cu tabele de date. Aceast structur repetitiv realizeaz
parcurgerea tabelului i executarea unui grup de instruc iuni pentru
fiecare înregistrare care îndepline te condi iile specificate. Ciclul este
utilizat, deseori, pentru actualizarea con inutului tabelelor de date,
conform unor anumite condi ii, sau pentru ob inerea informa iilor
statistice.
Sintaxa este:
SCAN [<domeniu>] [FOR <cond1>] [WHILE <cond2>]
[<instruc iuni>]
[LOOP]
[EXIT]
ENDSCAN
Baze de date în Visual FoxPro 21
1.10. Extragerea unor informa ii statistice
Comenzile care permit extragerea unor informa ii din tabelele
de date se aplic asupra unor câmpuri sau asupra unor expresii care
con in numele unor câmpuri.
COUNT [TO <var>]
[FOR <cond>] [<domeniu>] [WHILE <cond>]
- num r înregistr rile din tabelul de date, num rul de
înregistr ri putând fi memorat într-o variabil de lucru;
SUM <list exp>[TO<list var>]
[FOR <cond>] [<domeniu>] [WHILE <cond>]
- însumeaz valorile expresiilor din lista de expresii(<list exp>)
i le atribuie, eventual, unei liste de variabile (<list var>);
AVERAGE <list exp>[TO <list var>]
[FOR <cond>] [<domeniu>] [WHILE cond>]
- la fel ca SUM având ca rezultat media aritmetic .
CALCULATE <list funct>[TO<list var>]
[FOR <cond>] [<domeniu>] [WHILE <cond>]
- calculeaz anumite expresii folosind urm toarele func ii (<list
funct>):
SUM(<expN>) - suma;
AVG(<expN>) media aritmetic ;
STD(<expN>) devia ia standard;
VAR(<expN>) abaterea medie p tratic ;
MAX(<exp>) val maxim , nu neap rat numeric ;
MIN(<exp>) val minim , nu neap rat numeric ;
NPV(<expN1>,<expN2>)[,<expN3>])
valoarea prezent net a unei investi ii (vezi
func ia de calcul financiar);
CNT() num rul de înregistr ri din tabelul de date.
22 Baze de date în Visual FoxPro
Aplica ii
10 Se creaz tabelul (fi ierul) de date [Link] având
structura:
nume Numele angajatului ir de caractere
marca Cod numeric angajat ir de caractere
functia Func ia angajatului ir de caractere
salariu Salariul brut Numeric
datanast Data na terii Dat calendaristic
sex Sex Logic
adresa Adresa angajatului Memo
20 Se introduc în tabel urm toarele înregistr ri:
- în câmpul sex se înscriu valorile .T. (masculin) i .F. (feminin)
- valorile din câmpul adresa (text de lungime variabil ) nu pot fi înscrise
direct în tabel, dar sunt stocate într-un fi ier asociat tabelului de date
numit fi ier memo. Trimiterea spre acest fi ier se poate face printr-un
dublu clic, cu mouse-ul pe câmpul memo corespunz tor
30 Informa ii privind:
fi ierele tabel de date prezente pe disc, în directorul de lucru:
dir
num rul de înregistr ri ale tabelului de date i num rul de
ordine al înregistr rii curente:
?reccount()
?recno()
Baze de date în Visual FoxPro 23
40 Opera ii asupra tabelului de date:
limitarea accesului în tabel la înregistr rile care con in angaja i
de sex masculin:
set filter to sex=.T.
browse
anularea filtr rii:
set filter to
browse
localizarea înregistr rii cu marca 177 :
locate for marca=177
browse
marcarea pentru tergere a înregistr rilor 2 i 4:
delete record 2
delete record 4
browse
marcarea pentru tergere a înregistr rilor corespunz toare
persoanelor cu vârste mai mari de 40 ani:
delete all for (year(date())-year(datanast))>40
browse
demarcarea tuturor înregistr rilor:
recall all
browse
tergerea fizic a înregistr rilor pentru care salariul este
cuprins între 3500000 i 12000000:
dele all for salariu >=3500000 and salariu <=12000000
pack
browse
înlocuirea, în câmpul nume, a literelor mici cu litere mari:
replace all nume with upper(nume)
24 Baze de date în Visual FoxPro
browse
înlocuirea valoric a salariului, la to i salaria ii, cu 12%:
replace all salariu with salariu*1.12
browse
50 Editarea tabelului de date selectiv (selec ii pe orizontal i pe
vertical ) utilizând comanda BROWSE:
afi area pe câmpurile nume, functia, salariu :
browse fields nume, functia, salariu
editarea înregistr rilor corespunz toare persoanelor de sex
masculin i a câmpurilor nume, salariu:
browse fields nume, salariu for sex=.T.
editarea tabelului de date doar pe câmpul salariu:
brow freeze salariu
60 Introducerea adresei persoanelor având marca 204 i 161 :
locate for marca='204'
modify memo adresa
locate for marca='161'
modify memo adresa
70 Se creaz , prin sortare, un tabel de date [Link],
ordonarea f cându-se dup câmpurile Functia (cheie primar ) i
Salariu (cheie secundar ), ascendent:
sort on functia, salariu to Persoane
use Persoane
browse
80 Se definesc urm toarele criterii de indexare:
criteriul nume+functia, num:
index on nume+functia tag num
criteriul functia+salariu, func:
index on functia+str(salariu,8) tag func
criteriul salariu, descendent:
index on salariu tag salariu descending
criteriul marca
index on marca tag marca
Baze de date în Visual FoxPro 25
90 Vizualizarea tabelului de date conform celor patru criterii de
indexare definite anterior:
set order to tag num
browse
set order to tag func
browse
set order to tag salariu
browse
?tag()
set order to tag marca
browse
100 Folosind criteriul marca, se localizeaz înregistrarea de cod
204 i se face, pentru aceasta, o m rire de salariu de 8%:
set order to tag marca
seek '204'
replace salariu with salariu*1.08
110 Informa ii despre tabelul de date:
num rul total de înregistr ri:
count to tot
?tot
num rul de angaja i Secretara:
count for functia='Secretara' to a
?a
sau (prin program):
a=0
scan for functia='Secretara'
a=a+1
endscan
?a
media salarial pentru func ia Secretara:
average salariu for functia='Secretara' to b
sau:
calculate avg(salariu) for functia='Secretara' to b
?b
salariul maxim:
calculate max(salariu) to m
?m
26 Baze de date în Visual FoxPro
sau (prin program):
maxim= salariu
scan
if salariu >maxim
maxim=salariu
endif
endscan
?maxim
2. Utilizarea bazelor de date i a vederilor
2.1. Crearea unei baze de date (Database)
Prin crearea unei baze de date mai multe tabele de date sunt
reunite într-o singur colec ie. Fiecare baz de date are asociat un
dic ionar de date care ofer mai mult flexibilitate în proiectarea i
modificarea bazei de date i reduce sarcina programatorului de a
scrie cod pentru valid rile la nivel de câmp i de înregistrare sau
pentru a asigura unicitatea valorilor din câmpurile reprezentând chei
primare. Fi ierele baz de date, con inând tabele de date i
informa iile asociate lor sunt fi iere având extensia implicit dbc.
Dic ionarul de date Visual FoxPro permite crearea sau
specificarea unor elemente cum ar fi:
Cheile primare i secundare;
Rela iile dintre tabelele bazelor de date;
Valorile implicite ale câmpurilor;
M tile de intrare i a formatelor de afi are a câmpurilor;
Regulile la nivel de câmp i de înregistrare;
Procedurile stocate.
Crearea unei baze de date poate fi ini iat prin comanda:
MODIFY DATABASE [<fi ier>]
Baze de date în Visual FoxPro 27
sau prin alegerea op iunii File, New din meniu (în acest caz în caseta
New se selecteaz Database i New file). Când se creeaz o nou
baz de date, aceasta nu con ine nimic (tabele asociate sau alte
obiecte).
Pentru ini ierea unei sesiuni de lucru cu o baz de date,
aceasta trebuie s fie activat (deschis ). Deschiderea unei baze de
date se poate realiza prin meniu (File, Open, Files of type: Database
(*.dbc)) sau prin comanda MODIFY DATABASE.
Observa ie
Lucrul cu bazele de date se realizeaz utilizând Constructorul
bazei de date în fereastra Database Designer, in meniul
principal fiind activat op iunea Database care ofer
instrumentele de lucru cu bazele de date.
Sfat
Lucra i cu bara de instrumente Database Designer. Dac
aceasta nu este afi at utiliza i meniul: View,
Toolbars Database Designer.
Remove Table
New Local View Browse Table
Add Table Modify Table
New Table
Bara de instrumente Database Designer permite efectuarea unor
opera iuni asupra bazelor de date cum ar fi:
New Table Crearea unui nou tabel de date i includerea lui
în baza de date;
Add Table Includerea unui tabel deja creat în baza de date;
Remove Table Eliminarea unui tabel de date din baza de
date;
Modify Table Modificarea structurii unui tabel;
Browse Table Deschiderea ferestrei de vizualizarea pentru
un tabel;
New Local View Crearea unei vederi (View).
28 Baze de date în Visual FoxPro
2.2. Ad ugarea tabelelor la baza de date
Fiecare tabel Visual FoxPro poate exista în una din urm toarele
dou st ri: ca tabel liber, adic sub form de fi ier .dbf neasociat
vreunei baze de date, sau ca tabel dintr-o baz de date, adic sub
form de tabel asociat unei baze de date. Tabelele asociate unei
baze de date au unele propriet i specifice, care nu exist în cadrul
tabelelor externe, cum ar fi regulile la nivel de câmp i de
înregistrare, declan atoarele i rela iile permanente.
Tabelele pot fi asociate cu o baz de date prin crearea lor în
cadrul unei baze de date deschise în fundal sau prin ad ugarea
tabelelor existente la o baz de date.
Observa ie
Un tabel existent poate fi asociat cu o singur baz de
date.
2.3. Eliminarea tabelelor din baza de date
Prin ad ugarea unui tabel la o baz de date, Visual FoxPro
modific înregistrarea din antetul fi ierului corespunz tor tabelului
pentru a actualiza calea i numele fi ierului asociat bazei de date care
include acum tabelul. Procesul de eliminare a unui tabel dintr-o baz
de date (Remove Table) nu numai c terge tabelul i dic ionarele de
date din fi ierul bazei de date, ci actualizeaz informa ia de rela ie
pentru a reflecta noul statut al tabelului, cel de tabel liber. Eliminarea
unui tabel dintr-o baz de date nu determin tergerea automat a
fi ierului asociat tabelului. Pentru tergerea fi ierului .dbf se poate
utiliza comanda DELETE.
2.4. Crearea rela iilor permanente între tabele
Pentru stabilirea unor rela ii între tabele, trebuie inut cont c
acestea nu sunt rela ii de egalitate, ci de subordonare. Unul dintre
tabele va fi p rinte (Parent Table), iar cel lalt copil (Child Table).
Baze de date în Visual FoxPro 29
În Visual FoxPro, sunt utiliza i indec ii pentru a stabili rela ii
permanente între tabelele bazei de date. Indec ii sunt constitui i pe
baza unor expresii (în particular indec ii pot fi nume de câmpuri ale
tabelelor) prin utilizarea procedeului de indexare. Tipul etichetei de
index sau al cheii determin tipul de rela ie permanent care se poate
crea. Este necesar folosirea unei chei primare (Primary) pentru
rela ii una la mai multe. Pentru partea mai multe, cheile de
indexare sunt chei obi nuite (Regular).
Exemplu
Baza de date [Link] include tabelele [Link],
[Link], [Link]. Aceste tabele de date sunt indexate dup
câmpurile codc (cod client) i codp (cod produs). Tabelele [Link]
i [Link] sunt tabele p rinte iar tabelul [Link] este tabel
copil, stabilindu-se rela ii una la mai multe: [Link] [Link]
Figura 2.1
i [Link] [Link]. În tabelul [Link] respectiv
[Link] cheile codc, codp sunt primare (unice), valorile
corespunz toare acestora neputând fi scrise decât o singur dat în
tabel nu pot exista mai mul i clien i sau mai multe produse cu
acela i cod:
30 Baze de date în Visual FoxPro
Figura2.2
În tabela copil, [Link], pot apare de mai multe ori acela i
coduri de clien i sau produse. Se impune stabilirea cheilor codc i
codp drept chei normale:
Figura 2.3
Crearea unei rela ii permanente între tabele:
În fereastra Database Designer, se alege numele indexului
primar (cum ar fi codc) i apoi se trage spre numele indexului din
tabela legata (cum ar fi codc din [Link]).
tergerea unei rela ii permanente dintre tabele:
În fereastra Database Designer, se execut clic pe linia de
rela ie dintre dou tabele. Ca urmare, l imea liniei de rela ie cre te
pentru a indica faptul c s-a selectat rela ia respectiv . Pentru
eliminarea rela iei se apas tasta DELETE.
Baze de date în Visual FoxPro 31
Crearea integrit ii referen iale
Generatorul de Integritate Referen ial (Referential
Integrity Builder) se lanseaz prin meniu: Database, Edit Referetial
Integrity. Generarea integrit ii referen iale presupune crearea unui
set de reguli care s p streze rela iile definite între tabele atunci când
se insereaz sau se terg înregistr ri.
Figura2.4
Prin înt rirea integrit ii referen iale, Visual FoxPro nu permite:
S se adauge înregistr ri la un tabel copil atunci când nu exist
nici o înregistrare asociat în tabelul p rinte.
S se modifice valori în tabelul p rinte care ar duce la apari ia
de înregistr ri orfane în tabelul copil.
S se tearg înregistr ri din tabelul p rinte atunci când exist
înregistr ri asociate în tabelul copil.
Generatorul de integritate referen ial gestioneaz mai multe
niveluri de tergere i actualiz ri în cascad i este instrumentul cel
mai potrivit pentru generarea integrit ii referen iale.
32 Baze de date în Visual FoxPro
Observa ii
Se recomand lansarea generatorului de integritate
referen ial imediat dup includerea unui nou tabel i
stabilirea rela iilor cu alte tabele deja incluse.
Se recomand realizarea rela iilor de integritate în
cascad .
Dac se intervine în arhitectura bazei de date, de pild , prin
modificarea tabelelor sau a indec ilor folosi i într-o rela ie
permanent , se impune relansarea generatorului înainte de
a se folosi baza de date astfel încât acesta s reflecte noua
arhitectur . Altfel, pot fi generate rezultate imprevizibile.
2.5. Închiderea unei baze de date
Închiderea unei baze de date se poate realiza prin comenzile:
CLOSE DATABASE -sau- CLOSE ALL
2.6. Crearea unei vederi (View)
Vederile reprezint un tip special de tabele, construite pe baza
datelor din una sau mai multe tabele sau vederi legate între ele prin
rela ii. Vederile sunt folosite atunci când se dore te o alt structur a
tabelelor (bazelor de date), structur construit pe baza unor tabele
i vederi deja existente.
Observa ii
Vederile sunt incluse în bazele de date, ele neputând fi
folosite decât atunci când baza de date care le con ine este
deschis . Chiar memorarea efectiv a vederilor se face în
fi ierul bazei de date (.dbc).
Vederile sunt v zute i prelucrate ca orice alt tabel.
Vederile sunt tabele logice, nestocând fizic date.
Baze de date în Visual FoxPro 33
Crearea unei vederi în cadrul unei baze de date se poate realiza
prin meniu, File, New (în acest caz în caseta New se selecteaz
View i New file), sau folosind butonul New Local View din bara
de instrumente Database Designer. În meniul principal este activat
op iunea Query care ofer instrumentele de lucru pentru vederi i
interog ri. Pentru construirea vederilor se folose te un utilitar special
al SGBD-ului Visual FoxPro numit View Designer (Constructorul de
vederi).
Modul de utilizare a acestui utilitar este asem n tor celui
folosit pentru construirea interog rilor (Query Designer).
Construirea unei vederi implic parcurgerea urm toarelor etape
principale:
dac baza de date care urmeaz s con in vederea nu
este deschis , se deschide, eventual se creeaz ;
apoi se porne te Constructorul de vederi;
urmeaz precizarea sursei de date, adic a tabelelor din
care se preiau datele pentru construirea vederii respective:
Figura 2.5
34 Baze de date în Visual FoxPro
apoi se stabilesc câmpurile care vor intra în componen a
vederii, câmpuri selectate dintre cele ale tabelelor surs
precizate anterior;
în continuare, se specific o serie de parametri precum:
leg turile între tabelele specificate, eventualele condi ii de
filtrare (selec ie), ordonare, grupare a datelor în vedere,
modul de actualizare a datelor surs pe baza datelor din
vedere etc.
Aplica ii
10 Pentru eviden a produselor livrate de un furnizor se creeaz
baza de date [Link], având în componen urm toarele tabele
de date:
a) [Link] (Client C, 35 / Codc C, 4 / Adresa - memo)
b) [Link] (Data D / Cantitate N, 10 / Codc C, 4 /
Codp C, 5)
c) [Link] (Denumire C, 35 / Pret N, 10 /Um C, 6 /
Codp C, 5 / Stoc N, 12)
Baze de date în Visual FoxPro 35
unde Codc este codul atribuit firmei, iar Codp este codul produsului i
vor constituii cheile de leg tur între tabele.
20 S se indexeze tabelele de date:
[Link] dup câmpul Codc, c ruia i se va atribuii statutul de
cheie primar (vezi figura 2.2);
[Link] dup câmpurile Codc i Codp c rora li se va
atribuii statutul de chei normale (vezi figura 2.3);
[Link] dup câmpul Codp - cheie primar .
30 S se realizeze rela iile de tip una la mai multe (vezi figura 2.1):
a) între tabelele de date [Link] i [Link] (clic cu
mouse-ul pe cheia Codc din tabelul [Link] i tragere peste
cheia Codc din tabelul [Link]).
b) între tabelele de date [Link] i [Link].
40 S se lanseze Generatorul de Integritate Referen ial (prin
meniu: Database, Edit Referetial Integrity) pentru realizarea rela iilor
de integritate în cascad (Cascade) vezi figura 2.4. S se verifice
stabilirea integrit ii referen iale în urm toarele situa ii:
o tergere logic (DELETE) în tabelul p rinte, [Link], se
reflect ca tergere logic în tabelul copil [Link].
orice modificare a cheii primare din tabelul p rinte, [Link],
se reflect ca modificare în tabelul copil [Link].
50 S se includ în baza de date un tabel vedere, livrari:
36 Baze de date în Visual FoxPro
Indica ie
Se va ac iona butonul New Local View din bara de instrumente
Database Designer i se vor include în vedere cele trei tabele de date (vezi
figura 2.5), precum i câmpurile necesare. La închiderea ferestrei View
Designer, acestei vederi, i se va asocia numele livrari.
60 S se ob in situa ia livr rilor, afi ând con inutul tabelului livrari
(Browse):
3. Interogarea bazelor de date
O interogare a unei baze de date reprezint extragerea - în
func ie de anumite criterii i într-un anumit format - unor date din
tabele de date care alc tuiesc baze de date. Componenta Visual
FoxPro-ului care realizeaz acest obiectiv se nume te Query
Designer (Constructorul de interog ri), component
asem n toarea cu View Designer (Constructorul de vederi).
Datele extrase printr-o interogare pot fi prezentate sub diverse forme
(Browse, rapoarte, grafice, etc,).
3.1. Crearea, deschiderea i rularea unei interog ri
Crearea unei interog ri (fi ier cu extensia implicit
QPR) poate fi ini iat prin comanda:
MODIFY QUERY [<nume interogare>]
Baze de date în Visual FoxPro 37
sau prin alegerea op iunii File, New din meniu (în acest caz în caseta
New se selecteaz Form i New file).
Activarea (deschiderea) unui formular se poate realiza prin
meniu (File, Open, Files of type: Query (*.qpr)) sau prin comanda
MODIFY QUERY.
O interogare este o secven executabil care poate fi
rulat în urm toarele moduri:
din meniul principal (Query, Run Query),
prin ac ionarea butonului din linia de instrumente standard,
prin comanda DO <nume interogare>.
Observa ie
Prin lansarea Constructorului de interog ri, în fereastra
Query Designer, meniul principal va include op iunea Query
care ofer instrumentele de lucru necesare.
Sfat
Lucra i cu bara de instrumente Query Designer. Dac aceasta
nu este afi at utiliza i meniul: View, Toolbars Query
Designer.
Remove Table
Add Table Add Join
Show the SQL window
Query Destination
Maximize the table
i
Bara de instrumente Query Designer permite efectuarea unor
opera iuni cum ar fi:
Add Table Includerea unui tabel de date în interogare;
Remove Table Eliminarea unui tabel;
Add Join Stabilirea sau modificarea unor leg turi între
tabelele de date incluse în interogare;
Show the SQL window transpunerea secven ei de
interogare în instruc iuni SQL;
38 Baze de date în Visual FoxPro
Query Destination stabilirea destina iei unei interog ri: o
fereastr Browse, un tabel permanent, o list la imprimant
(report), un grafic, etc.
Maximize the table View modificarea formei de afi are a
con inutului ferestrei Query Designer.
Fereastra Query Designer (figura 3.1) este constituit din dou
zone, în care sunt afi ate tabelele surse de date (împreun cu leg turile
dintre ele), respectiv paginile în care se vor preciza parametrii de
definire a interog rii i anume:
Fields (câmpuri) specificarea câmpurilor surs ce vor fi incluse
în tabelul destina ie;
Join (leg tur ) leg turile între tabelele surs ;
Filter (filtru) condi iile de selec ie (filtrare) a datelor din tabelele
de date;
Order By (ordonare) specific ordinea de prelucrare;
Group By (grupare) criteriile de grupare a datelor;
Miscellaneous (altele).
Figura 3.1
Baze de date în Visual FoxPro 39
3.2. Fereastra Query Designer
Specificarea câmpurilor interog rii
Pentru ca un câmp s fie preluat într-o interogare se activeaz
pagina Fields, dup care acesta se selecteaz din lista Availabile
fields (câmpuri disponibile) i se ac ioneaz butonul Add. Ca urmare
numele câmpului va fi copiat în lista Selected fields (vezi figura 3.1).
Dac se dore te introducerea unui câmp calculat se va introduce
formula de calcul corespunz toare în caseta Functions and
expresions.
Specificarea leg turilor între tabelele de date
Modelul rela ional al bazelor de date permite stabilirea unor
leg turi între tabelele de date. Aceste rela ii pot fi permanente,
memorate în fi ierul bazei de date, sau stabilite dinamic în cadrul
unor secven e program. Stabilirea leg turilor dinamice se poate
realiza cu ajutorul comenzii:
SET RELATION TO <etichet 1> INTO <tabel1>,
<etichet 2> INTO <tabel2>,
unde:
- tabelul p rinte este cel activ;
- TO stabile te criteriile de ordonare;
- INTO precizeaz tabelele copil.
La fel ca în cazul definirii unei vederi (cu View Designer), pentru
stabilirea unei leg turi între dou tabele de date, este necesar ca cele
dou tabele s aib cel pu in un câmp comun prin intermediul c ruia
se realizeaz coresponden a. Rela ia stabilit între dou tabele legate
este o rela ie de subordonare: unul din tabele va fi tabelul p rinte,
iar cel lalt va fi tabelul copil. Mutarea indicatorului de înregistr ri al
tabelului p rinte pe o anumit înregistrare determin mutarea
indicatorului de înregistr ri al tabelului copil pe înregistrarea
corespunz toare, dar nu i invers.
40 Baze de date în Visual FoxPro
Observa ii:
Este obligatorie indexarea tabelului copil dup criteriul care
stabile te leg tura (de obicei acesta este un câmp comun cu
al tabelului p rinte, dar poate fi i o expresie oarecare).
Se pot stabilii dou tipuri de leg turi între tabelul p rinte i
tabelul copil:
o leg turi unu la unu, când în tabelul copil valorile
cheii de indexare sunt unice;
o leg turi unu la mai multe, când înregistr rile
tabelului copil pot lua i valori egale pe cheia de
indexare.
Leg turile permanente necesare pentru stabilirea unei
interog ri se aleg folosind pagina Join (figura 3.2), prin specificarea
câmpurilor care fac obiectul leg turii i a tipului de leg tur :
Inner Join leg tur interioar , între înregistr rile din tabelul
p rinte care au corespondent în tabelul copil i invers;
Left Join leg tura la stânga, când vor fi luate în considerare
i înregistr rile din tabelul p rinte (din stânga) care nu au
corespondent în tabelul copil;
Right Join leg tura la dreapta, când vor fi luate în
considerare i înregistr rile din tabelul copil (din dreapta) care
nu au corespondent în tabelul p rinte;
Full Join vor fi considerate toate leg turile.
Figura 3.2
Baze de date în Visual FoxPro 41
Condi iile de selec ie a înregistr rilor
Principala func ie a unei interog ri este aceea de selec ie.
Criteriile de selec ie sunt precizate în pagina Filter.
Figura 3.3
Ordonarea afi rii rezultatelor interog rii
Specificarea ordinii de afi are se face cu ajutorul paginii Order
By. În figura 3.4 s-a selectat ordonarea dup câmpul nume din
tabelul [Link]:
Figura 3.4
Gruparea datelor
42 Baze de date în Visual FoxPro
Query Designer (pagina Group By) permite ca mai multe
înregistr ri s fie cumulate dup mai multe criterii, pentru fiecare
grup de înregistr ri fiind furnizat în tabelul de destina ie o singur
înregistrare. Gruparea poate fi realizat dup unul sau mai multe
câmpuri care vor forma cheia de grupare. Înregistr rile având
acelea i chei de grupare vor furniza în tabela de destina ie o singur
înregistrare (câmpurile numerice pentru un grup vor con ine valori
ob inute prin însumarea valorilor corespunz toare din grup).
Destina ia interog rii
Figura3.5
Datele extrase prin interogare pot fi trimise spre o anumit
destina ie (folosind butonul Query Destination din bara de butoane a
Constructorului de interog ri) cum ar fi:
fereastra Browse - implicit;
un tabel permanent (Table) acesta putând fi folosit într-o nou
prelucrare;
ecranul (Screen);
o list la imprimant (Report);
un grafic (Graph) construit cu ajutorul componentei Microsoft
Graph.
Baze de date în Visual FoxPro 43
Aplica ii
10 S se creeze urm toarele tabele de date:
[Link] (nume C, 30 / matricola N,4 /grupa C,4)
[Link] (materia C, 30 / cod C,4)
[Link] (nota N,2 / matricola N, 4 / cod C,4):
20 S se indexeze tabelele de date [Link], [Link]
dup câmpurile Matricola respectiv Cod.
30 S se creeze i s se ruleze fi ierul de interogare a tabelelor de
date [Link], [Link], [Link], pentru afi area notelor
studen ilor inclu i în baza de date (vezi figura 3.1 i figura 3.2). S se
stabileasc ca destina ie a interog rii fi ierul [Link] (vezi figura
3.5) i s se vizualizeze con inutul acestui tabel.
40 S se realizeze interogarea bazei de date pentru afi area notelor
în ordinea alfabetic a numelor studen ilor (vezi figura 3.4).
50 S se ruleze fi ierul de interog ri pentru afi area notelor
studen ilor din grupa FC01 (vezi figura 3.3).
60 S se ruleze fi ierul de interog ri pentru toate cele patru tipuri de
leg turi (Inner Join, Left Join, Right Join, Full Join) vezi figura 3.2.
44 Baze de date în Visual FoxPro
4. Utilizarea formularelor
Formularul (forma) reprezint o fereastr pentru
introducerea sau extragerea datelor utilizatorului, în mod interactiv,
cu ajutorul unor obiecte de interfa c rora le sunt asociate
propriet i i metode (secven e de instruc iuni secven e de cod).
Definirea unui formular se realizeaz prin utilizarea tehnologiei POO
(Programare Orientat Obiect) care permite modificare propriet ilor
obiectelor incluse în formular, ceea ce se reflect în aspectul
formularului i a comportamentului acesteia în diferite situa ii.
Form Designer (Constructorul de formulare) este o
component a Visual FoxPro - ului dedicat cre rii i modific rii
formularelor precum i gener rii secven ei de cod necesare pentru
execu ia acestora (fi ierele corespunz toare au extensia implicit
scx).
4.1. Crearea, deschiderea i rularea unui formular
Crearea unui formular (fi ier cu extensia implicit SCX)
poate fi ini iat prin comanda:
MODIFY FORM [<nume formular>]
sau prin alegerea op iunii File, New din meniu (în acest caz în caseta
New se selecteaz Form i New file).
Activarea (deschiderea) unui formular se poate realiza prin
meniu (File, Open, Files of type: Form (*.scx)) sau prin comanda
MODIFY FORM.
Scopul cre rii unui formular este ob inerea unei secven e
executabile care poate fi rulat în urm toarele moduri:
Baze de date în Visual FoxPro 45
din meniul principal (Form, Run Form),
prin ac ionarea butonului din linia de instrumente standard,
prin comanda DO FORM <nume formular>.
Observa ie
Prin lansarea Constructorului de formulare, în fereastra
Form Designer, meniul principal va include op iunea Form
care ofer instrumentele de lucru necesare.
4.2. Elementele constructorului de formulare
Ferestrele de lucru
Form Designer fereastra principal care con ine obiectele
formularului.
Properties fereastra de propriet i având ca rol
modificarea propriet ilor obiectelor formularului (metode,
nume, titluri, dimensiuni, fonturi, culori, etc.).
Data Environment mediul de date al formularului,
fereastra pentru precizarea tabelelor de date care vor fi
deschise automat în momentul rul rii formularului.
Ferestrele pentru cod succesiunile de instruc iuni care
urmeaz a fi executate la apari ia diferitelor evenimente din
cadrul formularului cum ar fi: ac ionare unui buton, selectare
unui obiect, etc.
Barele utilitare
Form Designer Toolbar - bara de butoane standard a
formularului:
Data Environment Layout Toolbar
Properties Window Color Palette Toolbar
Code Window Form Controls Toolbar
46 Baze de date în Visual FoxPro
Butoanele din aceast bar de instrumente permit
deschiderea/închiderea ferestrelor: Data Environment, Properties,
Code (afi area secven ei de cod) sau a barelor de lucru:
Form Control Toolbar butoanele de control;
Color Palette Toolbar stabilirea atributelor de culoare;
Layout Toolbar alinierea obiectelor în formular,
suprapunerea obiectelor, etc.
Form Controls Toolbar
Lista obiectelor din formular
Form Designer Toolbar
Valoarea
propriet ii
Proprietate
FORMULARUL
Obiect
Sfat
Lucra i cu barele de instrumente. Dac acestea nu sunt
afi ate utiliza i meniul: View, Toolbars
Baze de date în Visual FoxPro 47
4.3. Mediul de date al formularului (Data Environment)
Constructorul de formulare permite configurarea mediului de
date în care lucreaz formularul, adic a zonelor de lucru i a
tabelelor de date deschise în ele. Tabelele de date sunt deschise
automat (f r comenzi speciale), dac acestea sunt incluse în Data
Environment, înainte de execu ia formularului (este de la sine în eles
c aceste tabele de date au fost deja create).
Observa ii
Deschiderea ferestrei Data Environment poate fi f cut
prin meniu (View, Data Environment ) sau folosind butonul
corespunz tor din bara de butoane Form Designer. Astfel în
meniul principal este inclus op iunea DataEnvironment.
Includerea (Add) unui tabel în Data Environment este
realizat prin meniu: DataEnvironment, Add sau prin clic cu
butonul dreapta al mouse-ului.
Mediul de date al formularului este considerat un obiect, deci
are asociate metode i propriet i. Cele mai importante metode,
legate de folosirea datelor sunt:
Metoda OpenTables este folosit la deschiderea tabelelor de
date necesare (dac nu este utilizat , tabelele asociate sunt
deschise automat).
Metoda Load Event poate fi folosit , de asemenea, la
deschiderea tabelelor. Aceasta este ini iat dup metoda
OpenTables.
Metoda Init Event este o metod apelat dup metoda Load,
i face anumite ini ializ ri ale obiectelor din formular, inclusiv cu
datele din tabelele care sunt deja deschise.
Metoda CloseTables are ca scop închiderea tabelelor de date
din mediul de date al formularului la ini iativa utilizatorului.
Metodele Unload (desc rcare) i Destroy (distrugere a
formularului) ac ioneaz asupra mediului de date i sunt
activate dup metoda CloseTables.
48 Baze de date în Visual FoxPro
4.4. Utilizarea controalelor
Includerea controalelor în cadrul unui formular se realizeaz
prin introducerea unor obiecte (Label, Text Box, etc.) în acest
formular. Pentru aceasta, se ac ioneaz butonul corespunz tor din
Form Controls Toolbar i se stabile te por iunea dreptunghiular
(zona) din formular unde va fi afi at obiectul. Practic, obiectul va fi
desenat (se pozi ioneaz cursorul mouse-ului în col ul stânga-sus al
zonei de afi are, se ine ap sat butonul stâng i se trage cursorul
spre col ul dreapta-jos).
Propriet i i metode
Un formular poate con ine mai multe obiecte, el însu i fiind
considerat un obiect. Fereastra Properties permite alegerea
obiectului i a propriet ii a c rei valoare se schimb , ca de exemplu:
Proprietatea Caption este destinat stabilirii unui titlu
(denumire) pentru formular sau obiect.
Proprietatea Name permite atribuirea unor nume
obiectelor. Visual FoxPro stabile te valori implicite
propriet ilor Caption i Name cum ar fi:
o Form1, Form2 pentru formulare
o Label1, Label2... pentru obiectele Label
o Command1, Command2 pentru butoane
o Text1, Text2 pentru obiectele Text Box
o Edit1, Edit2 pentru obiectele Edit Box
Aceste nume ale obiectelor pot fi folosite a a cum au fost
definite de Visual FoxPro îns utilizatorul are posibilitatea
stabilirii unor denumiri proprii.
Proprietatea FontSize stabile te atributele de scriere
privind dimensiunea fontului folosit.
Proprietatea FontBold permite scrierea bold.
Proprietatea BorderStyle ofer posibilitatea stabilirii
atributelor de bordare.
Baze de date în Visual FoxPro 49
Proprietatea Format permite introducerea formatat a
datelor conform codurilor Function.
Proprietatea Input Mask permite introducerea formatat
a datelor conform codurilor Picture.
Observa ie
O categorie special de propriet i o reprezint metodele.
Metodele sunt secven e de cod (instruc iuni) asociate
diferitelor obiecte la activarea/dezactivarea acestora.
Form Designer ofer posibilitatea modific rii unei propriet i
prin comenzi de atribuire, referirea la proprietatea respectiv
f cându-se prin construc ia:
<nume formular>.<nume proprietate>
Referirea la un obiect din cadrul unei formulare se realizeaz
printr-o construc ie asem n toare, adic :
<nume formular>.<nume obiect>.<nume proprietate>
Exist construc ii speciale, mai scurte, cum ar fi:
o This - care se refer la obiectul curent;
o ThisForm - care indic formularul ce con ine
obiectul curent;
o Parent - care se refer la obiectul care con ine
obiectul curent.
Exemple
[Link]=Actualizare
modific proprietatea Caption (titlu) a formularului
Form1
[Link]
execut metoda Vizualizare ata at formularului
[Link]=Numele persoanei
modific proprietatea Caption (titlu) a obiectului
Label1
[Link]=Ad ugare
50 Baze de date în Visual FoxPro
modific proprietatea Caption (titlu) a formularului
curent
[Link]
execut metoda Vizualizare ata at formularului
curent
[Link]=Numele persoanei
modific proprietatea Caption (titlu) a obiectului
Obiecte din formular
Obiecte simple
Label afi eaz un text informativ
define te un câmp de editare în care utilizatorul
poate introduce un text.
Edit Box pentru editarea variabilelor ir de caractere,
tablou, câmpuri ale tabelelor de date, câmpuri memo.
Command Button este tipic pentru startul
evenimentelor, pentru c utarea i închiderea formularelor, mutarea
diferitelor înregistr ri, imprimarea rapoartelor, etc.
Check Box (casete de validare). Obiectele Check Box
permit utilizatorului s specifice o stare de tip logic (true sau false),
astfel încât la executarea formularului s se poat alege între dou
st ri. Principalele propriet i care le sunt asociate sunt:
Proprietatea Value furnizeaz valorile numerice 0 sau 1
dup cum caseta este neselectat sau selectat (bifat ).
Proprietatea Style schimb stilul de afi are, având
valoarea 0Standard sau 1-Graphical, caseta de validare
primind aspectul unui buton neap sat/ap sat:
Baze de date în Visual FoxPro 51
Standard Graphical
Spinner (casete de incrementare/decrementare).
Obiectele Spinner permit utilizatorului s - i stabileasc op iunile
parcurgând incremental o plaj de valori sau introducând direct
valorile în caset . Pentru aceasta, câmpul de editare al casetei are în
dreapta sa dou butoane: unul pentru incrementare i altul pentru
decrementare:
Propriet i principale:
Proprietatea Value stabile te valoarea ini ial înscris în
caset i furnizeaz valorile editate la execu ia formularului.
Propriet ile KeyboardHighValue i KeyboardLowValue
stabilesc limita superioar i inferioar a valorilor introduse
în câmpul de editare direct de la tastatur (dep irea acestor
limite genereaz mesaj de eroare).
Propriet ile SpinnerHighValue i SpinnerLowValue
stabilesc limita superioar i inferioar a valorilor introduse
cu ajutorul butoanelor de incrementare/decrementare
(dep irea acestor limite nu conduce la eroare dar valoarea
aflat în editare nu mai este m rit /mic orat ).
Combo Box - List Box (casete cu list - list
derulant ). Listele sunt obiecte care ofer utilizatorului posibilitatea
select rii unor elemente dintr-o mul ime finit , afi at total sau
par ial pe ecran. Se utilizeaz dou tipuri de liste: liste simple - List
Box i liste derulante sau expandabile - ComboBox care afi eaz doar
elementul curent al listei.
52 Baze de date în Visual FoxPro
Listele simple, List Box afi eaz la un moment dat mai multe
elemente (nu neap rat pe toate):
Listele expandabile, Combo Box, afi eaz , în stare neactivat ,
doar un element al listei:
Propriet i ale listelor:
Proprietatea RowSourceType stabile te sursa de date a
elementelor unei liste cum ar fi:
o 0 None (surs nespecificat ), când specificarea
elementelor listei se face în mod dinamic, la rularea
formularului;
o 1 Value (valoare), care presupune c elementele
listei sunt enumerate manual în proprietatea
RowSource (list de elemente separate prin virgul );
o 2 Alias, când elementele listei sunt preluate dintr-o
tabel de date specificat în proprietatea RowSource;
o 3 SQL Statement (instruc iuni SQL);
o 4 - Query (interogare);
o 5 Array (tablou) elementele listei sunt preluate
dintr-un tablou;
o etc.
Baze de date în Visual FoxPro 53
Proprietatea RowSource specific sursa efectiv de date.
Num rul implicit de coloane dintr-o list este 1 îns pot fi
construite i liste multicoloan . O variant simpl de a ob ine o list
multicoloan dintr-o list unicoloan o ofer propriet ile
RowSourceType i RowSource. De exemplu, dac proprietatea
RowSourceType este 2 Alias proprietatea RowSource poate avea
valoarea [Link]+[Link] (pentru baza de date
[Link]) astfel încât rezult o list de forma:
Obiecte compuse (container)
Obiectele compuse sunt constituite ca un grup de obiecte
simple. Construirea (Builder ) unui obiect container (de exemplu
includerea unor obiecte simple) sau editarea (Edit) unui obiect inclus
într-un container presupune
ac ionarea butonului drept al
mouse-ului:
54 Baze de date în Visual FoxPro
Option Group (butoane radio). Butoanele radio sunt un
tip special de obiecte de interfa care ofer posibilitatea alegerii unei
singure op iuni din mai multe posibile (sunt obiecte container).
Propriet ile cele mai utilizate ale butoanelor radio sunt:
Proprietatea ButtonCount stabile te num rul de
componente ale obiectului.
Proprietatea AutoSize determin calcularea automat a
dimensiunii grupului de butoane în func ie de con inut, dac
are valoarea .T. True.
Proprietatea Value furnizeaz valorile numerice 1, 2, 3,
reprezentând num rul de ordine al butonului selectat
(implicit 1).
Proprietatea Style a fiec rui obiect din container
schimb stilul de afi are, având valoarea 0Standard sau 1-
Graphical :
Standard Graphical
Command Group (butoane de comand ). Grupurile de
butoane de comanda au roluri asem n toare cu ale butoanelor simple
(Command Button) doar c ele sunt constituite ca obiecte container,
deci pot fi construite i editate ca acest tip de obiecte. Cele mai
importante propriet i (ButtonCount, AutoSize, Value) sunt
identice cu ale butoanelor radio.
Grid (Grile). Grila este un obiect container, variant
îmbun t it a ferestrei Browse, care con ine mai multe obiecte de
interfa , plasate matricial, cum ar fi: coloane, antete (header),
câmpuri de editare, fiecare cu propriul set de propriet i i metode.
Baze de date în Visual FoxPro 55
Elementele componente ale unei grile sunt cele prezente i în
mediul ferestrei Browse:
liniile, coloanele i celulele;
barele de derulare folosite atunci când dimensiunea grilei
dep e te dimensiune zonei vizibile;
antetul (header) capul de tabel;
coloana de marcare a liniilor;
coloana de tergere a liniilor.
Obiectul Grid are o organizare intern arborescent , fiind dispus
pe nivele: la primul nivel sunt situate coloanele apoi antetele coloanelor
i obiectele de interfa :
Grid Grila
Column1 Coloana1
Header1 Antet1
Text1 Câmp1
Column2 Coloana2
Header2 Antet2
Text2 Câmp2
Grila i elementele din gril au anumite propriet i cum ar fi:
Proprietatea RecordSourceType stabile te sursa de date
a grilei:
o 0 Table i 1 Alias, sursa de date este un tabel de
date care va fi deschis automat la ini ializarea grilei. În
acest caz, înregistr rile tabelei vor fi linii în gril , iar
câmpurile tabelului de date vor fi coloane;
o 2 Prompt sursa de date (tabelul de date) se
specific la execu ia formularului;
o 3 - Query (interogare);
o 4 SQL Statement (instruc iuni SQL).
Proprietatea RecordSource specific denumirea exact a
sursei de date.
56 Baze de date în Visual FoxPro
Aplica ii
10 S se editeze urm torul formular:
Indica ii
Se lanseaz Constructorul de formulare.
Se stabilesc propriet ile obiectelor în felul urm tor:
Caption Calcule
Form1 financiare
Caption Calculeaz Color Pallete : Verde
Command1
FontBold .T. -True
Caption Func ia: Color Pallete : Ro u
Label1
Name Opt
FV
Caption FV Color Pallete : Ro u
PV
Caption PV Color Pallete : Ro u
Payment
Caption Payment Color Pallete : Ro u
FontBold .T. -True
Name a1 Color Pallete :
a1 Albastru
FontSize 11
FontBold .T. -True Primul argument
Name a2 Color Pallete :
a2 Albastru
FontSize 11
FontBold .T. -True Al doilea argument
Baze de date în Visual FoxPro 57
Name a3 Color Pallete :
a3 Albastru
FontSize 11
FontBold .T. -True Al treilea argument
Name Rezultat Color Pallete : Ro u
rezultat
FontSize 12
Afi eaz rezultatul
FontBold .T. -True
Se stabilesc metodele (secven ele de cod) folosind pagina Method
din fereastra Properties:
a1=val([Link])
(se poate a2=val([Link])
Calculeaz executa i a3=val([Link])
dublu click pe Opt=[Link]
obiect) do case
case Opt=1
[Link]=FV(a1,a2,a3)
case Opt=2
[Link]=PV(a1,a2,a3)
case Opt=3
[Link]=Payment(a1,a2,a3)
endcase
Se salveaz i se execut formularul astfel creat.
20 S se editeze un formular pentru actualizarea datelor din tabelul de
date [Link].
Indica ii
Se include în mediul de date al formularului, Data Environment,
tabelul [Link] i se import în formular, ca obiecte, câmpurile
tabelului de date, prin tragere, cu mouse-ul în zona de editare a
formularului. Aceste obiecte vor fi considerate de Constructorul de
formulare ca fiind de tip Text Box (txtNume, txtMarca,
txtFunctia, txtSalariu, txtDatanast), de tip Edit Box (pentru
câmpul Adresa care este Memo) sau de tip Check Box (pentru
câmpul Sex).
58 Baze de date în Visual FoxPro
Se eticheteaz denumirile câmpurilor din tabelul de date (Numele,
Marca, etc.) folosind obiecte de tip Label.
Se stabilesc propriet ile obiectelor în felul urm tor:
Caption Actualizare
Form1
Caption Vizualizare Color Pallete : Mov
Command1
Caption Adaug Color Pallete : Verde
Command2
Caption terge Color Pallete : Albastru
Command3
Caption Stop Color Pallete : Ro u
Command4
Name M Pozi ionare pe o anumit
M
marc
FontBold .T. -True
Name Contor Contorul înregistr rilor
Contor
Value 1
FontBold .T. -True
Baze de date în Visual FoxPro 59
Se stabilesc metodele (secven ele de cod) folosind pagina Method
din fereastra Properties:
browse
Vizualizare
append blank
[Link]
Adaug [Link]=recno()
delete
pack
terge [Link]
[Link]=recno()
[Link]
Stop
locate for [Link]=Marca
M if found()
[Link]
[Link]=recno()
endif
î
s=[Link]
if s>=1 and s=<reccount()
Contor goto s
[Link]
else
[Link]=recno()
endif
î (goto s)
Se stabile te ordinea de activare a obiectelor prin ac ionarea
butonului Set Tab Order.
Se salveaz i se execut formularul astfel creat.
60 Baze de date în Visual FoxPro
30 S se editeze un formular pentru eviden a unor calificative. În
mediul de date al formularului se vor introduce (în aceast ordine!)
tabelele de date:
a) Tabelul de date [Link], având structura:
Nume Character 30
Nota1 Numeric 2
Nota2 Numeric 2
Media Numeric 5,2
b) Tabelul de date [Link].
Indica ii
Obiectul GrdCalificative poate fi creat în formular prin tragerea
tabelului [Link], cu mouse-ul, din fereastra Data
Environment.
Se stabilesc propriet ile obiectelor active în felul urm tor:
Caption Acordare
Form1 calificative
Caption Adaug
Adaug
FontBold .T. -True
Baze de date în Visual FoxPro 61
Caption Stop
Stop
FontBold .T. -True
FontBold .T. -True Permite
selectarea unei
Combo1 componente din
fi ierul
RowSourceType 2 - Alias
RowSource [Link]+ Afi area listei se
[Link] face pe dou
coloane
FontSize 10 Liniile listei se
adaug prin
ac ionarea
GrdCalificative butonului
Caption Numele persoanei
Alignment 2 Middle Center La fel i pentru
celelalte câmpuri
Enabled .F. - False La fel pentru
coloana 4
Se stabilesc metodele (secven ele de cod) folosind pagina
Method din fereastra Properties:
repl media with (nota1+nota2)/2
GrdCalificative,
Column2,
Text1
-câmpul rezult din calcul
- la fel pentru
Adaug
-introduce în list marca i numele persoanei
Stop -dezactiveaz (închide formularul)
Se stabile te ordinea de activare a obiectelor prin ac ionarea
butonului Set Tab Order.
Se salveaz i se execut formularul astfel creat.
62 Baze de date în Visual FoxPro
5. Proiectarea meniurilor
Meniurile sunt obiecte de interfa care pun la dispozi ia
utilizatorului o serie de op iuni care permit alegerea i declan area
unor opera ii de prelucrare. Aproape orice interfa grafic con ine,
într-o form sau alta, un meniu. Un meniu apare, de obicei, în partea
superioar a ferestrelor de aplica ii i are o structur standard, iar în
general, orice opera ie care poate fi executat în cadrul unei aplica ii
trebuie s aib un corespondent în meniul acesteia, pentru a putea fi
executat . Utilizatorul î i construie te un model mental al structurii
aplica iei prin simpla examinare a meniurilor i a articolelor de meniu,
meniul reprezentând un mijloc prin care utilizatorul comunic
sistemului ce opera ie s efectueze la un moment dat.
Meniu orizontal Op iune selectat din meniul orizontal
(Meniu Bar)
Op iune selectat din submeniu
Submeniu Vertical
(Submenu)
Un meniu este format, în general, dintr-o bar (sau un
submeniu orizontal) care con ine mai multe op iuni. Fiecare dintre
acestea are asociat un submeniu vertical, care este activat numai la
alegerea op iunii respective. Alegerea de c tre utilizator a op iunilor
meniurilor verticale poate declan a o opera ie de prelucrare sau poate
determina afi area unui nou submeniu vertical.
5.1. Crearea i deschiderea unui meniu
Crearea unui meniu (fi ier cu extensia implicit MNX)
poate fi ini iat prin comanda:
Baze de date în Visual FoxPro 63
MODIFY MENU [<nume meniu>]
sau prin alegerea op iunii File, New din meniu (în acest caz în caseta
New se selecteaz Menu i New file). Din fereastra deschis pe
ecran se alege butonul Menu (meniu), dac se dore te crearea unui
meniu cu bar i submeniuri verticale, respectiv butonul Shortcut
(scurt tur ), dac se dore te construirea unui submeniu vertical,
având subordonate alte meniuri verticale. Astfel va fi lansat în lucru
Constructorul de meniuri.
Activarea (deschiderea) unui meniu care a fost deja
generat se poate realiza prin selectarea acestuia (File, Open, Files of
type: Menu (*.mxx)) sau prin comanda MODIFY MENU.
Sfat
Înainte de a stabili componentele unui meniu i caracteristicile
acestora trebuie precizate o serie de op iuni, cum ar fi pozi ia
fa de meniul sistemului Visual FoxPro. Op iunile generale ale
unui meniu pot fi precizate în fereastra de dialog General
Options (op iuni generale): View, General Options din meniul
Visual FoxPro-ului.
5.2. Definirea componentelor unui meniu
Butoanele din sec iunea Location (loca ie) stabilesc pozi ia
noului meniu fa de meniul sistem:
Replace înlocuirea meniului sistem;
Append ad ugare;
Before - plasarea noului meniu înaintea submeniului sistemului
specificat în lista derulant al turat (care este afi at numai la
selectarea butonului);
After noul meniu va fi plasat dup submeniul specificat.
64 Baze de date în Visual FoxPro
Se pot specifica secven e de cod (Meniu code) la ini ializarea
meniului (crearea sa) i tergerea meniului (eliminarea sa din
memorie). Secven ele de cod respective se specific în ferestre
deschise prin activarea comutatoarelor Setup (ini ializare) i
Cleanup ( tergere), urmat de ac ionarea butonului OK.
În fereastra Meniu Designer sunt enumerate i descrise
op iunile meniului creat i o serie de obiecte de interfa folosite la
manipularea acestor op iuni. La un moment dat, în fereastra de lucru,
este afi at numai grupul de op iuni al unui subsistem (orizontal sau
vertical) al meniului proiectat. O op iune poate fi folosit pentru
accesul la un alt submeniu sau poate fi dedicat declan rii unei
ac iuni. Pentru a reveni la meniul imediat superior se folose te lista
Baze de date în Visual FoxPro 65
derulant Menu level (nivel meniu), în care sunt disponibile toate
meniurile superioare ierarhic meniului curent.
În fereastra Constructorului de meniuri, pe coloane, se specific
caracteristicile op iunilor, astfel:
1. Coloana Prompt cuprinde textele informative ale op iunilor în
care se pot introduce i combina ii speciale, prin intermediul
c rora se ob in diferite efecte:
Combina ia Efect
\< Dac este plasat înaintea unuia dintre caracterele irului
face ca acel caracter s fie folosit ca o tast pentru
selectarea direct a op iunii respective, atunci când
meniul este activat. Caracterul respectiv apare subliniat
în textul op iunii
\ Determin dezactivarea op iunii respective. Aceasta
apare pe ecran în culori terse, iar alegerea sa nu
declan eaz nici o ac iune (chiar dac în cazul s u au fost
specificate opera ii de executat)
\- Trasarea unei bare delimitatoare între mai multe grupuri
de op iuni ale aceluia i submeniu
2. Coloana Result este destinat preciz rii opera iunilor care
vor fi executate la selectarea acestora:
Submenu - activarea unui nou submeniu con inând
propriul grup de op iuni. Coloana a treia va con ine un
buton (Create sau Edit) la a c rei ac ionare se va intra în
editarea submeniului respectiv;
Command - permite lansarea unei comenzi FoxPro
specificat în câmpul de editare din dreapta listei (coloana
a treia);
Procedure - executarea mai multor comenzi grupate
într-o procedur . Butonul din dreapta listei permite
intrarea în editarea procedurii respective.
3. Coloana a treia specific opera iunea de executat la alegerea
op iunii.
4. Coloana Options (op iuni) este utilizat pentru deschiderea
ferestrei de dialog Prompt Options, pentru specificarea unor
parametri suplimentari ai op iunii respective cum ar fi:
66 Baze de date în Visual FoxPro
Shortcut (scurt tur ) - cale direct de alegere. Un
Shortcut con ine:
o Câmpul de editare Key Label (etichet tast ),
pentru a indica faptul c op iunea poate fi aleas
direct prin utilizarea unei combina ii de taste.
Combina ia de taste dorit este introdus în caseta
Key Label prin ap sarea combina iei de taste
respective.
o Câmpul Key Text (text tast ) este un text
suplimentar ce poate fi ata at op iunii. În mod
implicit Visual FoxPro repet tastele de comand
rapid din caseta Key Label în caseta Key Text, dar
acesta poate fi modificat (de exemplu combina ia
CTRL+L poate fi modificat în ^L).
Skip For (s rit când...) - permite impunerea unei
condi ii prin care s se controleze accesul la o op iune. În
acest câmp este introdus o expresie logic . Dac
valoarea ei este adev rat, atunci op iunea va fi
dezactivat , deci nu va fi disponibila pentru utilizator (ea
apare cu culori terse, pentru a indica aceast stare).
Dac valoarea expresiei este fals, op iunea va putea fi
aleas de utilizator. De exemplu, pentru ca o op iune s
Baze de date în Visual FoxPro 67
fie accesibil numai dac un fi ier exist pe disc condi ia
introdus poate fi: NOT(FILF([Link])).
Message (mesaj) - are ca efect apari ia unui mesaj
explicativ în bara de stare a Visual FoxPro-ului (plasat în
partea inferioar a ferestrei mediului de programare).
5.3. Previzualizarea meniului
Este recomandabil ca, în faza de editare a unui meniu, s se
fac afi area de prob a acestuia, chiar dac el nu a fost salvat sau
programul corespunz tor nu a fost înc generat. Acest procedeu se
nume te previzualizare. La previzualizare, alegerea unei op iuni a
meniului nu este înso it de execu ia comenzii corespunz toare, ci
doar de afi area acesteia. Previzualizarea meniului în curs de editare
se realizeaz prin ac ionarea butonului de meniuri sau utilizând
meniul principal al sistemului: Menu, Preview. În starea de
previzualizare, meniul sistemului este înlocuit de meniul în curs de
editare, iar pe ecran este afi at o fereastr care indic op iunea
selectat din acest meniu.
5.4. Generarea i rularea meniurilor
Un meniu editat poate fi salvat ca un fi ier cu extensia implicit
.MNX. Pentru a putea folosi meniul, trebuie generat un program la a
c rui rulare meniul s fie activat. Aceast opera ie poate fi realizat
din mediul Visual FoxPro: Menu, Generate... În fereastra deschis pe
ecran se precizeaz numele fi ierului ce va fi generat:
În mod implicit, acesta are acela i nume cu cel al fi ierului în
care este memorat meniul, dar extensia .MPR.
O dat generat meniul, acesta poate fi rulat printr-o comand
68 Baze de date în Visual FoxPro
DO. Deoarece comanda DO presupune extensia implicit PRG (de la
programe), este necesar specificarea extensiei .MPR:
DO <meniu>.MPR
Observa ie
Revenirea la meniul standard al mediului de programare Visual
FoxPro se realizeaz prin comanda:
SET SYSMENU TO DEFAULT
Aplica ie
S se editeze un meniu pentru crearea i modificarea
structurii unui fi ier cât i pentru editarea con inutului lui:
Indica ii
Se lanseaz Menu Designer.
Se editeaz op iunile meniului principal.
Op iunea Stop are asociat urm toarea procedur :
Procedure
close all
set sysmenu to default
Se editeaz op iunea Fisier din meniu.
Se previzualizeaz , se genereaz i se ruleaz meniul creat.
Baze de date în Visual FoxPro 69
6. Generarea rapoartelor
Raportul reprezint un set de informa ii, constituite pe baza
datelor introduse anterior în bazele de date, care urmeaz a fi tip rit
la imprimant sau afi at pe display-ul calculatorului. Definirea unui
raport se realizeaz , ca i în cazul formularelor, prin utilizarea
tehnologiei POO (Programare Orientat Obiect) care permite
definirea i modificare propriet ilor obiectelor introduse în raport.
Componenta Visual FoxPro-ului care permite crearea i
modificarea rapoartelor precum i generarea secven ei de cod
necesare pentru execu ia acestora este Report Designer.
6.1. Crearea i deschiderea unui raport
Crearea unui raport (fi ier cu extensia implicit .FRX)
poate fi ini iat prin comanda:
CREATE REPORT [< nume raport>]
sau prin alegerea op iunii File, New din meniu (în acest caz în caseta
New se selecteaz Report i New file).
Activarea (deschiderea) unui raport se poate realiza prin
meniu (File, Open, Files of type: Report (*.frx)) sau prin comanda:
MODIFY REPORT < nume raport>
Observa ie
Prin lansarea Constructorului de rapoarte, în fereastra
70 Baze de date în Visual FoxPro
Report Designer, meniul principal va include op iunea Report
care con ine op iuni referitoare la diferite opera ii.
6.2. Imprimarea i afi area rapoartelor
Un raport este un fi ier în care sunt memorate elementele sale
precum i caracteristicile acestora. Imprimarea (Print) unui raport
poate fi realizat în unul din urm toarele moduri:
din meniul principal (Report, Run Report),
prin ac ionarea butonului sau a butonului din linia
de instrumente,
prin comanda:
REPORT FORM <nume raport> TO PRINTER [PROMPT]
(clauza PROMPT este folosit pentru specificarea parametrilor
de tip rire)
Pentru afi area sau previzualizarea (Preview) pe ecran se
poate utiliza:
butonul din linia de instrumente standard,
comanda:
REPORT FORM <nume raport> PREVIEW
Vizualizarea informa iilor din raport se realizeaz utilizând bara
utilitar de mai jos:
Pagina anterioar Pagina urm toare
Tip rire
Prima pagin Ultima pagin Închidere afi are
Selectare pagin Scala de afi are
Observa ie
Se poate ob ine trimiterea raportului spre un fi ier (în loc de
imprimant ) cu ajutorul clauzei TO FILE a comenzii REPORT
FORM:
REPORT FORM <nume raport> TO FILE <fi ier> [ASCII]
Baze de date în Visual FoxPro 71
Clauza ASCII determin modul de scriere în fi ier: în prezen a
clauzei formatul fi ierului va fi text, iar în absen a acesteia formatul
va fi unul specific imprimantei (informa iile se depoziteaz în fi ierul
respectiv, exact cum s-ar trimite la imprimant ).
6.3. Constructorul de rapoarte
Report Designer fereastra principal care con ine obiectele
raportului.
Data Environment mediul de date al raportului, fereastra
pentru precizarea tabelelor de date care vor fi deschise automat în
momentul rul rii raportului.
Barele utilitare
o Report Designer Toolbar - bara de butoane standard a
raportului:
Data Grouping
Color Palette Toolbar
Layout Toolbar
Data Environment Report Controls
Butoanele din aceast bar de instrumente permit
deschiderea/închiderea ferestrelor: Data Environment, Data Grouping
(gruparea datelor) sau a barelor de lucru:
o Report Control Toolbar butoanele de control;
o Color Palette Toolbar stabilirea atributelor de culoare;
o Layout Toolbar alinierea obiectelor în formular,
suprapunerea obiectelor, etc.
Sfat
Lucra i cu barele de instrumente asociate Constructorului de
rapoarte. Dac acestea nu sunt afi ate utiliza i meniul: View,
Toolbars
72 Baze de date în Visual FoxPro
O dat pornit Constructorul de rapoarte, pe ecran este afi at
fereastra de editarea a raportului.
Un raport este constituit din benzi care nu redau exact ceea ce
va fi în raportul final, dar codific modul în care se determin ceea ce
se afi eaz în raport. Un raport poate con ine urm toarele benzi:
Detail (detalii) genereaz rândurile de detalii (con inutul de
baz al raportului). Pentru un raport care preia datele dintr-o
tabel , banda de detalii a raportului ar putea corespunde
înregistr rilor tabelei;
Title (titlu) include o zon care se afi eaz o singur dat , pe
prima pe pagin a raportului. Aceast band con ine de obicei
titlul raportului i eventual, capul de tabel, dac acesta nu
trebuie repetat pe fiecare pagin în parte);
Summary (rezumat) - specific o zon care este afi at pe
ultima pagin a raportului, la sfâr it, o singur dat ;
Page Header (antet de pagin ) - genereaz textul care va fi
afi at în partea superioar a fiec rei pagini a raportului;
Page Footer (subsol de pagin ) - genereaz con inutul p r ii
inferioare a fiec rei pagini a raportului;
Group Header n (antetul grupului de nivel n) i Group Footer
Baze de date în Visual FoxPro 73
n (subsolul grupului de nivel n) - genereaz în raportul final
mai multe grupuri, în func ie de ni te valori numite chei de
grupare, putându-se preciza con inutul benzii antet de grup,
respectiv subsol de grup;
Un raport con ine cel pu in trei benzi: antetul de pagin ,
detaliile i subsolul de pagin . Dac se dore te inhibarea afi rii lor,
trebuie reduse la dimensiunea zero (chiar dac apar în fereastra
raportului, nu genereaz nimic în raportul final). Benzile de titlu i de
concluzii sunt afi ate op ional, afi area lor putând fi validat sau
invalidat prin meniu: Report, Title/Summary.
Fiecare dintre aceste dou benzi are asociat un comutator, New
page (pagin nou ), la activarea c ruia banda corespunz toare va
începe pe pagin nou :
Mediul de date al raportului
Un raport preia date din una sau mai multe tabele i le
aranjeaz în pagin . Deci la construirea raportului este necesar
specificarea tabelelor surs . Mediul de date al unui raport se
configureaz în fereastra mediului de date deschis prin meniu: View,
Data Environment sau prin ac ionarea butonului corespunz tor din
bara de instrumente standard a raportului. O dat deschis aceast
fereastr , la meniul sistemului este ad ugat un nou submeniu, numit
DataEnvironment, care con ine op iuni referitoare la configurarea
mediului de date.
74 Baze de date în Visual FoxPro
Fontul implicit al raportului
La construirea unui raport, trebuie stabilit ca font implicit cel
care predomin printre obiectele raportului, pentru celelalte obiecte
fontul urmând a fi specificat explicit. Fiec rui obiect nou definit în
raport îi va fi atribuit fontul implicit al raportului, care poate fi
schimbat ulterior.
Stabilirea fontului implicit al raportului se face prin meniu:
Report, Default Font, iar caracteristicile fontului sunt specificate în
caseta de dialog deschis pe ecran.
Tipuri de obiecte incluse în rapoarte
Editarea unui raport trebuie s înceap prin introducerea unor
obiecte în acesta. Pentru aceasta, se ac ioneaz butonul
corespunz tor din Report Controls Toolbar i se selecteaz obiectul
care va fi inclus în raport:
Label Line Rounded Rectangle
Field Rectangle Picture/OLE
Bound Control
Label Texte informative.
Textele informative reprezint un ir de caractere de lungime
variabil . Pentru a stabili pozi ia textului informativ se pozi ioneaz
cursorul în punctul dorit din raport, dup care se execut clic cu
mouse-ul. Când se termin introducerea textului, se execut un clic în
afara obiectului nou creat.
Un obiect Label creat poate fi repozi ionat, prin tragere cu
ajutorul mouse-ului, pe suprafa a raportului. Se pot efectua i trageri
dintr-o band în alta, nu numai în cadrul aceleia i benzi.
Fontul folosit la afi area textului este stabilit în ferestrea Font,
Baze de date în Visual FoxPro 75
care se deschide prin meniu: Format, Font. Astfel, pot fi
specificate toate caracteristicile fontului: setul caractere (Font),
dimensiunea (Size), stilul (Font style), culoarea (Color), etc.
Field Câmpuri.
Câmpurile reprezint elementele variabile ale unui raport,
putând genera în raportul final mai multe valori, valori care vor fi
determinate de sursa de date precizat : o variabil a raportului, o
expresie de calcul, un câmp al unui tabel de date. Caracteristicile
legate de fontul în care se realizeaz afi area valorii din câmp se
stabilesc la fel ca pentru obiectele de tip Label.
Definirea caracteristicilor unui obiect de tip Field se realizeaz în
fereastra de dialog Report Expression (deschis prin dublu clic pe
obiect).
Pozi ia câmpului (Field position) relativ la banda din raport în
care este definit poate fi: Float (pozi ie variabil , în func ie de
obiectele definite deasupra lui), Fix relative to top of band (pozi ie
fix relativ la marginea superioar a benzii), Fix relative to bottom of
band (pozi ie fix relativ la latura inferioar a benzii).
În caseta Expression se înscrie expresia care va furniza
valoarea ce trebuie afi at . De multe ori, aceast expresie este un
simplu câmp al unei tabele surs sau o variabil de lucru.
76 Baze de date în Visual FoxPro
Formatul de afi are al câmpului (caseta Format) reprezint un
ir de caractere (macheta de formatare). Acest format se poate stabili
i în mod interactiv, prin ac ionarea butonului din dreapta casetei,
care determin deschiderea ferestrei Format.
Asupra valorilor asociate obiectelor Field se pot aplica diferite
func ii pentru a ob ine unele informa ii sintetice: suma (Sum), media
aritmetic (Average), valoarea maxim i minim (Highest, Lowest),
devia ia standard (Standard deviation), varian a (Variance). Func ia
care se aplic asupra unui câmp al unui raport este precizat în
fereastra de dialog Calculate Field, deschis prin ac ionarea
butonului Calculations:
Obiecte semigrafice i grafice.
În cadrul unui raport pot fi desenate linii, chenare sau pot fi
introduse imagini. În leg tur cu aceste obiecte pot fi precizate
anumite caracteristici cum ar fi Pen (peni ) Format Pen, Fill
(umplere) Format Fill, etc.
Baze de date în Visual FoxPro 77
Aplica ie
10 S se creeze tabelulul de date, [Link]
având structura:
Denumirea mijlocului fix DENUMIRE C 30
Valoarea de inventar VALINV N 10
Valoarea amortizat VALAMOR N 10
20 S se genereze, pe baza tabelului de date definit anterior
urm torul raport:
Indica ii
Se lanseaz Constructorul de rapoarte.
În mediul de date al raportului se introduce tabelul de date definit
anterior.
Se includ în raport obiectele necesare i anume:
o În banda Page Header:
textele informative (denumirea raportului, capul de
tabel),
elementele semigrafice (linii, chenare),
câmpul care furnizeaz data calendaristic .
78 Baze de date în Visual FoxPro
o În banda Detail se trag, cu mouse-ul, din mediul de date
al raportului, câmpurile: denumire, valinv, valamor.
o În banda Summary se introduc câmpurile valinv,
valamor. Pentru ca acestea s afi eze valori totalizatoare
se execut câte un dublu clic pe ele pentru a deschide
fereastra Report Expresion. Aici, se ac ioneaz butonul
Calculations i se selecteaz func ia Sum.
30 S se previzualizeze i s se salveze raportul editat.
7. Crearea i editarea proiectelor
Proiectul reprezint un fi ier cu extensia implicit .PJX care
permite gruparea într-o form unitar a componentelor unui sistem
informatic cum ar fi baze de date, tabele, programe, formulare,
meniuri, rapoarte, interog ri etc., pentru a ine eviden a acestora.
Proiectarea unei aplica ii înseamn , în general, crearea unui fi ier
proiect la care sunt ad ugate pe rând componentele sale. Mediul de
programare Visual FoxPro permite ca toate opera iile care se
efectueaz asupra elementului unui proiect s poat fi declan ate din
Baze de date în Visual FoxPro 79
interiorul proiectului, prin intermediul resursei numit Gestionar de
proiecte.
Prin generarea proiectelor se creeaz posibilitatea desf ur rii
unor serii de opera ii care permit:
o actualizarea automat a proiectului, atunci când între forma
surs i cea compilat se constat desincroniz ri;
o crearea fi ierelor de aplica ii i a programelor executabile.
7.1. Crearea i deschiderea unui proiect
Crearea sau deschiderea unui proiect este declan at prin
comanda:
MODIFY PROJECT [< nume proiect>]
sau prin alegerea op iunii File, New din meniu (în acest caz în caseta
New se selecteaz Project i New file). Astfel este deschis fereastra
Gestionarului de proiecte:
80 Baze de date în Visual FoxPro
Fereastra include o list cu elementele componente ale
proiectului, grupate pe categorii (aceste categorii apar i în paginile
alternative ale ferestrei):
Categoria Tipul elementului
- baze de date
- tabele izolate
- interog ri
- formulare
- rapoarte
- etichete
- programe
- biblioteci API
- aplica ii
Baze de date în Visual FoxPro 81
- meniuri
- fi iere text
- alte tipuri de
fi iere
7.2. Editarea proiectelor
Editarea proiectelor este realizat cu ajutorul grupului de
butoane din partea dreapt a ferestrei Project Manager. Astfel, dup
selectarea din categoria sa a tipului elementului se ac ioneaz unul
din butoanele:
o New - ad ugarea unui element nou la proiect (va fi pornit
Constructorul asociat tipului de element specificat).
o Add - dac elementul este deja creat i trebuie doar ad ugat la
proiect. Din fereastra de dialog deschis pe ecran se selecteaz
fi ierul corespunz tor.
o Modify - editarea (modificarea) unui element al proiectului (din
Gestionarul de proiecte se porne te direct Constructorul asociat
unui anumit tip de element).
o Run - rularea unui element (program, formular, meniu etc.).
o Remove - eliminarea unui element din proiect din lista
Gestionarului de proiecte (înl turarea unui element dintr-un
proiect nu înseamn i tergerea fizic a acestuia de pe disc, ci
doar tergerea indicatorului corespunz tor din tabela
proiectului).
o Build (construire) - compilarea componentelor prin stabilirea
unor op iuni:
Compilarea elementelor unui proiect are ca efect crearea a
dou tipuri de fi iere:
fi iere de tip aplica ie care pot fi rulate direct, sub
controlul mediului de programare (Build Application);
fi iere executabile independent de mediul Visual FoxPro
(Build Executable).
82 Baze de date în Visual FoxPro
Vor fi compilate componentele noi sau cele care au suferit
modific ri de la ultima lor compilare. Pot fi recompilare toate
componentele proiectului, atunci când se activeaz comutatorul
Recompile All Files din sec iunea Options.
7.3. Generarea fi ierelor aplica ie
Aplica iile reprezint o forma a proiectului, generat într-un
singur fi ier, de tip aplica ie, care poate fi executat direct de sistem
i care con ine programele, formularele, rapoartele i celelalte
elemente ale proiectului. Acest fi ier are extensia implicit .APP.
Stabilirea fi ierelor modificabile
Din punctul de vedere al incorpor rii efective în fi ierul
aplica ie, elementele unui proiect se împart în dou grupe:
o fi iere incluse (elemente care fac parte din proiect i sunt
incluse în fi ierul aplica ie);
o fi iere excluse (elemente care fac parte din proiect, dar nu
sunt incluse în fi ierul aplica ie).
Fi ierele excluse au în stânga numelor lor simbolul :
Baze de date în Visual FoxPro 83
Marcarea unui fi ier ca exclus (inclus) se realizeaz prin
meniu: Project, Exclude (Include).
Fi ierele incluse în proiect sunt asamblate într-un singur fi ier
aplica ie. Dup generarea proiectului, fi ierele marcate ca incluse
sunt protejate la scriere. Unele fi iere care fac parte dintr-un proiect,
cum ar fi tabelele, pot fi modificate de c tre de utilizator. În acest
caz, fi ierele trebuie ad ugate la proiect, dar vor fi marcate ca
excluse. Fi ierele excluse sunt parte a proiectului, dar ele nu sunt
compilate în fi ierul aplica ie, a a încât se pot actualiza la utilizare.
Observa ie
În mod implicit, tabelele sunt marcate ca excluse, deoarece
Visual FoxPro presupune c acestea vor fi modificate în cadrul
aplica iei. Ca regul general , elementele unui proiect care au
ca rezultat generarea de cod (formulare, rapoarte, interog ri,
meniuri i programe) trebuie incluse în fi ierul aplica ie, pe
când fi ierele de date trebuie excluse. Stabilirea fi ierelor
incluse, respectiv excluse, se realizeaz pe baza cerin elor
aplica iei. De pild , o tabel care cuprinde informa ii de sistem
importante sau informa ii folosite pentru c utare pot fi incluse
în fi ierul aplica ie pentru a le proteja împotriva modific rilor
neavenite. Invers, un fi ier raport (.frx) poate fi exclus pentru a
permite modificarea lui dinamic în timpul rul rii.
84 Baze de date în Visual FoxPro
Punctul de pornire al aplica iei
Înainte de executarea unei aplica ii trebuie stabilit fi ierul
principal al acesteia, adic acea component care va fi lansat atunci
când se execut comanda de rulare a aplica iei. Stabilirea fi ierului
principal (program, formular, meniu) se face prin selectarea acestuia
din lista Gestionarului de proiecte i alegerea op iunii Set Main a
meniului Project. În list , programul principal va fi afi at cu caractere
aldine:
Observa ie
Fi ierul desemnat ca fi ier principal al aplica iei este marcat ca
parte a proiectului, astfel c dup compilarea aplica iei el va fi
protejat la scriere (read-only). Într-un proiect nu poate exista
decât un singur fi ier principal.
Rularea unei aplica ii
O aplica ie poate fi rulat dac este activat comutatorul Run
After Build din fereastra Build Options sau prin comanda Do (în acest
caz este necesar precizarea explicit a extensiei fi ierului):
DO <nume aplica ie>.APP
7.4. Generarea fi ierelor executabile
Prin facilitatea de construire a programelor executabile se
ob ine o independen a programelor fa de mediul Visual FoxPro i
distribuirea lor independent . Generarea unui fi ier executabil (Build
Baze de date în Visual FoxPro 85
Executable) pe baza unui proiect se face la fel ca în cazul aplica iei,
fiind necesar construirea proiectului corespunz tor în care trebuie
introduse toate elementele acestuia (fi ierele incluse i excluse,
fi ierul principal).
Un fi ier executabil (cu extensia .EXE) poate fi rulat
independent de mediul Visual FoxPro, fiind totu i necesare o serie de
biblioteci de proceduri ale sistemului, acesta func ionând în cooperare
cu dou biblioteci de leg turi dinamice - [Link] ([Link] în
Visual FoxPro 5) i [Link] - care trebuie asociate aplica iei
pentru a oferi un mediu Visual FoxPro complet i coerent.
Controlul ciclului de evenimente
Controlul ciclului de evenimente se refer la prelucrarea
evenimentelor generate de utilizator, cum ar fi clicurile de mouse i
ap s rile de taste i este realizat prin comenzile:
READ EVENTS i CLEAR EVENTS
Plasarea corect a comenzii READ EVENTS în cadrul fi ierului
principal prezint importan , deoarece prelucrarea datelor în fi ierul
principal este oprit din momentul execut rii comenzii READ EVENTS
pân la lansarea unei comenzi CLEAR EVENTS. Astfel se poate lansa
READ EVENTS ca ultim comand într-o procedur de ini ializare,
executat dup ce mediul de dezvoltare a fost ini ializat i interfa a cu
utilizatorul a fost afi at . Dac nu se include comanda READ EVENTS,
dup rulare, aplica ia va returna controlul sistemului de operare
(aplica ia va fi rulat corect din fereastra Command a mediului de
dezvoltare, în schimb, dac ea va fi lansat independent de mediul
Visual FoxPro, aplica ia va ap rea pentru scurt timp, apoi va disp rea
de pe ecran). De asemenea, aplica ia trebuie s ofere o modalitate de
a încheia ciclul de evenimente.
Comanda CLEAR EVENTS suspend prelucrarea evenimentelor
de c tre Visual FoxPro i cedeaz controlul c tre programul care a
lansat comanda READ EVENTS ce a declan at ciclul de evenimente.
86 Baze de date în Visual FoxPro
Sfaturi
Include i comanda READ EVENTS în fi ierul principal. Dac
acesta este
o un formular: în metoda Activate Event;
o un meniu: în procedura Cleanup (meniu: View, General
Options ).
Asigura i-v c interfa a are un mecanism (cum ar fi un
buton Exit sau o comand de meniu) pentru a lansa
comanda CLEAR EVENTS.
Rularea unui fi ier executabil
Un fi ier .EXE poate fi rulat dac este activat comutatorul Run
After Build din fereastra Build Options sau prin comanda Do:
DO <nume aplica ie>.EXE
Aplica ie
10 S se editeze un proiect, pentru eviden a studen ilor înscri i
la o facultate care s includ :
a) fi ierul [Link] cu structura:
Num r legitima ie LEG N3
Numele candidatului NUME C 15
Nota proba 1 N1 N 5,2
Nota proba 2 N2 N 5,2
Media Media N 5,2
b) urm torul meniu (marcat ca fi ier principal):
c) un formular, pentru actualizarea tabelului de date (op iunea
Fisier, Actualizare);
Baze de date în Visual FoxPro 87
d) un raport (Report), pentru listarea tabelului de date
(op iunea Fisier, Listare);
e) O interogarea (Query), pentru afi area, în ordine
descresc toarea, a notelor ob inute la proba 1 (op iunea Note,
Note proba 1);
f) O interogarea, pentru afi area, în ordine descresc toarea, a
notelor ob inute la proba 2 (op iunea Note, Note proba 2);
g) O interogare pentru afi area descendent a mediilor
candida ilor admi i (op iunea Note, Media);
20 S se genereze i s se ruleze fi ierul aplica ie.
Indica ie
Se va include comanda SET SYSMENU TO DEFAULT în procedura
ata at op iunii
30 S se genereze i s se ruleze fi ierul executabil.
Indica ii
a) Se va include comanda READ EVENTS în procedura
Cleanup asociat meniului (View, General Options ).
b) Se va include comanda CLEAR EVENTS în procedura ata at
op iunii