Download - Baze de Date in Visual Foxpro
-
5/28/2018 Baze de Date in Visual Foxpro
1/87
Baze de daten Visual FoxPro 1
Baze de date n Visual FoxPro
1. Tabele de date
FoxPro este un mediu de dezvoltare integrat, care, pe lng
instrumentele de programare, ofer i un sistem de tabele de date
relaionale care simplific procesele de gestionare i organizare
eficient a datelor. Datele sunt organizate tabelar, pe linii (records,
articole nregistrri) i coloane (fields, cmpuri), mai multe tabele,
ntre care existlegturi, alctuind o bazde date relaional.
1.1. Crearea unui tabel de date definirea structurii
Crearea unui tabel de date implic specificarea numelui
tabelului (fiier cu extensia implicit DBF) i este iniiat prin
comanda
CREATE[]
sau prin alegerea opiunii File, New (n acest caz n caseta New se
selecteaz Table i New file). Ca urmare pe ecran este deschisfereastra constructorului de tabele, n care vor fi precizate
caracteristicile noului tabel (nume, tip, lungime, etc.) i a indecilor
folosii la ordonarea datelor din list.
Fiecare cmp(field, coloan) al unui tabel este caracterizat prin:
nume(Name); tip (Type) - ir de caractere, numeric, dat calendaristic sau
moment de timp, logic, memo;
-
5/28/2018 Baze de Date in Visual Foxpro
2/87
2 Baze de daten Visual FoxPro
lime (Width) - numrul de caractere pe care l ocup fiecaredatmemoratn acel cmp;
numrul de zecimale(Decimal)- pentru datele de tip numeric;
fanionul de indexare (Index) - indic dac se stabilete unindex pe cmpul respectiv (indecii reprezint o tehnologie cu
ajutorul creia datele din tabele sunt vzute ntr-o anumit
ordine, datde un anumit criteriu numit criteriu de indexare);
fanionul de valoare nul (NULL) - arat dac n cmpulrespectiv poate fi memorat o valoare nul, pentru a se face
diferenierea ntre un cmp lsat necompletat i unul completat
cu valoarea 0.
1.2. Deschiderea (activarea) tabelelor de date
Pentru iniierea unei sesiuni de lucru cu un tabel de date, acesta
trebuie sfie activat (deschis). Deschiderea unui tabel de date se poate
realiza prin meniu (File, Open, Files of type:Table (*.dbf))sau prin
comanda USE:
USE[] [IN ] [TAG ][ASCENDING DESCENDING]
[ALIAS ] [EXCLUSIVE] [NOUPDATE]
-
5/28/2018 Baze de Date in Visual Foxpro
3/87
Baze de daten Visual FoxPro 3
o - numele tabelului de date care va fi deschis(extensia implicitDBF);
o IN - permite deschiderea unui tabel de date ntr-o alt zonde lucru dect cea curent;
o TAG - face precizarea unei variante de indexare;o ASCENDING DESCENDING - precizeaz tipul ordonrii
(implicit ascendent) atunci cnd se folosete indexarea;
o ALIAS- stabilete un nou alias;o EXCLUSIVE- asigurexclusivitatea folosirii unui tabel de date
atunci cnd se lucreazntr-o reea de calcul;
o NOUPDATE - protejeaz tabelul de date la scriere (estedeschis doar pentru consultare).
Observaii Derularea unei sesiuni de lucru n FoxPro se realizeaz n
directorul de lucru implicit. Acest director poate fi schimbat
prin comanda:
SET DEFAULT TO undepathdefinete noul director.
Lista tabelelor de date aflate n directorul de lucru poate fiobinutprin lansarea comenzii:
DIR
Se poate limita, temporar, accesul la nregistrrile tabelului dedate prin folosirea comenzii:
SET FILTER TO
-
5/28/2018 Baze de Date in Visual Foxpro
4/87
4 Baze de daten Visual FoxPro
Zone de lucru
Pentru manipularea simultan a mai multor tabele de date,
FoxPro folosete zone speciale de memorie numite zone de lucru, n
care depune informaiile necesare efecturii operaiilor 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 dect prin numele lor. n afar de acestealias-uri utilizatorul poate defini i propriile sale alias-uri.
Observaii La pornirea FoxPro-uluizona de lucru implicitva fi zona 1 (cu
alias 1 sau A). Aceasta se poate schimba prin comanda :
SELECT
Comanda este urmatde o cifr, liter sau de un alias definit
de utilizator. Dacalias-ul este 0 se va selecta prima zonde
lucru neselectat.
Pentru a obine informaii despre zonele de lucru folosite itabelele de date deschise se pot folosi doufuncii:
USED([]) i DBF([])
Funcia USED returneaz .T. sau .F. dac, n zona de lucru
curentsau precizatprin alias, este sau nu prelucrat un tabel de
date. Funcia DBFreturneaznumele tabelului de date deschis n
zona de lucru.
-
5/28/2018 Baze de Date in Visual Foxpro
5/87
Baze de daten Visual FoxPro 5
Exemple:
use personal in 1
use nomenclator in B alias nomenselect nomen?dbf()C:\PROGRAMFILES\DEVSTUDIO\VFP\JOB\NOMENCLATOR.DBF?used(1).T.
1.3. Modificarea structurii unui tabel de date
Modificarea caracteristicilor unui tabel de date poate fi fcutprin
comanda:
MODIFY STRUCTURE
Aceastcomandpermite modificarea structurii tabelului de date
activ prin deschiderea unei ferestre de dialog, aceeai ca la crearea
tabelului de date. Modificrile care pot fi aduse structurii unui tabel dedate sunt :
schimbarea numelor, tipurilor i limii cmpurilor dejaexistente;
tergeri, inserri de cmpuri, prin plasarea cursorului pe zonade modificare (prima coloan din fereastra de dialog) i
acionarea butoanelor Deletei Insert.
Dupefectuarea modificrilor, FoxPro copiazconinutul tabelului
de date vechi n tabelul de date nou, cu efectuarea schimbrilor
respective.
Caracteristicile unui tabel de date (structura) pot fi vizualizate
prin comanda:
DISPLAY STRUCTURE
-
5/28/2018 Baze de Date in Visual Foxpro
6/87
6 Baze de daten Visual FoxPro
1.4. nchiderea prelucrrii tabelelor de date
Finalizarea operaiei de prelucrare a tabelelor se poate face prin
comenzile:
USE sau CLOSE ALL
Prima comanda nchide prelucrarea tabelului de date din zona
de lucru curentiar a doua nchide i elibereaztoate zonele de lucru
(n acest caz zona curentdevine zona de lucru 1).
1.5. Editarea coninutului unui tabel de date
Prelucrarea nregistrrilor. nregistrarea curent.Un grup de nregistrri (domeniu) poate fi:
All semnifictoate nregistrrile tabelei; Next urmtoarele nregistrri; Record - nregistrarea cu numrul de ordine specificat; Rest restul nregistrrilor din poziia curentpnla sfritul
tabelului.
Prelucrarea tabelelor de date se realizeaz la nivel denregistrare. La un moment dat este activ un singur tabel de date i o
singurnregistrare din acest tabel. Fiecare nregistrare are un numrde ordine, asociat acesteia la introducerea ei n tabelul de date.Numrul de ordine al nregistrrii curente poate fi modificat princomenzile:
GOTOTOP | BOTTOM | RECORD
(salt la prima, ultima sau nregistrarea precizatdin tabel);
-
5/28/2018 Baze de Date in Visual Foxpro
7/87
Baze de daten Visual FoxPro 7
SKIP []
(salt nainte sau napoi cu un numr de nregistrri);
LOCATE [] [FOR ] [WHILE ]
(cut prima nregistrare care respect condiia ,
domeniul nregistrrilor fiind dat de clauzele i
WHILE).
Poziia curent n tabelul de date poate fi stabilit cu ajutorul
funciilor:
EOF() returneaz.T.sau .F. dupcum este detectat sau numarcajul de sfrit de fiier (aflat dupultima nregistrare);
BOF() returneaz.T.sau .F.pentru nceput de fiier; RECNO() furnizeaz numrul de ordine al nregistrrii
curente.
Exemple:use personal?recno()1goto record 7?recno()7goto top?recno()1skip 1
?bof().T.skip 3?recno()3go bottomskip?eof().T.locate for nume=ALEX
-
5/28/2018 Baze de Date in Visual Foxpro
8/87
8 Baze de daten Visual FoxPro
Introducerea nregistrrilor noi ntr-un tabel de date
Numrul de nregistrri dintr-o bazde date, furnizat de funcia
RECCOUNT(), poate fi modificat, prin introducerea unor nregistrri
vide (adugri, inserri):
APPEND BLANK sau INSERTBLANK [BEFORE]
Inserarea se executimplicit dupnregistrarea curent, dacnu
se folosete opiunea BEFORE, iar urmtoarele nregistrri sunt
translatate spre sfritul tabelului de date i renumerotate.
tergerea nregistrrilor dintr-un tabel
Eliminarea unor nregistrri din tabelele de date se efectueazla
nivel logic sau fizicprin utilizarea comenzilor DELETE, RECALL, PACK,
ZAP.
a)tergerea logic (marcare pentru tergere).Prin marcareapentru tergere nregistrrile din tabelele de date nu sunt
eliminate definitiv. Pentru tergerea logic este utilizat
comanda:
DELETE [] [FOR ] [WHILE ]
Aceastcomand(precum i altele) folosete clauza FORpentru
selectarea tuturor nregistrrilor care corespund condiiei logice. Clauza WHILE ntrerupe testarea nregistrrilor cnd
gsete o nregistrare ce nu respectcondiia dat, .
Accesul la nregistrrile marcate pentru tergere este controlat decomanda:
SET DELETED ON OFF
-
5/28/2018 Baze de Date in Visual Foxpro
9/87
Baze de daten Visual FoxPro 9
Cnd se alege opiunea ON, nregistrrile marcate pentru
tergere nu vor fi accesibile celorlalte comenzi, iar cnd se
selecteazopiunea OFF, nregistrrile sunt accesibile indiferent
de marcajul de tergere (starea implicit este OFF). Aceast
comand este util atunci cnd se lucreaz pe grupuri de
nregistrri.
b)Demarcarea tergerii logice. Marcajele de tergere logicpotfi anulate prin folosirea comenzii:
RECALL [] [FOR ] [WHILE ]
c)tergerea fizic. Prin folosirea acestui tip de tergerenregistrrile sunt eliminate definitiv din tabelul de date(tergerile fizice nu mai pot fi refcute). tergerile fizice auefect asupra nregistrrilor marcate logic sau asupra tuturornregistrrilor din tabelul de date prelucrat prin utilizarea uneiadin comenzile:
PACK sau ZAP
Modificarea coninutului nregistrrilor
Modificarea coninutului nregistrrilor dintr-un tabel de date
presupune nlocuirea valorilor din unul sau mai multe cmpuri cu altele
noi. Comanda REPLACEpermite actualizarea tabelelor de date cu valori
precizate n comandi are urmtoarea sintax:
REPLACE WITH [, WITH ...][] [FOR ] [WHILE ]
REPLACE nlocuiete vechea valoare din cmpul cu
valoarea expresiei , valoarea din cmpul cu
i aa mai departe.
-
5/28/2018 Baze de Date in Visual Foxpro
10/87
10 Baze de daten Visual FoxPro
Exemple:
use personal?reccount()25append blank?reccount()26goto 7insert blank before?recno()7dele next 3
skip -1recallpack?reccount()24replace for nume=ALEX nume with ALEXANDRU
Fereastra BROWSE
Principala comand, pentru realizarea diferitelor operaiuni
asupra tabelelor de date, prin deschiderea unei ferestre de lucru, este
comanda BROWSEcare poate fi editatn urmtoarea sintax:
BROWSE[FIELDS ] [FOR ][FREEZE ][NOAPPEND] [NODELETE] [NOEDIT NOMODIFY]
o FIELDS- permite ca numai cmpurile precizate sintre n editare(selecie pe vertical);
o FOR precizeaz condiiile conform crora nregistrrilor vor fiafiate n fereastra BROWSE;
o FREEZE- permite modificri doar pe cmpul precizat;o NOAPPEND invalideazposibilitatea efecturii adugrilor;o NODELETE eliminmarcarile pentru tergere;o NOEDIT NOMODIFY - interzice modificrile.
-
5/28/2018 Baze de Date in Visual Foxpro
11/87
Baze de daten Visual FoxPro 11
Ca efect al lansrii comenzii BROWSE,n meniul principal, apare
o nouopiune, Table, care permite:
adugarea unei noi nregistrri la un tabel de date:Append NewRecord(Ctrl+Y);
stabilirea nregistrrii curente: Go to Record; precizarea unor criterii de poziionare, Locate, la fel ca prin
folosirea comenzii cu acelai nume:
Domeniul
Clauza FOR
Clauza WHILE
-
5/28/2018 Baze de Date in Visual Foxpro
12/87
12 Baze de daten 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 nregistrrii:
o tergere fizic: Remove Deleted Records;o tergeri conform sintaxei comenzilor DELETE i RECALL:
Delete Records, Recall Records;
modificri ale valorilor nscrise n cmpurile tabelelorconform sintaxei comenzii REPLACE: Replace Field.
Cmpuri MEMO
Cmpurile MEMO definesc cmpuri de lungime variabil detip text. Un tabel de date, cu cel puin un cmp MEMO, are asociat unfiier suplimentar n care sunt depuse informaiile legate de acest
cmp. Pentru a putea identifica datele din fiierul MEMO asociat, care
Fanionul de tergere
Tabelul de date
Fiierul MEMOasociat
-
5/28/2018 Baze de Date in Visual Foxpro
13/87
Baze de daten Visual FoxPro 13
aparin unei anumite nregistrri, n tabelul de date, pe poziiacorespunztoare a nregistrrii, se memoreaz o adres spre fiierul
MEMO (poziia primului caracter al cmpului respectiv).Modificarea cmpurilor MEMO se poate face n fereastra Browse
sau prin comenzi specifice:
MODIFY MEMO[,,....]
- se deschide cte o fereastr de editare pentru fiecare cmpmemo;
CLOSE MEMO[,,....] ALL
- se vor nchide ferestrele de editare corespunztoare cmpurilormemospecificate n list(sau toate -ALL);
APPEND MEMO FROM [OVERWRITE]
- coninutul unui fiier extern, de tip text, va fi adugat lasfritul cmpului memo precizat (dac se folosete clauzaOVERWRITE vechiul coninut al cmpului se pierde);
COPY MEMO TO [ADDITIVE]
-coninutul unui cmp memose copiazntr-un fiier extern detip text. Dacse folosete clauza ADDITIVE copierea se va face lasfritul unui fiier deja existent.
1.6. Ordonarea i actualizarea tabelelor de date
nregistrrile apar, n tabelul de date, n ordinea n care au fostintroduse, dar nu ntotdeauna aceasta este i ordinea lor de utilizare.Ordonarea unui tabel presupune stabilirea unui criteriu dupcare sfieparcurse nregistrrile acestuia. Acest criteriu poate fi un cmp sau o
combinaie de cmpuri ale tabelului de date numit cheie de ordonare.
-
5/28/2018 Baze de Date in Visual Foxpro
14/87
14 Baze de daten Visual FoxPro
O cheie de ordonare este o expresie, alctuitdin cmpuri ale tabelului,
care este evaluatpentru fiecare nregistrare, ordinea de prelucrare anregistrrilor fiind dat de valorile acestei expresii. Se folosesc doumetode de ordonare a bazelor de date: fizici logic.
Ordonarea fizic(sortarea)
Sortarea constn rearanjarea fizica datelor din tabel ntr-o altordine, datde criteriul de sortare. Astfel rezultun tabel de date nou
cu aceleai informaii ca i cel original, dar ordinea fizic(natural) anregistrrilor este schimbat.
SORT TO ON [/A /D] [/C][, [/A /D] [/C] ...]
[ASCENDING DESCENDING][] [FOR ] [WHILE ][FIELDS ]
o - numele tabelului de date nou creat;o ,,....- lista cheilor de sortare;o /A , /D- sortare ascendent, descendent, relativla cmpul
asociat;o /C- sortare n ordine alfabetic, necontnd literele mari sau mici;o ASCENDING DESCENDING- ordonare ascendentsau descendent
cu specificarea ordinii pentru toate cmpurile;o FIELDS- selecie pe vertical(filtrare).
Ordonarea logic(indexarea)
Indexarea este o metod mult mai eficient de ordonare atabelelor de date, care permite ca operaiile de consultare i cutare adatelor n tabel sfie rapide. Prin indexare se creeazun fiier index,asociat bazei de date, de dimensiuni mult mai mici dect dimensiuneabazei de date. Fr a detalia structura fiierului index, trebuiemenionat c fiierul index este o list simplu nlnuit a numerelor
articolelor din baza de date aflate n ordinea lor natural.
-
5/28/2018 Baze de Date in Visual Foxpro
15/87
Baze de daten Visual FoxPro 15
La definirea structurii bazei de date (prin CREATE sau MODIFY
STRUCTURE), n coloana Index, se pot defini unul sau mai multe criteriide indexare care sunt identificate prin etichete (numele unei eticheteeste acelai, n acest caz, cu numele cmpului). Activarea unuia saualtuia din criteriile de indexare se realizeazn doumoduri:
a) la deschiderea tabelului de date:USE ORDER
b)n timpul lucrului prin comanda:SET ORDERTO TAG
Stabilirea altor criterii de indexare, diferite de cele definite nstructura tabelului de date, se poate face prin comanda:
INDEXON TAG [FOR ]
[ASCENDING DESCENDING][UNIQUE]
o TAG- identificun criteriu de indexare;o UNIQUE - clauz care nu admite dubluri pe cmpul de
indexare
tergerea unei etichete (criteriu) de indexare se realizeazutiliznd comanda:
DELETE TAG ALL
Principalul avantajal indexrii rezult din posibilitatea localizriirapidea unor nregistrri, mult mai eficientdect cea furnizatprinLOCATE. Acest lucru este realizat prin comanda:
SEEK
-
5/28/2018 Baze de Date in Visual Foxpro
16/87
16 Baze de daten Visual FoxPro
Comanda SEEK caut prima nregistrare pentru care valoarea
expresiei calculate cu valori din cmpurile acesteia este egal cu, pe criteriul de indexare selectat.
Observaii la un moment dat poate fi activ un singur criteriu de indexare,
numele etichetei corespunztoare fiind furnizat de funciaTAG();
efectul unei comenzi de cutare (SEEKsau LOCATE) poate fiprelungit prin folosirea comenzii CONTINUE;
funcia FOUND()determin(.T. sau .F.) dacs-a reuit saunu localizarea.Comanda:
SET EXACTON OFF
stabilete modalitatea de cutarea pe subiruri de caractere.Clauza impliciteste OFF.
Dac este un ir de caractere, acesta trebuie pus ntreapostrofuri.
1.7. Introducerea formatata datelor
FoxPro ofer posibilitatea introducerii datelor sub forma unormachete sau formate prin asocierea la clauza GET a clauzelorPICTUREi FUNCTION:
@ [GET][PICTURE] [FUNCTION]
[READ]
@plaseazcursorul pe poziia specificata ecranului. GET stabilete poriunea de pe ecran unde vor fi introduse
valorile ce vor fi atribuite variabilei .
-
5/28/2018 Baze de Date in Visual Foxpro
17/87
Baze de daten Visual FoxPro 17
PICTURE i FUNCTION permit formatarea afirii datelor.Ambele clauze sunt urmate de un ir de caractere care conine
coduri referitoare la modul de afiare. Codurile PICTURE se refer doar la un anumit caracter din
formatul de afiare i anume la cel de pe aceeai poziie cucea a codului.
Codurile FUNCTIONacioneazasupra tuturor caracterelor dinformatul de afiare.
Clauzele PICTURE i FUNCTION pot aciona mpreun, darFUNCTIONeste prioritar.
READdetermincitirea coninutelor zonelor de editare pentruintroducerea valorilor de la tastatur, create prin GET.
Codurile de formatare PICTUREX Permite orice caracter9 Cifre i semnele + - . E (date numerice)# Cifre, spatii i semnele + - . EA Numai litereW Numai date logiceN Numai litere i cifreY Permite doar caracterele logice Y, y, N i n! Literele sunt convertite n majuscule* Afieazasterix-uri n locul zerourilor iniiale. Specificpoziia punctului zecimal.
Codurile de formatare FUNCTIONA Permit numai caractere alfabetice (litere)B Aliniere la stngaI CentrareJ Aliniere la dreapta
C Dupun numr pozitiv se afieazCR(credit)D Format datcalendaristicstabilit de SET DATEE Format datcalendaristiceuropean (britanic)T Eliminspatiile de nceput i sfritX Dupun numr negativ se afieazDB(debit)Z Afieazspatii dacvaloarea cmpului este 0( Numerele negative sunt incluse ntre paranteze! Literele sunt convertite n majuscule.
-
5/28/2018 Baze de Date in Visual Foxpro
18/87
18 Baze de daten Visual FoxPro
Exemple:
* citirea unui numr cu dou zecimale pe cmp de 7caractere:a=0@10,10 GET a PICTURE '9999.99'READ
* citirea oricror caractere pe cmp 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 doucifre cu centrare:.....PICTURE 'A99' FUNCTION 'I!'
* urmtoarele machete de editare sunt echivalente:..... PICTURE 'AAAAA' FUNCTION '!'..... PICTURE 'XXXXX' FUNCTION 'A!'
1.8. Actualizarea tabelelor de date
Actualizarea tabelelor de date nseamn modificareastructuriitabelelor de date (vezi comanda MODIFY STRUCTURE) saumodificarea coninutului acestora. n ceea ce privete modificareaconinutului unui tabel de date se au n vedere posibilitile detergere sau adugare a unor nregistrri precum i modificarea
coninutului celor existente (vezi comenzile DELETE, PACK, RECALL,REPLACE). Pentru editarea de la tastatur a tabelelor de date sepoate utiliza comanda BROWSEsau se pot alctui secvene program.
Exemplu.Fie fiierulAgenda.dbf,avnd structura:
Nume Caracter 30Data_N Date 8
Telefon Caracter 10
-
5/28/2018 Baze de Date in Visual Foxpro
19/87
Baze de daten Visual FoxPro 19
Pentru introducerea, de la tastatur, a unor date n acest fiierse poate concepe urmtoarea procedur:
procedure introducereclear@10,10 say 'Numele' get nume function '!'@12,10 say 'Data nasterii' get data_n@14,10 say 'Telefonul' get telefonreadendproc
Folosind aceastprocedurse poate edita urmtoarea secven
pentru consultarea i actualizarea fiieruluiAgenda.dbf:
clearuse agendaTEXT
Alegeti optiunea:1. Afisare2. Adaugare3. Modificare0. Terminare
ENDTEXT
opt=0@10,20 say 'Optiunea:' get opt picture '9' range 0,3read
cleardo case
case opt=1do afisare
case opt=2do adaugare
case opt=3do modificare
case opt=0cancel
endcasecancel
procedure afisarebrowse
endprocprocedure adaugare
append blank
-
5/28/2018 Baze de Date in Visual Foxpro
20/87
20 Baze de daten Visual FoxPro
do introducereendproc
procedure modificarenumele = space(30)@10,0 say 'Numele cautat' get numele function '!'readlocate for nume=numeleif found()
do introducereelse
WAIT'Nume negasit!'endif
endprocObservaiio Pentru afiarea meniului de opiuni s-a utilizat instruciunea
TEXT ENDTEXTo Pentru afiarea mesajului de eroare Nume negasit! s-a
utilizat instruciunea WAIT.
1.9. Ciclul SCAN
Ciclul SCAN este un ciclu cu numr finit de pai, specializat nlucrul cu tabele de date. Aceast structur repetitiv realizeazparcurgerea tabelului i executarea unui grup de instruciuni pentrufiecare nregistrare care ndeplinete condiiile specificate. Ciclul esteutilizat, deseori, pentru actualizarea coninutului tabelelor de date,conform unor anumite condiii, sau pentru obinerea informaiilorstatistice.
Sintaxa este:
SCAN[] [FOR ] [WHILE ][][LOOP][EXIT]
ENDSCAN
-
5/28/2018 Baze de Date in Visual Foxpro
21/87
Baze de daten Visual FoxPro 21
1.10. Extragerea unor informaii statistice
Comenzile care permit extragerea unor informaii din tabelelede date se aplicasupra unor cmpuri sau asupra unor expresii careconin numele unor cmpuri.
COUNT [TO ][FOR ] [] [WHILE ]
- numr nregistrrile din tabelul de date, numrul denregistrri putnd fi memorat ntr-o variabilde lucru;
SUM [TO][FOR ] [] [WHILE ]
- nsumeazvalorile expresiilor din lista de expresii()i le atribuie, eventual, unei liste de variabile ();
AVERAGE [TO ][FOR ] [] [WHILE cond>]
- la fel ca SUM avnd ca rezultat media aritmetic.
CALCULATE [TO][FOR ] [] [WHILE ]
- calculeazanumite expresii folosind urmtoarele funcii ():
SUM() - suma;AVG() media aritmetic;STD() deviaia standard;VAR() abaterea medie ptratic;MAX() val maxim, nu neaprat numeric;MIN() val minim, nu neaprat numeric;NPV(,)[,])
valoarea prezentneta unei investiii (vezifuncia de calcul financiar);
CNT() numrul de nregistrri din tabelul de date.
-
5/28/2018 Baze de Date in Visual Foxpro
22/87
22 Baze de daten Visual FoxPro
Aplicaii
10 Se creaz tabelul (fiierul) de date Personal.dbf avnd
structura:
Cmp Semnificaie Tip de dat nume Numele angajatului ir de caractere marca Cod numeric angajat ir de caractere functia Funcia angajatului ir de caractere salariu Salariul brut Numeric datanast Data naterii Datcalendaristic
sex Sex Logic adresa Adresa angajatului Memo20 Se introduc n tabel urmtoarele nregistrri:
- n cmpul sexse nscriu valorile .T. (masculin) i .F. (feminin)- valorile din cmpul adresa(text de lungime variabil) nu pot fi nscrise
direct n tabel, dar sunt stocate ntr-un fiier asociat tabelului de date
numit fiier memo. Trimiterea spre acest fiier se poate face printr-un
dublu clic, cu mouse-ul pe cmpul memocorespunztor30 Informaii privind:
fiierele tabel de date prezente pe disc, n directorul de lucru:dir
numrul de nregistrri ale tabelului de date i numrul deordine al nregistrrii curente:
?reccount()
?recno()
-
5/28/2018 Baze de Date in Visual Foxpro
23/87
Baze de daten Visual FoxPro 23
40 Operaii asupra tabelului de date:
limitarea accesului n tabel la nregistrrile care conin angajaide sex masculin:
set filter to sex=.T.
browse
anularea filtrrii:set filter to
browse
localizarea nregistrrii cu marca 177 :locate for marca=177
browse
marcarea pentru tergere a nregistrrilor 2 i 4:delete record 2
delete record 4
browse
marcarea pentru tergere a nregistrrilor corespunztoarepersoanelor cu vrste mai mari de 40 ani:
delete all for (year(date())-year(datanast))>40
browse
demarcarea tuturor nregistrrilor:recall all
browse
tergerea fizic a nregistrrilor pentru care salariul estecuprins ntre 3500000 i 12000000:
dele all for salariu >=3500000 and salariu
-
5/28/2018 Baze de Date in Visual Foxpro
24/87
24 Baze de daten Visual FoxPro
browse
nlocuirea valorica salariului, la toi salariaii, cu 12%:replace all salariu with salariu*1.12
browse
50 Editarea tabelului de date selectiv (selecii pe orizontali pe
vertical) utiliznd comanda BROWSE:
afiarea pe cmpurile nume, functia, salariu:browse fields nume, functia, salariu
editarea nregistrrilor corespunztoare persoanelor de sexmasculin i a cmpurilor nume, salariu:
browse fields nume, salariu for sex=.T.
editarea tabelului de date doar pe cmpul salariu:brow freeze salariu
60 Introducerea adresei persoanelor avnd marca 204 i 161 :locate for marca='204'
modify memo adresalocate for marca='161'modify memo adresa
70 Se creaz, prin sortare, un tabel de date Persoane.dbf,ordonarea fcndu-se dup cmpurile Functia (cheie primar) iSalariu(cheie secundar), ascendent:
sort on functia, salariu to Persoaneuse Persoanebrowse
8
0
Se definesc urmtoarele 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 marcaindex on marca tag marca
-
5/28/2018 Baze de Date in Visual Foxpro
25/87
Baze de daten Visual FoxPro 25
90 Vizualizarea tabelului de date conform celor patru criterii deindexare definite anterior:
set order to tag numbrowseset order to tag funcbrowseset order to tag salariubrowse?tag()set order to tag marcabrowse100 Folosind criteriul marca, se localizeaznregistrarea de cod
204 i se face, pentru aceasta, o mrire de salariu de 8%:set order to tag marcaseek '204'replace salariu with salariu*1.08110 Informaii despre tabelul de date:
numrul total de nregistrri:count to tot?tot
numrul de angajai Secretara:count for functia='Secretara' to a?a
sau (prin program):a=0scan for functia='Secretara'
a=a+1endscan?a
media salarialpentru funcia 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
-
5/28/2018 Baze de Date in Visual Foxpro
26/87
26 Baze de daten Visual FoxPro
sau (prin program):
maxim= salariuscanif salariu >maxim
maxim=salariuendif
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 suntreunite ntr-o singur colecie. Fiecare baz de date are asociat undicionar de datecare ofermai multflexibilitate n proiectarea imodificarea bazei de date i reduce sarcina programatorului de ascrie cod pentru validrile la nivel de cmp i de nregistrare sau
pentru a asigura unicitatea valorilor din cmpurile reprezentnd cheiprimare. Fiierele baz de date, coninnd tabele de date iinformaiile asociate lor sunt fiiere avnd extensia implicitdbc.
Dicionarul de date Visual FoxPro permite crearea sauspecificarea unor elemente cum ar fi:
Cheile primare i secundare; Relaiile dintre tabelele bazelor de date; Valorile implicite ale cmpurilor; Mtile de intrare i a formatelor de afiare a cmpurilor; Regulile la nivel de cmp i de nregistrare; Procedurile stocate.
Crearea unei baze de date poate fi iniiatprin comanda:
MODIFY DATABASE[]
-
5/28/2018 Baze de Date in Visual Foxpro
27/87
Baze de daten Visual FoxPro 27
sau prin alegerea opiunii File, New din meniu(n acest caz n casetaNew se selecteazDatabase i New file). Cnd se creeaz o nou
baz de date, aceasta nu conine nimic (tabele asociate sau alteobiecte).
Pentru iniierea unei sesiuni de lucru cu o baz de date,aceasta trebuie s fie activat (deschis). Deschiderea unei baze dedate se poate realiza prin meniu(File, Open, Files of type:Database(*.dbc))sau princomanda MODIFY DATABASE.
ObservaieLucrul cu bazele de date se realizeazutiliznd Constructorulbazei de date n fereastra Database Designer, in meniulprincipal fiind activat opiunea Database care oferinstrumentele de lucru cu bazele de date.
SfatLucrai cu bara de instrumente Database Designer. Dacaceasta nu este afiat utilizai meniul: View,ToolbarsDatabase Designer.
Bara de instrumente Database Designerpermite efectuarea unoroperaiuni asupra bazelor de date cum ar fi:
New Table Crearea unui nou tabel de date i includerea luin baza de date; Add Table Includerea unui tabel deja creat n baza de date; Remove Table Eliminarea unui tabel de date din baza dedate; Modify Table Modificarea structurii unui tabel; Browse Table Deschiderea ferestrei de vizualizarea pentruun tabel;
New Local View Crearea unei vederi (View).
New Table
Add Table
Remove TableNew Local View
Modify TableBrowse Table
-
5/28/2018 Baze de Date in Visual Foxpro
28/87
28 Baze de daten Visual FoxPro
2.2. Adugarea tabelelor la baza de date
Fiecare tabel Visual FoxPro poate exista n una din urmtoareledou stri: ca tabel liber, adic sub form de fiier .dbf neasociatvreunei baze de date, sau ca tabel dintr-o baz de date, adic subform de tabel asociat unei baze de date. Tabelele asociate uneibaze de date au unele proprieti specifice, care nu exist n cadrultabelelor externe, cum ar fi regulile la nivel de cmp i denregistrare, declanatoarele i relaiile permanente.
Tabelele pot fi asociate cu o baz de date prin crearea lor ncadrul unei baze de date deschise n fundal sau prin adugareatabelelor existente la o bazde date.
ObservaieUn tabel existent poate fi asociat cu o singur baz dedate.
2.3. Eliminarea tabelelor din baza de date
Prin adugarea unui tabel la o baz de date, Visual FoxPromodific nregistrarea din antetul fiierului corespunztor tabeluluipentru a actualiza calea i numele fiierului asociat bazei de date careinclude acum tabelul. Procesul de eliminare a unui tabel dintr-o bazde date (Remove Table)nu numai cterge tabelul i dicionarele dedate din fiierul bazei de date, ci actualizeaz informaia de relaiepentru a reflecta noul statut al tabelului, cel de tabel liber. Eliminarea
unui tabel dintr-o bazde date nu determintergerea automat afiierului asociat tabelului. Pentru tergerea fiierului .dbf se poateutiliza comanda DELETE.
2.4. Crearea relaiilor permanente ntre tabele
Pentru stabilirea unor relaii ntre tabele, trebuie inut cont cacestea nu sunt relaii de egalitate, ci de subordonare. Unul dintre
tabele va fi printe(Parent Table), iar cellalt copil(Child Table).
-
5/28/2018 Baze de Date in Visual Foxpro
29/87
Baze de daten Visual FoxPro 29
n Visual FoxPro, sunt utilizai indecii pentru a stabili relaiipermanente ntre tabelele bazei de date. Indecii sunt constituii pe
baza unor expresii (n particular indecii pot fi nume de cmpuri aletabelelor) prin utilizarea procedeului de indexare. Tipul etichetei deindex sau al cheii determintipul de relaie permanentcare se poatecrea. Este necesar folosirea unei chei primare (Primary) pentrurelaii una la mai multe. Pentru partea mai multe, cheile deindexare sunt chei obinuite(Regular).
ExempluBaza de date Furnizor.dbc include tabelele clienti.dbf,
comenzi.dbf, produse.dbf. Aceste tabele de date sunt indexate dupcmpurile codc(cod client) i codp(cod produs). Tabelele clienti.dbfi produse.dbf sunt tabele printe iar tabelul comenzi.dbf este tabelcopil, stabilindu-se relaii una la mai multe: clienti.dbf comenzi.dbf
i produse.dbf comenzi.dbf. n tabelul clienti.dbf respectivproduse.dbf cheile codc, codp sunt primare (unice), valorilecorespunztoare acestora neputnd fi scrise dect o singurdat ntabel nu pot exista mai muli clieni sau mai multe produse cuacelai cod:
Figura 2.1
-
5/28/2018 Baze de Date in Visual Foxpro
30/87
30 Baze de daten Visual FoxPro
n tabela copil, comenzi.dbf,pot apare de mai multe ori acelaicoduri de clieni sau produse. Se impune stabilirea cheilor codc icodpdrept chei normale:
Crearea unei relaii 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 comenzi.dbf).tergerea unei relaii permanente dintre tabele:
n fereastra Database Designer, se execut clic pe linia derelaie dintre doutabele. Ca urmare, limea liniei de relaie cretepentru a indica faptul c s-a selectat relaia respectiv. Pentrueliminarea relaiei se apastasta DELETE.
Figura 2.3
Figura2.2
-
5/28/2018 Baze de Date in Visual Foxpro
31/87
Baze de daten Visual FoxPro 31
Crearea integritii refereniale
Generatorul de Integritate Referenial (ReferentialIntegrity Builder) se lanseazprin meniu: Database, Edit ReferetialIntegrity.Generarea integritii refereniale presupune crearea unuisetde reguli care spstreze relaiile definite ntre tabele atunci cndse insereazsau se terg nregistrri.
Prin ntrirea integritii refereniale, Visual FoxPro nu permite:
Sse adauge nregistrri la un tabel copil atunci cnd nu existnici o nregistrare asociatn tabelul printe.
Sse modifice valori n tabelul printe care ar duce la apariiade nregistrri orfane n tabelul copil. Sse teargnregistrri din tabelul printe atunci cnd exist
nregistrri asociate n tabelul copil.Generatorul de integritate referenial gestioneaz mai multe
niveluri de tergere i actualizri n cascadi este instrumentul celmai potrivit pentru generarea integritii refereniale.
Figura2.4
-
5/28/2018 Baze de Date in Visual Foxpro
32/87
32 Baze de daten Visual FoxPro
Observaii Se recomand lansarea generatorului de integritate
referenial imediat dup includerea unui nou tabel istabilirea relaiilor cu alte tabele deja incluse.
Se recomand realizarea relaiilor de integritate ncascad.
Dacse intervine n arhitectura bazei de date, de pild, prinmodificarea tabelelor sau a indecilor folosii ntr-o relaiepermanent, se impune relansarea generatorului nainte de
a se folosi baza de date astfel nct acesta sreflecte nouaarhitectur. 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 reprezintun tip special de tabele, construite pe bazadatelor din una sau mai multe tabele sau vederi legate ntre ele prinrelaii.Vederile sunt folosite atunci cnd se dorete o altstructuratabelelor (bazelor de date), structurconstruitpe baza unor tabelei vederi deja existente.
Observaii Vederile sunt incluse n bazele de date, ele neputnd fi
folosite dect atunci cnd baza de date care le conine estedeschis. Chiar memorarea efectiv a vederilor se face nfiierul bazei de date (.dbc).
Vederile sunt vzute i prelucrate ca orice alt tabel. Vederile sunt tabele logice, nestocnd fizic date.
-
5/28/2018 Baze de Date in Visual Foxpro
33/87
Baze de daten Visual FoxPro 33
Figura 2.5
Crearea unei vederi n cadrul unei baze de date se poate realiza
prin meniu, File, New (n acest caz n caseta New se selecteazView i New file), sau folosind butonul New Local Viewdin barade instrumente Database Designer. n meniul principal este activatopiunea Query care ofer instrumentele de lucru pentru vederi iinterogri. Pentru construirea vederilor se folosete un utilitar specialal SGBD-ului Visual FoxPro numit View Designer (Constructorul devederi).
Modul de utilizare a acestui utilitar este asemntor celuifolosit pentru construirea interogrilor (Query Designer).
Construirea unei vederi implicparcurgerea urmtoarelor etapeprincipale:
dac baza de date care urmeaz s conin vederea nueste deschis, se deschide, eventual se creeaz;
apoi se pornete Constructorul de vederi; urmeaz precizarea sursei de date, adic a tabelelor din
care se preiau datele pentru construirea vederii respective:
-
5/28/2018 Baze de Date in Visual Foxpro
34/87
34 Baze de daten Visual FoxPro
apoi se stabilesc cmpurile care vor intra n componena
vederii, cmpuri selectate dintre cele ale tabelelor sursprecizate anterior;
n continuare, se specific o serie de parametri precum:legturile ntre tabelele specificate, eventualele condiii defiltrare (selecie), ordonare, grupare a datelor n vedere,modul de actualizare a datelor surs pe baza datelor dinvedere etc.
Aplicaii
10 Pentru evidena produselor livrate de un furnizor se creeazbaza de date Furnizor.dbc, avnd n componenurmtoarele tabelede date:
a) clienti.dbf(Client C, 35 / Codc C, 4 / Adresa - memo)
b) comenzi.dbf (Data D / Cantitate N, 10 / Codc C, 4 /Codp C, 5)
c) produse.dbf(Denumire C, 35 / Pret N, 10 /Um C, 6 /Codp C, 5 / Stoc N, 12)
-
5/28/2018 Baze de Date in Visual Foxpro
35/87
Baze de daten Visual FoxPro 35
unde Codceste codul atribuit firmei, iar Codpeste codul produsului i
vor constituii cheilede legturntre tabele.
20 Sse indexeze tabelele de date: clienti.dbfdupcmpul Codc, cruia i se va atribuii statutul de
cheie primar(vezi figura 2.2); comenzi.dbf dup cmpurile Codc i Codp crora li se va
atribuii statutul de chei normale(vezi figura 2.3); produse.dbfdupcmpul Codp - cheie primar.
30 Sse realizeze relaiile de tip una la mai multe (vezi figura 2.1):a) ntre tabelele de date clienti.dbf i comenzi.dbf (clic cu
mouse-ul pe cheia Codcdin tabelul clienti.dbfi tragere pestecheia Codcdin tabelulcomenzi.dbf).
b) ntre tabelele de date produse.dbfi comenzi.dbf.40 S se lansezeGeneratorul de Integritate Referenial (prin
meniu: Database, Edit ReferetialIntegrity) pentru realizarea relaiilorde integritate n cascad(Cascade) vezi figura 2.4. Sse verificestabilirea integritii refereniale n urmtoarele situaii: o tergere logic (DELETE) n tabelul printe, clienti.dbf, se
reflectca tergere logicn tabelul copil comenzi.dbf. orice modificare a cheii primare din tabelul printe, clienti.dbf,
se reflectca modificare n tabelul copil comenzi.dbf.
50 Sse includn baza de date un tabel vedere, livrari:
-
5/28/2018 Baze de Date in Visual Foxpro
36/87
36 Baze de daten Visual FoxPro
IndicaieSe va aciona butonul New Local View din bara de instrumente
Database Designeri se vor include n vedere cele trei tabele de date (vezi
figura 2.5), precum i cmpurile necesare. La nchiderea ferestrei View
Designer, acestei vederi, i se va asocia numele livrari.
60 S se obin situaia livrrilor, afind coninutul tabelului livrari(Browse):
3. Interogarea bazelor de date
O interogare a unei baze de date reprezint extragerea - nfuncie de anumite criterii i ntr-un anumit format - unor date dintabele de date care alctuiesc baze de date. Componenta VisualFoxPro-ului care realizeaz acest obiectiv se numete QueryDesigner (Constructorul de interogri), componentasemntoarea 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 interogri
Crearea unei interogri (fiier cu extensia implicitQPR) poate fi iniiatprin comanda:
MODIFY QUERY[]
-
5/28/2018 Baze de Date in Visual Foxpro
37/87
Baze de daten Visual FoxPro 37
sau prin alegerea opiunii File, New din meniu(n acest caz n casetaNew se selecteazForm i New file).
Activarea (deschiderea) unui formular se poate realiza prinmeniu (File, Open, Files of type:Query (*.qpr)) sau prin comandaMODIFY QUERY.
O interogare este o secvenexecutabilcare poate firulatn urmtoarele moduri:
din meniul principal(Query, Run Query), prin acionarea butonului din linia de instrumente standard, prin comanda DO.ObservaiePrin lansarea Constructorului de interogri, n fereastraQuery Designer, meniul principal va include opiunea Querycare oferinstrumentele de lucru necesare.
SfatLucrai cu bara de instrumente Query Designer.Dac aceastanu este afiat utilizai meniul: View, ToolbarsQueryDesigner.
Bara de instrumente Query Designer permite efectuarea unoroperaiuni cum ar fi:
Add Table Includerea unui tabel de date n interogare; Remove Table Eliminarea unui tabel; Add Join Stabilirea sau modificarea unor legturi ntretabelele de date incluse n interogare; Show the SQL window transpunerea secvenei deinterogare n instruciuni SQL;
Add Table
Remove Table
Add JoinShow the SQL window
Query Destination
Maximize the table
-
5/28/2018 Baze de Date in Visual Foxpro
38/87
38 Baze de daten Visual FoxPro
Query Destination stabilirea destinaiei unei interogri: o
fereastr Browse, un tabel permanent, o list la imprimant(report), un grafic, etc. Maximize the table View modificarea formei de afiare aconinutului ferestrei Query Designer.Fereastra Query Designer(figura 3.1) este constituitdin dou
zone, n care sunt afiate tabelele surse de date (mpreuncu legturiledintre ele), respectiv paginile n care se vor preciza parametrii dedefinire a interogrii i anume:
Fields(cmpuri) specificarea cmpurilor sursce vor fi inclusen tabelul destinaie;
Join(legtur) legturile ntre tabelele surs; Filter(filtru) condiiile de selecie (filtrare) a datelor din tabelele
de date; Order By(ordonare) specificordinea de prelucrare; Group By(grupare) criteriile de grupare a datelor; Miscellaneous(altele).
Figura 3.1
-
5/28/2018 Baze de Date in Visual Foxpro
39/87
Baze de daten Visual FoxPro 39
3.2. Fereastra Query Designer
Specificarea cmpurilor interogriiPentru ca un cmp sfie preluat ntr-o interogare se activeaz
pagina Fields, dup care acesta se selecteaz din lista Availabilefields(cmpuri disponibile) i se acioneazbutonul Add. Ca urmarenumele cmpului va fi copiat n lista Selected fields(vezi figura 3.1).Dac se dorete introducerea unui cmp calculat se va introduceformula de calcul corespunztoare n caseta Functions andexpresions.
Specificarea legturilor ntre tabelele de dateModelul relaional al bazelor de date permite stabilirea unor
legturi ntre tabelele de date. Aceste relaii pot fi permanente,memorate n fiierul bazei de date, sau stabilite dinamic n cadrulunor secvene program. Stabilirea legturilor dinamice se poaterealiza cu ajutorul comenzii:
SET RELATION TO INTO ,
INTO ,unde:
- tabelul printe este cel activ;- TO stabilete criteriile de ordonare;- INTO precizeaztabelele copil.
La fel ca n cazul definirii unei vederi (cu View Designer), pentrustabilirea unei legturi ntre doutabele de date, este necesar ca celedoutabele saibcel puin un cmp comun prin intermediul cruia
se realizeazcorespondena. Relaia stabilitntre doutabele legateeste o relaie de subordonare: unul din tabele va fi tabelul printe,iar cellalt va fi tabelul copil. Mutarea indicatorului de nregistrri altabelului printe pe o anumit nregistrare determin mutareaindicatorului de nregistrri al tabelului copil pe nregistrareacorespunztoare, dar nu i invers.
-
5/28/2018 Baze de Date in Visual Foxpro
40/87
40 Baze de daten Visual FoxPro
Observaii: Este obligatorie indexarea tabelului copil dup criteriul care
stabilete legtura (de obicei acesta este un cmp comun cual tabelului printe, dar poate fi i o expresie oarecare).
Se pot stabilii doutipuri de legturi ntre tabelul printe itabelul copil:
o legturi unu la unu, cnd n tabelul copil valorilecheii de indexare sunt unice;
o legturi unu la mai multe, cnd nregistrriletabelului copil pot lua i valori egale pe cheia deindexare.
Legturile permanente necesare pentru stabilirea uneiinterogri se aleg folosind pagina Join(figura 3.2), prin specificareacmpurilor care fac obiectul legturii i a tipului de legtur: Inner Join legturinterioar, ntre nregistrrile din tabelul
printe care au corespondent n tabelul copil i invers; Left Join legtura la stnga, cnd vor fi luate n considerare
i nregistrrile din tabelul printe (din stnga) care nu aucorespondent n tabelul copil;
Right Join legtura la dreapta, cnd vor fi luate nconsiderare i nregistrrile din tabelul copil (din dreapta) carenu au corespondent n tabelul printe;
Full Join vor fi considerate toate legturile.
Figura 3.2
-
5/28/2018 Baze de Date in Visual Foxpro
41/87
Baze de daten Visual FoxPro 41
Condiiile de selecie a nregistrrilor
Principala funcie a unei interogri este aceea de selecie.Criteriile de selecie sunt precizate n pagina Filter.
Ordonarea afirii rezultatelor interogrii
Specificarea ordinii de afiare se face cu ajutorul paginii OrderBy. n figura 3.4 s-a selectat ordonarea dup cmpul nume dintabelul Studenti.dbf:
Gruparea datelor
Figura 3.3
Figura 3.4
-
5/28/2018 Baze de Date in Visual Foxpro
42/87
42 Baze de daten Visual FoxPro
Query Designer (pagina Group By) permite ca mai multe
nregistrri s fie cumulate dup mai multe criterii, pentru fiecaregrup de nregistrri fiind furnizat n tabelul de destinaie o singurnregistrare. Gruparea poate fi realizat dup unul sau mai multecmpuri care vor forma cheia de grupare. nregistrrile avndaceleai chei de grupare vor furniza n tabela de destinaie o singurnregistrare (cmpurile numerice pentru un grup vor conine valoriobinute prin nsumarea valorilor corespunztoare din grup).
Destinaia interogrii
Datele extrase prin interogare pot fi trimise spre o anumitdestinaie (folosind butonul Query Destinationdin bara de butoane aConstructorului de interogri) cum ar fi:
fereastra Browse- implicit; un tabel permanent (Table)acesta putnd fi folosit ntr-o nou
prelucrare; ecranul (Screen); o listla imprimant(Report); un grafic (Graph) construit cu ajutorul componentei Microsoft
Graph.
Figura3.5
-
5/28/2018 Baze de Date in Visual Foxpro
43/87
Baze de daten Visual FoxPro 43
Aplicaii
10 Sse creeze urmtoarele tabele de date: Studenti.dbf (nume C, 30 / matricola N,4 /grupa C,4) Discipline.dbf(materia C, 30 / cod C,4) Note.dbf(nota N,2/ matricola N, 4 / cod C,4):
20 S se indexeze tabelele de date Studenti.dbf, Discipline.dbfdupcmpurile Matricolarespectiv Cod.
30 Sse creeze i sse ruleze fiierul de interogare a tabelelor de
date Studenti.dbf, Discipline.dbf, Note.dbf, pentru afiarea notelorstudenilor inclui n baza de date (vezi figura 3.1 i figura 3.2). Ssestabileascca destinaie a interogrii fiierul Catalog.dbf(vezi figura3.5) i sse vizualizeze coninutul acestui tabel.
40 Sse realizeze interogarea bazei de date pentru afiarea notelorn ordinea alfabetica numelor studenilor (vezi figura 3.4).
50 S se ruleze fiierul de interogri pentru afiarea notelorstudenilor din grupa FC01 (vezi figura 3.3).
60 Sse ruleze fiierul de interogri pentru toate cele patru tipuri delegturi (Inner Join, Left Join, Right Join, Full Join) vezi figura 3.2.
-
5/28/2018 Baze de Date in Visual Foxpro
44/87
44 Baze de daten Visual FoxPro
4. Utilizarea formularelor
Formularul (forma) reprezint o fereastr pentruintroducerea sau extragerea datelor utilizatorului, n mod interactiv,cu ajutorul unor obiecte de interfa crora le sunt asociateproprieti i metode (secvene de instruciuni secvene de cod).Definirea unui formular se realizeazprin utilizarea tehnologiei POO(Programare OrientatObiect) care permite modificare proprietilorobiectelor incluse n formular, ceea ce se reflect n aspectul
formularului i a comportamentului acesteia n diferite situaii.
Form Designer (Constructorul de formulare) este ocomponent a Visual FoxPro - ului dedicat crerii i modificriiformularelor precum i generrii secvenei de cod necesare pentruexecuia acestora (fiierele corespunztoare au extensia implicitscx).
4.1. Crearea, deschiderea i rularea unui formular
Crearea unui formular (fiier cu extensia implicitSCX)poate fi iniiatprin comanda:
MODIFY FORM[]
sau prin alegerea opiunii File, New din meniu(n acest caz n caseta
New se selecteazForm i New file).
Activarea (deschiderea) unui formular se poate realiza prinmeniu (File, Open, Files of type: Form (*.scx)) sau prin comandaMODIFY FORM.
Scopul crerii unui formular este obinerea unei secveneexecutabile care poate fi rulatn urmtoarele moduri:
-
5/28/2018 Baze de Date in Visual Foxpro
45/87
Baze de daten Visual FoxPro 45
din meniul principal(Form, Run Form), prin acionarea butonului din linia de instrumente standard, prin comanda DOFORM.ObservaiePrin lansarea Constructorului de formulare, n fereastraForm Designer, meniul principal va include opiunea Formcare oferinstrumentele de lucru necesare.
4.2. Elementele constructorului de formulare
Ferestrele de lucru Form Designer fereastra principalcare conine obiectele
formularului. Properties fereastra de proprieti avnd ca rol
modificarea proprietilor obiectelor formularului (metode,nume, titluri, dimensiuni, fonturi, culori, etc.).
Data Environment mediul de date al formularului,fereastra pentru precizarea tabelelor de date care vor fideschise automat n momentul rulrii formularului.
Ferestrele pentru cod succesiunile de instruciuni careurmeaza fi executate la apariia diferitelor evenimente dincadrul formularului cum ar fi: acionare unui buton, selectareunui obiect, etc.
Barele utilitare Form Designer Toolbar - bara de butoane standard a
formularului:
Data Environment La out Toolbar
Properties Window Color Palette Toolbar
Form Controls ToolbarCode Window
-
5/28/2018 Baze de Date in Visual Foxpro
46/87
46 Baze de daten Visual FoxPro
Lista obiectelor din formular
Valoareaproprietii
Proprietate
Obiect
Form Designer Toolbar
Form Controls Toolbar
FORMULARUL
Butoanele din aceast bar de instrumente permit
deschiderea/nchiderea ferestrelor: Data Environment, Properties,Code (afiarea secvenei 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.
SfatLucrai cu barele de instrumente. Dac acestea nu suntafiate utilizai meniul: View, Toolbars
-
5/28/2018 Baze de Date in Visual Foxpro
47/87
Baze de daten Visual FoxPro 47
4.3. Mediul de date al formularului (Data Environment)
Constructorul de formulare permite configurarea mediului dedate n care lucreaz formularul, adic a zonelor de lucru i atabelelor de date deschise n ele. Tabelele de date sunt deschiseautomat (fr comenzi speciale), dac acestea sunt incluse n DataEnvironment,nainte de execuia formularului (este de la sine nelescaceste tabele de date au fost deja create).
Observaii Deschiderea ferestrei Data Environmentpoate fi fcut
prin meniu (View, Data Environment)sau folosind butonulcorespunztor din bara de butoane Form Designer. Astfel nmeniul principal este inclusopiunea DataEnvironment.
Includerea (Add) unui tabel n Data Environment esterealizatprin meniu: DataEnvironment,Addsau prin clic cubutonul dreapta al mouse-ului.
Mediul de date al formularului este considerat un obiect, deci
are asociate metode i proprieti. Cele mai importante metode,legate de folosirea datelor sunt:
Metoda OpenTables este folosit la deschiderea tabelelor dedate necesare (dac nu este utilizat, tabelele asociate suntdeschise automat).
Metoda Load Event poate fi folosit, de asemenea, ladeschiderea tabelelor. Aceasta este iniiat dup metodaOpenTables.
Metoda Init Eventeste o metodapelatdupmetoda Load,i face anumite iniializri ale obiectelor din formular, inclusiv cudatele din tabelele care sunt deja deschise.
Metoda CloseTablesare ca scop nchiderea tabelelor de datedin mediul de date al formularului la iniiativa utilizatorului.
Metodele Unload (descrcare) i Destroy (distrugere aformularului) acioneaz asupra mediului de date i suntactivate dupmetoda CloseTables.
-
5/28/2018 Baze de Date in Visual Foxpro
48/87
48 Baze de daten Visual FoxPro
4.4. Utilizarea controalelor
Includerea controalelor n cadrul unui formular se realizeazprin introducerea unor obiecte (Label, Text Box, etc.) n acestformular. Pentru aceasta, se acioneaz butonul corespunztor dinForm Controls Toolbar i se stabilete poriunea dreptunghiular(zona) din formular unde va fi afiat obiectul. Practic, obiectul va fidesenat (se poziioneaz cursorul mouse-ului n colul stnga-sus alzonei de afiare, se ine apsat butonul stng i se trage cursorul
spre colul dreapta-jos).
Proprieti i metode
Un formular poate conine mai multe obiecte, el nsui fiindconsiderat un obiect. Fereastra Properties permite alegereaobiectului i a proprietii a crei valoare se schimb, ca de exemplu:
Proprietatea Caption este destinat stabilirii unui titlu(denumire) pentru formular sau obiect. Proprietatea Name permite atribuirea unor numeobiectelor. Visual FoxPro stabilete valori impliciteproprietilor Captioni Namecum ar fi:
o Form1, Form2 pentru formulareo Label1, Label2... pentru obiectele Labelo Command1, Command2pentru butoaneo Text1, Text2 pentru obiectele Text Boxo Edit1, Edit2 pentru obiectele Edit Box
Aceste nume ale obiectelor pot fi folosite aa cum au fostdefinite de Visual FoxPro ns utilizatorul are posibilitateastabilirii unor denumiri proprii.
Proprietatea FontSize stabilete atributele de scriereprivind dimensiunea fontului folosit.
Proprietatea FontBold permite scrierea bold. Proprietatea BorderStyle ofer posibilitatea stabilirii
atributelor de bordare.
-
5/28/2018 Baze de Date in Visual Foxpro
49/87
Baze de daten Visual FoxPro 49
Proprietatea Format permite introducerea formatat adatelor conform codurilor Function.
Proprietatea Input Mask permite introducerea formatata datelor conform codurilor Picture.
ObservaieO categorie special de proprieti o reprezint metodele.Metodele sunt secvene de cod (instruciuni) asociatediferitelor obiecte la activarea/dezactivarea acestora.
Form Designer ofer posibilitatea modificrii unei proprieti
prin comenzi de atribuire, referirea la proprietatea respectivfcndu-se prin construcia:
.
Referirea la un obiect din cadrul unei formulare se realizeazprintr-o construcie asemntoare, adic:
..
Existconstrucii speciale, mai scurte, cum ar fi:o This - care se referla obiectul curent;o ThisForm - care indic formularul ce conine
obiectul curent;o Parent - care se referla obiectul care conine
obiectul curent.
ExempleForm1.Caption=Actualizare
modificproprietatea Caption(titlu) a formularuluiForm1
Form1.Vizualizare executmetoda Vizualizareataatformularului
Form1.Label1.Caption=Numele persoanei modific proprietatea Caption (titlu) a obiectului
Label1ThisForm.Caption=Adugare
-
5/28/2018 Baze de Date in Visual Foxpro
50/87
50 Baze de daten Visual FoxPro
modificproprietatea Caption(titlu) a formularuluicurent
ThisForm.Vizualizare execut metoda Vizualizare ataat formularului
curentThis.Caption=Numele persoanei
modificproprietatea Caption(titlu) a obiectului
Obiecte din formular
Obiecte simple
Label afieazun text informativ
Text Box definete un cmp de editare n care utilizatorulpoate introduce un text.
Edit Box pentru editarea variabilelor ir de caractere,tablou, cmpuri ale tabelelor de date, cmpuri memo.
Command Button este tipic pentru startulevenimentelor, pentru cutarea i nchiderea formularelor, mutareadiferitelor nregistrri, imprimarea rapoartelor, etc.
Check Box (casete de validare). Obiectele Check Boxpermit utilizatorului sspecifice o stare de tip logic (true sau false),astfel nct la executarea formularului s se poat alege ntre doustri. Principalele proprieti care le sunt asociate sunt:
Proprietatea Value furnizeaz valorile numerice 0 sau 1dupcum caseta este neselectatsau selectat(bifat).
Proprietatea Style schimb stilul de afiare, avndvaloarea 0Standard sau 1-Graphical, caseta de validare
primind aspectul unui buton neapsat/apsat:
-
5/28/2018 Baze de Date in Visual Foxpro
51/87
Baze de daten Visual FoxPro 51
Spinner (casete de incrementare/decrementare).Obiectele Spinner permit utilizatorului s-i stabileasc opiunileparcurgnd incremental o plaj de valori sau introducnd directvalorile n caset. Pentru aceasta, cmpul de editare al casetei are n
dreapta sa dou butoane: unul pentru incrementare i altul pentrudecrementare:
Proprieti principale: Proprietatea Value stabilete valoarea iniial nscris n
caseti furnizeazvalorile editate la execuia formularului.
Proprietile KeyboardHighValuei KeyboardLowValuestabilesc limita superioar i inferioara valorilor introdusen cmpul de editare direct de la tastatur(depirea acestorlimite genereazmesaj de eroare).
Proprietile SpinnerHighValue i SpinnerLowValuestabilesc limita superioar i inferioara valorilor introdusecu ajutorul butoanelor de incrementare/decrementare(depirea acestor limite nu conduce la eroare dar valoareaaflatn editare nu mai este mrit/micorat).
Combo Box - List Box (casete cu list - listderulant). Listele sunt obiecte care ofer utilizatorului posibilitateaselectrii unor elemente dintr-o mulime finit, afiat total sauparial pe ecran. Se utilizeazdoutipuri de liste: liste simple - ListBox i liste derulante sau expandabile - ComboBoxcare afieazdoarelementul curent al listei.
Standard Gra hical
-
5/28/2018 Baze de Date in Visual Foxpro
52/87
52 Baze de daten Visual FoxPro
Listele simple, List Box afieaz la un moment dat mai multe
elemente (nu neaprat pe toate):
Listele expandabile, Combo Box, afieaz, n stare neactivat,
doar un element al listei:
Proprieti ale listelor: Proprietatea RowSourceType stabilete sursa de date a
elementelor unei liste cum ar fi:o 0 None (surs nespecificat), cnd specificarea
elementelor listei se face n mod dinamic, la rulareaformularului;
o 1 Value (valoare), care presupune c elementelelistei sunt enumerate manual n proprietateaRowSource(listde elemente separate prin virgul);
o 2 Alias, cnd elementele listei sunt preluate dintr-otabelde date specificatn proprietatea RowSource;
o 3 SQL Statement(instruciuni SQL);o 4 - Query (interogare);o 5 Array (tablou) elementele listei sunt preluate
dintr-un tablou;o etc.
-
5/28/2018 Baze de Date in Visual Foxpro
53/87
Baze de daten Visual FoxPro 53
Proprietatea RowSourcespecificsursa efectivde date.
Numrul implicit de coloane dintr-o list este 1 ns pot ficonstruite i liste multicoloan. O variantsimplde a obine o listmulticoloan dintr-o list unicoloan o ofer proprietileRowSourceType i RowSource. De exemplu, dac proprietateaRowSourceType este 2 Alias proprietatea RowSource poate aveavaloarea Personal.Marca+Personal.Nume (pentru baza de datePersonal.dbf) astfel nct rezulto listde forma:
Obiecte compuse (container)
Obiectele compuse sunt constituite ca un grup de obiectesimple. Construirea(Builder) unui obiect container (de exempluincluderea unor obiecte simple) sau editarea (Edit)unui obiect inclusntr-un container presupuneacionarea butonului drept almouse-ului:
-
5/28/2018 Baze de Date in Visual Foxpro
54/87
54 Baze de daten Visual FoxPro
Option Group (butoane radio). Butoanele radio sunt un
tip special de obiecte de interfacare oferposibilitatea alegerii uneisingure opiuni din mai multe posibile (sunt obiecte container).Proprietile cele mai utilizate ale butoanelor radio sunt:
Proprietatea ButtonCount stabilete numrul decomponente ale obiectului.
Proprietatea AutoSize determin calcularea automat adimensiunii grupului de butoane n funcie de coninut, dacare valoarea .T. True.
Proprietatea Valuefurnizeazvalorile numerice 1, 2, 3, reprezentnd numrul de ordine al butonului selectat(implicit 1).
Proprietatea Style a fiecrui obiect din containerschimbstilul de afiare, avnd valoarea 0Standard sau 1-Graphical:
Command Group (butoane de comand). Grupurile debutoane de comanda au roluri asemntoare cu ale butoanelor simple(Command Button)doar cele sunt constituite ca obiecte container,deci pot fi construite i editate ca acest tip de obiecte. Cele mai
importante proprieti (ButtonCount, AutoSize, Value) suntidentice cu ale butoanelor radio.
Grid (Grile). Grila este un obiect container, variantmbuntit a ferestrei Browse, care conine mai multe obiecte deinterfa, plasate matricial, cum ar fi: coloane, antete (header),cmpuri de editare, fiecare cu propriul set de proprieti i metode.
Standard Graphical
-
5/28/2018 Baze de Date in Visual Foxpro
55/87
Baze de daten Visual FoxPro 55
Elementele componente ale unei grile sunt cele prezente i nmediul ferestrei Browse:
liniile, coloanelei celulele; barele de derulare folosite atunci cnd dimensiunea grilei
depete dimensiune zonei vizibile; antetul (header) capul de tabel; coloana de marcare a liniilor; coloana de tergere a liniilor.Obiectul Gridare o organizare internarborescent, fiind dispus
pe nivele: la primul nivel sunt situate coloanele apoi antetele coloanelori obiectele de interfa:
Grila i elementele din grilau anumite proprieti cum ar fi: Proprietatea RecordSourceType stabilete 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 iniializarea grilei. nacest caz, nregistrrile tabelei vor fi linii n gril, iarcmpurile tabelului de date vor fi coloane;
o 2 Prompt sursa de date (tabelul de date) sespecificla execuia formularului;
o 3 - Query (interogare);o 4 SQL Statement(instruciuni SQL).
Proprietatea RecordSource specific denumirea exact asursei de date.
Grid
Column1
Header1
Text1
Column2
Header2
Text2
Grila
Coloana1
Antet1
Cmp1
Coloana2
Antet2
Cmp2
-
5/28/2018 Baze de Date in Visual Foxpro
56/87
56 Baze de daten Visual FoxPro
Aplicaii
10 Sse editeze urmtorul formular:
Indicaii Se lanseazConstructorul de formulare. Se stabilescproprietile obiectelorn felul urmtor:
Obiect Tip Proprietate Valoareproprietate
Observaii
Form1Form Caption Calcule
financiare
Command1
ButtonCommand
Caption Calculeaz Color Pallete : Verde
FontBold .T. -True
Label1Label Caption Funcia: Color Pallete : Rou
Name Opt
Caption FV Color Pallete : Rou
Caption PV Color Pallete : RouCaption Payment Color Pallete : Rou
FV
PVPayment
Optiongroup
FontBold .T. -True
a1Text Box Name a1 Color Pallete :
Albastru
FontSize 11FontBold .T. -True Primul argument
a2Text Box Name a2 Color Pallete :
Albastru
FontSize 11FontBold .T. -True Al doilea argument
-
5/28/2018 Baze de Date in Visual Foxpro
57/87
Baze de daten Visual FoxPro 57
a3Text Box Name a3 Color Pallete :
Albastru
FontSize 11
FontBold .T. -True Al treilea argument
rezultatText Box Name Rezultat Color Pallete : Rou
FontSize 12
FontBold .T. -TrueAfieazrezultatul
Se stabilesc metodele(secvenele de cod) folosind pagina Methoddin fereastra Properties:
Obiect Metoda Secvena de cod
a1=val(ThisForm.a1.Value)a2=val(ThisForm.a2.Value)
a3=val(ThisForm.a3.Value)Opt=ThisForm.Opt.Valuedo casecase Opt=1ThisForm.rezultat.Value=FV(a1,a2,a3)
case Opt=2ThisForm.rezultat.Value=PV(a1,a2,a3)
case Opt=3ThisForm.rezultat.Value=Payment(a1,a2,a3)
endcase
Calculeaz
Click Event(se poate
executa idublu click peobiect)
Observaie: Deoarece valorile introduse n Text Box-uri suntde tip ir de caractere, este necesarconvertirea lor n valori
numerice, utiliznd funcia val. Sesalveazi se executformularulastfel creat.
20 Sse editeze un formular pentru actualizarea datelor din tabelul dedate Personal.dbf.
Indicaii Se include n mediul de date al formularului, Data Environment,
tabelul Personal.dbf i se importn formular, ca obiecte, cmpurile
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
cmpul Adresa care este Memo) sau de tip Check Box (pentru
cmpul Sex).
-
5/28/2018 Baze de Date in Visual Foxpro
58/87
58 Baze de daten Visual FoxPro
Se eticheteazdenumirile cmpurilor din tabelul de date (Numele,Marca, etc.) folosind obiecte de tip Label.
Se stabilescproprietile obiectelorn felul urmtor:Obiect Tip Proprietate Valoare
proprietate
Observaii
Form1Form Caption Actualizare
Command1Button
Command
Caption Vizualizare Color Pallete : Mov
Command2Button
Command
Caption Adaug Color Pallete : Verde
Command3Button
Command
Caption terge Color Pallete : Albastru
Command4Button
Command
Caption Stop Color Pallete : Rou
MText Box Name M Poziionare pe o anumit
marc
FontBold .T. -True
ContorSpinner Name Contor Contorulnregistrrilor
Value 1
FontBold .T. -True
-
5/28/2018 Baze de Date in Visual Foxpro
59/87
Baze de daten Visual FoxPro 59
Se stabilesc metodele(secvenele de cod) folosind pagina Methoddin fereastra Properties:
Obiect Metoda Secvena de cod
Vizualizare
ClickEvent
browse
Adaug
ClickEvent
append blankThisForm.RefreshThisForm.Contor.Value=recno()
terge
ClickEvent
deletepack
ThisForm.RefreshThisForm.Contor.Value=recno()
Stop
ClickEvent
ThisForm.Release
locate for This.Value=Marcaif found()
ThisForm.RefreshThisForm.Contor.Value=recno()
endif
MLost FocusEvent
Metoda Lost Focuspermite ca la ieirea din cmpul de editare sse execute secvena care permite:
- poziionare pe cmpul Marca- introducerea, n Text Box-uri, a valorilor din tabelul de date(refresh)- afiarea numrului nregistrrii curente - recno()s=This.Valueif s>=1 and s=
-
5/28/2018 Baze de Date in Visual Foxpro
60/87
60 Baze de daten Visual FoxPro
30
Sse editeze un formular pentru evidena unor calificative. nmediul de date al formularului se vor introduce (n aceastordine!)tabelele de date:
a) Tabelul de date Calificative.dbf, avnd structura:Nume Character 30Nota1 Numeric 2Nota2 Numeric 2Media Numeric 5,2
b) Tabelul de date Personal.dbf.
Indicaii Obiectul GrdCalificativepoate fi creat n formular prin tragerea
tabelului Calificative.dbf, cu mouse-ul, din fereastra Data
Environment.
Se stabilescproprietile obiecteloractive n felul urmtor:
Obiect Tip Proprietate Valoareproprietate
Observaii
Form1Form Caption Acordare
calificative
Adaug
ButtonCommand
Caption Adaug
FontBold .T. -True
-
5/28/2018 Baze de Date in Visual Foxpro
61/87
Baze de daten Visual FoxPro 61
Stop
ButtonCommand
Caption Stop
FontBold .T. -True
Combo1
ComboBox
FontBold .T. -True Permiteselectarea uneicomponente dinfiierulPersonal.dbf
RowSourceType 2 - AliasRowSource Personal.marca+
Personal.numeAfiarea listei seface pe doucoloane
GrdCalificative
Grid FontSize 10 Liniile listei seadaugprinacionarea
butonuluiAdaug
Header1 Caption Numele persoaneiAlignment 2 Middle Center La fel i pentru
celelalte cmpuriText1 Enabled .F. - False La fel pentru
coloana 4
Se stabilesc metodele (secvenele de cod) folosind paginaMethoddin fereastra Properties:
Obiect Metoda Secvena de cod
GrdCalificative,Column2,
Text1
LostFocus
repl media with (nota1+nota2)/2
-cmpul mediarezultdin calcul- la fel pentru GrdCalificative, Column3, Text1append blankrepl nume with personal.marca+personal.nume
thisform.refresh
Adaug
ClickEvent
-introduce n listmarca i numele persoaneiThisForm.Release
Stop
ClickEvent -dezactiveaz(nchide formularul)
Se stabilete ordinea de activare a obiectelor prin acionareabutonului Set Tab Order.
Sesalveazi se executformularulastfel creat.
-
5/28/2018 Baze de Date in Visual Foxpro
62/87
62 Baze de daten Visual FoxPro
5. Proiectarea meniurilor
Meniurile sunt obiecte de interfa care pun la dispoziiautilizatorului o serie de opiuni care permit alegerea i declanareaunor operaii de prelucrare. Aproape orice interfa grafic conine,ntr-o formsau alta, un meniu. Un meniu apare, de obicei, n parteasuperioara ferestrelor de aplicaii i are o structurstandard, iar ngeneral, orice operaie care poate fi executatn cadrul unei aplicaiitrebuie saibun corespondent n meniul acesteia, pentru a putea fi
executat. Utilizatorul i construiete un model mental al structuriiaplicaiei prin simpla examinare a meniurilor i a articolelor de meniu,meniul reprezentnd un mijloc prin care utilizatorul comunicsistemului ce operaie sefectueze la un moment dat.
Un meniu este format, n general, dintr-o bar (sau unsubmeniu orizontal) care conine mai multe opiuni. Fiecare dintreacestea are asociat un submeniu vertical, care este activat numai laalegerea opiunii respective. Alegerea de ctre utilizator a opiunilor
meniurilor verticale poate declana o operaie de prelucrare sau poatedetermina afiarea unui nou submeniu vertical.
5.1. Crearea i deschiderea unui meniu
Crearea unui meniu (fiier cu extensia implicit MNX)poate fi iniiatprin comanda:
Meniu orizontal(Meniu Bar)
Submeniu Vertical(Submenu)
Opiune selectatdin meniul orizontal
Opiune selectatdin submeniu
-
5/28/2018 Baze de Date in Visual Foxpro
63/87
Baze de daten Visual FoxPro 63
MODIFY MENU[]
sau prin alegerea opiunii File, New din meniu(n acest caz n casetaNew se selecteaz Menu i New file). Din fereastra deschis pe
ecran se alege butonul Menu(meniu), dacse dorete crearea unuimeniu cu bar i submeniuri verticale, respectiv butonul Shortcut(scurttur), dac se dorete construirea unui submeniu vertical,avnd subordonate alte meniuri verticale. Astfel va fi lansat n lucruConstructorul de meniuri.
Activarea (deschiderea) unui meniu care a fost dejagenerat se poate realiza prin selectarea acestuia (File, Open, Files oftype:Menu (*.mxx))sau princomanda MODIFY MENU.
Sfatnainte de a stabili componentele unui meniu i caracteristicileacestora trebuie precizate o serie de opiuni, cum ar fi poziiafade meniul sistemului Visual FoxPro. Opiunile generale ale
unui meniu pot fi precizate n fereastra de dialog GeneralOptions (opiuni generale): View, General Optionsdin meniulVisual FoxPro-ului.
5.2. Definirea componentelor unui meniu
Butoanele din seciunea Location (locaie) stabilesc poziianoului meniu fade meniul sistem:
Replace nlocuirea meniului sistem; Append adugare; Before - plasarea noului meniu naintea submeniului sistemului
specificat n lista derulantalturat(care este afiatnumai laselectarea butonului);
After noul meniu va fi plasat dupsubmeniul specificat.
-
5/28/2018 Baze de Date in Visual Foxpro
64/87
64 Baze de daten Visual FoxPro
Se pot specifica secvene de cod (Meniu code) la iniializareameniului (crearea sa) i tergerea meniului (eliminarea sa dinmemorie). Secvenele de cod respective se specific n ferestredeschise prin activarea comutatoarelor Setup (iniializare) iCleanup(tergere), urmatde acionarea butonului OK.
n fereastra Meniu Designer sunt enumerate i descriseopiunile meniului creat i o serie de obiecte de interfa folosite la
manipularea acestor opiuni. La un moment dat, n fereastra de lucru,este afiat numai grupul de opiuni al unui subsistem (orizontal sauvertical) al meniului proiectat. O opiune poate fi folosit pentruaccesul la un alt submeniu sau poate fi dedicat declanrii uneiaciuni. Pentru a reveni la meniul imediat superior se folosete lista
-
5/28/2018 Baze de Date in Visual Foxpro
65/87
Baze de daten Visual FoxPro 65
derulant Menu level (nivel meniu), n care sunt disponibile toatemeniurile superioare ierarhic meniului curent.
n fereastra Constructorului de meniuri, pe coloane, se specificcaracteristicile opiunilor, astfel:
1. Coloana Prompt cuprinde textele informative ale opiunilor ncare se pot introduce i combinaii speciale, prin intermediulcrora se obin diferite efecte:
Combinaia Efect\
-
5/28/2018 Baze de Date in Visual Foxpro
66/87
66 Baze de daten Visual FoxPro
Shortcut (scurttur) - cale direct de alegere. UnShortcut conine:
o Cmpul de editare Key Label (etichet tast),pentru a indica faptul c opiunea poate fi aleasdirect prin utilizarea unei combinaii de taste.
Combinaia de taste doriteste introdus n casetaKey Label prin apsarea combinaiei de tasterespective.
o Cmpul Key Text (text tast) este un textsuplimentar ce poate fi ataat opiunii. n modimplicit Visual FoxPro repet tastele de comandrapiddin caseta Key Labelncaseta Key Text, daracesta poate fi modificat (de exemplu combinaia
CTRL+L poate fi modificatn ^L). Skip For (srit cnd...) - permite impunerea uneicondiii prin care sse controleze accesul la o opiune. nacest cmp este introdus o expresie logic. Dacvaloarea ei este adevrat, atunci opiunea va fidezactivat, deci nu va fi disponibila pentru utilizator (eaapare cu culori terse, pentru a indica aceast stare).Dac valoarea expresiei este fals, opiunea va putea fialeasde utilizator. De exemplu, pentru ca o opiune s
-
5/28/2018 Baze de Date in Visual Foxpro
67/87
Baze de daten Visual FoxPro 67
fie accesibilnumai dacun fiier existpe disc condiiaintroduspoate fi: NOT(FILF(Furnizor.dbf)).
Message (mesaj) - are ca efect apariia unui mesajexplicativ n bara de stare a Visual FoxPro-ului (plasatnpartea inferioara ferestrei mediului de programare).
5.3. Previzualizarea meniului
Este recomandabil ca, n faza de editare a unui meniu, s sefacafiarea de proba acestuia, chiar dacel nu a fost salvat sau
programul corespunztor nu a fost nc generat. Acest procedeu senumete previzualizare. La previzualizare, alegerea unei opiuni ameniului nu este nsoit de execuia comenzii corespunztoare, cidoar de afiarea acesteia. Previzualizarea meniului n curs de editarese realizeaz prin acionarea butonului de meniuri sau utilizndmeniul principal al sistemului: Menu, Preview. n starea deprevizualizare, meniul sistemului este nlocuit de meniul n curs deeditare, iar pe ecran este afiat o fereastr care indic opiunea
selectatdin acest meniu.
5.4. Generarea i rularea meniurilor
Un meniu editat poate fi salvat ca un fiier cu extensia implicit.MNX. Pentru a putea folosi meniul, trebuie generat un program la acrui rulare meniul s fie activat. Aceastoperaie poate fi realizatdin mediul Visual FoxPro: Menu, Generate... nfereastra deschispe
ecran se precizeaznumele fiierului ce va fi generat:
n mod implicit, acesta are acelai nume cu cel al fiierului ncare este memorat meniul, dar extensia .MPR.
O datgenerat meniul, acesta poate fi rulat printr-o comand
-
5/28/2018 Baze de Date in Visual Foxpro
68/87
68 Baze de daten Visual FoxPro
DO. Deoarece comanda DO presupune extensia implicitPRG (de la
programe), este necesarspecificarea extensiei .MPR:DO .MPR
ObservaieRevenirea la meniul standard al mediului de programare VisualFoxPro se realizeazprin comanda:SET SYSMENU TO DEFAULT
AplicaieS se editeze un meniu pentru crearea i modificarea
structurii unui fiier ct i pentru editareaconinutului lui:
Indicaii Se lanseazMenu Designer. Se editeazopiunile meniului principal.
Opiunea Stopare asociaturmtoarea procedur:Procedureclose allset sysmenu to default
Se editeazopiunea Fisierdin meniu.
Se previzualizeaz, se genereazi se ruleazmeniul creat.
-
5/28/2018 Baze de Date in Visual Foxpro
69/87
Baze de daten Visual FoxPro 69
6. Generarea rapoartelor
Raportul reprezint un set de informaii, constituite pe bazadatelor introduse anterior n bazele de date, care urmeaza fi tipritla imprimant sau afiat pe display-ul calculatorului. Definirea unuiraport se realizeaz, ca i n cazul formularelor, prin utilizareatehnologiei POO (Programare Orientat Obiect) care permitedefinirea i modificare proprietilor obiectelor introduse n raport.
Componenta Visual FoxPro-ului care permite crearea imodificarea rapoartelor precum i generarea secvenei de cod
necesare pentru execuia acestora este Report Designer.
6.1. Crearea i deschiderea unui raport
Crearea unui raport (fiier cu extensia implicit .FRX)poate fi iniiatprin comanda:
CREATE REPORT[< nume raport>]
sau prin alegerea opiunii File, New din meniu(n acest caz n casetaNew se selecteazReport i New file).
Activarea (deschiderea) unui raport se poate realiza prinmeniu(File, Open, Files of type:Report (*.frx))sau princomanda:
MODIFY REPORT< nume raport>
ObservaiePrin lansarea Constructorului de rapoarte, n fereastra
-
5/28/2018 Baze de Date in Visual Foxpro
70/87
70 Baze de daten Visual FoxPro
Report Designer, meniul principal va include opiunea Report
care conine opiuni referitoare la diferite operaii.
6.2. Imprimarea i afiarea rapoartelor
Un raport este un fiier n care sunt memorate elementele saleprecum i caracteristicile acestora. Imprimarea (Print) unui raportpoate fi realizatn unul din urmtoarele moduri:
din meniul principal(Report, Run Report),
prin acionarea butonului sau a butonului din liniade instrumente,
prin comanda:REPORT FORM TO PRINTER [PROMPT](clauza PROMPT este folosit pentru specificarea parametrilorde tiprire)Pentru afiarea sau previzualizarea (Preview)pe ecran se
poate utiliza:
butonul din linia de instrumente standard, comanda:REPORT FORM PREVIEW
Vizualizarea informaiilor din raport se realizeazutiliznd barautilitar de mai jos:
ObservaieSe poate obine trimiterea raportului spre un fiier (n loc deimprimant) cu ajutorul clauzei TO FILE a comenzii REPORTFORM:REPORT FORM TO FILE [ASCII]
Prima pagin Ultima pagin
Selectare pagin
Pagina urmtoarePagina anterioar
Scala de afiare
nchidere afiare
Tiprire
-
5/28/2018 Baze de Date in Visual Foxpro
71/87
Baze de daten Visual FoxPro 71
Clauza ASCII determinmodul de scriere n fiier: n prezena
clauzei formatul fiierului va fi text, iar n absena acesteia formatulva fi unul specific imprimantei (informaiile se depoziteaz n fiierulrespectiv, exact cum s-ar trimite la imprimant).
6.3. Constructorul de rapoarte
Report Designer fereastra principal care conine obiecteleraportului.
Data Environment mediul de date al raportului, fereastrapentru precizarea tabelelor de date care vor fi deschise automat nmomentul rulrii raportului.
Barele utilitareo Report Designer Toolbar - bara de butoane standard a
raportului:
Butoanele din aceast bar de instrumente permitdeschiderea/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.
SfatLucrai cu barele de instrumente asociate Constructorului derapoarte. Dac acestea nu sunt afiate utilizai meniul: View,Toolbars
Data Environment
LayoutToolbar
Color Palette Toolbar
Report Controls
DataGrouping
-
5/28/2018 Baze de Date in Visual Foxpro
72/87
72 Baze de daten Visual FoxPro
O datpornit Constructorul de rapoarte, pe ecran este afiat
fereastra de editarea a raportului.
Un raport este constituit din benzi care nu redau exact ceea ceva fi n raportul final, dar codificmodul n care se determinceea cese afieazn raport. Un raport poate conine urmtoarele benzi:
Detail (detalii) genereaz rndurile de detalii (coninutul debaz al raportului). Pentru un raport care preia datele dintr-o
tabel, banda de detalii a raportului ar putea corespundenregistrrilor tabelei; Title(titlu) include o zoncare se afieazo singurdat, pe
prima pe pagina raportului. Aceastband conine de obiceititlul raportului i eventual, capul de tabel, dac acesta nutrebuie repetat pe fiecare paginn parte);
Summary (rezumat) - specific o zon care este afiat peultima pagina raportului, la sfrit, o singurdat;
Page Header (antet de pagin) - genereaz textul care va fiafiat n partea superioara fiecrei pagini a raportului;
Page Footer (subsol de pagin) - genereaz coninutul priiinferioare a fiecrei pagini a raportului;
Group Header n(antetul grupului de nivel n) i Group Footer
-
5/28/2018 Baze de Date in Visual Foxpro
73/87
Baze de daten Visual FoxPro 73
n (subsolul grupului de nivel n) - genereaz n raportul finalmai multe grupuri, n funcie de nite valori numite chei de
grupare, putndu-se preciza coninutul benzii antet de grup,respectiv subsol de grup;
Un raport conine cel puin trei benzi: antetul de pagin,detaliile i subsolul de pagin. Dacse dorete inhibarea afirii lor,trebuie reduse la dimensiunea zero (chiar dac apar n fereastraraportului, nu genereaznimic n raportul final). Benzile de titlu i deconcluzii sunt afiate opional, afiarea lor putnd fi validat sau
invalidatprin meniu: Report, Title/Summary.Fiecare dintre aceste doubenzi are asociat un comutator, New
page (pagin nou), la activarea cruia banda corespunztoare vancepe pe paginnou:
Mediul de date al raportului
Un raport preia date din una sau mai multe tabele i learanjeaz n pagin. Deci la construirea raportului este necesarspecificarea tabelelor surs. Mediul de date al unui raport seconfigureazn fereastra mediului de date deschisprin meniu: View,Data Environment sau prin acionarea butonului corespunztor dinbara de instrumente standard a raportului. O dat deschisaceastfereastr, la meniul sistemului este adugat un nou submeniu, numit
DataEnvironment, care conine opiuni referitoare la configurareamediului de date.
-
5/28/2018 Baze de Date in Visual Foxpro
74/87
74 Baze de daten Visual FoxPro
Fontul implicit al raportului
La construirea unui raport, trebuie stabilit ca font implicit celcare predomin printre obiectele raportului, pentru celelalte obiectefontul urmnd a fi specificat explicit. Fiecrui obiect nou definit nraport i va fi atribuit fontul implicit al raportului, care poate fischimbat ulterior.
Stabilirea fontului implicit al raportului se face prin meniu:
Report, Default Font, iar caracteristicile fontului sunt specificate ncaseta de dialog deschispe ecran.
Tipuri de obiecte incluse n rapoarte
Editarea unui raport trebuie s nceapprin introducerea unorobiecte n acesta. Pentru aceasta, se acioneaz butonulcorespunztor din Report Controls Toolbar i se selecteaz obiectulcare va fi inclus n raport:
Label Texte informative.
Textele informative reprezint un ir de caractere de lungimevariabil. Pentru a stabili poziia textului informativ se poziioneazcursorul n punctul dorit din raport, dup care se execut clic cumouse-ul. Cnd se terminintroducerea textului, se executun clic nafara obiectului nou creat.
Un obiect Label creat poate fi repoziionat, prin tragere cuajutorul mouse-ului, pe suprafaa raportului. Se pot efectua itrageridintr-o bandn alta, nu numai n cadrul aceleiai benzi.
Fontul folosit la afiarea textului este stabilit n ferestrea Font,
Label
Field
Line
Rectangle
Rounded Rectangle
Picture/OLEBound Control
-
5/28/2018 Baze de Date in Visual Foxpro
75/87
Baze de daten Visual FoxPro 75
care se deschide prin meniu: Format, Font. Astfel, pot fispecificate toate caracteristicile fontului: setul caractere (Font),
dimensiunea (Size),stilul (Font style), culoarea (Color), etc.
Field Cmpuri.Cmpurile reprezint elementele variabile ale unui raport,
putnd genera n raportul final mai multe valori, valori care vor fideterminate de sursa de date precizat: o variabil a raportului, oexpresie de calcul, un cmp al unui tabel de date. Caracteristicilelegate de fontul n care se realizeaz afiarea valorii din cmp sestabilesc la fel ca pentru obiectele de tip Label.
Definirea caracteristicilor unui obiect de tip Field se realizeaznfereastra de dialog Report Expression (deschisprin dublu clic peobiect).
Poziia cmpului (Field position) relativ la banda din raport ncare este definit poate fi: Float (poziie variabil, n funcie deobiectele definite deasupra lui), Fix relative to top of band (poziiefixrelativ la marginea superioarabenzii), Fix relative to bottom of
band(poziie fixrelativ la latura inferioara benzii).n caseta Expression se nscrie expresia care va furniza
valoarea ce trebuie afiat. De multe ori, aceast expresie este unsimplu cmp al unei tabele surssau o variabilde lucru.
-
5/28/2018 Baze de Date in Visual Foxpro
76/87
76 Baze de daten Visual FoxPro
Formatul de afiare al cmpului (caseta Format) reprezintun
ir de caractere (macheta de formatare). Acest format se poate stabilii n mod interactiv, prin acionarea butonului din dreapta casetei,care determindeschiderea ferestrei Format.
Asupra valorilor asociate obiectelor Field se pot aplica diferitefuncii pentru a obine unele informaii sintetice: suma (Sum), mediaaritmetic(Average), valoarea maximi minim(Highest, Lowest),deviaia standard (Standard deviation), variana (Variance). Funciacare se aplic asupra unui cmp al unui raport este precizat n
fereastra de dialog Calculate Field, deschis prin acionareabutonului Calculations:
Obiecte semigrafice i grafice.n cadrul unui raport pot fi desenate linii, chenare sau pot fi
introduse imagini. n legtur cu aceste obiecte pot fi precizateanum