Sunteți pe pagina 1din 91

BAZE DE DATE

lect. univ. dr. Diana TRNVEANU


Cuprins
CAPITOLUL 5 .......................................................................................................................... 3
ELEMENTE INTRODUCTIVE N ACCESS ......................................................................... 3
5.1 Introducere ................................................................................................................................................... 3
5.2 SGBD Access: prezentare general .............................................................................................................. 3
5.2.1 Caracteristici generale .......................................................................................................................... 4
5.2.2 Operaii cu baze de date........................................................................................................................ 5
5.2.3 Obiectele bazei de date ......................................................................................................................... 9
5.3 Obiecte Tables ............................................................................................................................................ 10
5.4 Obiecte Queries .......................................................................................................................................... 16
5.4.1. Interogri de selecie .......................................................................................................................... 17
5.4.2 Interogri de sintetizare a datelor ....................................................................................................... 18
5.4.3 Interogri de aciune ........................................................................................................................... 19
5.5 Obiecte Forms ............................................................................................................................................ 22
5.5.1 Formulare create cu ajutorul butonului Form ..................................................................................... 22
5.5.2 Formulare create cu ajutorul butonului Form Wizard ........................................................................ 23
5.5.3 Formulare create cu ajutorul butonului Form Design ......................................................................... 25
5.5.4 Formulare cu sub-formulare ............................................................................................................... 29
5.6 Obiecte Reports .......................................................................................................................................... 29
5.7 Obiecte Macros........................................................................................................................................... 34
5.8 Obiecte Modules......................................................................................................................................... 35
5.9 Concluzii .................................................................................................................................................... 35
5.10 Rezumatul capitolului ............................................................................................................................... 35
5.11 Exemple .................................................................................................................................................... 36
5.11.1 Problem rezolvat Tabel creat n Datasheet View .................................................................... 36
5.11.2 Problem rezolvat Tabele create n Design View ........................................................................ 40
5.11.3 Problem rezolvat Formulare i controale ................................................................................... 45
5.11.4 Problem rezolvat Formulare cu controale calculate, Switchboard ............................................. 49
5.12.5 Problem rezolvat Interogri........................................................................................................ 55
5.12.6 Problem rezolvat Rapoarte ......................................................................................................... 61
5.13 Probleme propuse ..................................................................................................................................... 66
5.13.1 Problema propus Crearea tabelelor Filial CEC ....................................................................... 66
5.13.2 Problem propus Crearea formularelor ........................................................................................ 66
5.13.3 Problem propus Crearea interogrilor ........................................................................................ 66
5.13.4 Problem propus Crearea rapoartelor .......................................................................................... 66

CAPITOLUL 6 ........................................................................................................................ 67
ELEMENTE SQL ................................................................................................................... 67
6.1 Introducere ................................................................................................................................................. 67
6.2 Comenzi SQL ............................................................................................................................................. 67
6.2.1 Comanda CREATE TABLE............................................................................................................... 69
6.2.2 Comanda ALTER TABLE ................................................................................................................. 71
6.2.3 Comanda DROP TABLE ................................................................................................................... 72
6.2.4 Comanda INSERT INTO ................................................................................................................... 72
6.2.5 Comanda DELETE ............................................................................................................................. 73
6.2.6 Comanda SELECT ............................................................................................................................. 73
6.2.7 Comanda UPDATE ............................................................................................................................ 79
6.3 Concluzii .................................................................................................................................................... 80
6.4 Rezumatul capitolului ................................................................................................................................. 80
6.5 Exemple ...................................................................................................................................................... 81
6.5.1. Problem rezolvat Produse ........................................................................................................... 81
6.6.2 Problem rezolvat Aprovizionare .................................................................................................. 85
6.6.3 Problem propus Bibliotec ........................................................................................................... 90
6.6.4 Problem propus Amenajri interioare .......................................................................................... 90

BIBLIOGRAFIE ..................................................................................................................... 91

CAPITOLUL 5
ELEMENTE INTRODUCTIVE N ACCESS
5.1 Introducere
Sistemele informatice din domeniul economic conin un volum relativ mare de date care se
organizeaz cel mai bine n baze de date. Microsoft Access 2007 face parte din suita Microsoft Office
2007, avnd caracteristicile specifice unui sistem de gestiune al bazelor de date relaionale. Access
este totodat i un instrument complex de dezvoltare al aplicaiilor de baze de date.

5.2 SGBD Access: prezentare general


Microsoft Office Access 2007 este un sistem de gestiune a bazelor de date (SGBD) dezvoltat de firma
Microsoft care ofer urmtoarele faciliti1:
permite lucrul att pe staii individuale ct i n reea, cu exploatarea partajat a datelor;
are n structur un limbaj neprocedural SQL (Structured Query Language) larg rspndit n
toate SBDG-urile;
modul de lucru vizual faciliteaz crearea rapid a unor aplicaii;
este autodocumentat i conine Wizard-uri;
are access la reeaua Internet.
Access 2007 include faciliti oferite de sistemul de operare Microsoft Windows (de exemplu meniu
contextual al obiectelor) i permite i faciliti de tipul drag and drop. Microsoft Access este
compatibil cu tehnicile de legare i ncapsulare din tehnologia OLE Microsoft (Object Linking and
Embedding).
Este recomandat utilizarea Microsoft Access dac:
sunt necesare baze de date relaionale (tabele multiple sau multi-dimensionale) sau dac se
anticipeaz adugarea unor noi tabele pe viitor;
cantitatea de date este mare;
este necesar o legtur permanent cu o baz de date extern de dimensiuni mari, cum ar fi
una construit cu Microsoft SQL Server sau cu sistemul integrat al organizaiei;
este necesar regruparea datelor din diverse tabele ntr-un singur loc cu ajutorul unor
interogri complexe;
baza de date este accesat de mai muli utilizatori (se poate beneficia de mecanismele de
modificare furnizate de baza de date).
Este recomandat utilizarea Microsoft Excel dac:
sunt suficiente tabelele simple, fr relaii ntre ele;
se doresc efectuarea de calculi i comparaii statistice;
setul de date nu depete 15000 de nregistrri.

Tama I. (coord.), Stanciu V., Gheorghe M. Access 2007 Proiectare i realizare pas cu pas, Editura Infomega,
Bucureti, 2010, p.7

5.2.1 Caracteristici generale


Primul lucru care se poate observa la deschiderea Microsoft Access este noua interfa grafic
prietenoas cu utilizatorul (GUI Graphical User Interface), folosit att de Access ct i de toat
gama de produse Office 2007.
De pe bara de meniuri evideniem:
pagina Home (Views, Clipboard, Font, Rich Text, Records, Sort&Filter, Find) pagina
principal Access, conine funcii de editri de baz cum ar fi Cut i Paste, mpreun cu marea
majoritate a opiunilor de formatare;
pagina Create (Tables, Forms, Reports, Other) grupeaz toate opiunile de creare;
pagina External Data (Import, Export, Collect Data, SharePoint Lists) conine toate
operaiile care faciliteaz colaborarea i schimbul de date;
pagina Database tools (Macro, Show/Hyde, Analyze, Move Data, Database Tools)
coloana vertebral a Access-ului. Aici se pot crea sau menine relaiile dintre tabele, se
analizeaz performanele fiierului i se execut rutine de ntreinere.
Fereastra Access Options furnizeaz acces rapid la aproape toate opiunile care pot fi configurabile n
Access. Dintre acestea vom evidenia urmtoarele opiuni:
Popular: opiunile cele mai populare printre utilizatori (selectate de Microsoft);
Current Database: opiuni care afecteaz baza de date curent, de exemplu, opiuni pentru
adugarea unui titlu sau a unei icoane, selectarea unui formular care s apar la deschiderea
aplicaiei, dezactivarea opiunii Layout view, i o opiune util programatorilor, activarea sau
dezactivarea panoului de navigare (Navigation Pane). n cadrul acestei opiuni, utilizatorii pot
crea o panglic special i o pot folosi n locul celei predefinite;
Datasheet: opiuni de formatare pentru Datasheet View. Utiliznd aceast opiune, se poate
selecta tipul literelor folosite, afiarea liniilor de ghidaj pe formulare i setarea efectelor
implicite ale celulelor;
Object Designers: opiuni care pot fi setate i afecteaz modul n care uneltele de design sunt
configurate n Access. Opiunile sunt grupate astfel: Table Design, Query Design, Form
Design, Error Checking;
Proofing: include opiuni legate de verificri gramaticale cum ar fi: spell checking, grammar
checking, i auto correction;
Advanced: opiuni care pot fi setate i care controleaz modul n care Access interacioneaz
cu datele i utilizatorul cu aplicaiile. Sunt disponibile urmtoarele grupuri de opiuni:
Editing, Display, Printing, General, Advanced;
Customization: utile pentru a aduga sau terge opiuni de pe panglic.
Add-Ins: o list a utilitarelor add-ins disponibile pentru Access;
Trust Center: acceseaz Trust Center. Muli utilizatori seteaz nivelul de securitate la nivelul
minim pentru a evita mesajele care apar atunci cnd se deschide o baz de date care conine o
macrocomand. Microsoft recomand pstrarea nivelului de securitate la valoarea implicit, i
anume funcionalitate deplin. n Trust Center sunt disponibile dou opiuni: Show the
message bar in all applications when content has been blocked i Never show information
about blocked content.
Resources: conine link-uri ctre resurse online care asist utilizatorul care lucrez cu Access.
Sunt disponibile linkuri la pagina Office, diagnostice interactive Office 2007, help online i
actualizri de software.
Exist multe opiuni, controale i unelte disponibile pentru a ajuta la modificarea programului i a
aplicaiei fr a fi necesare cunotine de programare.

5.2.2 Operaii cu baze de date


Pentru a deschide Microsoft Access 2007 se acioneaz butonul Start de pe bara de sarcini, se
selecteaz Microsoft Office, apoi Microsoft Office Access 2007.

Fig. 1 Deschiderea mediului de lucru Microsoft Access 2007

La deschiderea Microsoft Access 2007 pe ecran va apare fereastra Getting Started with Microsoft
Office Access.
Butonul Office

Fig. 2. Fereastra Getting Started with Microsoft Office Access

n partea din dreapta a ecranului sunt vizibile link-uri ctre ultimele fiiere de tip baz de date utilizate.
n cazul nchiderii accidentale a bazei de date, aceasta poate fi deschis rapid selectnd primul link din
lista Open Recent Database.

Dac se dorete modificarea locaiei implicite de salvare a bazelor de date se selecteaz butonul
Office, se alege opiunea Access Options, modificnd cu ajutorul butonului Browse opiunea Default
database folder.

Fig. 3. Modificarea locaiei implicite n care sunt salvate bazele de date

5.2.2.1 Crearea unei baze de date


Pentru a crea o baz de date vid se alege butonul Blank Database figura 2. Folosind icoana de
folder din partea din dreapta a ecranului se alege locaia unde va fi salvat baza de date, se tasteaz
numele dorit, apoi se apas butonul Create figura 4.

Fig. 4 Stabilirea locaiei i a denumirii bazei de date

Odat cu crearea unei baze de date vide, Microsoft Access creaz o nou tabel n care s fie salvate
datele. Aceasta poarta numele implicit Table1 i este deschis n Datasheet View (mod de vizualizare
care permite afiarea datelor din tabel). Pentru a crea o tabel n acest mod de vizualizare se poate
studia problema rezolvat 5.13.1.

5.2.2.2 Parolarea unei baze de date


Pentru a parola baza de date, aceasta trebuie s fie deschis exclusiv. Pentru aceasta, se nchide baza
de date folosind butonul Office, opiunea Close Database figura 5.

Fig. 5 nchiderea unei baze de date

Pentru a uura accesul la anumite butoane se poate folosi bara de acces rapid. Pentru a afia mai multe
butoane pe aceasta (n cazul de fa butonul Open) se apas sgeata din partea dreapt a barei,
selectndu-se comanda Open. Butonul Open va fi afiat pe bara de acces rapid. Analog se pot selecta
alte butoane pentru a fi afiate pe bara de acces rapid. Dac acestea nu sunt afiate implicit, se pot
cuta utiliznd comanda More Commands.

Fig. 6 Adugarea butonului Open pe bara de acces rapid

Pentru a deschide exclusiv baza de date creat anterior se apas butonul Open de pe bara de acces
rapid figura 7.

Fig. 7 Butonul Open de pe bara de acces rapid

n fereastra Open se selecteaz locaia, numele bazei de date, apoi de pe butonul Open se selecteaz
opiunea Open Exclusiv figura 8.

Fig. 8 Deschiderea exclusiv a unei baze de date

Baza de date fiind deschis exclusiv, de pe bara de meniuri se alege opiunea Database Tools, apoi
comanda Encrypt with Password figura 9. n fereastra Set Database Password se cere
introducerea parolei de dou ori, la apsarea butonului OK baza de date fiind protejat.

Fig. 9 Parolarea bazei de date

Protejarea bazei de date este vizibil doar la deschiderea acesteia, deci pentru a verifica acest lucru se
nchide i se deschide din nou baza de date. Pentru a elimina parola setat la deschiderea bazei de date,
aceasta trebuie deschis exclusiv, selectndu-se mai apoi opiunea Decrypt Database figura 10.

Fig. 10 Decriptarea bazei de date

n cazul n care panoul de navigare este ascuns, acesta poate fi afiat selectnd sgeile laterale figura
11.

Fig. 11 Afiarea/ascunderea panoului de navigare

Afiarea sau ascunderea panglicii (Ribbon) poate fi controlat folosind opiunea Minimize the
Ribbon de pe bara de acces rapid figura 12.

Fig. 12 Minimizarea/afiarea panglicii (Ribbon)

Observaie: Baza de date se salveaz automat, dar obiectele coninute trebuie


salvate de ctre utilizator. Numele bazei de date este setat la nceputul crerii
acesteia. Dac se dorete salvarea bazei de date cu alt nume, de pe butonul
Office se alege Save as.. urmat de opiunea Access 2007 Database,
specificndu-se locaia i numele bazei de date.

5.2.2.3 Salvarea unei baze de date


Pentru a salva o baz de date cu un alt nume, se apeleaz butonul Office, opiunea Save as, apoi
Access 2007 Database, selectndu-se apoi locaia i/sau noul nume al fiierului.

5.2.2.4 nchiderea unei baze de date


Pentru a nchide o baz de date, de pe butonul Office se apeleaz comanda Close Database.

5.2.2.5 Deschiderea unei baze de date


Pentru a deschide o baz de date se poate folosi lista din partea dreapt a ecranului, priul link fiind
ctre ultima baz de date utilizat, sau utiliznd butonul Office, opiunea Open.

5.2.3 Obiectele bazei de date


Principalele obiecte coninute n Microsoft Access 2007 sunt:
Tabele (Tables): structuri elementare n care sunt stocate datele n cadrul unei baze de date.
Tabelele sunt inima oricrei baze de date. De exemplu, o baz de date legat de fitness poate
s rein informaii legate de antrenamentul efectuat, echipamentele utilizate i numrul
milkshake-urilor consumate n fiecare zi n trei tabele separate. O tabel este containerul n
care sunt stocate datele. Restul obiectelor permit manipularea datelor stocate n tabele.
Construirea tabelelor Access se poate rezuma la dou activiti principale: crearea structurii
tabelei (n modul de vizualizare Design View) i popularea tabelului cu date fie n Datasheet
View, prin intermediul formularelor sau a instruciunilor SQL;
Interogri (Queries): sunt structuri care permit efectuarea unei aciuni rapide asupra unei
tabele sau mai multor tabele. Aceste aciuni implic de obicei obinerea unei informaii
necesare (de exemplu, cumprturile efectuate pe parcursul unei zile cu cardul de credit), sau
aplicarea unor modificri. Interogrile sunt obiecte virtuale de tip tabel care nu au
corespondent fizic, fiind definite cu ajutorul tabelelor create deja n baza de date. Ele permit
efectuarea seleciilor i sortrilor n tabele, a calculelor simple i analizelor ncruciate, a
aciunilor (crearea unui nou tabel, adugarea, tergerea sau actualizarea nregistrrilor) sau
execuia unor comenzi SQL.

Formulare (Forms) sunt ferestre atractive folosite pentru a consulta sau actualiza datele
dintr-un tabel sau o interogare. Ele permit totodat crearea unui meniu interactiv construit de
ctre utilizator, furniznd i o facilitate special pentru aceasta (Switchboard). Pe un formular
pot fi plasate butoane care pot ncorpora comenzi SQL;
Rapoarte (Reports) sunt utilizate pentru a tipri unele sau toate informaiile din tabele sau
interogri. Permit gruparea i sortarea datelor, adugarea unor cmpuri calculate, numere de
pagin, etc;
Macrocomenzi (Macros) mini-programe care automatizeaz sarcinile curente.
Macrocomenzile sunt formate dintr-o suit de aciuni;
Module (Modules) fiiere care conin cod Visual Basic Application. VBA este un mediu de
programare orientat obiect. Se pot defini variabile, constante, funcii i proceduri globale
ntregii aplicaii sau asociate unui anumit obiect. Cu ajutorul acestor coduri se poate executa
aproape orice.

5.3 Obiecte Tables


naintea descoperirii bazelor de date, organizaiile lucrau cu datele manual. Ei plasau hrtii n dosare i
organizau dosarele n sertare ale unui dulap. Dulapul este echivalentul bazei de date. Fiecare sertar plin
de dosare corespunde unui tabel din baza de date.
Un cmp este o unitate elementar sau o categorie cum ar fi titlurile crilor sau numerele de telefon.
Un cmp nu conine n mod necesar o valoare. De exemplu, un cmp numit e-mail poate rmne
necompletat dac furnizorul nu deine o adres de e-mail. O nregistrare este un set complet de date
(cmpuri) care se refer la o persoan, loc, eveniment, idee. De exemplu, pentru un profesor numrul
matricol, numele, prezena i nota final compun o nregistrare. O tabel, fundaia oricrei baze de
date, este o colecie de nregistrri care au legtur unele cu altele, i conine cmpuri pentru a
organiza datele.
O coloan reprezint un cmp, o linie reprezint o nregistrare. Fiecare nregistrare conine aceleai
cmpuri n aceeai ordine. Fiierul profesorului cu prezenele studenilor este o tabel care conine
nregistrri despre toi studenii avnd o structur comun. O baz de date const n una sau mai multe
tabele i obiectele suport care permit introducerea datelor, prelucrarea i extragerea lor din tabele.
valoarea cmpului
baza de date
nregistrare

tabel

Fig 13. Baz de date primitiv

Definiie: O cheie primar este un cmp (sau o combinaie de cmpuri) a crui valori
identific n mod unic o nregistrare ntr-un tabel.

10

Cheie primar

Cmp

nregistrare

valoare
Fig. 14 Concepte de baz

Codul produsului este cheie primar n tabela produse. Cheia primar poate conine numere, litere,
sau o combinaie a acestora.
Puterea bazelor de date relaionale st n abilitatea SGBD-ului de a organiza datele i a le recombina
pentru a obine o imagine complet a evenimentelor descrise. Un design eficient a bazelor de date
conecteaz datele din diferite tabele sub forma unui sistem de legturi.
Legtura dintre tabele este ca un fir electric care traverseaz baza de date conectnd tabelele astfel
nct s permit obinerea rspunsului la cererea utilizatorului (figura 15). Odat identificat rspunsul,
cmpurile i nregistrrile sunt rearanjate astfel nct s poate fi nelese cu uurin de ctre utilizator.
Captul de nceput al firului este creat odat cu setarea cheii primare ntr-unul dintre tabele. Cellalt
capt la firului este legat de un cmp dintr-un alt tabel. Acel cmp poart numele de cheie strin. De
exemplu cmpul cod_f (cod furnizor) din tabela furnizori este un cmp de tip cheie strin.
Definiie: O cheie strin este un cmp dintr-o tabel, care ntr-o alt tabel este cheie
primar.

Fig. 15 Fereastra Relationships

Dup cum se poate observa din figura 15, chiar i n relaia normalizat nc mai exist redundane. De
exemplu, codul produsului (cod_p) apare n mai multe tabele. De fapt nu pot fi eliminate toate
cmpurile duplicate i n acelai timp meninute legturile dintre tabele. Acest tip de redundan (cheie
primar-cheie strin) poart numele de redundan necesar.
Orice legtur dintre dou tabele poat fi ntrit utilizndu-se regulile de integritate referenial.
Integritatea sugereaz ncredere. Atunci cnd regulile de integritate sunt stabilite, utilizatorul poate
avea ncredere n firul care leag tabelele bazei de date, fiind pstrat acurateea datelor.
Regulile de tip cascad permit ca modificrile datelor s se perpetueze dintr-o tabel n alta figura
16.
Definiie: Regula Cascade Update Related Records va fi setat n cazul n care dac o valoare a
cmpului pe care este setat cheia primar este modificat, atunci toate valorile corespunztoare
din tabela referit sunt modificate automat cu aceeai valoare. Regula Cascade Delete Related
Records va fi setat n cazul n care dac o valoare din tabela de referin este tears prin tergerea
nregistrrii care o conine, atunci toate nregistrrile din tabela referit care conin acea valoare
referit vor fi automat terse.

11

Fig. 16 Setarea regulilor de integritate referenial

Legturile dintre tabele n Microsoft Access 2007 sunt de mai multe tipuri:
One-to-Many (unu-la-mai-muli) aceast legtur se creaz ntre o cheie primar dintr-un
tabel i o cheie strin din alt tabel. n prima tabel exist o singur nregistrare care conine o
valoare a cmpului de tip cheie primar. n cea de-a doua tabel exist mai multe nregistrri
care conin n cmpul comun aceeai valoare a cmpului comun.
One-to-One (unu-la-unu) se creaz ntre dou tabele care au aceeai cheie primar sau un
cmp de tip cheie primar n prima tabel i un cmp cheie strin pe care este setat un index
Unique din a doua tabel. n acest caz n ambele tabele exist o singur nregistrare cu
valoarea cmpului comun identic. Acest tip de relaie se folosete foarte rar, n special
datorit necesitii meninerii securitii datelor din tabele.
Many-to-Many (mai-muli-la-mai-muli) acest tip de relaie este construit artificial (nu
exist n Access) i corespunde mai multor valori ale cmpului comun din ambele tabele. n
acest caz este necesar construirea unui nou tabel numit tabel de jonciune.
ntr-o baz de date bine definit, relaia de tip one-to-many este cel mai frecvent ntlnit.
Pentru a crea un nou tabel, de pe panglic, opiunea de meniu Create, se selecteaz Table Design.
Design View este un mod de vizualizare care ofer cele mai puternice opiuni pentru definirea unei
tabele.
Atunci cnd se proiecteaz o tabel este important cunoaterea operaiilor de baz care pot fi
efectuate cu cmpurile acesteia:
pentru adugarea unui nou cmp ntre alte cmpuri existente se poziioneaz cursorul
pe cmpul deasupra cruia se dorete adugarea unui nou cmp, se apeleaz meniul
contextual (clic cu butonul din dreapta al mouse-ului) i se alege opiunea Insert Rows;
mutarea unui cmp un cmp poate fi mutat folosind drag-and-drop, selectndu-se ptratul
gri din stnga numelui cmpului i repoziionndu-se cmpul n poziia dorit;
tergerea unui cmp se apeleaz meniul contextual al ptratului gri din stnga numelui
cmpului i se selecteaz Delete Rows. De reinut faptul c odat cu tergerea unui cmp se
terg toate datele depozitate n acel cmp, aciunea nefiind reversibil, de aceea Access
afieaz un mesaj pentru a preveni eventualele tergeri accidentale.
Fiecare cmp are un nume (Field Name) cu ajutorul cruia sunt identificate datele introduse n acel
cmp. Numele cmpului trebuie s fie descriptiv pentru datele coninute i poate conine maxim 64 de
caractere incluznd litere, cifre i spaii. Este interzis utilizarea caracterelor ., !, [, i ], iar numele
cmpului nu poate ncepe cu cu spaiu.
Fiecare cmp este definit ca fiind de un anumit tip (Data Type), care determin valorile care pot fi
introduse i operaiile care pot fi efectuate cu datele. Access recunoate 10 tipuri de date:
Text date alfanumerice cele mai multe caractere care se afl pe tastatur (incluznd
numere), cu limita maxim de 255 de caractere. Cmpurile care conin doar numere care
nu sunt folosite pentru a efectua calcule ar trebui setate ca fiind de tip Text (numere de
telefon, coduri potale, numrul crii de identitate, numrul de paaport);
Number conine o valoare care poate fi folosit n calcule, ca de exemplu numrul creditelor
pe care le are un student. Coninutul cmpului de tip Number este restricionat la numere,

12

virgula zecimal i simbolurile + i -:


Byte numere ntre 1 i 255 (ocup 1 byte);
Integer numere n intervalul [-32768,+32757] (ocup 2 bytes);
Long Integer [-2147483648,+2147483647] (ocup 4 bytes);
Single numere reprezentate n simpl precizie:
[-3.40*1038,3.40*1038] (ocup 4 bytes i are precizie de 7 zecimale);

Double numere reprezentate n dubl precizie, [-1.797*10308, 1.797*10308] (ocup 8


bytes i are precizie de 15 zecimale);
Replication ID GUID (Global Unique IDentifier) identificator unic global,
(ocup 16 bytes) este folosit pentru un cmp care este sau compun un cmp de tip
cheie strin corespondentul unui cmp de tip cheie primar Autonumber;
Decimal [-1028, 1028] (ocup 12 bytes i implicit are o precizie de 18 zecimale care
poate s creasc pn la 28 de zecimale).
Memo blocuri mari de text de lungime maxim 65536 caractere. Cmpurile de tip Memo
sunt utilizate pentru a pstra date descriptive (propoziii, paragrafe). Lungimea maxim este de
is 2 GB.
Date/Time conine date calendaristice formatate, ore, sau ambele, permind calcule
aritmetice cu acestea. Anii din datele calendaristice sunt n intervalul dintre anii 100 i 9999.
Datele sunt salvate sub form de numr pe 8 bytes, cu dubl precizie;
Currency numere cu 4 zecimale urmate de simbolul monetar, cu care pot fi efecuate
calcule. Ocup 8 bytes i sunt utilizate pentru calcule financiare, dac nu se dorete rotunjirea
valorilor;
AutoNumber un numr care este incrementat automat pentru fiecare nregistrare. Valoarea
unui cmp de tip Autonumber este unic pentru fiecare nregistrare din tabel, de aceea tipul
Autonumber se utilizez n mod frecvent ca tip de date al unui cmp cheie primar.
Numrtoarea poate fi secvenial sau ntmpltoare (random). Valoarea acestuia nu poate fi
modificat i ocup 4 bytes;
Yes/No permite alegerea unei valori din 2 posibile, o informaie discret care poate avea
doar dou valori cum ar fi: True/False, Yes/No, On/Off, (ocup 1 byte);
OLE Object conine un obiect creat cu o alt aplicaie, cum ar fi Microsoft Excel, Microsoft
Word sau poze. Dimensiunea maxim a fiierului este de 2GB, dar baza de date este ncetinit
considerabil prin nglobarea obiectelor externe;
Hyperlink utilizat pentru a stoca adrese Web (URL Uniform Resource Locators). Toate
fiierele din suita Office permit faciliti Web dac se selecteaz un link, automat este afiat
pagina Web asociat (1 GB);
Attachment cel mai nou tip de date introdus doar n MS Access 2007, permite ataarea mai
multo obiecte create cu alte aplicaii. Mrete flexibilitatea bazei de date prin utilizarea
technicilor OLE (Object Linking and Embedding=Legare i ncorporare de Obiecte);
Lookup Wizard este utilizat pentru valori care vor fi completate selectnd o valoare dintr-o
caset combinat. Nu este un tip de date propriu-zis, ci un program utilitar care creaz relaii
cu tabela printe sau o list definit de utilizator.

Pentru a crea o legtur ntre tabele, se va crea tabela de referin cu cheia primar, se insereaz
date n tabel, apoi se creaz tabela referit, iar pentru cmpul care va fi cheie strin se va selecta
opiunea Lookup Wizard, cu prima opiune I want the lookup column to lookup the values in a
table or query; se selecteaz numele tabelei de referin, cmpul de tip cheie primar din tabela de
referin i ordinea de sortare. Atunci cnd se introduc date n cmpul de tip cheie strin din tabela
referit se utilizeaz caseta combinat creat cu ajutorul opiunii Lookup Wizard, selectndu-se din
valorile din list.

13

Dac se dorete crearea unei liste predefinite de ctre utilizator, se va selecta Lookup Wizard cu a
doua opiune I will type in the values that I want, apoi se vor insera toate valorile pe o coloan.
Atunci cnd se insereaz datele n cmpul respectiv, se utilizeaz caseta combinat creat automat de
ctre Lookup Wizard.
Description este o coloan opional care se utilizez dac se dorete afiarea descrierii cmpului pe
bara de stare atunci cnd cmpul este selectat (activ).
O proprietate este o caracteristic sau un atribut care determin cum va arta i cum se va comporta
obiectul. Fiecare obiect Access are o mulime de proprieti. Proprietile tabelei sunt afiate i pot fi
modificate n fereastra Property Sheet. Aceasta se gsete pe panglic, n modul de vizualizare
Design View, opiunea de meniu Design.
Fiecare cmp are o mulime de proprieti. Proprietile sunt setate pe valoarea implicit n
concordan cu tipul de date selectat, dar pot fi modificate. Ele sunt afiate n modul de vizualizare
Design View, n partea de jos a ecranului.
Field Size (dimensiunea cmpului) ajusteaz dimensiunea unui cmp de tip text sau
limiteaz valoarea permis ntr-un cmp de tip numeric. Microsoft Access utilizeaz doar
cantitatea de spaiu de stocare necesar, chiar dac dimensiunea cmpului permite o
dimensiune mai mare. Multe SGBD-uri folosesc tot spaiul specificat ca dimensiune a
cmpului. De aceea, este util crearea obinuinei de a reduce dimensiunea spaiului cu scopul
ajustrii la cerinele de stocare ale sistemului (optimizarea spaiului de stocare);
Decimal Places specific numrul de zecimale. Valoare predefinit este Auto sunt afiate
toate zecimalele rezultate n urma calculelor, dar nu mai mult de 15 zecimale;
Format modific modul de afiare al valorii unui cmp, dar nu afecteaz valoarea stocat;
pentru unele tipuri de date cum ar fi Number, Date/Time i Yes/No se poate alege
formatul dorit dintr-o list;
pentru cmpuri de tip Number pot fi afiate valori pozitive, negative, zero sau
valoarea Null folosind caractere speciale (0, #, $, %, E+, E-, e+, e-);
pentru cmpuri de tip Date/Time: se utilizeaz urmtoarele caractere (d zi ntre 1 i
31, dd zi ntre 01 i 31, ddd primele 3 litere n englez din numele zilei (de
exemplu, Mon de la Monday pentru ziua de Luni), dddd numele ntreg al zilei,
etc);
pentru cmpuri de tip Text:
! dac se introduc numere;
< litere mici; > majuscule;
text textul va aprea exact cum este scris: text;
@ creaz grupuri de numere: @@@@-@@@-@@@ cum ar fi 0744-25656.
Input Mask faciliteaz introducerea datelor afind caractere care nu sunt stocate, cum ar fi
caracterul slash ntr-o dat calendaristic (/). De asemenea, asigur validarea datelor pentru a
corespunde formatului ales (de exemplu, previne introducerea unei cifre n plus sau n minus
n cazul unui numr de telefon);
0 o cifr obligatorie ntre 0 i 9;
9 o cifr opional ntre 0 i 9;
A o liter sau o cifr obligatorie;
a o liter sau o cifr opional;
# o cifr opional ntre 0 i 9 sau un spaiu opional;
& orice caracter sau spaiu;
C un caracter opional sau un spaiu
L o liter obligatorie de la A la Z;

14

? o liter opional de la A la Z;
> litere care vor fi transformate n majuscule;
< litere care vor fi transformate n majuscule.
Cnd ambele proprieti sunt setate, (Format i Input Mask), Format este cea
impus (are prioritate).

Caption specific o etichet diferit fa de numele cmpului, care va fi afiat n


DataSheet View n capul de tabel, pe formulare i rapoarte. Lungimea maxim a valorii
introduse n Caption este 2084 caractere. Valoarea proprietii Caption nu are nici o
semnificaie n cadrul interogrilor sau cnd se utilizeaz cod n Visual Basic Application;
Default value introduce automat o valoare predefinit pentru cmpul respectiv atunci cnd o
nou nregistrare este inserat ntr-un tabel. De exemplu, dac foarte muli dintre studeni sunt
nscui n Timioara, valoarea proprietii Default Value poate fi modificat n Timioara;
Validation Rule respinge orice nregistrare pentru care valoarea introdus n cmpul
respectiv nu respect regula stabilit. Expresia poate fi tastat n interiorul casetei de text, sau
se poate selecta butonul
pentru a deschide fereastra Expression Builder. Aceast
proprietate nu poate fi folosit pentru tipuri de date cum ar fi: Autonumber, OLE Object,
Attachment, Number cu sub-tipul Replication ID. Pentru a construi o regul de validare pot fi
folosite funcii Access, operatori i constante. Numele cmpului trebuie s apar ntre
paranteze drepte, de exemplu [cod produs]. Exemple de reguli de validare:
>200 and <=400 pentru un cmp numeric;
<>NULL, IS NOT NULL pentru orice fel de cmp;
Timisoara pentru un cmp de tip Text;
>=#03/12/2011# pentru o dat calendaristic;
>=Date() pentru o dat calendaristic;
Year([data factura])=Year(Date()) unde fucia Year extrage anul dintr-o dat
calendaristic (n acet caz cmpul data facturii), iar funcia Date() extrage data
curent;
Validation Text specific mesajul de eroare care va fi afiat n cazul n care regula de
validare nu este respectat;
Required dac este setat pe Yes, respinge orice nregistrare care nu conine o valoare n
cmpul respectiv; valoarea predefinit este No;
Allow Zero Length dac este setat pe Yes, permite irul de lungime zero n cazul
cmpurilor de tip text sau memo; valoarea predefinit este No;
Indexed mrete eficacitatea cutrilor n acel cmp (cmpul pe care este setat cheia
primar este ntotdeauna indexat):
No nu este setat nici un index;
Yes (No Duplicates) este setat un index care nu permite duplicarea valorilor, ca n
cazul CNP-ului, de exemplu. Este valoarea care apare atunci cnd se seteaz cheia
primar;
Yes (Duplicates Ok) este setat un index care permite duplicarea valorilor, ca n
cazul numelui pacientului, de exemplu.
Indecii mai pot fi definii i prin intermediul butonului Indexes de pe panglic figura 17. Se
poate seta numele indexului (Index Name), cmpul pe care acesta va fi setat (Index Field), i
ordinea de sortare (Sort Order), specificndu-se pentru fiecare index tipul acestuia: Primary
(dac se dorete crearea unui index de tip Primary Key), Unique (crearea unor chei candidate
cu valori unice) sau Ignore Null (crearea unui index care ignor valorile Null).

15

Fig. 17 Fereastra Indexes

Unicode Compression pentru cmpurile Text, Memo i Hyperlink, are valoarea implicit
setat pe Yes i este folosit pentru a eficientiza modul de stocare a datelor;
IME Mode and IME Sentence Mode specific modul Input Method Editor cu opiunea
implicit No Control pentru versiunea n englez i tipul de dat pentru modul Input
Method;
Smart Tags pentru utilizatorii avansai, permite adugarea butoanelor de aciune asociate
unui cmp. Atunci cnd o baz de date ofer produse la ofert, un buton de tip Smart Tag
ncorporat cmpului nume produs ar putea deschide un fiier de inventar pentru a vizualiza
produsele din stoc;
Text Align aliniaz textul, furniznd urmtoarele opiuni: General (aliniere predefinit),
Left (aliniere la stnga), Center (aliniere centrat), Right (aliniere la dreapta) i Distributed
(aliniere i la stnga i la dreapta).

Datasheet View este utilizat pentru inserarea datelor n tabele. Vizualizarea de tip Pivot Table View
furnizez un mod convenabil de sumatizare i organizare a datelor n grupuri de nregistrri.
Vizualizarea Pivot Chart View afieaz un grafic asociat modului de vizualizare Pivot Table View.
Pentru a trece de la un mod de vizualizare la altul, se poate utiliza fie butonul View de pe panglic,
opiunea de meniu Home, fie butonul corespunztor de pe bara de stare (Status bar). O tabel poate fi
deschis din panoul de navigare direct n modul de vizualizare dorit apelndu-se meniul contextual al
tabelei i selectndu-se modul de vizualizare dorit.

5.4 Obiecte Queries


Interogarea este un obiect ce permite vizualizarea informaiilor din una sau mai multe tabele pe baza
unor criterii de selecie. Microsoft Access prevede o interfa prietenoas cu utilizatorul, de tip QBE
(Query By Example) pentru a construi o interogare. Rezultatul unei interogri este o foaie de rspuns
dinamic care poart numele de Dynaset. Aceasta este volatil (dispare odat cu nchiderea
interogrii).
Cu ajutorul unei interogri pot fi grupate datele din mai multe tabele, pe baza leagturilor create ntre
ele, pot fi create noi cmpuri calculate, dar pot fi efectuate i urmtoarele aciuni: crearea unui nou
tabel, adugarea nregistrrilor din alt tabel, modificarea valorii cmpurilor sau tergerea
nregistrrilor.
Interogrile se creaz de obicei n modul de vizualizare Query Design. Pentru a vedea rezultatul
interogrii, se trece n modul de vizualizare Datasheet View sau se apas butonul Run de pe panglic,
opiunea de meniu Design. O alt modalitate de a crea o interogare este folosind modul de vizualizare
SQL View. Aceast metod necesit cunotine de SQL (Structured QueryLanguage) detaliate n
capitolul urmtor.

16

Interogrile sunt de mai multe tipuri:


de selecie (SELECT) permit afiarea datelor din una sau mai multe tabele, pe baza unor
criterii de selecie, calcularea unor cmpuri i afiarea datele ordonate dup anumite cmpuri
cresctor sau descresctor;
de sintetizare a datelor (TOTAL) permit selectarea unor cmpuri ca criterii de grupare,
fiind aplicate diverse funcii: SUM, MIN, MAX, COUNT, etc;
de analiz ncruciat (CROSSTAB) de analiz ncruciat a datelor;
de aciune (MAKE TABLE, APPEND, UPDATE, DELETE);
speciale (UNION, PASS THROUGH, DATA DEFINITION).
Cel mai des ntlnite i utilizate sunt interogrile de selecie.

5.4.1. Interogri de selecie


Pentru a crea o interogare, de pe panglic, opiunea de meniu Create, se apas butonul Query Design.

Fig. 18 Fereastra QBE

n fereastra Show Table se va preciza sursa datelor executnd dublu-clic pe numele tabelei sau
tabelelor figura 18. De reinut c dac se selecteaz mai multe tabele, trebuie specificate toate tabele
intermediare pentru a fi vizibile legturile dintre ele n caz contrar rezultatul interogrii nu este cel
dorit. Dup nchiderea ferestrei, dac se dorete redeschiderea ferestrei pentru a aduga o nou tabel,
se selecteaz butonul cu acelai nume de pe panglic. Dac se dorete tergerea unei tabele, se
apeleaz meniul contextual asociat acesteia, selectndu-se comanda Delete. Dup ce tabelele au fost
selectate, ferestra Show Table se nchide.
Urmtorul pas este selectarea cmpurile din tabele. Se execut dublu clic pe numele de cmpurilor din
tabele, acestea fiind selectate automat n partea de jos a ecranului, find completate liniile Field i
Table.
Linia Sort permite ordonarea valorilor cmpurilor n ordine cresctoare (Ascending) sau
descresctoare (Descending).
Pe linia Show sunt selectate implicit toate cmpurile ca fiind vizibile. Dac se dorete ascunderea unui
cmp din vizualizarea final, se debifeaz check-box-ul corespunztor.
Liniile Criteria i Or permit impunerea unor condiii. Dac operatorul dintre condiii este AND,
atunci toate condiiile se scriu pe linia Criteria. Dac ntre condiii operatorul este OR, atunci a doua
condiie se scrie pe linia Or.
Pentru a vizualiza rezultatul interogrii se trece de pe bara de stare n Datasheet View.
Dintre operatorii folosii n construirea expresiilor de pe linia Criteria amintim: + (adunare), (scdere), * (nmulire), / (mprire), MOD (restul mpririi a dou numere), ^ (ridicarea la putere, de

17

exemplu x2 se scrie x^2), & (concatenare a dou iruri de caractere), = (verific egalitatea a dou
valori), <> (operatorul diferit, de exemplu ), < (strict mai mic), > (strict mai mare), <= (mai mic sau
egal), >= (mai mare sau egal), LIKE (format general LIKE masca, de exemplu nume LIKE A* se
vor afia toate numele care ncep cu A, indiferent din cte caractere, dar LIKE A?? va afia doar
numele care ncepe cu A i are lungimea de trei caractere), IN (formatul general IN (list de valori), de
exemplu condiia: sex IN (m,f) sau [tip client] IN (persoana fizica,persoana juridica)),
BETWEEN (format general Between Val_minim AND Val_maxim, de exemplu, dac se dorete
afiarea studenilor cu note ntre 9 i 10 se va utiliza condiia BETWEEN 9 AND 10), NOT (negaie),
AND (conjuncie), OR (disjuncie), NOT NULL (va afia toate nregistrrile care nu au valori
introduse n acel cmp), Date() (returneaz data curent), MONTH (afieaz luna dintr-o dat
calendaristic, de exemplu MONTH(#27.12.2011#) va returna valoarea 12), YEAR (afieaz anul
dintr-o dat calendaristic, de exemplu YEAR(#21.11.2011#) va returna valoarea 2011), IIF (cu
formatul general IIF (condiie, val_dac_adevarat, val_daca_fals), de exemplu dac se dorete afiarea
situaiei bursierilor: pentru studeni care au media peste 9,50 se va afia burs de merit, celor ntre 8 i
9,50 burs de studiu iar celorlai nimic, se va scrie urmtoarea condiie: IIF ([media]>9,5; bursa de
merit; IIF([media] BETWEEN 8 AND 9,50;Bursa de studiu;)) ) i multe altele. Simbolul ; care
desparte argumentele funciei depinde de setrile regionale. Setrile regionale utilizate n cadrul
aceszui capitol sunt cele corespunztoare Romniei (Control Panel, Clock Language and Region,
Change Location, pagina Location, Current Location: Romania). Data calendaristic este astfel
formatat ca dd.mm.yyyy, iar punctul zecimal este simbolul virgul. n cazul n care este selectat o
alt locaie, att separatorul care desparte argumentele funciei, simbolul zecimal, formatul Currency
ct i formatele Date/Time sunt modificate n consecin.
Dac se dorete adugarea unui cmp care va fi calculat dup o formul, se selecteaz prima coloan
liber n Design View, iar pe linia Field se tasteaz numele care se dorete s apar n capul de table
ca titlul al coloanei respective, urmat de simbolul : i formula de calcul. Numele de cmpuri se scriu
ntre paranteze drepte. De exemplu: Valoare: [cant]*[pret]. Dac se dorete formatarea cmpului (de
exemplu, Currency), n Design View se apeleaz meniul contextual pe cmpul proaspt construit, se
selecteaz Properties, apoi la proprietatea Format se selecteaz Currency.
Interogri cu parametru
n cazul interogrilor de selecie se pot utiliza parametrii. Dac se dorete citirea interactiv de la
tastatur a unei valori a unui cmp, n vederea verificrii unui criteriu i a afirii datelor din
tabel/tabele, pe linia Criteria se introduce ntre paranteze drepte un text, de exemplu [Introduceti
data facturii]. Acest text va fi interpretat ca un parametru, construindu-se automat pentru acest
parametru o caset de introducere a valorii. Va fi evaluat valoarea citit de la tastatur, se verific
egalitatea cu valorile din cmpul pe care este plasat parametrul, i anumte [data facturii], i sunt afiate
nregistrrile care verific condiia [data facturii]=valoarea introdus de la tastatur.

5.4.2 Interogri de sintetizare a datelor


Interogarea de selecie poate fi transformat ntr-o interogare de sintetizare a datelor apelndu-se
butonul Totals de pe panglic. Aceasta are ca efect crearea unei linii noi denumit Total, unde automat
apare condiia Group by.
Pentru a crea o interogare de sintetizare a datelor:
1. se creaz o interogare n Design View;
2. se selecteaz sursa datelor (din fereastra Show Table, dublu-clic pe numele tabelelor, neaprat
acestea trebuie s fie toate legate ntre ele), apoi se nchide fereastra Show Table;

18

3. se selecteaz cmpurile dup care se grupeaz datele i cmpurile care trebuie calculate (de
exemplu dac se dorete afiarea mediei anului, se aleg cmpuri an i medie; dac se dorete
afiarea medie studenilor pe grupe, se aleg cmpurile an, grupa i medie);
4. se selecteaz butonul Totals. Pe linia Totals vor apare opiunile Group By utilizate pentru a
defini grupurile de nregistrri asupra crora se vor executa funcii agregat (SUM, MIN,
MAX, COUNT, AVG, etc);
5. pe coloana/coloanele care se doresc a fi calculate i linia Totals se alege o funcie de agregare
sau condiia WHERE care permite impunerea unor criterii suplimentare. Toi operatorii
amintii mai sus pot fi folosii n clauza Where;
6. dac se dorete ascunderea unor cmpuri, se deselecteaz caseta corespunztoare de pe linia
Show;
7. pentru a vizualiza rezultatul se apeleaz opiunea Datasheet View.

5.4.3 Interogri de aciune


Interogrile de aciune sunt nu au ca efect afiarea unui rezultat, ele au un alt scop: manipularea
datelor din tabele. Operaiile care pot fi executate cu ajutorul interogrilor de aciune sunt: Make
Table, Append, Update i Delete.
Pentru ca toate aceste interogri de aciune s poat fi executate, este necesar setarea unui nivelul de
securitate mai sczut prin selectarea butonului Options de pe bara Security Warning, selectndu-se
opiunea Enable this content.

5.4.3.1 Interogri pentru crearea unei noi tabele (MAKE TABLE)


Interogrile care creaz o nou tabel sunt utilizate de obicei pentru a obine un tabel unic cu date din
mai multe tabele legate ntre ele.
Pentru a crea o interogare de tip Make Table se parcurg urmtorii pai:
1. se creaz o interogare n Design View;
2. se selecteaz sursa datelor (din fereastra Show Table, dublu-clic pe numele tabelelor, acestea
fiind legate ntre ele), apoi se nchide fereastra Show Table;
3. se selecteaz cmpurile dorite, se ordoneaz datele, se adug condiii;
4. se verific trecnd n Datasheet View rezultatul dorit, apoi se revine n Design View;
5. se transform interogarea de selecie ntr-una de aciune selectndu-se butonul Make Table de
pe panglic. n fereastra Make Table se va tasta numele noului tabel care va fi creat figura
19;
6. se va salva interogarea:
7. se execut interogarea prin apsarea butonului Run de pe panglic.
Observaie: Dac se dorete deschiderea interogrii pentru modificare, se
apeleaz meniul contextual ataat interogrii din panoul de navigare, apoi se
alege Design View. De fiecare dat cnd interogarea este apelat, tabela este
rescris.

19

Fig. 19 Interogare de tip Make Table

Se observ c icoana asociat interogrii de tip Make Table este diferit fa de cea asociat
interogrilor de selecie.

5.4.3.2 Interogri pentru actualizarea datelor (UPDATE)


Interogrile care permit actualizarea datelor sunt folosite pentru a efectua anumite calcule asupra unor
cmpuri din tabele (de exemplu, se mrete preul pinii cu 2%). Pentru a crea o interogarea de tip
Update se parcurg urmtorii pai:
1. se creaz o interogare n Design View;
2. se selecteaz sursa datelor (din fereastra Show Table, dublu-clic pe numele tabelelor, acestea
fiind legate ntre ele), apoi se nchide fereastra Show Table;
3. se selecteaz cmpul a crui valoare trebuie modificat i cel ce limiteaz modificarea la
anumite nregistrri (n acest caz, cmpul denumirea produsului pe care se va seta condiia pe
linia Criteria (=paine, i cmpul pret, cruia i se va modifica valoarea n urma interogrii);
4. se transform interogarea de selecie ntr-una de aciune selectndu-se butonul Update de pe
panglic. n fereastra QBE va apare o nou linie numit Update To. Pe acea linie, sub pret se
va scrie formula de calcul: [pret]+[pret]*2/100;
5. se verific trecnd n Datasheet View rezultatul dorit, apoi se revine n Design View;
6. se salveaz interogarea;
7. se execut interogarea prin apsarea butonului Run de pe panglic.
Observaie: Dac se dorete deschiderea interogrii pentru modificare, se
apeleaz meniul contextual ataat interogrii din panoul de navigare, apoi se
alege Design View. De fiecare dat cnd interogarea este apelat, valoarea
cmpului este modificat.
Se observ c icoana asociat interogrii de tip Update este diferit fa de cea asociat interogrilor
de selecie i de cea a interogrii de tip Make Table.

5.4.3.3 Interogri pentru adugarea datelor din alte tabele (APPEND)


Interogrile de acest tip permit adugarea unor nregistrri din alte tabele care au n componen
cmpuri de acelai tip.
Pentru a crea o interogarea de tip Append se parcurg urmtorii pai:
1. se creaz o interogare n Design View;

20

2. se selecteaz sursa datelor tabelul surs, de unde se dorete transferul datelor n cellalt tabel
(din fereastra Show Table, dublu-clic pe numele tabelelor, acestea fiind legate ntre ele), apoi
se nchide fereastra Show Table;
3. se selecteaz cmpurile care se doresc a fi trimise ntr-o alt tabel. n acea tabel vor trebui s
existe cmpuri de acelai tip cu cele selectate la acest pas;
4. se selecteaz o ordine de sortare a nregistrrilor i/sau se completeaz liniile Criteria i Or
(dac este cazul);
5. se verific trecnd n Datasheet View rezultatul dorit, apoi se revine n Design View;
6. se transform interogarea de selecie ntr-una de aciune selectndu-se butonul Append To. Se
selecteaz numele tabelei destinaie. Se observ adugarea unei noi linii n fereastra QBE, cu
numele Append To. Dac numele cmpurilor din cele dou tabele difer, celula
corespunztoare din tabela destinaie, de pe linia Append to, va rmne necompletat. Ea
poate fi completat utilizndu-se caseta combinat, alegnd numele cmpului dorit din tabela
destinaie;
7. se salveaz interogarea;
8. se execut interogarea prin apsarea butonului Run de pe panglic.
Aceeai observaie este valabil ca i la interogarea de tip Update. Totodat, icoana asociat acestui
tip de interogare este diferit de celelalte.

5.4.3.4 Interogri pentru tergerea nregistrrilor (DELETE)


Acest tip de interogare se utilizeaz pentru a terge automat anumite nregistrri din una sau mai multe
tabele. Pentru a crea o interogarea de tip Delete se parcurg urmtorii pai:
1. se creaz o interogare n Design View;
2. se selecteaz sursa datelor tabelul surs, de unde se dorete tergerea datelor (din fereastra
Show Table, dublu-clic pe numele tabelelor, acestea fiind legate ntre ele), apoi se nchide
fereastra Show Table;
3. se selecteaz cmpul/cmpurile care conin valorile care compun condiia de tergere;
4. se completeaz liniile Criteria i Or (dac este cazul n caz contrar vor fi terse toate
nregistrrile din tabela sau tabelele respective);
5. se transform interogarea de selecie ntr-una de aciune selectndu-se butonul Delete. Pe linia
Delete va apare clauza Where, care permite construirea condiiei de tergere ;
6. se verific trecnd n Datasheet View rezultatul dorit, apoi se revine n Design View;
7. se salveaz interogarea;
8. se execut interogarea prin apsarea butonului Run de pe panglic.
Aceeai observaie este valabil ca i la interogarea de tip Append. Icoana asociat acestui tip de
interogare este diferit de celelalte.
Observaie: n cazul tergerii nregistrrilor din mai multe tabele, aceasta poate
fi mpiedicat datorit setrii regulilor de integritate referenial (dac n
fereastra Relationship, fiind selectat legtura dintre tabele, este selectat
caseta Enforce Referential Integrity iar Cascade Delete Related Records nu
este bifat).

21

5.5 Obiecte Forms


Formularul este un obiect al bazei de date care permite vizualizarea, modificarea sau introducerea a
noi informaii n tabela pe baza cruia a fost creat.
Pe un formular pot fi adugate urmtoarele tipuri de controale:
legate: sunt create pe baza unui tabel, a mai multor tabele sau a unei interogri, permit
vizualizarea nregistrilor, actualizarea valorilor cmpurilor sau adugarea unor cmpuri
calculate;
nelegate: destinate crerii unui meniu, afirii unor mesaje, informaii despre sistem, etc.
Formularele pot fi create utiliznd butoanele de pe panglic. Vom prezenta n continuare crearea
formularelor cu ajutorul butoanelor Form, Form Wizard i Design Form.

5.5.1 Formulare create cu ajutorul butonului Form


Pentru a crea un formular, se selecteaz din panoul de navigare numele tabelei sau interogrii care va
conine sursa datelor.
Dac tabelul este tabel de referin pentru mai multe alte tabele sau este tabel referit de alte tabele
(copil) atunci Access va crea automat un formular cu layout-ul Columnar (este afiat coninutul
unei singure nregistrri la un moment dat) figura 20.
Pentru a vizualiza toate nregistrrile se poate utiliza bara de navigare Record aflat n partea de jos a
formularului, utilizndu-se butoanele Next Record (trecerea la urmtoarea nregistrare), Previous
Record (trecerea la nregistrarea anterioar), First Record (trecerea la prima nregistrare), Last
Record (trecerea la ultima nregistrare), New (Blank) Record (adugarea unei noi nregistrri) i
Search.

Fig. 20 Formularul Furnizori

Dac tabelul este tabel de referin pentru un singur tabel, atunci Access va crea automat un formular
cu subformular, afind n subformular doar acele nregistrri din tabela referit care verific condiia
ca valoarea cheie strin este egal cu valoarea afiat n cmpul cheie primar din tabela de referin
afiat n formular. Pentru tabela de referin layout-ul formularului este Columnar (este afiat o
singur nregistrare la un moment dat), iar pentru sub-formular layout-ul este Tabular (sunt afiate
toate nregistrrile care verific condiia de legtur) figura 21. Totodat cmpul cheie strin (din
tabelul referit) este ascuns (nu este necesar afiarea aceluiai cmp de mai multe ori n cadrul unui
formular).
Se observ c pentru fiecare formular apare cte o bar de navigare Record. Cea mai de jos este
pentru datele din tabelul de referin (printe), cea din interior va fi pentru datele din tabelul referit

22

(copil). Pentru a naviga prin nregistrri se utilizez bara corespunztoarelor formularului creat pentru
tabelul de referin.

Fig. 21. Formular cu sub-formular

Modul de afiare afiat implicit va fi Form View. Dac se dorete, se poate trece la Design View
pentru a modifica proprietile controalelor de pe formular cu ajutorul butonului View de pe panglic.

5.5.2 Formulare create cu ajutorul butonului Form Wizard


Access 2007 pune la dispoziia utilizatorilor un asistent care permite crearea rapid a nregistrrilor
urmnd anumii pai. Pentru a utiliza butonul Form Wizard este necesar selectarea butonului More
forms de pe panglic, opiunea de meniu Create figura 22.

Fig. 22 Selectarea butonului Form Wizard

Pentru a crea un formular utiliznd Form Wizard trebuie parcuri urmtorii pai:
se selecteaz sursa datelor numele tabelului sau a interogrii pe baza cruia se dorete
crearea formularului i a cmpurilor care se dorete s apar pe formular figura 23, apoi se
apas butonul Next;

Fig. 23 Selectarea sursei formularului

23

se selecteaz layout-ul formei (modul n care sunt aranjate nregistrrile pe formulare;


Columnar i Justified afieaz o singur nregistrare la un moment dat, Tabular i
Datasheet afieaz toate nregistrrile la un moment dat) figura 24, apoi se apas butonul
Next;

Fig. 24 Alegerea Layout-ului formularului

se alege stilul (combinaiile de culori i obiectele grafice de pe formular) figura 25, apoi se
apas butonul Next;

Fig. 25 Alegerea stilului formularului

se alege un titlu pentru formular i modul de vizualizare al acestuia, n cazul de fa


deschiderea n modul de vizualizare Form View (Open the form to view or enter
information) figura 26, apoi se apas butonul Finish.

Fig. 26 Crearea unui titlu i deschiderea formularului n modul Form View

Formularul astfel creat va arta ca n figura 27.

24

Fig. 27 Formularul Furnizori1 n Form View

Orice formular conine urmtoarele zone figura 28:


Form Header antetul formularului, utilizat pentru afiarea unui titlu, sigla unei companii,
data ntocmirii;
Detail zona n care sunt amplasate controalele corespunztoare nregistrrilor din tabelul sau
interogarea surs;
Form Footer: subsolul formularului, utilizat pentru comentarii, semnturi, numrul paginii,
butoane de comand.

Fig. 28 Formularul Furnizori1 n Design View

Pentru a activa zonele Form Header/Footer se apeleaz meniul contextual al formularului,


selectndu-se opiunea cu acelai nume.

5.5.3 Formulare create cu ajutorul butonului Form Design


Pentru a creea un formular cu ajutorul butonului Form Design se parcurg urmtorii pai:
1. se selecteaz butonul Form Design de pe panglic, opiunea de meniu Create figura 29;

Fig. 29 Un formular gol n Design View

25

2. de pe panglic, opiunea de meniu Design, se selecteaz butonul Property Sheet


. n
fereastra cu acelai nume, n cadrul casetei combinate Selection Type se alege obiectul Form.
De pe pagina All, apelnd sgeata din dreptul casetei Record Source numele tabelei pe baza
creia se va creea formularul: de exemplu furnizori figura 30;

Fig. 30 Selectarea sursei formularului

3. se selecteaz butonul Add Existing Fields iar din fereastra Field List se execut dublu-clic pe
numele cmpurilor care se dorete s apar pe formular figura 31. Acestea vor aprea pe
formular n zona de Detail a formularului;

Fig. 31 Adugarea controalelor pe formular

4. se salveaz formularul butonul Save de lng butonul Office;


5. pentru a vizualiza nregistrrile se trece n modul de vizualizare Form View (folosind butonul
View de pe panglic) figura 32.

Fig. 32 Formular n modul de vizualizare Form View

Pe formulare pot fi plasate diverse obiecte care poart numele de controale.


Dintre cele mai des utilizate controale amintim:
Label (etichete) control cu un coninut fix, corespunztor constantelor, utilizat pentru
afiarea unor comentarii, titluri, mesaje. Access genereaz automat cte o etichet pentru
majoritatea controalelor definite de utilizator. De obicei ele sunt plasate n stnga controlului
pe care l nsoete. Toate etichetele vor fi salvate cu nume care ncep cu prefixul de 3 litere lbl
(label). Pentru fiecare control de tip etichet se vor modifica proprietile Name i Caption.
Proprietatea Caption controleaz textul care va apare pe formular figura 33. Pentru a crea o

26

etichet, se selecteaz butonul


de pe panglic, opiunea de meniu Design. n fereastra
Property Sheet se modific proprietatea Name: lblTitluFurnizor, Caption: Lista furnizorilor;

Fig. 33 Controale de tip etichet

Text-box (casete de text) sunt controale cu coninut variabil, corespunztoare cmpurilor


dintr-o tabel sau interogare, sau variabilelor. Coninutul acestora se modific n funcie de
nregistrarea curent figura 34. Pentru toate casetele de text se modific proprietatea Name
n fereastra Property Sheet. Prefixul pentru casetele de text este txt (text). Pentru casetele de
text legate de un cmp, proprietatea Control Source apare automat completat n cazul
formularului creat dup paii prezentai anterior. De exemplu, pentru caseta de text Nr_furn se
va modifica proprietatea Name: txtNr_furn, proprietatea Control Source va fi automat
completat cu valoarea Furnizori.Nr_furn (numele tabelei surs urmat de punct apoi
numele cmpului de unde provin datele). Dac se dorete crearea unei casete de text, se
selecteaz de pe panglic butonul
. Vor fi create automat att o caset de text ct i o
etichet care va explicita valorile afiate n caseta de text. Pentru etichet se vor modifica
proprietile Name i Caption, iar pentru caseta de text se vor modifica proprietile Name i
Control Source (dac nu este deja completat);

Fig. 34 Controale de tip casete de text

Button (butoane de comand) servete la declanarea unor aciuni predefinite sau a unor
aciuni definite prin intermediul unor proceduri Visual Basic Application. n capitolul urmtor
este prezentat o modalitate de a crea butoane de comand fr ajutorul asistentului. Vom
prezenta n continuare crearea unui buton cu ajutorul asistentului.

Pentru a crea un buton fr a cunoate comenzi Visual Basic Application este necesar selectarea
butonului Use Control Wizards de pe panglic
. Se selecteaz butonul Button de
pe panglic
apoi se execut un clic n zona Form Footer figura 35.
La primul pas se alege categoria de aciuni (navigare prin nregistrri, operaii cu nregistrri, operaii
cu formulare, operaii cu rapoarte, nchiderea aplicaiei i diverse tiprirea tabelelor, execuia unei
interogri, execuia unei macrocomenzi, etc).

27

Fig. 35 Crearea unui buton de comand cu ajutorul asistentului

Dup ce s-a ales categoria, se alege aciunea din partea dreapt. n cazul de fa, s-au ales operaiile cu
formulare pentru c se dorete crearea unui buton care s nchid forma, de aceea a fost selectat
aciunea Close Form. Se trece cu Next la pasul urmtor.
Se va alege opiunea Text specificndu-se textul care se dorete s apar pe buton: nchidere figura
36, apoi se apas butonul Next.

Fig. 36 Specificarea textului care va apare pe buton

n cadrul ultimei ferestre se specific numele controlului. Butoanele de comand au prefixul cmd, deci
numele controlului va fi cmdInchidere figura 37. Pentru a finaliza crearea butonului se apas
selecteaz opiunea Finish.

Fig. 37 Denumirea controlului de tip buton de comand

Pentru a ncerca butonul trebuie selectat modul de vizualizare Form View figura 38.

Fig. 38 Butonul Inchidere

28

n mod similar pot fi create multe alte butoane de comand pentru a automatiza baza de date.
Pe un formular pot fi plasate controale care s afieze valori calculate. Pentru a crea un control
calculat, se parcurg urmtorii pai:
1. se selecteaz butonul Text box de pe panglic, apoi execut clic n zona Detail, sub
controalele existente;
2. se modific proprietile Name i Caption ale etichetei;
3. se modific proprietatea Name a casetei de text;
4. n cadrul proprietii Control Source se tasteaz formula de calcul, ncepnd cu semnul =.
Numele cmpurilor sunt scrise ntre paranteze drepte, de exemplu: =[valoare fara TVA]*1,24.

5.5.4 Formulare cu sub-formulare


Crearea unui formular cu subformular permite actualizarea mai multor tabele prin intermediul unui
singur obiect. Subformularele sunt create pentru tabelele referite din cadrul unei relaii de tip one-tomany. Formularul principal are ca surs tabelul de referin, reprezentnd partea de one (unu).
Pentru acest formular se va utiliza un layout de tip Columnar sau Justified (permite afiarea unei
singure nregistrri). Sursa subformular este tabelul referit, reprezentnd partea many (mai muli).
Subformularul va fi construit pe baza unui layout de tip Tabular sau Datasheet (sunt afiate toate
nregistrrile). Crearea unui formular cu subformular presupune nglobarea formularului many n
formularul one.
Pentru a crea un formular cu subformular se parcurg urmtorii pai:
1. se creaz un formular utilizndu-se Form Wizard pentru tabela de referin, pe un layout de
tip Columnar. Se salveaz formularul. Formularul rmne deschis n Design View;
2. se creaz un formular utilizndu-se Form Wizard pentru tabela referit (copil), pe un layout
de tip Tabular. Se salvez formularul i se nchide;
3. n primul formular, se extinde zona Detail. Din panoul de navigare se alege numele
formularului corespunztor tabelului referit i se depoziteaz pe formular n zona Detail, sub
celelalte controale. Se salveaz formularul utilizndu-se butonul Office, opiunea Save as,
Save object as, cu numele celor dou formulare care compun formularul cu subformular (de
exemplu FurnizoriFacturi).

5.6 Obiecte Reports


Raportul este un obiect al bazei de date care permite vizualizarea informaiilor pe ecran sau trimiterea
acestora la imprimant. Raportul poate fi creat fie pe baza unui tabel, fie pe baza unei interogri.
Un obiect de tip report poate conine urmtoarele zone:
Report Header/Footer zona de antet i subsol ale raportului, ele apar o singur dat la
nceputul, respectiv finalul raportului;
Page Header/Footer zona de antet i subsol ale fiecrei pagini a raportului;
Group Header/Footer zona de antet i subsol al cmpului/cmpurilor dup care se
realizeaz o grupare;
Detail se afieaz pentru fiecare nregistrare n parte;
Subrapoarte sunt obiecte de tip raport coninute n cadrul raportului printe;
Controale obiecte care pot fi plasate n cadrul raportului.

29

Varianta cea mai simpl de creare a rapoartelor este Report Wizard. Dac se dorete afiarea datelor
din mai multe tabele, poate fi creat o nou tabel pe baza unei interogri, raportul fiind construit pe
baza acesteia. Dac se dorete afiarea unor cmpuri calculate, acestea pot fi create cu ajutorul unei
interogri, raportul fiind creat pe baza interogrii.
Raportul creat cu ajutorul instrumentului Report Wizard poate fi deschis n modul Design View i
modificat prin adugarea unui nivel de grupare, a unei sortari sau a unor cmpuri calculate.
Pentru a construi un raport n Report Wizard se parcurg urmtorii pai:
1. se selecteaz opiunea de meniu Create, butonul Report Wizard;
2. din caseta Tables/Queries se alege sursa raportului (tabelul sau interogarea), iar cu ajutorul
sgeilor din mijlocul ferestrei se selecteaz cmpurile care se doresc a fi afiate n raport, ele
aprnd n fereastra Selected Fields, apoi se apas butonul Next figura 39;

Fig. 39 Selectarea sursei raportului

3. Se pot aduga unul sau mai multe niveluri de grupare selectnd numele cmpului din partea
din stnga. Se folosesc butoanele cu sgei pentru a selecta cmpul/cmpurile ca nivel de
grupare. Pot fi adugate pn la 10 niveluri de grupare figura 40.

Fig. 40 Adugarea unor criterii de grupare

Dac se doresc grupri mai speciale, se poate selecta butonul Grouping Options. n funcie de
tipul cmpului selectat pot fi alese intervale de grupare, de exemplu n cazul unui cmp de tip
Text grupare dup prima liter, dup primele 2 litere, etc figura 41. Pentru a trece la pasul
urmtor se apas butonul Next;

30

Fig. 41 Opiuni de grupare

4. se poate stabili o ordine de afiare a nregistrrilor n cadrul raportului, sortnd pn la 4


cmpuri simultan figura 42, apoi se apas butonul Next figura;

Fig. 42 Opiuni de ordonare

5. Se pot alege diverse modaliti de aranjare a datelor (Stepped, Block sau Outline) i se poate
seta orientarea paginii (Portrait pe vertical sau Landscape pe orizontal), apoi se apas
butonul Next figura 43;

Fig. 43 Opiuni legate de formatare

6. se poate alege un stil dintr-o list cu stiluri disponibile, fiind vizibil un Preview al acestuia n
partea din stnga al ferestrei, apoi se apas Next figura 44;

Fig. 44 Alegerea unui stil

7. la ultimul pas se alege titlul raportului i vizualizarea acestuia n modul Preview figura 45,
apoi se apas butonul Finish.

31

Fig. 45 Adugarea unui titlu

Raportul va fi afiat n modul Print Preview figura 46. Pentru a reveni la modul de Design, se apas
butonul Close Print Preview de pe panglic.

Fig 47 Raport n modul Print Preview

Raportul n modul Design View seamn cu un obiect de tip formular n Design View figura 48.

Fig. 48 Raport n Design View

Pentru cmpurile numerice care conin valori multiple n cadrul aceluiai grup, la pasul 4 se va afia
un buton n plus, denumit Summary Options figura 49.

32

Fig. 49 Butonul Summary Options

Dac acesta este selectat, pune la dispoziia utilizatorilor funcii totalizatoare: SUM, MIN, MAX i
AVG figura 50.

Fig. 50 Fereastra Summary Options

Se poate selecta una din opiunile Detail and Summary (vor fi afiate subtotaluri la nivelul fiecrui
grup i la nivel de raport) sau Summary Only (doar subtotal la nivel de grup) figura 51.

Fig. 51 Raport cu grupare i subtotaluri la nivel de grup i raport

Pe orice raport pot fi create casete de text care pot fi calculate dup modelul prezentat n paragraful
5.5.3. Pentru a aduga o funcie totalizatoare (de exemplu, calcularea valorii totale a tuturor facturilor,
n zona Report Footer se va aduga o caset de text. Se vor modifica proprietile Name i Caption
corespunztoare etichetei. Se va modifica proprietatea Name asociat casetei de text. n cadrul
proprietii
Control
Source
asociat
casetei
de
text
se
va
tasta
formula
=SUM([cantitate]*[pret]*1,24)). Din cadrul proprietii Format asociat casetei de text se va alege
opiunea Currency, pentru afiarea simbolului valutar.

33

5.7 Obiecte Macros


Obiectele de tip Macro sunt un instrument util atunci cnd se dorete execuia unor aciuni i evitarea
programrii. Ele automatizeaz operaiunile din cadrul unei baze de date Access. Obiectele de tip
Macro pot fi ncorporate n cadrul unui formular, depinznd de obiectul n care este plasat, sau pot fi
autonome, fiind apelabile de oriunde.
n cadrul unui obiect de tip Macro pot fi selectate mai multe aciuni, acestea fiind alese dintr-o list i
executate n ordinea n care au fost create.
O macrocomand se execut folosindu-se butonul Run (ca i n cazul interogrilor de aciune).
Cu ajutorul macrocomenzilor pot fi create meniuri personalizate pentru a nlocui panglica (Ribbon-ul).
Pentru a crea o macrocomand se selecteaz opiunea de meniu Create, iar din zona Other, Macro.
De exemplu, dac se dorete crearea unei macrocomenzi care s deschid o interogarea n mod ReadOnly se vor parcurge urmtorii pai:
n coloana Action se alege dintr-o list de aciuni predefinite, Open Query;
n partea de jos a ecranului se selecteaz Query Name (numele interogrii);
se selecteaz modul de vizualizare n care va fi deschis interogarea (n cazul de fa
Datasheet);
n caseta Data Mode se alege Read-Only.
Macrocomanda va fi salvat cu numele Deschidere Interogare Furniz i poate fi executat apsnd
butonul Run figura 52.

Fig. 52 Crearea unei macrocomenzi

De regul macrocomenzile sunt ataate fie unei opiuni de meniu fie unui buton de comand plasat pe
un formular.

34

5.8 Obiecte Modules


Obiectele de tip Module sunt module de program scrise n Visual Basic Application. Ne vom ocupa
de module de cod n capitolul urmtor, ca suport al execuiei comenzilor SQL (Structured Query
Language). Utilizarea limbajului de programare Visual Basic Application nu face obiectul prezentului
curs.

5.9 Concluzii
Microsoft Access ofer utilizatorilor un mediu vizual cu o interfa grafic prietenoas, capabil de a
dezvolta aplicaii complexe, fr a avea nevoie de cunotine de programare. Fa de versiunile
anterioare, Access conine o serie de mbuntiri (sunt puse la dispoziia utilizatorului o serie de
abloane, ofer suport pentru introducerea datei calendaristice, apariia unui nou tip de cmp
Attachment, pentru stocarea mai multor obiecte create cu alte aplicaii, etc). Noua interfa Microsoft
Access 2007 este una unitar n pachetul Microsoft Office, utilizatorul putnd regsi cu uurin
comenzile uzuale.

5.10 Rezumatul capitolului


Gestionarea obiectelor Access se realizeaz ntr-o manier centralizat prin nglobarea lor n baza de
date. Sunt disponibile interfee simple pentru construirea structurii bazei de date (tabelele, relaiile
dintre ele i dicionarul de date), crearea unor formulare pentru inserarea datelor n tabele sau
actualizarea datelor din tabele, automatizarea acestora cu ajutorul butoanelor de comand, crearea unor
panouri de comand care vor gestiona operaiile efectuate cu baza de date, selecia datelor din una sau
mai multe tabele, dup anumite criterii, actualizarea tabelelor prin interogri care permit crearea unor
noi tabele, inserarea de noi nregistrri, modificarea sau tergerea automat a acestora n funcie de
anumite criterii, crearea macrocomenzilor pentru anumite aciuni uzuale sau crearea unor secvene de
cod i afiarea datelor sau trimiterea acestora ctre imprimant.
Mediul de lucru Access se bazeaz pe utilizarea ferestrelor, oferindu-se posibilitatea vizualizrii ntr-o
fereastr cu mai multe tab-uri. Panoul de navigarea grupeaz toate obiectele bazei de date.

35

5.11 Exemple
5.11.1 Problem rezolvat Tabel creat n Datasheet View
S se creeze o baz de date cu numele Exemplul 1 care s conin un tabel cu numele Studeni. Acesta
va avea structura ID, nume, prenume, an, serie, grupa, data naterii, adresa, cstorit, email, fotografie.
Se vor introduce 3 studeni n tabel.
Rezolvare
Se va crea o baz de date cu numele Exemplul 1, salvat pe Desktop. Odat cu crearea bazei de date,
Access creaz automat o tabel cu numele care va conine un cmp ID (identificator) de tip
Autonumber, care va fi cheia primar a tabelei.

Figura 53. Crearea unei tabele

Pentru a salva tabela i a modifica numele acesteia, se apas butonul Save

aflat pe bara panglic.

Construirea a structurii tabelei va continua cu adugarea unui nou cmp (o nou coloan) executnduse dublu-clic pe linia cu ID, celula n care apare Add New Field figura 53. Dup tastarea numelui
cmpului, se apas Enter, trecerea fiind fcut la urmtoarea coloan. Dup ce s-a editat capul de
tabel se trece la introducerea datelor n tabel.
Cmpul ID fiind de tip Autonumber, acesta va fi completat automat odat cu selectarea primei litere
din numele studentului. Se completeaz toate cmpurile pn la fotografie. Se observ faptul c nu
exist posibilitatea completrii acestui cmp. Pentru aceasta trebuie modificat tipul. Pentru aceasta se
alege de pe bara de meniuri opiunea de meniu Datasheet, caseta Data Type i se selecteaz OLE
Object.

Fig. 54. Meniul Datasheet, caseta Data type

Se observ faptul c valoarea din coloana anul, fa de valorile din coloanele seria i grupa, este
aliniat la stnga, fa de celelalte dou valori care sunt aliniate la dreapta. Microsoft Access 2007
pstreaz acelai mod de aliniere ca i Microsoft Excel 2007, irurile de caractere sunt aliniate la
stnga, iar numerele aliniate la dreapta. Deci cmpul an nu este recunoscut ca fiind de tipul potrivit
(Number). De aceea se selecteaz coloana an i se procedeaz n acelai mod ca n cazul fotografiei,
selectnd tipul de date Number. Microsoft Access afieaz un mesaj de avertizare atunci cnd tipul de
date este schimbat, unele valori putnd fi pierdute figura 55.

36

Fig. 55 Mesaj de avertizare la schimbarea tipului de date

Se poate selecta fiecare cmp pentru a se verifica formatul dorit. n cazul n care valoarea care a fost
introdus nu corespunde cu valorile care trebuie introduse n cadrul acestui cmp, valoarea existent
este pierdut.
n cazul cmpului data naterii acesta trebuie s fie de tip Date/time, adresa de tip memo (texte mai
mari de 255 de caractere), casatorit un cmp de tip Yes/No. Formatul clasic de afiare fiind un checkbox (caset de opiune) care poate fi bifat sau nu, corespunztor celor dou valori posibile.

Fig. 56 Valorile cmpului de tip Yes/No

Cmpul e-mail trebuie s fie de tip Hyperlink.


Pentru a introduce o fotografie n cmpul omonim, se selecteaz celula corespunztoare, se selecteaz
meniul contextual, apoi opiunea Insert Object.

Fig. 57 Introducerea unui obiect ntr-un cmp de tip OLE Object

Sunt disponibile dou opiuni Create New sau Create from File. n acest caz vom presupune faptul
c fotografia exist deja, deci alegem a doua opiune. Tehnologia OLE (Object Linking and
Embedding) legare i ncorporare de obiecte, permite nglobarea obiectului n tabel, deci n baza de
date, sau, dac se selecteaz opiunea Link, crearea unei legturi ctre obiectul respectiv, fr ca
acesta s fie ncorporat n tabel.

Fig. 58 Alegerea unei fotografii

Cmpul fotografie va fi completat cu textul Package. La execuia unui dublu-clic, fotografia va fi


deschis pentru a fi vizualizat cu softul predefinit pentru vizualizarea fotografiilor.

37

Se introduc nc 2 studeni. Dac este necesar, se poate utiliza bara orizontal de derulare (Scroll)
aflat n partea de jos a ecranului figura 59.

Fig. 59 Bara de derulare orizontal

Modul de vizualizare utilizat se observ de pe bara de stare Datasheet View. Pentru a trece de la un
mod de vizualizare la altul se pot utiliza butoanele de pe bara de stare: Datasheet View, PivotTable
View, PivotChart View sau Design View. Modul de vizualizare Datasheet View se utilizeaz n
general pentru a vizualiza datele din tabel, iar modul Design View se utilizeaz pentru a modifica
proprietile structurii tabelei. Opiunile PivotTable View i PivotChart View permit crearea unui
tabel, respectiv a unui grafic pivot.
n modul de vizualizare Datasheet View, bara de unelte Record permite navigarea prin nregistrri.
Cu ajutorul acesteia se permit n ordine: selectarea primei nregistrri, trecerea la nregistrarea
anterioar, afiarea numrului nregistrrii curente din numrul total de nregistrri, trecerea la
urmtoarea nregistrare, selectarea ultimei nregistrri, crearea unei noi nregistrri, dezactivarea unui
filtru (dac exist activat un criteriu de filtrare) precum i cutarea unei valori n tabel figura 60. De
reinut faptul c la un moment dat suntem poziionai pe o singur nregistrare din tabel.

Fig. 60 Bara de navigare Records fr filtrare

Pentru a terge o nregistrare se selecteaz antentul de linie i se apas tasta Delete de pe tastatur. n
cazul exemplificat n figura 61 s-au selectat 2 nregistrri pentru tergere.

Fig. 61 Mesajul de atenionare afiat la tergerea a dou nregistrri

Pentru a terge un cmp se poziioneaz cursorul pe antetul de coloan (unde este afiat numele
cmpului) i se selecteaz din meniul contextual opiunea Delete Column. Sistemul afieaz un mesaj
de avertizare figura 62.

Fig. 62 Mesaj de avertizare la tergerea unui cmp

38

Tabelul va fi automat deschis n modul de vizualizare Datasheet View. Pentru a trece la modul de
vizualizare special pentru modificarea proprietilor tabelului se selecteaz butonul Design View de pe
bara de stare figura 63.

Fig. 63 Trecerea la modul de vizualizare Design View.

Modul de vizualizare Design View permite setarea unor caracteristici (proprieti) nivel de fiecare
cmp n parte figura 64.

Fig. 64 Modul de vizualizare Design View

Modul uzual de lucru pentru crearea unei tabele este n modul de vizualizare Design View, acesta
permind setarea unor valori implicite, reguli de validare, moduri de afiare a datelor n cmp, etc.

39

5.11.2 Problem rezolvat Tabele create n Design View


Se dorete informatizarea activitii unei firme. Furnizorii sunt identificai prin cod furnizor,
denumire furnizor (numele i prenumele furnizorului), localitatea, adresa, email, banca furnizor i
cont furnizor. Despre produse se cunosc cod produs, denumire produs, unitate de msur, stoc, pre
unitar. Produsele sunt depozitate n magazii, pentru care se cunosc cod magazie, denumire magazie,
gestionar (numele persoanei care are n gestiune depozitul respectiv). Operaiunile se desfoar pe
baza unor facturi, care trebuie s conin numrul facturii i data facturii. Fiecare factur conine
detaliate liniile facturii i anume denumirea produsului, preul unitar, cantitatea facturat, calculnduse valoarea produsului (cu i fr TVA) i valoarea total a facturii cu i fr TVA.
Rezolvare
n urma analizei datelor i a aplicrii metodei matricii dependenelor funcionale din capitolul anterior,
se obine urmtoarea schem a bazei de date:

Fig. 65 Fereastra Relationship

Primul pas este crearea bazei de date. Aceasta va purta numele Firme. Pentru a crea baza de date, se
deschide mediul de lucru Access, apoi se alege opiunea Blank Database. Pentru a alege locaia n
care va fi salvat fiierul se alege icoana galben de folder, selectndu-se Desktop-ul ca destinaie, apoi
se tasteaz denumirea: Firme.
Dup crearea bazei de date se trece la analiza fiecrui tabel n parte i alegerea tipului de cmp cel mai
potrivit datelor care vor fi salvate n acesta.
Este foarte important ordinea n care tabelele voi fi create. Pentru aceasta se aleg tabelele de referin
(tabelele printe, cum ar fi Furnizori, Magazii, Produse) urmnd ca dup crearea acestora s se creeze
tabelele referite (Facturi, ProduseFacturate, ProduseMagazii).
n momentul n care se creaz baza de date, Access deschide automat un tabel cu numele Table1.
Se va modifica tabelul Table1 n tabelul Furnizori. Pentru aceasta vom salva tabelul cu numele
Furnizori, apelnd butonul Save de lng butonul Office. Pentru a aduga cmpuri i pentru a
modifica proprietile acestora, se va trece n modul de vizualizare Design View, fie folosind butonul
View de pe panglic, fie butonul cu acelai nume de pe bara de stare.
Se vor introduce urmtoarele cmpuri:
primul cmp l vom modifica din ID n cod_f (codul furnizorului), vom alege tipul de date
Number, Field Size: Integer, i Caption: cod furnizor, Validation Rule: >0, Validation Text:
Introducei un numr pozitiv, Required: Yes;
pentru cmpul den_f (denumirea furnizorului) tipul de dat Text, Field Size: 30, Format: >,
Caption: denumire furnizor, Required: Yes, Allow Zero Length: No, Indexed: Yes (Duplicates
OK);
localit (localitate) de tip Text, Field Size: 30, Caption: localitate, Default Value: Timisoara;
adresa de tip Memo;
email de tip Hyperlink;
banca de tip Text, Field Size: 30, Format: >, Required: Yes, Allow Zero Length: No;
cont (contul din banc, IBAN) de tip Text, Fields Size: 24, Input Mask:
"RO"99LLLL9999999999999999.

40

Fig. 66 Butonul View

Dup ce toate cmpurile au fost create, se salveaz tabela alegnd butonul Save, apoi se apas sgeata
de pe butonul View, de unde se alege Datasheet View figura 66, pentru a introduce datele a trei
furnizori n tabel figura 67.

Fig. 67 Tabela Furnizori n Datasheet View

Dup ce tabela a fost creat i s-au introdus nregistrri n ea, aceasta va fi nchis.
Pentru a crea o nou tabel, de pe bara de meniuri se alege opiunea Create, butonul Table Design.
Pentru tabela Magazii se insereaz urmtoarele cmpuri:
cod_m (cod magazie) Primary key, de tip Number, Field Size: Byte, Caption: Cod magazie,
Required: Yes;
den_m de tip Text, Field Size: 15, Caption: Denumire magazie, Indexed: Yes (Duplicates
OK);
gest de tip Text, Field Size: 30, Caption: Gestionar.
Se vor introduce 3 magazii, cu codurile magazinelor 111, 112 i 113;

Fig. 67 Tabela Magazii n Datasheet View

Pentru tabela Produse:


cod_p (codul produsului) Primary key, de tip Number, Field Size: Long Integer, Caption:
Codul produsului, Required: Yes;
den_p (denumirea produsului) tipul cmpului Text, Field Size:15, Caption: Denumirea
produsului;
um (unitate de msur) de tipul Lookup Wizard, apoi opiunea I will type in the values
that I want, n caseta Number of Columns nu se modific valoarea 1, iar n lista col1 vor fi
tastate pe rnd, una sub alta, valorile dorite: kg, l, m, buc, selectnd butonul Next, apoi Finish.
n tabela Produse se vor introduce 3 produse, cu codurile 11111, 111112 i 111113 figura 68.

41

Fig. 68 Tabela Produse

Tabela ProduseMagazii:
cod_p (cod produs) un cmp de tip Lookup Wizard pentru care se selecteaz opiunea I
want the lookup column to lookup the values in a table or query, apoi se alege tabela
Produse, apoi se selecteaz butonul Next; se alege cmpul cod_p, apoi se apas butonul Next
figura 69. Ordonarea va fi fcut dup acelai cmp cod_p, apoi se alege butonul Next.

Fig. 69 Crearea legturii cu tabela Produse

n ecranul urmtor pot fi observate valorile introduse anterior n tabela Produse, apoi se apas
butonul Next figura 70.

Fig. 70 Valorile introduse n cmpul cod_p din tabela Produse

La ultimul pas este posibil modificarea numelui cmpului (acesta va fi lsat neschimbat) apoi
se apas butonul Finish;
ntre cele dou tabele (Produse(tabela printe) i ProduseMagazii (tabela copil) va fi creat automat o
relaie. De aceea Access cere salvarea tabelei cu un nume (ProduseMagazii). Datorit faptului c nu a
fost creat nici o cheie primar, sistemul sugereaz crearea uneia. Se va alege No (cheia primar
compus va fi creat dup crearea cmpului cod_m).
cod_m (cod magazie) un cmp pentru care se alege Lookup Wizard se selecteaz opiunea
I want the lookup column to lookup the values in a table or query, apoi se alege tabela
Magazii; selectm cmpul cod_m (cod magazie). Ca ordine de sortare se alege cod_m, se
vizualizeaz codurile magaziilor introduse n tabela Magazii, apoi se las neschimbat numele
cmpului i se apas Finish. Se cere din nou salvarea tabele;
stoc (stocul disponibil n magazie) de tip Number, Field Size: Long Integer, Caption: Stoc
produs, Required: Yes.

42

Pentru a crea o cheie primar compus, se selecteaz utilizndu-se ptratul gri din faa numelui
cmpului ambele cmpuri cod_p i cod_m i se apas butonul Primary Key de pe panglic. Se
salvez tabela i se trece n modul de vizualizare Datasheet View pentru a introduce date n tabel.
Pentru ca ambele relaii s fie de tipul one-to-many, se vor introduce minim 4 nregistrri, un produs
fiind depozitat n dou magazii (de exemplu 111113).

Fig. 71 Tabela ProduseMagazii

Pentru tabela Facturi:


nr_f (numrul facturii) Primary key, de tip Number, Field Size: Long integer, Caption:
Numarul facturii, Required: Yes;
data_f de tip Date/Time, Caption: Data Facturii, Required: Yes, Format: Short date, Default
Value =Date();
cod_f (cod furnizor) tipul de date Lookup Wizard, se creaz o legtur cu tabela Furnizori,
cmpul cod_f, Caption: Cod furnizor.
Tabela Facturi este copilul tabelei Furnizori. Avnd 3 furnizori n tabela printe, vom introduce minim
4 facturi, codul furnizorului 1 repetndu-se de 2 ori:

Fig. 72 Tabela Facturi

Tabela ProduseFacturate:
nr_f (numrul facturii) un cmp pentru care se alege Lookup Wizard, se creaz a legtur cu
tabela Facturi, cmpul nr_f; Caption: Numarul facturii. Se salveaz tabela cu numele
ProduseFacturate, iar la ntrebarea dac se dorete alegerea unei chei primare se alege No;
nr_crt (numr curent) un cmp de tip Number, Field Size: Integer, Caption: Numar curent;
cod_p (codul produsului) un cmp pentru care se selecteaz Lookup Wizard, se creaz o
legtur cu tabela Produse, pe baza cmpului cmpul cod_p;
cantit un cmp de tip Number, Field Size: Integer, Caption: Cantitate;
pret_u un cmp de tip Currency, Caption: Pret unitar;
cotaTVA un cmp de tip Number, Field Size: Single, Default Value: 0,24, Caption: Cota
TVA.
Se selecteaz cmpurile nr_f i nr_crt i se creaz o cheie primar compus apsnd butonul Primary
Key de pe panglic.
Acest tabel fiind copilul tabelelor Produse i Facturi, vom introduce 8 nregistrri:

43

Fig. 73 Tabela ProduseFacturate

Pentru a verifica relaiile i a seta regulile de integritate referenial, se selecteaz butonul


Relationships de pe panglic figura 74.

Fig. 74 Butonul Relationship

Pentru fiecare legtur n parte, se apeleaz meniul contextual, se alege opiunea Edit Relationships...
Pentru a seta regulile de integritate referenial se selecteaz opiunea Enforce Referential Integrity,
bifnd opiunea Cascade Update Related Field. Dac se dorete modificarea tipului de relaie dintre
cele dou tabele, se selecteaz butonul Join Type..., alegnd una dintre cele trei tipuri de relaii (Left
Join, Inner Join sau Right Join).

Fig. 75 Fereastra Edit Relationships

Selectnd pentru fiecare relaie n parte opiunile respective i reordonnd tabele, se obine urmtoarea
situaie:

Fig. 76 Fereastra Relationships

44

5.11.3 Problem rezolvat Formulare i controale


S se creeze un folder pe Desktop cu numele i prenumele dvs. n acesta, s se creeze o baz de date
cu numele Programari care s conin informaiile legate despre pacieni: un cod unic al pacientului,
numele i prenumele acestuia, data naterii, adresa, telefonul formatat de tipul 0722-456-768, seria i
numrul crii de identitate exact 2 litere i 6 cifre. Pentru fiecare programare se cunoate data
programrii implicit data de azi, ora programrii, doctorul la care se face programarea i suma de
plat. Pentru fiecare doctor se cunoate numele doctorului, adresa, numrul de telefon, titlul (rezident,
primar, specialist) i specialitatea sa (cardiolog, ORL, etc). S se introduc 3 nregistrri n tabela
(tabelele) printe i numrul necesar de nregistrri n tabela (tabelele) copil.
1. S se afieze toi pacienii ordonai alfabetic dup nume.
2. S se creeze un formular de meniu care s conin 4 butoane de comand: primul va deschide
forma Pacieni cu subformularul Programri, al doilea va deschide forma Programari (care
va fi creat n Design, modificnd culoarea fundalului), al treilea buton va deschide forma
Doctori (care va avea un titlu i o poza pe fundal), iar ultimul buton permite nchiderea formei.
Rezolvare
n urma analizei problemei, s-a ajuns la urmtoarea structur a datelor:

Fig. 77. Fereastra Relationships


1. Pentru a sorta datele dintr-o tabel se pot folosi fie butoanele Ascending sau Descending
aflate pe panglic (Ribbon), dac este selectat opiunea de meniu Home, tabelul fiind deschis
n Design View, fie sgeata din dreptul numelui cmpului n modul Datasheet View
figura78.

Fig. 78 Sortarea cresctoare a valorilor din cmpul IDdoctor

2. Formularul de meniu va fi creat ultimul, acesta apelnd formularele create anterior.


Pentru a crea primul formular cu subformular, vom selecta tabela printe (Pacieni) din panoul de
navigare i apsm butonul Form de pe panglic (Ribbon), fiind selectat opiunea de meniu Create
figura 79. Se observ c dac au fost create relaiile dintre tabele, apelarea butonului Form nu creaz

45

un formular simplu, ci un formular pentru tabela printe cu un subformular corespunztor tabelei


copil. Formularul se va salva cu numele PacientiProgramari. Dac se dorete vizualizarea
formularului n Design View, se folosete fie butonul View de pe panglic, opiunea de meniu Home,
opiunea Design View, fie butonul cu acelai nume de pe bara de stare. Se pot observa 3 zone: Form
Header, Detail i Form Footer.

Fig. 79 Formular cu subformular

Pentru a crea un formular n Design View, se alege opiunea de meniu Create, apoi butonul Form
Design de pe panglic (Ribbon). Se observ faptul c pe formular este vizibil doar zona de Detail.
Pentru a afia i celelalte zone de meniu, se apeleaz meniul contextual (clic cu butonul din dreapta al
mouse-ului pe formular), apoi se selecteaz opiunea Form Header/Footer. Formularul se salveaz
(butonul Save din dreapta butonului Office) cu numele Programari figura 80.

Fig.80 Formular n Design View

Pentru a schimba proprietile formularului, se apeleaz meniul contextual, apoi se alege opiunea
Properties. Pentru a selecta tabela surs a formularului, se selecteaz n cadrul casetei Selection type:
Form, apoi opiunea Recourd Source de unde alegem selectnd sgeata, se alege numele tabelei
Programari figura 81.

46

Fig. 81 Fereastra Property Sheet

De pe panglic se selecteaz opiunea de meniu Design, apoi se selecteaz butonul Add Existing
Fields, adugndu-se prin dublu-clic sau drag-and-drop toate cmpurile din tabela Programari n
zona de Design a formularului figura 82.

Fig. 82 Adugarea controalelor pe formular

Pentru a schimba culoarea fundalului se folosete butonul Fill/Back Color. Se utilizeaz pentru
fiecare zon n parte figura 83. Pentru a vizualiza rezultatul, se folosete opiunea Form View fie de
pe bara de stare, fie din cadrul butonului View de pe panglic (opiunea de meniu Home).

Fig. 83 Modificarea culorii fundalului

Pentru a crea formularul Doctori vom urma aceeai pai ca i la punctul b. Pentru a aduga un titlu
vom selecta butonul Label de pe panglic (opiunea de meniu Design) i vom executa clic n zona
Form Header. Titlul adugat va fi Lista doctorilor. Cnd s-a terminat introducerea textului, se execut
clic oriunde pe form pentru a finaliza editarea. Vom executa clic cu butonul din dreapta al mouse-ului

47

pe titlu, selectnd opiunea Properties. n fereastra Property Sheet vom modifica proprietatea Name:
lblTitlu. De observat faptul c proprietatea Caption apare deja completat cu textul care apare pe
form.
Se pot alege opiuni de formatare cum ar fi dimensiunea literelor, culoarea literelor, ngroare,
nclinare, centrare, etc. Aceste se gsesc n zona Font de pe panglic. Dac este nevoie se va
redimensiona controlul.
Pentru a aduga aduga o poz de fundal vom selecta butonul Property Sheet de pe panglic. De la
Selection type vom alege Form, apoi opiunea Picture. Selectnd butonul cu trei puncte se va alege o
poz pentru fundal. Dac este nevoie, se va modifica culoarea textului etichetelor pentru a crea un
contrast cu fundalul. Pentru form se va selecta proprietatea Picture Size Mode i se vor alege
opiunea Stretch figura 84. Pentru a vizualiza formularul se va alege opiune Form View. Se
nchide formularul.

Fig. 84 Adugarea unei poze de fundal

Pentru a crea un formular de meniu, se va selecta butonul Form Design de pe panglic, fiind selectat
opiunea Create de pe bara de meniuri. Nu se va mai selecta Form Hearde/Footer. Se verific dac
pe panglic butonul Use Control Wizard este selectat, iar dac nu este selectat, l selectm. Se alege
apoi butonul Button. La execuia unui clic pe form, fereastra Command Button Wizard va apare pe
ecran figura 85.

Fig. 85 Fereastra Command Button Wizard

48

Se alege categoria Form Operations, apoi aciunea Open Form, apoi se apas butonul Next. Se alege
formularul PacientiProgramari, apoi se apas Next. Se va alege opiunea Open the form and show all
the records, apoi se apas butonul Next. Se selecteaz opiunea Text, modificnd textul n Forma
PacientiProgramari, apoi se apas butonul Next. Numele butonul va fi cmdPacCons, apoi se apas
Finish.
Analog se construiesc butoanele corespunztoare celorlalte dou formulare. Pentru ultimul buton se va
alege categoria Application, aciunea Quit Application. Se va selecta pentru opiunea Text: Ieire,
numele butonului fiind cmdIeire.
Formularul va fi salvat cu numele Meniu Figura 86. Se va testa formularul trecnd n Form View.

Fig. 86 Crearea unui formular de meniu

5.11.4 Problem rezolvat Formulare cu controale calculate, Switchboard


S se creeze pe Desktop un folder cu numele i prenumele dvs. S se creeze o baz de date cu numele
Transporturi. Clienii pot fi att persoane fizice, caz n care pe fi sunt specificate numele, adresa
clientului i numrul de telefon, ct i persoane juridice, caz n care se specific denumirea firmei i
codul fiscal. Transporturile sunt realizate prin intermediul unei fie de transport, caracterizate prin data
i ora plecrii, numrul autovehicolului, destinaia i tariful. Angajaii firmei (oferii) sunt identificai
prin nume, adres i numr de telefon.
1. S se creeze relaii de tip one-to-many ntre tabele. S se introduc 3 nregistrri n tabela
(tabelele) printe i numrul necesar de nregistrri n tabela (tabelele) copil. S se modifice
relaiile pentru a realiza modificarea datelor n cascad.
2. S se creeze un formular cu subformular pentru Clieni i transporturile efectuate utilizndu-se
Form Wizard.
3. S se creeze un formular pentru tabela FieTrans, afindu-se toate cmpurile, i n plus,
TVA-ul i valoarea cu TVA a tarifului pentru fiecare fi de transport. S se adauge un buton
de comand n Form Footer pentru a nchide forma.
4. S se creeze un formular de tip Switchboard denumit Meniu cu 2 butoane de comand:
primul, denumit Vizualizare formulare, va apela un alt Switchboard care va grupa toate
formele create anterior. Al doilea buton de pe primul Switchboard, denumit Ieire, va permite
nchiderea mediului de lucru Access. S se seteze Switchboardul Meniu ca fiind prima form
afiat atunci cnd va fi deschis aplicaia.
Rezolvare
1. Analiznd problema, s-a ajuns la urmtoarea structur a datelor figura 87.

49

Fig. 87 Fereastra Relationship

2. Pentru a construi un formular cu subfomular se vor construi cte un formular pentru fiecare tabel,
urmnd a le uni ntr-unul singur. Pentru tabela printe se va alege un formular de tip Columnar,
iar pentru tabela copil, un formular de tip Tabular.
Pentru a crea primul formular, se alege opiunea de meniu Create, butonul More forms... apoi Form
Wizard. La primul pas se alege tabela Clienti, selectndu-se toate cmpurile cu ajutorul butonului cu
dou sgei, apoi se apas Next figura 88. Aspectul (layout-ul) formularului va fi Columnar, apoi se
selecteaz butonul Next. Se alege un stil, apoi se apas Next. La ultimul pas se apas doar butonul
Finish. Se salveaz formularul cu numele Clienti.

Fig. 88 Form Wizard pentru tabela Clieni

n mod similar se creaz un formular pentru tabela FiseTrans, selectnd ca layout Tabular (la pasul
2). Se salveaz formularul cu numele FiseTrans.
Pentru clasificarea obiectelor, n panoul de navigare din partea din stnga a ecranului (Navigation
Pane) se alege de la All Tables sgeata, apoi Object Type. Obiectele vor fi ordonate dup tipul lor.
Se deschide formularul Clienti in Design View. Se mrete zona de Detail i se trage formularul
FiseTrans din panoul de navigare n zona de detaliu a formularului printe. Se trage n jos de butonul
de redimensionare (portocaliu) a subformularul astfel nct s fie vizibil zona acestuia de Detaliu. Se
salvez utiliznd butonul Office, Save as..., Save Object As cu numele ClientiFiseTrans figura 89.

50

Fig. 89 Formularul Clienti cu subformularul FiseTrans

3. Pentru a crea un formular n Design View, se alege de pe panglic opiunea Create, apoi Form
Design. Din fereastra Properties (de pe panglic, opiunea de meniu Design, butonul Property
Sheet), se alege la Selection Type Form, iar la opiunea RecordSource (sursa nregistrrilor) se
selecteaz din list FiseTrans. Se apeleaz butonul Add Existing Fields (de pe panglic, opiunea
de meniu Design) i prin dublu-click pe cmp sau drag-and-drop se selecteaz pe formular toate
cmpurile.
Pentru a aduga un nou cmp pe formular, se folosete butonul Text Box de pe panglic (drag-anddrop). Controlul va fi plasat pe formular n zona Detail, sub celelalte controale. Acesta este format
dintr-o etichet (n englez Label) (partea din stnga, Text8 n acest caz), i cutia de text (Text Box n
englez) (partea din dreapta, care apare completat cu cuvntul Unbound nelegat). Efectund clic cu
butonul din dreapta pe etichet, alegem opiunea Properties. n fereastra Property Sheet se vor
modifica dou proprieti pentru etichet: Name: lblTVA i Caption: TVA (pe pagina All sunt
primele dou opiuni). Pentru cutia de text vom modifica proprietile Name: txtTVA i
ControlSource: semnul egal urmat de formula de calcul a TVA-ului, punnd numele cmpului
ntre paranteze drepte. n mod similar se calculeaz i valoarea tarifului cu TVA. Se va aduga un nou
Text box de pe panglic n zona Detail a formularului, sub celelalte controale. Pentru etichet se
modific proprietile Name:lblTarifTVA i Caption: Tarif cu TVA. Pentru text-box se modific
proprietile Name:txtTarifTVA i Control Source: semnul egal urmat de formula de calcul,
numele cmpului sau a cmpurilor fiind scrise ntre paranteze drepte figura 90.

Fig. 90 Crearea unui cmp calculat

51

Pentru a formata cele dou cutii de text create astfel nct s conin simbolul valutar, n fereastra
Property Sheet, se va selecta proprietatea Format de unde se alege Currency. Formularul va fi salvat
cu numele FiseTransport.
Pentru a aduga un buton de comand care va nchide formularul, se verific dac este apsat butonul
Use Control Wizard din opiunea de meniu Design (de pe panglic). Dac este selectat, se alege
butonul Button, apoi se execut un clic pe formular, sub restul controalelor. Se alege categoria
Forms, aciunea Close Form, apoi se apas butonul Next. Se selecteaz opiunea Text unde se
tasteaz nchidere, apoi se apas butonul Next. Pentru a finaliza, se tasteaz numele controlului,
cmdInchidere, apoi se apas butonul Finish.
4. Pentru a crea un Switchboard, de pe bara de meniuri se alege opiunea Database Tools, apoi
Switchboard Manager. La apariia mesajului The Switchboard Manager was unable to find a
valid switchboard in this database. Would you like to create one? se alege opiunea Yes. n
fereastra Switchboard se selecteaz butonul Edit pentru a modifica formularul principal (Main
Switchboard(Default)). n fereastra Edit Switchboard Page se modific opiunea Switchboard
Name din Main Switchboard n Meniu. Se apas butonul Close i se creaz al doilea formular
care va avea numele Vizualizare formulare. Pentru aceasta se apas butonul New i se modific
numele formularului din New Switchboard page n Vizualizare formulare figura 91.

Fig. 91 Crearea celui de-al doilea formular

Se vor aduga n continuare elemente pe fiecare formular n parte.


Primul formular, Meniu va avea dou elemente: unul care permite vizualizarea formularului
Vizualizare formulare i al doilea care permite prsirea aplicaiei. Pentru aceasta, se selecteaz
Meniu, apoi se apas butonul Edit. n caseta Item on this Switchboard vor fi afiate cele dou
elemente create. Pentru a aduga un element nou, se apas butonul New figura 92.

Fig. 92 Adugarea unui item pe primul formular

52

n cadrul casetei Text se va completa textul care dorim s apar n dreptul butonului: Vizualizare
formular. n caseta Command se las neschimbat Go to Switchboard, iar din ultima caset
Switchboard se alege numele formularului care va fi apelat atunci cnd butonul acesta va fi acionat:
Vizualizare formulare. Se apas butonul OK.
Pentru a aduga al doilea element, se apas butonul New. n cadrul casetei Text se va completa Ieire,
iar n caseta Command se va alege Exit Application, apoi se apas butonul OK figura 93.

Fig. 93 Adugarea unui item pe primul formular

Pentru a iei din modul de editare al formularului Meniu se utilzeaz butonul Close.
Se alege formularul Vizualizare formulare, apoi se apas butonul Edit, pentru a aduga butoane.
Pentru aceasta se utilizeaz butonul New Figura 94.
n caseta Text se tasteaz Formularul urmat de numele formularului ales, n cutia de text
Command se alege Open form in Edit Mode iar din caseta Form se alege primul formular. Se apas
butonul OK.

Fig. 94 Adugarea unui item pe formularul Vizualizare formulare

n mod similar se creaz butoane pentru fiecare formular.


Ultimul buton va face trecerea napoi la formularul Meniu. Pentru aceasta se apas din nou butonul
New figura 95.

53

Fig. 95 Adugarea item-ului Intoarcere pe formularul Vizualizare formulare

Pentru a ncheia modul de editare al formularului Vizualizare formulare se apas butonul Close.
Dac formularul Meniu nu este formularul principal (dac n dreptul lui nu apare cuvntul Default n
parantez), acesta se selecteaz, apoi se apas butonul Make Default. Odat cu apsarea butonului
Close observm crearea unui nou formular cu numele Switchboard i a unei tabele cu numele
Switchboard Items n panoul de navigare din stnga Figura 96.

Fig. 96 Formularul Meniu (de tip Switchboard)

Pentru a seta formularul ca fiind primul obiect care apare la deschiderea bazei de date, se selecteaz
butonul Office, se alege butonul Access Options, apoi Current Database. Se poate alege un titlu
pentru aplicaie, n caseta Application Title: Transporturi, iar din lista Display Form se alege
Switchboard figura 97.

54

Fig. 97 Crearea unui titlu a aplicaiei i setarea formularului principal

5.12.5 Problem rezolvat Interogri


Se consider baza de date creat la punctul 5.12.2.
1. S se creeze o interogare care s permit afiarea informaiilor de pe toate facturile (nr_f,
data_f, den_p, cantit, pre_u i cota TVA) pentru data curent.
2. S se creeze o interogare afindu-se pentru fiecare nregistrare TVA-ul i Valoarea.
3. S se creeze o interogare care s permit citirea interactiv n momentul execuiei a unui
numr de factur i afiarea informaiilor legate de aceasta.
4. S se creeze o interogare care s permit afiarea tuturor facturilor eliberate ntre 2 date
calendaristice (operatorii Between cu And).
5. S se creeze prin intermediul unei interogri un nou cmp cu numele Observaii care va
conine textul Produs eficient dac valoarea este mai mare dect o anumit valoare sau
Produs ineficient daca valoarea este mai mic dect acea valoare.
6. S se afieze toate facturile eliberate luna aceasta.
7. Operatorul Like:
a. S se afieze toate produsele care ncep cu litera l.
b. S se afieze doar produsele care sunt din 6 litere si ncep cu litera l.
8. S se afieze toate produsele care au preurile 50 i 1000 lei.
9. S se determine pentru fiecare factur valoarea total.
10. S se creeze un nou tabel pe baza tabelelor Facturi, Produse i LiniiFact, rezultatul unei
interogri, care s conin toate datele din toate tabele, suprimnd apariia dublat a
cmpurilor de legtur, tabelul fiind ordonat alfabetic dup denumirea produselor.
Rezolvare:
1. Pentru a crea o interogare, de pe bara de meniuri se alege opiunea Create, apoi Query
Design. n fereastra Show table se vor selecta prin dublu-clic tabelele Facturi,
ProduseFacturate i Produse, apoi se nchide fereastra. Pentru a alege cmpurile dorite,
acestea se selecteaz prin dublu-click. Sub coloana data_f, pe linia Criteria, se va introduce
=Date(). Se salveaz interogarea apsnd pe butonul Save (numele interogrii fiind Facturi
curente). Pentru a vizualiza rezultatul interogrii, de pe butonul View se alege Datasheet
View.

55

Fig. 98 Interogare n Query Design

Observaie: Dac interogarea nu returneaz nici un rezultatul, nseamn c nici o nregistrare nu a


verificat condiia ca data facturii s fie data curent.

Fig. 99 Interogare n Datasheet View

Se nchide interogarea.
2. Pentru a crea a doua interogare, se alege de pe panglic opiunea de meniu Create, apoi
Query Design. Din tabela ProduseFacturate se selecteaz cantitatea, preul i cotaTVA, iar
din tabela Produse denumirea produsului i unitatea de msur. Deci n fereastra Show
Tables, se vor alege ambele tabele, selectndu-se cmpurile respective. Pe prima coloan
liber se calculeaz TVA-ul dup urmtoarea formul
TVA: [cantit]*[pret_u]*[cotaTVA]
Pe urmtoarea coloan se calculeaz valoarea:
Valoare: [cant]*[pret_u]+[TVA]
Se salveaz i vizualizez rezultatul interogrii. Pentru a afia simbolul valutar ntr-o anumit
coloan din interogare (de exemplu pt. TVA), n modul de vizualizare Design View se
selecteaz coloana, se apeleaz din meniul contextual opiunea Properties, iar la opiunea
Format se alege Currency. Analog se procedeaz i cu coloana Valoare.

Fig. 100 Interogare n Design View

56

3. Se selecteaz tabelele Facturi, Produse i ProduseFacturate, cmpurile: nr_f, data_f, den_p,


pret_u i cantit. Pentru a crea o interogare cu parametru, care s permit citirea interactiv a numrului
facturii de pe tastatur, pe coloana nr_f, linia Criteria se tasteaz [Introduceti numarul facturii]. Se
nchide interogarea i se lanseaz n execuie prin dublu-clic pe numele interogrii din panoul de
navigare.

Fig. 101 Interogare cu parametru

4. Se selecteaz tabela Facturi, ProduseFacturate i Produse, cmpurile: nr_f, data_f,


den_p, pret_u i cantit:

Fig. 102 Operatorul Between

5. Se deschide interogarea de la punctul 2, n Design View, se salveaz cu numele Observaii


(Save as de pe butonul Office, Save object as...). Se apeleaz meniul contextual asociat unui nou
cmp (prima coloan liber), se alege opiunea Build figura 103.

Fig. 103 Funcia IIF

Se selecteaz funcia IIF, modificnd-o astfel:


Observatii: IIf([valoare]>=50000;"Produs eficient";"Produs ineficient")

57

Fig. 104 Funcia IIF

Dac se trece n modul de vizualizare Datasheet View se poate observa rezultatul aplicrii funciei IIf
figura 105.

Fig. 105 Rezultatul funciei Iif

6. Vom folosi 2 funcii care pot fi aplicate unor date calendaristice: Datepart (o parte dintr-o
dat calendaristic) i funcia Month (extrage luna dintr-o dat calendaristic).

Fig. 106 Funcii pentru dat calendaristic

7. a). Se alege tabela Produse, cmpurile: den_p, pret_u. Pe coloana den_p, linia Criteria se
tasteaz condiia: LIKE "l*".
b) Se deschide interogarea de la punctul a), se salveaz cu alt nume, se trece n modul de
vizualizare Design View i se modific condiia: LIKE "l?????".
8. Se alege tabela ProduseFacturate, coloana pret_u, utilizndu-se operatorul IN figura
107.

58

Fig. 107 Operatorul IN

9. Se creaz o nou interogare. Se adaug tabelele Produse i ProduseFacturate. Se calculeaz


valoarea. Se adaug cmpul nr_f i se selecteaz butonul Totals de pe bara de unelte, iar sub
valoare, pe linia Total, se alege funcia SUM figura 108.

Fig. 108 Interogri de sintetizare a datelor

10. Pentru a crea o nou tabel cu toate nregistrrile din tabelele Facturi, Produse i
ProduseFacturate, se adaug toate cmpurile din aceste tabele, fr a le duplica. Se salveaz
interogarea cu numele Creare tabela. De pe panglic se alege butonul Make Table figura
109, se tasteat numele noii tabele: Reuniune, apo se apas butonul OK. Pentru a se executa
interogarea se va selecta Run. Dac nivelul de securitate nu este setat astfel nct s permit
execuia codurilor Visual Basic, interogarea nu va funciona. Pentru a permite utilizarea
codurilor, de pe bara Security Warning se alege butonul Options, apoi opiunea Enable this
content.

59

Fig. 109 Interogare de tip Make Table

Dac interogarea este nchis, se va lansa n execuie prin dublu-clic pe numele acesteia din panoul de
navigare figura 109. Sistemul Access avertizeaz asupra eventualelor riscuri care pot apare la
execuia unei interogri de aciune. Vom alege butonul Yes.

Fig. 110 Mesaj de avertizare

i mesajul urmtor este doar unul de avertizare, i anume c datele salvate n tabele vor fi adugate n
tabelul nou creat. Deci vom apsa butonul Yes.

Fig. 111 Mesaj de avertizare la transferarea nregistrrilor ntr-un nou tabel

60

5.12.6 Problem rezolvat Rapoarte


1. S se creeze un raport pentru tabelul ProduseFacturate, datele fiind grupate dup nr_f.
2. S se creeze un raport pentru afiarea datelor de pe fiecare factur n parte, calculndu-se
valoarea facturii i valoarea total a tuturor facturilor.
Rezolvare:
1. Pentru a crea un raport cu ajutorul asistentului, se alege opiunea de meniu Create, butonul
Report Wizard. La primul pas se alege tabela sau interogarea pe baza creia se va crea raportul
(Tables/Queries). Din caseta Available Fields se selecteaz cmpurile dorite, apoi se apas butonul
Next.

Fig. 112 Report Wizard pentru tabela ProduseFacturate

La pasul 2 se selecteaz criteriul de grupare, n cazul de fa vom grupa produsele facturate dup nr_f.
Dac se apas butonul Grouping Options se pot alege mai multe variante de grupare: dup primele
10, 50, 100, etc numere de factur. n cazul de fa opiunea Normal rmne selectat figura 113.

Fig. 113 Fereastra Grouping Intervals

La pasul urmtor se selecteaz ordinea n care vor fi afiate nregistrrile n raport:

61

Fig. 114 Ordonarea datelor de pe raport

Dac este selectat butonul Summary Options... se pot selecta funcii ce vor fi aplicate pe cmpurile
numerice din tabel sau interogare figura 115.

Fig. 115 Summary Options

n continuare se selecteaz orientarea paginii (vertical, orizontal), precum i modul de afiare al


informaiilor pe pagin:

Fig. 116 Opiuni de formatare a paginii

La pasul urmtor se alege un stil din lista afiat figura 117.

62

Fig. 117 Alegerea stilului raportului

Ultimul pas permite modificarea titlului raportului (nu este vorba de numele cu care va fi salvat
raportul, ci doar textul care va apare n antentul raportului), apoi putem alege ntre a vizualiza raportul
i a modifica raportul. Pentru a ncheia crearea raportului se alege opiunea Finish. figura 118

Fig. 118 - Alegerea unui titlu i vizualizarea raportului n mod Print Preview

Raportul n modul Print Preview va apare ca n figura urmtoare figura 119.

Fig 119 ProduseFacturate n Print Preview

63

n Design View raportul arat ca n figura 120.

Fig. 120 Raportul ProduseFacturate n Design View

Dac datele provin din mai multe tabele, sau sunt necesare unele cmpuri calculate, se poate crea o
interogare n care se selecteaz tabelele, se calculeaz cmpurile dorite, apoi se creeaz raportul pe
baza interogrii.
Dac se dorete adugarea unui cmp care va fi calculat, se alege de pe panglic controlul Text Box.
Se modific pentru etichet proprietile Name: lblValoare i Caption: Valoare. Aceasta va fi mutat n
zona nr_f Header. Pentru controlul de tip Text Box se vor modifica proprietile Name: txtValoare i
Control Source: =[cantit]*[pret_u]* [cotaTVA].
2. Pentru a crea raportul, se va alege ca surs a datelor interogarea cu numele Valoare. Avnd
cmpuri numerice, la pasul 3 se selecteaz butonul Summary Option, bifnd check-box-urile de sub
funcia SUM pentru cmpurile TVA i Valoare.

Fig. 121 Fereastra Summary Options

Pentru a vizualiza raportul, de pe butonul View se alege opiunea Print Preview figura 122.

64

Fig. 122 Raportul n Print Preview

Pentru a modifica raportul (aduga controale calculate) este necesar vizualizarea acestuia n modul
Design View.

Fig. 123 Raportul n Design View

65

5.13 Probleme propuse


5.13.1 Problema propus Crearea tabelelor Filial CEC
Se cere informatizarea activitii la o filial CEC. Clienii filialei sunt identificai prin seria i numrul
de buletin, data eliberrii buletinului, nume, prenume i adres. Fiecare client poate s dein unul sau
mai multe cecuri. Pentru fiecare cec se cunoate: seria, numrul, data la care a fost eliberat, suma
depus n momentul eliberrii i tipul cecului (poate fi la termen i la vedere). De asemenea, fiecare
cec poate s aib unul sau mai muli titulari. Fiecare client poate efectua depuneri i restituiri.
Depunerile se efectueaz prin intermediul unei foi de depunere (FD) caracterizat prin: numr, data i
suma depus. Restituirile se efectueaz prin intermediul foilor de restituire (FR) caracterizate prin:
numr, data i suma restituit. Fiecare cec se poate lichida de ctre unul din titulari prin intermediul
unei foi de lichidare (FL) caracterizat prin: numr, data i suma din momentul lichidrii. Dobnda
acordat pentru cecuri se modific de la o zi la alta i este diferit pentru cecurile la termen fa de cele
la vedere.

5.13.2 Problem propus Crearea formularelor


S se creeze o interfa grafic cu utilizatorul cu ajutorul opiunii Switchboard, fiind create formulare
cu subformulare pentru toate tabelele printe-copil, mbogite cu butoane de comand care s permit
nchiderea formelor i cmpuri calculate pe baza tabelelor create n baza de date de la punctul 5.13.1.

5.13.3 Problem propus Crearea interogrilor


S se creeze toate tipurile de interogri pentru baza de date creat la punctul 5.13.1.

5.13.4 Problem propus Crearea rapoartelor


S se creeze rapoarte pentru toate tabelele i interogrile create la punctul 5.13.1 i 5.13.3.

66

CAPITOLUL 6
ELEMENTE SQL
6.1 Introducere
Unul dintre cele mai puternice limbaje structurate pentru interogarea datelor, SQL (Structured Query
Language), a devenit un standard pentru o gam din ce n ce mai larg de sisteme pentru gestiunea
bazelor de date. A fost construit n 1986 de ctre ANSI (American National Standards Institute). De
atunci, este considerat a fi un standard interaional avizat de ctre ISO (International Organization for
Standardization) i IEC (International Electrotechnical Comission). A fost adoptat ca fiind standard
federal de ctre FIPS (american Federal Information Processing Standard). n cadrul acestui capitol se
vor prezenta comanda Select care permite realizarea interogrii bazelor de date, precum i
instruciunile care permit actualizarea datelor (adugarea, modificarea i tergerea datelor prin
comenzi SQL).

6.2 Comenzi SQL


Limbajul SQL (Structured Query Language) este un limbaj structurat de interogri i gestionare a
bazelor de date relaionale. Access folosete SQL ca limbaj de interogare. n momentul crerii unei
interogri n modul de interogare Design, Access construiete n paralel instruciunile SQL
echivalente. De altfel, majoritatea proprietilor interogrilor n modul de interogare Design prezint
clauze echivalente i opiuni accesibile n limbajul SQL.
Avantajele utilizrii instruciunii SQL n VBA sunt urmtoarele:
viteza de execuie: o instruciune Select este mai rapid dect parcurgerea secvenial a unui
tabel.
performan mai bun: n modul client/server, interogrile sunt compilate de SGBD care le
optimizeaz performaele.
ntreinere mai uoar: codul de instruciuni SQL este mai scurt, deci mai uor de citit, dect
echivalentul su n VBA.
standardizare: limbajul SQL este standardul de interogare al bazelor de date relaionale.2
SQL are urmtoarele componente:
1. DDL Data Definition Language (limbaj de definire a datelor): include comenzi legate de
crearea, modificarea i tergerea schemei de structur a bazei de date i/sau a tabelelor. Dintre
comenzile cele mai des ntlnite amintim: CREATE TABLE, ALTER TABLE, DROP
TABLE;
2. DML Data Manipulation Language (limbaj de manipulare a datelor): include comenzi
pentru a realiza interogri i pentru a modifica datele stocate n tabele. Dintre cele mai des
utilizate comenzi amintim: SELECT, INSERT INTO, UPDATE, DELETE;
3. DCL Data Control Language (limbaj de control a datelor): include comenzi pentru
meninerea securitii i a confidenialitii bazei de date. Dintre comenzile uzuale amintim:
GRANT (acordarea drepturilor unui utilizator) i REVOKE (revocarea drepturilor unui
utilizator).

2 Giulvezan C., Mircea G., Trnveanu D., Margea C. Baze de date, Editura Universitii de Vest, Timioara, 2009, p.59

67

Vocabularul SQL cuprinde o serie de cuvinte cheie, dintre care amintim3:


instruciuni determin execuia unei anumite aciuni (de exemplu Create Table, Select,
Delete);
clauze permit specificarea unor argumente care nuaneaz instruciunile, delimitnd
entitile participante la interogare (exemple de clauze: From, Where, Group By, Order By);
funcii efectueaz prelucrri asupra anumitor date denumite argumentele sau parametrii
funciei, rezultatele returnate fiind utilizate n cadrul unei clauze SQL. Funciile i operatorii
prezentai n paragraful 5.4.1 sunt valabili i n SQL.
Principalele reguli de sintax sunt:
orice instruciune SQL se termin cu simbolul punct i virgul;
SQL utilizeaz ierarhia obiectelor din modelele orientate pe obiecte, caracterul punct
separnd un obiect de un atribut sau o metod a acestuia. De exemplu,
numele_tabelei.numele_cmpului;
parantezele drepte se utilizez atunci cnd un nume de tabel sau cmp conine caracterul
spaiu, de exemplu [Denumire Furnizor];
caracterul virgul este utilizat pentru a delimita valorile unei liste (de exemplu lista
cmpurilor);
valorile de tip Number sunt scrise direct, fr a fi ncadrate de nici un alt caracter;
valorile de tip Text sunt ncadrate ntre caracterul apostrof (de exemplu: Timioara);
valorile de tip dat calendaristic sunt ncadrate ntre caracterul diez (de exemplu:
#31/12/2011#).
Reguli de editare n cazul instruciunilor SQL4:
fiecare clauz a interogrii se plaseaz pe cte o linie separat, indentat fa de instruciunea
din care face parte;
nceputul fiecrei clauze va fi aliniat cu nceputul celorlalte;
dac o clauz este fragmentat, fiecare din prile ei constitutive se poziioneaz pe cte o linie
separat i se indenteaz fa de nceputul clauzei;
pentru evidenierea cuvintelor rezervate, specifice SQL, se folosesc majuscule.
Atunci cnd se scriu instruciunile n format general, exist mai multe convenii de notare:
cuvintele rezervate sunt scrise cu majuscule;
cuvintele definite de utilizator se scriu cu litere mici;
bara vertical semnific separarea mai multor elemente alternative care se exclud reciproc
(doar unul din acestea poate fi s apar);
parantezele drepte [ ] ncadreaz un element opional;
acoladele {} ncadreaz un element obligatoriu;
punctele de suspensie semnaleaz repetarea opional a unui element al unei liste.

3
4

Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega, Bucureti, 2009, p. 67
Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega, Bucureti, 2009, p. 71

68

6.2.1 Comanda CREATE TABLE


Pentru a crea o tabel de referin se poate utiliza urmtorul format general:
CREATE TABLE numet1
(numec1 tip1 [CONSTRAINT nn_c1 NOT NULL]
[CONSTRAINT pk_c1] PRIMARY KEY,
numec2 tip2 [CONSTRAINT nn_c2 NOT NULL], );
unde numet1 este numele tabelului creat, numec1, numec2,... sunt numele cmpurilor care vor
constitui structura tabelului. Tip1, tip2, ... sunt tipurile de date suportate de limbajul SQL vezi figura
1. PRIMARY KEY semnifica setarea unui cmp ca fiind de tip cheie primar. Atributul NOT NULL
semnific faptul c acel cmp este este obligatoriu s fie completat (echivalentul proprietii Required
din Access). Programatorii folosesc o denumire pentru fiecare constrngere utilizat (Primary Key,
Foreign Key, Not Null, Unique). Denumirea constrngerii este poziionat n faa constrngerii, dup
cuvntul predefinit CONSTRAINT. Numele constrngerilor sunt formate dintr-un prefix urmat de
numele cmpului pe care este setat. Prefixul este prestabilit:
pk (pentru PRIMARY KEY);
nn (pentru NOT NULL);
un (pentru UNIQUE);
fk (pentru FOREIGN KEY).
ntre tipurile de date din Access (din Design View) i tipurile de date din SQL nu exist o
coresponden perfect figura 1.
Access
Double
Long Integer
Yes/No
Date/Time
Text

SQL
Number
Integer
Logical
Date
Text

Fig. 1 Corespondenele ntre tipurile de date din Access i SQL

Pentru tipul de date Text, dac nu se specific lungimea acestuia, valoarea implicit este de 255 de
caractere. Dac un nume de cmp conine caracterul space, acesta trebuie pus ntre paranteze drepte.
De exemplu, [Nume Prenume].
Exemplu: S se creeze o tabel cu turitii unei agenii de turism. Pentru acetia vom cunoate CNP-ul,
numele i prenumele, seria i numrul de pe cartea de identitate, data naterii, telefonul i numrul de
paaport.
CREATE TABLE Turisti (CNP_turist TEXT(13)
CONSTRAINT pk_CNP_turist PRIMARY KEY,
numepren_turist TEXT(30), serienrCI TEXT (8),
datanast_turist DATE, telefon TEXT (12),
nrpass_turist NUMBER);

69

Pentru a crea o tabel cu o cheie primar compus, se utilizeaz urmtorul format general:
CREATE TABLE numet2
(numec1 tip1 [CONSTRAINT nn_c1] [NOT NULL],
numec2 tip2 [CONSTRAINT nn_c2][NOT NULL],
,
[CONSTRAINT pk_nc1c2] PRIMARY KEY
(numec1,numec2));
Pentru crearea unei chei primare compuse, constrngerea va fi specificat la sfrit, numele acesteia va
fi format din prefix i numele celor dou cmpuri. Dup PRIMARY KEY se specific ntre paranteze
cmpurile care compun cheia primar.
Exemplu: S se creeze o tabel cu o cheie primar compus. Tabela va avea numele ProduseFacturate
i va conine urmtoarele cmpuri: numrul facturii, numrul curent al produsului de pe factur,
cantitate, pre unitar, unitatea de msur i cotaTVA. Cheia primar va fi compus din cmpurile nr_f
i nr_crt.
CREATE TABLE ProduseFacturate (nr_f INTEGER NOT NULL,
nr_crt INTEGER NOT NULL,
cantitate NUMBER, pret_u NUMBER, um TEXT (10),
cotaTVA NUMBER,
CONSTRAINT pk_nrfcrt PRIMARY KEY (nr_f, nr_crt));
Pentru a crea o tabel referit, se utilizeaz urmtorul format general:
CREATE TABLE numet3
(numec1 tip1 [CONSTRAINT nn_c1 NOT NULL]
[CONSTRAINT pk_c1 ]PRIMARY KEY,
numec2 tip2 [CONSTRAINT nn_c2 NOT NULL]
[CONSTRAINT fk_nc2]
REFERENCES numet1(numec1), );
Pentru a crea o tabel referit este necesar crearea legturii cu tabela de referin. Cnd se definete
cmpul de legtur, acesta trebuie s fie de acelai tip ca i cmpul corespunztor din tabela de
referin, apoi se creeaz o constrngere de tip FOREIGN KEY, iar dup cuvntul predefinit
REFERENCES se alege numele tabelei de referin i n parantez numele cmpului de legtur din
tabela de referin. Numele celor dou cmpuri nu trebuie s fie identice.
Exemplu: S se creeze o tabel cu contractele ncheiate de ctre turitii ageniei de turism. Se
presupune c un turist ncheie mai multe contracte, cunoscndu-se numrul contractului, data
contractului, tipul serviciului, data plecrii, data sosirii, ara i beneficiarii (numele celorlalte persoane
din familie, dac este cazul).
CREATE TABLE Contracte (nrc INTEGER
CONSTRAINT pk_nrc PRIMARY KEY,
datac DATE CONSTRAINT nn_datac NOT NULL,
tip_serv TEXT(30), data_plec DATE, data_sos DATE,
tara TEXT (20), benef TEXT (120), CNP_turist TEXT(13)
CONSTRAINT fk_CNP_turist REFERENCES Turisti (CNP_turist));

70

6.2.2 Comanda ALTER TABLE


Comanda ALTER TABLE modific structura tabelei, permind adugarea unui nou cmp sau
tergerea unui cmp, precum i modificarea proprietilor acestora.
Dac se dorete adugarea unui nou cmp:
ALTER TABLE numet1
ADD COLUMN (numec1 tip1,
numec2 tip2, ...);
Exemplu: S se adauge n tabela Contracte cmpul suma_platita.
ALTER TABLE Contracte
ADD COLUMN (suma_platita NUMBER);
Dac se dorete tergerea unui cmp:
ALTER TABLE numet1
DROP COLUMN numec1;
Exemplu: S se tearg cmpul ara din tabela Contracte.
ALTER TABLE Contracte
DROP COLUMN tara;
Dac se dorete modificarea proprietilor unui cmp:
ALTER TABLE numet1
ALTER COLUMN numec1 tip_nou;
Exemplu: S se modifice dimensiunea cmpului benef din tabela Contracte.
ALTER TABLE Contracte
ALTER COLUMN benef TEXT(100);
Dac se dorete adugarea unei constrngeri:
ALTER TABLE numet1
ALTER COLUMN numec1 [CONSTRAINT numeconst]
{PRIMARY KEYUNIQUENOT NULL};
Exemplu: S se adauge o constrngere de tip NOT NULL pentru cmpul data_plec din tabela
Contracte.
ALTER TABLE Contracte
ALTER COLUMN data_plec CONSTRAINT nn_data_plec
NOT NULL;
Dac se dorete tergerea unei constrngeri:
ALTER TABLE numet1
DROP CONSTRAINT numeconst;

71

Exemplu: S se tearg constrngerea de tip NOT NULL impus pe cmpul datac.


ALTER TABLE Contracte
DROP CONSTRAINT nn_datac;

6.2.3 Comanda DROP TABLE


Comenda DROP TABLE terge fizic tabela (nu doar datele din tabel ci i structura acesteia).
DROP TABLE numet1;
Exemplu: S se tearg tabela Turisti.
DROP TABLE Contracte;
Dac o tabel este de referin, nu poate fi tears datorit relaiei pe care o are cu tabela referit.
Pentru a rezolva acest neajuns, se terge condiia de legtur dintre tabele cu ajutorul comenzii
ALTER TABLE, apoi se terge tabela.
Exemplu: S se tearg tabela Turisti.
ALTER TABLE contracte
DROP CONSTRAINT fk_CNP_turist;
DROP TABLE Turisti;

6.2.4 Comanda INSERT INTO


Comanda INSERT INTO insereaz o nregistrare ntr-un tabel. Formatul general este:
INSERT INTO numet1
[(numec1, numec2, )]
VALUES
(valoare1, valoare2, ...);
Specificarea listei cmpurilor este opional. Dac lista cmpurilor este omis, toate cmpurile din
tabel vor fi completate, n ordinea n care ele au fost create, cu valorile specificate n lista de valori.
Dac lista cmpurilor apare dar nu este complet, unele cmpuri lipsind, acele cmpuri care nu apar n
list vor fi completate cu valoarea NULL, sau cu valoarea setat ca valoare implicit (DEFAULT).
Din pcate, n standardul minimal, setarea unei valori predefinite nu este permis.
Numrul cmpurilor din lista de cmpuri trebuie s fie identic cu numrul valorilor din lista valorilor,
iar valorile trebuie s corespund ca tip tipului de date a cmpurilor din lista de cmpuri.
Exemplu: S se introduc o nregistrare n tabela Turiti i dou nregistrri n tabela Contracte
(presupunem c tabela are structura de la creare).
INSERT INTO Turisti VALUES (1711227136548, POP Ion,
TM569856, #27.12.1971#, 0730126589, 9856978);
INSERT INTO Contracte VALUES (1452, #04.11.2011#, Charter,
#30.12.2011#, #06.01.2012#, Cuba, POP Maria, POP Carla,
1711227136548);

72

INSERT INTO Contracte (nrc, datac, tip_serv, data_plec, data_sos, tara,


CNP_turist)
VALUES (1453, #25.11.2011#, Bilete avion, #08.04.2012#,
#18.04.2012#, Italia, 1711227136548);

6.2.5 Comanda DELETE


Comanda Delete terge nregistrrile care verific condiia specificat n clauza Where dintr-o tabel.
Dac clauza Where nu apare, sunt terse automat toate nregistrrile. Tabela nu dispare fizic, sunt
terse doar nregistrrile, structura tabelei rmnnd neschimbat.
Formatul general:
DELETE FROM numet1
[WHERE conditie];
Exemplu: S se tearg din tabela Contracte contractul cu codul 1453.
DELETE FROM Contracte
WHERE nrc=1453;

6.2.6 Comanda SELECT


Comanda SELECT permite filtrarea datelor din una sau mai multe tabele pe baza unor condiii.
Formatul general al comenzii:
SELECT [DISTINCT] *lista_campuri
FROM lista_tabele
[WHERE conditie]
[GROUP BY crit_grupare]
[HAVING crit_dupa_grupare]
[ORDER BY el_ordonare [ASCDESC]];
unde:

comanda SELECT afieaz nregistrri din una sau mai multe tabele;
clauza From specific numele tabelei sau a tabelelor surs a interogrii. Dac datele provin din
mai multe tabele, este necesar adugarea unei condiii de legtur n cadrul clauzei WHERE
sau setarea unei jociuni ntre tabele. Dac se dorete afiarea unui cmp care apare n dou
tabele, este necesar precizarea numelui tabelei din care acesta face parte. Numele tabelei este
separat de numele cmpului prin caracterul punct (de exemplu: Produse.CodProdus);
nregistrrile pot fi distincte (dac clauza DISTINCT este selectat o valoare va apare o
singur dat) sau nu;
filtrarea nregistrrilor se face n funcie de evaluarea condiiei logice din cadrul clauzei Where
(dac aceasta este selectat);
dac se utilizez clauza Group By, aceasta va grupa nregistrrile n funcie de criteriul de
grupare. n acest caz pot fi adugate condiii pentru grupurile astfel create utilizndu-se clauza
Having;
poate fi impus o ordine de sortare dac se utilizeaz clauza Order by, valoarea implicit fiind
Ascending;

73

simbolul * semnific selecia tuturor cmpurilor din acea tabel. Dac se dorete omiterea
unor cmpuri, se va specifica lista cmpurilor fr a specifica cmpurile respective. Ambele
liste lista_campuri i lista_tabele conin elemente desprite ntre ele prin virgul.

n scrierea interogrilor de selecie este posibil utilizarea funciilor totalizatoare. Dintre acestea
amintim:
COUNT returneaz numrul total de nregistrri;
SUM afieaz suma valorilor unui cmp (se poate folosi doar pentru cmpuri numerice);
AVG calculeaz media aritmetic a valorilor unui cmp numeric;
MAX afieaz valoarea maxim din cadrul valorilor unui cmp, dar nu poate fi folosit n
cadrul clauzei WHERE;
MIN afieaz valoarea minim din cadrul valorilor unui cmp, dar nu poate fi folosit n
cadrul clauzei WHERE.

6.2.6.1 Comenzi SELECT simple


Comenzile SELECT simple au ca surs nregistrrile dintr-un singur tabel.
Considerm urmtorul tabel: Studeni cu structura CNP, nume_prenume, serie _numrCI (seria i
numrul crii de identitate), localitate, adresa, data_nasterii, an_studiu i medie_an_anterior.
Exemplul 1: S se afieze toi studentii.
SELECT *
FROM studenti;
Exemplul 2: S se afieze CNP-ul i numele tuturor studenilor.
SELECT CNP, nume_prenume
FROM studenti;
Exemplul 3: S se afieze CNP-ul i numele tuturor studenilor din Timioara.
SELECT CNP, nume_prenume
FROM studenti
WHERE localitate=Timisoara;
Exemplul 4: S se afieze numrul studenilor din Timioara.
SELECT COUNT(*)
FROM studenti
WHERE localitate=Timisoara;
Exemplul 5: S se afieze numele i s se calculeze vrsta studenilor din anul 2 de studiu.
SELECT nume_prenume, YEAR(Date())-YEAR(data_nasterii)
FROM studenti
WHERE an_studiu=2;

74

Exemplul 6: S se afieze numele studenilor care ncep cu litera A i sunt nscui n luna octombrie
1980.
SELECT nume_prenume
FROM studenti
WHERE nume_prenume LIKE A* AND
datan BETWEEN #01/10/1980# AND #31/10/1980#;

6.2.6.2 Comenzi SELECT complexe


Comenzile SELECT complexe au ca surs nregistrrile din mai multe tabele conectate ntre ele pe
baza unei relaii de legtur. Se pot distinge mai multe tipuri de jonciuni:
jonciunea natural (echijonciunea, jonciunea echivalent), care prespune folosirea clauzei
Where urmat de o condiie de legtur de egalitate ntre cmpurile corespondente (=).
Aceast condiie vizeaz egalitatea valorilor din cmpurile corespondente;
jonciuni ne-echivalente determinai de folosirea clauzei Where i a unei condiii de
legtur exprimat prin comparaii (<, >, <=, >=, <>, BETWEEN, IN, LIKE);
cross (jonciunea ncruciat) mai puin utilizat, cu rol n analiza multidimensional a
datelor.
Se va prezenta n continuare jonciunea natural. Formatul general:
SELECT [domeniu_selectie] lista_campuri
FROM numet1, numet2, ...
WHERE conditie_jonctiune [AND criterii_de_selectie];
unde domeniul de selecie poate fi: ALL (vor fi returnate toate nregistrrile), DISTINCT,
DISTINCTROW (vor fi afiate doar nregistrrile distincte), TOP n [PERCENT] (vor fi returnate doar
primele n nregistrri sau un procent din numrul total de nregistrri, nregistrrile fiind ordonate cu
ajutorul clauzei Order By).
n acest caz, nregistrrile unui tabel se combin rnd pe rnd cu toate nregistrrile din cellalt table
(se efectueaz produsul cartezian), relaia dintre cele dou tabele fiind stabilit ulterior, prin condiia
de jonciune specificat n clauza Where.
n mod uzual, compunerile de tabele au la baz condiii de tipul cheie primar-cheie strin.
Considernd tabela Studenti creat anterior, se consider tabela Centrepractic, cu structura: IDcentru,
Den_centru, Adresa, Localitate, NumeTutore. n tabela studeni se va aduga cmpul IDcentru (unui
centru de practic sunt arondai mai muli studeni).

Exemplul 1: S se afieze numele tutorelui i a studenilor arondai acestuia.


SELECT NumeTurore, nume_prenume
FROM studenti, Centrepractica
WHERE studenti.IDcentru=Centrepractica.IDcentru;

75

Exemplul 2: S se afieze numrul i numele centrelor de practic din Timioara i CNP-ul


studenilor.
SELECT Centrepractica.IDcentru, Den_centru, CNP
FROM studenti, Centrepractica
WHERE studenti.IDcentru=Centrepractica.IDcentru AND
Centrepractica.localitate=Timisoara;
O alt abordare a jociunilor mparte compunerile tabelelor n:
interne (INNER JOIN) liniile celor dou tabele se combin pe baza valorilor identice ale
cmpurilor corespondente;
externe (OUTER JOIN) destul de rar utilizate, sunt de dou tipuri: de stnga LEFT
[OUTER] JOIN i de dreapta RIGHT [OUTER] JOIN. Acestea produc linii n setul de
rezultate chiar dac condiia de legtur nu este verificat. Setul de nregistrri rezultat conine
liniile celor dou tabele, combinate pe baza valorilor identice ale cmpurilor de legtur, la
care se adaug nregistrrile fr corespondent n tabelul care constituie fie membrulstng al
compunerii, fie membrul drept. Specificatorul Outer este opional. n cazul compunerilor
externe este important poziia tabelelor5.
Formatul general al interogrilor ce include compuneri de tabele:
SELECT [domeniu_selectie] lista_campuri
FROM numet1
{INNERLEFT[OUTER]RIGHT[OUTER]} JOIN numet2
ON conditie_jonctiune
[WHERE criterii_de_selectie];
Se vor considera n continuare tabelele Studenti i CentrePractica.
Exemplul 1: S se afieze numele tutorelui i a studenilor arondai acestuia.
SELECT NumeTurore, nume_prenume
FROM studenti INNER JOIN Centrepractica
ON studenti.IDcentru=Centrepractica.IDcentru;
Exemplul 2: S se afieze numrul i numele centrelor de practic din Timioara i CNP-ul
studenilor.
SELECT Centrepractica.IDcentru, Den_centru, CNP
FROM studenti INNER JOIN Centrepractica
ON studenti.IDcentru=Centrepractica.IDcentru
WHERE Centrepractica.localitate=Timisoara;

Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega, Bucureti, 2009, p.93

76

6.2.6.3 Agregri de date


Funciile de grup permit constuirea unor interogri de sintetizare a datelor (Totals). Utilizatorul poate
efectua calcule pentru grupuri de nregistrri care au cmpuri cu aceeai valoare (de exemplu
calcularea mediei studenilor pe fiecare grup n parte).
Formatul general al instruciunii6:
SELECT [domeniu_selectie] [functie_agregata (numec1) AS alias1]
[,lista_selectie]
FROM numet1, numet2, ...
GROUP BY camp_de_grupare
[HAVING criteriu_de_grupare]
[WHERE criterii_de_selectie];
unde:

funciile agregate sunt cele amintite n cadrul instruciunilor SELECT simple: COUNT, SUM,
MIN, MAX, AVG, etc.
lista_selectie seminific una sau mai multe funcii agregate care au ca argumente cmpuri ale
bazei de date;
AS alias asociaz un pseudonim rezultatului utilizrii funciei agregat;
GROUP BY precizeaz cmpul sau cmpurile care vor fi criterii de grupare (echivalentul
liniei Total din cadrul unei interogri de sintetizare a datelor);
HAVING criteriu care va fi aplicat cmpului definit ca argument al funciei agregat. Spre
deosebire de clauza Where, criteriul va aciona naintea gruprii nregistrrilor.

Se vor considera n continuare tabelele Studenti i CentrePractica.


Exemplul 1: S se afieze numele tutorelui i numrul studenilor arondai acestuia.
SELECT Den_centru, NumeTutore, COUNT(CNP) AS Nrstud
FROM studenti, Centrepractica
GROUP BY Den_centru, NumeTutore
WHERE studenti.IDcentru=Centrepractica.IDcentru
ORDER BY NumeTutore;
Exemplul 2: S se afieze denumirea centrelor de practic din Timioara, Arad i Deva care au mai
mult de 5 studeni i numrul studenilor arondai.
SELECT Den_centru, COUNT(CNP) As NrStud
FROM studenti INNER JOIN Centrepractica
ON studenti.IDcentru=Centrepractica.IDcentru
GROUP BY Den_centru
HAVING COUNT(CNP)>5
WHERE Centrepractica.localitate IN (Timisoara,Arad,Deva);

Nstase P., Coscescu L., Covrig L., et al Tehnologia bazelor de date Access 2000, Editura Economic, Bucureti, 2000,
p. 197

77

6.2.6.4 Subinterogri
O subinterogare este format dintr-o interogare n care este plasat (imbricat) o alt interogare.
Formatul general7:
SELECT [domeniu_selectie] lista_selectie
FROM numet1, numet2, ...
WHERE {numec1 expresie} operator_comparatie
(SELECT {campexpresie}
FROM numet1, numet2, ...
[WHERE criterii_selectie_subinterogare]);
unde operator_comparatie poate fi =, <, <=, >, >=, <>, IN, LIKE, Between.
Observaii:
subinterogrile trebuie incluse ntre paranteze rotunde;
subinterogrile trebuie plasate n partea dreapt a operatorului de comparare;
nu se va aduga o clauz ORDER BY ntr-o subinterogare;
att n interogare ct i n subinterogare, sursa datelor poate fi simpl (un singur tabel) sau
compus (mai multe tabele), putnd fi chiar identic, necesitnd crearea legturilor dintre
tabele;
clauzele Group By, Having i Order pot s apar n ambele interogri;
dac se utilizeaz operatorul IN, rezultatul subinterogrii va fi o coloan cu mai multe valori;
domeniul rezultatelor unei subinterogri poate fi influenat prin recurgerea la urmtoarele
cuvinte cheie: ALL, ANY i EXISTS. n cazul n care se dorete negarea condiiei, se plaseaz
operatorul NOT n faa specificatorului:
- ANY/SOME comparaia este adevrat dac se gsete cel puin o valoare n
valorile din coloana returnat de subinterogare. n cazul utilizrii acestui specificator, ;
- ALL comparaia este adevrat dac este verificat de toate valorile din coloana
returnat de subinterogare. n mod uzual, comparaia const ntr-o inegalitate: <, <=,
>, >=, <>. De regul, rezultatul comparaiei este False;
- EXISTS comparaia este adevrat dac subinterogarea returneaz cel puin o
valoare din coloana sau coloanele returnate de subinterogare.
Tipuri de subinterogri
- subinterogri care au ca rezultat o singur linie (single-row subquery);
- subinterogri care au ca rezultat mai multe linii (multiple-row subquery);
- subinterogri care au ca rezultat mai multe coloane (multiple-column subquery).
Se vor considera n continuare tabelele Studenti i CentrePractica.
Exemplul 1: S se afieze numele studenilor care sunt n acelai an cu studentul cu CNP-ul
1711227658965 (s-a considerat cmpul CNP ca fiind de tip Text).
SELECT nume_prenume
FROM studenti
WHERE an=(SELECT an
FROM Studenti
WHERE CNP=1711227658965);
7

Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega, Bucureti, 2009, p.101

78

Exemplul 2: S se afieze numele i media studenilor cu media anului anterior mai mic dect media
tuturor studenilor.
SELECT nume_prenume, medie_an_anterior
FROM studenti
WHERE medie_an_anterior <=
(SELECT AVG(medie_an_anterior)
FROM Studenti);
Exemplul 3: S se afieze toate informaiile despre studenii care au media mai mare dect toi
studenii timioreni.
SELECT *
FROM studenti
WHERE medie_an_anterior >
ALL (SELECT medie_an_anterior
FROM studenti
WHERE localitate=Timioara);

6.2.7 Comanda UPDATE


Comanda Update permite modificarea valorilor unuia sau mai multor cmpuri. Formatul general este:
UPDATE numet1
SET numec1={expresie1(SELECT ...)}
numec2={expresie2(SELECT ...)}
[WHERE conditie];
Dac clauza WHERE nu apare, vor fi modificate toate valorile cmpului respectiv. n partea din
dreapta egalitii se poate folosi o expresie de calcul (o formul) care s aib ca rezultat valoarea care
va fi depozitat n cmpul respectiv, sau valoarea poate fi obinut ca rezultat al unei interogri
(comanda SELECT).
Exemplul 1: S se modifice valoarea cmpului ara din tabela Contracte n Spania, pentru contractul
cu numrul 1453.
UPDATE Contracte
SET tara=Spania
WHERE nrc=1453;
Exemplul 2: Presupunnd c n tabela Contracte s-a adugat cmpul suma_platita, s se micoreze
valoarea sumei cu 2% pentru contractul cu numrul 1453 (clientului i se acord o reducere de 2%).
UPDATE Contracte
SET suma_platita=suma_platita-(2/100*suma_platita)
WHERE nrc=1453;

79

6.3 Concluzii
SQL este unul dintre cele mai puternice i larg rspndite limbaje folosite pentru definirea i accesarea
bazelor de date relaionale. El permite consultarea bazei de date sau efectuarea anumitor aciuni prin
simpla specificare a comenzilor, fr a fi necesar specificarea unor modaliti concrete sau a
algoritmilor de obinere a rezultatului. SQL este suportat de diferite sisteme de gestiune a bazelor de
date cum ar fi: MS Access, MS SQL Server, DB2, Informix (IBM), Oracle, MySql, etc, diferenele
dintre dialecte fiind minore8.

6.4 Rezumatul capitolului


SQL nu se ncadreaz n categoria limbajelor de programare, fiind un limbaj de aplicaii, destinat
bazelor de date relaionale. Pronunat sequel, a devenit un standard pentru o gam larg de sisteme
de gestiune a bazelor de date. SQL este un limbaj declarativ, utilizatorul descriind doar informaiile pe
care dorete s le obin n urma interogrii, fr a fi nevoie s stabileasc modalitile de a ajunge la
rezultatele dorite. Pe lng manipulearea i regsirea datelor, se efectueaz operaii complexe privind
actualizarea i administrarea bazei de date. Sistemul de gestiune a bazelor de date Access 2007 accept
utilizarea limbajului de interogarea SQL. Dialectul Access conine unele particulariti n raport cu
standardul ANSI SQL, fiind conceput n special pentru crearea interogrilor de selecie. Existena
interfeei grafice QBE permite proiectarea facil a unei interogri complexe, informaia astfel definit
fiind transformat ntr-o instruciune SQL9.

Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega, Bucureti, 2009, p.66
Nstase P., Coscescu L., Covrig L., et al Tehnologia bazelor de date Access 2000, Editura Economic, Bucureti, 2000,
p. 189
9

80

6.5 Exemple
6.5.1. Problem rezolvat Produse
S se creeze urmtoarea form de meniu.

Fig. 2 formularul Meniu

Rezolvare:
Se creaz o nou baz de date cu numele Produse. Se creaz tabela Produse cu urmtoarea structur:
cod_p, den_p, um_p, stoc_p, pret_p, cod_magazin. Se vor introduce 3 nregistrri n tabel.
Se creaz un nou formular folosind de pe bara de meniuri opiunea Create, butonul Form Design.
De pe panglic se verific dac butonul Use Control Wizards
este selectat. Acesta trebuie s fie
deselectat pentru a permite crearea manual a controalelor, fr ajutorul asistentului. n continuare se
alege butonul Button, executndu-se un clic pe form. Apelnd meniul contextual asociat butonului
de comand de pe form, se selecteaz opiunea Properties i se modific proprietile Name i
Caption pentru fiecare buton n parte. n total sunt 8 butoane de comand, fiecare avnd un alt Name
i Caption. Proprietatea Name va fi completat ntotdeauna cu prefixul cmd urmat de un cuvnt sau
alturare de cuvinte semnificativ pentru aciunea executat de buton, fr caracterul spaiu ntre ele.
Numele butoanelor vor fi n ordine: cmdDesPr, cmdDesPr1, cmdInsPr, cmdModDen, cmdCrTNou,
cmdViz, cmdValoare, cmdIesire. Proprietatea Caption va fi completat cu textul care apare pe
butonul corespunztor din figura 1 i admite orice fel de caractere, inclusiv caracterul spaiu. Se
selecteaz butonul dorit, iar n fereastra Property Sheet se modific cele dou proprieti aflate pe
pagina All. Dac fereastra Property Sheet nu apare, ea poate fi activat folosind butonul Property
Sheet de pe panglic, atunci cnd este selectat opiunea de meniu Design.
Se salveaz forma cu numele Meniu (butonul Save din dreapta butonului Office).
Pentru a introduce instruciuni ataate butoanelor trebuie apelat editorul Visual Basic. Pentru aceasta,
se apeleaz meniul contextual al fiecrui buton n parte (clic cu butonul din dreapta al mouse-ului), se
alege Build Event, Code builder, OK.
Mediul de programare Visual Basic Application arat ca n figura urmtoare:

81

Fig. 3 Mediul de lucru Visual Basic

Deasupra procedurii se tasteaz:


DIM v_cod as Integer, v_den as String, v_um as String
i se apas tasta Enter.
Pentru fiecare buton n parte se scrie codul corespunztor. Tot ce este scris dup caracterul apostrof
semnific un comentariu, este un mesaj pentru programator, o explicaie. Dac acesta apare, nu
influeneaz cu nimic execuia programului, dar poate fi ignorat dac se consider oportun.
Private Sub cmdDesPr_Click()
' se deschide tabela Produse pt. vizualizare in Design
DoCmd.OpenTable "Produse", acViewDesign
End Sub
DoCmd este o comand Visual Basic care permite execuia unei comenzi (Do Command). Open
Table este comanda care permite deschiderea unei tabele. Numele tabelei este scris ntre ghilimele, iar
parametrul acViewDesign specific deschiderea tabelei n modul Design, nu n Datasheet View.
Private Sub cmdDesPr1_Click()
' se deschide tabela Produse pt. vizualizare in Datasheet View
DoCmd.OpenTable "Produse"
End Sub
Private Sub cmdInsPr_Click()
'adaugarea unei noi inregistrari
DoCmd.RunSQL "insert into produse values (cod_produs, den_produs, um_produs, stoc_produs,
pret_produs, cod_mag)"
End Sub
Comanda RunSQL este comanda care permite execuia unei instruciuni SQL (Structured Query
Language). Dintre cel mai des utilizate instruciuni SQL amintim: SELECT, INSERT INTO,
UPDATE, ALTER TABLE, DELETE TABLE. Toate instruciunile SQL se scriu ntre ghilimele,
simbolul ; de la sfritul comenzilor SQL fiind ignorat.

82

n acest caz s-a folosit instruciunea INSERT INTO, care permite introducerea unei singure
nregistrri n tabela Produse. Pentru fiecare din parametrii din parantez, acetia fiind considerai
nite variabile, este creat automat un InputBox (o caset de introducere a valorilor de la tastatur) care
permite citirea lor de la tastatur. Comanda Insert Into conine cuvntul Values, iar numrul
parametrilor din parantez (care ca nume sunt diferite de numele cmpurilor din tabela Produse)
trebuie s fie acelai cu numrul cmpurilor din tabel i s corespund ca tip de valori i semnificaie.
De exemplu, dac n tabela Produse avem 5 cmpuri, n parantez, dup cuvntul Value, trebuie s
avem 5 parametrii, n aceeai ordine.
Private Sub cmdModDen_Click()
'modificarea denumirii unui produs la care este cunoscut codul
v_cod = InputBox("Introduceti codul produsului la care doriti sa ii modificati denumirea:")
DoCmd.RunSQL "update produse set den_p=denumire where cod_p=" & v_cod
End Sub
Pentru a modifica denumirea unui produs pentru care se cunoate codul, se utilizeaz o variabil
pentru a citi de la tastatur codul respectiv. Variabila v_cod este definit la nceputul aplicaiei, n
seciunea DIM (de dimensionare a variabilelor). Cu ajutorul unei casete de introducere a datelor
(Inputbox), valoarea variabilei cod produs este reinut n variabila v_cod. Pentru a modifica valoarea
denumirii produsului, se utilizeaz instruciunea Update. Dup cuvntul predefinit SET avem o
atribuire. Membrul din stnga este numele cmpului den_p din tabela Produse, iar n partea din
dreapta avem un parametru. Pentru parametru, Access construiete automat o caset de introducere a
datelor, permind citirea acestuia de la tastatur. Valoarea citit va nlocui valoarea veche a denumirii.
Dac nu este adugat condiia Where, toate denumirile produselor vor fi modificate. Pentru a
modifica doar un anumit cmp, n cadrul condiiei Where este specificat o condiie logic. Cod_p este
cmpul cod produs din tabela Produse. Pentru a se utiliza valoarea reinut n variabila v_cod, acesta
va fi scris n afara ghilimelelor. Simbolul & este simbolul care semnific concatenarea mai multor
valori de tip ir de caractere.
Private Sub cmdCrTNou_Click()
'selectarea produselor cu stoc 0 si crearea unei tabele cu aceste produse
DoCmd.RunSQL "Select cod_p, den_p, um_p, stoc_p, pret_p, cod_m into StocNul from produse
where stoc_p=0"
DoCmd.OpenTable "StocNul"
End Sub
n cazul instruciunii SQL SELECT, este necesar introducerea clauzei INTO (care creaz automat o
nou tabel ca rezultat al interogrii). Noua tabel creat se numete StocNul. Condiia de filtrare este
ca stocul produsului s fie zero. Dac n tabela Produse nu exist nici o nregistrare n care stocul
produsului s fie zero, noua tabel va fi creat dar nu conine nici o nregistrare. Noua tabel creat va
fi deschis pentru a fi vizualizat.
Private Sub cmdViz_Click()
'vizualizarea produselor cu codul >= o valoare introdusa de la tastatura
v_cod = InputBox("Introduceti un cod pentru a fi afisate produsele cu codul mai mare decat aceasta
valoare")
DoCmd.RunSQL "Select cod_p,den_p,um_p,stoc_p, pret_p, cod_m into Temp1 from produse
where cod_p>=" & v_cod
DoCmd.OpenTable "Temp1"
End Sub

83

Pentru a citi o valoare de la tastatur este necesar declararea unei variabile n care valoarea s fie
stocat. Variabila poart numele v_cod. Valoarea este citit de la tastatur prin intermediul comenzii
InputBox (crearea unei casete de introducere a textului). Comanda Select creaz o nou tabel numit
Temp1, fiind selectate doar cmpurile definite n lista cmpurilor (cod_p, den_p, um, stoc, pret_u,
cod_m) i acele nregistrri care verific condiia Where (codul produsului s fie mai mare dect
valoarea care a fost introdus n variabila v_cod). Tabela Temp1 va fi apoi deschis pentru a vizualiza
rezultatul interogrii.
Private Sub cmdValoare_Click()
DoCmd.RunSQL "select cod_p, den_p, um_p, pret_p, stoc_p, pret_p*stoc_p as valoare into Valoare
from produse"
DoCmd.OpenTable "Valoare"
End Sub
Acest buton permite calcularea unui cmp n cadrul unei interogri. Acesta se scrie n lista de cmpuri,
ncepnd cu formula de calcul, urmat de cuvntul predefinit AS i numele care se dorete s apar n
capul de tabel ca nume de cmp: valoare. Rezultatul interogrii este un nou tabel cu numele Valoare.
Pentru a vedea rezultatul interogrii se deschide tabelul Valoare.
Private Sub cmdIesire_Click()
DoCmd.Quit
End Sub
Comanda Quit permite nchiderea aplicaiei.
Pentru a putea utiliza butoanele trebuie setat nivelul de securitate astfel nct s permit utilizarea
codurilor Visual Basic Application. Pentru aceasta, de pe bara Security Warning se selecteaz
butonul Options..., selectnd opiunea Enable this content.

Fig. 4 Setarea nivelului minimal de securitate

84

6.6.2 Problem rezolvat Aprovizionare


S se creeze o baz de date cu numele Aprovizionare. S se creeze o form de meniu cu butoane de
comand figura 1 care s permit urmtoarele operaii:
1. Crearea tabelelor necesare gestionrii procesului de recepie a materialelor. Toate materialele
achiziionate de firm sunt cuprinse ntr-un nomenclator de materiale n care sunt specificate:
codul materialului, denumire material, unitate de msur i clasa de calitate. n momentul
realizrii unei aprovizionri se ntocmete o not de recepie pe care sunt consemnate: numrul
recepiei, data recepiei, denumirile materialului, cantitile i preurile aferente fiecrui
material;
2. Inserarea nregistrrilor n tabele (3 nregistrri n tabelele de referin, mai multe nregistrri
n tabela referit).
3. S se modifice structura tabelei receptiemateriale adugndu-se un cmp denumit cotaTVA.
S se tearg cmpul clasa din tabela Materiale.
4. S se modifice toate valorile cmpului cotaTVA cu valoarea 0,24. S se modifice data pentru
numrul de receptie 245369 n 23.11.2011.
5. S se afieze toate produsele cu unitatea de msur buci. S se afieze toate notele de
recepie din data de 25.11.2011, inclusiv denumirea produselor, cantitatea i preul,
calculndu-se valoarea. S se afieze pentru fiecare numr de recepie valoarea total (suma
valorilor).
6. S se tearg toate notele de recepie corespunztoare codului material 111 din tabela
receptiemateriale. S se tearg toate nregistrrile din tabela receptiemateriale.
7. S se tearg toate tabele din baza de date (inclusiv cele create n cadrul interogrilor).

Fig. 5 formularul Meniu

Rezolvare:
Se va crea o nou baz de date cu numele Aprovizionare. Table 1 se nchide, fr a fi salvat. Tabelele
nu vor fi create cu ajutorul instrumentelor vizuale, ci tot cu ajutorul comenzilor SQL.
Construind matricea dependenelor funcionale se ajunge la urmtoarea structur a bazei de date
figura 6.

Fig. 6 Fereastra Relationship Baza de date Aprovizionare

85

Pentru a crea un formular nou, se selecteaz opiunea de meniu Create, apoi butonul Form Design. Se
salveaz formularul cu numele Meniu.
1. Pentru a aduga primul buton de comand pe form se deselecteaz butonul
de pe panglic, se alege butonul
i se execut clic pe formular.
Se apeleaz meniul contextual asociat butonului i se alege opiunea Properties. n fereastra
Property Sheet se modific proprietile Name: cmdCreare i Caption: Crearea tabelelor
figura 7.

Fig. 7 Butonul cmdCreare

Pentru a asocia cod butonului, se apeleaz meniul contextual al butonului i se alege opiunea Build
Event/Code builder.
Codul asociat butonului de Creare este detaliat n continuare:
Private Sub cmdCreare_Click()
DoCmd.RunSQL "CREATE TABLE materiale (codm integer CONSTRAINT pk_codm
PRIMARY KEY CONSTRAINT nn_codm NOT NULL, denm TEXT(15), um TEXT(10), clasa
TEXT(10))"
MSG = MsgBox("Tabela materiale a fost creata!", vbOKOnly)
DoCmd.RunSQL "CREATE TABLE receptii (nrrec INTEGER CONSTRAINT pk_nrrec
PRIMARY KEY CONSTRAINT nn_nrrec NOT NULL, datarec DATE)"
MSG = MsgBox("Tabela receptii a fost creata!", vbOKOnly)
DoCmd.RunSQL "CREATE TABLE receptiemateriale (nrrec INTEGER CONSTRAINT
fk_nrrec REFERENCES receptii(nrrec), codm INTEGER CONSTRAINT fk_codm REFERENCES
materiale(codm), cantitate INTEGER, pret_unitar NUMBER, CONSTRAINT pk_recmat PRIMARY
KEY(nrrec,codm))"
MSG = MsgBox("Tabela receptiemateriale a fost creata!", vbOKOnly)
End Sub
Observaii:
Fiecare constrngere (PRIMARY KEY, NOT NULL, FOREIGN KEY) a fost denumit cu un
nume format din prefixul pk pentru Primary Key, nn pentru Not Null sau fk pentru Foreign
Key. nainte de a specifica constrngerea se adaug cuvntul predefinit CONSTRAINT apoi
numele constrngerii. n cazul unei chei primare compuse, constrngerea este lsat la urm,
dup ultimul cmp i definit ca fiind combinaia dintre nrrec i codm.

86

Relaia dintre tabele este creat de la tabela referit (copil) la tabela de referin (printe),
setndu-se o constrngere de tip FOREIGN KEY pe cmpul comun, utilizndu-se cuvntul
predefinit REFERENCES, urmat de numele tabelei de referin (printe) i cmpul de legtur
din acea tabel. Ambele cmpuri trebuie s fie definite ca fiind de acelai tip.
MSG este un nume de variabil, care va lua valoarea apsrii butonului OK specificat n
partea dreapt a egalitii. n partea din dreapta se utilizez o comanda care afieaz pe ecran
mesajul scris ntre ghilimele i afieaz doar butonul OK.

2. Pentru a insera nregistrri n tabele se adaug un nou buton pe form (se selecteaz butonul
Button, apoi se execut clic pe formular). Se modific proprietile butonului: Name:
cmdInserare i Caption: Inserare nregistrri. Pentru a asocia cod butonului, se apeleaz
meniul contextual al acestuia, se alege opiunea Build Event/Code Builder.
Codul asociat butonului cmdInserare este prezentat n continuare:
Private Sub cmdInserare_Click()
DoCmd.RunSQL "INSERT INTO materiale VALUES (111, 'imprimanta','buc','cal.I')"
DoCmd.RunSQL "INSERT INTO materiale VALUES (112, 'mouse','buc','cal.I')"
DoCmd.RunSQL "INSERT INTO materiale VALUES (113, 'hartie','buc','cal.I')"
MSG = MsgBox("S-au introdus inregistrari in tabela materiale!", vbOKOnly)
DoCmd.OpenTable "materiale"
DoCmd.RunSQL "INSERT INTO receptii VALUES (245369,#19/11/2011#)"
DoCmd.RunSQL "INSERT INTO receptii VALUES (245370,#25/11/2011#)"
DoCmd.RunSQL "INSERT INTO receptii VALUES (245371,#25/11/2011#)"
MSG = MsgBox("S-au introdus inregistrari in tabela receptii!", vbOKOnly)
DoCmd.OpenTable "receptii"
DoCmd.RunSQL "INSERT INTO receptiemateriale VALUES (245369,111, 200, 500)"
DoCmd.RunSQL "INSERT INTO receptiemateriale VALUES (245369,112, 25, 50)"
DoCmd.RunSQL "INSERT INTO receptiemateriale VALUES (245369,113, 1000, 7)"
DoCmd.RunSQL "INSERT INTO receptiemateriale VALUES (245370,111, 10, 560)"
DoCmd.RunSQL "INSERT INTO receptiemateriale VALUES (245370,112, 15, 55)"
DoCmd.RunSQL "INSERT INTO receptiemateriale VALUES (245371,111, 1, 600)"
DoCmd.RunSQL "INSERT INTO receptiemateriale VALUES (245371,112, 10, 60)"
DoCmd.RunSQL "INSERT INTO receptiemateriale VALUES (245371,113, 1, 100)"
MSG = MsgBox("S-au introdus inregistrari in tabela receptiemateriale!", vbOKOnly)
DoCmd.OpenTable "receptiemateriale"
End Sub
3. Pentru a modifica structura tabelelor adaug un nou buton pe form (se selecteaz butonul
Button, apoi se execut clic pe formular). Se modific proprietile butonului: Name:
cmdModStruct i Caption: Modificarea structuriilor tabelelor. Pentru a asocia cod
butonului, se apeleaz meniul contextual al acestuia, se alege opiunea Build Event/Code
Builder.

87

Codul asociat butonului cmdModStruct este prezentat n continuare:


Private Sub cmdModStruct_Click()
DoCmd.RunSQL "ALTER TABLE receptiemateriale ADD COLUMN cotatva number"
DoCmd.OpenTable "receptiemateriale", acViewDesign
MSG = MsgBox("S-a adaugat campul cotatva!", vbOKOnly)
DoCmd.RunSQL "ALTER TABLE materiale DROP COLUMN clasa"
DoCmd.OpenTable "materiale", acViewDesign
MSG = MsgBox("S-au sters campul clasa!", vbOKOnly)
End Sub
4. Pentru a modifica valorile din tabele se adaug un nou buton pe form (se selecteaz butonul
Button, apoi se execut clic pe formular). Se modific proprietile butonului: Name:
cmdModifValori i Caption: Modificarea valorilor din tabele. Pentru a asocia cod
butonului, se apeleaz meniul contextual al acestuia, se alege opiunea Build Event/Code
Builder.
Codul asociat butonului cmdModifValori este prezentat n continuare:
Private Sub cmdModifValori_Click()
DoCmd.RunSQL "UPDATE receptiemateriale SET cotaTVA=0.24"
DoCmd.OpenTable "receptiemateriale"
MSG = MsgBox("S-a modificat valoarea campului cotaTVA!", vbOKOnly)
DoCmd.RunSQL "UPDATE receptii SET datarec=#23/11/2011# WHERE nrrec=245369"
DoCmd.OpenTable "receptii"
MSG = MsgBox("S-a modificat valoarea campului datarec=23.11.2011 pt nrrec=245369!",
vbOKOnly)
End Sub
5. Pentru a vizualiza interogrile se adaug un nou buton pe form (se selecteaz butonul Button,
apoi se execut clic pe formular). Se modific proprietile butonului: Name: cmdInterogari
i Caption: Interogari. Pentru a asocia cod butonului, se apeleaz meniul contextual al
acestuia, se alege opiunea Build Event/Code Builder.
Codul asociat butonului cmdInterogari este prezentat n continuare:
Private Sub cmdInterogari_Click()
DoCmd.RunSQL "SELECT * INTO T1 FROM materiale WHERE um='buc'"
DoCmd.OpenTable "T1"
MSG = MsgBox("Produsele cu UM=buc", vbOKOnly)
DoCmd.RunSQL "SELECT receptii.nrrec, datarec, denm, cantitate, pret_unitar,
cantitate*pret_unitar*cotaTVA as valoare INTO T2 FROM materiale, receptiemateriale,
receptii
WHERE
receptii.nrrec=receptiemateriale.nrrec
AND
materiale.codm=receptiemateriale.codm AND datarec=#25/11/2011#"
DoCmd.OpenTable "T2"
MSG = MsgBox("Calcularea valorii", vbOKOnly)
DoCmd.RunSQL "SELECT receptii.nrrec, SUM(cantitate*pret_unitar*cotaTVA) as
valoare_nota_receptie
INTO
T3
FROM
receptiemateriale,
receptii
WHERE
receptii.nrrec=receptiemateriale.nrrec GROUP BY receptii.nrrec"

88

DoCmd.OpenTable "T3"
MSG = MsgBox("valoare pe fiecare nota de receptie in parte", vbOKOnly)
End Sub
Observaii:
Specificatorul * semnific afiarea tuturor cmpurilor din tabela respectiv.
Clauza INTO creeaz o nou tabel n care rezultatul interogrii va fi depus. Dac se dorete
vizualizarea acestuia, tabelul trebuie deschis.
Dac datele sunt extrase din mai multe tabele, n cazul n care este specificat un cmp care
apare n ambele tabele, este necesar specificarea aparteneei lui (de exemplu receptii.nrc).
Dac se dorete afiarea datelor din mai multe tabele, este necesar specificarea condiiei de
legtur dintre tabele. n acest caz s-a ales jonciunea natural. Condiia de legtur apare n
cadrul clauzei WHERE, operatorul dintre condiii fiind AND.
Dac se dorete afiarea unor totaluri pe grupe de nregistrri, se utilizeaz clauza Group By.
Aceasta este specificat dup clauza Where. Cmpul specificat ca i criteriu de grupare va
apare ca primul cmp selectat n lista cmpurilor.
6. Pentru a terge nregistrri din tabele se adaug un nou buton pe form (se selecteaz butonul
Button, apoi se execut clic pe formular). Se modific proprietile butonului: Name:
cmdStergereValori i Caption: Stergere valori. Pentru a asocia cod butonului, se apeleaz
meniul contextual al acestuia, se alege opiunea Build Event/Code Builder.
Codul asociat butonului cmdInterogari este prezentat n continuare:
Private Sub cmdStergereValori_Click()
DoCmd.RunSQL "DELETE FROM receptiemateriale WHERE codm=111"
DoCmd.OpenTable "receptiemateriale"
MSG = MsgBox("S-au sters notele de receptie cu codm=111!", vbOKOnly)
DoCmd.RunSQL "DELETE FROM receptiemateriale"
DoCmd.OpenTable "receptiemateriale"
MSG = MsgBox("S-au sters toate produsele de pe notele de receptie", vbOKOnly)
End Sub
7. Pentru a terge tabelele se adaug un nou buton pe form (se selecteaz butonul Button, apoi
se execut clic pe formular). Se modific proprietile butonului: Name: cmdStergereTabele
i Caption: Stergere tabele. Pentru a asocia cod butonului, se apeleaz meniul contextual al
acestuia, se alege opiunea Build Event/Code Builder.
Codul asociat butonului cmdInterogari este prezentat n continuare:
Private Sub cmdStergereTabele_Click()
DoCmd.RunSQL "DROP TABLE T1"
DoCmd.RunSQL "DROP TABLE T2"
DoCmd.RunSQL "DROP TABLE T3"
DoCmd.RunSQL "DROP TABLE receptiemateriale"
DoCmd.RunSQL "DROP TABLE materiale"
DoCmd.RunSQL "DROP TABLE receptii"
MSG = MsgBox("S-au sters toate tabelele!", vbOKOnly)
End Sub

89

6.6.3 Problem propus Bibliotec


O bibliotec dorete s-i informatizeze activitatea de mprumut a crilor. Pentru fiecare carte se
cunosc titlul crii, autorii, editura, anul publicrii i numrul de exemplare. Pentru fiecare abonat se
cunoate CNP-ul, numele, data naterii, adresa, telefonul i oraul. Pentru fiecare mprumut se
completeaz o cerere de mprumut. Pe aceast cerere apar data mprumutului, cartea mprumutat,
abonatul (cititorul), i data de returnare a crii. Pe o cerere de mprumut apare o singur carte.
S se creeze o form de meniu cu butoane care s permit:
1. crearea tabelelor;
2. inserarea datelor n tabele;
3. vizualizarea informaiilor din tabele;
4. adugarea unui cmp cu numele gen n tabela Cri;
5. completarea cmpului gen cu valoarea Beletristic pentru cartea cu titlul La Medeleni;
6. vizualizarea titlurilor crilor mprumutate astzi;
7. vizualizarea numelui abonailor i numrul crilor editate anul acesta care au fost
mprumutate de acetia;
8. vizualizarea autorilor crilor mprumutate n sptmna n curs;
9. tergerea cererii de mprumut cu numrul 123;
10. tergerea tuturor tabelelor;
11. nchiderea formei.

6.6.4 Problem propus Amenajri interioare


O firm de construcii i amenajri interioare solicit informatizarea activitilor de contractare a
lucrrilor. Firma i prezint oferta sub forma unei liste de lucrri pe care este n msur s le efectueze
pentru clienii si. Pentru fiecare lucrare se cunoate codul lucrrii, denumirea lucrrii i costul
acesteia. ntre firm i beneficiari se ncheie contracte. Pentru fiecare contract sunt cunoscute numrul
contractului, codul beneficiarului, codul lucrrii, data, data nceperii execuiei, termen execuie. Un
beneficiar poate comanda mai multe lucrri diferite, deci poate ncheia cu firma mai multe contracte.
Pentru beneficiar se cunosc cmpurile cod beneficiar, denumire beneficiar, adres, telefon, cod curent
banc. S se creeze un formular cu butoane de comand care s permit:
1. crearea tabelelor;
2. inserarea datelor n tabele;
3. vizualizarea informaiilor din tabele;
4. adugarea unui cmp cu numele alte clauze n tabela Contracte;
5. completarea cmpului observaii cu valoarea pltit integral pentru comanda cu codul 1234;
6. vizualizarea comenzilor care expir luna aceasta;
7. vizualizarea numelui beneficiarilor i suma total pltit de acetia;
8. vizualizarea numrului beneficiarilor care au ncheiat contracte care expir anul acesta;
9. tergerea comenzii cu numrul 1234;
10. tergerea tuturor tabelelor;
11. nchiderea formei.

90

BIBLIOGRAFIE
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.

Adamski J., Finnegan K. (2006) New Perspectives on Microsoft Office Access 2003, Second
Edition, Thomson Course Technology, Boston
Bandu I. (2009) Baze de date Access 2007, Editura Mirton, Timioara
Biriescu S. (2010) Baze de date n mediul economic: studii de caz, Editura Mirton,
Timioara
Boldea M., Boldea C.M. (2010) Access 2007, Editura Mirton, Timioara
Coronel, C., Morris, St., Rob, P. (2009). Database Systems: design, implementation, and
management, Ninth Edition. Publisher Course Technologies
Delobel, C., Adiba, M., (1982) Bases de donnees at systemes relationnels, Dunod
Informatique, Paris
Hurbean L., Dnia D., Negovan A.-M. (2008) Baze de date: de la teorie la practic
utiliznd Access 2007, Editura Mirton, Timioara
Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al (2009) Baze de date, Editura
Infomega, Bucureti
Fotache M. (1997) Baze de date relaionale, Editura Junimea, Iai
Giulvezan C., Mircea G., Trnveanu D., Margea C. (2009) Baze de date, Editura
Universitii de Vest, Timioara
Fleming, Candace, von Halle, Barbara (1989) Handbook of Relational Database Design,
Addison-Wesley
Ionescu F. (2004) Baze de date relaionale i aplicaii, Editura Tehnic, Bucureti
Johnson S., trad. Mnstireanu M. (2008) Microsoft Office Access 2007, Editura Niculescu,
Bucureti
Johnson S., trad. Biri R. (2008) Microsoft Office Access 2007, Editura Teora, Bucureti
Lungu, I., Bodea, Constana, Bdescu, Georgeta, Ioni, Cristina (1995) Baze de date.
Organizare, proiectare i implementare, Editura All Educaional
Nstase P., Coscescu L., Covrig L., et al (2000) Tehnologia bazelor de date Access 2000,
Editura Economic, Bucureti
Pescaru, V., Catona, I., Du, D., Popescu, C., Satran, I., (1976) Fiiere, baze i bnci de
date, Editura Tehnic, Bucureti
Roman S. (2002) Access Database Design & Programming, 3rd Edition, OReilley
Stanciu A. (coord.), Mihai F, Mangiuc D, et al (2009) Baze de date Access 2007: studii de
caz, Editura Infomega Bucureti
Tama I. (coord.), Stanciu V., Gheorghe M. (2010) Access 2007 Proiectare i realizare
pas cu pas, Editura Infomega, Bucureti
Whitehorne M., Marklyn B. (2007) Inside Relational Databases with Examples in Access,
Springer

91

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