Sei sulla pagina 1di 37

Relaii ntre tabele

Relaii ntre tabele........................................................................................................2


1.1
Definirea relaiilor ntre tabele.............................................................................4
1.1.1
Definirea grafic a relaiilor ntre tabele......................................................6
1.1.2
Definirea programatic a relaiilor ntre tabele............................................9
1.2
Crearea unui formular de interogare a mai multe tabele....................................11
1.2.1
Crearea unui formular de interogare n modul Design View.....................12
1.2.2
Formatarea tabelei rezultat........................................................................15
1.2.3
Crearea unui formular de interogare cu o aplicaie vrjitor.......................15
1.3
Crearea unui formular cu subformulare.............................................................21
1.3.1
Crearea unui formular cu subformulare cu o aplicaie vrjitor..................22
1.3.2
Crearea unui formular cu subformulare cu adugarea manual a
subformularelor..........................................................................................................25
1.4
Selectarea liniilor din mai multe tabele ce ndeplinesc anumite condiii..........32
1.5
Probleme propuse..............................................................................................35
1.6
Intrebri de control............................................................................................36

1 Relaii ntre tabele


O baz de date se compune din mai multe tabele. O tabel este o structur logic de date
ce conine informaii pe care baza de date le reprezint. Fiecare tabel are un nume unic.
O tabel este constituit dintr-un numr de coloane (atribute). Fiecare tabel are o cheie
primar ce identific liniile tabelei. Cheia primar poate consta dintr-un singur atribut sau
din mai multe atribute.
O tabel se poate referi la atributele uneia sau mai multor alte tabele din baza de date.
Acest lucru se face prin cheia extern. Atunci cnd o tabel trebuie s se refere la
atributele altei tabele, unul sau mai multe atribute ale tabelei vor conine cheia extern,
care este cheia primar a tabelei referite. In cele ce urmeaz vom arta modul n care se
descriu grafic i programatic relaiile ntre tabele (cum se specific grafic faptul c un
atribut al unei tabele este cheie extern).
Pentru exemplificare vom utiliza tabelele de mai jos, care descriu proiectele unei
intreprinderi. In fiecare tabel, atributele ce constituie cheia primar sunt subliniate.
tabela PROIECTE conine identificatorul unui proiect ID_PRJ i numele proiectului,
NUME_PRJ. Atributul ID_PRJ este cheia primar a tabelei,
PROIECTE
ID_PRJ
100
200
300
400

NUME_PRJ
Web
Clienti
Furnizori
Personal

tabela ANGAJATI conine date despre angajaii intreprinderii care lucreaz la diverse
proiecte. Ea conine identificatorul angajatului ID_ANG, numele angajatului,
NUME_ANG i departamentul de care aparine angajatul, DPT_ANG. Cheia primar
a tabelei este ID_ANG,
ANGAJATI
ID_ANG
1290
1295
1045
1192
1351
1348
1284
1067
1095

NUME_ANG
Popescu
Ionescu
Georgescu
Vasilescu
Filipescu
Popa
Nicolae
Marinescu
Gheorghe

DPT_ANG
Informatica
Support
Documentare
Informatica
Support
Informatica
Support
Documentare
Informatica

tabela ORE_EXECUTATE conine orele executate de fiecare angajat pentru un


anumit proiect. Ea conine identificatorul proiectului, ID_PRJ, identificatorul
angajatului, ID_ANG i numrul de ore prestate pentru un anumit proiect, ORE.
Cheia primar a tabelei este format din atributele ID_PRJ i ID_ANG,
ORE_EXECUTATE
ID_PRJ
100
100
100
200
200
300
300
300
400

ID_ANG
1290
1295
1045
1192
1351
1348
1284
1067
1095

ORE
10
8
12
20
15
20
14
12
15

tabela SALARIU conine salariul pe or al angajailor unui departament. Ea conine


identificatorul departamentului la care lucreaz angajatul, DPT_ANG, i salariul orar,
SAL_ORA. Cheia primar a tabelei este DPT_ANG.
SALARIU
DPT_ANG
Informatica
Suport
Documentare

SAL_ORA
60
40
25

Cheia primar a tabelei SALARIU, DPT_ANG, este cheie extern n tabela ANGAJATI
(coloana DPT_ANG din tabela ANGAJATI).
Proiectarea celor patru tabele este prezentat mai jos. Numele departamentului se va
introduce cu o caset combinat (Combo Box).

Figura 1. Proiectarea tabelei PROIECTE.

Figura 2. Proiectarea tabelei ANGAJATI.

Figura 3. Proiectarea tabelei ORE_EXECUTATE.

Figura 4. Proiectarea tabelei SALARIU.

Relaiile ntre tabele sunt de regul de tipul unul la mai muli. Vom spune c ntre tabelele
A i B exist relaia unul la mai muli dac unei linii din tabela A i corespund mai mule
linii din tabela B, dar unei linii din tabela B i corespunde o singur linie din tabela A. De
exemplu, ntre tabelele SALARIU i ANGAJATI exist o relaie unul la mai muli.

1.1 Definirea relaiilor ntre tabele


Pentru a defini relaia care exist ntre tabelele ANGAJATI i SALARIU, (cheia primar
din tabela SALARIU, DPT_ANG este cheie extern n tabela ANGAJATI) se procedeaz
astfel:
1. se nchid toate tabelele deschise,
2. clic pe meniul Tools Relationship din Figura 5, care produce afiarea ferestrei
Relationships din Figura 7 i a casetei Show Table din Figura 6; acelai efect se obine
cu clic pe opiunea Relationships a meniului contextual al casetei Database sau cu
clic pe butonul
din bara de instrumente; caseta Show Table se poate afia cu clic
pe butonul Show Table,
, al barei de instrumente sau cu clic pe opiunea Show
Table al meniului contextual al ferestrei Relationships,

Figura 5. Meniul Tools.

Figura 6. Fereastra Show Table.

3. se selecteaz pe rnd tabelele dorite din caseta Show Table i se adaug la fereastra
Relationships cu butonul Add. Se inchide caseta Show Table cu clic pe butonul
Close. Figura 7 arat fereastra Relationships cu tabelele adugate.

Figura 7. Fereastra Relationship cu tabele adugate.

Odat cu afiarea ferestrei Relationships apare meniul Relationship i bara de


instrumente devine cea din Figura 8.

Figura 8. Meniurile i bara de instrumente ale ferestrei Relationship.

a) meniul Relationships

b) meniul contextual al ferestrei


Relationships

Tabelul 1. Meniuri la afiarea ferestrei Relationship.

Semnificaiile opiunilor acestor meniuri i a butoanelor corespunztoare sunt


urmtoarele:
opiunea Show Table i butonul
afiaz caseta Show Table,
opiunea Show All i butonul

afiaz toate tabelele ntre care exist relaii,

n cazul unei tabele selectate, opiunea Show Direct i butonul


afiaz i tabele ce
sunt n relaii cu tabela selectat,
opiunea Hide Table ascunde o tabel selectat,
opiunea Edit Relationship afiaz caseta Edit Relationships din Figura 9 cu care se
definesc relaiile ntre tabele.

1.1.1 Definirea grafic a relaiilor ntre tabele


Pentru a defini o relaie ntre atributul cheie primar a unei tabele i atributul
corespunztor cheie extern n alt tabel se selecteaz atributul cheie primar din prima
tabel i se trage cu butonul stng al mousului apsat peste atributul cheie extern al celei
dea doua tabel. Menionm c cele dou atribute nu au, n general, acelai nume. In
cazul nostru vom defini relaia dintre tabelele ANGAJATI i SALARIU, (coloana
DPT_ANG este cheia primar din tabela SALARIU i cheie extern n tabela
ANGAJATI). Vom proceda n felul urmtor:
1. se selecteaz atributul DPT_ANG n tabela SALARIU unde este cheie primar, i se
trage cu butonul stng al mousului apsat peste atributul DPT_ANG al tabelei
ANGAJATI, unde este cheie extern; se afiaz caseta Edit Relationship din Figura 9.
In partea de jos a casetei n seciunea Relationship Type apare tipul relaiei, n cazul
nostru unu la mai muli.

Figura 9. Caseta Edit Relationships dup definirea unei relaii.

2. clic pe butonul Join Type, care afiaz caseta Join Properties din Figura 10, unde
butonul 1 corespunde relaiei unu la mai muli; clic pe butonul OK al casetei Join
Properties,

Figura 10. Caseta Join Properties.

3. se marcheaz opiunea Enforce Referential Integrity. Integritatea referenial a


bazei de date nu permite ca ntr-o tabel cu un cmp cheie extern s existe o linie n
care cheia extern nu exist n tabela primar. In cazul integritii refereniale putem
executa urmtoarele aciuni: Cascade Update Related Fields, care atunci cnd se
modific un cmp n tabela primar, se modific valoarea sa n toate tabelele legate i
Cascade Delete Related Records, care atunci cnd este tears o linie din tabela
primar, se terg toate liniile ce se refer la aceast linie din tabele corespunztoare,
4. clic pe butonul Create i relaia ntre tabele este creat.

Figura 11. Fereastra Relationships cu relaia ntre tabele.

Relaia unul la mai muli apare desenat ca n Figura 12.

Figura 12. Relaie unu la mai muli.

Relaiile ntre tabele pot fi terse grafic n felul urmtor:


1. clic cu butonul drept pe linia ce unete cheia primar dintr-o tabel cu cheia extern
din cealalt tabel i se afiaz meniul contextual din Figura 13,
2. clic pe opiunea Delete.

Figura 13. Stergerea grafic a unei relaii.

Caseta Edit Relationships din Figura 9 se poate afia n mai multe feluri:
cu clic pe opiunea Edit Relationship a casetei din Figura 13,
cu clic pe meniul Relationships Edit Relationship din Figura 14.

Figura 14. Meniul Relationships.

Dup definrea relaiei ntre tabelele SALARIU i ANGAJATI, tabela SALARIU arat ca
n Figura 15.

Figura 15. Tabela SALARIU dup definirea realiei cu tabela ANGAJATI.

In stnga fiecrei coloane exist nodul unui arbore cu ramuri ctre nregistrrile din
tabela ANGAJATI ce au ca cheie extern cheia primar a tabelei SALARIU. Un clic pe
nodul respectiv expandeaz arborele ca n Figura 16, cu toi angajaii departamentului
Documentare din tabela ANGAJATI , vezi definiia tabelei ANGAJATI de mai sus.

Figura 16. Arbore al tabelei SALARIU expandat.

1.1.2 Definirea programatic a relaiilor ntre tabele


Relaiile ntre tabele se pot crea i programatic. Pentru aceasta se procedeaz astfel:
1. se afiaz caseta Edit Relationships din Figura 9,
2. clic pe butonul Create New care afiaz caseta de dialog Create New din Figura 17,

Figura 17. Caseta de dialog Create New.

3. se selecteaz din lista Left Table Name numele tabelei n care atributul este cheie
primar, n cazul nostru SALARIU,
4. se selecteaz din lista Left Column Name numele atributului care este cheie primar,
n cazul nostru DPT_ANG,
5. se selecteaz din lista Right Table Name numele tabelei n care atributul este cheie
extern, n cazul nostru ANGAJATI,
6. se selecteaz din lista Right Column Name numele atributului care este cheie
extern, n cazul nostru DPT_ANG,
7. se nchide caseta Create New cu clic pe butonul OK,
8. se alege tipul relatiei unu la mai muli din caseta Join Properties ca mai sus,
9. se marcheaz opiunea Enforce referenial Integrity n caseta Edit Relationships,
10. clic pe butonul OK,
11. clic pe butonul Create al casetei Edit Relationships.

Figura 18. Caseta Edit Relationship afind relaiile existente.

De menionat diferena ntre caseta Edit Relationships din Figura 9 i cea din Figura 18.
Figura 9 arat caseta Edit Relationships dup ce s-a definit o relaie, grafic sau
programatic, nainte ca relaia s fie creat. Cele dou tabele ntre care s-a definit relaia

10

sunt afiate n culoarea gri. Relaia este creat n baza de date cu clic pe butonul Create.
In acest moment butonul Create se transform n buton OK vezi Figura 18.
Atunci cnd baza de date conine prea multe tabele i relaii, fereastra Relationships
devine aglomerat. Putem afia doar tabelele de interes cu relaiile ntre ele. Pentru
aceasta procedm dup cum urmeaz:
1. se terg toate tabelele din fereastra Relationships. Clic pe fereastra Relationships i
apoi pe meniul Edit Clear Layout sau pe butonul
al barei de instrumente,
2. se selecteaz din caseta Show Table una din tabelele de interes,
3. clic pe meniul Relationships Show Direct sau butonul
i n fereastr apar
toate tabele ce au relaii cu tabela selectat, vezi Tabelul 1.

1.2 Crearea unui formular de interogare a mai multe tabele


Vom arta acum modul de creare a fromularelor de interogare a ami multor tabele ntre
care exist relaii.
Ca exemplu vom a selecta datele despre angajai, ID_ANG, NUME_ANG i DPT_ANG
din tabela ANGAJATI i salariul lor orar, SAL_ORA din tabela SALARIU.
Prima form general a instruciunii SELECT este
SELECT coloana_1, coloana_2, , coloana_n
FROM tabela_1, , tabela_k
[WHERE condiie]
[ORDER BY nume_coloana [ASC | DESC] [, nume_coloana [ASC | DESC] ]];
Instruciunea SELECT corespunztoare este urmtoarea
SELECT ANGAJATI.ID_ANG, ANGAJATI.NUME_ANG, ANGAJATI.DPT_ANG,
SALARIU.SAL_ORA
FROM SALARIU, ANGAJATI
WHERE ANGAJATI.DPT_ANG = SALARIU.DPT_ANG;
O alt form general a instruciunii SELECT ce se poate utiliza cnd se selecteaz
coloane din mai multe tabele ntre care exist legturi utilizeaz clauza INNER JOIN.
SELECT coloana_1, coloana_2, , coloana_n
FROM tabela_1
INNER JOIN tabela_2 ON condiie_2
INNER JOIN tabela_3 ON condiie_3
,
INNER JOIN tabela_k ON condiie_k
[WHERE condiie]
[ORDER BY nume_coloana [ASC | DESC] [, nume_coloana [ASC | DESC] ]];
Forma instruciunii n cazul a dou tabele este
SELECT nume_coloana_1, nume_coloana_2, , nume_coloana_k
FROM nume_tabela_1
11

INNER JOIN nume_tabela_2 ON conditie;


In cazul a mai multe tabele, se repet clauza INNER JOIN pentru cte condiii este
nevoie. In cazul nostru, instruciunea SELECT este cea de mai jos.
SELECT ANGAJATI.ID_ANG, ANGAJATI.NUME_ANG, ANGAJATI.DPT_ANG,
SALARIU.SAL_ORA
FROM SALARIU
INNER JOIN ANGAJATI ON SALARIU.DPT_ANG = ANGAJATI.DPT_ANG;
La crearea unui formular de interogare din mai multe tabele se creaz mai nti
legturile ntre tabele.

1.2.1 Crearea unui formular de interogare n modul Design View


Se creaz legtura ntre tabelele ANGAJATI i SALARIU, cheia primar DPT_ANG a
tabelei SALARIU este cheie extern n tabela ANGAJATI, coloana DPT_ANG.
Proiectarea formularului de interogare se face astfel:
1. n caseta Database se selecteaz opiunea Query,
2. clic pe opiunea Create query in Design View i se afiaz formularul Select Query
din Figura 19 i caseta Show Table din Figura 20.

Figura 19. Formularul Select Query.

12

Figura 20. Caseta Show Table.

3. se selecteaz tabelele ANGAJATI i SALARIU n caseta Show Table i se adaug la


formularul de interogare cu clic pe butonul Add; se nchide caseta cu butonul Close;
tabelele apar n formularul Select Query ca n Figura 21, cu legturile ntre ele,

Figura 21. Formularul Select Query cu tabele selectat.

4. se completeaz formularul cu coloanele ce trebuie selectate ca n Figura 22; modul de


adugare a cmpurilor la formular este acelai ca la crearea formularelor de interogare
a unei sigure tabele,

13

Figura 22. Formularul completat.

5. se salveaz formularul creat cu una dintre opiunile Save sau Save As ale meniului
File, sau cu butonul Close al ferestrei formularului,
6. se afiaz tabela rezultat cu clic pe butonul
al barei de instrumente sau pe meniul
Query Run, sau pe meniul View Datasheet View sau pe opiunea Datasheet
View a meniului contextual al formularului.
Tabela rezultat este cea din Figura 23.

Figura 23. Tabela rezultat a formularului din Figura 22.

Instruciunea SELECT generat de Access pe baza formularului din Figura 22 este cea
din Figura 24.

14

Figura 24. Instruciunea SELECT corespunztoare formularului din Figura 22.

1.2.2 Formatarea tabelei rezultat


Tabela rezultat a interogrii se formateaz n acelai fel cu tabelele bazei de date. Pentru
formatare se utilizeaz opiunile meniului Format din Tabelul 2a. Opiunile meniului
Format afiaz aceleai casete de dialog ca i n cazul tabelor bazei de date.

a) meniul Format

b) caseta Column Width


Tabelul 2. Meniul Format.

De exemplu, pentru formatarea unei coloane se procedeaz astfel. Se selecteaz coloana a


crei lime trebuie modificat, i clic pe opiunea Format Column Width ce afiaz
caseta Column Width. Opiunea Best Fit d alege limea optim a coloanei. Inlimea
unei linii se modific asemntor.
Opiunea Font modific tipul, stilul i culoarea fontului coloanel sau liniei selectate.

1.2.3 Crearea unui formular de interogare cu o aplicaie vrjitor


Proiectarea unui formular de interogare se poate face i cu ajutorul unei aplicaii vrjitor.
Pentru exemplificare vom utiliza tabelele de mai jos.
CLIENTI
ID_CLIENT
1253
4481
2396
2341
1956

NUME
Ionescu
Popescu
Georgescu
Vasilescu
Nicolae

PRENUME
Vasile
George
Nicolae
Ioan
Vasile

ADRESA
Craiova
Iasi
Bucuresti
Timisoara
Cluj

15

COMENZI
ID_COMANDA
124
238
331
214
174
229

ID_CLIENT
4481
1956
4481
2396
2341
4481

DATA
1/10/2009
12/20/2008
7/14/2009
03/08/2007
5/14/2009
11/3/2008

VALOARE
2232
149
3200
844
982
504

Proiectarea celor dou tabele este artat n Figura 25 i n Figura 26.

Figura 25. Proiectarea tabelei CLIENTI.

Figura 26. Proiectarea tabelei COMENZI.

Etapele crerii formularului sunt urmtoarele:


1. n caseta Database se selecteaz opiunea Query,
2. clic pe opiunea Create query by using wizard care afiaz caseta din Figura 27; se
aleg pe rnd tabelele dorite din lista Tables/Queries; coloanele fiecrei tabele ce vor
aprea n tabele rezultat se mut n lista Selected Fields cu butoanele
,
; n
cazul nostru selectm tabelele CLIENTI i COMENZI. Nu vom selecta cmpul
ID_CLIENT din tabela COMENZI, deoarece conine aceleai valori ca i cmpul
ID_CLIENT din tabela CLIENTI; de ce? Clic pe butonul Next i se afiaz caseta din
Figura 28,

16

Figura 27. Pasul I. Crearea unei interogri. Selectarea cmpurilor.

Figura 28. Pasul II. Alegerea tipului interogrii.

3. se alege tipul interogrii; prima dat se marcheaz opiunea Detail (shows every field
of every record); clic pe butonul Next ce afiaz caseta din Figura 29,

17

Figura 29. Pasul III. Alegerea titlului interogrii.

4. se introduce titlul interogrii n caseta What title do you want for your query; se
poate alege ntre a executa interogarea marcnd opiunea Open the query to view
information i modificarea interogrii marcnd opiunea Modify the query design;
clic pe butonul Next i se afiaz tabela rezultat din Figura 30.

Figura 30. Tabela rezultat.

Instruciunea SQL SELECT generat de Access pe baza formularului proiectat este cea
din Figura 31.

Figura 31. Instruciunea SELECT generat din formularul proiectat.

18

Putem sumariza rezultatele cutrii prin aplicarea unor funcii de agregare. Pentru aceasta
la pasul II, Figura 28, alegem opiunea Summary i obinem caseta din Figura 32.
3. clic pe Summary Options i se afiaz caseta Summary Options din Figura 33,

Figura 32. Pasul II. Alegerea tipului interogrii.

4. se alege funcia de agregare Sum. Clic OK i se afiaz caseta din Figura 34,

19

Figura 33. Pasul III. Alegerea funciei de agregare.

5. se alege modul de grupare a nregistrrilor dup datele calendaristice. Clic Finish i se


afiaz tabela rezultat din Figura 35.

20

Figura 34. Pasul IV. Gruparea datelor calendaristice n interogare.

Figura 35. Tabela rezultat.

Instruciunea SQL generat din formularul de interogare este cea din Figura 36

Figura 36. Instruciunea SQL generat din formularul proiectat.

1.3 Crearea unui formular cu subformulare


In cazul tabelelor ntre care exist relaii unu la mai muli, este posibil s crem formulare
ce conin subformulare. Formularul principal afiaz datele din partea unu a relaiei,
subformularul afiaz datele din partea mai muli a relaiei. Formularul principal afiaz
la un moment dat o linie a tabelei din partea unu a relaiei, subformularul afiaz numai
liniile din tabela din partea mai muli a relaiei legate de linia afiat de formularul
principal.

21

Pentru a exemplifica modul de creare a unui formular cu subformulare vom considera


tabelele CLIENTI i COMENZI din Figura 25 i Figura 26, cu informaii despre clienii
unei intreprinderi i comenzile lor. Cheia primar din tabele este subliniat.

1.3.1 Crearea unui formular cu subformulare cu o aplicaie vrjitor


Vrem s crem un formular cu un subformular care, pentru fiecare client, s afieze
comenzile acestuia. Menionm c, atributul ID_CLIENT este cheie primar n tabela
CLIENTI i cheie extern n tabela COMENZI i aceast relaie a fost creat.
Crearea unui formular cu subformular se face cu urmtorii pai :
1. n fereastra Database clic pe opiunea Forms,
2. clic pe butonul New, ce afiaz caseta de dialog New Form,
3. se selecteaz opiunea Form Wizard,
4. n prima caset de dialog a aplicaiei Form Wizard se selecteaz tabela CLIENTI i se
mut cmpurile din aceast tabel ce vor apare n formularul principal, vezi Figura
37, (din tabela din partea unu a relaiei) n lista Selected Fields cu butoanele
. Se va observa c acest pas este identic cu cel de la crearea unei interogri,

Figura 37. Pasul I. Selectarea datelor ce vor apare n formularul principal.

5. se selecteaz tabela COMENZI i cmpurile din aceast tabel ce vor aparea n


subformular, vezi Figura 38, (din tabela din partea mai muli a relaiei) se mut n lista
Selected Fields cu butoanele
,
. Se va observa c acest pas este identic cu
cel de la crearea unei interogri; clic pe butonul Next,

22

Figura 38. Pasul II. Selectarea datelor ce vor apare n subformular.

6. aplicaia wizard afiaz caseta de dialog din Figura 39; n lista How do you want to
view your data? se alege tabela ce va apare n formularul principal, n cazul nostru se
marcheaz opiunea by CLIENTI; se marcheaz opiunea Form with subform(s) i
clic pe butonul Next,

23

Figura 39. Pasul III. Alegerea tabelei ce va apare n formularul principal.

7. se aleg opiunile dorite din casetele de dialog urmtoare.


Formularul creat n final este cel din Figura 40, n care, pentru fiecare linie din tabela
CLIENTI, avem afiat n subformular liniile cu comenzi din tabela COMENZI.

Figura 40. Formular cu subformulare n vederea Form.

Acelasi formular n vederea Datasheet este artat n Figura 41.

24

Figura 41. Formular subformulare n vederea Datasheet.

1.3.2 Crearea unui formular cu subformulare cu adugarea manual a


subformularelor
Al doilea mod de a crea un formular cu subformulare este de a crea un formular cu
aplicaia vrjitor pentru tabela CLIENTI i s adugm manual obiectul Subform ce va
conine a doua tabel.
Crearea formularului pentru tabela CLIENTI nu este artat. Formularul se creaz ca n
lucrrile anterioare. Formularul proiectat de aplicaia vrjitor este cel din Figura 42, iar
proiectarea este cea din Figura 43.

Figura 42. Formularul creat de aplicaia vrjitor.

25

Figura 43. Proiectarea formularului creat de aplicaia vrjitor.

Adugarea obiectului subformular se face astfel:


1. se afiaz caseta Toolbox din Figura 44 cu clic pe butonul Toolbox
instrumente,

, al barei de

Figura 44. Caseta Toolbox.

2. se insereaz obiectul Subform din caseta Toolbox. Clic pe butonul Subform, , din
caseta Toolbox i se deseneaz un dreptunghi n zona Detail din Figura 43. Dup
desenarea dreptunghiului se lanseaz automat aplicaia Subform Wizard din Figura
45,

26

Figura 45. Aplicaia Subform Wizard, pasul I.

3. la pasul I se marcheaz opiunea Use existing Tables and Queries, vezi Figura 45.
Clic Next i se afiaz pasul II n Figura 46,

Figura 46. Aplicaia Subform Wizard, pasul II.

27

4. la pasul II se selecteaz tabela COMENZI din lista Tables / Queries i se mut


cmpurile dorite din lista Available Fields n lista Selected Fields cu clic pe butonul
. Clic Next i se afiaz pasul III din Figura 47,

Figura 47. Aplicaia Subform Wizard, pasul III.

5. la pasul III se aleg opiunile Coose from a list i Show COMENZI for each record
in CLIENTI using CLIENT_ID. Clic Next i se afiaz pasul IV din Figura 48,

28

Figura 48. Aplicaia Subform Wizard, pasul IV.

6. la pasul IV se alege numele subformularului n caseta What name would you like
for your subform or subreport? Clic Finish.
Fromularul proiectat n vederea Design este cel din Figura 49 iar n vederea Form cel din
Figura 50.

29

Figura 49. Formularul Proiectat n vederea Design.

Figura 50. Formularul proiectat n vederea Form.

Caseta de proprieti a subformularului este cea din Figura 51. Aici se pot modifica
diverse proprieti. De exemplu, limea subformularului se poate adapta punnd
proprietatea Subdatasheet Expanded la valoarea Yes.
30

Figura 51. Caseta de proprieti a subformularului.

Formularul creat n vederea Datasheet este cel din Figura 52.

Figura 52. Formularul proiectat n vederea Datasheet.

La un clic pe butonul al unei nregistrri se afiaz i nregistrrile corespunztoare din


tabela COMENZI, vezi Figura 53.

31

Figura 53. Formularul proiectat n vederea Datasheet cu ultima nregistrare expandat.

Instruciunea SELECT de selectarea a datelor subformularului din tabela COMENZI este


cea din Figura 54.

Figura 54. Instruciunea SELECT pentru selectarea datelor din subformular.

Exerciiu. Se vor compara proiectrile celor dou formulare cu subformulare, cel creat de
aplicaia vrjitor i cel cu adugarea manual a subformularului.

1.4 Selectarea liniilor din mai multe tabele ce ndeplinesc


anumite condiii
Instruciunea SELECT permite specificarea anumitor condiii de selectare a liniilor din
mai multe tabele care au valori identice pentru anumite pentru anumite coloane. In prima
form a instruciunii SELECT specificarea acestor condiii se face n clauza WHERE. In
a doua form specificarea acestor condiii se face n clauza INNER JOIN. Aceste legturi
se pot specifica grafic, n formularul de interogare, dup cum vom arta n continuare. In
acest caz legturile exist doar n cadrul interogrii.
Fie tabelele R1 i R2 de mai jos cu cheile primare X i respectiv Z.

32

R1
X
X1
X2
X3
X4

R2
Y
Y1
Y2
Y2
Y3

Y
Y1
Y2
Y2
Y3

a) tabela R1

Z
Z1
Z2
Z3
Z4
b) tabela R2

Tabelul 3. Tabelele R1 i R2.

Vom selecta cmpurile X, Y, Z ce au valori egale pentru cmpurile Y din cele dou tabele.
Definiiile celor dou tabele sunt cele din Tabelul 4 i Tabelul 5.

a) definiie

b) date
Tabelul 4. Tabela R1.

a) definiie

b) date
Tabelul 5. Tabela R2.

Crearea interogrii se face astfel.


1. n caseta Database se selecteaz opiunea Query,
2. clic pe opiunea Create query in Design View ce afiaz formularul Select Query i
caseta Show Table,
3. se selecteaz tabelele R1 i R2 n caseta Show Table i se adaug la formularul de
interogare cu clic pe butonul Add; se nchide caseta cu butonul Close; tabelele apar n
formularul Select Query ca n Figura 55,

33

4. se creaz legtura ntre cmpul Y din tabela R1 i cmpul Y din tabela R2 selectnd
cmpul Y n tabela R1 i trgndu-l cu mousul peste cmpul Y din tabela R2, vezi
Figura 55,
5. se salveaz formularul creat cu una dintre opiunile Save sau Save As ale meniului
File, sau cu butonul Close al ferestrei formularului,
6. se afiaz tabela rezultat cu clic pe butonul
al barei de instrumente sau pe meniul
Query Run, sau pe meniul View Datasheet View sau pe opiunea Datasheet
View a meniului contextual al formularului.

Figura 55. Formularul Select Query.

Rezultatul rulrii este tabela din Figura 56. Se va examina modul de jonciune a liniilor
din cele dou tabele.

Figura 56. Rezultatul interogrii.

Instruciunea SELECT generat de Access este cea din Figura 57.

34

Figura 57. Instruciunea SELECT corespunztoare formularului din Figura 55.

La un clic cu butonul drept pe legtur se afiaz meniul contextual al legturii din Figura
58. In acest meniu se poate terge legtura i se poate afia caseta Join Properties din
Figura 59.

Figura 58. Meniul contextual al legturii.

Figura 59. Caseta Join Properties.

1.5 Probleme propuse


In tabelele de mai jos, cheia primar a unei tabele este subliniat.
1. Fie tabelele de mai jos din baza de date a unei intreprinderi.
CLIENTI
ID_CLIENT
1253
4481
2396

NUME
Ionescu
Popescu
Georgescu

PRENUME
Vasile
George
Nicolae

ADRESA
Craiova
Iasi
Bucuresti
35

2341
1956

Vasilescu
Nicolae

Ioan
Vasile

Timisoara
Cluj

COMENZI
ID_COMANDA
124
238
331
214
174
229

NUMAR_COMANDA
DATA
78235
1/10/2009
12984
12/20/2008
44962
7/14/2009
15734
03/08/2007
23655
5/14/2009
14766
11/3/2008

SUMA
2232
149
3200
844
982
504

ID_CLIENT
4481
1956
4481
2396
2341
4481

Cheia primar a tabelei CLIENTI este ID_CLIENT, cea a tabelei COMENZI este
ID_COMANDA. Coloana ID_CLIENT a tabelei COMENZI este cheie extern. Cmplul
DATA va fi de tipul Date/Time, iar cmpul SUMA de tipul Currency.
se vor proiecta cele dou tabele; regulile de validare sunt: ID_CLIENT >= 1000,
ID_COMANDA >= 100,
se vor introduce datele cu ajutorul unui formular,
se va crea legtura corespunztoare cheii externe,
se va crea o interogare care s afieze cmpurile NUME, PRENUME, ADRESA,
NUMAR_COMANDA, DATA i SUMA,
se va scrie instruciunea SELECT pentru interogare.
2. Fie tabelele de mai jos din baza de date a unei magazin.
ANGAJATI
ID
100
200
300
400

Nume
Ionescu
Popescu
Georgescu
Vasilescu

Departament
Vanzari
Marketing
Contabilitate
Contabilitate

Functie
Agent
Agent
Contabil
Contabil

DEPARTAMENT
ID
100
200
300

Nume
Contabilitate
Marketing
Vanzari

Adresa
Craiova
Bucuresti
Craiova

Cheile primare ale celor daou tabele sunt cmpurile ID de tip numeric. Celelalte cmpuri
au tipul text.
se vor proiecta cele dou tabele,

36

se vor introduce datele n cmpurile Departament din tabela ANGAJATI i Nume din
tabela DEPARTAMENT cu ajutorul unei casete combinate (Combo Box),
se va crea o interogare care s afieze cmpurile ID, Nume, Department, Functie din
tabela ANGAJATI i cmpul Adresa din tabela DEPARTAMENT. Condiia de
selectare este cmpul Department al tabelei ANGAJATI s fie egal cu cmpul Nume
al tabelei DEPARTAMENT.

1.6 Intrebri de control


1. Care sunt cele dou forme ale instruciunii SELECT pentru selectarea coloanelor din
mai multe tabele?
2. Ce este integritatea referenial?
3. Care sunt paii la definirea grafic a relaiilor ntre tabele?
4. Care sunt paii la definirea programatic a relaiilor ntre tabele?
5. Cum se creaz un formular cu subformulare?

37

Potrebbero piacerti anche