Sunteți pe pagina 1din 57

PARTEA A II-A

Modele de lucrări în Microsoft Access 2013

1
Crearea unui proiect şi configurarea sesiunii de lucru în Microsoft Access

Crearea unui proiect de bază de date sub controlul MS Access reprezintă etapa de la care vom porni în
particularizarea lecţiilor practice asociate celei de-a doua părţi a lucrării de faţă. Numele proiectului nostru de
bază de date va fi Biblio şi se va referi la o parte a operaţiilor derulate într-o bibliotecă.
După deschiderea sesiunii de lucru MS Access, prin parcurgerea succesiunii de meniuri apelabile
din butonul Start: Start → Microsoft Office 2013 → Access 2013, vom ajunge în fereastra din figura 2.1,
unde delimităm următoarele componente:
- Un panou de lucru, în stânga, de unde putem selecta baze de date create anterior ,
- O zonă de selecție, în dreapta, cu structuri de date predefinite, inclusiv posibilitatea de a selecta o
bază de date nouă (Blank). Sesizăm că avem posibilitatea de a selecta structuro de date cum
ar fi: Asset tracking, Contacts, Struents, Task management, Inventory, etc.

2
1

Figura 2.1. Fereastra iniţială cu componentele MS ACCESS

Pentru crearea bazei de date Biblio, vom proceda la activarea iconiţei Blank desktop database
(notată de noi cu  în fereastra din figura nr. 2.1). Astfel, vom intra în fereastra din figura nr.2.2 în care
suntem puşi în situaţia de a preciza:
1. Numele noii baze de date. În cazul nostru Biblio;
2. Să selectăm folderul destinaţie. În cazul nostru D:\ISAid;
3. Să creăm noua structură (noul proiect de bază de date).

3
4 Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă

1 2

Figura 2.2. Fereastra de difiniere bază de date nouă

După completare cu datele solicitate, înainte de a da click pe Create vom avea.

Figura 2.3. Fereastra de difiniere bază de date Biblio

În figura nr. 2.4. prezentăm fereastra de lucru pentru proiectul Biblio în care pot fi regăsite
elementele de lucru necesare conceperii compenentelor bazei de date Biblio.

2 3
1
4

7
8
Figura 2.4. Interfață de lucru pentru definerea componentelor bazei de date Biblio

4
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 5

Pentru lucru cu datele structurate ale tabelelor, parte din baza de date dispunem de următoarele
elemente de control:
1. Buton Access pentru control general;
2. Linia cu butoane rapide: Save, Undo, Redo (Quick Access Toolbar);
3. Linia de titlu;
4. Meniu orizontal pentru apelarea benzilor de icoane;
5. Zonă rezervată benzilor de icoane;
6. Panou de control pentru obiectele bazei de date;
7. Instrumente de manipulare înregistrări din tabelă;
8. Linie de stare;
9. Linia de stare.

TTeem
maa nnrr.. 11
Crearea tabelelor şi definirea restricţiilor

Formularea cerinţelor
Pentru biblioteca judeţeană, se solicită o aplicaţie informatică centrată pe baza de date cu numele
biblio care este alcătuită din următoarele tabele:
CARTI {Nr_inv, Cota, Autori, Titlu, Vol, Cod_editura, An_pub, Loc_Pub, Pret, Data_in}
CITITORI {Cod_cit, NumePrenume, CNP, Strada, Localitatea, Judet}
EDITURI {Cod_editura, Denumire, Localit}
IMPRUMUT {Cod_cit, Nr_inv, Data_impr, Per}

Detalii:
 Nr_inv este un cod numeric atribuit fiecărei cărţi care intră în patrimoniul bibliotecii (mărime: 7
întregi şi 0 zecimale);
 Cota reprezintă o descriere sumară de 10 caractere text prin care se oferă informaţii despre
format, categorie, domeniu şi altele;
 Autori este un şir de 80 de caractere text atribuit autorului sau autorilor cărţii. La cărţile cu mai
mulţi autori, se vor lua în calcul doar primii trei;
 Titlu este un şir 80 de caractere text folosit pentru preluarea titlului pentru o carte;
 Vol este o valoare numerică (mărime: 2 întregi şi 0 zecimale);
 Cod_editura este un număr întreg (mărime: 3 întregi şi 0 zecimale);
 An_pub este un număr întreg (mărime: 4 întregi şi 0 zecimale);
 Loc_pub este un şir de 30 de caractere text pentru locul în care a apărut cartea;
 Pret este o valoare numerică (mărime: 6 întregi şi două zecimale);
 Data_in este data de intrare în patrimoniul bibliotecii;
 Cod_cit este un număr întreg atribuit cititorului înscris la bibliotecă (mărime: 6 întregi);
 NumePrenume reprezintă numele cititorului (mărime: 30 caractere text);
 CNP reprezintă codul numeric personal al cititorului (mărime: 13 caractere text);
 Strada reprezintă strada şi numărul străzii unde are domiciliul cititorul (mărime: un şir de 30 de
caractere text);
 Localitatea reprezintă denumirea localităţii de domiciliu a cititorului (mărime: un şir de 25 de
caractere text);
 Judeţ reprezintă denumirea judeţului de domiciliu a cititorului (mărime: un şir de 25 de caractere
text);
 Denumire reprezintă denumirea editurii care a editat cartea ce intră în patrimoniul bibliotecii
(mărime: un şir de 25 de caractere text);

Modele de lucrări în Microsoft Access 2013


6 Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă

 Localit reprezintă denumirea localităţii în care activează editura (mărime: un şir de 25 de


caractere text);
 Data_imp este data la care se realizează împrumutul;
 Per reprezintă numărul de zile pentru care se împrumută cartea (mărime: 2 întregi şi 0 zecimale);

Se cere să se parcurgă următoarele cerinţe practice:


1. Să se creeze cele trei tabele în condiţiile precizate la detaliile de mai sus.
2. Să se declare următoarele valori implicite:
- pentru CARTI.Vol: 1;
- pentru CARTI.An_pub: anul curent; Pentru această valoare implicită se va folosi Year(Date());
- pentru CITITORI.Judet: ’Iasi’;
- pentru IMPRUMUT.Data_impr: data zilei curente; Pentru această valoare implicită se va folosi
Date();
- pentru IMPRUMUT.Per: 14.
3. Să se definească următoarele restricţii la nivel de atribut:
- în tabela CARTI:
o literele din valorile atributului Cota sunt obligatoriu majuscule, expresia fiind:
StrComp(UCase([Cota]);[Cota];0)=0;
o prima literă din Titlu este majusculă:
StrComp(LEFT(UCase([titlu]);1); LEFT([titlu];1); 0) = 0
o Vol este o cifră cuprinsă între 1 şi 5;
o Pret este un număr întreg pozitiv.
- în tabela CITITORI:
o literele din valoarea atributului NumePrenume sunt, obligatoriu, majuscule;
- în tabela IMPRUMUT:
o Per poate fi una din următoarele valori: 1, 3, 7, 14 şi 21.
4. Să se definească următoarele restricţii la nivel de înregistrare:
- în tabela CARTI: anul publicării (An_pub) trebuie să fie mai mic sau egal cu anul extras din atributul
Data_in;
- în tabela IMPRUMUT: Perioada de împrumut (Per) va fi de 1 zi în luna decembrie a fiecărui an, ca
urmare a operaţiilor de inventariere.
5. Să se definească următoarele restricţii de tip cheie primară/alternativă (unicitate):
- în tabela CARTI:
o Nr_inv este cheia primară;
o Cota este cheie alternativă (unică);
- în tabela CITITORI:
o Cod_cit este cheia primară;
o CNP este cheie alternativă (unică);
- în tabela EDITURI, Cod_editură este cheia primară;
- în tabela IMPRUMUT, cheia primară este combinaţia
(Cod_cit, Nr_inv, Data_impr).
6. Să se definească următoarele restricţii referenţiale:
- între tabelele CARTI (copil) şi EDITURI (părinte), atributul de legătură este Cod_editura;
- între tabelele IMPRUMUT (copil) şi CARTI (părinte), atributul de legătură este Nr_inv.
- între tabelele IMPRUMUT (copil) şi CITITORI (părinte), atributul de legătură este Cod_cit.

Pentru păstrarea integrităţii referenţiale, se vor aplica regulile:


 între CARTI şi EDITURI:
o la ştergere din părinte: RESTRICTIONARE;
o la modificare în înregistrarea părinte: RESTRICTIONARE;
o la adăugare în tabela copil: RESTRICTIONARE.
 între IMPRUMUT şi CARTI:
o la ştergere din părinte: RESTRICTIONARE;
o la modificare în înregistrarea părinte: CASCADA;
6
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 7

o la adăugare în tabela copil: RESTRICTIONARE.


 între IMPRUMUT şi CITITORI:
o la ştergere din părinte: RESTRICTIONARE
o la modificare în înregistrarea părinte: CASCADA;
o la adăugare în tabela copil: RESTRICTIONARE.

Propunere de rezolvare
1. Pentru crearea celor patru tabele din baza de date biblio, vom proceda la preluarea tabelei Table1
din fereastra de lucru prezentată în figura 2.4, tabelă pe care o vom redenumi şi proiecta după cerinţele
temei. În prima etapă, vom crea doar atributele tabelei, aşa cum ni se cere la pct. 1. În figura 2.5,
prezentăm cei patru paşi de urmat pentru schimbarea numelui.

1 2

3
4

Figura 2.5. Etapele pentru schimbarea numelui din Table1 în CARTI

Explicaţii:
Pasul 1: Vom proceda la activarea icoanei Design View cu simbolul (Echer & Creion & Linie),
adică în modul de lucru proiectant de tabele;
Pasul 2: Localizăm fereastra Save As;
Pasul 3: Vom scrie CARTI în loc de Table1;
Pasul 4: Vom activa butonul OK.
După parcurgerea paşilor din figura precedentă, vom ajunge în fereastra din figura 2.6.

Modele de lucrări în Microsoft Access 2013


8 Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă

1 2

Figura 2.6. Fereastra de lucru pentru proiectarea tabelei CARTI


Notă: Pentru a câştiga spaţiu de lucru, vom proceda la a da click pe cele două săgeţi stânga de pe panelul de
navigare unde avem înscris acum All Tables (pasul 1).

În tabul CARTI, colorat cu galben, vom proceda la ştergerea numelui ID (pasul 2) şi vom introduce
primul atribut din tabela CARTI, adică Nr_inv în coloana Field Name, iar în coloana Data Type, vom tasta
n, ceea ce va determina apariţia valorii number. În acelaşi timp, vom avea în vedere să anulăm calitatea de
cheie primară, prin click pe icoana ce conţine o cheie (pasul 3 din figura 2.6).
Cu săgeată în jos de pe denumirea câmpului Nr_inv, vom trece la următorul câmp Cota ş.a.m.d. În
figura 2.7, prezentăm, pentru principalele atribute, modul în care au fost create.

Figura 2.7. Prezentare mod setare parametrii pentru atributele tabelei CARTI

Notă: Pentru atributul Preţ, vom avea aceeaşi definiţie ca la Nr_inv, cu menţiunea că se va stabili pentru
Decimal Places valoarea 2.

Pentru salvarea structurii declarate până în acest moment, vom proceda la a închide tabela CARTI
prin poziţionarea săgeţii mouse-ului pe tab-ul CARTI şi activarea meniului rapid cu click dreapta, după
care selectăm opţiunea Close, ceea ce va determina apariţia ferestrei prin care se solicită salvarea
modificărilor de structură pentru tabela CARTI. Din fereastra de mai sus, vom selecta Yes.

8
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 9

Figura 2.8. Salvarea modificărilor efectuate structurii tabelei CARTI

În mod similar, vom proceda şi pentru celelalte trei tabele: CITITORI, EDITURI şi IMPRUMUT. În
final, vom avea cele patru tabele cu structura din figura 2.9.

Figura 2.9. Tabelele din baza de date Biblio

Proiectantul de tabele pentru fiecare dintre cele trei tabele, CITITORI, EDITURI şi IMPRUMUT,
este cel din figura 2.10.

Figura 2.10. Structura celor trei tabele

Precizare: Atunci când se declară un atribut, în afara numelui său, mai trebuie specificat un număr
minim de proprietăţi, cum ar fi tipul (număr întreg (mai lung sau mai scurt), număr real, şir de caractere, dată
calendaristică etc.) şi lungimea. Prin opţiunile Format şi Input Mask, se poate controla modul în care se
vor afişa valorile fiecărui atribut la editarea tabelei respective.
Pentru uşurarea procesului de creare a tabelelor precedente, prezentăm, în tabelul 1, caracteristicile ce vor fi
avute în vedere pentru fiecare tabelă.

Modele de lucrări în Microsoft Access 2013


10 Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă

Tabel 1. Proprietăţile minimale ale atributelor celor patru tabele


Atribut Tip Lungime
(Field Name) (Data Type) (Field Size)
Tabela CARTI
Nr_inv Number Long Integer
Cota Short Text 10
Autori Short Text 80
Titlu Short Text 80
Vol Number Long Integer
Cod_editura Number Long Integer
An_pub Number Long Integer
Loc_pub Number Long Integer
Pret Number Long Integer
Data_in Date/Time Short Date
Tabela CITITORI
Cod_cit Number Long Integer
NumePrenume Short Text 30
CNP Short Text 13
Strada Short Text 30
Localitatea Short Text 25
Judet Short Text 25
Tabela EDITURI
Cod_editura Number Long Integer
Denumire Short Text 25
Localit Short Text 25
Tabela IMPRUMUT
Cod_cit Number Long Integer
Nr_inv Number Long Integer
Data_impr Date/Time Short Date
Per Number Long Integer

2. Declararea valorilor implicite presupune ca în modul de lucru cu proiectantul de tabele, adică


Design view, să se introducă în Default value valoarea implicită pentru fiecare din atribute.
Paşii de urmat în stabilirea acestor valori implicite pentru atributul CARTI.Vol sunt următorii:
- Pasul 1: Dublu click pe tabela căruia aparţine atributul de modificat, în cazul nostru, tabela
CARTI. Dacă nu va apărea numele tabelelor, este necesar să dăm click pe cele două săgeţi din panoul de
navigare (Navigation Pane), ceea ce va determina apariţia tuturor tabelelor, ca în figura 2.11 (partea din
stânga);
- Pasul 2: După ce a fost deschisă tabela în modul Datasheet view, se va trece în modul
proiectantului de tabele (Design view), prin click pe icoana „Echer &Creion&Linie“. Trebuie sesizat
faptul că în acest mod (Design view), tabelele au fost aduse în figura 2.10;
- Pasul 3: Se localizează atributul Vol;
- Pasul 4: În rubrica Default value, se introduce valoarea 1. Atenţie! Valoarea 1 se introduce fără
ghilimele sau apostrof, deoarece tipul atributului este number.
În figura 2.11, se prezintă paşii pentru stabilirea valorii implicite aferente atributului CARTI.Vol.

10
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 11

Figura 2.11. Paşii de urmat în stabilirea atributului CARTI.Vol

În mod similar, se va proceda şi cu celelalte atribute


- pentru CARTI.An_pub: anul curent; pentru această valoare implicită, se va folosi Year(Date());
- pentru CITITORI.Judet: ’Iasi’;
- pentru IMPRUMUT.Data_impr: data zilei curente; pentru această valoare implicită, se va folosi
Date();
- pentru IMPRUMUT.Per: 14.
Facem precizarea că valorile de tip Text se vor introduce între ghilimele sau apostrof, ca în cazul
atributului CITITORI.Judeţ, unde se va introduce ’Iasi’. Pentru atributele de tip dată calendaristică, se
folosesc funcţii ce pot fi introduse cu ajutorul modulului de construire a expresiilor (Expression Builder),
aşa cum prezentăm în figura 2.12, pentru stabilirea valorii implicite pentru atributul CARTI.An_pub.

Modele de lucrări în Microsoft Access 2013


12 Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă

Figura 2.12. Utilizarea modulul de construire a expresiilor


(Expression Builder) CARTI.An_pub

3. Stabilirea regulilor de validare la nivel de atribut presupune ca pentru fiecare tabelă să se ajungă
în modul de lucru cu proiectantul de tabele, Design view (a se vedea paşii 1 şi 2 de la stabilirea valorilor
implicite). În mod similar ca la stabilirea valorii implicite, stabilirea regulilor de validare la nivel de atribut
presupune ca în pasul al patrulea, vor fi folosite rubricile Validation Rule unde se introduce regula de
validare, ca de exemplu pentru CARTI.Cota StrComp(UCase([cota]),[cota],0)=0 şi Validation Text, unde se
poate introduce un text explicativ, care va anunţa utilizatorul de eventuala încălcare a restricţie pentru acel
atribut.
Restricţiile la nivel de atribut, de introdus pentru tabelele din baza de date biblio, sunt
următoarele:
- în tabela CARTI:
o literele din valorile atributului Cota sunt obligatoriu majuscule, expresia fiind (figura
2.13):
StrComp(UCase([cota]);[cota];0)=0;

12
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 13

Figura 2.13. Introducerea regulii de validare şi a mesajului


pentru atributul CARTI.Cota
Precizări: Expresia care asigură regula de validare a atributului este sugerată pe fiecare subiect de
examen, ceea ce va reduce gradul de dificultate al subiectelor. În cele ce urmează, oferim câteva explicaţii
pentru funcţiile folosite:
- Funcţia UCASE (UPPER CASE) face conversia unui şir de caractere prin înlocuirea tuturor
literelor mici cu litere mari (majuscule);
- Funcţia STRCOMP (STRING COMPARE) compară două şiruri de caractere.
În cazul nostru, se verifică dacă valoarea atributului Cota este egală cu valoarea convertită în
majuscule a aceluiaşi atribut. Dacă egalitatea se respectă, înseamnă că, de fapt, valoarea matricolului nu
conţine nicio literă mică, deci este corectă. Când rezultatul funcţiei StrComp este diferit de zero, înseamnă
că în valoarea matricolului, s-a strecurat măcar o literă mică (minusculă), ceea ce va însemna că nu se
respectă regula impusă şi se va afişa utilizatorului mesajul „Introduceti cota cartii cu MAJUSCULE!!!“.
Sfat: Dacă după introducerea regulii de validare, se constată că se obţine un mesaj de eroare, se va
proceda la schimbarea separatorului din ; cu , în expresia de mai sus. În plus, expresia de mai sus se poate
introduce cu ajutorul modulului de construire a expresiilor (Expression Builder) prin activarea celor trei
puncte... din rubrica Validation rule.
Notă: În acelaşi timp, la orice modificare a caracteristicilor şi sau a regulilor impuse atributelor sau
înregistrărilor, este necesar să se realizeze salvarea tabelei, prin răspunsul cu Yes la întrebarea pusă de sistem în
fereastra din figura 2.14.

Figura 2.14. Fereastra de salvare a tabelei

Modele de lucrări în Microsoft Access 2013


14 Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă

Dacă tabela reproiectată conţine înregistrări, printr-un mesaj corespunzător (vezi figura 2.15), se
solicită confirmarea verificării acestor înregistrări de către sistem. Recomandăm ca răspunsul să fie Yes.

Figura 2.15. Testarea înregistrărilor cu noile reguli

o prima literă din Titlu este majusculă:


În mod similar, se va proceda şi cu atributul Titlu, pentru care regula de validare va fi
StrComp(LEFT(UCase([titlu]);1); LEFT([titlu];1); 0) = 0, iar mesajul de validare va fi „Titlul cartii trebuie sa inceapa
cu MAJUSCULA!!!“.
o Vol este o cifră cuprinsă între 1 şi 5. Expresia de introdus în rubrica Validation Rule este:
[Vol] BETWEEN 1 AND 5
sau
[Vol] > 0 AND [Vol] <= 5
În rubrica Validation Text vom introduce mesajul
„Nr. volumului trebuie să fie cuprins între 1 şi 5!!!“
o Pret este un număr întreg pozitiv. Expresia de introdus în rubrica Validation Rule este:
[Pret] > 0
În rubrica Validation Text, vom introduce mesajul:
„Preţul trebuie să fie pozitiv!!!“

- în tabela CITITORI:
o literele din valoarea atributului NumePrenume sunt obligatoriu majuscule, expresia de
introdus în rubrica Validation Rule:
StrComp(UCase([NumePrenume]);[NumePrenume];0)=0;
În rubrica Validation Text, vom introduce mesajul:
„Numele şi prenumele trebuie introduse cu majuscule!!!“
- în tabela IMPRUMUT:
o Per este o valoare din următoarele (1, 3, 7, 14, 21). Expresia de introdus în rubrica
Validation Rule este:
[Per] IN (1;3;7;14;21)
În rubrica Validation Text, vom introduce mesajul:
„Nr. zilelor de împrumut trebuie să fie o valoare
dintre 1, 3, 7, 14, 21!!!“
Precizare: În cazul încălcării regulii de validare la nivelul atributului Per, adică se introduce valoarea
5, care nu se află în lista de valori 1, 3, 7, 14, 21, se va obţine mesajul din rubrica Validation Text, aşa cum se
prezintă în figura 2.16. După activarea butonului Yes, se va permite utilizatorului să se modifice valoarea 5, în
una din valorile recomandate.

Figura 2.16. Încălcarea regulii de validare

4. La nivelul unei înregistrări, se pot pune restricţii în care sunt implicate două sau mai multe
atribute din aceeaşi tabelă. Aceste restricţii se regăsesc sub denumirea de reguli de validare la nivel de
înregistrare. Pentru declararea restricţiei la nivel de înregistrare şi a mesajului de eroare afişabil, la
încălcarea restricţiei, se realizează parcurgerea următorilor paşi:
14
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 15

a. Aducerea tabelei de lucru în modul „proiectare“ (Design view), ca în figura 2.17, după ce s-a dat
dublu-click pe tabela de lucru şi s-a activat unul din butoanele Design view;
b. Activarea ferestrei din partea dreaptă Property Sheet, în cazul în care aceasta nu a fost dezactivată.
În cazul în care fereastra a fost dezactivată, atunci se va activa din tab-ul Design, grupul de icoane Show-
Hide icoana Property Sheet;
c. În fereastra Property Sheet, în rubrica Validation Rule, se introduce regula de validare, iar în
rubrica Validation Text, se va introduce textul ce se va afişa în cazul nerespectării restricţiei impuse prin
regula de validare.
În figura 2.17, exemplificăm paşii pentru tabela CARTI. Astfel, în rubrica Validation Rule, vom
introduce
[An_pub] <= Year(Data_in)
Regula de mai sus va impune ca anul publicării (An_pub) cărţii să nu fie mai mare decât anul extras
din data intrării (Data_in) cărţii în bibliotecă. În cazul în care nu se respectă această regulă, utilizatorul va
primi mesajul: „Anul publicarii nu este corect – verificati-l!!!“.
Mesajul de mai sus se va introduce în rubrica Validation Text.

2
1

Figura 2.17. Declararea unei reguli de validare la nivel de înregistrare

Ca urmare, în orice linie a tabelei CARTI, înainte de a se trece la altă linie, se va verifica întotdeauna
ca o carte să nu aibă anul publicării ulterior anului de intrare în bibliotecă. Cu alte cuvinte, nu poate să intre
o carte nepublicată încă in bibliotecă.
În cazul în care utilizatorul introduce un an al publicării ulterior anului de intrare în bibliotecă, se va
afişa un mesaj de înştiinţare, ca mesajul din figura 2.18.

Figura 2.18. Încălcarea unei reguli de validare la nivel de înregistrare

- Pentru tabela IMPRUMUT: Perioada de împrumut (Per) va fi de 1 sau 3 zile în luna decembrie a
fiecărui an, ca urmare a operaţiilor de inventariere. Mesajul care va apărea în cazul încălcării
restricţiei este „Modificati durata imprumutului la 1 zi!!!“. Astfel, în rubrica Validation Rule, se va
introduce
IIf(Month([Data_impr])<>12;True;IIf([Per]=1 Or [Per]=3;True;False)),
Modele de lucrări în Microsoft Access 2013
16 Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă

iar în rubrica Validation Text, vom introduce textul:


„Este luna decembrie: Modificati durata imprumutului la 1 sau 3 zile!!!“.
Precizare: Sesizăm faptul că pentru tabela IMPRUMUT, regula la nivel de înregistrare presupune
utilizarea operatorului logic OR. Este necesar să se reţină că în locul operatorului OR, se putea folosi şi
operatorul IN, care ar fi presupus rescrierea condiţiei din funcţia IIF, astfel: [Per] IN (1;3).
5. Este important de precizat faptul că până la acest moment, tabelele noastre din baza de date
biblio nu conţin înregistrări cu aceeaşi cheie primară, ceea ce ne permite să declarăm cheile primare şi
cele alternative fără probleme. În cazul în care aveţi înregistrări cu aceeaşi cheie, se impune ca acestea să
fie eliminate sau modificate. Pentru tabela CARTI, atributul Nr_inv este cheie primară, iar Cota este cheie
alternativă. Pentru declararea atributului Nr_inv cheie primară, se intră în modul Design pentru tabela
CARTI, se selectează atributul (un click stânga pe linia atributului) şi apoi se apasă (click) butonul din
dreapta al mouse-ului, din meniul contextual (vezi figura 2.19), alegându-se opţiunea Primary Key.

Figura 2.19. Declararea cheii primare Nr_inv

Notă: Cheia primară se poate declara şi prin activarea icoanei Primary key din banda de meniu Design.
În urma declarării cheii primare în faţa lui Nr_inv, va apărea o cheie mică , ca simbol de cheie
primară.
Pentru declararea cheii alternative Cota, vom proceda ca în figura 2.20, prin poziţionare pe atributul
Cota (1), prin activarea cadrului de pagină General (2), prin identificarea rubricii Indexed şi a săgeţii ataşate
(3) şi prin selectarea din meniul activat a opţiunii Yes (No Duplicates).

Figura 2.20. Declararea cheii alternative Cota în tabela CARTI


16
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 17

În mod similar, se procedează pentru tabela CITITORI şi EDITURI. Detaliile pentru aceste două
tabele sunt cele din figura 2.21.

Figura 2.21. Tabelele CITITORI şi EDITURI


după declararea cheilor primare şi alternative
În cazul tabelei IMPRUMUT, declararea cheii primare este puţin mai complicată, deoarece aceasta
este formată din mai multe atribute, adică este o cheie primară compusă din (Cod_cit, Nr_inv, Data_impr).
Aşa cum prezentăm în figura 2.22, pentru declararea cheii primare, vom realiza următoarele acţiuni:
1. Ţinem apăsată tasta Ctrl;
2. Cu săgeata mouse-ului, transformată în săgeată neagră , ne poziţionăm pe rând şi dăm click
în faţa fiecărui atribut ( – faţa reprezintă căsuţa de culoare albastră unde va apărea
semnul cheii primare) pe care dorim să-l avem inclus în cheia primară compusă. Cum avem
trei atribute, va trebui să dăm click pe fiecare din ele. A nu se uita că trebuie ţinută apăsată
tasta Ctrl în tot acest timp!
Notă: Dacă atributele sunt unul după altul, se poate folosi şi tasta Shift sau putem apela la operaţia Drag-
and-Draw.
3. După selectarea tuturor atributelor ce vor compune viitoarea cheie primară, vom activa fie
meniul rapid / contextual cu click dreapta din care selectăm Primary key, fie dăm click în
banda de meniu pe icoana cu Primary key.

Modele de lucrări în Microsoft Access 2013


18 Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă

Figura 2.22. Declararea cheii primare compuse în tabela IMPRUMUT

6. Restricţiile referenţiale sunt restricţiile aplicabile legăturilor dintre două tabele ale aceleiaşi baze
de date.
În acest context, legătura dintre două tabele este una de tip părinte-copil, unde tabela părinte este o
tabelă nomenclator, iar tabela copil este o tabelă de tranzacţii legate prin intermediul unui atribut comun de
acelaşi tip, de regulă, cu acelaşi nume.
Pentru o imagine de ansamblu asupra tabelelor din baza de date biblio, vom construi tabelul
alăturat.

18
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 19

Tabel 2. Analiza restricţiilor între cheile primare şi cele străine


Tabela părinte Tabela copil Observaţii
Nume Cheie Cheie Nume
primară străină
EDITURI Cod_editura Cod_editura CARTI A – nu se permite adăugarea în tabela
CARTI a unei cărţi pentru care nu există
o editură în tabela EDITURI
Ş – nu se permite ştergerea unei edituri
din tabela EDITURI, dacă aceasta are cărţi
corespondente în tabela CARTI
M – modificările care se fac în tabela
EDITURI sunt restricţionate în tabela CARTI
CARTI Nr_inv Nr_inv IMPRUMUT A – nu se permite adăugarea unui
împrumut în tabela IMPRUMUT, pentru
o carte care nu există în tabela CARTI
Ş – nu se permite ştergerea unei cărţi
din tabela CARTI, dacă aceasta are
împrumuturi înregistrate în tabela
IMPRUMUT
M – modificările care se fac în tabela
CARTI se transmit succesiv (cascadă)
în tabela IMPRUMUT
CITITORI Cod_cit Cod_cit IMPRUMUT A – nu se permite adăugarea unui
împrumut în tabela IMPRUMUT, pentru
un cititor care nu există în tabela CITITORI
Ş – nu se permite ştergerea unui cititor
din tabela CITITORI, dacă acesta
are împrumuturi înregistrate în tabela
IMPRUMUT
M – modificările care se fac în tabela
CITITORI se transmit succesiv (cascadă)
în tabela IMPRUMUT
A – Adăugare, Ş – Ştergere, M – Modificare

În cele ce urmează, prezentăm paşii pentru a pune în aplicare regulile impuse prin tabelul precedent:
 Primul pas presupune să se apeleze la instrumentul de declarare a legăturilor dintre tabele, prin
activarea icoanei Relationships din meniul Database Tools, aşa cum se vede în figura 2.23.

Figura 2.23. Apelarea opţiunii Relationships

 În pasul nr. 2, se apelează la meniul rapid (click dreapta) de afişare a tabelelor din baza de date, aşa
cum se vede în figura 2.24. Se va selecta opţiunea Show Table.

Modele de lucrări în Microsoft Access 2013


20 Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă

Figura 2.24. Apelarea meniului rapid cu click dreapta

 Selectarea tabelelor între care se stabilesc relaţii referenţiale. Astfel, în cazul nostru, din fereastra
Show Table, se va selecta tabela CARTI şi Add. În mod similar, se va proceda şi cu celelalte trei tabele.

Figura 2.25. Adăugarea tabelei CARTI în Relationships


După aducerea pe ecran a celor patru tabele, fereastra de lucru se va prezenta ca în figura 2.26.

Figura 2.26. Afişarea pe ecran a tuturor tabelelor din baza de date biblio

 Cu ajutorul săgeţii mouse-ului, se va proceda prin tehnica drag-and-draw, la legarea tabelelor


prin intermediul câmpurilor comune, adică o cheie primară din tabela părinte cu o cheie străină din tabela
copil. În prima etapă, vom lega cheia primară Cod_editura din EDITURI cu cheia străină Cod_editura din
CARTI (figura 2.27), ceea ce va genera apariţia ferestrei Edit Relationships, în care se vor activa pe rând:
1. Enforce Referential Integrity, 2. Create.

20
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 21

Figura 2.27. Declararea restricţiilor referenţiale între EDITURI şi CARTI

În urma declaraţiilor din fereastra din stânga a figurii 27, se va obţine legătura One-To-Many între
EDITURI şi CARTI (figura 2.27 dreapta).
În mod similar, se va proceda şi pentru legăturile dintre tabela părinte CARTI şi tabela copil
IMPRUMUT pe atributul comun Nr_inv. În fereastra Edit Relationships, în care se vor activa pe rând: 1.
Enforce Referential Integrity, 2. Cascade Update Related Fields, 3. Create.
Aceleaşi restricţii referenţiale vor fi avute în vedere şi între tabela părinte CITITORI şi tabela copil
IMPRUMUT pe atributul comun Cod_cit. Astfel, în fereastra Edit Relationships în care se vor activa pe
rând: 1. Enforce Referential Integrity, 2. Cascade Update Related Fields, 3. Create.
În final, relaţiile dintre cele patru tabele se prezintă ca în figura 2.28.

Figura 2.28. Schema finală a relaţiilor între tabelele bazei de date biblio

Modele de lucrări în Microsoft Access 2013


TTeem
maa nnrr.. 22
Editarea tabelelor şi navigarea printre înregistrări

Formularea cerinţelor
Pentru baza de date biblio (CARTI {Nr_inv, Cota, Autori, Titlu, Vol, Cod_editura, An_pub,
Loc_Pub, Pret, Data_in}; CITITORI {Cod_cit, NumePrenume, CNP, Strada, Localitatea, Judet};
EDITURI {Cod_editura, Denumire, Localit}; IMPRUMUT {Cod_cit, Nr_inv, Data_impr, Per}) creată
în capitolul 1, se solicită:

1. Să se adauge următoarele înregistrări în cele patru tabele:


În tabela EDITURI:
 (1001; ‘Teora’; ‘Bucuresti’)
 (1002; ‘All’; ‘Timisoara’)
 (1003; ‘Leda’; ‘Bucuresti’)
 (1004; ‘Albatros’; ‘Bucuresti’)
 (1005; ‘Polirom’; ‘Iasi’)
 (1006; ‘Niculescu’; ‘Bucuresti’)
 (1007; ‘Nemira’; ‘Bucuresti’)
 (1008; ‘Minerva’; ‘Bucuresti)’
 (1009; ‘Junimea’; ‘Iasi’)
 (1010; ‘Humanitas’; ‘Constanta’)
 (1011; ‘Didactica’; ‘Bucuresti’)
 (1012; ‘Asab’; ‘Roma’)

În tabela CITITORI:
 (2109; ‘Barbu Georgeta’; ‘2900114070029’; ‘Bd. Tudor Vladimirescu, nr. 78’; ‘Iasi’; ‘Iasi’)
 (2110; ‘Zaharia Maria’; ‘2890611270850’; ‘Str. Ulmului, nr. 4’; ‘Cluj’; ‘Cluj’)
 (2111; ‘Vornicu Sergiu’; ‘1890906336379’; ‘Bd. Republicii, nr. 78’; ‘Suceava’; ‘Suceava’)
 (2112; ‘Stanescu Sanda’; ‘2890916046193’; ‘Str. Cornisa, nr. 9’; ‘Bacau’; ‘Bacau’)
 (2113; ‘Marinescu Andrei’; ‘1890909330536’; ‘Aleea Rozelor, nr. 67’; ‘Iasi’; ‘Iasi’)
 (2114; ‘Angelescu Ioana’; ‘2890801375485’; ‘Str. Costache Negri, nr. 45’; ‘Iasi’; ‘Iasi’)
 (2115; ‘Romaniuc Rebeca’; ‘2890416226720’; ‘Str. Bularga, nr. 56’; ‘Iasi’; ‘Iasi’)
 (2116; ‘Aparaschivei Marius’; ‘1890314226703’; ‘Calea Bucovinei, nr. 234’; ‘Vatra Dornei’; ‘Suceava’)
 (2117; ‘Acatrinei Gabriela’; ‘2890624226711’; ‘Bd. Pacurari, nr. 35’; ‘Iasi’; ‘Iasi’)
 (2118; ‘Amarandei Cornel’; ‘1881128226844’; ‘Str. Parcului, nr. 15’; ‘Tg. Neamt’; ‘Neamt’)
 (2120; ‘Calistru Anca’; ‘2890306226721’; ‘Bd. Pacurari, nr. 42’; ‘Iasi’; ‘Iasi’)
 (2121; ‘Paduraru Vasile’; ‘1890727226779’; ‘Str. Manta Rosie, nr. 20’; ‘Iasi’; ‘Iasi’)
 (2122; ‘Anghel George’; ‘1891006226711’; ‘Str. Ciurchi, nr. 45’; ‘Iasi’; ‘Iasi’)
 (2123; ‘Ignat Irina’; ‘2900316226711’; ‘Str. Vasile Pogor, nr. 15’; ‘Iasi’; ‘Iasi’)
 (2124; ‘Acatrinei Sergiu’; ‘1891011226764’; ‘Bd. Copou, nr. 9’; ‘Iasi’; ‘Iasi’)
 (2125; ‘Dascalu Loredana’; ‘2890120226737’; ‘Str. Vitejiei, nr. 24’; ‘Vaslui’; ‘Vaslui’)
 (2126; ‘Topoliceanu Simona’; ‘2890505374520’; ‘Str. Ion Creanga, nr. 24’; ‘Piatra Neamt’; ‘Neamt’)
 (2127; ‘Cojocaru Olivia’; ‘2890626226707’; ‘Bd. Tudor Vladimirescu, nr. 10’; ‘Iasi’; ‘Iasi’)
 (2128; ‘Danis Daniel’; ‘1891122226758’; ‘Str Luceafarului, nr. 14’; ‘Suceava’; ‘Suceava’)
 (2129; ‘Ardeleanu Adina’; ‘2890921046208’; ‘Str. Arcului, nr. 243’; ‘Iasi’; ‘Iasi’)
 (2130; ‘Vernescu Mihai’; ‘2870623056318’; ‘Str. Macazului, nr. 9A’; ‘Iasi’; ‘Iasi’)

În tabela CARTI:
 (12136; ‘IT/12136’; ‘Perry Greg’; ‘Microsoft Office 2007’; 1; ‘1001; 2007; 64,00 ‘#21.03.2008#)
 (12137; ‘IT/12137’; ‘Gunderloy Mike’; ‘Office Access 2003’; 1; ‘1002; 2004; 35,00; #21.03.2008#)
 (12138; ‘II/12138’; ‘Drucker Peter’; ‘Managementul viitorului’; 1; ‘1012; 2004; 24,00; #09.04.2006#)
23
24 Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă

 (12139; ‘II/12139’; ‘Cehov Anton’; ‘Un roman cu un contrabas’; 1; ‘1003; 2005; 15,00; #11.03.2008#)
 (12140; ‘IV/12140’; ‘Plesu Andrei’; ‘Despre bucurie’; 1; ‘1010; 2006; 19,00; #13.03.2008#)
 (12141; ‘IV/12141’; ‘Austen Jane’; ‘Mandrie si prejudecata’; 1; ‘1010; 2007; 50,00; #21.03.2008#)
 (12142; ‘II/12142’; ‘Goma Paul’; ‘Soldatul cainelui’; 1; ‘1010; 2002; 20,00; #21.03.2008#)
 (12143; ‘I/12143’; ‘Turcanu Cristian’; ‘Arta de a trai’; 1; ‘1005; 2000; 11,00; #13.03.2008#)
 (12144; ‘X/12144’; ‘Rebreanu Liviu’; ‘Ion’; 1; ‘1005’ 1991; 28,00; #19.09.2004#)
 (12145; ‘X/12145’; ‘Eminescu Mihai’; ‘Poezii; 2; ‘1009; 2001; 12,00; #12.07.2009#)
 (12146; ‘X/12146’; ‘Verne Jules’; ‘Insula misterioasa’; 1; ‘1007; 2003’ 12,00; #19.09.2004#)
 (12147; ‘V/12147’; ‘Clavell James’; ‘Tai-Pan’; 1; ‘1004; 2002; 12,00; #19.09.2004#)
 (12148; ‘I/12148’; ‘Preda Marin’; ‘Morometii’; 1; ‘1007; 2006; 16,00; #10.07.2006#)
 (12149; ‘I/12149’; ‘Sadoveanu Mihail’; ‘Fratii Jderi’; 1; ‘1005; 2004; 15,00; #10.07.2006#)
 (12150; ‘I/12150’; ‘Arghezi Tudor’; ‘Flori de mucegai’; 1; ‘1008; 2003; 19,00; #12.07.2009#)
 (12151; ‘U/12151’; ‘Christie Agatha’; ‘Cianura spumoasa’; 1; ‘1005; 2008; 21,00; #12.07.2009#)
 (12152; ‘U/12152’; ‘Baudelaire Charles’; ‘Fleures de male’; 1; ‘1008; 2002’ 11,00; #10.07.2006#)
 (12153; ‘X/12153’; ‘Minulescu Ion’; ‘Poezii; 2; ‘1005; 2007; 11,00; #12.07.2009#)
 (12154; ‘X/12154’; ‘Bacovia George’ ‘Plumb’; 1; ‘1009; 1995; 23,00; #10.07.2006#)
 (12155; ‘X/12155’; ‘Blaga Lucian ‘‘Poezii’; 1; ‘1011; 1990; 17,00; #13.03.2008#)
 (12156; ‘I/12156’; ‘Creanga Ion’ ‘Amintiri din copilarie’; 1; ‘1009; 1990; 15,00; #13.03.2008#)
 (12157; ‘IT/12157’; ‘Mansfield Ron’ ‘Microsoft Windows Vista’; 1; 1006; 2008; 49,00; #12.07.2009#)
 (12158; ‘I/12158’; ‘Rebreanu Liviu’ ‘Rascoala’; 1; 1007; 2002; 15,00; #13.03.2008#)

În tabela IMPRUMUT:
 (2122; 12155; ‘16.12.2016’; 3)
 (2117; 12144; ‘18.12.2016’; 1)
 (2110; 12157; ‘21.12.2016’; 3)
 (2110; 12153; ‘06.01.2017’; 14)
 (2110; 12154; ‘05.02.2017’; 14)
 (2123; 12145; ‘21.02.2017’; 14)
 (2123; 12157; ‘21.02.2017’; 14)
 (2123; 12156; ‘21.02.2017’; 21)
 (2123; 12149; ‘21.02.2017’; 14)

2. Pentru a da posibilitatea preluării operaţiilor de returnare a cărţilor împrumutate, se solicită


modificarea structurii tabelei IMPRUMUT, cu adăugarea unui nou câmp (atribut) cu numele Data_retur, de
tip dată calendaristică.

3. Folosind o variantă de lucru Datasheet View, să se procedeze la realizarea următoarelor


operaţiuni:
- cititoarea Acatrinei Gabriela, cu codul cititor 2117, returnează, în data de 21.12.2016, cartea cu
codul 12144.
- cititoarea Zaharia Maria, cu codul cititor 2110, returnează, în data de 28.02.2017, următoarele
cărţi:
 codul 12153;
 codul 12154;
- în data de 3.03.2017, cititorul Anghel George, cu codul cititor 2122, returnează cartea cu codul
12155;
- cititoarea Angelescu Ioana, cu codul cititor 2114, împrumută în data de 07.03.2017, pentru 21 de
zile, următoarele cărţi:
 Ion cu codul 12144;
 Moromeţii cu codul 12148;
 Despre bucurie cu codul 12140;

4. În urma verificărilor interne, s-au constatat că:


- Prenumele cititorului cu codul 2122 este Georgel în loc de George;

24
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 25

- Adresa cititorului cu codul 2125 este greşită la stradă, astfel corect este Str. Vijeliei şi nu Str.
Vitejiei.
- Preţul cărţii cu număr de inventar 12138 este de 32 lei şi nu 24 lei.
- Fişa de împrumut pentru cărţile împrumutate în data de 07.03.2017 a cititorului Angelescu
Ioana, cod_cit 2114, a fost completată eronat, pentru perioada de împrumut cu 21 de zile. Astfel, se
impune ca aceasta să fie modificată pentru toate cărţile împrumutate, de la 21 de zile la 14 zile.

5. Să se şteargă următoarele înregistrări:


- în tabela CITITORI – înregistrarea corespunzătoare cititorului Vernescu Vasile;
- în tabela CARTI – înregistrarea corespunzătoare cărţii cu Nr_inv egal cu 12151.

6. În vederea editărilor pe grupuri de înregistrări, se cere să se afişeze într-o fereastră de lucru, pe


rând, pentru fiecare tabelă:
- În tabela CARTI:
 toate cărţile tipărite după 2003, inclusiv;
 toate cărţile care conţin în cotă particula IT;
 toate cărţile care editate de Ed. Polirom, după anul 2005.
- În tabela CITITORI:
 cititorii din judeţul Bacău sau Vaslui;
 cititorii care sunt de sex feminin.
- În tabela EDITURI:
 toate editurile din Bucureşti;
 toate editurile din afara Bucureştiului.

- În tabela IMPRUMUT:
 cărţile nereturnate;
 cărţile împrumutate în decembrie şi nereturnate încă.

Propunere de rezolvare
1. Operaţia de adăugare a înregistrărilor (populare) în tabele presupune lucrul direct în tabelă, care constă
în a scrie, rând pe rând, fiecare linie, cu respectarea următoarei restricţii: întâi se vor completa tabelele părinte
şi, mai apoi, tabelele copil.
Notă: În situaţia în care o tabelă este atât tabelă părinte, cât şi tabelă copil, trebuie să ne asigurăm că înaintea
populării ei, a fost populată tabela părinte corespunzătoare. În cazul nostru, avem:
a. tabele părinte: EDITURI şi CITITORI;
b. tabela părinte şi copil CARTI;
c. tabelă copil IMPRUMUT.

Ordinea de populare va fi: EDITURI, CITITORI, CARTI şi IMPRUMUT.


Pentru tabela EDITURI, trebuie să introducem datele de mai jos:
 (1001; ‘Teora’; ‘Bucuresti’)
 (1002; ‘All’; ‘Timisoara’)
 (1003; ‘Leda’; ‘Bucuresti’)
 (1004; ‘Albatros’; ‘Bucuresti’)
 (1005; ‘Polirom’; ‘Iasi’)
 (1006; ‘Niculescu’; ‘Bucuresti’)
 (1007; ‘Nemira’; ‘Bucuresti’)
 (1008; ‘Minerva’; ‘Bucuresti)’
 (1009; ‘Junimea’; ‘Iasi’)
 (1010; ‘Humanitas’; ‘Constanta’)
 (1011; ‘Didactica’; ‘Bucuresti’)
Modele de lucrări în Microsoft Access 2013
26 Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă

 (1012; ‘Asab’; ‘Roma’)

Vom prezenta ordinea operaţiilor de urmat pentru popularea tabelei EDITURI, aşa cum este precizată
în figura 2.29:
1. Dăm dublu click pe tabela EDITURI;
2. În cadranul din dreapta, apare tabela EDITURI deschisă şi pregătită să preia înregistrări.
Începând cu Cod_editura, vom introduce datele pentru editura Teora, adică (1001; Teora; Bucuresti);
3. După ce a fost introdus Bucureşti cu săgeată în jos, trecem la următorul rând;
4. Cu săgeată stânga, trecem la coloana a doua;
5. Cu o nouă săgeată, trecem în prima coloană a tabelei;
6. Vom introduce, începând cu Cod_editura, datele pentru a doua editură cu codul 1002.
În mod similar, se vor repeta etapele 3 – 6, până când vom popula tabela cu toatele datele pentru
toate editurile.

3
2
1

5 4

â
6

Figura 2.29. Ordinea acţiunilor de urmat în popularea tabelei EDITURI

La final, tabela EDITURI va conţine toate datele, aşa cum se prezintă în figura 2.30.

Figura 2.30. Tabela EDITURI populată


26
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 27

Pentru tabela CITITORI, trebuie să introducem datele de mai jos:


 (2109; ‘Barbu Georgeta’; ‘2900114070029’; ‘Bd. Tudor Vladimirescu, nr. 78’; ‘Iasi’; ‘Iasi’)
 (2110; ‘Zaharia Maria’; ‘2890611270850’; ‘Str. Ulmului, nr. 4’; ‘Cluj’; ‘Cluj’)
 (2111; ‘Vornicu Sergiu’; ‘1890906336379’; ‘Bd. Republicii, nr. 78’; ‘Suceava’; ‘Suceava’)
 (2112; ‘Stanescu Sanda’; ‘2890916046193’; ‘Str. Cornisa, nr. 9’; ‘Bacau’; ‘Bacau’)
 (2113; ‘Marinescu Andrei’; ‘1890909330536’; ‘Aleea Rozelor, nr. 67’; ‘Iasi’; ‘Iasi’)
 (2114; ‘Angelescu Ioana’; ‘2890801375485’; ‘Str. Costache Negri, nr. 45’; ‘Iasi’; ‘Iasi’)
 (2115; ‘Romaniuc Rebeca’; ‘2890416226720’; ‘Str. Bularga, nr. 56’; ‘Iasi’; ‘Iasi’)
 (2116; ‘Aparaschivei Marius’; ‘1890314226703’; ‘Calea Bucovinei, nr. 234’; ‘Vatra Dornei’; ‘Suceava’)
 (2117; ‘Acatrinei Gabriela’; ‘2890624226711’; ‘Bd. Pacurari, nr. 35’; ‘Iasi’; ‘Iasi’)
 (2118; ‘Amarandei Cornel’; ‘1881128226844’; ‘Str. Parcului, nr. 15’; ‘Tg. Neamt’; ‘Neamt’)
 (2120; ‘Calistru Anca’; ‘2890306226721’; ‘Bd. Pacurari, nr. 42’; ‘Iasi’; ‘Iasi’)
 (2121; ‘Paduraru Vasile’; ‘1890727226779’; ‘Str. Manta Rosie, nr. 20’; ‘Iasi’; ‘Iasi’)
 (2122; ‘Anghel George’; ‘1891006226711’; ‘Str. Ciurchi, nr. 45’; ‘Iasi’; ‘Iasi’)
 (2123; ‘Ignat Irina’; ‘2900316226711’; ‘Str. Vasile Pogor, nr. 15’; ‘Iasi’; ‘Iasi’)
 (2124; ‘Acatrinei Sergiu’; ‘1891011226764’; ‘Bd. Copou, nr. 9’; ‘Iasi’; ‘Iasi’)
 (2125; ‘Dascalu Loredana’; ‘2890120226737’; ‘Str. Vitejiei, nr. 24’; ‘Vaslui’; ‘Vaslui’)
 (2126; ‘Topoliceanu Simona’; ‘2890505374520’; ‘Str. Ion Creanga, nr. 24’; ‘Piatra Neamt’; ‘Neamt’)
 (2127; ‘Cojocaru Olivia’; ‘2890626226707’; ‘Bd. Tudor Vladimirescu, nr. 10’; ‘Iasi’; ‘Iasi’)
 (2128; ‘Danis Daniel’; ‘1891122226758’; ‘Str Luceafarului, nr. 14’; ‘Suceava’; ‘Suceava’)
 (2129; ‘Ardeleanu Adina’; ‘2890921046208’; ‘Str. Arcului, nr. 243’; ‘Iasi’; ‘Iasi’)
 (2130; ‘Vernescu Mihai’; ‘2870623056318’; ‘Str. Macazului, nr. 9A’; ‘Iasi’; ‘Iasi’)

În figura 2.31, avem tabela CITITORI după ce a fost deschisă cu dublu click pe numele acesteia (1)
şi după poziţionare pe Cod_cit (2).

2
1

Figura 2.31. Tabela CITITORI înainte de a fi populată

După introducerea datelor corespunzătoare primului cititor (2109; ‘Barbu Georgeta’; ‘2900114070029’;
‘Bd. Tudor Vladimirescu, nr. 78’; ‘Iasi’; ‘Iasi’), tabela CITITORI se prezintă ca în figura 2.32.

Figura 2.32. Tabela CITITORI după introducerea primului cititor

Notă: Aşa cum se observă, atât în figura 2.31, cât şi în figura 2.32, primul rând şi al doilea rând conţin, în
coloana Judeţ, valoarea implicită Iasi, aşa cum ni s-a solicitat la proiectarea bazei de date.

Modele de lucrări în Microsoft Access 2013


28 Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă

Pentru trecerea la a doua înregistrare, se poate acţiona săgeata în jos sau se poate merge în tab-ul
Home, grupul de iconiţe Records, de unde se activează butonul New.

Figura 2.33. Tabela CITITORI după popularea cu toţi cititorii

Pentru tabela CARTI, trebuie să introducem datele de mai jos:


 (12136; ‘IT/12136’; ‘Perry Greg’; ‘Microsoft Office 2007’; 1; ‘1001; 2007; 64,00 ‘#21.03.2008#)
 (12137; ‘IT/12137’; ‘Gunderloy Mike’; ‘Office Access 2003’; 1; ‘1002; 2004; 35,00; #21.03.2008#)
 (12138; ‘II/12138’; ‘Drucker Peter’; ‘Managementul viitorului’; 1; ‘1012; 2004; 24,00; #09.04.2006#)
 (12139; ‘II/12139’; ‘Cehov Anton’; ‘Un roman cu un contrabas’; 1; ‘1003; 2005; 15,00; #11.03.2008#)
 (12140; ‘IV/12140’; ‘Plesu Andrei’; ‘Despre bucurie’; 1; ‘1010; 2006; 19,00; #13.03.2008#)
 (12141; ‘IV/12141’; ‘Austen Jane’; ‘Mandrie si prejudecata’; 1; ‘1010; 2007; 50,00; #21.03.2008#)
 (12142; ‘II/12142’; ‘Goma Paul’; ‘Soldatul cainelui’; 1; ‘1010; 2002; 20,00; #21.03.2008#)
 (12143; ‘I/12143’; ‘Turcanu Cristian’; ‘Arta de a trai’; 1; ‘1005; 2000; 11,00; #13.03.2008#)
 (12144; ‘X/12144’; ‘Rebreanu Liviu’; ‘Ion’; 1; ‘1005’ 1991; 28,00; #19.09.2004#)
 (12145; ‘X/12145’; ‘Eminescu Mihai’; ‘Poezii; 2; ‘1009; 2001; 12,00; #12.07.2009#)
 (12146; ‘X/12146’; ‘Verne Jules’; ‘Insula misterioasa’; 1; ‘1007; 2003’ 12,00; #19.09.2004#)
 (12147; ‘V/12147’; ‘Clavell James’; ‘Tai-Pan’; 1; ‘1004; 2002; 12,00; #19.09.2004#)
 (12148; ‘I/12148’; ‘Preda Marin’; ‘Morometii’; 1; ‘1007; 2006; 16,00; #10.07.2006#)
 (12149; ‘I/12149’; ‘Sadoveanu Mihail’; ‘Fratii Jderi’; 1; ‘1005; 2004; 15,00; #10.07.2006#)
 (12150; ‘I/12150’; ‘Arghezi Tudor’; ‘Flori de mucegai’; 1; ‘1008; 2003; 19,00; #12.07.2009#)
 (12151; ‘U/12151’; ‘Christie Agatha’; ‘Cianura spumoasa’; 1; ‘1005; 2008; 21,00; #12.07.2009#)
 (12152; ‘U/12152’; ‘Baudelaire Charles’; ‘Fleures de male’; 1; ‘1008; 2002’ 11,00; #10.07.2006#)
 (12153; ‘X/12153’; ‘Minulescu Ion’; ‘Poezii; 2; ‘1005; 2007; 11,00; #12.07.2009#)
 (12154; ‘X/12154’; ‘Bacovia George’ ‘Plumb’; 1; ‘1009; 1995; 23,00; #10.07.2006#)
 (12155; ‘X/12155’; ‘Blaga Lucian ‘‘Poezii’; 1; ‘1011; 1990; 17,00; #13.03.2008#)
 (12156; ‘I/12156’; ‘Creanga Ion’ ‘Amintiri din copilarie’; 1; ‘1009; 1990; 15,00; #13.03.2008#)
 (12157; ‘IT/12157’; ‘Mansfield Ron’ ‘Microsoft Windows Vista’; 1; 1006; 2008; 49,00; #12.07.2009#)
 (12158; ‘I/12158’; ‘Rebreanu Liviu’ ‘Rascoala’; 1; 1007; 2002; 15,00; #13.03.2008#)

În figura 2.34, avem tabela CARTI după ce a fost deschisă cu dublu click pe numele acesteia (1) şi
după poziţionare pe Cod_cit (2).

28
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 29

1 2

Figura 2.34. Tabela CARTI înainte de populare


Notă: Sesizăm că în tabela CARTI, sunt două valori implicite pentru atributul Vol cu valoarea 1 şi pentru
atributul An_pub cu valoarea implicită anul extras din data sistemului, adică 2017.

După populare, tabela CARTI se va prezenta ca în figura 2.35.

Figura 2.35. Tabela CARTI după popularea cu toate cărţile

Pentru tabela IMPRUMUT, trebuie să introducem datele de mai jos:


 (2122; 12155; ‘16.12.2016’; 3)
 (2117; 12144; ‘18.12.2016’; 1)
 (2110; 12157; ‘21.12.2016’; 3)
 (2110; 12153; ‘06.01.2017’; 14)
 (2110; 12154; ‘05.02.2017’; 14)
 (2123; 12145; ‘21.02.2017’; 14)
 (2123; 12157; ‘21.02.2017’; 14)
 (2123; 12156; ‘21.02.2017’; 21)
 (2123; 12149; ‘21.02.2017’; 14)

Modele de lucrări în Microsoft Access 2013


30 Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă

Figura 2.36. Tabela IMPRUMUT după populare

2. Pentru a modifica structura unei tabele, este necesar:


a. să închidem toate tabelele deschise în modul de lucru Open sau Datasheet View, prin click pe x-ul
de pe linia unde apare numele tabelei (a se vedea figura 2.37, pe exemplul tabelei EDITURI).

Figura 2.37. Închiderea tabelei EDITURI

b. să deschidem tabela IMPRUMUT, cu dublu click pe numele ei (1), ca în figura 2.38 stânga;

Figura 2.38. Închiderea tabelei EDITURI


30
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 31

c. să trecem în modul de lucru Design View, prin click cu săgeata mouse-lui pe iconiţa cu linia şi
echerul din linia de stare (2), ca în figura 2.38 dreapta;
d. să poziţionăm cursorul sub câmpul Per şi să introducem numele noului atribut Data_retur, etapa
(1) din figura 2.39.

3 1

Figura 2.39. Adăugarea atributului Data_retur

e. să poziţionăm cursorul în rubrica Data Type şi să selectăm Date / Time din lista de opţiuni sau să
scriem noi Date/Time, etapa (2) din figura 2.39;
d. să selectăm tab-ul General, etapa (3) din figura 2.39;
e. să selectăm formatul Short Date, etapa (4) din figura 2.39;
f. să selectăm valoarea No pentru Required, etapa (5) din figura 2.39, ceea ce înseamnă că poate să
nu fie introdusă la realizarea împrumutului.
În final, structura tabelei IMPRUMUT, cu atributul Data_retur va arăta ca în figura 2.40.

Figura 2.40. Adăugarea atributului Data_retur

3. Referitor la operaţiile de adăugare a unor înregistrări şi de modificare a conţinutului atributului


Data_retur, se procedează astfel:
a. Pentru că împrumuturile se acordă cititorilor, se va deschide tabela CITITORI cu dublu click pe
numele său. Pentru ca să putem aduce modificări înregistrărilor copil din tabela IMPRUMUT, este necesar
ca tabela CITITORI să fie deschisă în modul de Datasheet View. Acest lucru se poate vedea pe linia de stare
a ferestrei de lucru, unde trebuie să apară Datasheet View. În cazul în care nu apare, accesăm tab-ul Home,
Modele de lucrări în Microsoft Access 2013
32 Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă

apoi grupul View, de unde selectăm Datasheet View. Există şi posibilitatea ca de pe linia de stare, să dăm
click pe iconiţa Datasheet View. Ambele variante sunt prezentate în figura 2.41.

Figura 2.41. Setarea modului de lucru Datasheet View

a. Înregistrarea returnării realizate în 21.12.2016 de către cititoarea Acatrinei Gabriela cu codul


cititor 2117, pentru cartea cu codul 12144.
În fereastra din figura de mai jos, vom da click pe iconiţa cu semnul + din faţa codului cititor pentru
2117 (1), acţiune urmată de afişarea înregistrărilor copil din tabelă IMPRUMUT, aşa cum se prezintă în
figura 2.42.

1
21.12.2016

Figura 2.42. Returnarea cărţii cu Nr_inv 12144 de către cititoarea cu Cod_cit 2117

În figura 2.42, se prezintă poziţionarea pe linia cărţii cu codul 12144 împrumutată de cititoarea cu
codul 2117 (etapa 2) şi completarea datei de returnare (etapa 3).
b. Operaţia de returnare efectuată de către cititoarea Zaharia Maria, cu codul cititor 2110, din data
de 28.02.2010 pentru cărţile cu codurile 12153 şi 12154, presupune:
- localizarea codului de cititor 2110 în tabela CITITORI;
- dublu click pe semnul + din faţa codului 2110;
- localizarea pointerului pe Data_retur corespunzătoare cărţii cu codul 12153;
- introducerea datei de returnare 28.02.2017;
- în mod similar, şi pentru cartea cu codul 12154, pentru care se introduce data returului de
28.02.2017.

Figura 2.43. Returnarea cărţilor de către cititoarea cu Cod_cit 2110


32
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 33

c. În figura 2.44, se prezintă operaţia de returnare efectuată în data de 3.03.2017, de către cititorul Anghel
George cu codul cititor 2122, pentru cartea cu codul 12155;

Figura 2.44. Returnarea cărţii cu Nr_inv 12155 de către cititorul cu Cod_cit 2122

d. Operarea împrumuturilor realizate de către cititoarea Angelescu Ioana cu codul cititor 2114, în
data de 07.03.2010, pentru 21 de zile, la următoarele cărţi: Ion cu codul 12144; Moromeţii cu codul
12148; şi Despre bucurie cu codul 12140, presupune parcurgerea următoarelor etape:
1. Identificarea în tabela CITITORI, a cititoarei Angelescu Ioana, cu codul cititor 2114;
2. Click pe plusul din faţa codului şi se va intra în tabela copil
IMPRUMUT asociată tabelei CITITORI;
3. În figura 2.45, se prezintă cele trei operaţii de adăugare pentru fiecare carte împrumutată.
Trecerea de la un rând la altul şi de la o coloană la alta se face cu ajutorul săgeţilor.

Figura 2.45. Împrumutarea celor 3(trei) cărți de cititorul cu Cod_cit 2114

Notă: Renunţarea la afişarea împrumuturilor asignate codului de cititor se face dând click pe semnul – din faţa
Cod_cit.

4. Realizarea modificărilor asupra înregistrărilor din tabele va presupune trecerea prin următoarele
acţiuni:
a. Prenumele cititorului cu codul 2122 este Georgel în loc de George;
Vom localiza, în tabela CITITORI, codul cititorului 2122, după care ne vom poziţiona în coloana
NumePrenume şi vom adăuga un „l“ la prenumele George.

Modele de lucrări în Microsoft Access 2013


34 Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă

Figura 2.46. Modificarea prenumelui la cititorul cu Cod_cit 2122

b. Adresa cititorului cu codul 2125 este greşită la stradă, astfel corect este Str. Vijeliei şi nu Str.
Vitejiei.
Vom localiza, în tabela CITITORI, codul cititorului 2125, după care ne vom poziţiona în coloana
Strada şi vom modifica din Vitejiei în Vijeliei.

Figura 2.47. Modificarea străzii la cititorul cu Cod_cit 2125

c. Preţul cărţii cu număr de inventar 12138 este de 32 lei şi nu 24 lei.


Pentru a realiza această modificare, vom parcurge următoarele etape: 1. intrăm în modul de
lucru Datasheet View, pentru tabela CARTI;
2. localizăm cartea cu numărul de inventar 12138;
3. selectăm 24 şi vom introduce 32.

Figura 2.48. Modificarea preţului la cartea cu Nr_inv 12138

d. Modificarea duratei de împrumut la cititorul cu Cod_cit 2114, la cele trei cărţi împrumutate în
data de 07.03.2010, se realizează astfel:
1. se deschide tabela CITITORI în modul de lucru Datasheet View;
2. se localizează clientul cu codul 2114;
3. se dă click pe semnul + din faţa codului 2114;
4. se identifică împrumuturile din data de 07.03.2010 şi se modifică perioada de împrumut de la 21
la 14 zile.

Figura 2.49. Modificarea perioadei la cărţile împrumutate în 7.03.2010


de cititorul cu codul 2114

5. Pentru ştergerea unei înregistrări, trebuie parcurs următorul algoritm:

34
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 35

a. Deschidem tabela în modul de lucru Datasheet View;


b. Selectăm rândul din tabelă de şters (1);
c. Din meniul contextual, selectăm Delete Record. Aceeaşi opţiune se poate activa din tab-ul
Home, grupul de opţiuni Records şi, de aici, iconiţa Delete (2).
d. Răspundem cu Yes la mesajul care va apărea cu privire la confirmarea ştergerii (3). În cazul în care
răspundem cu No la mesajul afişat, se va reafişa înregistrarea eliminată la etapa (2).

Figura 2.50. Ştergerea unui cititor

În figura 2.50, ilustrăm folosirea grupului Records, din tab-ul Home, pentru a şterge un cititor.

1 2

Figura 2.51. Ştergerea unei cărţi


În figura 2.51, ilustrăm utilizarea meniului contextual pentru a şterge o carte.
Notă: Se poate şterge un cititor sau o carte dacă nu are înregistrări copil în tabela IMPRUMUT.

6. Pentru realizarea unor editări pe grupuri de înregistrări direct în tabele sau pentru diferite
informări rapide, se recurge la operaţia de filtrare pe o singură tabelă.

Modele de lucrări în Microsoft Access 2013


36 Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă

Pentru tabela CARTI, se solicită:


 toate cărţile tipărite după 2003, inclusiv;
 toate cărţile care conţin în cotă particula IT;
 toate cărţile care editate de Ed. Polirom, după anul 2005;

În vederea derulării cu succes a operaţiilor de filtrare, este necesar să se identifice în tab-ul Home,
grupul de iconiţe Sort & Filter, din care putem realiza sortări ascendente/descendente, filtrări rapide,
filtrări avansate, aşa cum se observă în figura de mai jos.

Figura 2.52. Grupul de icoane Sort & Filter

a. Filtrarea înregistrărilor din tabela CARTI


 Prima filtrare constă în a selecta şi afişa cărţile tipărite după 2003, inclusiv.

Etapele de urmat în realizarea unei filtrări rapide sunt:


1. Deschidere tabelă în modul de lucru Datasheet View. În cazul nostru, tabela CARTI (1);
2. Poziţionare cursor în coloana care va fi sursă a filtrării. În cazul nostru, An_pub (2);
3. Activarea din Home, grupul Sort & Filter a iconiţei Filter (3);
4. Deselectarea butonului Select All şi activarea anilor 2003, 2004, 2005, 2006, 2007 şi 2008 (4);
5. Activarea butonului Ok (5).

2
1

Figura 2.53. Paşii de urmat în filtrarea rapidă

Rezultatul obţinut după parcurgerea paşilor 1 – 5 ilustraţi anterior este cel din figura 2.54.

36
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 37

Figura 2.54. Rezultatul la filtrare

Notă: Pentru a renunţa la filtrare, avem, pe ultimul rând din fereastra tabelei, butonul Filtered. La selectarea
acestui buton, se va dezactiva filtrul declarat.

O altă variantă de filtrare rapidă constă:


1. în poziţionare cursor pe una dintre valorile atributului / coloanei An_pub, ca de exemplu 2000, şi
activare meniu rapid cu click dreapta pe această coloană;
2. selectare opţiune Number Filters;
3. selectare opţiune Greater than...;
4. în fereastra cu mesajul An_pub is greater than or egual to, vom introduce 2003.
5. vom activa butonul Ok.

În figura 2.55, prezentăm paşii de mai sus. Rezultatele acestei filtrări sunt aceleaşi ca şi cele din
figura 2.53.

1
4

Figura 2.55. Filtrarea prin intermediul meniului rapid

- Pentru afişarea cărţilor care conţin în cotă particula IT, vom proceda la poziţionare pe una dintre
valorile coloanei Cota (1) şi apelare meniu rapid, activare opţiune Text Filter (2); activare opţiune Contains...
(3); introducere în fereastra Custom Filter la mesajul Cota contains a valorii IT (4) şi, în final, activarea
butonului Ok (5).

Modele de lucrări în Microsoft Access 2013


38 Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă

1
4
5

Figura 2.56. Filtrarea şi rezultatele pentru cărţile ce conţin în Cota IT

b. Filtrarea înregistrărilor din tabela CITITORI


 Cititorii din judeţul Bacău sau Vaslui;

Figura 2.57. Filtrarea şi rezultatele pentru cititorii din Bacău sau Vaslui

38
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 39

 Cititorii care sunt de sex feminin;


Pentru obţinerea ferestrei cu cititorii de sex feminin, vom proceda la apelarea meniului rapid pe
câmpul CNP, unde vom pune condiţia de filtru ca acesta să înceapă cu 2, în virtutea ideii că CNP-ul la
femei începe cu 2.

Figura 2.58. Filtrarea şi rezultatele pentru cititorii de sex feminin

c. Filtrarea înregistrărilor din tabela EDITURI:


 Toate editurile din Bucureşti;
Pentru a afla toate editurile din Bucureşti, putem apela la meniul rapid pe câmpul Localit din tabela
EDITURI, după care vom selecta din meniu opţiunea Text Filters, urmată de opţiunea Equals..., iar în
fereastra Custom Filter, la mesajul Localit is equal to Bucuresti.

Filtrarea şi rezultatele filtrării se regăsesc în figura 2.59.

Modele de lucrări în Microsoft Access 2013


40 Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă

Figura 2.59. Filtrarea şi rezultatele pentru editurile din Bucureşti

 Toate editurile din afara Bucureştiului.


Pentru a obţine lista cu editurile din afara Bucureştiului, se parcurg etapele precedente, cu
menţiunea că din ultimul meniu, se va activa opţiunea Does Not Equal..., iar în fereastra Custom Filter, se
va răspunde cu Bucureşti, la mesajul Localit is not equal to.

Figura 2.60. Filtrarea şi rezultatele pentru editurile din afara Bucureştiului

d. Filtrarea înregistrărilor din tabela IMPRUMUT:


 Cărţile nereturnate.
După deschiderea tabelei IMPRUMUT (1), se apelează, din tab-ul Home, grupul de iconiţe
Sort&Filter, butonul Advanced (2), urmată de apelarea din meniul vertical a opţiunii Filter by Form (3).
Această acţiune va avea ca efect schimbarea tabelei IMPRUMUT în apariţia IMPRUMUT: Filter by
Form. În acest Form, vom introduce, în dreptul atributului Data_retur Is Null (4), urmată de activarea
butonului Toggle Filter (Apply Filter) (5), ceea ce va avea ca efect apariţia, în tabela IMPRUMUT, a
înregistrărilor care îndeplinesc condiţia, adică nu au încă atribuită data returnării. În partea de jos, sunt
incluse, într-o fereastră, toate cărţile nereturnate la data filtrării.

40
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 41

2
1 3

5
4

Figura 2.61. Filtrarea şi rezultatele ei pentru a afla cărţile nereturnate

 Cărţile împrumutate în decembrie şi nereturnate.


Pentru a obţine lista cărţilor din decembrie care sunt încă nereturnate vom pune, în figura 2.61, o
condiţie nouă şi anume, luna din Data_impr să fie egală cu 12, adică month([Data_impr])=12.

1 3

6
4
5
v
7

Figura 2.62. Filtrare cu criteriu compus prin opţiunea Filter By Form


Notă: Acelaşi rezultat se obţine dacă se va folosi filtrarea avansată Advanced Filter/Sort, în condiţiile în care tabela
IMPRUMUT este deschisă (1).

Modele de lucrări în Microsoft Access 2013


42 Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă

1 5

3 4

Figura 2.63. Filtrare cu criteriu compus prin opţiunea Filter By Form

Notă: Din acest punct, se procedează la apelarea Toggle Filter, pentru vizualizarea rezultatelor.

42
TTeem
maa nnrr.. 33
Obţinerea de informaţii din baza de date

Formularea cerinţelor
Pe datele deja existente în baza de date biblio, după parcurgerea temelor 1 şi 2, vom proceda la
exploatarea (interogarea), adică obţinerea de informaţii necesare unei bune gestiuni şi luării de decizii de
către conducerea bibliotecii. Pentru obţinerea de informaţii din una sau mai multe tabele, se procedează la
folosirea frazei SELECT din limbajul standard de interogare (SQL).
Astfel, folosind fraze SELECT SQL, să se afle următoarele informaţii din baza de date:

1. Setul nr. 1 de cerinţe:


- Care sunt cititorii din judeţul Suceava şi localitatea Vatra Dornei?
- Care sunt cărţile publicate după 2003 şi intrate în bibliotecă în 2009?
- Care sunt cărţile mai scumpe de 20 de lei, dar tipărite înainte de 2005?
- Care sunt editurile din Iaşi?
- Care sunt editurile din Bucureşti?

2. Setul nr. 2 de cerinţe:


- Ce cărţi au fost împrumutate în luna februarie 2010?
- Ce cărţi au fost împrumutate şi returnate în februarie 2010?
- Care sunt editurile cărţilor împrumutate în 2010?
- Numele cititorilor şi adresele celor care au împrumutat cărţi de la editura Polirom în 2010;
- Numele cititorilor din Iaşi care au împrumutat cărţi în 2009;
- Numele cititorilor şi adresele celor care nu au returnat cărţile din decembrie 2009;
- Numele cititorilor, adresele şi cărţile cu scadenţa la împrumut depăşită.

3. Setul nr. 3 de cerinţe:


- Câte împrumuturi au fost realizate în 2010?
- Câte edituri sunt din Bucureşti?
- Câte edituri sunt din afara Bucureştiului?
- Care este perioada de întârziere cea mai mare, înregistrată de o carte împrumutată?
- Care este media zilelor de întârziere, pe total bibliotecă, la nivelul anului 2009?
- Câte cărţi a împrumutat cititorul cu numele Zaharia Maria?
- Câte cărţi împrumutate au cea mai mare perioadă de întârziere?
- Care sunt cărţile care au înregistrat cea mai mare perioadă de întârziere?

4. Setul nr. 4 de cerinţe:


- Numele cititorilor care au prenumele ca derivat de la Vasile;
- Câte cărţi sunt intrate pe fiecare an în bibliotecă?
- Care este numărul cărţilor publicate pe ani, din cele deţinute de bibliotecă?
- Să se afişeze anii în care numărul cărţilor publicate şi deţinute de biblioteca este mai mare sau
egal cu 3;
- Câte împrumuturi au fost sub 7 zile (inclusiv) în fiecare an?

5. Setul nr. 5 de cerinţe:


- Care sunt editurile care ale căror cărţi editate au fost împrumutate în 2010?
- Care sunt cititorii care au împrumutat mai mult de 2 cărţi?
- Care sunt editurile care au editate mai mult de 4 cărţi din cele deţinute de bibliotecă?

43
Propunere de rezolvare
Pentru obţinerea informaţiilor din bazele de date se foloseşte limbajul standard de interogare SQL.
Microsoft Access conţine propriul dialect SQL care se dovedeşte un limbaj destul de puternic şi de facil
pentru utilizatorul non-informatician. Răspunsurile la întrebările de mai sus vor fi obţinute folosind va-
rianta utilizării constructorului/proiectantului de interogări (Query Wizard sau Query Designer), precum
şi comenzile SELECT.

Setul nr. 1 de cerinţe


Specific primului set de întrebări este că informaţiile se obţin dintr-o singură tabelă.

Q1: Care sunt cititorii din judeţul Suceava şi localitatea Vatra Dornei?
Ipoteze de lucru:
 Tabela de lucru este CITITORI;
 Toate atributele vor face parte din tabela destinaţie;
 Localit trebuie să fie egal cu Vatra Dornei;
 Judet trebuie să fie egal cu Suceava;
 Numele interogării va fi CARTI_Q1.
Figura 2.64 arată paşii de urmat în lansarea constructorului de interogări.
(1) Se deschide tabela din care dorim şi extragem date despre cititori, adică tabela CITITORI;
(2) Se apelează tab-ul Create;
(3) Se activează iconiţa Query Wizard din grupul Other;
(4) Din fereastra New Query, selectăm opţiunea Simple Query Wizard;
(5) OK;
(6) Din fereastra Simple Query Wizard, dăm click pe butonul >>, pentru a trece toate câmpurile
disponibile din fereastra Available Fields în fereastra Selected Fields. În fereastra Available Fields, nu va
mai rămâne niciun câmp. Se pot folosi butoanele > pentru a trece câte un câmp. În cazul în care se doreşte
să se readucă un câmp din fereastra Selected Fileds în Available Fields, se pot folosi butoanele în sens
invers << sau <.
(7) Pasul (7) presupune vizualizarea şi acceptarea formei finale, aşa cum se prezintă lista cu toate
atributele din CITITORI;
(8) Next;
(9) Din următoarea fereastră Simple Query Wizard, selectăm butonul radio, cu opţiunea Modify the
query design, pentru a impune condiţiile legate de localitate şi judeţ;
(10) Finish;
(11) În fereastra nou afişată, în care se prezintă grafic tabela CITITORI cu câmpurile ei şi lista
câmpurilor selectate ce vor face parte din viitoarea tabelă rezultat, vom introduce pe rândul Criteria, în
dreptul câmpului Localit valoarea Vatra Dornei;
(12) Pe acelaşi rând Criteria, dar în dreptul câmpului Judet, vom introduce Suceava.
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 45

Figura 2.64. Paşii de urmat în interogarea asistată

Figura 2.65. Scrierea condiţiilor în Criteria şi obţinerea rezultatelor

În figura 2.65, se prezintă continuarea interogării asistate. În partea de sus, este ilustrată scrierea
condiţiilor de respectat în linia Criteria, urmată de executarea interogării (1). În partea de jos, sunt
prezentate rezultatele interogării.

Notă: Se observă din figura 2.65 că numele tabelei rezultat este CITITORI_Query1, deoarece între etapa 8 şi 9,
nu am modificat titlul asociat automat de către MS Office Access. În acest moment, putem închide această tabelă
rezultat, prin apelarea meniului contextual / rapid cu click-dreapta pe numele CITITORI_Query1 şi selectare Close,
după care mergem în panoul de navigare şi apelăm meniul contextual pe CITITORI_Query1, ceea ce va da posibilitatea
selectării opţiunii Rename. Pentru numele nou, vom folosi CITITORI_Q1.

Q2: Care sunt cărţile publicate după 2003 şi intrate în bibliotecă în 2009?
Ipoteze de lucru:
 Tabela de lucru este CARTI;
 Toate atributele vor face parte din tabela destinaţie;

Modele de lucrări în Microsoft Access 2013


 An_pub trebuie să fie mai mare sau egal cu 2003;
 Anul extras din Data_in trebuie să fie egal cu 2009;
 Numele interogării va fi CARTI_Q2.

În lista de atribute, va apărea un atribut nou cu numele Expr1, calculat astfel Year([Data_in]). Acest
atribut nu va fi inclus în tabela destinaţie.
În cazul următor, vom proceda în mod similar ca la prima interogare, respectând etapele din figurile
2.62 şi 2.63, cu precizarea că se schimbă tabela de lucru şi condiţiile impuse.
În figura 2.66, se prezintă condiţiile de completat şi rezultatul interogării.

Figura 2.66. Construirea interogării Q2 şi rezultatele acesteia

Notă: În partea de sus a figurii precedente este prezentat modul de lucru cu constructorul de interogări, iar în partea
de jos rezultatele la lansarea în execuţie a interogării.

Q3: Care sunt cărţile mai scumpe de 20 de lei, dar tipărite înainte de 2005?
Ipoteze de lucru:
 Tabela de lucru: CARTI;
 Toate atributele vor face parte din tabela destinaţie;
 An_pub trebuie să fie mai mic sau egal cu 2005;
 Pret trebuie să fie mai mare sau egal cu 20;
 Numele interogării va fi CARTI_Q3.

Figura 2.67. Construirea interogării CARTI_Q3 şi rezultatele acesteia

Q4: Care sunt editurile din Iaşi?


Ipoteze de lucru:
 Tabela de lucru: EDITURI;
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 47

 Toate atributele vor face parte din tabela destinaţie;


 Localit trebuie să fie egal cu Iasi;
 Numele interogării va fi EDITURI_Q4.

Figura 2.68. Construirea interogării EDITURI_Q4 şi rezultatele acesteia

Q5: Care sunt editurile din Bucureşti?


Ipoteze de lucru:
 Tabela de lucru: EDITURI;
 Toate atributele vor face parte din tabela destinaţie;
 Localit trebuie să fie egal cu Bucuresti;
 Numele interogării va fi EDITURI_Q5.

Figura 2.69. Construirea interogării EDITURIQ5 şi rezultatele acesteia

Setul nr. 2 de cerinţe


În acest set, vom obţine informaţii din interogarea a două sau mai multe tabele. Pentru aceasta, vom
apela la Query Design din grupul de iconiţe Other din cadrul tab-ului Create.

Q6: Ce cărţi au fost împrumutate în luna februarie 2010?


Ipoteze de lucru:
 Tabelele de lucru: CARTI şi IMPRUMUT;
 Din tabela CARTI, vom selecta câmpurile: Cota şi Titlu;
 Din tabela IMPRUMUT, vom selecta câmpul: Data_impr;
 C1: Month([Data_impr]) trebuie să fie egal cu 2;
Modele de lucrări în Microsoft Access 2013
 C2: Year([Data_impr]) trebuie să fie egal cu 2010;
 Câmpurile C1 şi C2 vor fi incluse în tabela rezultat;
 Numele interogării va fi Q6.

Etapele de urmat în construirea interogării sunt:


1. Apelăm tab-ul Create;
2. Din grupul Other, acţionăm iconiţa Query Design;
3. Din fereastra Show Table, ne poziţionăm pe tabela CARTI şi activăm butonul Add;
4. Din fereastra Show Table, ne poziţionăm pe tabela IMPRUMUT şi activăm butonul Add;
5. Din fereastra Show Table, activăm butonul Close;
6. În zona marcată cu nr. 6, apar cele două tabele legate între ele. Tabela părinte CARTI cu
valoarea 1 şi tabela copil IMPRUMUT cu valoarea ∞.

Figura 2.70. Primii 6 paşi la interogarea Q6


Continuarea lucrului în vederea finalizării interogării este prezentată în figura 2.71.
7. La poziţionarea pe săgeata primului câmp, va apărea un meniu vertical;
8. Din meniul vertical, vom alege CARTI.Cota;
9. După ce a fost selectat CARTI.Cota, se va afişa, în primul câmp, Cota pe rândul Field, CARTI
pe rândul Table şi bifa pe rândul Show; rezultatul este vizualizat în dreptul săgeţii cu nr. 9;
10. În mod similar, ne poziţionăm pe săgeata de la al doilea câmp, în dreptul căruia va apărea
meniul vertical;
11. Din meniul vertical, vom alege CARTI.Titlu;
12. După ce a fost selectat CARTI.Titlu, se va afişa, în primul câmp Titlu pe rândul Field, CARTI pe
rândul Table şi bifa pe rândul Show.

Figura 2.71. Paşii 7 – 11 la interogarea Q6


Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 49

În mod similar, se va proceda pentru a treia coloană unde se va selecta din meniul vertical
IMPRUMUT.Data_impr – vezi figura următoare (12).
Pentru coloana a patra, se va introduce pe linia Field C1: Month ([Data_ impr]), pe linia Criteria,
valoarea 2 corespunzătoare lunii februarie, iar pe linia Show, se va menţine bifa – vezi figura următoare
(13).
Pentru coloana a cincea, se va introduce pe linia Field C2: Year ([Data_ impr]), pe linia Criteria,
valoarea 2010 corespunzătoare anului 2010, iar pe linia Show, se va menţine bifa – vezi figura următoare
(14).

Figura 2.72. Paşii 12 – 15 la interogarea Q6

Pentru lansarea în execuţie, se va activa iconiţa Run din grupul Results aferent tab-ului Design –
vezi (15) în figura 2.72.
În figura de mai jos, sunt prezentate rezultatele execuţiei.

Figura 2.73. Rezultatele la interogarea Q6

Schimbarea numelui din Query2 în Q6 se face respectând etapele 1 – 5 din figura 2.74.

Figura 2.74. Schimbarea numelui interogării Q6


Notă: Din meniul rapid, se poate selecta şi opţiunea Save şi urmarea etapelor de declarare a numelui Q6.

Modele de lucrări în Microsoft Access 2013


Codul aferent interogării Q6 este următorul:
SELECT CARTI.Cota, CARTI.Titlu, IMPRUMUT.Data_impr, Month([Data_impr]) AS C1, Year([Data_impr]) AS C2
FROM CARTI INNER JOIN IMPRUMUT ON CARTI.Nr_inv = IMPRUMUT.Nr_inv
WHERE (((Month([Data_impr]))=2) AND ((Year([Data_impr]))=2010));
Precizare: Fraza SELECT, corespunzătoare oricărei interogări după ce a fost construită cu
constructorul de interogări, se regăseşte astfel:
1. prin deschiderea interogării, în cazul nostru Q6, prin dublu click pe numele acesteia;
2. din Tab-ul Home, grupul View, se va selecta opţiunea SQL View, ceea ce va genera afişarea
codului aferent.

Figura 2.75. Vizualizarea codului SQL pentru Q6

Q7: Ce cărţi au fost împrumutate şi returnate în februarie 2010?


Ipoteze de lucru:
 Tabelele de lucru: CARTI şi IMPRUMUT;
 Din tabela CARTI, vom selecta câmpurile: Cota şi Titlu;
 Din tabela IMPRUMUT, vom selecta câmpul: Data_retur;
 C1: Month([Data_retur]) trebuie să fie egal cu 2;
 C2: Year([Data_retur]) trebuie să fie egal cu 2010;
 Câmpurile C1 şi C2 nu vor fi incluse în tabela rezultat;
 Numele interogării va fi Q7.

Figura 2.76. Interogarea Q7 şi vizualizarea rezultatelor

Codul sursă pentru interogarea Q7 este următorul:


SELECT CARTI.Cota, CARTI.Titlu, IMPRUMUT.Data_retur
FROM CARTI INNER JOIN IMPRUMUT ON CARTI.Nr_inv = IMPRUMUT.Nr_inv
WHERE (((Month([Data_retur]))=2) AND ((Year([Data_retur]))=2010));

Q8: Care sunt editurile cărţilor împrumutate în 2010?


Ipoteze de lucru:
 Tabelele de lucru: CARTI, EDITURI şi IMPRUMUT;
 Din tabela IMPRUMUT, vom selecta câmpurile: Nr_inv şi Data_impr;
 Din tabela CARTI, vom selecta câmpul: Titlu;
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 51

 Din tabela EDITURI, vom selecta câmpul: Denumire;


 C1: Year([Imprumut.Data_impr]) trebuie să fie egal cu 2010;
 Câmpul C1 nu va fi inclus în tabela rezultat.

Numele interogării va fi Q8.

Figura 2.77. Interogarea Q8 şi vizualizarea rezultatelor

3. Setul nr. 3 de cerinţe

Q9: Numele cititorilor şi adresele celor care au împrumutat cărţi de la editura Polirom în 2010.
Ipoteze de lucru:
 Tabelele de lucru: CITITORI, CARTI, EDITURI şi IMPRUMUT;
 Din tabela CITITORI vom selecta câmpurile: NumePrenume, Strada, Localitatea şi Judet;
 Din tabela CARTI, vom selecta câmpul: Titlu;
 Din tabela EDITURI, vom selecta câmpul: Denumire.
Se va pune condiţia ca Denumire să fie egală cu Polirom;
 Din tabela IMPRUMUT, vom selecta câmpul: Data_impr;
 C1: Year([Imprumut.Data_impr]) trebuie să fie egal cu 2010;
 Câmpul C1 nu va fi inclus în tabela rezultat;

Modele de lucrări în Microsoft Access 2013


Numele interogării va fi Q9.

Figura 2.78. Interogarea Q9 şi vizualizarea rezultatelor

În figura 2.79, se prezintă apelarea la meniul rapid pe numele Query2 pentru salvare (1) şi
vizualizarea codului SQL prin apelarea meniului rapid prin click dreapta pe Q9.

Figura 2.79. Interogarea Q9 şi vizualizarea rezultatelor

Codul sursă SQL pentru Q9 este următorul:


SELECT CITITORI.NumePrenume, CITITORI.Strada, CITITORI.Localitatea, CITITORI.Judet, CARTI.Titlu, EDITURI.Denumire,
IMPRUMUT.Data_impr
FROM CITITORI INNER JOIN ((EDITURI INNER JOIN CARTI ON EDITURI.Cod_Editura = CARTI.Cod_editura) INNER JOIN
IMPRUMUT ON CARTI.Nr_inv = IMPRUMUT.Nr_inv) ON CITITORI.Cod_cit = IMPRUMUT.Cod_cit
WHERE (((EDITURI.Denumire)="Polirom") AND ((Year([Data_impr]))=2010));
Notă: Pentru obţinerea listei ordonate după numele cititorilor, se va folosi clauza ORDER BY urmată de
NumePrenume, ca în cele ce urmează:
SELECT CITITORI.NumePrenume, CITITORI.Strada, CITITORI.Localitatea, CITITORI.Judet, CARTI.Titlu, EDITURI.Denumire,
IMPRUMUT.Data_impr
FROM CITITORI INNER JOIN ((EDITURI INNER JOIN CARTI ON EDITURI.Cod_Editura = CARTI.Cod_editura) INNER JOIN
IMPRUMUT ON CARTI.Nr_inv = IMPRUMUT.Nr_inv) ON CITITORI.Cod_cit = IMPRUMUT.Cod_cit
WHERE (((EDITURI.Denumire)="Polirom") AND ((Year([Data_impr]))=2010))
ORDER BY Cititori.NumePrenume

Q10: Numele cititorilor din Iaşi care au împrumutat cărţi în 2009?

Pentru a obţine această informaţie, vom proceda la scrierea comenzii SQL, fără să mai folosim
constructorul de interogări şi fără să mai aducem pe ecran o tabelă anume, ceea ce înseamnă că vom apela
tab-ul Create (1); din grupul de iconiţe Other, vom activa Query Design (2), dar la apariţia ferestrei Show
table, vom apăsa butonul Close (3), apoi vom apela meniul rapid pe numele Query2 cu click dreapta (4), din
care vom selecta SQL view (5) – a se vedea fereastra 74.
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 53

Ipoteze de lucru:
 Tabelele de lucru: CITITORI, CARTI şi IMPRUMUT;
 Din tabela CITITORI, vom selecta câmpurile: NumePrenume, Strada, Localitatea şi Judet;
 Din tabela CARTI, vom selecta câmpul: Titlu;
 Din tabela IMPRUMUT, vom selecta câmpul: Data_impr;
 C1: Year([Imprumut.Data_impr]) trebuie să fie egal cu 2009;
 Câmpul C1 nu va fi inclus în tabela rezultat.

Numele interogării va fi Q10.

Figura 2.80. Renunţarea la fereastra de adăugare a tabelelor

În fereastra cu numele Query2, vom introduce:


SELECT CITITORI.NumePrenume, CITITORI.Strada, CITITORI.Localitatea,
CITITORI.Judet, CARTI.Titlu, IMPRUMUT.Data_impr
FROM CITITORI INNER JOIN (CARTI INNER JOIN IMPRUMUT ON CARTI.Nr_inv
= IMPRUMUT.Nr_inv) ON CITITORI.Cod_cit = IMPRUMUT.Cod_cit
WHERE (((CITITORI.Localitatea)="Iasi") AND ((Year([Data_impr]))=2009));
După salvarea cu Q10 şi lansarea în execuţie, vom avea rezultatul din figura 2.81.

Figura 2.81. Rezultatele execuţiei interogării Q10

Q11: Numele cititorilor şi adresele celor care nu au returnat cărţile din decembrie 2009
Ipoteze de lucru:
 Tabelele de lucru: CITITORI, CARTI şi IMPRUMUT;
 Din tabela CITITORI, vom selecta câmpurile: NumePrenume, Strada, Localitatea şi Judet;
 Din tabela CARTI, vom selecta câmpul: Titlu;
 Din tabela IMPRUMUT, vom selecta câmpul: Data_impr;
 Din tabela IMPRUMUT, vom selecta câmpul: Data_retur care trebuie să fie NULL. Atributul
acesta nu trebuie să apară în tabela rezultat;
 C1: Month([Imprumut.Data_impr]) trebuie să fie egal cu 12;
 C1: Year([Imprumut.Data_impr]) trebuie să fie egal cu 2009;
 Câmpurile C1 şi C2 nu vor fi incluse în tabela rezultat.
Numele interogării va fi Q11.
Vom prezenta, în cele ce urmează, doar forma comenzii SQL scrise şi rezultatul execuţiei.
Comanda SQL este:
SELECT CITITORI.NumePrenume, CITITORI.Strada, CITITORI.Localitatea, CITITORI.Judet,
CARTI.Titlu, Month([Data_impr]) AS C1, Year([Data_impr]) AS C2

Modele de lucrări în Microsoft Access 2013


FROM CITITORI INNER JOIN (CARTI INNER JOIN IMPRUMUT ON CARTI.Nr_inv =
IMPRUMUT.Nr_inv) ON CITITORI.Cod_cit = IMPRUMUT.Cod_cit
WHERE (((IMPRUMUT.Data_retur) Is Null) AND ((Month([Data_impr]))=12) AND
((Year([Data_impr]))=2009));

Figura 2.82. Interogarea Q11 şi rezultatul execuţiei

Q12: Numele cititorilor, adresele şi cărţile cu scadenţa la împrumut depăşită


Ipoteze de lucru:
 Tabelele de lucru: CITITORI, CARTI şi IMPRUMUT;
 Din tabela CITITORI, vom selecta câmpurile: NumePrenume, Strada, Localitatea şi Judet;
 Din tabela CARTI, vom selecta câmpul: Titlu;
 Din tabela IMPRUMUT, vom selecta câmpul: Data_impr;
 Din tabela IMPRUMUT, vom selecta câmpul: Data_retur care trebuie să fie NULL. Atributul
acesta nu va fi inclus în tabela rezultat;
 Depasire: (Date()-[Imprumut.Data_impr])-[Per]) trebuie să fie mai mare decât 0;
 Câmpurile C1 şi C2 nu vor fi incluse în tabela rezultat;
Numele interogării va fi Q12.
Codul interogării este următorul:
SELECT CITITORI.NumePrenume, CITITORI.Strada, CITITORI.Localitatea, CITITORI.Judet,
CARTI.Titlu, IMPRUMUT.Data_impr, (Date()-[Data_impr])-[per] AS Depasire
FROM CITITORI INNER JOIN (CARTI INNER JOIN IMPRUMUT ON
CARTI.Nr_inv=IMPRUMUT.Nr_inv) ON CITITORI.Cod_cit=IMPRUMUT.Cod_cit
WHERE ((((Date()-[Data_impr])-[per])>0) AND ((IMPRUMUT.Data_retur) Is Null));

Setul nr. 4 de cerinţe

În cadrul acestui set de întrebări, apare necesitatea efectuării de calcule statistice pe datele cuprinse
în baza de date.

Q13: Câte împrumuturi au fost realizate în 2010?


SELECT Count(*) AS Nr_impr_2010
FROM Imprumut
WHERE (((Year([Data_impr]))=2010));

Q14: Câte edituri sunt din Bucureşti?


SELECT Count(*) AS Nr_Edit_Buc
FROM Edituri
WHERE Edituri.[Localit]="Bucuresti";

Sau fără paranteze drepte, pentru că numele câmpului nu conţine spaţii:


SELECT Count(*) AS Nr_Edit_Buc
FROM Edituri
WHERE Edituri.Localit="Bucuresti";

Q15: Câte edituri sunt din afara Bucureştiului?


SELECT Count(*) AS Nr_Edit_Alte
FROM Edituri
WHERE Edituri.Localit<>"Bucuresti";
Q16: Care este perioada de întârziere cea mai mare înregistrată de o carte împrumutată?
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 55

SELECT Max((Date()-[Data_impr])-[Per]) AS Max_per


FROM IMPRUMUT;

Q17: Care este media zilelor de întârziere pe total bibliotecă la nivelul anului 2009?
SELECT AVG((Date()-[Data_impr])-[Per]) AS Medie_2009
FROM IMPRUMUT
WHERE Year(Data_impr)=2009;

Q18: Câte cărţi a împrumutat cititorul cu numele Zaharia Maria?


Mai întâi, aflăm Cod_cit din tabela CITITORI.
SELECT Cod_cit
FROM Cititori
WHERE Cititori.NumePrenume="Zaharia Maria"

După ce am aflat codul cititorului, vom folosi operatorul IN, utilizând astfel o subinterogare în clauza
WHERE.
SELECT COUNT(*) AS NR_carti
FROM Imprumut
WHERE Imprumut.Cod_cit IN
(SELECT Cod_cit
FROM Cititori
WHERE Cititori.NumePrenume="Zaharia Maria");

Q19: Câte cărţi împrumutate au cea mai mare perioadă de întârziere?


SELECT Count(*) AS Expr1
FROM IMPRUMUT
WHERE ((((Date()-[Data_impr])-[Per]) IN (SELECT Max((Date()-
[Data_impr])-[Per]) AS Max_per
FROM IMPRUMUT)));

Q20: Care sunt cărţile care au înregistrat cea mai mare perioadă de întârziere?
SELECT CARTI.Cota, CARTI.Titlu
FROM Carti INNER JOIN IMPRUMUT ON CARTI.Nr_inv=IMPRUMUT.Nr_inv
WHERE ((((Date()-[Data_impr])-[Per]) IN (SELECT Max((Date()-[Data_impr])-[Per]
AS Max_per FROM IMPRUMUT)));

Setul nr. 5 de cerinţe

Acest ultim set de cerinţe va face trimitere la utilizarea unor operatori şi clauze, cum sunt: LIKE,
BETWEEN, DISTINCT, GROUP BY împreună cu HAVING, pentru formularea de condiţii la nivel de
grup de înregistrări.

Q21: Numele cititorilor care au prenumele ca derivat de la Vasile?


Ipoteze de lucru:
 Tabela de lucru este CITITORI;
 Toate atributele vor face parte din tabela destinaţie;
 Vor fi selectaţi doar cei care au prenumele cu rădăcina Vasil sau Sile sau Vasilica;
 Numele interogării va fi Q21.

Figura 2.83. Apelarea modului de lucru SQL View şi scrierea comenzii pentru Q21

Aceasta este o problemă specifică utilizării operatorului LIKE.

Modele de lucrări în Microsoft Access 2013


Caracterului ‘*’ îi urmează un spaţiu, astfel încât vor fi extrase numai liniile în care “Vasile”,
“Vasilica” şi “Sile” reprezintă al doilea cuvânt din nume-prenume. Soluţia aceasta este pentru cititorii cu un
singur prenume.
În fereastra activată cu numele Query2 (aşa cum se vede şi în partea de jos a figurii 77), vom
introduce fraza SELECT cu următorul format:
SELECT CITITORI.*
FROM CITITORI
WHERE (((CITITORI.NumePrenume) Like '* Vasil*' Or (CITITORI.NumePrenume) Like
'* Sile*' Or (CITITORI.NumePrenume) Like '* Vasilica*'));
Cu click dreapta pe numele Query2 şi selectarea opţiunii Save, se va da numele Q21 pentru această
interogare.

Figura 2.84. Rezultatul execuţiei interogării Q21

Q22: Câte cărţi sunt intrate pe fiecare an în bibliotecă?


SELECT Year(Data_in) AS Expr1, Count(*) AS Nr_carti
FROM Carti
GROUP BY Year(Data_in)
ORDER BY Year(Data_in);
Q23: Care este numărul cărţilor publicate pe ani din cele deţinute de bibliotecă?
SELECT An_pub, Count(*) AS Nr_carti
FROM Carti
GROUP BY An_pub
ORDER BY An_pub;
Q24: Să se afişeze anii în care numărul cărţilor publicate şi deţinute de bibliotecă este mai mare
sau egal cu 3.
SELECT An_pub, Count(*) AS Nr_carti
FROM Carti
GROUP BY An_pub
HAVING (((Count(*))>=3))
ORDER BY An_pub;
Q25: Câte împrumuturi au fost sub 7 zile (inclusiv) în fiecare an?
SELECT YEAR([Data_impr]), COUNT(*)
FROM Imprumut
WHERE Imprumut.Per<=7
GROUP BY YEAR([Data_impr])
ORDER By YEAR([Data_impr]);
Q26: Care sunt editurile ale căror cărţi editate au fost împrumutate în 2010?
SELECT EDITURI.Cod_Editura, EDITURI.Denumire
FROM EDITURI INNER JOIN (CARTI INNER JOIN IMPRUMUT ON CARTI.Nr_inv
= IMPRUMUT.Nr_inv) ON EDITURI.Cod_Editura = CARTI.Cod_editura
WHERE (((Year([Data_impr]))=2010))
ORDER BY EDITURI.Denumire;
Q26
Cod_Editura Denumire
1010 Humanitas
1009 Junimea
1009 Junimea
1009 Junimea
1007 Nemira
1006 Niculescu
1005 Polirom
1005 Polirom
Instrumente software pentru afaceri. Lucrări practice şi întrebări grilă 57

Q26
Cod_Editura Denumire
1005 Polirom
Figura 2.85. Interogarea Q26 fără clauza DISTINCT

Rezultatul acestei interogări este prezentat în figura 2.85, cu precizarea că aceeaşi editură apare de
mai multe ori. Această repetiţie se evită prin folosirea clauzei DISTINCT.
SELECT DISTINCT EDITURI.Cod_Editura, EDITURI.Denumire
FROM EDITURI INNER JOIN (CARTI INNER JOIN IMPRUMUT ON CARTI.Nr_inv = IMPRUMUT.Nr_inv) ON
EDITURI.Cod_Editura = CARTI.Cod_editura
WHERE (((Year([Data_impr]))=2010))
ORDER BY EDITURI.Denumire;
În tabela din figura 2.86, prezentăm rezultatul interogării cu evitarea repetiţiei, adică am folosit
clauza DISTINCT.
Q26
Cod_Editura Denumire
1010 Humanitas
1009 Junimea
1007 Nemira
1006 Niculescu
1005 Polirom
Figura 2.86. Interogarea Q26 cu clauza DISTINCT

Notă: Pentru extragerea anului din câmpul Data_impr, am folosit funcţia Year. Facem precizarea că ar fi posibil să
înlocuim utilizarea acestei funcţii cu o condiţie compusă de forma:
WHERE [Data_impr]>=#1/1/2010# and [Data_impr]<=#31/12/2010#
Fraza SELECT va deveni:
SELECT DISTINCT EDITURI.Cod_Editura, EDITURI.Denumire
FROM EDITURI INNER JOIN (CARTI INNER JOIN IMPRUMUT ON CARTI.Nr_inv=IMPRUMUT.Nr_inv) ON
EDITURI.Cod_Editura=CARTI.Cod_editura
WHERE [Data_impr]<=#1/1/2010# And [Data_impr]<=#31/12/2010# ORDER BY EDITURI.Denumire;
Aceeaşi frază SELECT se poate rescrie prin utilizarea clauzei Between, ceea ce va conduce la
următoarea formă:
SELECT DISTINCT EDITURI.Cod_Editura, EDITURI.Denumire
FROM EDITURI INNER JOIN (CARTI INNER JOIN IMPRUMUT ON CARTI.Nr_inv=IMPRUMUT.Nr_inv) ON
EDITURI.Cod_Editura=CARTI.Cod_editura
WHERE [Data_impr] Between #1/1/2010# And #31/12/2010# ORDER BY EDITURI.Denumire;
Q27: Care sunt cititorii care au împrumutat mai mult de 2 cărţi?
SELECT CITITORI.NumePrenume, Cod_cit
FROM CITITORI
WHERE CITITORI.cod_cit In
(SELECT Cod_cit FROM (SELECT COUNT(*), Cod_cit FROM IMPRUMUT GROUP BY IMPRUMUT.Cod_cit HAVING
COUNT(*)>=2));

Q28: Care sunt editurile care au editate mai mult de 4 cărţi din cele deţinute de bibliotecă?
SELECT EDITURI.Denumire, EDITURI.Cod_Editura
FROM EDITURI
WHERE EDITURI.Cod_Editura In (SELECT Cod_Editura FROM (SELECT COUNT(*), Cod_Editura FROM CARTI GROUP BY
CARTI.Cod_Editura HAVING COUNT(*)>=3));

Modele de lucrări în Microsoft Access 2013

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