Sunteți pe pagina 1din 74

Ioan MOCIAN

BAZE DE DATE
Lucr ri de laborator

UNIVERSITATEA PETRU MAIOR TRGU MURE


2008

Cuvnt nainte
Prezentul ndrum tor de lucr ri de laborator pentru baze de date vine s completeze cursul de
baze de date cu aspectele practice care trebuie testate n cadrul laboratorului i proiectului.
Acest ndrum tor urm re te structura cursului predat i se compune din 5 lucr ri de laborator
care se vor executa pe durata mai multor edin e.
Lucr rile de laborator propuse vor trebui efectuate consecvent, deoarece ele sunt gndite ca
un proces continuu, adic rezultatele lor vor fi folosite de lucr rile care urmeaz . Prin urmare,
acestea nu se pot face dect n ordinea lor fireasc . Cu ct ve i lucra mai con tiincios, cu att
ve i avea satisfac ii mai mari i mai pu in timp irosit.
Trebuie s ave i n vedere c bazele de date, trebuie s aib date coerente pentru a putea s
test m func ionarea formularelor, interog rilor i rapoartelor. Fiecare student va trebui s
implementeze proiectul biblioteca cu propriile date introduse, parcurgnd toate etapele de
proiectare i implementare a unei baze de date.
Proiectul Biblioteca implementat corect v asigur nota de trecere a examenului prin
sus inerea lui n cadrul colocviului.
Con inutul celor 4 lucr ri, sau mai corect spus, 3 lucr ri de laborator i un proiect, este
urm torul:
Lucrarea 1 con ine studierea conceptelor bazelor de date rela ionale. La sfr itul lucr rii sunt
enumera i termenii pe care studentul i are de clarificat. n Excel ca trebui sa dea exemple din
cele 3 tipuri de rela ii existente 1:1, 1:N i N:N.
Lucrarea 2 este dedicat studierii etapelor de proiectare a unei baze de date, vor fi studiate
cele 7 etape ale unui proiect, cu exemplificare proiectul Biblioteca. La sfr itul lucr rii,
studen ii vor avea create structura tabelelor, diagrama de rela ii i completate 10 formulare cu
specifica ii de cmp.
Lucrarea 3 este dedicat studierii limbajului SQL, con innd exemple cu instruc iunile de
baz . Studen ii trebuie s n eleag func ionarea expresiilor prezentate, s le explice i poat
concepe alte exemple. Aceste expresii vor fi reluate, pe viu, n cadrul programului Access.
Lucrarea 4 cuprinde ini ierea n utilizarea programului Access cu finalitate n implementarea
proiectului Biblioteca. Se ntinde pe durata a mai multor laboratoare, iar n final fiecare
student va avea propria aplica ie de baz
de date n Access numit
Biblioteca_nume_prenume.mdb.
Lucrarea 5 este dedicat elementelor de performan ale programului Access, n care se vor
crea macro-uri i se va particulariza aplica ia Biblioteca, pentru a ar ta ca o aplica ie
profesional .
Aplica ia Biblioteca prezentat n acest ndrum tor poate fi un bun exemplu pentru aplica ii
proprii.

Trgu Mure , 20 ianuarie 2008

Autorul

Cuprins
Cuvnt nainte .............................................................................................................. 3
Lucrarea 1. Terminologia bazelor de date rela ionale ............................................. 6
Defini ii .............................................................................................................. 6
Desf urarea lucr rii ........................................................................................ 15
Lucrarea 2. Elemente de proiectare a bazelor de date rela ionale .......................
Considera ii teoretice ..
Studiu de caz. Proiectarea bazei de date Biblioteca
Desf urarea lucr rii .......................................................................................

16
16
16
17

Lucrarea nr. 3. Ini iere n limbajul SQL ................................................................ 18


Opera iuni simple folosind limbajul SQL .. 18
Reg sirea datelor 18
Sortarea datelor .. 19
Filtrarea datelor .. 20
Operatorii clauzei WHERE 20
Filtrare avansat 21
Opera iuni avansate folosind limbajul SQL . 25
Cmpuri calculate . 25
Desf urarea lucr rii ......................................................................... 26
Lucrarea nr. 4. Studiu de caz: Baza de date Biblioteca ................................. 27
Considera ii generale despre programul Access ... 27
Interfa a programului ACCESS 27
Crearea tabelelor 28
Rela ii ntre tabele . 30
Crearea rela iilor cu Lookup Wizard 31
Crearea tabelelor bazei de date Biblioteca 34
Crearea formularelor pentru introducerea datelor 36
Testarea expresiilor SQL de la lucrarea nr. 3 42
Crearea interog rilor . 44
Vederea C r ile din bibiotec . 44
Vederea C r ile mprumutate . 46
Vederea Situa ie cititor .. 46
Crearea formularelor pentru vizualizarea informa iilor 47
Crearea formularului de vizualizare a c r ilor
din bibliotec . 49
Crearea formularului de vizualizare a situa iei
unui cititor . 51
Rapoartele bazei de date Biblioteca .. 55
Finalizarea lucr rii nr.4 . 59
Lucrarea nr. 5. Particularizarea bazei de date Biblioteca ............................. 61
O scurt prezentare a Macro-urilor .. 61
Crearea macro-urilor cu singur ac iune . 62
Rularea unei macrocomenzi din fereastra Database 63
Macrocomenzi ata ate evenimentelor .. 64
Utilizarea macrocomenzilor AutoExec i AutoKeys .. 64
Metod rapid de pornire a aplica iilor 65
Desf urarea lucr rii 66
Crearea macro-rilor aplica iei Biblioteca 66

Crearea formei de start pentru aplica ia Biblioteca .... 68


Adaptarea formularelor aplica iei Biblioteca . 72
Configurarea formularului de start 73
Anexe

Anexa A. Teme de proiect propuse .. 74


Anexa B. Comenzile SQL 76
Anexa C.Formulare de proiectare a bazelor
de date rela ionale .... 78

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.1

Lucrarea nr. 1. Terminologia bazelor de date rela ionale


n aceast lucrare se vor clarifica principalele no iuni i concepte care vor fi folosite n studiul bazelor
de date rela ionale.

Defini ii
Baz de date (Database) O colec ie de date nrudite, stocate n mod organizat, care se
refer la un anumit subiect sau obiectiv, mpreun cu instrumentele folosite pentru
manipularea lor.
Date Valorile care se stocheaz n baza de date. Acestea sunt statice n sensul c r mn
acelea i pn nu intervine o modificare manual sau automat .
Informa ii - Reprezint date pe care le prelucr m ntr-un mod care le confer semnifica ie i
utilitate pentru noi atunci cnd lucr m cu respectivele date. Informa iile sunt dinamice, n
sensul c se modific n permanen dup cum se modific datele din baza de date, dar i n
sensul c pot fi prelucrate ntr-un num r nelimitat de moduri. Ideea care trebuie re inut este
c trebuie s prelucr m datele pentru a le putea transforma n informa ii cu sens.
Valoare nul - Reprezint o valoare care lipse te sau care nu este cunoscut . Deseori,
valoarea nul se confund cu un zero sau unul sau mai multe spa ii albe, ceea ce este total
gre it, din urm toarele motive:

Un zero poate avea mai multe semnifica ii cum ar fi nivelul stocului unui anumit
produs, num rul de apari ii a unui cod etc.

De i un ir text format din unul sau mai multe spa ii albe nu nseamn nimic pentru cei
mai mul i dintre noi, reprezint categoric semnifica ie pentru un limbaj de interogare
cum ar fi SQL. Un spa iu alb este un caracter ca oricare altul cum ar fi a.

Un ir de lungime zero adic dou ghilimele consecutive f r spa iu ntre ele , este
de asemenea o valoare acceptabil pentru limbaje precum SQL i poate fi semnificativ
n anumite circumstan e.

Tabel (Table) - Reprezint structurile esen iale dintr-o baz de date, iar fiecare tabel
reprezint ntotdeauna un singur subiect concret, cum ar fi studen i, produse, vnz ri etc.
Ordinea logic a nregistr rilor i a cmpurilor din cadrul unui tabel nu are nici o importan ,
iar fiecare tabel con ine cel pu in un cmp cunoscut sub numele de cheie primar care
identific n mod unic fiecare nregistrare a tabelului. Un exempu de tabel:
StudentID
5001
5002
5012
5065
5032

Nume
Pop
Ban
Laz r
Ban
Pop

Prenume
Mariana
Ioan
Ana
Lucia
Dorin

Sectia
TCM
TCM
IEI
IMPI
MEC

Cmpuri
6

<<alte cmpuri>>

nregistr ri

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.1

Datele dintr-o baz de date rela ional pot exista independent de modul n care sunt stocate
fizic n calculator, datorit acestor ultime dou caracteristici ale unui tabel. Pentru utilizator
acest lucru este foarte bun, deoarece acesta nu mai trebuie s cunoasc loca ia fizic a unei
nregistr ri pentru a putea reg si datele.
Subiectul pe care l reprezint un tabel dat poate fi un obiect sau un eveniment. Cnd subiectul
este un obiect, tabelul reprezint o cantitate palpabil , precum o persoan , un produs sau un
lucru oarecare. Indiferent de tipul s u, un obiect are caracteristici care pot fi stocate sub form
de date, care vor putea fi prelucrate ulterior ntr-un num r mare de moduri.
Cnd subiectul unui tabel este un eveniment, nseamn c tabelul reprezint ceva care se
produce la un anumit moment de timp i care are caracteristici pe care dori i s le nregistra i.
Exemplul clasic care se poate da aici este tabelul cu consulta iile inute de un medic de
familie.
Tabelele pot fi, ntr-o alt clasificare, de dou tipuri:

Tabele de date care furnizeaz date folosite pentru furnizarea de informa ii i reprezint
tipul de tabel cel mai frecvent ntlnit ntr-o baz de date. Datele din acest tip de tabel
sunt dinamice deoarece se pot manipula (modificare, tergere) i converti n informa ii
ntr-o anumit form sau manier . Cu astfel de tabele ve i lucra foarte frecvent n
decursul lucrului cu baza de date.

Tabele de validare care stocheaz date pe care le ve i folosi cu scopul precis de a


implementa integritatea datelor. De obicei, un tabel de validare con ine nume de
localit i, coduri de produse, categorii de activit i etc. Datele din acest tip de tabel sunt
statice, adic se modific foarte rar.

Cmp (Field) - Reprezint cea mai mic structur din baza de date i reprezint o
caracteristic a subiectului tabelului c ruia i apar ine. Cmpurile sunt structurile care
stocheaz efectiv datele, care apoi pot fi reg site i prezentate ca informa ii n aproape orice
configura ie pe care o pute i imagina. Fiecare cmp dintr-o baz de date corect proiectat
con ine singur valoare, iar numele s u va identifica tipul de valoare admis. Astfel, procesul
de introducere a datelor devine foarte intuitiv.
nregistrare (Record) - Reprezint o instan unic a subiectului unui tabel. nregistrarea
este alc tuit din ntregul set de cmpuri dintr-un tabel, indiferent dac respectivele cmpuri
con in sau nu valori. Datorit modalit ii de definire a unui tabel, fiecare nregistrare este
definit n baza de date prin intermediul unei valori unice a cmpului cheie primar a
nregistr rii respective. Astfel, dac avem un tabel de persoane, o nregistrare din tabel trebuie
s identifice fiecare persoan din tabel, care este un unicat.
nregistr rile reprezint un element cheie pentru n elegerea rela iilor dintre tabele, deoarece
va trebui s cunoa te i rela ia dintre o nregistrare a unui tabel i alte nregistr ri din alt tabel.
Vedere (Query) - Este un tabel virtual compus din cmpuri dintr-unul sau mai multe tabele
ale bazei de date; tabelele care alc tuiesc vederea sunt cunoscute sub numele de tabele de
baz . Modelul rela ional i atribuie unei vederi atributul de virtual deoarece i preia datele
din tabele de baz , nu- i stocheaz propriile sale date. De fapt, singurele informa ii referitoare
la o vedere care sunt stocate n baza de date se refer la structura vederii respective.
Numeroase programe SGBDR principale lucreaz cu vederi, dar unele (precum Microsoft
Access) le denumesc interog ri salvate.

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.1

Cheie (Key) - sunt acele cmpuri speciale care ndeplinesc roluri foarte bine determinate n
cadrul unui tabel, iar tipul cheii define te rolul acesteia n interiorul tabelului. Un tabel poate
con ine numeroase tipuri de chei, dar cele mai importante sunt cheia primar i cheia extern .
O cheie primar este un cmp sau un grup de cmpuri care identific n mod unic fiecare
nregistrare din cadrul unui tabel; dac o cheie primar este compus din dou sau mai multe
cmpuri, este cunoscut sub numele de cheie primar compozit . O valoare a unei primare
identific o anumit nregistrare din ntreaga baz de date. Cheia primar impune integritatea
la nivel de tabel i faciliteaz stabilirea rela iilor cu alte tabele din baza de date.
O cheie extern dintr-un tabel este acea cheie care este cheie primar n alt tabel. Ea nu
trebuie s fie unic dup cum ve i observa n urm torul exemplu, rolul ei este, n special, de a
asigura leg tura cu alt tabel. n figura 1.2 se pot vedea o cheie primar i o cheie extern .

Cheie primar

Cheie primar
Sportivi
SportivID
8001
8002
8003

Impresari
ImpresarID
100
101
102
ImpresarID
100
101
100

Nume
Becali
Popescu
Becali

Nume sportiv
Mutu Adrian
Neaga Ioan
Chivu Cristian

Prenume
Ioan
Gic
Victor
Telefon

0745-657329
0744-768432
0723-546291

Telefon
0745-655482
0745-658312
0744-547212
<<alte cmpuri>>

Cheie extern
Fig.1.2. Exemplu de cmpuri cheie primar i cheie extern

Se observ cum cmpul ImpresarID este cheie primar pentru tabelul Impresari i cheie
extern pentru tabelul Sportivi. Acolo unde este cheie extern , valoarea ei se poate repeta,
ceea ce este firesc, deoarece un impresar poate avea mai mul i sportivi. Cmpul ImpresarID
din cele dou tabele asigur leg tura dintre ele, asigurnd n acela i timp i integritatea
datelor, adic fiecare sportiv are un impresar valabil.
Cnd determina i c ntre dou tabele exist o rela ie, n mod caracteristic stabili i rela ia
respectiv prelund o copie a cheii primare din primul tabel i ncorpornd-o n structura celui
de-al doilea tabel, unde devine cheie extern . Numele de cheie extern deriv din faptul c
al doilea tabel are deja o cheie primar proprie, iar cheia primar pe care o introduce i din
primul tabel este extern pentru al doilea tabel.
Index - Este o structur pe care un program SGBDR o pune la dispozi ie pentru mbun t irea
procesului de prelucrare a datelor. Un index nu are nici o leg tur cu structura logic a bazei de date.
Unicul motiv pentru care discut m despre termenul index n acest capitol este faptul c oamenii l
confund deseori cu termenul cheie.
Index i cheie reprezint o alt pereche de termeni folosi i eronat n mod frecvent i pe scar larg n
industria bazelor de date. (Mai ine i minte deosebirile dintre date i informa ii?). Ve i sesiza
ntotdeauna diferen a dintre cei doi termeni dac re ine i c , n timp ce cheile sunt structuri logice pe
care la identificarea nregistr rilor dintr-un tabel, indec ii reprezint structuri fizice utilizate la
optimizarea procesului de prelucrare a datelor.
Prin folosirea indec ilor, sort rile i filtr rile unei baze de date se face ntr-un timp mult mai scurt.
8

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.1

Rela ii (Relationships) - ntre dou tabele exist o rela ie atunci cnd nregistr rile din primul
tabel pot fi asociate cu nregistr rile din al doilea tabel. Rela ia se poate stabili prin
intermediul unui set de chei primare i chei externe sau cu ajutorul unui al treilea tabel, numit
tabel de leg tur (cunoscut i sub numele de tabel asociativ).
Figura 1.3 ilustreaz rela ii stabilite prin intermediul cheilor primare i al cheilor externe.
Studenti
StudID
6001
6002
6003
6004
6004

Nume
Pop
Szabo
Costea
Timocea
Mocean

Prenume
Remus
Zoltan
Florian
Sebastian
Vasile

Orar student(table de leg tur )


StudID
6001
6002
6002
6001
6002
6003
6003
6001
6003
6001

CursID
C001
C213
C001
C213
C015
C001
C213
C015
G001
G001

OrasStudent
Reghin
Oradea
Zalau
Brasov
Fagaras

Cursuri
CursID Denumire
C001
PUC
C213
Baze de date
C032
SIM
C015
GD
G001
AutoCAD
G004
Inventor
G007
Intellicad

<<alte cmpuri>>
........
........
........
........
........

Credite
5
5
4
5
4
5
4

ProfesorID
25461
25461
56821
12843
32584
3212
25461

Fig .1.3. Rela ii ntre tabele

O rela ie este o component important a unei baze de date rela ionale. O rela ie permite
crearea de vederi din tabele multiple i este crucial pentru integritatea datelor, ntruct
contribuie la cantit ii de date redundante i la eliminarea datelor duplicate. Pute i caracteriza
o rela ie n trei moduri: n func ie de tipul rela iei dintre tabele, de maniera n care fiecare
tabel particip la rela ie i de gradul de participare al fiec rui tabel.
Rela ii unu cu unu - Dou tabele au o rela ie unu cu unu cnd o singur nregistrare din
primul tabel este corelat cu o singur nregistrare din al doilea tabel i o singur nregistrare
din al doilea tabel este corelat cu o singur nregistrare din primul tabel. n figura 2.10 este
reprezentat o astfel de rela ie.
ntr-o asemenea rela ie, un tabel serve te ca tabel p rinte, iar cel lalt ndepline te rolul de
tabel copil. Rela ia se stabile te prin preluarea unei cpii a cheii primare a tabelului p rinte
i ncorporarea acesteia n structura tabelului copil, unde devine o cheie extern . Acesta este
un tip special de rela ie, deoarece este unicul n cadrul c ruia ambele tabele pot folosi efectiv
aceea i cheie primar .
n figura 1.4 este prezentat un exemplu clasic de rela ie unu la unu. n acest caz SALARIA I
este tabelul p rinte, iar SALARIU este tabelul copil. Se observ c fiecare salariat din primul
tabel are un singur corespondent din al doilea tabel.
9

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.1

Salaria i
SalariatID
100
101
102
103

Nume
Ban
Pop
Laz r
Cri an

Prenume
Ioan
Dorin
Liviu
Ovidiu

Telefon
0745-646321
0723-548211
0264-542138
0740-764282

<<alte cmpuri>>
..
..
..
..

Salariu
SalariatID
100
101
102
103

Salar orar
34.50
23.00
17.45
16.00

Sporuri
10%
5%
20%
18%

<<alte cmpuri>>
..
..
..
..

Fig. 1.4. Exemplu de rela ie unu la unu

Rela ia unu la unu poate fi imaginat ca o rupere n dou a tabelului. De i cmpurile din
aceste tabele pot fi combinate ntr-un singur tabel, proiectantul bazei de date a ales s plaseze
n tabelul SALARIA I cmpurile ce pot fi v zute de orice membru al organiza iei i n tabelul
SALARIU cmpurile ce pot fi v zute doar de personalul autorizat, tiut fiind c salariile sunt,
de obicei, confiden iale.
Rela ii unu cu mai mul i - ntre dou tabele exist o rela ie unu cu mai mul i cnd o
nregistrare din primul tabel poate fi corelat cu una sau mai multe nregistr ri din al doilea
tabel, n timp ce o nregistrare din al doilea tabel poate fi corelat cu o singur nregistrare din
primul tabel. S studiem un exemplu generic pentru acest tip de rela ie.
Modelul p rinte/copil pe care l-am utilizat pentru a descrie o rela ie unu cu unu se aplic i
n acest caz, partea unu a rela iei este tabelul p rinte, iar tabelul din partea mai mul i este
tabelul copil. O rela ie de tipul unu cu mai mul i se stabile te prin preluarea unei cpii a cheii
primare a tabelului p rinte i ncorporarea acesteia n structura tabelului copil, unde devine o
cheie extern .
Exemplul din figura 1.5 ilustreaz o rela ie de tip unu cu mai mul i caracteristic .
Clienti
ClientID
9001
9002
9003
9004
9005

Imprumuturi
Nume
Pop
Ban
Laz r
Buzan
Beldean

Prenume
Dorin
Ion
Ana
Maria
Vian

ClientID
9002
9001
9004
9003
9003
9003
9002
9005
9005

<alte cmp.>
.......
.......
.......
.......
.......

Fig. 1.5. Exemplu de rela ie unu cu mai mul i


10

CarteID
5648
690423
6563
65323
09542
64823
75001
10045
76100

Data
....
....
....
....
....
....
....
....
....

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.1

O singur nregistrare din tabelul CLIENTI poate fi corelat cu una sau mai multe nregistr ri
din tabelul IMPRUMUTURI, dar o nregistrare din tabelul IMPRUMUTURI este corelat cu
o singur nregistrare din tabelul CLIENTI. Dup cum probabil a i dedus, cmpul ClientID
este o cheie extern n tabelul IMPRUMUTURI.
Rela ia unu cu mai mul i este cea mai obi nuit rela ie care exist ntre dou tabele dintr-o
baz de date i este cea mai u or de identificat. Rela ia este extrem de important din punct de
vedere al integrit ii datelor, deoarece ea v ajut s elimina i datele duplicate.
Rela ii de tip mai mul i cu mai mul i - ntre dou tabele exist o rela ie de mai mul i cu
mai mul i cnd o nregistrare din primul tabel poate fi corelat cu una sau mai multe
nregistr ri din al doilea tabel i o nregistrare din al doilea tabel poate fi corelat cu una sau
mai multe nregistr ri din primul tabel. O rela ie din aceast categorie se stabile te cu ajutorul
unui tabel de leg tur . Un tabel de leg tur faciliteaz asocierea nregistr rilor dintr-un tabel
cu nregistr rile din cel lalt tabel i asigur lipsa oric ror probleme la opera iile de ad ugare,
tergere sau modificare a datelor corelate.
Un tabel de leg tur se define te prin preluarea unor cpii ale cheii primare din fiecare tabel i
utilizarea lor pentru a forma structura noului tabel. n realitate, aceste cmpuri ndeplinesc
dou roluri distincte: mpreun formeaz cheia primar compozit a tabelului de leg tur , iar
separat, fiecare poate fi asimilat unei chei externe.
O rela ie de tip mai mul i cu mai mul i care nu este stabilit n mod corespunz tor se nume te
nerezolvat . Figura 1.6 prezint un exemplu clasic i clar de rela ie de tip mai mul i cu mai
mul i nerezolvat . n acest exemplu, o nregistrare din tabelul STUDENTI poate fi corelat cu
mai multe nregistr ri din tabelul CURSURI, n timp ce o singur nregistrare din tabelul
CURSURI poate fi corelat cu mai multe nregistr ri din tabelul STUDENTI.
Studenti
StudID
6001
6002
6003
6004
6004

Cursuri
CursID
C001
C213
C032
C015
G001
G004
G007

Nume
Pop
Szabo
Costea
Timocea
Mocean

Denumire
PUC
Baze de date
SIM
GD
AutoCAD
Inventor
Intellicad

Prenume
Remus
Zoltan
Florian
Sebastian
Vasile

Credite
5
5
4
5
4
5
4

OrasStudent
Reghin
Oradea
Zalau
Brasov
Fagaras

ProfesorID
25461
25461
56821
12843
32584
3212
25461

<<alte cmpuri>>
........
........
........
........
........

Sala
208
208
209
207
207
208
208

<<alte cmpuri>>
........
........
........
........
........
........
........

Fig. 1.6. Un exemplu tipic de rela ie mai mul i cu mai mul i


nerezolvat

Aceast rela ie este nerezolvat datorit particularit ii intrinseci a rela iei de tip mai mul i cu
mai mul i. Principala problem este urm toarea: cum se pot asocia cu u urin nregistr ri din
primul tabel cu nregistr rile din al doilea tabel? Pentru a reformula ntrebarea folosind
11

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.1

tabelele din figura 1.6, cum se asociaz un student cu mai multe cursuri sau un anumit curs cu
mai mul i studen i? Se insereaz cteva cmpuri Student n tabelul CURSURI sau mai multe
cmpuri Curs n tabelul STUDENTI? Oricare din aceste metode va ngreuna lucrul cu datele
i va afecta n mod negativ integritatea datelor. Cea mai bun metod const n din crearea i
utilizarea unui tabel de leg tur , care va rezolva rela ia de tip mai mul i cu mai mul i n
maniera cea mai adecvat i mai eficient . Figura 1.7 prezint implementarea practic a cestei
solu ii.
Este important ca dumneavoastr s cunoa te i tipul de rela ie care exist ntre tabelele dintr-o
pereche, deoarece acesta determin modul n care sunt corelate tabelele, dac nregistr rile din
tabele sunt interdependente sau nu, precum i num rul minim i maxim de nregistr ri
corelate care pot exista n cadrul rela iei.

StudID
6001
6002
6003
6004
6004

Nume
Pop
Szabo
Costea
Timocea
Mocean

StudID
6001
6002
6002
6001
6002
6003
6003
6001
6003
6001

CursID
C001
C213
C001
C213
C015
C001
C213
C015
G001
G001

Prenume
Remus
Zoltan
Florian
Sebastian
Vasile

OrasStudent
Reghin
Oradea
Zalau
Brasov
Fagaras

CursID
C001
C213
C032
C015
G001
G004
G007

Denumire
PUC
Baze de date
SIM
GD
AutoCAD
Inventor
Intellicad

<<alte cmpuri>>
........
........
........
........
........

Credite
5
5
4
5
4
5
4

ProfID
25461
25461
56821
12843
32584
3212
25461

Fig. 1.7. Rezolvarea unei rela ii de tip mai mul i cu mai mul i
cu ajutorul unui tabel de leg tur

Tipul de participare - Cnd stabili i o rela ie ntre dou tabele, fiecare tabel particip la
rela ie ntr-o manier particular . Tipul de participare pe care l atribui i unui tabel dat
determin dac n respectivul tabel trebuie s existe o nregistrare nainte de a putea introduce
nregistr ri n tabelul corelat. Exist dou tipuri de particip ri:
Obligatorie - tabelul trebuie s con in cel pu in o nregistrare nainte de a putea
introduce nregistr ri n tabelul corelat.
Op ional nu este obligatoriu ca tabelul s con in vreo nregistrare nainte de a putea
introduce nregistr ri n tabelul corelat.

Gradul de participare - Determin num rul minim de nregistr ri existente ntr-un tabel al
unei rela ii, asociate cu o singur nregistrare a unui tabel corelat, respectiv num rul maxim de
nregistr ri care pot exista ntr-un tabel al unei rela ii, asociate cu o singur nregistrare din
tabelul corelat.

12

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.1

Specifica ie de cmp - Reprezint toate elementele unui cmp. Fiecare specifica ie de cmp
ncorporeaz trei tipuri de elemente: generale, fizice i logice.
Elementele generale reprezint informa iile fundamentale referitoare la cmp i
includ elemente precum numele cmpului, descrierea i tabelul p rinte.
Elementele fizice determin modul de construire a unui cmp i modul de
reprezentare a acestuia pentru persoana care l utilizeaz . Aceast categorie include
elemente precum tipul de date, lungimea i formatul de afi are.
Elementele logice descriu valorile stocate ntr-un cmp i includ articole precum
valoarea obligatorie, intervalul de valori i valoarea prestabilit .
Aceste specifica ii de cmp o s le completa i folosindu-v de ni te formulare, care vor fi
descrise n detaliu n capitolul urm tor.
Integritatea datelor - prin se n elege validitatea, consecven a i acurate ea datelor incluse
ntr-o baz de date. Nu pot accentua suficient faptul c nivelul de acurate e al informa iilor pe
care le reg si i din baza de date este direct propor ional cu nivelul de integritate al datelor pe
care l impune i bazei de date.
Integritatea datelor reprezint unul dintre cele mai importante aspecte ale procesului de
proiectare a bazelor de date i nu v este permis s -l subestima i, s -l trece i cu vederea i nici
m car s -l neglija i par ial. Trebuie s fi i con tient de faptul c dac nu respecta i regulile de
integritate, sunte i pasibili de a ob ine informa ii cu grave erori, care sunt greu de depistat.
Gndi i-v numai la implica iile posibile atunci cnd baza dumneavoastr de date e folosit
pentru tranzac ii comerciale sau financiare.
Exist patru tipuri de integritate a datelor pe care le ve i implementa pe durata procesului de
proiectare a bazelor de date. Trei dintre acestea se bazeaz pe diferite aspecte ale structurii
bazei de date i sunt denumite n conformitate cu zona (nivelul) la care opereaz . Cel de-al
patrulea tip de integritate a datelor se bazeaz pe modul n care o organiza ie i percepe i i
utilizeaz datele.
n continuare vor fi prezentate descrierile fiec rui tip de integritate.
Integritatea la nivel de tabel asigur lipsa nregistr rilor duplicate n interiorul
tabelului i faptul c acel cmp care identific fiecare nregistrare din tabel este unic
i nu are niciodat valoare nul .
Integritatea la nivel de cmp asigur faptul c structura fiec rui cmp este solid , c
valorile din fiecare cmp sunt valide, consecvente i precise, precum i c se asigur
o definire consecvent , n ntreaga baz de date, a cmpurilor de acela i tip (Cod
postal, de exemplu).
Integritatea la nivel de rela ie (cunoscut i sub numele de integritate referen ial )
asigur soliditatea rela iei dintre dou tabele, precum i faptul c nregistr rile din
tabele sunt sincronizate ori de cte ori se introduc, se actualizeaz sau se terg date
din oricare dintre cele dou tabele.
Reguli de desf urare a activit ii impun restric ii sau limit ri asupra anumitor
aspecte ale bazei de date, pe baza modalit ilor n care o organiza ie i percepe i i
actualizeaz datele. Aceste restric ii pot afecta aspecte ale proiect rii bazelor de date,
precum i intervalul i tipurile de valori stocate ntr-un cmp, tipul i gradul de
participare a fiec rui tabel n cadrul unei rela ii, precum i tipul de sincronizare
utilizat pentru integritatea la nivel de rela ie, n anumite rela ii.
13

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.1

Baza de date rela ional - A fost conceput n anul 1969 i este azi cel mai folosit model de
baze de date n gestiunea bazelor de date. Acest model este fundamentat pe dou ramuri ale
matematicii teoria mul imilor i logica predicatelor de ordinul nti. ntr-adev r, numele
modelului provine de la termenul rela ie, care constituie o parte a teoriei mul imilor.
O concep ie gre it , larg r spndit , este aceea c modelul rela ional i-ar fi preluat numele de
la faptul c ntre tabelele unei baze de date rela ionale exist rela ii.
O baz de date rela ional stocheaz datele n rela ii, pe care un utilizator le percepe ca pe
ni te tabele. Fiecare rela ie este compus din nregistr ri i cmpuri, iar ordinea fizic a
nregistr rilor sau a cmpurilor dintr-un tabel este complet lipsit de importan , iar fiecare
nregistrare a tabelului este identificat , nu dup locul unde se afl , ci dup un cmp care
con ine o valoare unic . Prin urmare, utilizatorul nu este obligat s cunoasc loca ia fizic a
unei nregistr ri a a cum se ntmpl la celelalte modele de baz de date (ierarhic i re ea),
pentru reg sirea datelor.
Sistem de gestiune a bazelor de date rela ionale (SGBDR) - Este un program software folosit
pentru crearea, ntre inerea, modificarea i manipularea unei baze de date rela ionale. Numeroase
programe SGBDR furnizeaz i instrumentele necesare pentru a putea crea aplica ii destinate
utilizatorilor finali care lucreaz cu datele din baza de date. Numeroasele facilit i oferite de diferi i
produc tori evolueaz foarte rapid, devenind din ce n ce mai performante.
Primele SGBDR-uri au fost concepute pentru sisteme de tip desktop. Acestea presupun existen a unei
copii a bazei de date pe fiecare calculator care nu este un mare avantaj, n ceea ce prive te actualizarea
datelor. n acest context a ap rut necesitatea amplas rii n mod centralizat a ntregii baze de date care
s fie accesat de to i utilizatorii. A a au ap rut SGBDR-urile de tip client-server n care bazele de
date se stocheaz pe un server de baze de date, iar utilizatorii interac ioneaz cu datele prin
intermediul unor aplica ii rezidente pe propriul calculator numit clientul bazei de date.
Creatorul de baze de date folose te programul client-server SGBDR pentru a crea i ntre ine
programele de aplica ie de baze de date i programele accesorii pentru utilizatorul final. Acesta
implementeaz integritatea i securitatea datelor din serverul de baze de date, avnd astfel posibilitatea
de a fundamenta o diversitate de aplica ii utilizator pe acela i set de date, f r a afecta integritatea i
securitatea datelor.
Cele mai cunoscute SGBDR-uri sunt:
Microsoft Access
Microsoft SQL Server
Oracle
MySQL
PostgreSQL
Microsoft Access este un SGBDR comercial de tip desktop, folosit pentru gestionarea bazelor de date
de dimensiuni mici i medii. Poate acoperi f r probleme segmentul firmelor mici i mijlocii. Este
sistemul de gestiune pe care l vom studia i noi n aceast carte.
Microsoft SQL Server este un SGBDR de tip client-server care accept baze de date foarte mari i un
num r foarte mare de tranzac ii i ruleaz numai pe sistemele de operare Windows. Este solu ia ideal
pentru firmele mari, la un pre de cost relativ sc zut.
Oracle este liderul mondial al pie ei SGBDR-urilor de tip client-server. Oracle accept baze de date
enorme i un num r imens de tranzac ii. Oracle ruleaz pe numeroase sisteme de operare, este un
SGBDR complex a c rui operare i ntre inere trebuie f cute de un administrator special instruit pentru
acest scop. Se ntlne te la marile companii transna ionale, deoarece pre ul s u este pe m sura
performan elor.
14

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.1

MySQL este un SGBDR din categoria open-source(codul surs este pus gratuit la dispozi ia
utilizatorilor) fiind unul din liderii pie ei. MySQL este rapid, stabil i accept baze de date de mari
dimensiuni, dar i lipsesc cteva din caracteristicile importante ale limbajului SQL. Versiunile viitoare
i propun includerea acestor caracteristici. Ruleaz pe mai multe sisteme de operare i este gratuit
pentru utilizarea n scopuri personale(care nu aduc un c tig).
PostgreSQL este un SGBDR din categoria open-source, fiind unul din liderii pie ei. Accept baze de
date de mari dimensiuni, este recunoscut pentru setul s u bogat de caracteristici.

Desf

urarea lucr rii

Lucrarea se consider efectuat dac :


1. Studentul i-a nsu it termenii i a n eles conceptele de mai jos:
Baz de date
Date
Informa ii
Valoare nul
Tabel
Cmp
nregistrare
Vedere
Cheie
Index
Rela ii
Rela ii unu cu unu
Rela ii unu cu mai mul i
Rela ii de tip mai mul i cu mai mul i
Tipul de participare
Gradul de participare
Specifica ie de cmp
Integritatea datelor
Baza de date rela ional
Sistem de gestiune a bazelor de date rela ionale (SGBDR)
2. Pe baza exemplelor prezentate, studentul va concepe cte un exemplu original cu cele 3
tipuri de rela ii ntre dou tabele, care vor fi prezentate n Excel.

15

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.2

Lucrarea nr. 2. Elemente de proiectare a bazelor de date


rela ionale
n aceast lucrare se vor parcurge cele 7 etape de proiectare a unei baze de date, avnd ca scop
familiarizarea studen ilor cu problemele intervenite n conceperea unei baze de date.

Considera ii teoretice
Ca orice lucru inventat de om, i bazele de date au un scop bine definit. Este foarte important
s n elegem scopul pentru care e nevoie de o baz de date, pentru a alege cele mai optime
solu ii.
nainte de a crea o baz de date, aceasta trebuie proiectat , la fel cum, pentru a construi o cas
avem nevoie de un proiect. Iat cele 7 etape care trebuie parcurse pentru a face un proiect:

Etapa 1 Definirea unei declara ii de inten ie i a obiectivelor misiunii;

Etapa 2 Analiza bazei de date curente;

Etapa 3 Crearea structurilor de date;

Etapa 4 Determinarea i instituirea rela iilor ntre tabele;

Etapa 5 Determinarea i definirea regulilor de desf urare a activit ii;

Etapa 6 Determinarea i definirea vederilor;

Etapa 7 Verificarea integrit ii datelor.

Studen ii vor studia din curs Capitulul 3, pentru a- i nsu i cuno tin ele legate de fiecare etap
a procesului de proiectare. Pentru a n elege la modul concret, cum se face proiectarea unei
baze de date, vom aborda un studiu de caz.

Studiu de caz. Proiectarea bazei de date Biblioteca


Declara ia de inten ie. Rolul bazei de date este de a ine la zi stocul de c r i din bibliotec
de a furniza informa ii despre cititori i mprumuturi.
Obiectivele misiunii:
Dorim s avem informa ii despre autorii care au c r i n bibliotec .
Dorim s avem informa ii despre editurile care au c r i n bibliotec .
Dorim s avem o clasificare a c r ilor pe domenii.
Dorim s avem informa ii despre cititorii bibliotecii.
Dorim s avem situa ii despre mprumuturi.
Dorim s

tim la un moment dat, unde sunt exemplarele unei anumite c r i.

16

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.2

Studen ii vor ncerca s formuleze alte versiuni ale declara iei de inten ie i s propun
obiective ale misiunii bazei de date.

i alte

Crearea structurilor de date i a rela iilor. Presupunem c dup analiza obiectivelor


misiunii i dup mai multe itera ii, am ajuns la structura prezentat mai jos.

Crearea foilor de specifica ii. Studen ii vor completa foi de specifica ii pentru cel pu in 10
cmpuri care s acopere toate tipurile de date. Formularele folosite sunt Specificatii camp.xls,
care se g se te pe server n directorul Baze de date.

Desf

urarea lucr rii

n directorul Biblioteca al fiec rui student va trebui s se creeze un fi ier Word numit
Documentatie proiect Biblioteca.doc n care vor apare Declara ia de inten ie, Obiectivele
misiunii i Diagrama de rela ii. Diagrama se va executa n Word folosind comenzile Drawing.
De asemenea, n acela i director ve i crea fi ierul Specificatii camp.xls, care va con ine pe 10
foi, cele 10 specifica ii de cmp cerute.
Observa ie important ! Trata i cu mare grij cele 2 fi iere cerute, pentru c ele vor sta la
baza lucr rilor care urmeaz .

17

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.3

Lucrarea nr. 3. Ini iere n limbajul SQL


Aceast lucrare de laborator const n parcurgerea exemplelor de expresii SQL pentru ca studen ii s
n eleag acest limbaj, care va fi folosit n lucr rile urm toatoare.

Opera iuni simple folosind limbajul SQL


Reg sirea datelor
Reg sirea datelor se face cu instruc iunea SELECT, folosit pentru a reg si una sau mai multe
coloane. Aceasta este cea mai folosit instruc iune din SQL.
Din tabelul tblStudenti prezentat n figura 3.1 ne propunem s extragem numele i prenumele
studen ilor.
StudID
1
2
3
4
5
6
7
8
9
10

Nume
Bogdan
Meruta
Pop
Bucur
Chirila
Cotirla
Cotoara
Cozma
Damian
Farcas

Init
P.
I.
T.
P.
I.
L.
G.
D.
N.
I.

Prenume
Mircea Florin
Cosmin
Marius Traian
Mihaela
Laura
Raluca Adina
Ovidiu
Dumitru
Daniel
Calin Florin

Sectia
IEI
IEI
IEI
IEI
IEI
TCM
TCM
TCM
MEC
MEC

An
1
3
2
2
3
1
1
2
4
4

Grupa
1311
1332
1321
1321
1331
1111
1111
1121
1241
1241

Fig. 3.1. Tabelul tblStudenti simplificat

Expresie SQL:
SELECT Nume, Prenume
FROM tblStudenti;

Rezultat:
Nume
Bogdan
Meruta
Pop
Bucur
Chirila
Cotirla
Cotoara
Cozma
Damian
Farcas

Prenume
Mircea Florin
Cosmin
Marius Traian
Mihaela
Laura
Raluca Adina
Ovidiu
Dumitru
Daniel
Calin Florin

18

Stare
Bugetar
Bugetar
Bugetar
Bugetar
Bugetar
Bugetar
Bugetar
Bugetar
Bugetar
Taxa

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.3

Observa i expresia SQL care se cite te astfel: selecteaz coloanele Nume i Prenume din tabelul
tblStudenti. S-a folosit i clauza FROM, a a cum se vede. Rezultatul ob inut este evident.
Dac dori i s selecta i toate coloanele tabelului se folose te expresia urm toare:
Expresie SQL:
SELECT *
FROM tblStudenti

n locul listei de coloane se pune acest simbol * .


Sortarea datelor
Prin sortarea datelor se n elege aranjarea nregistr rilor unui tabel ntr-o anumit ordine, de
regul , alfabetic sau cresc toare/descresc toare. Sortarea datelor se face cu ajutorul clauzei
ORDER BY a instruc iunii SELECT.
La tabelul din figura 3.1 ne propunem s scoatem numai numele i prenumele studen ilor dar
n ordine alfabetic .
Expresie SQL:
SELECT Nume, Prenume
FROM tblStudenti
ORDER BY Nume;

Rezultat:
Nume
Bogdan
Bucur
Chirila
Cotirla
Cotoara
Cozma
Damian
Farcas
Meruta
Pop

Prenume
Mircea Florin
Mihaela
Laura
Raluca Adina
Ovidiu
Dumitru
Daniel
Calin Florin
Cosmin
Marius Traian

Observa i clauza ORDER BY care ordoneaz nregistr rile n ordine alfabetic dup valorile
din cmpul Nume. Se pune ntrebare, ce ne facem dac vrem s ordon m invers alfabetic (de
la Z la A)? Sau dac avem un cmp numeric i dorim s ordon m descresc tor dup acest
cmp. Iat r spunsul:
Pentru a indica ordinea descresc toare de sortare se folose te cuvntul cheie DESC.
Dac cmpul dup care se face sortarea este alfanumeric, sortarea se face alphabetic,
iar dac este numeric sau de dat calendaristic , sortarea se face
cresc tor/descresc tor.
Dac nu se indic direc ia de sortare, se ia sortarea cresc toare care este implicit .
(Cazul prezentat.)
Iat cum arat o expresie SQL n care apare i cuvntul cheie DESC:

19

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.3

Expresie SQL:
SELECT Nume, Prenume
FROM tblStudenti
ORDER BY Nume DESC

Re ine i c rezultatul sort rii datelor este un tabel care are acela i num r de nregistr ri ca i
originalul.
Filtrarea datelor
Prin filtrarea datelor se n elege extragerea dintr-un tabel numai a anumitor nregistr ri de
care avem nevoie, de exemplu, din tabelul de studen i avem nevoie numai de cei din anul 2.
Pentru a executa aceast opera iune ve i folosi clauza WHERE a instruc iunii SELECT.
Reg sirea numai a nregistr rilor dorite, presupune includerea n expresia SQL a unui criteriu
de c utare a nregistr rilor dorite. ntr-o instruc iune SELECT, datele sunt filtrate prin
specificarea criteriilor de c utare n clauza WHERE. Locul acesteia este imediat dup numele
tabelului (clauza FROM), ca n exemplul urm tor. Fie tabelul din figura 3.1.
Ne propunem s filtr m studen ii din anul 2. expresia SQL este urm toarea:
Expresie SQL:
SELECT StudID, Nume, Init, Prenume, Sectia, Grupa
FROM tblStudenti
WHERE An = 2;

Rezultat:
StudID
3
4
8

Nume
Pop
Bucur
Cozma

Init
T.
P.
D.

Prenume
Marius Traian
Mihaela
Dumitru

Sectia
IEI
IEI
TCM

Grupa
1321
1321
1121

Operatorii clauzei WHERE

Clauza WHERE pe care am examinat-o a testat egalitatea determin dac o coloan con ine
valoarea specificat . Limbajul SQL accept mai mul i operatori condi ionali, dup cum
urmeaz :
=
Egalitate
<>
Non-egalitate
!=
Non-egalitate
<
Mai mic dect
<=
Mai mic sau egal cu
!<
Nu mai mic dect
>
Mai mare dect
>=
Mai mare sau egal cu
!>
Nu mai mare dect
BETWEEN ntre dou valori specificate
IS NULL Este o valoare NULL

20

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.3

Observa i c pentru non-egalitate exist dou simboluri, aceasta pentru c diversele SGBDRuri accept pe unul sau altul dintre ele.
Iat cteva cazuri concrete de folosire a operatorilor:
Interval de valori: WHERE Pret BETWEEN 2.5 AND 10; (afi eaz toate nregistr rile care au n
coloana Pret valori ntre 2.5 i 10).
Valoare NULL: WHERE Pret IS NULL; (afi eaz toate nregistr rile care nu au pre ).
Non-egalitate: WHERE Stare <> Bugetar; (afi eaz toate nregistr rile din tabelul studen i,
folosit mai nainte, care nu sunt bugetari). Este evident c putem formula i altfel condi ia, dar
aici am folosit non-egalitatea.
Ceilal i operatori se folosesc la fel ca cel de egalitate prezentat pu in mai n fa .
Filtrare avansat

Filtr rile prezentate mai sus se ntlnesc mai rar n practic deoarece sunt foarte simple.
Filtr rile pe care le ve i folosi n mod curent, sunt filtr ri mai complicate la care criteriile sunt
exprimate prin expresii complexe. Aceste criterii creeaz condi ii puternice de c utare. Vom
folosi al i operatori cum sunt AND, OR, NOT i IN.
De multe ori, filtrarea dup o coloan nu rezolv problema pe care o avem. Pentru a filtra
dup mai multe coloane se folose te operatorul AND. Fie tabelul din figura 3.2. Ne propunem
s facem diferite filtr ri.
StudID
1
2
3
4
5
6
7
8
9
10

Nume
Bogdan
Meruta
Pop
Bucur
Pop
Cotirla
Cotoara
Cozma
Damian
Cozma

Init
P.
I.
T.
P.
I.
L.
G.
D.
N.
I.

Prenume
Mircea Florin
Cosmin
Marius Traian
Mihaela
Laura
Raluca Adina
Ovidiu
Dumitru
Daniel
Calin Florin

Sectia
IEI
IEI
IEI
IMPI
IEI
TCM
TCM
TCM
MEC
MEC

An
1
1
2
2
3
1
1
2
4
4

Grupa
1311
1312
1321
1321
1331
1111
1111
1121
1241
1241

Stare
Bugetar
Taxa
Bugetar
Bugetar
Taxa
Bugetar
Bugetar
Bugetar
Bugetar
Taxa

Fig. 3.2. Tabel cu studen i

Operatorul AND. Prima filtrare ar fi studen ii de la IEI din anul 1. Iat expresia SQL:
Expresie SQL:
SELECT Nume, Prenume, Grupa, Stare
FROM tblStudenti
WHERE Sectia=IEI AND An = 1;

Rezultat:
Nume
Bogdan
Meruta

Prenume
Mircea Florin
Cosmin

Grupa
1311
1312

Stare
Bugetar
Taxa

21

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.3

Urm ri i expresia SQL i verifica i rezultatul ob inut. ncerca i i alte filtr ri asem n toare.
Observa i folosirea operatorului AND. Cum ar trebui modificat expresia SQL, pentru a afi a
rezultatul n ordine alfabetic invers ?
Operatorul OR. O alt filtrare pe care ne-o propunem, este s filtr m studen ii din anul 2 de
la IEI sau TCM.
Expresie SQL:
SELECT Nume, Prenume,Sectia, Grupa, Stare
FROM tblStudenti
WHERE (Sectia=IEI OR Sectia=TCM) AND An = 2;

Rezultat:
Nume
Pop
Cozma

Prenume
Marius Traian
Dumitru

Sectia
IEI
TCM

Grupa
1321
1121

Stare
Bugetar
Bugetar

Observa i folosirea parametrilor OR i AND, respectiv apari ia celor dou paranteze. Aceste
paranteze au leg tur cu ordinea opera iilor OR i AND. n ordinea opera iilor, operatorul
AND se execut naintea operatorului OR, ceea ce ar duce la rezultate eronate, de aceea a fost
pus operatorul OR n parantez , ca s -l execute primul, tiut fiind c parantezele au prioritate
la execu ie.
Operatorul IN. Folosirea acestui operator are ca scop specificarea unui domeniu de condi ii,
oricare dintre ele putnd fi ndeplinite. Operatorul IN necesit o list de valori valide, care s
fie separate prin virgule i cuprinse ntre paranteze.
Ne propunem s alegem din tabelul din figura 3.2 to i studen ii care au numele Pop i Cozma.
Expresie SQL:
SELECT Nume, Prenume,Sectia, Grupa, Stare
FROM tblStudenti
WHERE Nume IN (Pop, Cozma);

Rezultat:
Nume
Pop
Pop
Cozma
Cozma

Prenume
Marius Traian
Laura
Dumitru
Calin Florin

Sectia
IEI
IEI
TCM
MEC

Grupa
1321
1331
1121
1241

Stare
Bugetar
Taxa
Bugetar
Taxa

Din analiza acestui exemplu, putem observa f r greutate c operatorul IN face cam acela i
lucru ca i operatorul OR, deci se poate scrie o expresie SQL cu acesta. Care este aceast
expresie?
Se pune, pe bun dreptate, ntrebarea de ce mai avem nevoie de nc un operator dac avem
unul care face acela i lucru. R spunsul este c operatorul IN are unele avantaje care l fac de
preferat fa de operatorul OR. Iat aceste avantaje:
Cnd lucra i cu liste lungi de op iuni valide, sintaxa operatorului IN este mai simpl
i u or de citit, principalul avantaj.
Ordinea de evaluare este mai simplu de gestionat, cnd operatorul IN este folosit n
asocia ie cu operatorii AND i OR.

22

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.3

Aproape totdeauna, operatorii IN se execut mai rapid dect listele de operatori OR.
Un mare avantaj este c operatorul IN poate s con in o alt instruc iune SELECT,
i astfel v permite s construi i clauze WHERE foarte dinamice. Acest aspect va fi
reluat mai trziu.
Operatorul NOT. Acest operator al clauzei WHERE are o singur func ie neag orice
condi ie care l urmeaz . Deoarece NOT nu este utilizat niciodat n sine (totdeauna se
folose te n asocia ie cu alt operator), sintaxa lui e diferit de to i ceilal i operatori. Spre
deosebire de al i operatori, cuvntul cheie NOT poate fi utilizat naintea coloanei dup care se
face filtrarea, nu imediat dup aceasta.
Iat un exemplu sugestiv, extragerea studen ilor nebugetari din tabelul din figura 3.2.
Expresie SQL:
SELECT Nume, Prenume,Sectia, Grupa, Stare
FROM tblStudenti
WHERE NOT Stare=Bugetar;

Rezultat:
Nume
Meruta
Pop
Cozma

Prenume
Cosmin
Laura
Calin Florin

Sectia
IEI
IEI
MEC

Grupa
1312
1331
1241

Stare
Taxa
Taxa
Taxa

Dup cum se vede, acela i lucru l puteam ob ine i cu operatorul <>. Iar i se pune
ntrebarea de ce s folosim, totu i, operatorul NOT? ntr-adev r, pentru clauzele WHERE
simple, cum e cea prezentat , nu se poate spune c ar exista un avantaj real n folosirea
operatorului NOT. Acesta este ns foarte util n clauzele mai complexe. De exemplu, dac
folosi i operatorul NOT n asocia ie cu un operator IN, va fi mult mai simplu s g si i toate
nregistr rile care nu corespund cu o list de criterii.
Operatorul LIKE. Aici ve i nv a ce sunt caracterele de nlocuire, cum se folosesc ele i
cum s face i c ut ri cu ajutorul lor. Pn acuma, to i operatorii, foloseau valori cunoscute, iar
ei se ocupau de c utarea coresponden elor dintre valori, dac sunt mai mari sau mai mici
dect altele, dac verific un domeniu de valori etc. De multe ori apare necesitatea filtr rii
nregistr rilor dup unele criterii care nu folosesc valori cunoscute n totalitate. De exemplu,
dori i s c uta i nume de persoane care ncep cu o liter , care con in un grup de litere etc.
Acest lucru nu se poate face cu criterii simple comparare.
O solu ie, pe care ne-o propune SQL, este folosirea caracterelor de nlocuire. Caracterele de
nlocuire sunt caractere ce au n elesuri speciale n clauzele WHERE din SQL, iar limbajul
SQL accept diverse tipuri de caractere de nlocuire.
Pentru a utiliza caracterele de nlocuire n clauzele de c utare, trebuie utilizat operatorul
LIKE. Acesta anun sistemul de gestiune a bazei de date c n urm torul model de c utare se
va folosi o potrivire dup caractere de nlocuire, nu o simpl potrivire de egalitate.
C utarea cu caractere de nlocuire poate fi utilizat numai cu cmpuri de tip text. Re ine i
acest lucru!
n continuare vor fi prezentate caracterele de nlocuire folosite de programul ACCESS.

23

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.3

Caracterul de nlocuire *. Este cel mai frecvent utilizat. ntr-un ir de c utare,


*
nseamn corespunde cu oricte apari ii a oric rui caracter. Exemplul care urmeaz v va
ajuta s n elege i acest caracter.

StudID
1
2
3
4
5
6
7
8
9
10

Nume
Bogdan
Brustur
Popescu
Brucan
Pop
Cotirla
Popa
Popovici
Branea
Cozma

Init
P.
I.
T.
P.
I.
L.
G.
D.
N.
I.

Prenume
Mircea Florin
Cosmin
Marius Traian
Mihaela
Laura
Raluca Adina
Ovidiu
Dumitru
Daniel
Calin Florin

Sectia
IEI
IEI
IEI
IMPI
IEI
TCM
TCM
TCM
MEC
MEC

An
1
1
2
2
3
1
1
2
4
4

Grupa
1311
1312
1321
1321
1331
1111
1111
1121
1241
1241

Stare
Bugetar
Taxa
Bugetar
Bugetar
Taxa
Bugetar
Bugetar
Bugetar
Bugetar
Taxa

Fig. 3.3. Tabel cu studen i

Ne propunem s filtr m toate nregistr rile n care numele studen ilor, din tabelul din figura
3.3, ncepe cu Pop.
Expresie SQL:
SELECT Nume, Prenume,Sectia, Grupa, Stare
FROM tblStudenti
WHERE Nume LIKE Pop*
ORDER BY Nume;

Rezultat:
Nume
Pop
Popa
Popescu
Popovici

Prenume
Laura
Ovidiu
Marius Traian
Dumitru

Sectia
IEI
TCM
IEI
TCM

Grupa
1331
1111
1321
1121

Stare
Taxa
Bugetar
Bugetar
Bugetar

Observa i ghilimelele care se pun i ordonarea rezultatului dup cmpul Nume. ncerca i i
alte filtr ri folosind aceast tehnic .
Caracterul de nlocuire ? . Acest caracter (semnul ntreb rii) este utilizat la fel ca
simbolul * , dar nu asigur coresponden a mai multor caractere, ci numai a unuia singur.
Exemplul care urmeaz v ajut s n elege i folosirea lui.
Folosind tabelul din figura 3.3, scrie i expresii SQL care s ilustreze folosirea acestui caracter
de nlocuire.
Observa ie! n diferite SGBDR semnele de nlocuire ar putea s fie diferite. Astfel, n Oracle
* este nlocuit cu % , iar ? este nlocuit cu liniu a de subliniere _ . Pentru a nu
avea probleme este bine s studia i documenta ia SGBDR-ului pe care l ve i folosi.

24

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.3

Opera iuni avansate folosind limbajul SQL


Cmpuri calculate
Dup ti i de la proiectarea bazelor de date, o regul de baz ne spune c fiecare cmp trebuie
s fie independent, adic valoare sa s nu depind de valorile din alte cmpuri. Exemplul
clasic care se poate da aici este cel al cmpului Valoare care nu trebuie s apar ntr-un tabel
care are Pretul unitar i Cantitatea, dar avem nevoie de acest cmp care este rezultatul
nmul irii dintre pre i cantitate. Ei bine, acest cmp trebuie calculat.
Un alt exemplu este cel al adresei care se compune din concatenarea rezultatelor din mai
multe cmpuri.
n ambele exemple, datele stocate n tabele nu sunt exact ceea ce are nevoie aplica ia
dumneavoastr . n loc s reg si i datele a a cum sunt, pentru ca dup aceea s le reformata i
n aplica ia client sau n raport, dori i s reg si i datele transformate, calculate sau reformatate
direct din baza de date.
Aici intervin cmpurile cu valori calculate, pe care le vom numi n continuare cmpuri
calculate. Spre deosebire de toate coloanele de pn acum, cmpurile calculate nu exist , de
fapt, n baza de date. Un cmp calculat este creat din mers, n interiorul unei instruc iuni
SELECT din limbajul SQL.
De men ionat faptul c numai baza de date tie care coloane dintr-o instruc iune SELECT sunt
realmente coloane din tabele i care sunt cmpuri calculate. Din perspectiva unui client, datele
unui cmp calculat sunt returnate n acela i mod ca i datele din oricare coloan .
Cel mai simplu mod de a n elege crearea cmpurilor calculate este de a alege exemple
sugestive pe care s le coment m.
Cmpuri calculate prin concatenare. De multe ori apare necesitatea concaten rii valorilor
text din mai multe coloane. De exemplu, ntr-un raport trebuie s scriem identitatea unei
persoane format din numele complet, a a cum se obi nuie te n practic . S scriem expresia
SQL care face acest lucru pentru persoanele din tabelul din figura 3.3.
Expresie SQL:
SELECT Nume + + Init + + Prenume AS Student, Sectia, An, Grupa, Stare
FROM tblStudenti
ORDER BY Nume;

Rezultat:
Student
Bogdan P. Mircea Florin
Branea N. Daniel
Brucan P. Mihaela
Brustur I. Cosmin
Cotirla L. Raluca Adina
Cozma I. Calin Florin
Pop I. Laura
Popa G. Ovidiu
Popescu T. Marius Traian
Popovici D. Dumitru

Sectia
IEI
MEC
IMPI
IEI
TCM
MEC
IEI
TCM
IEI
TCM

25

An
1
4
2
1
1
4
3
1
2
2

Grupa
1311
1241
1321
1312
1111
1241
1331
1111
1321
1121

Stare
Bugetar
Bugetar
Bugetar
Taxa
Bugetar
Taxa
Taxa
Bugetar
Bugetar
Bugetar

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.3

Observa i sintaxa folosit i ceva nou a ap rut, cuvntul cheie AS dup care urmeaz cuvntul
Student, pe care l reg sim n capul de tabel, ca nume a noului cmp, ob inut prin
concatenarea celor trei. Cuvntul cheie AS introduce un alias care este un nou nume dat unui
cmp. Re ine i aceast tehnic de creare a unor cmpuri.
Cmpuri calculate aritmetic. Aceste cmpuri calculate rezult dup efectuarea unor calcule
aritmetice asupra datelor reg site. Pentru a n elege mecanismul cre rii acestor cmpuri, vom
lua un exemplu practic. Presupunem c avem un tabel n care inem intr rile ntr-o magazie de
produse, al unei firme de comer cu piese auto. Tabelul se nume te tblProduse i are coloanele
Cod, Denumire, Furnizor, PU, Cantitate. Se cere un raport al intr rilor n magazie n care
apare i cmpul Valoare, ob inut prin produsul cmpurilor PU i Cantitate. n figura 3.4 este
prezentat acest raport.
Cod
1001
1023
1231
1089
1904

Denumire
Bujie DK1
Acumulator 56A
Parbriz VW
Antigel -30
Ulei PKT 1

Furnizor
Sinterom SA
Rombat SA
Cobra SRL
Promaxim SRL
Calota SRL

PU
12
124
512
5.2
6.4

Cantitate
30
25
12
50
60

Valoare
360
3100
6144
26
384

Fig. 3.4. Raport cu cmpul valoare calculate

Expresie SQL:
SELECT Cod, Denumire, Furnizor, PU, Cantitate, PU*Cantitate AS Valoare
FROM tblProduse;

Observa i i re ine i sintaxa folosit pentru crearea noului cmp VALOARE.

Desf

urarea lucr rii

Toate expresiile SQL studiate, se vor copia ntr-un fi ier Word cu numele Expresii SQL
studiate.doc care se va salva n directorul My Documents / Baze de date / Lucrarea 3.
Observa ie important ! Toate expresiile SQL care vor fi n fi ierul Word se presupune c au
fost studiate i n elese, studentul putnd oricnd s dea explica ii n leg tur cu ele, altfel va
suporta consecin ele. Aceste expresii vor vor fi testate n lucrarea nr. 4, pe viu, ntr-o baz de
date real .

26

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Lucrarea nr. 4. Studiu de caz: Baza de date Biblioteca


Aceast lucrare de laborator const n implementarea n Access a bazei de date Biblioteca pe care a i
proiectat-o n lucrarea nr. 2. Acum ve i folosi cuno tin ele acumulate despre bazele de date ntr-o
aplica ie concret , folosind programul Access.

Considera ii generale despre programul Access


Interfa a programului ACCESS
Pentru a lucra cu orice aplica ie informatic , primul lucru pe care trebuie s -l facem este s -i
cunoa tem interfa a de pornire. Pentru ACCESS interfa a de pornire apare dup lansarea
acestuia cu metoda general Start / Programs / Microsoft Access. Ve i g si repede programul
observnd c iconi a sa con ine mic cheie de yal . Toate capturile i descrierile se refer la
versiunea Access 2003. Dac ave i alt versiune trebuie s ine i cont de diferen ele care ar
putea apare, care nu sunt, oricum, esen iale.
Spre deosebire de alte programe Microsoft, programul ACCESS ncepe cu o caset de dialog
n care vi se cere numele i s alege i directorul bazei de date pe care dori i s o deschide i,
chiar dac este una nou (Blank Database). Dup ce a i dat numele bazei de date noi, numit
aici db1, va apare interfa a din figura 4.1.

Fig. 4.1. Interfa a de pornire Access (fereastra Database)

Dup cum se vede, o baz de date ACCESS poate fi definit ca o colec ie de obiecte:
Tabele (tables)
Cereri de interogare (queries)
Formulare (forms)
27

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Rapoarte (reports)
Pagini Web (pages)
Comenzi macro (macros)
Module (modules)

n continuare vor fi prezentate, pe scurt, aceste obiecte, urmnd s fie reluate atunci cnd le
vom folosi efectiv.
Tabele (tables) sunt obiecte definite de utilizator n care sunt stocate datele. Sunt obi nuitele
tabele ale bazelor de date.
Formulare (forms) sunt obiecte care permit introducerea datelor, afi area acestora sau
controlul ntregii aplica ii. Acestea v permit s face i aplica ii performante chiar dac sunte i
un ncep tor n baze de date.
Cereri de interogare (queries) sunt obiecte care permit vizualizarea informa iilor ob inute
prin prelucrarea datelor din una sau mai multe tabele i/sau alte cereri de interogare. Aici ve i
folosi din plin cuno tin ele dobndite despre limbajul SQL.
Rapoarte (reports) sunt obiecte care permit formatarea i tip rirea informa iilor ob inute n
urma consult rii bazei de date, sub form de documente pe hrtie.
Pagini Web (pages) reprezint un obiect care include un fi ier HTML i alte fi iere suport n
vederea furniz rii accesului la date prin intermediul Internet-ului.
Comenzi macro (macros) reprezint un obiect care con ine o defini ie structurat a uneia sau
mai multor ac iuni pe care ACCESS le realizeaz ca un r spuns la un anumit eveniment.
Module (modules) reprezint un obiect care con ine proceduri definite de utilizator, scrise n
limbajul Visual Basic. Iat o ocazie de a v etala cuno tin ele de Visual Basic.
Pe lng obiectele prezentate, pe interfa a de pornire, mai exist cteva butoane (Open,
Design, New, un buton de tergere i cteva de afi are a obiectelor) a c ror n elegere i rol
este u or de dedus, de aceea nu vor mai fi prezentate.
Dup cum spuneam, ACCESS-ul are un instrument numit wizard care v va ajuta s construi i
mai u or tabele, formulare sau interog ri, dar un singur lucru nu poate face: s v suplineasc
lipsa cuno tin elor dobndite n capitolele precedente. Astfel, dac nu a i n eles mecanismul
leg turilor dintre tabele, e pu in probabil c ve i ajunge la rezultate mul umitoare, chiar dac
sunte i monitoriza i ndeaproape de instrumentul wizard.
Crearea tabelelor
nainte de a ncepe s crea i tabele, este de la sine n eles c ave i deja un proiect de baz de
date, sau dac sunte i la nceput de studiu, m car o diagram de rela ii i structurile tabelelor.
Spuneam la nceputul acestui curs, ct de important e s ave i un proiect corect de baz de
date, pentru a nu avea probleme la faza de implementare.
Crearea structurii tabelelor se poate face n trei moduri:
Utiliznd fereastra de proiectare (Create table in design view);
Utiliznd instrumentul Wizard (Create table by using wizard);
Prin introducerea datelor (Create table by entering data).
28

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Consider c modul cel mai eficient de creare a tabelelor, care se potrive te utilizatorilor
romni, l reprezint primul mod (Create table in design view), motiv pentru care va fi
prezentat numai acesta. Pentru a v satisface curiozitatea nu ave i dect s le ncerca i pe
celelalte dou , pentru a ajunge la o concluzie.
Revenind la primul mod de creare a unui tabel, da i un dublu clic pe Create table in design
view i pe ecran va apare fereastra Table din figura 4.2.

Fig. 4.2. Fereastra Table

n elegerea acestei ferestre nu e grea: sunte i invita i s da i numele cmpurilor (Field Name),
s alege i din combobox tipul de dat pentru cmpul respectiv (Data Type) i s introduce i o
scurt descriere, acolo unde este cazul, despre ce va con ine acel cmp (Description). Pentru
alegerea tipului de dat , revede i paragraful Anatomia unei specifica ii de cmp din capitolul 3
al cursului de baze de date.
n toolbar-ul de sub meniul din figura 4.2, exist mai multe butoane, unele cunoscute din alte
aplica ii Windows. Exist un buton (cel cu o chei ) pe care nu l-a i mai ntlnit pn acum.
Acest buton v ajut s stabili i cheia principal a tabelului pentru cmpul curent (cel cu
s geata din stnga), printr-un simplu clic pe el.
n func ie de tipul de dat ales pentru cmp, n partea de jos apare un subtabel n care pute i
seta propriet ile cmpului curent. Aceste propriet i sunt adaptate tipului de dat : num r,
text, data calendaristic etc. S lu m pe rnd aceste propriet i, avnd ca reper tipul de dat
numeric:
Field Size este dimensiunea cmpului. Executarea unui clic pe s geata derulant va deschide
o list de op iuni privind dimensiunea cmpului.
Format este formatul sub care se prezint valoarea introdus n cmp. Executarea unui clic pe
s geata derulant va deschide o list de op iuni privind formatul cmpului.
Decimal Places este proprietatea care stabile te num rul de zecimale ce pot fi atribuite
cmpului. Se poate alege un num r ntre 0 i 15, sau Auto pentru determinarea automat a
num rului de zecimale.
Input Mask reprezint impunerea unui format de introducere pentru toate datele acelui
cmp. Formatul de introducere are o mare importan n cadrul cmpurilor ce con in date de
tip text sau dat calendaristic .

29

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Caption este eticheta pentru specificarea unui nume atribuit cmpului, n cazul n care acesta
este utilizat n cadrul formularelor sau cnd tabelul respectiv este afi at.
Default Value este o valoare care este atribuit automat, n momentul cnd utilizatorul nu
introduce nici o valoare n acel cmp.
Validation Rule este criteriul care va fi verificat nainte de validarea valorii introduse n acel
cmp. Criteriul este introdus sub form de expresii care folosesc:
Operatorii: =, +, -, *, /, <, >, <=, >=, AND, OR, BETWEEN, IN, IS NULL;
Identificatorii se dau n paranteze drepte [];
Func ii;
Constante;
Validation Text reprezint textul care va ap rea pe bara de mesaje n cazul n care valoarea
introdus nu respect criteriul impus de regula de validare.
Required este proprietatea care stabile te dac introducerea unei valori n acel cmp este
obligatorie. Acest cmp poate avea una din valorile Yes / No.
Indexed este proprietatea care stabile te dac acel cmp are un index care accept valori
duplicat sau numai valori unice. Dac nu dorim un index pentru acel cmp se alege valoare
No.
Propriet ile descrise mai sus se refereau la tipul de cmp Numeric. Pentru alte tipuri de cmp
vor apare i propriet i noi (cele mai multe r mn). Astfel, datele de tip Text i Memo au o
proprietate numit Allow Zero Length, adic admiterea lungimii zero. Aceast proprietate are
valoarea Yes sau No.
O proprietate important pentru cmpul care con ine date de tip Autonumber este New Values.
Op iunile Increment sau Random permit stabilirea modului n care cmpului respectiv i se vor
acorda valori automat de c tre sistem.
Rela ii ntre tabele
Rela iile dintre tabele sunt lucruri cunoscute, deja, de c tre oricare dintre dumneavoastr , nu-i
a a? S vedem acum ce modalitate folose te ACCESS-ul pentru a face leg tura ntre tabele.
Din punct de vedere al momentului cre rii acestora, exist 2 tipuri de rela ii ntre tabelele unei
baze de date ACCESS i anume:
Rela ii permanente se stabilesc dup definirea tabelelor i sunt cerute de modelul
rela ional f cnd parte din structura bazei de date. Aceasta se realizeaz , de obicei,
prin coresponden a cheie primar cheie extern i sunt memorate n baza de date.
Rela ii temporare se stabilesc ntre tabele cu ocazia definirii unor cereri de
interogare, nefiind nregistrate n structura bazei de date.
Dup cum tim, ntre dou tabele ntre care exist o rela ie, datele nu pot fi introduse oricum.
De exemplu, dac ntr-o baz de date avem tabelele tblFacturiPrimite i tblFurnizori ntre
care exist o rela ie unu cu mai mul i, nu putem introduce date n tabelul tblFacturiPrimite
pn nu avem cel pu in un furnizor n tabelul tblFurnizori. Cum rezolv ACCESS-ul aceast
prevedere din proiectul bazei de date (tipul de participare)? Prin impunerea integrit ii
referen iale (Enforce Referential Integrity), dup cum se vede n figura 4.3.

30

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Fig. 4.3. Stabilirea


integrit ii
referen iale

n urma acestei set ri, s-a f cut o leg tur unu cu mai mul i ntre cele dou tabele, a c rei
reprezentare se vede n figura 4.4.

Fig. 4.4. Diagrama de rela ie


ntre cele 2 tabele, a a cum
apare n ACCESS.

Stabilirea leg turilor ntre tabele se face, fie n faza de creare a tabelului (folosind Lookup
Wizard), fie n fereastra Relationship care se afi eaz cu butonul
, din toolbar-ul din
fereastra Database. Printr-un clic pe acest buton se deschide tabela Relationship prezentat n
figura 4.4.
Dac nu apar toate tabelele n fereastra Relationship, cu un clic-dreapta n interiorul acesteia
apoi alegnd op iunea Show Table va fi afi at fereastra Show Table, cu care se pot ad uga i
celelalte tabele.
Leg tura dintre tabele se face tr gnd cu mouse-ul cmpul de leg tur dintr-un tabel peste
cmpul corespunz tor din cel lalt tabel. Dup ce s-a f cut leg tura, putem face un clic-dreapta
pe leg tur , apar 2 posibilita i: Edit Relationship... i se deschide caseta de dialog pentru
stabilirea integrit ii referen iale ar tat n figura 4.3, respectiv Delete cu care putem terge
leg tura. Cnd citi i aceast secven , este bine s o face i cu calculatorul n fa , deoarece
altfel, aceste manevre sunt greu de n eles. Dac ceva nu a i n eles, ntreba i profesorul care
v ndrum la laborator.
Crearea rela iilor cu Lookup Wizard...

Cea mai comod cale de a crea rela ii permanente ntre dou tabele este folosirea facilit ii
Lookup Wizard, pus la dispozi ia noastr de programul ACCESS. Aceast metod const n
legarea tabelelor n faza de proiectare prin intermediul unei chei primare i a unei chei
externe. Prima dat de proiecteaz tabelul din partea unu a rela iei unu cu mai mul i. La cel
de-al doilea tabel, cnd se define te cmpul de leg tur , pentru tipul de dat (Data Type) se
alege op iunea Lookup Wizard... (ultima dintre op iuni). n urma acestei manevre se deschide
caseta de dialog din figura 4.6.

31

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Fig. 4.6. Primul pas al


procedurii Lookup Wizard

Se alege prima op iune, cea care ne spune c vom lega cmpul nostru cu un alt cmp dintr-un
tabel sau o interogare, I want the lookup.... Merit explicat i op iunea a doua I will type in
the values that I want, care ne spune c putem lega acest cmp cu o list de valori introduse
de noi chiar n aceast faz . Aceast op iune este indicat s o folosi i cnd ave i un num r mic
de valori pe care poate s le ia un anumit cmp. ncerca i i aceast variant pentru a-i
n elege rolul.
Cu butonul Next se avanseaz n pasul urm tor cnd vi se cere s alege i, dintr-o list , tabelul
cu care va fi legat. Dup alegerea tabelului, ve i alege cheia primar i un alt cmp pentru a
identifica nregistrarea (acest lucru l ve i n elege cnd ve i introduce, efectiv, date n tabel).
Aceast manevr se vede n figura 4.7.

Fig. 4.7. Alegerea


cmpului de leg tur

n cazul nostru se vor selecta cmpurile TaraID i Denumire, care vor fi trecute n fereastra
din dreapta. Cu butonul Next se va trece la pasul urm tor (figura 4.8) care ne recomand s
face invizibil coloana cu cheia primar , pentru c la operare nu ne va ajuta cu nimic, fiind un
cod numeric f r semnifica ie pentru noi.

32

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Fig. 4.8. Recomandarea


pentru a face invizibil
cheia primar

Cu butonul Next se trece la pasul urm tor care v cere s stabili i numele cmpului care va
apare n rapoarte, de regul se las cel implicit, propus de calculator. Dup aceast manevr se
alege butonul Finish care ne va avertiza c o rela ie a fost creat i c ar trebui salvat . Dac
nu s-a gre it nimic, se apas butonul Next.
Fig. 4.9. Avertizarea de
salvare a rela iei create.

Pentru a verifica rela ia creat se apas butonul


, care va deschide foaia Relationships. Cu
un clic-dreapta pe linia rela iei o pute i edita sau terge. ncerca i aceast manevr pentru a
n elege ce se ntmpl .
Diferen a ntre cele dou tipuri de leg turi permanente, legarea prin metoda tragerii (drag
and drop) n fereastra Relationship i legarea prin metoda Lookup Wizard..., nu prea iese n
eviden dect la crearea formularelor de introducere a datelor. La prima metod Access-ul va
pune automat o caset de text (textBox) n care trebuie s introducem manual valori de la
tastatur , iar la a doua metod va apare n formular o caset combinat (comboBox), din care
putem alege elegant valoarea din lista afi at .
Dac a i reu it s n elege i aceste diferen e, nseamn c a i f cut un pas important spre a
putea crea aplica ii Access tot mai performante. Poate n acest moment nu sesiza i diferen ele
dintre cele dou metode, dar cu siguran , le ve i n elege atunci cnd ve i crea formulare,
pu in mai trziu.

Crearea tabelelor bazei de date Biblioteca


33

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Diagrama bazei de date este prezentat n figura 4.10.

Fig. 4.10. Diagrama bazei


de date Biblioteca

Structura i propriet ile cmpurile tabelelor bazei de date sunt prezentate n tabelul urm tor:
Tabel
tblAutori

tblEdituri

tblCarti

tblDomenii

tblImprumuturi

tblCititori

Cimp
AutorID
Nume
Prenume
Nationalitate
DataN
DataD
EdituraID
Denumire
Localitate
Tara
CarteID
AutorID
EdituraID
Denumire
DomeniuID
AnAparitie
Pagini
Valoare
Stoc
DomeniuID
Denumire
Explicatii
ImprumutID
CarteID
CititorID
DataImprumut
Perioada
DataRestituire
CititorID

Tip data
AutoNumber
Character(150)
Character(150)
Character(15)
Data/Time
Data/Time
AutoNumber
Character(150)
Character(150)
Character(50)
AutoNumber
Long Integer
Long Integer
Character(250)
Long Integer
Integer
Integer
Single
Integer
AutoNumber
Character(50)
Character(250)
AutoNumber
Long Integer
Long Integer
Data/Time
Integer
Data/Time
AutoNumber
34

Constringeri
Not Null
Not Null
Not Null

Observatii

zz-lll-aa
zz-lll-aa
Not Null
Not Null

Not Null
Not Null
Not Null
Not Null
Not Null

Not Null
Not Null
Not Null
Not Null
Not Null
zz-lll-aa
zz-lll-aa
Not Null

Baze de date ndrum tor de lucr ri de laborator

tblJudete

tblProfesii

Nume
Prenume
ProfesiaID
DataN
Adresa
Localitate
JudetID
Observatii
JudetID
Denumire
Abreviere
ProfesiaID
Denumire
Explicatii

Lucrarea nr.4

Character(150)
Character(150)
Long Integer
Data/Time
Character(150)
Character(150)
Long Integer
Character(150)
AutoNumber
Character(75)
Character(2)
AutoNumber
Character(75)
Character(200)

Not Null
Not Null
Not Null
zz-lll-aa

Not Null
Not Null
Not Null
Not Null
Not Null
Not Null

Dup crearea tabelelor, caseta Database arat ca n figura 4.11.

Fig. 4.11. Tabele bazei de


date Biblioteca

n continuarea acestei lucr ri de laborator, urmeaz s crea i formularele de introducere a


datelor, care se v d n figura 4.12. Mai nti vor fi create formularele de introducere a datelor.
Dup exemplele prezentate n curs pute i trece la crearea acestor formulare.

35

Fig. 4.12. Formularele bazei


de date Biblioteca

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Crearea formularelor pentru introducerea datelor


n figura 4.12 se v d formularele de introducere a datelor n tabele. Avnd n vedere rela iile
stabilite intre tabele, introducerea datelor nu poate fi f cut oricum. Astfel, nu putem
introduce o care dac numele autorului nu este n tabelul cu autori. Ca regul , n rela iile 1:N,
mai nti se vor introduce date n tabelul din partea unu a rela iei i numai apoi n tabelul
din partea mai mul i a rela iei.
Formularul frmIntroducereAutori.
Pentru crearea formularului, parcurgem pa ii urm tori:
1. n caseta de dialog Database, d m comanda Forms New AutoForm:Columnar(vezi figura
4.13).

Fig. 4.13. Alegerea tipului de


formular i a tabelului

Se alege tabelul tblAutori, care va fi completat de c tre viitorul formular. Se apas butonul
OK.

2. Va apare forma brut a formularului, a a cum apare n figura 4.14.

Fig. 4.14. Formularul brut


36

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Acest formular ar mai trebui pu in aranjat. De exemplu, pentru cmpul Nationalitate ar trebui
s avem un comboBox din care s alegem dintr-o list , nationalitatea autorului. Pentru
cmpurile cu date calendaristice DataN i DataD ar trebui s indic m sub ce form trebuie
introduse aceste date, stiut fiind c la acest tip de dat apar des probleme din cauza
introducerilor incorecte.
Modificarea formularului se poate face numai n modul Design view, care se ob ine ap snd
butonul

. Figura 4.15 arat cum trebuie s fie formularul n Design view.

Fig. 4.15. Formularul n


modul Design view

Pentru a transforma caseta de text Nationalitate, execut m clic-dreapta pe ea, alegem op iune
Change To, apoi op iunea Combo Box, dup care va trebui s introducem lista cu
na ionalit ile autorilor. Acest lucru se face prin completarea propriet ilor Row Source Type
(Value List) i Row Source (Romana; Maghiara; Straina), dup cum se poate vedea n figura
4.16.
De asemenea, s-au introdus 2 etichete (zz/lll/aa) care ne indic , cum s introducem data
calendaristic .
Pentru activarea tabelului cu propriet ile se apas butonul
sus.

37

din toolbar-ul din partea de

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Fig. 4.16. Atribuirea valorilor pentru propriet ile


Row Source Type i Row Source

3. Prin ap sarea butonului


, se iese din modul Design i se activeaz formularul care
trebuie s arate ca n figura 4.17.

Fig. 4.17. Forma final a


formularului

Formularul frmIntroducereCarti.
nainte de a ncepe crearea efectiv a formularului, trebuie s analiz m tabelul pe care l va
completa. Acesta are 3 cmpuri care trebuie completate cu chei externe: AutorID, EditurID i
DomeniuID. Aceste chei sunt valori de tip AutoNumber care sunt greu de folosit pentru c
trebuie, de exemplu, introdus un autor printr-un num r. Ar fi mult mai potrivit pentru operator
s aleag dintr-o list un nume de autor cu care e obi nuit i nu un cod numeric care nu i
sugereaz nimic. Este ceea ce ne propunem.
Pentru crearea acestui formular primii pa i sunt identici cu cel precedent, cu observa ia c
vom alege acum tabelul tblCarti.
Trecem n modul Design view, pentru a putea efectua modific rile n formular. n figura 4.18,
pute i vedea cum arat formularul nainte de setarea propriet ilor. Se observ c acesta are ca
surs tabelul tblCarti.

Fig. 4.18. Formularul n


stare brut

38

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

n aceast stare, pe baza leg turilor dintre tabele, n casetele comboBox vor apare listele cu
cheile primare ale celor 3 cmpuri implicate. Pentru ca n aceste casete s apar denumirile,
cu care suntem obi nui i, trebuie s modific m unele propriet i ale celor 3 comboBox-uri,
care se g sesc n categoria Format (vezi primul buton).
Setarea surselor se pot deduce clar din figura 4.19.

Fig. 4.19. Setarea propriet ilor legate de sursa nregistr rilor

Observa i c sursele pentru cele 3 cmpuri de chei externe sunt ni te expresii SQL simple:
AutorID:

SELECT tblAutori.AutorID, tblAutori.Prenume+" "+tblAutori.Nume AS Expr1 FROM tblAutori ORDER


BY tblAutori.Nume;

EdituraID:

SELECT tblEdituri.EdituraID, tblEdituri.Denumire FROM tblEdituri ORDER BY Denumire;

DomeniuID:

SELECT tblDomenii.DomeniuID, tblDomenii.Denumire FROM tblDomenii ORDER BY Denumire;


39

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Fiecare din aceste expresii au ca rezultat cte 2 cmpuri, iar pe noi ne intereseaz numai al
doilea care ne spune ceva concret. Trebuie s afi m, deci, numai acest cmp. Pentru aceasta
trebuie s set m, din tab-ul Format, propriet ile Column Count(2) i Column Width(0;1.2),
care ne spun c avem 2 coloane, care au l imea de 0, respectiv 1.2 inch. Asta nseamn c
prima coloan nu se vede, iar a doua are 1.2 inch l ime.
Setarea acestor propriet i se vede n figura 4.20.

Fig. 4.20. Setarea propriet ilor Column Count i


Column Widths

Prin ap sarea butonului


s arate ca n figura 4.21.

, se iese din modul Design i se activeaz formularul care trebuie

Fig. 4.21. Forma final a formularului

40

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Dup modelele prezentate, crea i i celelalte formulare de introducere a datelor, prezentate


mai jos n figura 4.22.

Fig. 4.22. Formulare care trebuie create

41

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Testarea expresiilor SQL de la lucrarea 3


Pentru a scrie expresiile SQL n Access trebuie s deschidem fereastra corespunz toare. Ve i
proceda astfel:
n fereastra Database se apas butonul Queries apoi se d dublu-click pe op iunea
Create query in Design view .
Se va deschide fereastra Show table unde se apas butonul Close.
n partea stng a Toolbar-ului superior, va apare butonul
se deschide fereastra din figura 4.23.

, prin ap sarea c ruia

Fig. 4.23. Fereastra


pentru scrierea
expresiilor SQL

Observa i c n mod automat apare scris instruc iunea SELECT; care se termin cu punct
i virgul , care semnific terminarea expresiei SQL. n aceast fereastr se scriu de mn
expresiile SQL. Nu uita i de simbolul ; punct i virgul de la sfr itul expresiei.
Pentru verificarea expresiei SQL introduse folosi i butonul Run SQL localizat conform figurii
4.24.

Fig. 4. 24. Butonul Run SQL

Dac totul a decurs bine, se va afi a un tabel cu datele generate de interogare.


Desf

urarea lucr rii

Deschide i o baz de date nou , cu numele Expresii_SQL. mdb, n cadrul c reia se vor face
toate test rile.
La lucrarea nr. 3 a i salvat n fi ierul Expresii SQL studiate.txt mai multe expresii SQL pe
care acum o s le relua i i o s le verifica i n cadrul programului Access. Expresiile SQL se
pot copia direct din fi ier. Rezultatele pe care le ve i ob ine vor trebui s corespund cu cele
de la lucrarea nr. 3.
Va trebui s crea i i s umple i cu date tabelele, a a cum sunt prezentate n exemplele de la
lucrarea nr. 3.

Tabelele care vor trebui create sunt, tblStudenti i tblEvidenta care sunt ar tate mai jos:
42

Baze de date ndrum tor de lucr ri de laborator

tblStudenti
StudID
1
2
3
4
5
6
7
8
9
10

Nume
Bogdan
Meruta
Pop
Bucur
Chirila
Cotirla
Cotoara
Cozma
Damian
Farcas

Init
P.
I.
T.
P.
I.
L.
G.
D.
N.
I.

Prenume
Mircea Florin
Cosmin
Marius Traian
Mihaela
Laura
Raluca Adina
Ovidiu
Dumitru
Daniel
Calin Florin

Lucrarea nr.4
Sectia
IEI
IEI
IEI
IEI
IEI
TCM
TCM
TCM
MEC
MEC

An
1
3
2
2
3
1
1
2
4
4

Grupa
1311
1332
1321
1321
1331
1111
1111
1121
1241
1241

Stare
Bugetar
Bugetar
Bugetar
Bugetar
Bugetar
Bugetar
Bugetar
Bugetar
Bugetar
Taxa

tblEvidenta

Cod
1001
1023
1231
1089
1904

Denumire
Bujie DK1
Acumulator 56A
Parbriz VW
Antigel -30
Ulei PKT 1

Furnizor
Sinterom SA
Rombat SA
Cobra SRL
Promaxim SRL
Calota SRL

PU
12
124
512
5.2
6.4

Cantitate
30
25
12
50
60

Valoare
360
3100
6144
26
384

Tipul de dat
pentru fiecare cmp l ve i deduce din tabelele afi ate. Pentru a ob ine rezultatele de la
lucrarea 3, va trebui s introduce i n tabele acelea i date.
Fiecare expresie SQL va fi salvat cu un nume sugestiv.

43

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Crearea interog rilor


Vederile, a a cum le-am nv at la curs, se numesc n Access, interog ri (queries). Ne
reamintim c vederile sunt ni te tabele virtuale, aduc ele nu exist n realitate ci sunt
generate de c tre programul Access, atunci cnd avem nevoie de ele. Aceste tabele virtuale
sunt completate cu date din unul sau mai multe tabele.
Vederile sunt, putem spune, rezultatul sau scopul pentru care am muncit s cre m o baz de
date. Acestea, n combina ie cu formularele i rapoartele stabilesc ct de performant e
aplica ia de baz de date pe care a i creat-o sau o folosi i.
n cazul aplica iei noastre, Biblioteca.mdb, vederile sunt sugerate de obiectivele misiunii.
Sigur c n faza de proiectare, nu pot fi identificate toate vederile, dar la o baz de date bine
proiectat , necesitatea unei vederi poate fi rezolvat oricnd.
n continuare vom ncerca s cre m cteva vederi, folosind limbajul SQL.
Vederea C r ile din bibiotec

A i putea spune, pe bun dreptate, c toate c r ile se afl n tabelul tblCarti, deci n-ar mai fi
nevoie de o vedere. ncerca i s afi a i acest tabel (un dublu clic pe numele lui). Ve i observa
c la autori, edituri i domenii avem ni te coduri care nu ne spun mare lucru, de fapt vede i
cheile primare ale acestora. O astfel de informa ie nu este de mare ajutor, de aceea va trebui s
crea i o vedere din care s se vad denumirile explicite, pentru autori, edituri i domenii, pe
baza leg turilor dintre tabele.
Pentru a scrie expresiile SQL trebuie s deschidem fereastra corespunz toare. Ve i proceda
astfel:
n fereastra Database se apas butonul Queries apoi se d dublu-click pe op iunea
Create query in Design view .
Se va deschide fereastra Show table unde se apas butonul Close.
n partea stng a Toolbar-ului superior, va apare butonul
se deschide fereastra din figura 4.23.

, prin ap sarea c ruia

Fig. 4.23. Fereastra


pentru scrierea
expresiilor SQL

Observa i c n mod automat apare scris instruc iunea SELECT; care se termin cu punct
i virgul , care semnific terminarea expresiei SQL. n aceast fereastr se scriu de mn
expresiile SQL. Nu uita i de simbolul ; punct i virgul de la sfr itul expresiei.
Pentru verificarea expresiei SQL introduse folosi i butonul Run SQL localizat conform figurii
4.24.

44

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Fig. 4. 24. Butonul Run SQL

Dac totul a decurs bine, se va afi a un tabel cu datele generate de interogare.


n cazul nostru expresia SQL care trebuie introdus , se poate vedea n figura 4.25.

Fig. 4.25. Expresia SQL pentru


afi area c r ilor din bibliotec

Iat expresia SQL, scris mai clar:


SELECT tblAutori.Prenume + " " + tblAutori.Nume AS Autor, tblCarti.Denumire, tblEdituri.Denumire AS
Editura, tblCarti.AnAparitie AS Aparut, tblCarti.Pagini, tblCarti.Valoare, tblCarti.Stoc
FROM tblCarti, tblAutori, tblEdituri
WHERE tblCarti.AutorID=tblAutori.AutorID AND tblCarti.EdituraID=tblEdituri.EdituraID
ORDER BY tblCarti.Denumire;

Lansa i aceast comand SQL cu butonul Run SQL, iar dac nu a i f cut vreo gre eal ar
trebui s ob ine i ceea ce se vede n figura 4.26.

Fig. 4.26. Interogarea cu c r ile din


bibliotec

Din aceast vedere se pot vedea clar informa iile despre c r ile din biblioteca noastr .
Binen eles c voi o s ave i afi ate c r ile pe care le-a i introdus n baza de date pe care a i
creat-o.

45

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Vederea C r ile mprumutate

Expresia SQL este:


SELECT tblCarti.Denumire AS [Denumirea cartii], tblCititori.Prenume+" "+tblCititori.Nume AS Cititor,
tblImprumuturi.DataImprumut, tblImprumuturi.Perioada, tblImprumuturi.DataRestituire
FROM tblCarti, tblAutori, tblEdituri, tblImprumuturi, tblCititori
WHERE tblImprumuturi.CarteID=tblCarti.CarteID AND tblCarti.EdituraID=tblEdituri.EdituraID AND
tblCarti.AutorID=tblAutori.AutorID AND tblImprumuturi.CititorID=tblCititori.CititorID
ORDER BY tblCarti.Denumire;

Rezultatul este prezentat n figura 4.27.

Fig. 4.27. Rezultatul interog rii qryImprumuturi

Vederea Situa ie cititor

Una dintre cele mai importante informa ii pentru bibliotecari este situa ia de mprumuturi a
unui cititor, adic ce c r i i cnd a scos cititorul respectiv, eventual cnd le-a restituit. O
astfel de interogare, care este o interogare cu parametrii, are expresia SQL de mai jos:
SELECT tblCititori.Nume + " " + tblCititori.Prenume AS Cititor, tblCarti.Denumire AS [Denumirea cartii],
tblImprumuturi.DataImprumut, tblImprumuturi.Perioada, tblImprumuturi.DataRestituire
FROM tblImprumuturi, tblCarti, tblCititori
WHERE tblImprumuturi.CititorID=tblCititori.CititorID AND tblImprumuturi.CarteID=tblCarti.CarteID AND
tblImprumuturi.CititorID=[Introduceti ID-ul cititorului];

Observa i cum a fost introdus expresia pentru cererea parametrului (ultimul rnd). Cererea
parametrului a fost introdus ntre paranteze drepte.
Situa ia cititorului Pop Mircea cu ID-ul 4, este prezentat n figura 4.28.

Fig. 4.28. Situa ia unui anumit cititor

Pentru a lista situa ia unui cititor trebuie numai s re ine i ID-ul acestuia care se poate afla din
tabelul tblCititori.

46

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Pe baza acestor exemple, ncerca i s identifica i i alte vederi pe care le-a i putea crea.
Sugestii: c r ile unei anumite edituri, ce c r i au scos pensionarii, elevii, sau studen ii etc.

Crearea formularelor pentru vizualizarea informa iilor


Dup cum tim, formularele se pot folosi att pentru introducerea datelor n tabelele bazei de
date, ct i n vizualizarea informa iilor din baza de date. Formularele de introducere de date
sunt mai u or de creat, deoarece se bazeaz , n general, pe un tabel, eventual pe cte o
interogare simpl ata at de vreun comboBox. Formularele de vizualizare sunt mai greu de
f cut, deoarece se bazeaz pe interog ri uneori complicate, iar uneori trebuie scris i ceva cod
n VBA.
Acest tip de formulare con in, pe lng cmpurile provenite din tabele i interog ri, obiecte
suplimentare care le fac mai performante, cum ar fi butoane de comand , etichete etc., numite
generic, controale. Aceste controale se g sesc n toolbar-ul Toolbox, prezentat n figura 4.29.

Fig. 4.29. Bara de instrumente Toolbox

n tabelul urm tor vor fi descrise aceste controale.


Numele controlului
Select Objects (indicator)

Control Wizards
Label
Text Box
Option Group

Toggle Button

Descriere

Deselecteaz controlul selectat anterior i restabile te func ia


normal pentru indicatorul mouse-ului. Butonul Pointer este
controlul activat implicit atunci cnd este afi at bara de
instrumente Toolbox.
Activeaz /Dezactiveaz programele Control Wizards. Aceste
utilitare ne ajut s gener m obiecte de control complexe, cum ar
fi grupurile de op iune, casetele de liste i casetele combinate.
Con ine orice text fix, folosit pentru diferite descrieri sau nota ii de
pe formular.
Caset n care se afi eaz sau din care se citesc date de tip text.
Este acela i obiect ca cel studiat n Visual Basic.
Caset dreptunghiular de dimensiune variabil , n care putem
plasa, butoane comutatoare, butoane de op iune sau casete de
validare. Numai un singur obiect de control din interiorul acestei
casete poate fi selectat la un moment dat. Cnd execut m click pe
un obiect din grup obiectul selectat anterior va fi deselectat. Deci,
casetele de validare nu se comport ca n Visual Basic, unde
puteau fi selectate, nici una, una sau mai multe.
Buton care, atunci cnd e selectat, comut din starea ON n starea
OFF. Starea ON corespunde valorii Yes (-1), iar starea OFF
corespunde valorii No (0). n cadrul unui grup de op iune,
ac ionarea unui buton comutator dezactiveaz butonul comutator
ac ionat anterior. Putem utiliza aceste butoane pentru a permite
47

Baze de date ndrum tor de lucr ri de laborator

Option Button
Check Box
Combo Box
List Box
Command Button
Image
Unbound Object Frame

Bound Object Frame

Page Break

Tab Control
Subform/Subreport
Line
Rectangle
More Controls

Lucrarea nr.4

utilizatorului s selecteze o valoare dintr-un set.


Buton rotund care se comport identic cu un buton comutator.
Butoanele de acest tip sunt utilizate cel mai des n grupurile de
op iune pentru selectarea unei valori dintr-un set de op iuni.
Caset de validare care, atunci cnd este selectat , comut ntre
starea ON i starea OFF. Casetele de validare multiple trebuie
plasate n afara grupurilor de op iune astfel nct s putem selecta
mai multe op iuni simultan.
Caset combinat format dintr-o caset de text editabil , n care
putem introduce o valoare i o list din care putem alege o valoare.
Caset care con ine o list derulant de op iuni, din care putem
selecta o valoare.
Buton de comand care declan eaz execu ia unei comenzi Macro
sau unei proceduri VBA de tratare a evenimentelor.
Afi eaz o imagine static pe un formular sau pe un raport.
Imaginea poate fi modificat dup ce a fost inserat n formular.
Include n formular sau raport un obiect OLE creat cu o aplica ie
server OLE, cum ar fi Microsoft Graph sau Microsoft Draw.
Obiectul Custom Control este o versiune special de obiect
neasociat, care con ine obiecte OLE Control.
Afi eaz con inutul unui cmp OLE al unei nregistr ri, dac
acesta con ine un obiect grafic. Dac obiectul inclus n cmp nu
este grafic, apare pictograma ce reprezint obiectul, cum ar fi
pictograma op iunii Sound Recorder pentru un fi ier .WAV legat
sau nglobat. Obiectele OLE Control au date asociate (data-bound
OLE Control) stocate ntr-o versiune special de obiect asociat.
Determin imprimanta s treac la o pagin nou , ncepnd din
pozi ia delimitatorului de pagin din formular sau raport. n modul
Run, delimitatoarele de pagin nu sunt afi ate pe formular sau
raport.
Acest control se folose te, ntr-un formular, n vederea cre rii unei
serii de pagini ce pot fi schimbate. Fiecare pagin va putea con ine
alte obiecte de control.
Ata eaz unui formular sau raport, un subformular, respectiv
subraport. Ele trebuie create nainte de folosirea acestui control.
Creeaz o linie dreapt pe care putem ulterior s o modific m sau
s -i schimb m pozi ia.
Creeaz dreptunghi pe care putem ulterior s -l redimension m sau
s -i schimb m pozi ia.
Permite introducerea de obiecte de control ActiveX instalate n
sistem.

n cele ce urmeaz vom ncerca mpreun s cre m formulare care nu sunt folosite pentru
introducerea datelor, ci pentru a afi a informa ii din baza de date. Aceste formulare se bazeaz
pe interog ri, a a c vom folosi interog rile pe care le-am creat anterior (vederile c r ile din
bibliotec , mprumuturi, situa ia mprumuturilor unui cititor).

Crearea formularului de vizualizare a c r ilor din bibliotec


48

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Acest formular se bazeaz pe interogarea qryCartile din bibioteca care o avem deja de la
laboratoarele precedente. Din caseta de dialog Database, pornim s cre m un nou formular cu
comanda cunoscut : Forms New Design View, care va deschide caseta de dialog din figura
4.30.

Obiectul Subform

Fig. 4.30. Formularul gol

De aici trebuie s pornim pentru construc ia formularului nostru, urmnd s -l mpodobim cu


cele necesare. Observ m c formularul are numai sec iune Detail, a a c va trebui s -i
introducem i sec iunile Form Header i Form Footer cu ajutorul comenzii View Form
Header/Footer.
Introducem n partea de Header cele dou etichete, Biblioteca Jude ean Mure i Lista
c r ilor din bibliotec , cu propriet ile pe care le deduce i din figura 4.31.
n continuare trebuie s introducem un subformular care con ine detaliile formularului. n
acest sens, n partea de Detail introduce i obiectul Subform, care este un dreptunghi
dimensionat la ochi n prim faz .
Seta i urm toarele propriet i ale obiectului Subform pe care tocmai l-a i introdus:
Name = Detalii
Source Object = qryCartile din biblioteca
Pentru formularul mare seta i propriet ile:
Name = frmCartile din biblioteca
Navigation buttons = No
n aceast faz formularul la care lucra i trebuie s fie ca n figura 4.31. El va primi numele
frmCartile din bibliotec .

49

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Fig. 4.31. Formularul dup introducerea


etichetelor i a subformularului

Mai mult ca sigur, nu a i nimerit cea mai bun dimensiune i pozi ie a controalelor de pe
interfa , de aceea trebuie s interveni i pentru a-i da formularului un aspect pl cut. Acest
lucru se face prin modificarea propriet ilor i a pozi iilor controalelor.
Un aspect care ar putea fi nepl cut, este c nu se vad toate coloanele iar pentru vizualizarea
lor e nevoie de scrollbar. ncerca i, cu ajutorul mouse-ului s modifica i l imile coloanelor, n
a a fel ca acestea s se vad toate n formular. Pentru aceasta va trebui s face i de mai multe
trecerea din modul Design n modul Run al formularului, pn ob ine i imaginea din figura
4.32.

Fig. 4.32. Forma final a formularului

Crearea formularului de vizualizare a situa iei unui cititor


50

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Acest formular o s fie mai complicat, n sensul c va avea i ceva cod scris n VBA, care nu
face altceva dect s faciliteze alegerea numelui cititorului dintr-un comboBox i afi area
situa iei acestuia, ca r spuns la un eveniment.
Acest formular se bazeaz pe interogarea qrySituatie-cititor, pe care a i creat-o la interog ri.
Trebuie s avem n vedere c aceasta este o interogare cu parametri, deci pentru a func iona
trebuie s introducem ca parametru ID-ul cititorului.
Vom parcurge mai repede etapele cunoscute. ncepem crearea unui tabel prin metoda Design
View, f r s alegem vreun tabel ata at. n acest formular gol vom introduce un obiect
Subform care are proprietatea Source la valoarea qrySituatie-cititor, adic interogarea pe care
o avem deja. Vom introduce i sec iunea Form Header/Footer. n urma acestor ac iuni vom
avea imaginea din figura 4.33.

Fig. 4.33. Formularul cu


subformularul inserat

n cele ce urmeaz vom executa urm toarele ac iuni:

Introducem n antet (Header) o caset


con ine to i cititorii.

Cnd alegem un cititor, va trebui ca prin cod s modific m expresia SQL a


interog rii.

Scoatem butoanele de navigare de la formular punnd proprietatea Navigation


Buttons pe No.

combo, numit

cboCititori, care va

Sursa pentru cboCititori (proprietatea Row Source) va fi o interogare SQL:


SELECT CititorID, Nume + " " + Prenume AS Cititor FROM tblCititori ORDER BY Nume;

Urmeaz s set m propriet ile obiectului cboCititori: Column Count, Column Widts, Row
Source i On Click, dup cum se poate deduce din figura 4.34.

51

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Fif. 4.34. Setarea propriet ilor


obiectului cboCititori

Valorile care se atribuie acestor propriet i sunt:


Column Count: 2;
Column Widts: 0; 1 (prima coloana are l imea 0, a doua 1 inch);
Row Source : SELECT CititorID, Nume +" "+ Prenume AS Cititor FROM tblCititori ORDER BY Nume;
On Click: [Event procedure]
Aceste valori ale propriet ilor ne spun c obiectul comboBox cboCititori, are 2 coloane,
dintre care prima nu se vede, iar a 2-a are l imea de 1 inch, are ca surs cmpul calculat
Cititor, iar la evenimentul clic se declan eaz o procedur .
Pentru a introduce procedura, se apas butonul
codului procedurii, figura 4.35.

, care deschide pagina pentru introducerea

Fig. 4.35. Zona n care se introduce codul


surs .

Dac analiza i imaginea din figura 4.35, v aminti i de programarea n Visual Basic. Acest
lucru nu e de mirare, avnd n vedere faptul c VBA (Visual Basic for Applications) este tot
limbajul Visual Basic care are n plus unele obiecte specifice Access-ului.
52

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Iat codul care trebuie introdus n aceast procedur :


Private Sub cboCititor_Click()
'Se creaza expresia SQL pentru subformularul SubFormImprumuturiCititor
If fraOptiuni.Value = 1 Then
SubFormImprumuturiCititor.Form.RecordSource = "SELECT tblCarti.Denumire, tblAutori.Prenume + ' ' +
tblAutori.Nume AS Autor," & _
"tblImprumuturi.DataImprumut, tblImprumuturi.Perioada, tblImprumuturi.DataRestituire " & _
"FROM tblCarti, tblAutori, tblImprumuturi " & _
"WHERE tblImprumuturi.CarteID=tblCarti.CarteID And tblCarti.AutorID=tblAutori.AutorID " & _
"AND tblImprumuturi.CititorID=" & cboCititor.Value & ";"
Else
SubFormImprumuturiCititor.Form.RecordSource = "SELECT tblCarti.Denumire, tblAutori.Prenume + ' ' +
tblAutori.Nume AS Autor," & _
"tblImprumuturi.DataImprumut, tblImprumuturi.Perioada, tblImprumuturi.DataRestituire " & _
"FROM tblCarti, tblAutori, tblImprumuturi " & _
"WHERE tblImprumuturi.CarteID=tblCarti.CarteID And tblCarti.AutorID=tblAutori.AutorID " & _
"AND tblImprumuturi.DataRestituire IS Null " & _
"AND tblImprumuturi.CititorID=" & cboCititor.Value & ";"
End If
'Se schimba caption-ul, dupa numele cititorului
lblImprumut.Caption = "Imprumuturi: " & cboCititor.Column(1)
End Sub

Observa i c ntreaga procedur nu face altceva dect s modifice o proprietatea


RecordSource a obiectului SubFormImprumuturiCititori. Re ine i, deci aceast idee.
Observa i, de asemenea, cum se construie te o expresie SQL prin cod Visual Basic, respectiv
cum se trece pe un rnd nou, f r a afecta continuitatea expresiei, folosind combina ia de
caractere (& _). ntre cele 2 semne este un spa iu.
Pe lng caseta combinat cboCititori, n zona Header a formularului creat s-a introdus un
frame cu 2 butoane de op iune cu ajutorul c rora, formularul afi eaz toate c r ile
mprumutate de un cititor, sau numai cele nerestituite. ncerca i s n elegi func ionarea
acestei proceduri, care poate fi un bun exemplu pentru aplica iile pe care o s le face i n
viitor.
Aici se impun cteva considerente despre obiectul frame, numit aici fraOptiuni. Se tie de la
Visual Basic c ntr-un frame se pot grupa butoane op iune i casete de validare, care pot fi
testate n program. Deci obiectul frame nu era folosit n cod. Casetele de validare i butoanele
de op iune aveau numai 2 valori: TRUE i FALSE.
n VBA din Access, lucrurile stau pu in altfel. Putem grupa i aici casetele de validare i
butoanele de op iune, dar aceste obiecte au o proprietate Option Value care se poate stabili la
53

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

crearea acestor obiecte, de regul valori ntregi (1, 2,...). Obiectul care grupeaz aceste obiecte
se nume te acum Option Group. Valoarea acestei propriet i, pentru obiectul selectat, va fi i
valoarea obiectului Option Group. De remarcat faptul c numai un obiect din frame-ul Option
Group poate fi activat.
Prin urmare, nu este logic s grup m casete de validare n frame-uri pentru c ele se comport
ca i butoanele de op iune, deci ar fi indicat s le folosim pe acestea. Ne reamintim c
diferen a major dintre butoanele de op iune i casetele de validare este c n cazul primelor
poate fi activ numai un buton, iar n cazul celorlalte pot fi setate, nici una, una, mai multe sau
toate.
Un mare avantaj al folosirii grupurilor de op iune este c , oricte op iuni am avea nu trebuie
s folosim de attea ori instruc inea IF ... THEN, cum era n Visual Basic-ul clasic. Aici
putem folosi instruc iunea de condi ionare multipl SELECT CASE.
Forma final a formularului creat este ar tat n figura 4.36.

Fig. 4.36. Forma final a formularului

Observa i c exist eticheta lblImprumut a c rei proprietate Caption se schimb n func ie de


cititorul a c rei situa ie se afi eaz , dup cum se poate vedea din ultima linie de cod.

54

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Rapoartele bazei de date Biblioteca


Dup cum ti i, rapoartele nu sunt altceva dect ni te formulare cu informa ii extrase din baza
de date, care se tip resc pe hrtie i sunt folosite ca documente care se pot pune n dosare sau
se arhiveaz . Tehnica de lucru este asem n toare cu cea de la formulare. Ca i formularele,
rapoartele au o surs de date care poate fi un tabel sau o interogare.
Primul lucru pe care trebuie s -l l murim este s afl m de ce rapoarte avem nevoie. Astfel, ne
propunem s tip rim, din baza de date, toate c r ile existente i s le grup m pe edituri i s
afi m i valoarea c r ilor de la fiecare editur .
Iat pa ii care trebuie parcur i:
1. Da i comanda Reports New Report Wizard. Alege i numele interog rii qryCartile din
biblioteca, care are urm toarea expresie SQL:
SELECT tblAutori.Prenume+" "+tblAutori.Nume AS Autor, tblCarti.Denumire, tblEdituri.Denumire AS
Editura, tblCarti.AnAparitie AS Aparut, tblCarti.Pagini, tblCarti.Valoare, tblCarti.Stoc
FROM tblCarti, tblAutori, tblEdituri
WHERE tblCarti.AutorID=tblAutori.AutorID AND tblCarti.EdituraID=tblEdituri.EdituraID
ORDER BY tblCarti.Denumire;

Deci este important s avem sursa de date a raportului, fie c este un tabel sau o interogare.
Aceast interogare a i creat-o, de altfel, cnd a i studiat capitolul Interog ri, a a c ar trebui s
o ave i. Trebuie s ave i ceea ce se vede n figura 4.37.

Fig. 4.37. Alegerea sursei de date pentru


raport

Toate cmpurile din stnga ferestrei trebuie s le trece i n dreapta pentru c avem nevoie de
toate. Pentru a trece la pasul urm tor ap sa i butonul Next.
2. Pentru a grupa informa iile alege i tabelul cu tblEdituri, care particip la interogarea surs ,
vezi figura 4.38. n acest fel ve i putea nsuma valorile aferente unei edituri, a a cum vi se
cere, de altfel.
Ap sa i butonul Next.

55

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Fig.4.38. Alegerea criteriului de grupare

3. Urm toarea caset de dialog v cere s alege i dup care cmp vor fi sortate grupurile i ce
calcule aplica i asupra cmpurilor, figura 4.39.

Fig. 4.39. Stabilirea sort rii i


sumariz rii

Prin ap sarea butonului Summary Options se deschide caseta de dialog din dreapta, unde pute i
opta s face i suma pe cmpul Valoare, cum se vede n figur . Tot aici se vede c pute i opta
ca n raport s apar detaliile sumariz rii (Detail and Summary) sau s apar numai sumele
f r detalii (Summary Only). Prin ap sarea butonului OK reveni i la caseta din stnga.
Cu butonul Next ajunge i la pasul urm tor.
4. Caseta de dialog care urmeaz , v cere s alege i modelul de prezentare a raportului. Opta i
pentru varianta Block prezentat n figura 4.40.

56

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Fig. 4.40. Alegerea formei de afi are


(Block)

Ap sa i butonul Next pentru a ajunge la caseta de dialog din figura 4.41, unde pute i alege din
mai multe variante, stilul de scriere n raport. Opta i pentru stilul Formal.

Fig. 4.41. Alegerea stilului

Ap snd butonul Next, ajunge i la ultima caset de dialog unde pute i da numele raportului,
a a cum se vede n figura 4.42.

Fig. 4.42. Alegerea numelui raportului


(rptInventar)

Ap sa i butonul Finish pentru a ncheia.

57

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

n urma procedurii parcurse a i ob inut un raport brut, a a cum se vede n figura 4.43.

Fig. 4.43. Forma brut a raportului

Forma raportului este departe de a ne mul umi, de aceea va trebui s interveni i n modificarea
aspectului raportului. Pentru aceasta intra i n modul Design i ncepe i ac iunea de
cosmetizare a raportului. n figura 4.44 ave i formularul brut, n modul Design.

Fig. 4.44. Forma brut a raportului

Tot ce ave i de f cut este s modifica i cu ajutorul mouse-ului pozi iile cmpurilor, s pune i
un titlu raportului, s modifica i formatele de scriere cu ajutorul tabelului de propriet i din
dreapta figurii.
Cel mai simplu lucru este s studia i figura 4.45 pentru a vedea unde trebuie s ajunge i.
Pentru orice neclarit i cere i ajutorul profesorului.

58

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

Fig. 4.45. Forma final a raportului

Iat cteva modific ri care s-au f cut raportului ini ial:


-

a fost schimbat pagina din portret n landscape;

a fost schimbat m rimea fontului de la 8 la 11 (proprietatea Font size);

a fost scoas bordurarea cmpurilor (proprietatea Border Style - Transparent);

au fost schimbate cmpurile ntre ele prin tragere, cmpul Aparut a fost pus
ultimul;

s-au m rit casetele de text acolo unde nu nc pea textul.

Dup acest model ncerca i s face i i alte rapoarte, de exemplu acela i raport, dar c r ile s
fie grupate dup domeniu.
Observa i c pentru elaborarea rapoartelor aspectuoase, trebuie s porni i cu Report Wizard i
s continua i manual. Este metoda cea mai eficient i practic , indicat i de speciali tii
domeniului.
Finalizarea lucr rii nr. 4
Aceast lucrare s-a desf urat pe parcursul mai multor ore de laborator. Lucrarea este
finalizat cnd s-au creat toate obiectele bazei de date Biblioteca:
Tabelele
Formularele
Interog rile
Rapoartele

59

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.4

De asemenea, va fi creat baza de date Expresii_SQL. mdb, care va con ine tabelele
tblStudenti i tblEvidenta i toate interog rile pe care le-a i f cut cu ajutorul expresiilor SQL.
Fiecare student va avea pe server structura de directoare:
My Documents / Baze de date / Lucrarea 4 / Popescu Adrian-Biblioteca.mdb
/ Expresii_SQL.mdb

Aceste baze de date, create i implementate de voi, vor fi oglinda activit ii voastre de-a
lungul unui semestru. Dac a i lucrat cu consecven i implicare, a i acumulat cuno tin e care
v vor fi de un real folos n activitatea viitoare, f r s fi f cut un efort mare.

60

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.5

Lucrarea nr. 5. Particularizarea bazei de date Biblioteca


n aceast lucrare de laborator vom face cteva incursiuni printre posibilit ile performante ale
programului Access, n aspectele profesionale ale sale. Concret, vom crea macro-uri i vom folosi o
form de start, ntr-un cuvnt, vom da o form profesional aplica iei Biblioteca.

O scurt prezentare a Macro-urilor


Din cele studiate pn acum, am v zut c o baz de date Access este o colec ie de obiecte,
tabele, interog ri, formulare, rapoarte etc. Noi am nv at s construim aceste obiecte. Toate
obiectele unei baze de date trebuie legate ntr-un flux continuu de opera ii, care mpreun se
constituie ntr-o aplica ie de baze de date. Exploatarea unei aplica ii de baze de date
presupune o mul ime de opera ii manuale care sunt executate de orice operator implicat.
n cadrul unei aplica ii Access, de o mare importan este automatizarea acesteia. Prin
automatizare n elegem c pe baza unei ac iuni a utilizatorului, cum ar fi ap sarea unui buton
al interfe ei, un dublu-clic etc, se determin realizarea uneia sau mai multor opera ii (activarea
unuia sau mai multor obiecte, rularea unor interog ri etc.).
Aceast automatizare a aplica iilor realizate n Access se poate face n dou moduri:
Prin utilizarea limbajului Visual Basic for Applications (VBA);
Prin utilizarea macrocomenzilor, care reprezint o form simplificat a limbajului VBA.
Comenzile macro sunt deosebite prin caracteristica lor unic
i anume c permit
automatizarea diverselor evenimente f r ca realizatorul aplica iei s fie nevoit s cunoasc un
anumit limbaj de programare.
Prin evenimente putem n elege:
Modific ri ale datelor;
Deschiderea sau nchiderea unui formular sau raport;
Ac iunea asupra unor obiecte de control din formulare.
n Microsoft Access exist un mare num r de tipuri de ac iuni care pot fi executate n cadrul
unor comenzi macro. Totul depinde de noi, s le cunoa tem i s le aplic m corect, n
cuno tin de cauz .
Iat cteva din aceste ac iuni:
Deschiderea sau nchiderea unor tabele, interog ri, formulare sau rapoarte;
Vizualizarea sau tip rirea rapoartelor;
Rularea cererilor de interogare de ac iune;
Apelarea altor comenzi macro;
Efectuarea condi ionat a anumitor ac iuni;
61

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.5

C utarea anumitor date n tabele;


Deschiderea sau nchiderea unor meniuri din Access;
Afi area anumitor mesaje;
tergerea, redenumirea, copierea sau salvarea diferitelor obiecte ale aplica iei;
Comunicarea cu alte produse soft, cum ar fi Word i Excel.
Cea mai bun metod de a ncepe s proiect m macrocomenzi este s ne gndim la un proces
pe care l parcurgem n mod repetat, ceva care facem de mai multe ori pe zi sau s pt mnal.
De exemplu, dac n fiecare zi avem de dat conducerii un raport cu vnz rile zilei sau avem
frecvent de f cut unele modific ri cu ajutorul unor interog ri de ac iune. Presupunem c am
g sit un astfel de scenariu, deci putem trece la automatizarea lui.

Crearea macrocomenzilor cu o singur ac iune


Crearea macrocomenzilor se face cu ajutorul ferestrei Macro Design prezentat n figura 5.1.
Coloana Macro Name

Coloana Condition

Coloana Action

Coloana Comment

Zon n care vor


fi afi ate
argumentele
ac iunii curente.

Fig. 5.1. Fereastra Macro Design

Rolul fiec rei coloane, l pute i deduce dup numele ei. Pentru nceput, cele mai importante
sunt coloanele Action i Comment, adic cele n care ve i defini i comenta ac iunile. De
altfel, numai aceste dou coloane vor fi afi ate la nceput. Pentru afi area celorlalte va trebui
s ap sa i butoanele (

) i(

) din toolbar-ul situat n partea de sus a ecranului.

Observa i c ac iunile pe care dori i s le executa i trebuie alese din coloana Action dintr-un
comboBox, n care sunt peste 50 de ac iuni care acoper necesarul pentru macro-urile
obi nuite. Este un obicei bun de a comenta fiecare ac iune pentru o bun informare, mai ales
pentru interven iile ulterioare n modific rile aduse aplica iei.
n partea de jos-stnga, vor fi afi ate cererile de argumente pentru ac iunea selectat .
O macrocomand poate fi alc tuit dintr-o singur ac iune, sau din mai multe. Ca s ad uga i
n macrocomand o ac iune, muta i cursorul n coloana Action i deschide i lista derulant , de
unde alege i una din cele peste 50 de ac iuni, dintre care multe au subac iuni suplimentare.

62

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.5

Un exemplu simplu v va ajuta s crea i i s executa i o prim macrocomand . Ne propunem


s afi m un formular care exist n baza noastr de date. Macrocomanda rezultat se vede n
figura 5.2.

Fig. 5.2. Macromand cu o singur


ac iune

Macrocomenzile se salveaz ca i formularele i se lanseaz cu un dublu-clic sau cu butonul


Run din fereastra Database. n figura 5.3 se pot vedea 2 macrocomenzi, una care deschide un
formular i alta care produce un semnal sonor.

Fig. 5.3. Frereastra


Database cu 2 macro-uri

Rularea unei macrocomenzi din fereastra Database


Pa ii pe care trebuie s -i parcurge i sunt urm torii:
1. n fereastra Database, selecta i obiectul Macros (dac nu e selectat);
2. Selecta i macrocomanda pe care dori i s o rula i;
3. Executa i clic pe butonul Run pentru a executa macrocomanda. De i pute i rula n acest
mod toate macrocomenzile pe care le-a i creat, v reamintesc c n cazul macrocomentilor
care con in grupuri, n acest mod se execut numai primul grup de ac iuni, celelalte fiind
ignorate.
Pentru a executa un anumit grup dintr-o macrocomand , folosi i meniul. n cazul n care vre i
s rula i manual o anumit macrocomand dintr-un grup folosi i metoda descris n
continuare.

63

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.5

Macrocomenzi ata ate evenimentelor


Probabil c metoda cea mai utilizat pentru rularea macrocomenzilor din aplica iile Access,
nu este rularea direct , ci ca r spuns la un eveniment Access. Aceste evenimente pot fi
declan ate de tot felul de lucruri care se pot ntmpla la nivel de formular, raport sau chiar de
control individual din cadrul acestora de exemplu, deschiderea unui formular declan eaz
evenimentul OnOpen al formularului respectiv, la introducerea unei valori ntr-o caset de
text declan eaz evenimentul OnClick, iar dac utilizatorul actualizeaz datele dintr-un
control al unui formular se declan eaz evenimentul AfterUpdate ata at controlului respectiv.
Pentru a identifica evenimente ale diferitelor obiecte, nu ave i dect s selecta i obiectul
respectiv i s -i studia i evenimentele, activnd op iunea Event din fereastra Properties. Este de
la sine n eles c sunte i pe un formular aflat n modul Design.
n aplica ia dumneavoastr v pute i folosi de aceste evenimente spunndu-i programului s
ruleze la apari ia unui anumit eveniment ata at unui formular, raport sau control o anume
macrocomand . Utiliznd evenimentele n acest mod v pute i perfec iona aplica ia, astfel nct
ea s ofere ceva n plus fa de func iile oferite de Access permi nd, de exemplu,
utilizatorilor s se deplaseze ntre diferite obiecte ale aplica iei f r s tie m car de existen a
ferestrei Database.
Utilizarea macrocomenzilor AutoExec i AutoKeys
Aceste macrocomenzi au nume speciale, rezervate
programului Access.

i sunt mocrocomenzi native ale

Macrocomanda AutoExec. Atunci cnd deschide i baza de date, Access verific dac n
cadrul acesteia nu exist o macrocomand cu numele AutoExec. Dac exist o astfel de
macrocomand , ea este executat automat. Aceast macrocomand poate fi folosit pentru
preg tirea aplica iei; de regul ea este folosit mpreun cu op iunile de pornire a Access-ului.
Observa ie important !! Dac dori i s evita i rularea macrocomenzii
ap sat tasta Shift n timp ce deschide i baza de date.

AutoExec,

men ine i

n general, se folose te comanda AutoExec pentru a apela o func ie VBA (prin intermediul
ac iunii RunCode) personalizat pentru fiecare aplica ie n parte.
Macrocomanda AutoKeys. Acestei macrocomenzi, Access-ul i acord un tratament special.
Cu ajutorul acestei macrocomenzi pute i s asocia i oric rei ac iuni, o combina ie de taste
dintre cele disponibile. Mai mult, pute i chiar s modifica i comportamentul prestabilit al
anumitor combina ii de taste.
Iat un exemplu de utilizare prezentat n figura 5.4.

64

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.5

Fig. 5.4. Exemplu de atribuire a unei


combina ii de taste unei macrocomenzi

n exemplul nostru, combina ia de taste SHIFT + p, lanseaz macrocomanda care afi eaz o
list cu produse. Re ine i c macrocomanda se nume te AutoKeys, iar combina ia de taste a
fost trecut n coloana Macro Name.
Metod rapid de pornire a aplica iilor
Ca o alternativ a macrocomenzii AutoExec, trebuie amintit aici c ncepnd cu versiunea
Access 95, a fost introdus o posibilitate de setare a op iunilor de pornire a aplica iilor.
Avnd deschis aplica ia ale c rei op iuni de pornire vrem s le automatiz m, d m comanda
Tools Startup, care va deschide caseta de dialog din figura 5.5.

Fig. 5.5. Caseta de dialog Startup

Set rile din aceast caset de dialog sunt destul de evidente. Practic, putem s nlocuim toat
fa ada programului Access.
Re ine i c aceast manevr este ultima, dup ce aplica ia a fost testat i nu mai avem nimic
de modificat la ea. Nu ncerca i s ascunde i meniul principal i toolbar-urile, nainte de
forma final , pentru c a i putea ajunge s nu mai pute i interac iona cu aplica ia deoarece
nu mai ave i instrumente de acces. Pentru astfel de ncerc ri, face i-v o copie de rezerv .

65

Baze de date ndrum tor de lucr ri de laborator

Desf

Lucrarea nr.5

urarea lucr rii

Desf urarea lucr rii va consta n mai multe etape i anume:


Crearea macro-urilor care deschid formularele deja existente.
Crearea interfe ei i legarea butoanelor sale de aceste macro-uri.
Configurarea formei de start.
n final trebuie s ajungem la interfa a aplica iei, care este prezentat n figura 5.6.

Fig. 5.6. Forma de start a aplica iei


Biblioteca

Fiecare buton are n spate cte un macrou, care are misiunea s deschid un formular.
Formularele le avem deja, urmeaz s cre m cte un macro corespunz tor fiec rui buton.
Crearea macro-rilor aplica iei Biblioteca
Aceste macro-uri sunt cu 2 ac iuni i vor fi simplu de creat. Ac iunile executate de fiecare
macrou va fi OpenForm i Close.
Observa ie important !! Inainte de a trece efectiv la crearea macro-urilor, verifica i dac
ave i create toate formularele, 10 la num r, conform tabelului 5.1, prezentat pu in mai ncolo
(peste 2 pagini).
Vom parcurge urm torii pa i:
Din caseta Database alegem op iunea
figura 5.7.

Macros,

apoi

66

New.

Se va deschide caseta de dialog din

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.5

Fig. 5.7. Caseta de dialog pentru crearea macro-urilor

n coloana Action putem alege comezile pe care dorim s le efectueze macrocomanda noastr .
n cazul de fa alegem comenzile OpenForm, pentru deschiderea formularului de introducere a
c r ilor i Close pentru nchiderea formei de start, de care nu avem nevoie ct timp e deschis
o alt form . n final vom avea imaginea din figura 5.8., iar macro-ul creat va avea numele
mcrIntroducereCarti.

Fig. 5.8. Macro-ul creat

Observa i n partea de jos, c la comanda OpenForm putem alege formularul care va fi deschis,
aici frmIntroducereCarti din caseta derulant Form Name. De asemenea, se poate alege
formularul care se nchide, aici frmStart.
Dup ce s-a ales formularul care va fi deschis, se salveaz macro-ul creat cu comanda
din meniul de sus.

Save

Dup aceast metodologie se vor crea toate macro-urile care deschid formulare. n tabelul 5.1
sunt prezentate numele butoanelor, macro-urilor i formularelor implicate n aplica ia
Biblioteca. Observa i c numele fiec rui macro ncepe cu prefixul mcr.

67

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.5

Tabel 5.1. Obiectele aplica iei


Buton
Name
cmdA_carti
cmdA_autori
cmdA_cititori
cmdA_edituri
cmdA_domenii

Caption
Carti
Autori
Cititori
Edituri
Domenii

Macro

Func iune

mcrIntroducereCarti
mcrIntroducereAutori
mcrIntroducereCititori
mcrIntroducereEdituri
mcrIntroducereDomenii

cmdA_profesii

Profesii

mcrIntroducereProfesii

cmdA_imprumuturi

Situatii
imprumuturi
Cartile din
biblioteca
Situatii
imprumuturi
Lista
cititorilor

mcrIntroducereImprumuturi

Deschide formularul frmIntroducereCarti


Deschide formularul frmIntroducereAutori
Deschide formularul frmIntroducereCititori
Deschide formularul frmIntroducereEdituri
Deschide formularul
frmIntroducereDomenii
Deschide formularul
frmIntroducereProfesii
Deschide formularul
frmIntroducereImprumuturi
Deschide formularul frmCartile din
biblioteca
Deschide formularul
frmSituatieCititoriMain
Deschide formularul frmCititori

cmdCartile
cmdImprumuturi
cmdCititori

mcrCartile
mcrSituatiiCititori
mcrCititori

Acest tabel v va fi foarte util pentru crearea formei start pe care o ve i face n continuare.
Observa i c toate cele 10 macrouri deschid cte un formular.
Formularul frmCititori are ca surs interogarea qryCititori, care are urm toarea expresia SQL:
SELECT tblCititori.Nume+" "+tblCititori.Prenume AS Cititor,
tblCititori.DataN AS [Data nasterii], tblCititori.Adresa,
tblCititori.Localitate, tblJudete.Denumire AS Judetul,
tblProfesii.Denumire AS Profesia
FROM tblCititori, tblProfesii, tblJudete
WHERE tblCititori.ProfesiaID = tblProfesii.ProfesieID And
tblCititori.JudetID = tblJudete.JudetID
ORDER BY tblCititori.Nume;

ncerca i n elege i expresia SQL de mai sus. Crea i formularul frmCititori dup metodologia
de la crearea formularului frmCartile din biblioteca, prezentat la pagina 49.
Crearea formei de start pentru aplica ia Biblioteca
nainte de a ncepe aceast ac iune, verifica i dac ave i create toate cele 10 formulare i cele
10 macrouri de deschidere a cestora.
Observa i c baza de date a devenit aplica ia Biblioteca, ceea ce nseamn c acum vom
trata obiectele bazei de date, ca interac ionnd ntre ele ntr-o succesiune logic . Pn acum
avem n baza de date tabele, interog ri, formulare i rapoarte. Acestea au fost create cu un
anume scop, pentru a fi folosite, fie pentru modificarea i introducerea de date, fie pentru
extragerea unor informa ii din baza de date.
Pentru manipularea tuturor obiectelor bazei de date este nevoie de cunoa terea programului
Access, ceea ce nu e la ndemna oricui. Utilizatorii bazelor de date tiu s - i fac doar treaba
lor, de exemplu n cazul nostru, bibliotecara trebuie s introduc noi c r i, cititori, s
nregistreze mprumuturile etc. Este pu in probabil c va fi interesat de denumirile corecte
ale tabelelor, formularelor i rapoartelor.
68

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.5

Cel mai simplu, pentru bibliotecara noastr , ar fi s aib un formular cu multe butoane de
comand , la ap sarea c rora s ni se deschid formularele de care avem nevoie, f r a face
alte manevre. Astfel de formulare a i ntnit i chiar a i creat, n Visual Basic.
Revede i formularul din figura 5.6, pentru a v face o imagine, unde trebuie s ajunge i.
O astfel de interfa la pornirea aplica iei, parc ne d un oarecare curaj, nu-i a a? Oberv m c
pentru a deschide formularul de actualizare a c r ilor, e suficient s ap s m butonul Carti,
pentru a introduce un mprumut ap s m butonul Actualizare imprumuri, iar pentru a vedea
situa iile cititorilor, ap s m butonul Situatii imprumuturi.
Cum vom face asta? Chiar aceasta este tema acestei lucr ri de laborator. De altfel, crearea
unei interfe e cu obiecte pe ea ar trebui s v fie cunoscut de la Visual Basic, nu-i a a?
Vom parcurge urm torii pa i:
Din caseta Database alegem op iunea Form, apoi
figura 5.9, de unde ve i alege op iune Design View.

New.

Se va deschide caseta de dialog din

Fig. 5.9. Alegerea formei de


start

Dup ap sarea butonului OK va apare forma n modul Design, ar tat n figura 5.10.

Fig. 5.10. Forma de start a a cum


arat la nceput
69

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.5

Aspectul formei de start este stabilit de propriet ile sale care au valorile implicite. Pentru a o
aduce la aspectul dorit, trebuie s -i modific m unele propriet i cu ajutorul casetei de dialog
cu propriet ile, care se deschide cu butonul Properties (

) din toolbar-ul standard.

Modifica i urm toarele propriet i (care se g sesc n eticheta Format a casetei Properties):
Scroll Bars

- Neither

Record Selectors

Navigation Buttons
Border Style

Dividing lines
Min Max Buttons

No
-

No

Dialog
-

No
-

None

Prin aceste modific ri de propriet i nu am f cut dect s scoatem elementele inutile de pe


formular. n urma acestor modific ri i dup activarea formularului, el trebuie s arate ca n
figura 5.11.

Fig. 5.11. Aspectul


formularului dup
modificarea propriet ilor de
mai sus

Urmeaz etapa cea mai pl cut , mpodobirea formularului cu butoane de comand . Aceste
butoane se vor grupa n interiorul unui frame. Pentru aceast activitate trebuie s activ m
caseta cu obiecte Toolbox (

) i caseta de dialog Properties, a a cum se vede n figura 5.12.

Formularul
Toolbox

Caseta Properties

Fig. 5.12. Configura ia spa iului de lucru pentru


crearea butoanelor de pe interfa a de start

Pentru pozi ia butoanelor i numele lor consulta i figura 5.6 i tabelul 5.1.
70

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.5

Pentru fiecare buton pe care l pune i pe interfa


propriet i:

va trebui s preciza i valorile urm toarelor

Name numele butonului (cmd...).


Caption ceea ce apare scris pe buton (ex. Actualizare imprumuturi).
On Click se va scrie numele macroului care va fi executat (ex. mcrCititori).
Dup ce a i creat toate butoanele i le-a i setat cele 3 propriet i, pute i intra n modul Run al
formularului, adic s -l activa i. Prin ap sarea fiec rui buton se va deschide formularul
corespunz tor. n figura 5.13 este prezentat schema de func ionare a aplica iei.

frmIntoducereCarti

frmIntoducereAutori

frmIntoducereCititori

frmIntoducereEdituri

frmIntoducereDomenii

frmIntoducereProfesii

frmIntoducereImprumuturi

frmCartile din biblioteca

frmSituatieCititoriMain

frmCititori

Fig. 5.13. Schema aplica iei Biblioteca

Conform macrourilor create, la ap sarea fiec rui buton se deschide un formular i se nchide
formularul de start. Se pune, firesc, ntrebarea cum revenim la forma de start, dup ce am
terminat lucrul n fiecare din cele 10 formulare.
Pentru aceasta, trebuie g sit o modalitate de reveni la formularul de start cnd se nchide alt
formular. Acest lucru se poate face prin apelarea unui macro care deschide formularul de start
i nchide formularul curent, la evenimentul On Close al formularului din care vrem s ie im.
Prin urmare, va trebui s cre m alte 10 macrouri care s fie legate de evenimentul On Close al
fiec ruia din cele 10 formulare.

71

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.5

Adaptarea formularelor aplica iei Biblioteca


Primul pas pe care trebuie s -l facem este s cre m cele 10 macrouri. Deja avem suficient
experien pentru acest lucru, mai ales c macrourile se aseam n foarte mult cu precedentele
pe care le-am f cut n aceast lucrare.
Vom parcurge urm torii pa i:
Din caseta Database alegem op iunea Macros, apoi New. Primul macro pe care l vom crea este
mcrCloseIntrodCarti, a a cum se vede n figura 5.14.

Fig. 5.14. Macroul de deschidere i nchidere a


formularelor

Repeta i aceast opera iune de 10 ori, pentru fiecare din cele 10 formulare. Da i urm toarele
denumiri, macrourilor:
frmIntroducereCarti

mcrCloseIntrodCarti

frmIntroducereAutori

mcrCloseIntrodAutori

frmIntroducereCititori

mcrCloseIntrodCititori

frmIntroducereEdituri

mcrCloseIntrodEdituri

frmIntroducereDomenii

mcrCloseIntrodDomenii

frmIntroducereProfesii

mcrCloseIntrodProfesii

frmIntroducereImprumuturi

mcrCloseIntrodImprumuturi

frmCartile din biblioteca

mcrCloseCartile

frmSituatieCititoriMain

mcrCloseSituatieCititori

frmCititori

mcrCloseCititori

Deschide i acum fiecare din cele 10 formulare n modul Design, c uta i evenimentul On
Close i atribui i-i macroul corespunz tor.
n sfr it, am terminat aplica ia noastr , putem trece la configurarea formei de start.

72

Baze de date ndrum tor de lucr ri de laborator

Lucrarea nr.5

Configurarea formularului de start


Dup ce a i verificat func ionarea aplica iei, adic a i ncercat dac toate butoanele fac ce
trebuie, nchid i deschid formularele dorite, pute i trece la configurarea final . Utilizatorul
aplica iei nu are nevoie s vad fereastra Database, chiar ar putea s -l ncurce. De asemenea,
nu e nevoie de meniuri i toolbar-uri.
n principiu, func ionarea aplica iei trebuie s fie dup cum arat figura 5.13, adic s pornim
cu formularul de start, apoi s deschidem, pe rnd formularele de care avem nevoie prin
ap sarea butonului corespunz tor. n acest fel avem senza ia c aplica ia noastr a fost f cut
de ni te profesioni ti, ntr-un limbaj complicat, numai de ei tiut. Dar nu este de loc a a, este
aplica ie f cut de noi, cu cuno tin ele dobndite la cursul de baze de date.
Pentru a configura programul Access n sensul celor ar tate mai sus, da i comanda:
Tools Startup . . .
din meniul principal al Access-ului, n urma c ruia se va deschide caseta de dialog din figura
5.14.

Fig. 5.14. Configurarea formei de start

Din figur se vede clar ce ave i de f cut. n primul, debifa i toate checkbox-urile, apoi
completa i urm toarele rubrici:
Application Title: - numele aplica iei.
Display Form/Page: - alege i din caseta derulant numele formularului de start.
Application Icon: - alege i iconi a aplica iei, un fi ier care are una din extensiile .ico, .bmp.

Observa ie important !! Dac dori i ca aplica ia s se deschid normal, f r set rile formei
de start, ine i ap sat butonul SHIFT, cnd face i click pe butonul Enable Macros.

73

Anexa A. Teme de proiect propuse


Tema nr. 1: Proiectarea unei baze de date pentru o unitate de nv mnt (liceu), n condi iile
de mai jos:
Declara ia de inten ie: Se dore te o baz de date pentru gestionarea unei institu ii de
nv mnt, informa ii despre profesori, elevi, discipline, plane de nv mnt.
Obiectivele misiunii:
Se doresc situa ii despre profesorii titulari i asocia i.
Se dore te afi area fiec rei clase din coal .
Se doresc situa ii despre rezultatele la nv tur cum ar fi situa ii cu promova ii dintro clas la o anumit materie, la fel corigen ii, etc.
Se dore te afi area planului de nv mnt al fiec rei clase.
Tema nr. 2: Proiectarea unei baze de date pentru gestionarea unui depozit.
Declara ia de inten ie: Se dore te o baz de date pentru gestionarea cilen ilor, furnizorilor i
produselor. Produsele vor fi mp r ite n grupe i subgrupe i se vor codifica. Un produs poate
proveni de la mai mul i furnizori.
Obiectivele misiunii:
Se doresc situa ii despre stocurile unor produse.
Se doresc situa ii despre produsele recep ionate(care intr n depozit).
Se doresc situa ii despre produsele livrate(care ies din depozit).
Situa ii despre cei mai fideli clin i.
Furnizorii cei mai mari.
Tema nr. 3: Proiectarea unei baze de date pentru federa ia romn de fotbal.
Declara ia de inten ie: Se dore te o baz de date pentru gestionarea juc torilor federa iei, a
cluburilor, antrenorilor. Va fi eviden iat situa ia juc torilor, cu echipele i perioadele n care
au jucat, a antrenorilor etc. Se va avea n vedere i echipa na ional i de tineret, cu
palmaresele i antrenorii lor.
Obiectivele misiunii:
Se doresc situa ii despre fiecare juc tor, perioadele i echipele la care au jucat.
Se doresc situa ii despre cluburi, palmares, antrenori.
Se doresc sitau ii despre traseul antrenorilor.
Situa ii despre echipa na ional , lot, palmares, antrenori.
Acela i lucru despre echipa de tineret.
Tema nr. 4: Proiectarea unei baze de date pentru o gospod rirea unei familii.
Declara ia de inten ie: Se dore te o baz de date pentru gestionarea veniturilor i cheltuielilor
unei familii format din 5 persoane 2 adul i, 2 copii i o bunic . Se vor mp r i veniturile i
cheltuielile pe categorii. Eviden a tuturor datelor se va ine la zi pe calculatorul familiei, la
care au acces to i membrii acesteia.
Obiectivele misiunii:
Se doresc situa ii despre veniturile familiei, globale i pe categorii.
74

Se doresc situa ii despre cheltuielile familiei, globale i pe categorii.


Situa ii despre veniturile cele mai mari.
Situa ii legate de cheltuielile cele mai mari.
Situa ia datoriilor i a crean elor dac exist .
Alte situa ii.
Tema nr. 5: Proiectarea unei baze de date pentru gestionarea bibliotecii personale.
Declara ia de inten ie: Se dore te o baz de date pentru gestionarea c r ilor din biblioteca
personal . C r ile vor fi codificate pe domenii, cum ar fi car i tehnice, literatur romn ,
str in , sport, etc.
Obiectivele misiunii:
Se doresc situa ii despre c r ile unui domeniu, autori, an apari ie, num r de file.
Situa ii despre cele citite i necitite.
Situa ia c r ilor mprumutate.
Alte situa ii.

75