Proiect cofinanţat din Fondul Social European prin Programul Operaţional Sectorial
Dezvoltarea Resurselor Umane 2007-2013
Conținutul acestui material nu reprezintă în mod obligatoriu poziția oficială a Uniunii Europene sau a
Guvernului României.
The document does not represent the point of view of the European Union or Romanian Government.
Copyright 2012
Reproducerea este autorizată, cu condiţia menţionării sursei, cu excepţia cazului în care se prevede
altfel.
Proiect cofinanţat din Fondul Social European prin Programul Operaţional Sectorial
Dezvoltarea Resurselor Umane 2007-2013
Conţinut:
1.4.1 Crearea asocierilor între tabelele unei baze de date relaţionale .................... 18
2.2.1 Agregarea datelor din mai multe înregistrări ale unei interogări ..................... 39
Proiect cofinanţat din Fondul Social European prin Programul Operaţional Sectorial
Dezvoltarea Resurselor Umane 2007-2013
3.1.3 Crearea formularelor în modul de proiectare ................................................. 59
Proiect cofinanţat din Fondul Social European prin Programul Operaţional Sectorial
Dezvoltarea Resurselor Umane 2007-2013
Baze de date – Microsoft Access
Un program sau aplicaţie care oferă posibilitatea lucrului cu baze de date cu toate
avantajele prezentate anterior poartă denumirea de Sistem de Gestiune a Bazelor
de Date, recunoscut adesea sub acronimul de S.G.B.D. El permite lucrul cu mai
Pagina 5 din 78
Baze de date – Microsoft Access
Pagina 6 din 78
Baze de date – Microsoft Access
tabelă (sau tabel) bidimensională, alcătuit din coloane (atributele sau caracteristicile
structurii de date) şi rânduri (denumite înregistrări sau tupluri ale structurii de date).
Figura nr. 1.1 Elementele structurale ale unui tabel specific modelului relaţional
Succesul realizării unei baze de date relaţionale constă în identificarea unor elemente
cheie care să asigure atât integritatea tabelelor cât şi a relaţiilor stabilite între acestea.
Câteva dintre conceptele de bază care definesc aceste elemente trebuie înţelese pentru
a construi coerent structura unei baze de date:
Cheia primară a unui tabel reprezintă acel câmp sau grup de câmpuri ale cărui
valori pot identifica, în mod unic, valorile celorlalte câmpuri din cadrul aceleiaşi
înregistrări. De exemplu, marca salariatului poate identifica în mod unic valorile pentru
celelalte câmpuri (Nume, Prenume, Data naşterii, Salariul de încadrare).
Pagina 7 din 78
Baze de date – Microsoft Access
Cheia externă exprimă acel câmp din cadrul unei relaţii, care, în cadrul altui tabel,
se regăseşte sub forma unei chei primare, având rol în asocierea dintre tabele.
Asocierea dintre două tabele exprimă legătura logică şi funcţională care se creează
între acestea, prin intermediul câmpurilor de legătură cheie primară - cheie externă.
Pentru asigurarea integrităţii informaţiei unei baze de date, tabelele care deservesc
structuri de date se asociază unele cu altele în vederea asigurării fluxului
informaţional. Nu se poate trata un furnizor separat de facturile pe care acesta le
emite. Prin urmare, soluţia este să se asocieze tabela Facturi cu tabela Furnizori,
astfel încât să se cunoască, pentru fiecare furnizor, ce facturi au fost emise de
acesta. Această asociere se realizează prin intermediul valorilor a două câmpuri
comune, ce desemnează acelaşi tip de informaţie. Astfel, asocierea reprezintă, de
fapt, totalitatea legăturilor care se formează între un număr de înregistrări din primul
tabel cu un anumit număr de înregistrări din cel de-al doilea, prin intermediul
valorilor egale a două câmpuri comune situate, fiecare, într-unul din cele două
tabele. În exemplul din Figura nr. 1.2 câmpul comun este denumire CodFurnizor,
prin intermediul său cunoscându-se care este denumirea şi adresa fiecărui furnizor
care a emis o anumită factură.
Figura nr. 1.2 Asocierea dintre două tabele ale unei baze de date relaţionale
Pagina 8 din 78
Baze de date – Microsoft Access
Figura nr. 1.4 Eliminarea redundanţei prin separarea datelor în mai multe tabele relaţionate
Pentru orice asociere, este necesar să se cunoască tipul acesteia. În acest sens, o
asociere poate să se încadreze într-una din următoarele categorii:
Pagina 9 din 78
Baze de date – Microsoft Access
Cele mai frecvent întâlnite asocieri între două tabele sunt de tipul 1-n, definind
relaţia prin intermediul perechilor de câmpuri cheie primară-cheie externă. Asocierile
de tipul 1-1 sunt rar întâlnite, ele fiind determinate de necesitatea separării
câmpurilor unui tabel în două tabele din motive de securitate sau din alte motive
bine argumentate. De exemplu, definirea unei relaţii de tip 1-1 poate fi stabilită
pentru a separa datele personale ale angajaţilor unei companii de informaţiile legate
de accesul la date prin nume de utilizatori şi parole, întrucât confidenţialitatea
datelor pentru cel de-al doilea tabel are un grad mult mai ridicat decât pentru tabelul
care stochează datele personale.
Asocierile de tip n-n sunt relativ des întâlnite în conceperea unei baze de date
relaţionale, ele fiind înlocuite cu două asocieri de tipul 1-n prin interpunerea între
cele două tabele asociate a unuia nou, denumit tabel de joncţiune. Acest tabel are
responsabilitatea de a asigura legătura dintre cele două tabele care în mod normal
s-ar asocia potrivit tipului n-n. Pentru exemplificare propunem spre analiză o colecţie
de date în cadrul căreia se prezintă situaţia vânzărilor unui magazin către clienţi
persoane fizice (Figura nr. 1.6). Din punctul de vedere al conţinutului informaţional,
se observă că anumite date se repetă (codul intern al produsului, denumirea
acestuia, cantitatea per unitatea de măsură, nr bonului de casă, data şi ora bonului
de casă). Această redundanţă trebuie eliminată prin separarea şi gruparea
câmpurilor în tabele diferite, fiecare dintre acestea posedând o cheie primară ce
impune valori unice la nivel de tabel.
Pagina 10 din 78
Baze de date – Microsoft Access
Figura nr. 1.6 Colecţia de date redundante ce urmează a fi separate în mai multe tabele
Figura nr. 1.7 Obţinerea unei asocieri de tip N-N în urma eliminării redundanţei datelor
Pagina 11 din 78
Baze de date – Microsoft Access
Figura nr. 1.8 Soluţionarea tipului de asociere mai mulţi la mai mulţi dintre două tabele
Obiect Descriere
Pagina 12 din 78
Baze de date – Microsoft Access
Toate aceste obiecte din cadrul unei baze de date Microsoft Access interacţionează,
uneori unele fiind chiar dependente de altele.
Formatul bazelor de date create cu versiunea Access 2010 este acelaşi cu cel
aferent versiunii Access 2007, asigurându-se în acest sens, compatibilitatea între
aceste două versiuni (ambele utilizând extensia .accdb). Access 2010 poate
deschide bazele de date create cu versiunile anterioare. Dacă, însă, utilizând
versiunea Access 2010, se vor apela obiecte care sunt prezente doar în acest
format, versiunile anterioare nu vor putea accesa bazele de date create cu
versiunea 2010.
Pagina 13 din 78
Baze de date – Microsoft Access
Figura nr. 1.9 Procedura de creare a unei baze de date noi (necompletate)
Baza de date nou creată va propune iniţial crearea unui nou tabel a cărui structură
va fi definită de utilizator prin precizarea denumirilor de câmpuri şi a valorilor
specifice înregistrărilor acestuia. Structura ferestrei bazei de date este aplicată în
Figura nr. 1.10.
Pagina 14 din 78
Baze de date – Microsoft Access
Figura nr. 1.11 Fereastra pentru definirea structurii câmpurilor din cadrul unui tabel
Pentru fiecare câmp în parte este obligatorie precizarea tipului câmpului, adică ce
fel de date va conţine acesta (de tip text, de tip număr, de tip data calendaristică,
etc.). Tipul câmpului va fi ales dintr-o listă, în cadrul coloanei Data Type, pentru
câmpul a cărui denumire se află pe acelaşi rând. Principalele tipuri de dată pe care
un câmp le poate lua şi care se vor preciza în cadrul coloanei DataType sunt:
Pagina 15 din 78
Baze de date – Microsoft Access
Memo, utilizat pentru stocarea datelor de tip text, mai precis pentru stocarea
blocurilor de text de până la 65.536 de caractere. Acest tip de dată este recomandat
atunci când se doreşte stocarea unei anumite descrieri cu privire la elementele unei
înregistrări, putând conţine text formatat (rich text) şi beneficiind de opţiunea Doar
adăugare (Append only) utilă atunci când nu se permite modificarea sau ştergerea
conţinutului existent.
Number, pentru stocarea datelor de tip numeric, fiind reprezentat de mai multe
subtipuri: Integer (cu valori cuprinse în intervalul [-32.768, 32.768]), Long integer (cu
valori între -2.147.483.648 şi 2.147.483.648), Byte (cu valori pozitive între 0 şi 255),
Single (cu 7 caractere după virgulă şi valori între -3,4*1038 şi 3,4*1038), Double (cu
15 caractere după virgulă şi valori cuprinse între -1797*1038 şi 1797*1038).
Attachment, putând stoca unul sau mai multe fişiere, utilizând un sistem numit
„date complexe”.
Cea de-a treia coloană din cadrul grilei este coloana pentru descrierea câmpului nou
introdus (Description), unde, opţional, utilizatorul poate face diverse comentarii cu
privire la câmpul precizat pe acelaşi rând.
Fiecare tabel trebuie să aibă definită o cheie primară. Cheia primară poate fi
alcătuită fie dintr-un singur câmp, fie din mai multe. Pentru definirea unei chei
primare, se selectează câmpul sau câmpurile dorite şi apoi se apasă butonul
(Primary Key) din grupul Tools al filei Design. Câmpul sau câmpurile care formează
cheia primară pot fi recunoscute prin „cheia” () care le însoţeşte în dreptul capului de
rând. Pentru definirea unei chei primare compuse din mai multe câmpuri, se vor
Pagina 16 din 78
Baze de date – Microsoft Access
Principalele proprietăţi atribuite unui câmp dintr-un tabel Access pot fi vizualizate în
tabelul următor:
Nume
Descriere
proprietate
Field Size Precizează dimensiunea maximă, prin stabilirea numărului de
caractere a unui câmp de tip Text sau a unui subtip de dată pentru
câmpurile Numerice.
Decimal Places Stabilește numărul de caractere afișate după virgulă pentru un
număr cu zecimale.
Format Determină modul de afișare a valorii câmpului:
- pentru tipul de dată Text – caractere majuscule, minuscule,
stabilirea unui text afișat pentru valori vide sau nule, etc.
- pentru tipuri de dată numerice sau dată calendaristică – modul de
afișare a valorii stocate, prin precizarea secvențelor pentru
formatare.
Pagina 17 din 78
Baze de date – Microsoft Access
Validation Rule Restricție impusă valorilor câmpului, prin precizarea unei reguli ce
poate fi atribuită doar câmpului în cauză.
Validation Text Mesajul de eroare atașat regulii de validare.
Required Stabilește obligativitatea introducerii unei valori în câmpul respectiv.
Indexed Permite definirea unui fişier index pe atributul respectiv. Acest
fişier ajută la regăsirea rapidă a datelor din cadrul câmpului
respectiv.
Pagina 18 din 78
Baze de date – Microsoft Access
prin apăsarea butonului Show Table situat pe bara de meniuri al grupului Design. În
cadrul ferestrei Relationship se vor plasa tabelele care trebuie asociate şi pentru
trasarea asocierii între două tabele se va proceda la apăsarea butonului Edit
Relationship ce va permite deschiderea unei ferestre cu aceeaşi denumire ce
permite precizarea numelor tabelelor care urmează a fi asociate şi a câmpurilor prin
care se va realiza aceasta.
Figura nr. 1.14 Utilizarea asistentului Lookup Wizard pentru precizarea tipului de dată al unei
chei externe
Pagina 19 din 78
Baze de date – Microsoft Access
Primul pas: Bifarea primei opţiuni, pentru preluarea datelor dintr-un alt tabel
sau o interogare;
Al doilea pas: Precizarea tabelului din care face parte cheia primară de unde
vor fi preluate datele în listă;
Al treilea pas: Selectarea câmpului sau câmpurilor ale căror valori vor fi
afişate în listă. Selecţia se face cu ajutorul butonului care selectează un
singur câmp, sau care selectează toate câmpurile din tabelul primar
pentru afişarea lor.
Al patrulea pas: Stabilirea lăţimii câmpului afişat;
Al cincilea pas: Precizarea denumirii sau etichetei pe care câmpul cheie
externă o va afişa.
4. Pentru finalizare, la apăsarea butonului Finish, Access afişează un mesaj prin
care va invita la salvarea tabelului pentru ca modificările să fie efectuate.
Figura nr. 1.15 Editarea asocierii între două tabele ale bazei de date
Pagina 20 din 78
Baze de date – Microsoft Access
Aceste modificări se vor realiza pentru toate tabelele bazei de date Access pentru a
defini structura finală a bazei de date relaţionale.
Pagina 21 din 78
Baze de date – Microsoft Access
Pentru filtrarea datelor, există posibilitatea definirii unor filtre cu ajutorul metodei
formularului (Home→Sort&Filter→Advanced→Filter By Form), prin care se poate
alege o valoare pentru unul sau mai multe câmpuri pentru care se aplică criterii de
filtrare.
Figura nr. 1.16 Utilizarea opţiunii de filtrare a datelor dintr-un tabel cu ajutorul formularului
O altă metodă este cea de filtrare prin selecţie. Pentru aplicarea acestei metode,
mai întâi se poziţionează cursorul pe valoarea care se constituie drept criteriu de
filtrare pentru câmpul respectiv, după care se alege opţiunea
Home→Sort&Filter→Selection. Mai departe se va selecta opţiunea de filtrare potrivit
criteriului selectat: afişarea înregistrărilor pentru care câmpul prezintă întocmai
valoarea selectată (Equals), pentru care câmpul diferă de valoarea selectată (Does
not equal), care conţine valoarea selectată (Contains) sau care nu conţine ca
valoare selecţia (Does not contain) (Figura nr. 1.17).
Pagina 22 din 78
Baze de date – Microsoft Access
Figura nr. 1.17 Modalitatea de filtrare a datelor dintr-un tabel prin metoda de filtrare prin
selecţie
Structurarea unei baze de date relaţionale este un proces ghidat de reguli stricte
privind construirea tabelelor care să respecte modelul relaţional. Restricţiile impuse
de acest model implică obligativitatea stocării informaţiei în structura din care
aceasta face parte şi nu în locul unde apare. Deşi o informaţie poate să apară în
mai multe locaţii, totuşi ea va fi stocată într-un singur tabel, potrivit principiului non-
redundanţei datelor.
Interogarea unei baze de date este un proces foarte important pentru utilizatorii
acestora, întrucât presupune regăsirea şi extragerea informaţiilor dorite de către
utilizator. Pentru realizarea interogărilor, Access pune la dispoziţia utilizatorilor
obiectele de tip Cerere (Query). Rezultatul cererii se prezintă sub forma unei foi de
răspuns dynamic (ceea ce înseamnă că la fiecare apelare sunt afişate datele care
îndeplinesc criteriile şi structura interogării), foaie care nu mai există fizic după
închiderea cererii. Aşadar, o cerere de interogare a bazei de date nu măreşte spaţiul
ocupat în cadrul calculatorului de către baza de date. O cerere poate interoga date
din cadrul unuia sau mai multor tabele, sau chiar din cadrul altor cereri.
Pagina 23 din 78
Baze de date – Microsoft Access
Figura nr. 2.1 Compunerea a două tabele pentru obţinerea informaţiilor cerute prin impunerea
unui criteriu de filtrare a datelor
Câteva dintre destinaţiile care se pot da cererilor de interogare a bazelor de date pot
fi:
Pagina 24 din 78
Baze de date – Microsoft Access
Pagina 25 din 78
Baze de date – Microsoft Access
Oricare ar fi tipul cererii de interogare, orice obiect de tip cerere este supus
următoarelor operaţii:
Figura nr. 2.2 Regăsirea elementelor de tip interogare în cadrul unei baze de date
Toate obiectele de tip cerere sunt afişate în cadrul grupului de obiecte Queries din
panoul de navigare printre obiectele bazei de date. Efectuarea unui dublu click pe
numele unui asemenea obiect va deschide răspunsul la cererea pentru care obiectul
de tip interogare a fost creat. Pentru modificarea definiţiei unei interogări se va
efectua click dreapta pe numele acesteia şi se va apela opţiunea Design View din
cadrul meniului contextual care apare.
Pagina 26 din 78
Baze de date – Microsoft Access
Pagina 27 din 78
Baze de date – Microsoft Access
fac parte acestea şi cum se asociază aceste tabele. Foarte important este, în egală
măsură, identificarea tipului de interogare ce trebuie folosit pentru aflarea
rezultatului final.
Pentru cererile de selecţie a datelor, se alege opţiunea Design View din caseta
New Query. Access va afişa fereastra de interogarea a tabelelor după exemplu,
cunoscută sub denumirea Query By Example (prescurtat Q.B.E.). Alături de această
fereastră, se va afişa şi caseta de selectare a tabelelor care urmează a fi interogate,
denumită Show Table.
Grila de câmpuri conţine mai multe rânduri care au destinaţii diferite. Fiecare
coloană din cadrul grilei este destinată unui anumit câmp din cadrul tabelelor aduse
pentru interogare. O scurtă descriere a rândurilor aferente grilei Query Design este
Pagina 28 din 78
Baze de date – Microsoft Access
De exemplu, afişarea lunii în care a fost emis fiecare bon de casă presupune, pe
lângă afişarea valorilor câmpurilor care identifică fiecare bon de casă (regăsite în
câmpuri din tabelul BonCasă), şi definirea modului de extragere a lunii din data
bonului de consum. În acest sens, pe rândul Field, se va tasta formula de calcul
pentru afişarea lunii în care a fost emis fiecare bon de casă:
Pagina 29 din 78
Baze de date – Microsoft Access
LunaEmitereBonCasa:Month([DataBonCasa])
Există, de asemenea, situaţii speciale în care, alături de valori ale unor câmpuri din
cadrul bazei de date, un anumit câmp din cadrul unei interogări necesită doar
afişarea unor valori scalare. În asemenea situaţie, pe rândul Field al grilei de
câmpuri va fi tastată valoarea scalară care trebuie afişată fiind precedată de
denumirea atribuită acestei coloane.
Există posibilitatea ştergerii anumitor câmpuri din cadrul grilei de câmpuri, în situaţia
în care nu le mai considerăm necesare pentru interogare. Acest lucru se realizează
prin poziţionarea cursorului deasupra denumirii câmpului în cauză, şi efectuarea
unui clic când cursorul capătă forma unei săgeţi negre cu vârful în jos (). Apoi,
pentru ştergere, se apasă tasta Delete.
Pe rândul Criteria pot fi utilizaţi diferiţi operatori prin care pot fi construite condiţii
complexe. Vom enumera cele mai importante categorii de astfel de operatori,
oferind o scurtă descriere de utilizare a lor în criteriul de filtrare:
Exemple:
Operator Exemplu Descriere
= =”Nicu” Caută valorile egale cu textul „Nicu”
<> <>”Mere” Afişează toate valorile, mai puţin „Mere”
< <10 Toate valorile câmpului mai mici ca 10
Pagina 30 din 78
Baze de date – Microsoft Access
Caracterul ?: sunt căutate acele texte care pe poziţia în care acest caracter
apare se găseşte doar un singur caracter alfanumeric.
Caracterul #: sunt afişate textele care conţin pe poziţia în care acest caracter
apare un caracter numeric sau caracterele + sau -.
Pentru a preciza o plajă de valori posibile, tiparul trebuie să fie încadrat între
paranteze drepte iar plaja de valori trebuie precizată utilizând limita inferioară
şi cea superioară, separate prin semnul -.
Atunci când sunt impuse mai multe condiţii este important să se precizeze modul în
care acestea sunt evaluate: obligatoriu toate sunt necesare (operatorul AND) sau
cel puţin una dintre acestea (operatorul OR).
Pagina 31 din 78
Baze de date – Microsoft Access
Figura nr. 2.5 Modalitatea de rezolvare a unei cereri de interogare utilizând fereastra Query
Design
Cele două tabele sunt asociate prin intermediul perechii de câmpuri CodCategorie
(cheia primară) din CategoriiProduse şi CodCategorie (cheie externă) din Produse.
Proiectarea obiectului de tip interogare care va oferi răspunsul pentru această
cerinţă este explicată în Figura nr. 2.5.
Aşadar, toate condiţiile precizate pe acelaşi rând Criteria sunt combinate utilizând
operatorul AND. Dacă două condiţii sunt precizate pe rânduri Criteria diferite atunci
între cele două condiţii se interpune operatorul OR.
Pagina 32 din 78
Baze de date – Microsoft Access
În vederea interogării datelor din mai multe tabele sursă, fereastra QBE permite
În privinţa cererilor de selecţie care au ca sursă mai multe tabele trebuie precizat că,
în mod implicit, Access utilizează operaţia de Echicompunere, fapt ce conduce la
selectarea înregistrărilor ce au corespondent în ambele tabele.
Notă:
Pagina 33 din 78
Baze de date – Microsoft Access
Figura nr. 2.7 Rezultatul interogării a două tabele compuse prin operaţiunea de
echicompunere
Figura nr. 2.8 Selectarea datelor din două tabele prin compunere externă
Pagina 34 din 78
Baze de date – Microsoft Access
Figura nr. 2.9 Afişarea rezultatului unei interogări având ca sursă două tabele compuse prin
compunere externă
Dacă între două tabele nu există asocieri predefinite, acestea se pot stabili între
două câmpuri făcând parte din cele două tabele, prin glisarea mouse-ului de la
câmpul de legătură din primul tabel către câmpul de legătură din cel de-al doilea.
Ulterior, şi această asociere, reprezentată printr-o linie ce va uni cele două câmpuri
între care se realizează legătura, poate fi modificată în sensul schimbării tipului de
compunere între tabelele în cauză.
Pagina 35 din 78
Baze de date – Microsoft Access
La executarea interogării nu sunt afişate direct rezultatele sub forma unui set de
înregistrări, aşa cum se întâmplă în situaţia unei interogări simple, ci se va afişa mai
întâi mesajul prin care se cere valoarea parametrului care va completa condiţia
impusă, urmând ca filtrarea să se realizeze în funcţie de această valoare.
Pagina 36 din 78
Baze de date – Microsoft Access
Pagina 37 din 78
Baze de date – Microsoft Access
afişarea vechimii, în zile, de la emiterea unui bon de casă şi până în prezent poate fi
formulat următorul câmp calculat:
VechimeBonCasa: Date()-DataBonCasa
Pagina 38 din 78
Baze de date – Microsoft Access
2.2.1 Agregarea datelor din mai multe înregistrări ale unei interogări
Agregarea datelor defineşte o modalitate de calcul a unor valori statistice aplicând
diverse funcţii de sintetizare unui grup de valori ale aceluiaşi câmp provenind din
mai multe înregistrări ale unui set de date. Astfel, Access permite numărarea
elementelor unui anumit grup (funcţia COUNT), însumarea acestora (funcţia SUM),
valoarea cea mai mare (MAX), valoarea cea mai mică (funcţia MIN), deviaţia
standard (STDEV), varianţa (VAR), prima valoare a câmpului dintr-un set de
înregistrări (FIRST) sau ultima valoare (LAST). Toate aceste funcţii sunt numite
funcţii de agregare, acţionând doar la nivel de grup de înregistrări. Gruparea
înregistrărilor se realizează după valori egale ale unui anumit câmp al setului de
date supus agregării. Pentru înţelegerea agregării datelor în Access vom considera
următoarea cerinţă:
„Care este cantitatea cea mai mare vândută din fiecare produs?”
Sintetizarea presupune afişarea a două informaţii pentru fiecare produs din cadrul
nomenclatorului: denumirea produsului şi cantitatea maximă comandată din acesta.
Figura nr. 2.12 Modalitatea de sintetizare a informaţiei prin gruparea înregistrărilor după
valorile unui anumit câmp
Pagina 39 din 78
Baze de date – Microsoft Access
Figura nr. 2.13 Exemplificarea modului de proiectare a interogării de sintetizare propuse spre
rezolvare
Pagina 40 din 78
Baze de date – Microsoft Access
Etapele ce trebuie urmate pentru realizarea unei astfel de cereri de interogare sunt
următoarele:
Vom conveni plasarea câmpurilor Nume, respectiv, Prenume din tabelul Vanzatori
pe liniile situaţiei centralizatoare, câmpul Denumire din tabelul Produse pe coloana
acesteia, iar la intersecţia lor se va plasa valoarea totală, calculată ca sumă a
produsului dintre câmpul Cantitate şi Preţ din tabelul ProduseVandute. Filtrarea
datelor se va realiza utilizând câmpul DataOraBonCasa din tabelul BonCasa din
care se va extrage anul utilizând funcţia Year. Modul de proiectare a interogării
potrivit cerinţei enunţate este prezentat în Figura nr. 2.14.
Pagina 41 din 78
Baze de date – Microsoft Access
Specific acestor tipuri de interogări este faptul că ele trebuie lansate în execuţie
doar prin comanda Run din meniul Query sau prin apăsarea butonului de pa
bara de instrumente.
Pagina 42 din 78
Baze de date – Microsoft Access
2.2.3.1 Cereri pentru modificarea datelor din înregistrările unui tabel (Update
Query)
Sunt interogări utilizate pentru actualizarea înregistrărilor dintr-o tabelă, care
corespund unui anumit criteriu. Pentru a se efectua actualizarea, trebuie să
precizăm, la nivelul unei astfel de cereri, care sunt câmpurile asupra cărora se
aplică criteriul de modificare, care sunt câmpurile ale căror date vor fi modificate şi
care este formula de modificare a acestor date, sau valoarea care se va stoca
pentru câmpurile de modificat. La fel ca şi în cazul celorlalte tipuri de interogări, mai
întâi are loc filtrarea înregistrărilor urmând ca setul de înregistrări rezultat în urma
filtrării să fie supus mai departe operaţiunii de modificare a datelor din câmpul sau
câmpurile actualizabile. Dacă nu există un criteriu de filtrare a înregistrărilor atunci
modificarea va afecta toate înregistrările din tabelul respectiv.
Actualizarea câmpului modificat se poate efectua fie pe baza unei valori scalare
(exemplu: Procentul de comision din vânzări ale casierilor angajaţi înainte de anul
2008 să fie 6%), fie prin implicarea valorilor existente ale câmpului modificabil
(exemplu: să se majoreze cu 2 procente comisionul casierilor angajaţi în anul 2008),
fie prin implicarea valorilor altor câmpuri (exemplu: dacă casierul a fost angajat în
anul 2008, procentul de comision este de 5%, altfel este de 6%).
Pagina 43 din 78
Baze de date – Microsoft Access
Figura nr. 2.15 Proiectarea unei interogări de modificare a datelor pe baza unei formule
Pagina 44 din 78
Baze de date – Microsoft Access
valori logice (True sau False), în funcţie de care depinde cu câte zile se va majora
termenul de valabilitate a acelor produse vizate. Rezolvarea presupune o formulă de
modificare a câmpului TermenValabilitate(zile) care va verifica valoarea câmpului
Perisabil prin intermediul funcţiei IIF. Această funcţie permite evaluarea unei condiţii
şi returnarea a câte unui rezultat în funcţie de rezultatul condiţiei. Se va utiliza, prin
urmare, formula de actualizare:
IIF([Perisabil]=False;[TermenValabilitate(zile)]+30; [TermenValabilitate(zile)]+5)
Pentru efectuarea unei ştergeri în masă a înregistrărilor potrivit unui criteriu stabilit,
trebuie procedat astfel:
Pagina 45 din 78
Baze de date – Microsoft Access
Se aduce în cadrul grilei câmpul sau câmpurile pentru care se vor defini
criteriile de selecţie şi se vor preciza aceste criterii pe rândul Criteria;
Se va schimba tipul cererii din Select Query în Delete Query, utilizând
opţiunea Query Type->Delete Query;
Se lansează cererea în execuţie prin apelarea opţiunii Run.
Vom exemplifica prin crearea unei cereri de ştergere a produselor vândute prin
bonurile de casă cu numărul 2 şi 3. Se observă că tabelul din care se solicită
ştergerea este ProduseVândute. Se cere ştergerea acelor înregistrări pentru care
numărul bonului de casă este 2 şi 3. Prin urmare, câmpul de filtrare este NrBonCasă
situat în cadrul aceluiaşi tabel.
Figura nr. 2.17 Definirea unei interogări de ştergere a datelor dintr-un tabel
Pagina 46 din 78
Baze de date – Microsoft Access
rezultatul unei foi de răspuns dinamic sub forma unui tabel pentru a surprinde o
situaţie dintr-un anumit moment dat.
Figura nr. 2.18 Crearea unei interogări pentru generarea unui tabel nou
Pasul 2: Schimbarea tipului interogării din grupul Query Type al meniului Design din
Select în Make Table.
Pagina 47 din 78
Baze de date – Microsoft Access
Figura nr. 2.19 Modificarea tipului de interogare pentru crearea unui nou tabel
Pagina 48 din 78
Baze de date – Microsoft Access
Modul de rezolvare, respectând paşii expuşi anterior, este prezentat în Figura nr.
2.20.
Figura nr. 2.20 Proiectarea unei interogări pentru adăugarea datelor într-un tabel
Pagina 49 din 78
Baze de date – Microsoft Access
Din punct de vedere structural, un formular Access este alcătuit din anumite zone
care interacţionează în diverse moduri cu utilizatorul. Aceste zone poartă denumirea
de controale şi alcătuiesc interfaţa grafică pentru gestiunea datelor. La baza
construirii formularului stă o sursă de date (formată din unul sau mai multe tabele
sau interogări existente la nivelul bazei de date). Sursa de date va fi cea care oferă
informaţii afişate prin intermediul controalelor şi care va fi actualizată în timp real
(orice modificare a datelor la nivel de formular se reflectă automat în tabelele sursei
de date).
Formularele din cadrul unei aplicaţii Access pot fi create în scopul de a afişa şi
actualiza datele din cadrul unor tabele (le vom numi Formulare legate), care prezintă
o sursă de date, sau pentru alte scopuri, cum ar fi afişarea unor mesaje, afişarea
meniurilor aplicaţiei, deschiderea altor formulare sau rapoarte, etc. (formulare care
se numesc nelegate).
Obiectele de tip formular sunt grupate în categoria Forms din cadrul ferestrei bazei
de date.
Formularele legate de o sursă de date (unul sau mai multe tabele sau interogări) pot
afişa informaţiile din cadrul acesteia în diverse moduri:
Pagina 50 din 78
Baze de date – Microsoft Access
Pagina 51 din 78
Baze de date – Microsoft Access
Pagina 52 din 78
Baze de date – Microsoft Access
Din lista de modalităţi afişate se va selecta cea dorită pentru crearea formularului:
Form – generarea rapidă a unui formular având drept sursă un tabel sau
interogare selectat(ă) în prealabil;
Design View – toate operaţiile de proiectare vor fi stabilite de utilizator;
Blank Form – generarea unui formular gol care poate fi ulterior completat cu o
sursă de date;
Form Wizard - utilizatorul va fi îndrumat pas cu pas în crearea formularului;
Navigation – proiectarea unei ferestre de tip meniu prin care pot fi accesate
mai multe formulare pe care baza de date le deţine.
Pagina 53 din 78
Baze de date – Microsoft Access
Observaţie: Dacă tabelul sursă este asociat cu un singur tabel (care deţine o cheie
externă asociată cu cheia primară a acestuia) formularul generat automat prin
această metodă va afişa şi informaţiile tabelului asociat, filtrând datele din tabelul
asociat în funcţie de valoarea câmpului de legătură. Luând drept sursă de date
tabelul CategoriiProduse, observăm că singurul tabel cu care se asociază este
tabelul Produse, cel care deţine cheia externă CodCategorie.
Pagina 54 din 78
Baze de date – Microsoft Access
Figura nr. 3.2 Crearea unui formular rapid utilizând o sursă de date
1. În fereastra Form Wizard se va selecta mai întâi tabelul sau tabelele care vor sta
la baza afişării datelor din cadrul formularului, după care se vor preciza care sunt
câmpurile care vor apărea în cadrul acestuia.
Pagina 55 din 78
Baze de date – Microsoft Access
2. Se alege tipul de formular dorit, precizându-se modul în care vor fi afişate datele.
Pagina 56 din 78
Baze de date – Microsoft Access
Pagina 57 din 78
Baze de date – Microsoft Access
Etapa 5: Definirea numelor specifice formularului principal (care afişează date din tabela cu
cheia primară) şi a subformularului (cel bazat pe tabela cu cheia externă a asocierii):
Pagina 58 din 78
Baze de date – Microsoft Access
În această situaţie în care sursa de date a formularului este multiplă (mai multe
tabele asociate prin intermediul cheilor externe) succesiunea paşilor prezentaţi mai
sus va fi completată de alţii suplimentari care au rolul de a stabili precedenţa afişării
informaţiilor şi modul de vizualizare a acestora (toate într-un singur formular –
formular cu subformular asemănător exemplului cu furnizorii şi facturile) sau prin
formulare legate (pentru fiecare tabel se creează un formular, un formular putând
redirecta către celălalt).
Structura unui formular este descrisă în modul de proiectare. Orice formular conţine
3 secţiuni importante, secţiuni în care vor fi desenate controalele şi ulterior încărcate
cu date. Acestea sunt:
Pagina 59 din 78
Baze de date – Microsoft Access
Cu toate acestea, tehnica cea mai utilizată la crearea unui formular este
următoarea: într-o primă fază, formularele sunt generate cu ajutorul unui asistent,
după care sunt deschise în modul Design pentru a fi modificate, astfel încât să
corespundă cât mai bine cerinţelor utilizatorului final.
Pagina 60 din 78
Baze de date – Microsoft Access
Pentru accesarea modului de proiectare a unui formular creat anterior cu unul dintre
asistenţii prezentaţi se va deschide formularul dorit prin efectuarea unui dublu clic
pe numele acestuia, apoi se va comuta în modul de vizualizare pentru proiectare
prin apelarea opţiunii Home→Views→View→Design View.
Multe din aceste tipuri de controale sunt însoţite de asistenţi specifici care oferă
utilizatorului diverse opţiuni pentru realizarea unei anumite funcţionalităţi specifice,
prin parcurgerea anumitor paşi. Plasarea unui control pe suprafaţa formularului se
face prin selectarea controlului dorit din grupul Controls urmată de schiţarea cu
ajutorul mausului a zonei pe care acesta o va ocupa pe suprafaţa formularului.
Figura nr. 3.5 Suita de controale disponibile spre a fi utilizate în cadrul unui formular
Pagina 61 din 78
Baze de date – Microsoft Access
Dintre controalele puse la dispoziţia utilizatorului, cele mai importante sunt casetele
text (Textbox) şi casetele derulante (Combobox), utilizate pentru afişarea datelor din
cadrul câmpurilor sursei de date. Alături de acestea sunt utilizate şi etichetele
(Label), pentru afişarea denumirilor de câmpuri, sau butoanele de comandă
(Command button), pentru executarea diverselor acţiuni, de deplasare prin
înregistrări, de adăugare, modificare sau ştergere a înregistrărilor din tabela sursă.
Pagina 62 din 78
Baze de date – Microsoft Access
Pagina 63 din 78
Baze de date – Microsoft Access
Fiecare formular, fiecare secţiune a formularului şi fiecare control din cadrul său
deţine un set de proprietăţi, grupate în cinci mari categorii de acţiuni:
Aceste proprietăţi sunt diferite pentru fiecare control în parte, dar indiferent care ar fi
acestea, categoriile în care ele sunt grupate sunt aceleaşi.
Pagina 64 din 78
Baze de date – Microsoft Access
Pagina 65 din 78
Baze de date – Microsoft Access
Aceasta este proprietatea Record Source, din categoria Data (Figura nr. 3.8).
Putem alege sursa de date din lista de tabele sau interogări care va fi afişată sau
putem construi o sursă de date pe baza a mai multor tabele sau interogări, cu
ajutorul asistentului pentru această proprietate (prin apăsarea butonului situat în
dreapta listei cu tabelele şi interogările).
Nota: Nu pot fi create formulare nelegate cu ajutorul unui asistent. De aceea, pentru
a putea realiza un astfel de formular, trebuie să se cunoască foarte bine metoda prin
care se pot ataşa controale formularului şi stabili ulterior proprietăţile acestor
controale, astfel încât rezultatul să fie cel scontat.
Rapoartele sunt, deci, obiecte din cadrul unei baze de date Access care sunt
destinate imprimării pe suport de hârtie şi care fac ca datele din tabele sau
interogări să fie afişate într-o formă atractivă, uşor de înţeles şi uşor de analizat.
Un obiect de tip raport pune la dispoziţia celui care îl proiectează unele avantaje:
Pagina 66 din 78
Baze de date – Microsoft Access
o Opţiuni de combinare a datelor din mai multe tabele legate: un singur raport
poate afişa date din mai multe tabele sau interogări care conţin câmpuri de
legătură, sau între care există deja creată o asociere.
Acest capitol descrie care sunt posibilităţile de creare a obiectelor de tip raport dintr-
o bază de date Access şi care ar fi principalele avantaje pentru care ar trebui să
folosim un anumit tip de raport pentru prezentarea unor situaţii diverse.
Pentru crearea rapoartelor Access există câteva modalităţi la care utilizatorul poate
face apel:
Crearea instantanee a unui raport pe baza unui tabel sau unei interogări
Sursă (opţiunea Create→Report)
Crearea unui raport prin parcurgerea pașilor unui asistent (opţiunea Report
Wizard)
Obiectele de tip raport sunt grupate în categoria Reports din cadrul ferestrei de
navigare a bazei de date.
Pagina 67 din 78
Baze de date – Microsoft Access
stau la baza raportului. La finalul acestor paşi se va afişa raportul dorit, cu toate
informaţiile specificate în cadrul său.
Paşii pe care utilizatorul trebuie să-i parcurgă conţin o serie de întrebări la care
acesta trebuie să răspundă şi care se concretizează în opţiunile sale pentru raportul
dorit. Dat fiind faptul că numărul de paşi este mai mare în situaţia în care raportul
are ca sursă de date mai mult de o tabelă sau interogare, vom prezenta în
continuare crearea unui raport pe baza a două tabele (BonDeCasa şi
ProduseVândute):
Pagina 68 din 78
Baze de date – Microsoft Access
Figura nr. 4.1 Apelarea asistentului pentru crearea raportului şi precizarea sursei de date a
acestuia
2. Modul de organizare a datelor din raport, precizând care este tabela în funcţie
de care vor fi grupate datele. Între tabelele sau interogările sursei de date
trebuie să existe câmpuri de legătură.
Pagina 69 din 78
Baze de date – Microsoft Access
Figura nr. 4.3 Specificarea unor câmpuri de grupare suplimentare faţă de pasul precedent
4. Sortarea datelor în cadrul raportului. De reţinut că orice câmp pentru care s-a
făcut gruparea datelor este în acelaşi timp şi câmp de sortare, deci automat
valorile sale vor fi sortate crescător. Există posibilitatea de a efectua sortarea
datelor pe patru nivele, adică se va trece la sortarea de pe nivelul următor,
numai dacă valorile câmpului curent de sortare sunt egale. Sortarea se poate
face crescător sau descrescător.
Pagina 70 din 78
Baze de date – Microsoft Access
Figura nr. 4.4 Specificarea modului de ordonare a datelor din cadrul raportului şi a opţiunilor
de totalizare la nivel de grup
Pagina 71 din 78
Baze de date – Microsoft Access
Figura nr. 4.5 Precizarea modului de aranjare a datelor în cadrul raportului curent
Pagina 72 din 78
Baze de date – Microsoft Access
Vom observa ca orice raport conţine cinci secţiuni standard, în cadrul cărora vor fi
incluse controale pentru afişarea informaţiilor. Este important să cunoaştem aceste
secţiuni, întrucât ele apar în mod diferit în cadrul unui raport, iar includerea unui
control într-una din aceste secţiuni va conduce la apariţia controlului respectiv doar
când această secţiune va fi afişată în raport.
Pagina 73 din 78
Baze de date – Microsoft Access
Toate aceste cinci secţiuni apar în mod obligatoriu la nivelul unui raport. Însă,
uneori, în cadrul ferestrei Design View ale raportului mai apar şi alte secţiuni, în
urma stabilirii unor criterii de grupare a datelor din raport, fiecare câmp de grupare
fiind însoţit de un antet de grupare şi un subsol de grupare.
Pagina 74 din 78
Baze de date – Microsoft Access
Figura nr. 4.9 Structura unui raport ce prezintă grupări de date completată cu secţiunile de
grupare
Pagina 75 din 78
Baze de date – Microsoft Access
Pagina 76 din 78
Baze de date – Microsoft Access
Bibliografie selectivă
Pagina 77 din 78
Titlul programului: Programul Operaţional Sectorial Dezvoltarea Resurselor
Umane 2007-2013
Proiect cofinanţat din Fondul Social European prin Programul Operaţional Sectorial
Dezvoltarea Resurselor Umane 2007-2013