Sunteți pe pagina 1din 70

10.

Aplicaii Access
Acest capitol conine patru aplicaii Access comentate, n scopul prezentrii celor mai utile informaii privind
realizarea bazelor de date relaionale.

10.1. Baz de date pentru activiti colare


S presupunem c, ntr-un ora, activitile facultative ale elevilor se desfoar ntr-un sediu special organizat,
dup un orar care se stabilete la nceputul fiecrui an colar. Se dorete crearea unei baze de date pentru gestionarea
informaiilor relative la aceast activitate: elevi, profesori, orar. Pentru simplificarea aplicaiei, vom considera c dou
cursuri cu acelai obiect (de exemplu, dou cursuri de pictur) susinute la momente temporare distincte (de acelai
profesor sau de profesori diferii) sunt de fapt cursuri distincte, motiv pentru care cursurile vor fi identificate printr-un
cod.
Analiza problemei conduce la identificarea imediat a entitilor: ELEVI, CURSURI, PROFESORI. Cunoscnd
elementele ce trebuie memorate pentru fiecare entitate n parte i constatnd relaiile ntre entiti, construim modelul
conceptual al bazei de date, care se poate reprezenta astfel:
ELEVI
nr matricol
nume
si
prenume
clasa

scoala
CURSURI
cod curs
denumire

URMEAZ
curs
SUSIN
PROFESORI
cod profesor
specializarea
norma
de

ziua
ora
inceperii
evenimente

baza
Cu specificaia anterioar relativ la cursuri, observm c relaia dintre entitile
PROFESORI i CURSURI este de tip 1-n ("unu la mai muli") (un profesor poate susine mai multe cursuri dar un curs
este realizat de un singur profesor), n timp ce relaia ntre entitile ELEVI i PROFESORI este de tip m-n ("mai muli la
mai muli"). ntr-adevr, un elev poate urma mai multe cursuri iar un curs are, desigur, mai muli elevi. Acest tip de
relaie se transform, pentru a putea fi modelat logic, n dou relaii de tip 1-n. Vom realiza aceasta prin introducerea
unei entiti suplimentare, numit REPARTIII, care va permite i notarea fiecrui elev, la sfritul anului colar, la toate
cursurile la care acesta particip. Ideea acestei modelri este de a surprinde interaciunea elev curs i elementele ei
specifice. Fiecare elev (identificat prin numrul su matricol, stocat n nr matricol) urmeaz un curs (identificat printr-un
cod pstrat n cod curs) i primete o not (stocat n cmpul apreciere). Astfel, modelul logic (relaional) al datelor este
reprezentat de urmtoarea colecie de tabele:

ELEVI (nr matricol, nume i prenume, clasa, coala)


CURSURI (cod curs, denumire curs, ziua, ora nceperii, evenimente)
PROFESORI (cod profesor, specializarea, norma de baz, cod curs)
REPARTIIE (cod, nr matricol, cod curs, apreciere).

n reprezentarea de mai sus, atributele subliniate cu linie continu caracterizeaz n mod unic realizrile de
entitate (un numr matricol este specific unui elev i numai unuia, aceeai proprietate este valabil pentru codul unui
profesor, fiecare curs are un cod unic iar fiecare linie a tabelului repartiie este identificat printr-un numr, pstrat n
cmpul cod). Un atribut cu aceast proprietate (de identificare a realizrilor unei entiti) se numete cheie primar. De
exemplu, atributul cod curs realizeaz diferenierea a dou cursuri (n baza noastr de date, dou cursuri cu aceeai

denumire Pictur sunt susinute de profesori diferii, n zile diferite din sptmn; este evident c nu ar putea fi
identificate prin denumire).
Cmpurile subliniate cu linie punctat au un rol de legtur, i anume, modeleaz relaiile ntre entitile
identificate n faza de analiz. Aceste cmpuri se numesc chei secundare sau externe (cod curs pentru tabela
profesori, nr matricol i cod curs pentru tabela repartiie). n timp ce cheile primare au valori unice, cheile secundare pot
avea valori duplicate (se va observa, studiind baza de date oferit ca exemplu, c numrul matricol 101 apare n trei linii
ale tabelei repartiie, iar cursul cu codul 3 n patru linii).
Vom studia n continuare procedeele prin care transpunem acest model ntr-o baz de date Access i cum putem
folosi aceast baz de date.
n fereastra Microsoft Access optm pentru crearea unei baze de date goale (Blank Access database) i tastm
OK. Apare caseta File New Database, n care introducem numele dorit (n cazul nostru, instruire). n zona de lucru a
aplicaiei apare fereastra Database, aceasta fiind fereastra principal a noii baze de date, prin intermediul creia putem
accesa toate obiectele ei. Se observ c n zona din stnga ferestrei obiectele sunt grupate pe tipuri (tablouri, cereri,
etc.), iar n zona din dreapta se regsesc instrumente de lucru i obiectele de tipul curent. Astfel, n imaginea de mai jos
nu figureaz tabele (acestea vor fi primele obiecte create), dar se pot observa instrumentele prin intermediul crora
putem accesa diferitele modaliti de creare a tabelelor. Se observ c eticheta fiecrui grup de obiecte este precedat
de o imagine semnificativ. Imediat sub bara de titlu a ferestrei se pot observa butoane de manevr a obiectelor de tipul
curent (de exemplu, pentru tabele, Open, Design, New i Delete permit deschiderea n mod tabel, deschiderea n mod
proiectare, crearea unui tabel nou i respectiv tergerea unui tabel) i butoanele pentru diferite afiri ale pictogramelor
obiectelor (Large Icons, Small, List i Detail).

Crearea tabelelor
Prin realizarea unui dublu clic pe opiunea Create table in design view se deschide fereastra Table, n cadrul
creia se definesc:
numele cmpului (Field Name), ce poate fi format din mai multe cuvinte, trebuie s fie sugestiv (s sugereze
coninutul cmpului pe care l numete). De exemplu, "nr matricol" este numele cmpului care va conine numrul
matricol al unui elev.
tipul cmpului (Data Type). Un tip de dat definete att mulimea valorilor pe care le poate lua data respectiv,
ct i tipul operaiilor ce se pot aplica asupra ei. Un clic pe sgeata derulant deschide lista opiunilor (Text, Memo,
Number, Date/Time, etc.).

descrierea (Description), acest element fiind opional (o descriere a cmpului respectiv, de exemplu pentru "nr
matricol" s-a precizat c reprezint un cod intern, necesar identificrii elevilor n cadrul activitii de instruire
suplimentar).

Crearea relaiilor ntre tabele


Exist dou tipuri de relaii ntre tabelele unei baze de date:
relaii permanente, ce se stabilesc dup definirea tabelelor. Aceste relaii fac parte din structura bazei de date
(deci se memoreaz n ea) i se realizeaz prin corespondenele chei primare chei secundare.
relaii temporare, ce se stabilesc ntre tabele atunci cnd se realizeaz anumite interogri; acestea nu se
pstreaz n baz.
Am observat deja care este tipul relaiilor ntre tabelele PROFESORI i CURSURI (1-n), iar relaia de tip m-n ntre
tabelele ELEVI i CURSURI a fost descompus n dou relaii de tip 1-n, cu ajutorul tabelei REPARTIIE: Relaia
ELEVI REPARTIIE este de tip 1-n (un elev particip la mai multe cursuri i va primi o not pentru fiecare) i la fel
este relaia CURSURI REPARTIIE (un curs se regsete n tabela REPARTIIE de un numr de ori egal cu numrul
elevilor care-l urmeaz). n afara acestor tipuri de relaii, n Access se mai pot modela relaiile de tip 1-1 ("unu la unu"),
de exemplu ntre persoane i mulimea codurilor numerice personale.
Un clic pe butonul Relationships:
de pe bara de instrumente Database deschide fereastra Relationships i
caseta Show Table, de unde utilizatorul aduce n fereastr tabelele bazei de date (dup care o nchide). O relaie ntre
dou tabele se realizeaz prin punctarea cheii principale a tabelei ce constituie partea stng a relaiei) i tragere pn
la cheia secundar (extern) a tabelei ce constituie partea dreapt a relaiei. Aceast manevr deschide fereastra de
dialog Editare Relaii:

Se observ n aceast fereastr (n cazul de fa, pentru editarea relaiei ELEVI REPARTIIE) cele dou tabele
relaionate, cheile primar i secundar. Bifarea proprietii Enforce Referential Integrity) activeaz un mecanism al
sistemului de gestiune Access, prin care nu este permis introducerea datelor n tabele REPARTIIE, naintea celor din
tabela ELEVI. Cu alte cuvinte, un elev cu numrul matricol 300 nu poate figura n tabela REPARTIIE, nainte de a fi
fost introdus n ELEVI. Aceast ordine de introducere este natural, nu putem repartiza elevii la cursuri nainte de a-i
"nscrie". Situaia se prezint la fel i n cazul relaiei CURSURI REPARTIIE: trebuie s memorm mai nti datele
despre un curs i apoi s repartizm elevi la acest curs. Se observ c acest mecanism este unul de pstrare a
integritii refereniale a bazei (dup cum indic i numele proprietii), astfel este prevenit introducerea greit a
datelor i sunt eliminate multe incoerene.
Iat fereastra Relaii pentru baza de date instruire:

Introducerea datelor n tabele


Se poate realiza n mai multe moduri, dar pentru nceput putem realiza urmtorii pai: n fereastra Database
selectm fiierul dorit, activm butonul Open i n fereastra care apare (gen foaie de date, ca n Excel) introducem
datele. De fapt, aceast modalitate permite i vizualizarea i modificarea datelor, la orice moment n exploatarea bazei
de date. n fereastra de mai jos se pot observa: articolul curent, indicat prin sgeata neagr i n bara de stare,
butoanele de deplasare printre liniile tabelului (un articol naintea celui curent: , articolul urmtor:
, primul articol:
, ultimul articol:
, articolul gol:
, care apare totdeauna marcat cu *) i cursorul de defilare, pentru cazul n care
sunt multe cmpuri i este necesar deplasarea stnga-dreapta (evident, ar aprea i un cursor vertical dac fereastra
nu ar conine dect o parte din liniile tabelului).

Formulare
n cadrul aplicaiei noastre, este creat un formular cu numele CURSURI, pentru introducerea datelor n alt form
dect cea tabelar. Avantajul este o interfa deosebit, care permite posibilitatea afirii unor indicaii pentru cel care
introduce datele (aceast activitate fiind semnificativ, n cazul bazelor de date mari).

Antet

Zon
de
detaliu

Subsol

n acest formular,
se observ trei
zone:

antetul;

zona
de detaliu care
conine
numele
cmpurilor
i
datele;

subsolu
l.
Att antetul
ct i subsolul nu
se modific pe
msur
ce
introducem
sau
editm
nregistrri,
coninnd,
de
regul, informaii
explicative
cu
privire la scopul
formularului i la
datele pe care

acesta le prezint.
Crearea formularului CURSURI
Efectum clic pe Formulare n fereastra Baz de date i selectm opiunea Creare formular utiliznd Expertul. n
continuare se selecteaz tabela cursuri i acionm butonul OK:

Urmeaz acum selectarea cmpurilor pe care le dorim n formular. Pentru selectarea tuturor cmpurilor (situaia
cea mai comun), realizm clic pe butonul

La pasul urmtor se selecteaz modul de aezare a datelor n formular. Posibilitile sunt: Columnar (datele unei
nregistrri sunt prezentate pe coloane), Tabular ( cmpurile sunt ordonate ca n figura de mai jos i n formular apar
mai multe linii din tabel), Datasheet (ca n Excel), Justified (o aezare a cmpurilor unei nregistrri ntre marginile
formularului) PivotTable (vizualizarea datelor detaliate sau rezumate prin aranjarea cmpurilor n filtru, rnd, coloan i
arii detaliu) i PivotChart (afiarea date vizual prin selectarea unui tip de diagram i aranjarea cmpurilor n filtru,
serie, categorie i arii date). Un formular PivotTable efectueaz calculele alese, ca sume (implicit pentru cmpurile
numerice) i numrri (implicit pentru cmpuri text), bazat pe modul n care sunt aranjate datele. De exemplu, un
formular PivotTable poate afia valorile unui cmp orizontal sau vertical i apoi calculeaz totalul rndului sau coloanei.
De asemenea, un formular PivotTable poate folosi valorile unui cmp drept titluri de rnd sau de coloane, calculnd
cantitile individuale la intersecia titlului fiecrui rnd cu fiecare coloan, iar apoi calculnd subtotaluri i totaluri
generale. De exemplu, pentru a analiza produsele vndute de fiecare angajat: se pot lista numele angajailor ca titlurile
coloanelor n partea superioar a formularului PivotTable, produsele ca titlurile rndurilor n partea de jos a formularului

PivotTable, iar suma vnzrilor calculat dup produse pentru fiecare angajat la intersecia fiecrui rnd cu fiecare
coloan. Formularul PivotChart permite reprezentarea grafic a datelor, folosind tipurile oferite de Excel: coloan, bar,
structur inelar, radial, etc.

n urmtoarea fereastr se selecteaz stilul formularului (stilul implic un fundal, un tip de font pentru date, culori,
aezare etc.):

Ultimul pas se refer la alegerea unui nume pentru formular i dialogul se ncheie cu clic pe Finish.

Un alt formular (cu numele elevi) este proiectat asemntor; la activarea sa (de exemplu, cu dublu clic) va afia,
n forma proiectat, coninutul curent al tabelei ELEVI. Iat cum se reflect corecia efectuat n cmpul coala, pentru
elevul cu numrul matricol 303 (schimbarea valorii cmpului din 26 n 28):

Vom observa n continuare cum arat acest formular n mod proiectare (aceast vedere se poate obine selectnd
formularul n fereastra Database i apoi realiznd clic pe butonul Proiect):

Fiecare component a formularului (Antet, Detaliere, Subsol) are proprieti care se pot seta prin deschiderea
meniului contextual aferent (clic dreapta pe
prezentat n continuare).

i selectarea opiunii Proprieti, care deschide meniul

Cu ajutorul instrumentelor barei Toolbox, care se afieaz automat n mod proiectare, formularului i se pot aduga
elemente grafice, numite controale:

Acestea au funcii numeroase i complexe, dar eticheta este controlul cel mai simplu de utilizat. Etichetele
afieaz textul indicat astfel au fost create antetul i subsolul formularului cursuri.
S realizm un subsol i pentru formularul elevi. Pentru aceasta, urmm etapele de mai jos:
modificm zona Subsol Formular, plasnd cursorul pe linia inferioar, pn cnd devine de forma:
apoi
tragem pn mrim zona dup dorin;

acionm butonul Label (al treilea de pe bara de mai sus) i ducem cursorul n zona creat. Forma cursorului se
schimb, devenind un simbol A precedat de o cruce. Punctul unde plasm mijlocul crucii devine colul din stnga sus al
zonei destinate etichetei;
micm cursorul spre dreapta i n jos, pn obinem dimensiunea dorit a etichetei i eliberm butonul mouseului;
n interiorul zonei etichetei editm textul dorit i, dac dorim, putem modifica proprietile etichetei (culoare de
fond, mrimea caracterelor etc.) selectnd din meniul rapid (obinut cu clic dreapta) eticheta Proprieti, ca n imaginea
urmtoare:

Aici, pentru eticheta adugat n formular s-a modificat culoarea de fundal.


Interogarea bazei de date
Scopul principal al unei baze de date este acela de a furniza utilizatorilor ei informaiile de care acetia au nevoie.
Interogarea bazei (n englez, termenul "query" desemneaz interogarea, cererea, chestionarea) nseamn adresarea
unei solicitri de informaie, pe care sistemul de gestiune a bazei de date trebuie s o rezolve i s returneze
utilizatorului rspunsul dorit. n Access, interogrile pot fi:
simple pot fi formulate pentru o singur tabel i se realizeaz:

prin vizualizarea datelor coninute n tabele (de exemplu, dorim s vedem oferta de cursuri
suplimentare i studiem tabelul CURSURI);

prin vizualizarea (parial sau integral) a coninutului tabelelor, cu ajutorul formularelor sau
rapoartelor (de exemplu, dorim s cunoatem care sunt elevii din clasele a 8-a, participani la cursuri
suplimentare);
complexe comport n general mai multe tabele i/sau cereri, ale cror date sunt extrase prin precizarea unor
criterii.
Ca n orice soft complex, aa cum este i SGBD-ul Access, o anumit sarcin se poate rezolva n mai multe
moduri. i pentru realizarea cererilor de interogare exist mai multe modaliti, dar vom prezenta n continuare
proiectarea n modul Vizualizare Proiect.
n fereastra Database, clic pe Interogri i apoi pe Creare interogare n modul Vizualizare proiect;

pe ecran apar fereastra Interogare de selectare i caseta de dialog Afiare Tabel:


o
din caseta Afiare Tabel se selecteaz tabelele i/sau cererile din care dorim s extragem date, dup care
nchidem caseta;
o
fereastra Interogare de selectare are dou zone: cea superioar, n care vedem tabelele i/sau cererile
selectate, mpreun cu legturile dintre ele i cea inferioar, numit gril de proiectare sau gril QBE (Query By
Example cerere prin exemplificare), n care se va proiecta efectiv cererea.

Cmpurile din structura unei cereri sunt de dou feluri:


Preluate. Trecerea unui cmp din tabel/cerere n linia Cmp a grilei QBE se face prin tragere de mouse.
Trecerea tuturor cmpurilor n gril se realizeaz fie cu dublu clic n bara de titlu a listei de cmpuri, clic n lista de
cmpuri (pe oricare din ele) i apoi deplasarea n grila de proiectare, fie prin deplasarea caracterului * (aflat n capul
listei de cmpuri) n gril. Aceast ultim modalitate permite definirea ulterioar a unor criterii de selecie sau de sortare.
Calculate. Pentru crearea unui cmp calculat, se selecteaz coloana n care dorim s apar valoarea calculat
i din meniul View se alege opiunea Totals, care va introduce n grila QBE linia Total; se selecteaz (n celula aflat la
intersecia liniei Total cu coloana aleas) Expresie din lista derulant i n prima linie (Cmp) se introduce formula de
calcul. De exemplu, pentru a calcula un punctaj egal cu de zece ori nota obinut la curs, formula va fi urmtoarea:
punctaj:[apreciere]*10

Iat i rezultatul execuiei cererii (se execut prin dublu clic pe pictograma sa), aa cum a fost proiectat pn n
momentul de fa:

Sortarea datelor
Ordonarea datelor ntr-o cerere se poate realiza cresctor sau descresctor, dup mai multe cmpuri numite chei
de sortare. Se realizeaz clic n celula din gril aflat la intersecia coloanei cmpului de sortare cu linia Sort i se alege
ntre Ascending (cresctor) i Descending (descresctor). Iat grila QBE a unei cereri de interogare prin care se
vizualizeaz elevii nscrii la cursurile facultative, n ordinea claselor. n cadrul unei clase, elevii apar n ordine
alfabetic. Prima cheie este de tip numeric iar a doua de tip text.

Rezultatul execuiei cererii este urmtorul:

Se observ c ordinea cmpurilor de sortare (n cazul n care sunt mai multe) influeneaz rezultatul obinut.
Selecia datelor
Pentru a selecta dintre date pe acelea care ne intereseaz la un moment dat se utilizeaz criterii de selecie.
Acestea pot fi:

Simple. Se plaseaz la intersecia coloanei cmpului pentru care formulm criteriul cu linia Criterii din grila
QBE. Principalele criterii simple sunt:
o
apartenena la un interval de valori se formuleaz cu ajutorul cuvntului rezervat BETWEEN. De exemplu,
dac ne intereseaz elevii cu note ntre 7 i 9 criteriul pentru cmpul apreciere va fi: BETWEEN 7 AND 9;
o
apartenena la o list de valori este de forma: IN (valoare1, valoare2, ). Dac dorim s vedem datele
elevilor din clasele 5, 7 i 8, criteriul pentru cmpul clasa va fi: IN (5, 7, 8);
o
utilizarea operatorilor de comparaie: <,>,<=,>=,= i <>(diferit). Dac dorim s selectm elevii cu punctaj
mai mare sau cel puin egal cu 80, criteriul pentru cmpul punctaj va fi: >=80;
o
utilizarea negaiei se realizeaz cu ajutorul operatorului NOT. Dac ne intereseaz toi elevii care nu
nva la coala 19, atunci criteriul pentru cmpul coala va fi NOT "19, Al.I.Cuza" (valoarea negat apare ntre
ghilimele deoarece cmpul este de tip text);
o
dup o dat relativ la data curent se realizeaz cu ajutorul funciei DATE( ).
Compuse. Se constituie din criterii simple, legate ntre ele prin operatorii logici AND (conjuncia) i OR
(disjuncia). n acest sens, grila QBE utilizeaz mai multe linii Criterii, iar regulile pentru construcia criteriilor compuse
sunt urmtoarele:
o
criteriile simple aflate pe aceeai linie Criterii sunt implicit conectate prin AND (deci vor fi satisfcute
simultan);
o
dac selecia valorilor unui cmp se face dup mai multe criterii simple conectate prin OR, acestea se vor
specifica pe aceeai linie. Exemplu:

o
dac selecia se face dup mai multe criterii simple aplicate unor cmpuri diferite, criteriile fiind conectate
prin OR, acestea se vor specifica pe linii diferite. Exemplu:

Operaii predefinite
Access permite realizarea unor operaii de calcul predefinite, care se pot realiza asupra unui ntreg tabel sau
asupra unui grup de nregistrri. Sunt disponibile urmtoarele operaii predefinite:
SUM calculeaz suma valorilor unui cmp;
MEDIE calculeaz media aritmetic a valorilor unui cmp;
MIN returneaz valoarea minim;
MAX returneaz valoarea maxim;
CONTOR numr valorile dintr-un cmp;
STDEV (de la Standard deviation) calculeaz abaterea medie ptratic sau variana valorilor unui cmp
(reprezint o msur a abaterii valorilor de la media lor);
VAR variana statistic a valorilor luate de un anumit cmp;
PRIM - ntoarce prima valoare din cmp;
ULTIM ntoarce ultima valoare din cmp.
Pentru realizarea unei operaii de acest gen asupra tuturor nregistrrilor tabelei se realizeaz urmtorii pai (vom
exemplifica pentru a calcula media notelor elevilor):

se creeaz o cerere care conine doar cmpurile asupra crora vor aciona operaiile de calcul;
se acioneaz View, Totals, efectul fiind introducerea n grila QBE a liniei TOTALS, care va conine pentru toate
cmpurile operaia Goup By n capul unei liste derulante;
se alege din lista derulant operaia dorit;
se execut cererea prin Query, Run i se observ rezultatul.
Iat cererea n mod proiectare i imaginea execuiei acesteia:

Pentru realizarea unei operaii predefinite asupra unui grup de nregistrri, cel puin un cmp din cerere trebuie s
conin operaia Group By, pentru a se preciza gruparea. Dac sunt prezente mai multe criterii de grupare, ordinea de
evaluare este de la stnga la dreapta. Iat o cerere care determin mediile elevilor, grupai dup cele 4 cursuri. n grila
de proiectare se observ gruparea nregistrrilor dup cmpul cod curs:

Iat i rezultatul execuiei cererii, pe setul de date utilizat pn acum:

Se observ formatul general al cmpului AvgOfapreciere (afiarea tuturor zecimalelor semnificative), iar pentru
ultima valoare rotunjirea ultimei poziii.
Rapoarte
Rapoartele (Reports) sau situaiile finale constituie prezentri ale datelor pe suport de hrtie. Aceste rapoarte au
fost folosite totdeauna, constituindu-se n documente oficiale, purttoare ale semnturilor persoanelor autorizate.
Realizarea unui raport implic prezentarea datelor dorite ntr-un format ct mai convenabil, conform cu necesitile de
informare (de exemplu pot conine totaluri, subtotaluri, grafice, diagrame). n general, datele care apar n rapoarte sunt
preluate din tabele sau din cereri. Mai ales dac datele provin din mai multe tabele se prefer realizarea mai nti a unei
cereri i apoi a raportului corespunztor. n afar de datele propriu-zise, situaiile finale mai conin:
controale;
zone de text;
cadre (pentru imagini i grafice);
etichete (pentru realizarea unui format ct mai atrgtor).
Pentru a crea un raport putem folosi instrumente wizard sau proiectarea direct, dar o metod convenabil este
(ca i n cazul formularelor) mbinarea acestor dou faciliti, astfel:
n fereastra Database se activeaz Rapoarte, apoi Creare raport utiliznd Expertul;
se selecteaz numele tabelei sau cererii care furnizeaz datele raportului;
se trece n mod proiectare (cu clic pe Design View) i se modific raportul conform dorinei proiectantului,
adugndu-se text, controale, etc.
Spre exemplificare, s construim un raport care s prezinte situaia elevilor nscrii la cursurile suplimentare n
anul curent. Elevii s fie grupai pe coli i pentru fiecare s se precizeze clasa i cursul pe care l frecventeaz.
Observm c datele cerute n raport se afl n trei tabele: ELEVI (numele, clasa, coala), REPARTIIE
(corespondena elev-curs) i CURSURI (denumirea cursului). Construim mai nti o cerere care s adune aceste date.
Iat structura sa, n mod proiectare:

Utiliznd metoda descris anterior, construim o situaie final cu ajutorul instrumentului wizard, dup care o
modificm astfel nct s se plaseze frumos pe o pagin A4, adugm un titlu, un subsol i linii separatoare ntre
grupurile de elevi aparinnd aceleiai coli. Forma Vizualizare Proiect a raportului este urmtoarea:

Zona de nceput a situaiei imprimate corespunde imaginii de mai jos:

ultimele date sunt:

iar sfritul listei conine ziua, data i numrul paginii curente (din totalul de pagini).

Se observ c structura situaiei finale include: antetul general, antetul de pagin, antetul de grup (n cazul de mai
sus, cel referitor la coal), rndul de detaliu, subsolul de pagin i subsolul de raport. Dup crearea unei situaii finale,
rezultatul poate fi vizualizat (nainte de imprimare), ceea ce permite verificarea datelor i a aspectului general al
raportului.

Ca i n cazul celorlalte obiecte, cititorul care studiaz aplicaia Access va descoperi numeroase posibiliti de a
realiza un raport.

10.2. Baz de date pentru o activitate comercial


n cadrul acestei aplicaii vom simula activitatea comercial a unei firme. Vom descrie furnizorii i produsele
achiziionate de firm, personalul firmei, clienii si comenzile pe care acetia le emit, precum i modul de transport al
produselor ctre clieni. Vom presupune c un produs, identificat prin codul su, Produs_id, este cumprat de la un
singur furnizor, pentru a putea relaiona tabelele Furnizori i Produse printr-o legtur de tip 1-n. Tot pentru simplitate,
vom considera c fiecare client emite cte o comand pentru fiecare produs, astfel c tabelele Clieni i Comanda au o
relaie 1-n, iar tabelele Comanda i Produs_comanda au o relaie 1-1.
Aplicaia este constituit din 8 tabele, avnd urmtoarele cmpuri:

1.
Ageni (Agent_id, Nume_agent, Prenume_agent, Funcie, Nscut, Angajat, Adres, Ora, JudeT,
Cod_potal, Tel_acas, notes)
2.
Categorie (Categorie_id, Categorie_nume, Descriere)
3.
Clieni (Client_id, Denumire_client, Persoana_contact, Funcie_contact, Adresa, Ora, Jude, Cod_potal,
Telefon, Max_comanda, Min_comanda, Discount)
4.
Comanda (Comanda_id, Client_id, Transportator_id, Numr_comand, Data_comand, Client_nume,
Client_adresa, Client_ora, Client_cod_potal, Discount, Data_livrrii, notes, Agent_id)
5.
Furnizori (Furnizor_id, Denumire_furnizor, Persoana_contact, Funcie_contact, Adresa, Ora, Jude,
Cos_postal, Telefon)
6.
Produs_comanda (Comand_id, Produs_id, Pret_unitar, Cantitate)
7.
Produse (Produs_id, Furnizor_id, Categorie_id, Nume_produs, Unitate_msur, Pre_unitar)
8.
Transportatori (Transportator_id, Denumire_transportator).
Acest model logic al aplicaiei evideniaz att cheile primare (subliniate cu linie continu), ct i cheile externe
(subliniate cu linie punctat).
Crearea tabelelor se poate realiza n trei moduri:

utiliznd fereastra de proiectare (Creare tabel n modul Vizualizare proiect). Este modalitatea
recomandat, pe care o vom explica n continuare.

utiliznd instrumentul Wizard (Creare tabel utiliznd Expertul). Se creeaz tabele prin alegerea unor
cmpuri standard.

prin introducerea datelor (Creare tabel prin introducere date). Aceast modalitate nu poate fi aplicat
aplicaiilor complexe, dar este util n cazul aplicaiilor foarte simple, n care avem nevoie de rapiditate n crearea
tabelelor.
Dac selectm opiunea Creare tabel n modul Vizualizare proiect, se deschide o fereastr n care se precizeaz
structura tabelului: numele cmpurilor, tipul i proprietile acestora.

Tipurile de baz din Access sunt urmtoarele:


Text. Un cmp de acest tip conine cel mult 255 caractere (implicit, lungimea este de 50). De tip text sunt
definite cmpurile care conin nume de persoane, denumiri, adrese etc.

Memo. Pot conine cel mult 64000 caractere (cu comentarii, explicaii). Cmpurile de tip Text i Memo sunt
numite alfanumerice (pot conine caractere i/sau numere). Iat exemple de valori alfanumerice (le vom delimita cu " "):
"Drago", "Mircea cel Btrn", "Oel laminat OL 50", "X4532A", "345990".
Numr. Este tipul numeric, cu mai multe subtipuri disponibile, determinate de dimensiunea cmpului:
o
Octet valori ntregi, pozitive, reprezentate pe un octet;
o
ntreg - valori ntregi, pozitive i negative, pe doi octei;
o
ntreg lung valori ntregi, pozitive i negative, pe patru octei;
o
Simpl precizie valori reale, cu cel mult 7 zecimale, pozitive i negative, pe patru octei;
o
Dubl precizie - valori reale, cu cel mult 15 zecimale, pozitive i negative, pe opt octei;
o
ID reproducere identificator global unic, pe 16 octei;
o
Zecimal - valori ntregi, pozitive i negative, pe 16 octei.
Dat/Or. Este un tip special creat pentru date calendaristice sau de tip or, ntruct aceste valori se ntlnesc
adesea n documente, nregistrri. Permite, de asemenea, diferite formate de afiare, de exemplu: Sunday, August 11,
2003 i 8/11/03 reprezint data de 11 august 2003, duminic iar 5:00:00 PM i 17:00 reprezint ora 3 dup amiaz.
Moned. Acest format fix, cu patru zecimale, permite lucrul cu valori monetare.
AutoNumerotare. Cmpurile de acest tip sunt completate n mod automat pentru fiecare nregistrare adugat
ntr-o tabel, fie cresctor, fie cu valori aleatoare (ntmpltoare), dup cum alege utilizatorul.
Da/Nu. Conin de fapt valori logice, reprezentate prin 1 (pentru Yes, True adevrat) i prin 0 (pentru No,
False fals).
Observaie. Cmpurile de tip: Numr, AutoNumerotare, Da/Nu i Moned sunt de tip numeric,
deci conin numere reprezentnd: cantiti, coduri, sume de bani, valori logice de adevr. Iat exemple
de valori numerice: 23.90, 6785, 1. Vom vedea c o dat numeric poate fi afiat n formate diferite.
Obiect OLE. Reprezint obiecte mari, de tipul imaginilor, desenelor, fiierelor audio.
Hyperlink. Conine un text ce este o adres a unei pagini Web.
Expert cutare. Creeaz cmpuri care permit alegerea de valori din cadrul unor structuri (tabele, liste), deci
permit legarea informaiilor.
Iat fereastra de proiectare a tabelului Ageni:

Observm cheia primar Agent_id i proprietile cmpului Nume_agent. Dup realizarea tuturor tabelelor,
relaiile se construiesc astfel: se acioneaz butonul Relationships de pe bara Database, n fereastra Afiare Tabel se
includ toate tabelele deja create, prin selectarea lor i apoi punctarea repetat a butonului Adugare:

Apoi se realizeaz fiecare relaie (asociere), prin glisare a mouse-ului de la tabelul care conine cheia primar,
ctre tabelul care conine cheia extern. La fiecare relaie, va aprea cte o fereastr de editare, unde se puncteaz
opiunea Impunere integritate referenial, pentru a proteja baza de date la erori cum ar fi urmtoarea: exist produse
dintr-o categorie care nu este nc definit.

Imaginea final a ferestrei Relaii este prezentat n continuare.

Introducerea articolelor n tabele se realizeaz astfel: n fereastra Baz de date se efectueaz dublu-clic pe
numele tabelului (de exemplu, Furnizori) i se introduc valorile cmpurilor din fereastra care se deschide. n imaginea
urmtoare, se observ cum tabelul Furnizori are 15 articole. La fel se introduc articole n toate tabelele, n ordinea
indicat de relaiile deja definite. Dac se produc erori din punctul de vedere al integritii refereniale, acestea sunt
semnalate printr-un mesaj care cere corectarea cmpului respectiv.

O metod alternativ pentru introducerea de articole ntr-un tabel este realizarea unui formular, care s ofere o
alt prezentare a cmpurilor. Un formular creat n modul Vizualizare proiect este individualizat, deoarece permite
intervenia programatorului la un nivel nalt. n continuare vom prezenta crearea n acest mod a formularului pentru
introducerea comenzilor.
n fereastra Baz de date se selecteaz opiunea Formulare i apoi Creare formular n modul Vizualizare proiect.
Dup apariia ferestrei de editare a formularului, prin clic dreapta pe titlul ferestrei deschidem un meniu contextual din
care alegem ultima opiune: Proprieti.

Fereastra Formular permite alegerea tabelului n care


vom introduce date, prin clic de eticheta Date i derularea listei
de opiuni posibile pentru Surs nregistrri. Alegem tabelul
Comanda i observm c apare o nou fereastr care conine
lista cmpurilor acestuia:

Prin tragerea cmpurilor din aceast fereastr (cu


ajutorul mouse-ului) pn n zona Detaliu a formularului, fixm
poziiile lor pe gril.
Fiecare element al formularului este alctuit dintr-un text explicativ, respectiv numele cmpului i o zon de
introducere a valorii cmpului respectiv. n figura de mai jos este selectat elementul corespunztor numrului comenzii.
Deplasarea relativ a componentelor se realizeaz prin tragere de colul stnga-sus, evideniat. Deplasarea integral se
face prin tragere de margine.

Pentru a obine o aliniere, se pot selecta mai multe elemente, prin


meninerea apsat a tastei Shift i tragere de mouse. Apoi se deschide
meniul contextual ataat prin clic dreapta pe unul dintre elementele
selectate. Din acesta alegem opiunea Align, Stnga. Prin clic dreapta
pe gril putem alege opiunea Proprieti, care permite selectarea din
eticheta Format a unei culori a grilei (opiunea Culoare fundal).
Din acelai meniu putem mbogi formularul prin adugarea unui
antet/subsol ale paginii sau ale ntregului formular (Page Header/Footer,
Form Header/Footer).
ntroducerea datei i a orei curente se face prin alegerea din meniul Insert a opiunii Date and Time.
Introducerea numrului curent de pagin se face din acelai meniu, opiunea Page numbers.
La subsolul formularului, introducem meniunea de responsabilitate, sub forma unei etichete care conine numele
persoanei care a realizat formularul.
Imaginea urmtoare prezint formularul, n modul proiectare.

Acest formular, folosit la introducerea datelor, are urmtorul aspect:

S presupunem acum c patronatul dorete o situaie a angajailor, n care s se specifice, grupat pe funcii:
numele complet al agenilor,
data angajrii,
oraul de domiciliu i
numrul lor de telefon.
Pentru a rezolva aceast cerin, se va edita o interogare: n fereastra Baz de date se selecteaz Interogri i se
alege opiunea Creare interogare n modul Vizualizare proiect. Se adaug apoi tabela Ageni, iar n gril se introduc
cmpurile preluate:
Nume_agent
Prenume_agent
Functie
Angajat
Oras
Tel_acasa.
Pentru a realiza cererea, pe rndul Sortare se selecteaz Ascendent la cmpurile Functie i Angajat.
Interogarea se salveaz cu numele Agenti Query i se execut prin dublu clic pe numele su n fereastra Baz de date.

Iat rezultatul execuiei interogrii Agenti Query:

Rapoartele sunt situaii finale, care nu mai permit intervenii ale operatorului. S presupunem c se dorete
realizarea unui raport care s conin agenii firmei, grupai dup oraele de reedin. n fereastra Baz de date se
selecteaz Rapoarte i se alege opiunea Creare raport utiliznd Expertul. n prima fereastr de dialog se aleg
cmpurile care se includ n raport, prin transfer din stnga n dreapta cu ajutorul butoanelor
transfer cmpul curent, iar cel de-al doilea transfer toate cmpurile n viitorul raport.

. Primul buton

Urmeaz adugarea nivelurilor de grupare a articolelor, n cazul nostru este necesar gruparea dup cmpul
Ora, care se alege prin clic pe butonul

Pentru o aezare plcut a articolelor n raport, se alege o sortare a agenilor din fiecare grup, cresctoare dup
cmpul Nume_agent.

Dintre modurile de prezentare, alegem Block, stilul Comun:

n final, alegem numele raportului: Ageni. Observm c aplicaia poate manevra obiecte diferite (tabel i raport)
cu acelai nume.

Dup salvare, executm raportul prin dublu-clic pe numele su din fereastra Baz de date. Imaginea urmtoare
prezint o parte din raportul Ageni.

10.3. Baz de date pentru gestiunea unui parc auto


Aceast aplicaie propune realizarea unei baze de date coninnd informaii despre mainile dintr-un garaj. Pentru
fiecare main se vor memora informaii cum ar fi:
- tipul mainii;
- destinaia: transport de persoane sau marf;
- firma productoare;
- data fabricaiei;
- capacitatea cilindric;
- numr km. parcuri;
- consumul specific;
- data achiziionrii.;
Aplicaia va fi dotat cu faciliti referitoare la validarea datelor introduse. Cnd numrul opiunilor (pentru valorile
unei anumite date) este mic, se vor pune la dispoziia utilizatorilor opiunile din care acetia s aleag. Vor fi prevzute
principalele operaii efectuate asupra datelor n bazele de date:
- adugarea de noi date;
- modificarea datelor existente;
- tergerea datelor;
- afiarea datelor pe ecran i la imprimant.
Tipul datelor necesar a fi stocate sugereaz un inventar al garajului la un moment dat. Mainile garajului au
ntre ele elemente comune (de exemplu: pot fi de aceeai marc i tip sau culoare), dup cum la momentul executrii
inventarului unele maini pot fi plecate n curs. De asemenea, pot aprea maini noi n garaj. Exist date ce
evolueaz datorit unor tranzacii neevideniate (km parcuri). Modelul informatic al unui garaj real este mai complex
dect cel sugerat aici. n aceast abordare, nu considerm modificarea tabelelor, adic nu vom modela situaii de genul:
- apariia unor maini noi;
- casarea unor maini;
- plecarea n curs a unor maini;
- vopsirea (n alt culoare) a unor maini;
- schimbarea numrului de circulaie.
Singurul cmp care se modific natural, ca urmare a efecturii curselor i nu ca urmare a unor greeli sau
evenimente excepionale, este numrul de km parcuri. Formula de actualizare a acestui cmp este:
n

[numar km parcursi] = [nr km initiali] + [nr km cursa]i


i =1

Tabelul urmtor prezint datele ce vor trebui memorate:


Cmp
Tipul mainii
Destinaie: transport de persoane sau

Entitate
B
B

Evolutiv

marf
Firma productoare
Data fabricaiei
Capacitatea cilindric
Numr km. parcuri
Consumul specific
Data achiziionrii

A
C
B
D
B
C

Da

De aici rezult primele patru entiti:


firma productoare de maini;
tipul (marca) mainii;
maina propriu-zis;
cursa;
Vom observa c, la modul general, asimilnd cursa cu un convoi auto omogen, o curs poate avea mai multe
maini i mai muli oferi.
Cerinele problemei specific validarea datelor introduse. Validarea este un instrument informatic ce mpiedic
apariia unor greeli de introducere simple ct i a unor inconsistene greu de verificat fr instrumente informatice
(exemplu: coduri unice atribuite repetat). Bazele de date relaionale s-au ndeprtat puternic de modelul validrii batch,
care se aplic post-factum pe loturi de date, deoarece au introdus integritatea referenial bazat pe chei unice, chei

strine i verificri simple (numerice, logice) nglobate direct n baza de date i nu n program. Validrile bazate pe
integritatea referenial sunt ns adeseori completate cu validri-program pe formularele de introducere.
n cele ce urmeaz, vom nelege garajul ca o unitate (agent economic) ce dispune de maini cu care efectueaz
curse. Aceste curse determin tranzacii, stocate fiecare din ele n baza de date. Ca urmare a curselor, se modific
numrul de km. parcuri de fiecare main. Iat cum arat fereastra Relationships a bazei de date.

Cu excepia colului din stnga-jos, unde sunt specificate dou interogri necesare pentru calculul numrului de
km. parcuri, toate celelalte sunt tabele, avnd relaii ntre ele.
n plus fat de tabele definite deja, n procesul de analiz s-au considerat necesare i:

oferi;

culori (ale mainilor);

tip transport;

date (adic tranzaciile curselor).


Cursele sunt cele care determin tranzaciile. oferii fac parte integrant din resursele principale ale curselor,
mpreun cu mainile. Culorile nu apar la fel de importante, ns n proiectare unei baze de date amnuntele sunt
semnificative. Am disociat tip transport de marca mainii, deoarece reprezint o caracteristic comun mai multor
maini, ca i culorile mainilor (pot fi mai multe astfel de caracteristici comune: cauciucuri, tip carburant, ulei, practic
lista poate fi mare, dar ne vom limita la acestea dou). Datele (tranzaciile curselor) construiesc numrul de km. parcuri
ai fiecrei maini.
Relaiile sunt toate de tipul 1 - n, avnd fiecare coduri interne ale bazei de date cu cheie unic pe partea 1 a
relaiilor (reprezentat cu bold). Tabelul Date are cheie unic pe toate cele 3 cmpuri concatenate, pentru asigurarea
unei normalizri suficiente i protecie la duplicate incorecte. Acest lucru se realizeaz astfel: dup definirea numelui
cmpurilor, a tipului i descrierii lor, se selecteaz cu butonul Shift inut apsat toate cmpurile tabelului i se
efectueaz clic pe butonul Primary Key
din bara de instrumente Table Design. Selecia cmpurilor se face prin
tragere de mouse, n faa numelui cmpurilor, pe zona gri. Rezultatul este prezentat n imaginea urmtoare.

Urmtoarea imagine prezint fereastra Baz de date a aplicaiei, cu obiectele de tip tabel.

Paii necesari realizrii aplicaiei sunt urmtorii:


1. Proiectarea pe hrtie a structurilor de date, conform modelului entitate-relaie;
2. Crearea n access a tabelelor (cmpuri, indeci, chei unice, validri interne), adic a celor 8 tabele din structura
anterioar;
3. Legarea tabelelor, prin relaii, asigurnd integritile refereniale cu cheia strin (secundar);
4. Proiectarea prii vizuale a formularelor (fr elemente de programare VBA access);
5. Adugarea de cod de validare vba pe cmpurile de introducere date ale formelor;
6. Legarea (dup o logica simpl) a formularelor ntre ele, prin cod vba;
7. Crearea rapoartelor i conectarea prin diverse controale;
8. Crearea de interogri nglobate pentru aflarea numrului de km parcuri.
S-au folosit controale vizuale: cmpuri text/numerice/date calendaristice, combo, liste, butoane, control-tab. S-au
folosit att forme simple, ct i mai complexe (tab-uri, master-detail), pentru care Access ofer suport puternic i

accesibil. S-au folosit controalele de navigare implicite ale Access. Toate cheile unice sunt pe cmpuri de tip
Autonumerotare (secvene). Urmtoarea imagine prezint fereastra Baz de date a aplicaiei, cu obiectele de tip
formular.

Formularul Startup se autolanseaz. Codul Visual Basic este urmtorul


Option Compare Database
Private Sub Detail_Click()
End Sub
Private Sub Form_Open(Cancel As Integer)
DoCmd.SelectObject acForm, "Startup", True
DoCmd.Minimize
DoCmd.Hourglass False
End Sub
Private Sub Start_Click()
On Error GoTo Err_Start_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Curse"
DoCmd.Close
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Start_Click:
Exit Sub
Err_Start_Click:
MsgBox Err.Description
Resume Exit_Start_Click
End Sub
Imaginea formularului care se deschide automat la lansarea aplicaiei este urmtoarea:

Dup clic pe butonul


, acest formular lanseaz formularul Curse, care este practic cel mai complex formular
al aplicaiei. n continuare sunt oferite trei imagini ale acestui formular, pentru a prezenta respectiv: resursele cursei,
resursele pentru toate cursele i distana total parcurs.

Schema obiectelor este urmtoarea:

Formular

Curse

Cod Cursa

Distanta (km)

Data Start

Note

Data Sfarsit
Resursele
Cursei

Grid
Grid R/W
R/W
(soferi,masini)
(soferi,masini)

Forma Soferi
Forma Masini

Buton soferi
Buton masini
Buton Preview
Buton Listare

Raport: Curse

Buton Adaugare
Buton Stergere

Resursele
tururor
curselor

Grid
Grid R/O
R/O
(soferi,masini-total)
(soferi,masini-total)

Distanta Parcursa
Totala

Grid
Grid R/O
R/O
(distante
(distante pe
pe masini)
masini)

Observaii:
- sgeile groase deschid prin dublu clic (pe grid) opiunile respective;
- sgeile groase punctate deschid prin clic opiunile respective.
Codul formularului Curse este urmtorul:
Option Compare Database
Private Sub AddSofer_Click()
On Error GoTo Err_AddSofer_Click
DoCmd.GoToRecord , , acNewRec
Exit_AddSofer_Click:
Exit Sub
Err_AddSofer_Click:
MsgBox Err.Description
Resume Exit_AddSofer_Click
End Sub
Private Sub Data_Sfarsit_Exit(Cancel As Integer)
On Error GoTo Err_Data_Sfarsit_Exit
If IsNull(Me![Data Sfarsit]) Then
MsgBox "Completati Data Sfarsit"
Cancel = -1
Else
If Not IsNull(Me![Data Start]) Then
If Me![Data Start] > Me![Data Sfarsit] Then
MsgBox "Data de sfarsit nu poate fi inaintea datei de start"
Cancel = -1
End If
End If
End If

Exit_Data_Sfarsit_Exit:
Exit Sub
Err_Data_Sfarsit_Exit:
MsgBox Err.Description
Resume Exit_Data_Sfarsit_Exit
End Sub
Private Sub Data_Start_Exit(Cancel As Integer)
On Error GoTo Err_Data_Start_Exit
If IsNull(Me![Data Start]) Then
MsgBox "Completati Data Start"
Cancel = -1
Else
If Not IsNull(Me![Data Sfarsit]) Then
If Me![Data Start] > Me![Data Sfarsit] Then
MsgBox "Data de sfarsit nu poate fi inaintea datei de start"
Cancel = -1
End If
End If
End If
Exit_Data_Start_Exit:
Exit Sub
Err_Data_Start_Exit:
MsgBox Err.Description
Resume Exit_Data_Start_Exit
End Sub
Private Sub DeleteBtn_Click()
On Error GoTo Err_DeleteBtn_Click
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
Exit_DeleteBtn_Click:
Exit Sub
Err_DeleteBtn_Click:
MsgBox Err.Description
Resume Exit_DeleteBtn_Click
End Sub
Private Sub Distanta_Exit(Cancel As Integer)
On Error GoTo Err_Distanta_Exit
If IsNull(Me![Distanta]) Or Me![Distanta] = 0 Then
MsgBox "Distanta cursei trebuie sa fie mai mare ca zero"
Cancel = -1
End If
DoCmd.Requery
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
[Note].SetFocus
Exit_Distanta_Exit:
Exit Sub
Err_Distanta_Exit:
MsgBox Err.Description
Resume Exit_Distanta_Exit
End Sub
Private Sub Open_Soferi_Click()
On Error GoTo Err_Open_Soferi_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Soferi"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Open_Soferi_Click:
Exit Sub
Err_Open_Soferi_Click:
MsgBox Err.Description
Resume Exit_Open_Soferi_Click
End Sub
Private Sub Open_Masini_Click()
On Error GoTo Err_Open_Masini_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Masini"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Open_Masini_Click:
Exit Sub
Err_Open_Masini_Click:
MsgBox Err.Description
Resume Exit_Open_Masini_Click
End Sub
Private Sub TabCtl10_Change()
On Error GoTo Err_TabCtl10_Change
DoCmd.Requery
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
Exit_TabCtl10_Change:
Exit Sub
Err_TabCtl10_Change:
MsgBox Err.Description
Resume Exit_TabCtl10_Change
End Sub
Private Sub PreviewBtn_Click()
On Error GoTo Err_PreviewBtn_Click
Dim stDocName As String
stDocName = "Curse"
DoCmd.OpenReport stDocName, acPreview
Exit_PreviewBtn_Click:
Exit Sub
Err_PreviewBtn_Click:
MsgBox Err.Description
Resume Exit_PreviewBtn_Click
End Sub
Private Sub PrintBtn_Click()
On Error GoTo Err_PrintBtn_Click
Dim stDocName As String
stDocName = "Curse"
DoCmd.OpenReport stDocName, acNormal
Exit_PrintBtn_Click:
Exit Sub
Err_PrintBtn_Click:
MsgBox Err.Description
Resume Exit_PrintBtn_Click
End Sub

Formularul Maini permite vizualizarea datelor i introducerea de noi articole n baza de date.

Butonul

acionat cu dublu clic deschide forma de editare/adugare item list. Butonul

vizualizarea unui raport asupra mainilor. Butonul


tergerea unui maini din baza noastr de date.

permite tiprirea acestui raport, iar butonul

Formularul Tip_Transport este mai simplu:

Codul VBA al acestui formular este urmtorul:


Option Compare Database
Private Sub Form_Load()
If Me.OpenArgs = "GotoNew" And Not IsNull([Cod Tip Transport]) Then
DoCmd.DoMenuItem acFormBar, 3, 0, , acMenuVer70
End If

permite
permite

End Sub
Private Sub SaveBtn_Click()
On Error GoTo Err_SaveBtn_Click
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Exit_SaveBtn_Click:
Exit Sub
Err_SaveBtn_Click:
MsgBox Err.Description
Resume Exit_SaveBtn_Click
End Sub
Private Sub DelBtn_Click()
On Error GoTo Err_DelBtn_Click
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
Exit_DelBtn_Click:
Exit Sub
Err_DelBtn_Click:
MsgBox Err.Description
Resume Exit_DelBtn_Click
End Sub
Private Sub ExitBtn_Click()
On Error GoTo Err_ExitBtn_Click
DoCmd.Close
Exit_ExitBtn_Click:
Exit Sub
Err_ExitBtn_Click:
MsgBox Err.Description
Resume Exit_ExitBtn_Click
End Sub
Dintre rapoartele ce se pot realiza n cadrul aceastei aplicaii, prezentm Curse i Tip main:

Interogrile Distane i Distante Query sunt prezentate n continuare.


Fereastra interogrii Distane presupune adugarea tabelelor Date i Curse, iar n grila QBE a cmpurilor Cod
Identificare Masina, Cod Cursa din tabela Date i a cmpului Distana din tabelul Curse.

Comanda SQL corespunztoare interogrii este:


SELECT DISTINCT Date.[Cod Identificare Masina], Date.[Cod Cursa], Curse.Distanta
FROM Curse INNER JOIN [Date] ON Curse.[Cod Cursa]=Date.[Cod Cursa];
Aceast comand este vizibil dac din meniul View se alege opiunea SQL View.

Interogarea Distante Query necesit adugarea tabelelor Masini i Distante, iar n gril se includ cmpurile Cod
Identificare Masina, Numr Main, Nr Km Iniiali din tabela Maini i cmpul calculat Distane Parcurse, aflat pe baza
valorilor cmpului Distana din tabela Distane. n plus, se afieaz articolele sortate ascendent dup primul cmp al
interogrii.

Comanda SQL aferent acestei interogri este:


SELECT DISTINCTROW Masini.[Cod Identificare Masina], Masini.[Numar Masina],
Masini.[Nr Km Initiali], Sum(Distante.Distanta) AS [Distante Parcurse]
FROM Masini
LEFT JOIN Distante ON Masini.[Cod Identificare Masina] = Distante.[Cod Identificare Masina]
GROUP BY Masini.[Cod Identificare Masina], Masini.[Numar Masina], Masini.[Nr Km Initiali]
ORDER BY Masini.[Cod Identificare Masina];
Funciile aplicaiei
Aplicaia Garaj asigur gestiunea operativ a principalelor resurse ale unui garaj (privit ca un agent economic),
care efectueaz curse cu maini i oferi. Fiecare curs este memorat individual:
- data start a cursei;
- data sfrit a cursei;
- distana cursei;
- note despre curs;
- maini n curs (pot fi mai multe ntr-o curs);
- oferi n curs (pot fi mai muli ntr-o curs).
Se pot aduga resurse (maini, oferi) la garaj. Se pot terge doar cele complet nefolosite. Pot exista mai multe
maini de acelai tip n garaj. Cursele determina tranzaciile curselor:
Tranzacie=(cod curs, cod main, cod ofer).
Aplicaia este scris n Microsoft Access 2000, constnd dintr-un fiier Garaj_lg.mdb (conform paradigmei Access,
acesta conine tabele, relaiile ntre tabele, formulare, rapoarte, interogri, codul VBA). Pentru introducerea datelor se
folosesc formulare cu funcii de validare (care ghideaz utilizatorul).
Funciile aplicaiei sunt cele generale ale unei aplicaii de baze de date, dar i specifice. Pe scurt, aplicaia Garaj
memoreaz utilizarea n curse a resurselor (maini, oferi) pentru o anumit perioad de timp, furniznd un punct de
vedere raional asupra gradului de utilizare a acestor resurse, ct i asupra distanelor parcurse sau planificarea
consumului de carburant pentru curse. Funcia principal este aceea c ofer managementului garajului suport att
pentru deciziile operative, ct i pentru planificare i pentru control, avnd n centrul ateniei cursele auto.
Toate intrrile/ieirile sunt conforme cu schema:
Utilizator Aplicaie Microsoft Access Sistem de operare PC hard disc PC
monitor PC

imprimant
Elementele vizuale (formulare i rapoarte) ale aplicaiei au fost deja prezentate. Formularul autoexecutabil Startup
determin lansarea formularului Curse (ecranul principal al aplicaiei). Gridul Resursele cursei este manevrabil cu
instrumente implicite (tastele Insert, Delete, Escape) la nivel de rnd, pe care se face i validarea. Dublu clic pe
cmpurile Maini, oferi ale grid-ului din Resursele cursei lanseaz formularele Maini/oferi (ceea ce se poate face i
cu butoanele respective).
n aplicaie, simbolul
editare).

este alturat unei liste ce ramific programul spre forme de introducere date (sau

Posibiliti de modernizare/dezvoltare a aplicaiei


Avnd n vedere c este vorba de o aplicaie simpl, posibilitile de modernizare/dezvoltare sunt vaste:
adugarea de validri suplimentare att pe baza de date propriu-zis, ct i pe formulare;
adugarea ca tranzacii noi a celor determinate de cumprarea/vnzarea unor maini din garaj;
adugarea ca tranzacii a consumului efectiv de combustibil (curse, maini);
adugarea diagramelor de planificare a resurselor garajului;
adugarea unor rapoarte de consum de combustibil;
crearea unei aplicaii mono-formular (formularele multiple pot fi obositoare);
adugarea suportului tranzacional multi-user;
trecerea la modelul client/server.

10.4. Baz de date pentru contabilitatea TVA


Aplicaia Access prezentat n acest paragraf a fost realizat n scopul automatizrii contabilitii TVA din cadrul
unei societti comerciale, pe care s o numim, fictiv, SC ADES SA. Aplicaia urmrete eficientizarea activitii
contabile, a intrrilor i a ieirilor de mrfuri cu documentele aferente acestei activiti.
Societatea comercial ADES SRL are ca obiect principal de activitate comerul cu ridicata al mrfurilor alimentare.
Se dorete, ca n baza evidenelor corespunztoare facturilor de intrri i ieiri s se realizeze rapoartele jurnal de
cumprare i vnzare pentru luna decembrie 2004; din acestea se extrag situaiile referitoare la TVA-ul deductibil i
TVA-ul colectat, din care s rezulte TVA-ul de plat sau TVA-ul de recuperat de la bugetul de stat.
Nivelul (modelul) conceptual
Nivelul conceptual este nivelul central care reflect datele structurate astfel nct acestea s poat fi preluate i
prelucrate cu ajutorul unui SGBD.
Schema conceptual st la baza modelului conceptual care va permite definirea proprietilor elementare ale
obiectelor care intereseaz n cadrul SC ADES SA, gruparea acestora, n funcie de criterii de omogenitate stabilite, n
scopul descrierii obiectelor lumii reale i a relaiilor dintre ele. Sunt definite regulile de care trebuie s se in seama n
manevrarea datelor existente. Pe baza regulilor de gestiune se stabilesc cardinaliti sau conectiviti ntre realizrile
atributelor din entiti i cele ale proprietilor din asocieri (corespondene). Acestea exprim maniera de participare a
valorilor atributelor din entiti la fiecare apariie de valori din asocieri. Putem vorbi despre o conectivitate minim (0 sau
1) i una maxim (1 sau n). Vom utiliza modelul entitate asociere.
n urma analizei problemei rezult urmtoarele entiti, care sunt modelate de tabele:
t_soc, t_furn, t_fact_furn, t_fact_furn_prod, t_client, t_fact_client, t_fact_client_prod.
Identificarea corespondenelor ntre aceste entiti este urmtoarea:
t_furn cu t_fact_furn - un furnizor poate emite de la 1 la n facturi, rezulta o coresponden EMITE;
t_fact_furn cu t_fact_furn_prod - este o relaie de la 1 la n, unei facturi i corespund una sau mai multe
nregistrri din tabela t_fact_furn_prod, rezult deci o coresponden LINIE FACTURA - PRODUSE FURNIZOR;
t_client cu t_fact_client, se emite factura ctre clieni, este o relaie de 1 la n, corespondena este
RECEPTIE;
t_fact_client cu t_fact_client_prod, relaia este de 1 la n, corespondena este LINIE FACTURA PRODUSE CLIENT.
Stabilirea cardinalitilor
Corespondena EMITE
a) dinspre entitatea furnizor (1, n)
- un furnizor emite cel puin o factur (cardinalitate 1)
- un furnizor poate emite mai multe facturi (cardinalitate n)
b) dinspre entitatea factur (1, 1)
- factura este emis de cel puin i de cel mult un furnizor (cardinalitate 1, 1)
Corespondena LINIE FACTURA PRODUSE FURNIZOR
a) dinspre entitatea factura (1, n)
- factura conine cel puin un produs (cardinalitate 1)
- factura poate conine mai multe produse (cardinalitate n)
b) dinspre entitatea produse (1, n)
- un produs este inclus n cel puin o factur (cardinalitate 1)
- un produs poate fi inclus n mai multe facturi (cardinalitate n)
Corespondena RECEPTIE
a) dinspre entitatea client (1, n)
- un client primete cel puin o factur (cardinalitate 1)
- un client poate primi mai multe facturi (cardinalitate n)
b) dinspre entitatea factura (1, 1)
- factura este recepionat de cel puin i de cel mult un client (cardinalitate 1,1)

Corespondena LINIE FACTURA - PRODUSE CLIENT


a) dinspre entitatea factur (1, n)
- factura conine cel puin un produs (cardinalitate 1)
- factura poate conine mai multe produse (cardinalitate n)
b) dinspre entitatea produse (1, n)
- un produs este inclus n cel puin o factur (cardinalitate 1)
- un produs poate fi inclus n mai multe facturi (cardinalitate n).
Nivelul logic sau modelul relaional al datelor
Modelul logic al datelor este reprezentat de urmtoarea colecie de tabele:
t_soc (id-soc, denumire, CUI, judet, localit, strada, cod_postal, sector, telefon, administrator, banca,
cont_bancar)
t_furnizor (id-furn, cui, denumire, sediu, telefon)
t_fact_furn (id-fact, id_furn, nr_fact, data, cota_tva)
t_fact_furn_prod (id-fact, nr_crt, explicatie, cant, pret_fara_tva)
t_client (id-client, cui, denumire, sediu, telefon)
t_fact_client (id-fact, id_client, nr_fact, data, cota_tva)
t_fact_client_prod (id-fact, nr_crt, explicatie, cant, pret_fara_tva)
n reprezentarea de mai sus, atributele subliniate cu linie continu caracterizeaz n mod unic realizrile de
entitate (un identificator de societate este specific unei societi i numai uneia, aceeai proprietate este valabil pentru
identificatorul unui furnizor, fiecare furnizor are un identificator de furnizor).
Cmpurile subliniate cu linie punctat au un rol de legtur, modeleaz relaiile ntre entitile identificate n faza
de analiz. Aceste cmpuri sunt cheile secundare sau externe (de exemplu, id_furn pentru tabela t_fact_furn, id_client
pentru tabela t_fact_client).
Nivelul intern sau modelul fizic al datelor
Nivelul intern (modelul fizic) este cel ce corespunde structurii n care sunt stocate datele n interiorul calculatorului.
Sunt specificate tabelele (fiierele) care le conin (nume, organizare, localizare, etc.), componentele fiecrui fiier
(lungime, cmpuri), cile de acces la componentele tabelelor (indeci, relaii, legturi ntre tabele).
Relaii ntre tabele
Pentru eficientizarea bazei de date este necesar separarea datelor n mai multe tabele, fiecare avnd o tem
bine definit. Prin aceast separare se evit redundana. Tabelele astfel rezultate se relaioneaz, adic se leag prin
relaii.
n figura urmtoare se poate observa fereastra de relaii a bazei de date.

Primul pas n stabilirea relaiilor ntre tabelele bazei de date const n alegerea tipului de relaie folosit: n aceast
aplicaie, toate cele patru relaii sunt de tipul 1 - n. Urmeaz realizarea acestor relaii: se deschide fereastra Relaii i se
adaug toate tabelele; apoi se trage cu ajutorul mouse-ului cmpul din prima tabel ctre cmpul corespondent din cea
de-a doua tabel; la deschiderea ferestrei Editare relaii se bifeaz opiunile Impunere integritate referenial,
Actualizare n cascad cmpuri corelate, tergere n cascad cmpuri corelate.

Formulare

Formularele acestei aplicaii ofer o interfa atractiv pentru vizualizarea sau introducerea datelor din tabele. Prin
faptul c urmresc introducerea sau modificarea datelor din tabele, dup anumite reguli stricte, impuse de programator,
permit eliminarea erorilor provocate de utilizatori la manevrarea datelor.
n cadrul acestei aplicaii formularele ndeplinesc funcii de:

introducere a datelor, formularele fiind create pentru fiecare tabel, n scopul introducerii datelor n alt
form dect cea tabelar, crendu-se o interfa deosebit;
afiare a datelor ntr-o form dorit de utilizator, n scopul consultrii acestora;
editare a datelor, datele afiate n cadrul formularelor pot fi modificate sau terse.
Aplicaia conine urmtoarele formulare :
1. Formularul principal, n care sunt evideniate funciile acestei aplicaii:

2. Formularul cu datele de identificare ale societii:

3. Formularul cu datele despre furnizorii de produse:

4. Formularul ce conine facturile emise de furnizorii societii ADES SA, cu produsele achiziionate de la acetia:

5. Formularul cu datele de identificare ale clienilor:

6. Formularul ce conine facturile emise clienilor de ctre SC ADES SA, cu produsele vndute acestora:

7. Subformular ce conine facturile emise de furnizori cu produsele aferente achiziionate de SC ADES SA :

8. Subformular ce conine facturile emise clienilor de societate:

Interogri
Interogrile sunt realizate pentru extragerea datelor i afiarea organizat a acestora n diferite modaliti
necesare utilizatorilor. Interogrile realizate n cadrul acestei aplicaii sunt complexe, utilizndu-se mai multe tabele, din
care datele sunt extrase prin precizarea unor criterii.
Pentru realizarea interogrilor s-a ales lucrul n modul Proiectare:
n fereastra Baz de date, clic pe Interogri i apoi pe Nou;
apare caseta de dialog Interogare nou, n care se alege Vizualizare proiect;
din caseta AfiareTabel am selectat tabelele i/sau cererile din care am extras date.
Fereastra Interogare de selectare are dou zone: cea superioar, n care vedem tabelele i/sau cererile selectate,
mpreun cu legturile dintre ele i cea inferioar, numit grila de proiectare, n care s-a proiectat efectiv cererea.
Dintre interogrile construite, vom prezenta modul de realizare pentru q_fact_client_prod, care afieaz
produsele facturate clienilor i valorile TVA aferente acestora. n caseta Afiare Tabel se aleg cele dou tabele care vor
participa la interogare: t_fact_client_prod i t_fact_client. n gril se completeaz, pe coloane, cmpurile pe care le
dorim afiate, mai nti cele preluate din tabele, iar ultimele dou sunt cmpuri calculate cu formulele: val_fara_tva =
[pret_fara_tva] * [cant] i val_tva = [cant] * [pret_fara_tva] * [cota_tva] / 100.

La execuia cererii, se obin urmtoarele date:

Ce-a de a doua interogare pe care o vom prezenta folosete date din 2 tabele i dou interogri anterioare, pentru
a rspunde la ntrebarea: Care este valoarea fr TVA i valoarea TVA pe fiecare factur? Interogarea q_jv_19
calculeaz, pentru fiecare factur, valoarea fr TVA i valoarea TVA, dac valoarea din cmpul cota_tva este 19, iar
interogarea q_jv_9 calculeaz pentru fiecare factur valoarea fr TVA i valoarea TVA, dac valoarea din cmpul
cota_tva este 9. Dup includerea n fereastr a celor patru obiecte care vor participa la interogare, se trece la
completarea grilei. Cmpurile preluate se aleg din tabele sau din interogri, iar singurul cmp calculat se obine prin
adunarea bazei de impozitare cu valoarea TVA.

Rapoarte
Rapoartele sau situaiile finale permit extragerea datelor din tabele, constituind prezentri ale datelor pe suport de
hrtie.
Raportul este un obiect al bazei de date asemntor cu interogarea - din punct de vedere al structurii. Diferena
fa de interogri const n aceea c raportul nu este destinat afirii pe ecran, ci tipririi la o imprimant. Din acest
motiv, raportul nu poate fi deschis i afiat pe ecran (precum tabelele, formularele i interogrile). Este posibil numai o
previzualizate a modului cum va arata raportul tiprit.
Rapoartele acestei aplicaii sunt urmtoarele:
1. Decontul privind taxa pe valoarea adugat, este un document contabil, o declaraie financiar, ce se
ntocmete de societate n cadrul compartimentului financiar-contabil pentru fiecare lun. Documentul prezentat reflect
activitatea de vnzare-cumprare a societii pentru luna decembrie 2004, valoarea facturilor emise de furnizori ctre
SC ADES SA, precum i valoarea facturilor emise de SC ADES SA ctre clieni, cu procentul taxei pe valoare
adugat.
Cotele de impozitare prevzute de lege se aplic la baza de impozitare i astfel se determin T.V.A. Aceste
cote de impozitare se regsesc n aceast aplicaie i sunt:
- 19% pentru operaiunile referitoare la vnzarea-cumprarea de bunuri i prestri de servicii;
- 9% pentru o serie de produse de strict necesitate cum sunt: carnea de animale i psri, vndute n stare
proaspt, preparate i conserve, pete i produse din pete, etc. sau diverse formulare tipizate.
Exemplu de calcul a T.V.A. :
n data de 08.12.2004 SC Ades SA vinde ctre SC Bio Sim SRL 100 de kg. gru Dobrogea la preul unitar de
7000 lei, conform facturii nr. 2584151.
100 kg. x 7000 lei / kg = 700000 lei, care este valoarea facturii fr T.V.A

700000 x 19% = 133000 lei, care este valoarea T.V.A


700000 + 133000 = 833000 lei, care este valoarea total a facturii (inclusiv T.V.A).
Cu ocazia vnzrii produselor, ntreprinderea furnizoare percepe (factureaz i ncaseaz) i TVA de 19% sau 9%
asupra livrrilor. Aceasta suma reprezint ceea ce numim TVA colectat. Cum fiecare ntreprindere n calitatea ei de
client, n momentul aprovizionrii a pltit la rndu-i furnizorului su TVA, aceast TVA deductibil se va scdea din TVA
colectat, rezultnd TVA de plat la buget. Daca TVA colectat este mai mic dect TVA deductibil, diferena
reprezint TVA de recuperat. Raportul Decont vizualizat n modul proiect are urmtoarea imagine.

n partea de antet se observ valori preluate, dar n partea de detaliere se apeleaz funcia complex DLookUp,
care afieaz valoarea cmpului care este primul su argument din tabela al crei nume este al doilea su argument.
Raportul aa cum ar aprea la imprimat este prezentat n imaginea care urmeaz.

Din decontul SC ADES SA aferent lunii decembrie 2004 rezult urmtoarele:


Valoarea total a facturilor recepionate de la furnizori cu cota de 19% este de 74.256.000 lei din care:
- 62.400.000 lei este valoarea fr TVA ,
- 11.856.000 fiind valoarea TVA de 19%.
Valoarea total a facturilor emise clienilor cu cota de 19% i 9% este de 89.301.120 lei din care:
Vnzri de produse cu cota de 19% :
- 71.500.000 lei este valoarea fr TVA,
- 13.585.000 fiind valoarea TVA de 19%.
Vnzri de produse cu cota de 9% :
- 3.868.000 lei este valoarea fr TVA,
- 348.120 lei fiind valoarea TVA de 9%.
Din valoarea total a TVA aferent vnzrilor de 13.933.12 lei minus valoarea total a TVA aferent cumprrilor
de 11.856.000 lei obinem TVA-ul de plat ctre bugetul de stat de 2.077.120 lei datorit faptului c societatea a
nregistrat venituri din vnzarea mrfurilor.
2. Jurnalul pentru cumprri este un document contabil n care sunt reflectate achiziiile de produse, cumprrile
efectuate de SC Ades SA. Jurnalul de cumprri al societii este:

Acest raport este obinut prin execuia raportului rpt_jc:

3. Jurnalul pentru vnzri este un document contabil care reflect vnzrile de bunuri ctre clieni. Jurnalul de
vnzri al SC Ades SA se prezint astfel:

11. Teste
Testele prezentate n acest capitol ofer posibilitatea autoevalurii, coninnd subiecte similare celor propuse la
examenele de baze de date sau de licen (pentru specializrile profilului Economic). Fiecare din testele 11.1 11.5
conine cte 9 itemi, pentru fiecare acordndu-se cte 1 punct (1 punct se acord din oficiu). ntre cele 5 variante de
rspuns, una singur este corect. Testele 11.6 i 11.7 sunt mai complexe i conin cte 8 itemi pentru care rspunsul
trebuie dezvoltat, precum i o aplicaie care necesit parcurgerea tuturor etapelor de realizare a unei baze de date, fiind
potrivite abordrii n colectiv.

11.1 Testul 1
1. Indicele de calitate a informaiei ce exprim necesitatea de a se dispune de ct mai multe informaii (dac este
posibil, de toate informaiile) referitoare la un sistem economic analizat se numete:
a.
Precizie
b.
Oportunitate
c.
Completitudine
d.
Concizie
e.
Actualitate
2. Precizai care dintre variante indic alegerea corect a cheilor candidate i cea mai bun alegere a cheii
primare, pentru relaia
Curs (Cod-curs, Denumire-curs, Sala, Ora, Profesor)
Cheia primar este cea subliniat.
a.
Cod-curs, Sala
b.
Cod-curs, Ora
c.
Cod-curs, Profesor
d.
Cod-curs, Denumire-curs
e.
Cod-curs, Denumire-curs
3. Fie relaia Personal, ce conine informaii despre angajaii unei fabrici de confecii:
Marca
23
67

Nume
Barbu

Prenume
Andreea

Barbu

Codrin

Sectia
1
2

Profesie
Inginer
confecii
Economist

Salariu
7000000
7000000

Mihai
55
31
20

Constantinescu
Manoliu
Parincea

11

Semenov

Adela
Cristian
Maria
Monica
Alexandru

1
2
3
1

Designer
Economist
Matematician
Inginer
maini

6000000
6000000
6000000
5000000

i urmtoarea fraz SELECT:


SELECT Nume, Prenume, Salariu
FROM Personal
WHERE Sectia=1;
Aceast interogare returneaz:
a. Lista coninnd numele, prenumele i salariul tuturor angajailor
b. Lista coninnd marca i profesia angajailor seciei 1
c. Lista coninnd numele, prenumele i salariul angajailor seciei 1
d. Totalul salariilor angajailor
e. Toate informaiile coninute n tabela de date
4. Obiectele Microsoft ACCESS care permit accesul la date prin intermediul browserelor Internet sunt:
a. Tabelele

b. Formularele
c. Cererile de interogare
d. Paginile Web
e. Modulele
5. Formatul corespunztor datei numerice $4,107.85 este:
a. General Number
b. Currency
c. Fixed
d. Standard
e. Percent
6. Operaia care s-a realizat n cadrul schemei de mai jos este:
Surs

Iai
Surs

Destinai

Destinai

Cost

Bacu

100000

e
Cost

e
Iai
Iai
Iai
Iai
Iai

Bacu
Bucureti
Pacani
Vaslui
ClujNapoca

100000
300000
40000
120000
400000
Surs

Destinai

Cost

Bacu
Bacu
Bacu
Bacu

250000
200000
300000
100000

e
Bucureti
Galai
Constana
Iai
a.
b.
c.
d.
e.

Proiecia
Intersecia
Jonciunea
Diviziunea
Selecia

7. Indicai tipul relaiei reprezentate conceptual prin diagrama de mai jos:


CURSURI
a.
b.
c.
d.
e.

1-1
1-n
n-1
m-n
13

8. Redundana datelor este nul dac:


a. Datele apar o singur dat n sistem
b. Nu se realizeaz validri ale datelor
c. Ansamblul datelor reflect fidel realitatea pe care o modeleaz
d. Nu se admit date de intrare n format electronic
e. Datele nu se arhiveaz
9. Conceptul de partajare a datelor ntr-o baz de date se refer la:
a. Salvarea din timp n timp a unor copii coerente ale bazei de date

GRUPE

b. Identificarea utilizatorilor bazei de date prin nume sau cod


c. Autentificarea utilizatorilor prin parole
d.
nlnuirea tranzaciilor solicitate simultan pe aceeai baz de date i deservirea ulterioar a
acestora
e. Gestiunea unui jurnal de tranzacii.

11.2 Testul 2
1.Atributul se definete ca fiind:
a. O proprietate a unei entiti sau a unei asocieri
b. Corespondentul unui obiect din lumea real
c. O instaniere a unei entiti
d. O legtur logic ntre dou realizri de entitate
e. O colecie de instane de entitate de acelai tip
2. Formularul de analiz (utilizat n faza de analiz a sistemului informaional existent) care conine: volumul i
periodicitatea documentelor, timpul estimat pentru completarea acestora, tipul lor (de intrare sau de ieire), forma
documentelor (tipizate sau nu) precum i necesitatea documentelor se numete:
a. Gril informaional
b. Lista purttorilor de informaie
c. Flux informaional
d. Lista procedurilor existente
e. Chestionar de opinie
3. Categoria de personal care se ocup cu asigurarea securitii datelor i a cererilor de informaie precum i
refacerea bazei de date n cazuri de incoeren sau deteriorri accidentale se refer la:
a. Analiti de sistem
b. Programatori
c. Ingineri de sistem
d. Administrator
e. Operatori
4.Fie relaia
Contracte (Cod-contract, Tip, Client, Data)
care stocheaz date despre contractele ncheiate de firma de leasing X cu clienii si i interogarea:
SELECT COUNT(*) AS var_1
FROM Contracte
WHERE Data BETWEEN #01/01/03# AND #06/30/03#;
Aceast interogare are ca rezultat:
a. Lista clienilor firmei X
b. Lista contractelor cu cea mai mare valoare
c. Lista contractelor ncheiate ntre 1 ianuarie 2003 i 30 iunie 2003
d.
Numrul clienilor care au ncheiat contracte cu firma X ntre 1 ianuarie 2003 i 30 iunie 2003
e. Valoarea total a contractelor ncheiate ntre 1 ianuarie 2003 i 30 iunie 2003
5. Care din urmtoarele afirmaii este fals?
a.
Datorit utilizrii pe scar larg a calculatoarelor i a echipamentelor electronice cuplate la
acestea, majoritatea sistemelor informaionale au o component informatic.
b.
Sistemul informaional asigur legtura ntre sistemul de conducere i sistemul de execuie.
c.
Sistemul informaional are un rol de interfa ntre unitatea economic i mediul exterior.
d.
Un sistem informaional se creeaz i se dezvolt odat cu activitatea pe care o reflect, iar
delimitarea lui se realizeaz prin acte normative.
e.
Sistemul informaional este un subsistem al celui informatic
6. O regul de validare are urmtorul rol:
a. Realizeaz iniializarea cmpurilor unei tabele
b. Testeaz, conform unui criteriu furnizat, valorile introduse ntr-un cmp
c. Stabilete obligativitatea introducerii unei valori ntr-un cmp
d. Realizeaz eliminarea unui index
e. Stabilete tipul unui cmp

7. S se precizeze prin ce operaie a algebrei relaionale se poate obine lista cu localitile de domiciliu ale
studenilor:
Localitate
Iai
Bacu
Constana
pornind de la urmtoarea relaie STUDENT:
Nume_student
Traian Marius
Ionescu Maria
Dobre Raluca
Popovici Ioana
Filipescu
Alexandru
Iordan Mihai

Secie
CIG
Biologie
CIG
Matematic
Biologie

Localitate
Iai
Bacu
Iai
Constana
Constana

CIG

Bacu

a. Reuniune.
b. Proiecie.
c. Selecie.
d. Diviziune.
e. Intersecie.
8. Dac un cmp are definiia NOT NULL, atunci:
a. Poate rmne necompletat
b. Poate primi numai valori numerice, nenule
c. Este obligatorie introducerea unei valori pentru acesta
d. Poate primi numai valoarea 0
e. Nu poate fi modificat
9.Relaia CORESPONDENI, cu structura i coninutul:
ara
Frana
Italia
Spania

Jurnaliti
Marin Gabriel, Iurea Victor
Pricop Adrian, Dan Irina
Manoliu Alexandru

se afl n forma normal:


a. FN1
b. FN2
c. FN3
d. FN4
e. Nici una dintre acestea.

11.3 Testul 3
1.Operaiile de: selectare, codificare, conversie de suport, validare sunt specifice, ntr-un sistem informatic,
fazei de:
a. Culegere i pregtire a datelor
b. Pelucrare a datelor
c. Memorare a datelor
d. Ahivare a datelor
e. Comunicare / raportare
2. SGBD Micrososft ACCESS este de tip:
a. Ierarhic
b. Reea
c. Relaional
d. Funcional
e. Soft pentru gestiunea unui depozit de date
3.Fie relaia
CATALOG(nr_matricol, nume, an, nota)
care conine date despre studenii seciei Informatic (numrul matricol, numele, anul de studiu i nota la un
concurs de baze de date) i urmtoarea fraz SQL ACCESS:
SELECT nume, nota
FROM Catalog
WHERE an in (2,3) AND nota BETWEEN 8 AND 10
ORDER BY 2;
Aceast interogare realizeaz:
a.
Lista studenilor cu note mai mari dect 8, din anii 2 i 3.
b.
Lista studenilor din anii 2 i 3 i nota lor la concurs, ordonat descresctor dup not.
c.
Lista numelor i notelor studenilor din anii 2 i 3, cu note ntre 8 i 10, sortat alfabetic (cresctor) dup
nume.
d.
Lista numelor i notelor studenilor cu note ntre 8 i 10.
e.
Afiarea mediei notelor obinute la concurs de studenii din anii 2 i 3
4. Funcia totalizatoare COUNT, folosit ntr-o interogare de selecie SQL ACCESS, returneaz:
a. Numrul de nregistrri care respect condiiile stabilite prin clauza WHERE
b. Suma tuturor valorilor dintr-un cmp precizat
c. Valoarea medie a unui cmp numeric precizat
d. Valoarea cea mai mic dintr-un cmp precizat
e. Valoarea cea mai mare dintr-un cmp precizat
5. Care dintre urmtoarele elemente nu reprezint obiecte ale unei baze de date ACCESS:
a. Tabele
b. Fiiere de parametri
c. Formulare
d. Rapoarte
e. Cereri de interogare
6.Avnd n vedere c un furnizor poate avea mai muli clieni i un client se poate aproviziona de la mai muli
furnizori, relaia ntre entitile FURNIZORI i CLIENI este de tip:
a. 1-1
b. 1-n
c. n-1
d. m-n
e. nici unul din tipurile a,b,c,d
7. Una sau mai multe colecii de date aflate n interdependen, mpreun cu descrierea datelor i a relaiilor dintre
acestea reprezint:
a. un fiier

b. un server
c. o structur arborescent
d. o baz de date
e. o arhiv electronic
8.Pentru o baz de date, care dintre urmtoarele afirmaii este fals?
a. Datele sunt independente de prelucrri
b. Totdeauna, redundana datelor este nul
c. Redundana datelor este controlat
d. Este asigurat confidenialitatea datelor
e. Pot fi utilizate tehnici de prelucrare pentru mbuntirea timpului de optimizare.
9. O comand Macro reprezint:
a.
Un obiect care conine proceduri definite de utilizator, scrise n Visual Basic
b.
Un obiect care conine o definiie structurat a uneia sau mai multor aciuni pe care ACCESS le
realizeaz ca rspuns la un anumit eveniment
c.
Un obiect care permite vizualizarea informaiilor obinute prin prelucrarea datelor din una sau
mai multe tabele i/sau cereri de interogare.
d.
Un obiect care include un fiier HTML i alte fiiere suport, n vederea furnizrii accesului la
date prin intermediul browser-elor Internet
e.
Un obiect n care sunt stocate date primare.

11.4 Testul 4
1. Fie asocierea
CLIENT

FACTURA

de tip 1-n, unde relaiile au intensia:


CLIENT(CodClient, Nume, Localitate) i
FACTURA(NrFactura, Data, ValoareFacturata, CodClient)
iar extensia relaiei CLIENT este:
10
20
30

Microsistem
InfoData
Flamingo
Computers

Bacu
Bacu
Iai

Precizai care dintre urmtoarele tupluri poate fi adugat n tabela FACTURA, astfel nct pentru atributul
CodClient s fie satisfcut proprietatea de integritate referenial:
a.
b.
c.
d.
e.

100
200
500
101
400

12/07/04
08/08/04
03/23/05
06/25/04
01/10/05

3000
500
1000
1000
700

40
80
50
10
40

2. S se precizeze care dintre urmtoarele colecii de date se prezint n a treia form normal.
a. PRODUSE1
CodProducto
r
Gr11

ara
Grecia

Sp20

Spania

Ro30

Romnia

b. PRODUSE2
CodProducto
r
Gr11
Sp20
Ro30
Gr12
Sp22
c. PRODUSE3
CodProducto
r
Gr11
Sp20
Ro30
Gr12
Sp22

Caracteristici
Varietatea1;
Recolta2
Varietatea1;
Recolta2
Varietatea2;
Recolta1

ara

ConinutZah
r

Grecia
Spania
Romnia
Grecia
Spania

z1000
z0800
z0450
z1000
z0800

ara

Alexis
Jose
Tudor
Alexis
Jose

ConinutZah
r

Grecia
Spania
Romnia
Grecia
Spania

Producto
r

Producto
r

z1000
z0800
z0450
z1000
z0800

Alexis
Jose
Tudor
Alexis
Jose

TIP
ConinutZah
r

Producto
r

z1000
z0800
z0450

Alexis
Jose
Tudor

d. PRODUSE4
ara
CantitateaImportat

Grecia
1000000; 95000
Spania
50000; 70000;
20000
e. PRODUSE5
CodProducto
r
Gr11

NrLot

Dat
a

N0001

Cantitat
e

09-

10000

12-

10000

01-

10000

11-

20000

02-

25000

04
Gr11

N0001
04

Gr11

N0001
05

Gr11

N0002
04

Sp20

N0005
05

3.Precizai care dintre urmtoarele funcii (ce pot fi incluse n clauza Group By, pentru gruparea tuplurilor)
furnizeaz valoarea medie pentru atributul specificat?
a. Count
b. StDev
c. Max
d. Min
e. Avg
4.Care urmtoarele linii ale grilei Query Design permite inhibarea afirii realizrilor unui cmp?
a.
Table
b.
Sort
c.
Criteria
d.
Show
e.
Or
5. Proiectarea logic a unui sistem informatic trebuie s se realizeze avndu-se n vedere:
a. O soluie hardware viitoare
b. O tehnologie existent
c. Funcie de cunotinele actuale ale programatorilor
d. Independent de echipamente i software
e. n conformitate cu un sistem deja existent
6. Care dintre urmtoarele aspecte este esenial pentru elegerea unui atribut drept cheie primar a unei tabele?
a.
Valorile atributului s fie de tip numeric
b.
Valorile atributului s fie de tip caracter
c.
Valorile atributului s fie unice
d.
Tabela s conin cel puin dou nregistrri
e.
Tabela s fie deja indexat dup atributul respectiv

7. Care dintre atributele de mai jos este adecvat pentru a deveni cheia primar a entitii CLIENI?
a.
Nume
b.
Cod fiscal
c.
Telefon
d.
Adresa
e.
Banca
8. Cte niveluri de imbricare a formularelor sunt admise n Access?
a.
Cel mult dou
b.
Maximum trei
c.
Maximum apte
d.
Nu sunt admise imbricri ale formularelor
e.
Oricte se dorete.
9.Dat tabela
PRODUSE
CodProdu
s

DenumireProdu
s

A201
A205
A700
X309
B285

Gestiun
e

Carton Canson
Vopsea acrilic
Creion B3
Pnz pictur
Crbune desen

1
1
2
3
2

alegei varianta care conduce la obinerea relaiei


MAGAZII
Gestiun
e
1
2
3
a. SELECTION (PRODUSE; Gestiune<=3)
b. PROJECT (PRODUSE; Gestiune)
c. PROJECT (PRODUSE; Cod Produs, Gestiune)
d. SELECTION (PRODUSE, DenumireProdus=Creion B3)
e. Nici una dintre variantele de mai sus.

11.5 Testul 5
1. Fie relaiile
STUDENI
NumeStuden
t

NumrMatrico
l

Ionescu

101

Popa Angela
Zaharia

103
107

Mihai
Florin
i
NOTE1
NumrMatrico
l

NotaProgramar
e

101
103
107

9
8
10

Relaia
LISTA
NumeStude
nt

NumrMa
tricol

NotaProgra
mare

Ionescu

101

Popa
Angela
Zaharia
Florin

103

107

10

Mihai

este rezultatul unei operaii:


a. UNION (STUDENI, NOTE1)
b. MINUS (STUDENI, NOTE1)
c. SELECTION (STUDENI, NotaProgramare>=7)
d. PROJECT (STUDENI, NotaProgramare)
e. JOIN (STUDENI, NOTE1; STUDEN.NumrMatricol=NOTE1. NumrMatricol)
2. Dat relaia CARTE(Autor, Titlu, ISBN, Pre), precizai care dintre urmtoarele fraze SELECT va furniza
titlurile crilor cu preul ntre 50000 i 200000:
a.
SELECT DISTINCTROW [Titlu], Pre FROM CARTE
WHERE Pre<=200000;
b.
SELECT Titlu FROM CARTE
WHERE Pre>=50000;
c.
SELECT DISTINCT Autor FROM CARTE;
d.
SELECT Titlu FROM CARTE
WHERE Pre IN (50000, 100000, 200000);
e.
SELECT Titlu FROM CARTE
WHERE Pre BETWEEN 50000 AND 200000;
3. Pentru tabela PRODUSE creat cu comanda
CREATE TABLE PRODUSE (CodProdus TEXT(4), DenProdus TEXT(15), Um TEXT(4), Pre NUMBER, Calitatea
NUMBER CONSTRAINT CodProdus PRIMARY KEY(CodProdus));

precizai care dintre urmtoarele comenzi de inserare este corect:


a. INSERT INTO PRODUSE VALUES ("129, "AGENDA, "BUC, 50000, 1);
b. INSERT INTO PRODUSE VALUES (129, AGENDA, "BUC, 50000, 1);
c. INSERT INTO PRODUSE VALUES ("129, "AGENDA, 50000, "BUC, 1);
d. INSERT INTO PRODUSE VALUES ("129, "AGENDA, "BUC, "50000", "1");
e. INSERT INTO PRODUSE VALUES (129, "AGENDA, BUC, 50000, 1);
4. ntr-o baz de date, alegerea arhitecturii de stocare a datelor nu trebuie s fie influenat de:
a.
Cantitatea de date ce urmeaz a fi memorat
b.
Numrul de utilizatori ce vor accesa datele
c.
Numrul de tranzacii pe unitate de timp
d.
Limbajul de programare cunoscut de ctre managerul unitii beneficiare
e.
Resursele financiare disponibile
5. Dac ntr-o baz de date s-ar proceda la tergerea unor date care fac parte din tupluri n care se gsesc i alte
date care mai sunt nc necesare, aceast manevr ar reprezenta:
a. O anomalie de modificare
b. O anomalie de adugare
c. O anomalie de tergere
d. O violare a integritii entitii
e. O violare a integritii referirii
6. Un obiect Access care conine o definiie structurat a uneia sau mai multor aciuni pe care Access le
realizeaz ca rspuns la un anumit eveniment este:
a. O cerere de interogare
b. Un raport
c. Un formular
d. O comand macro
e. Un modul
7. O valoare care este atribuit automat unui cmp, atunci cnd utilizatorul nu introduce nici o valoare n cmp, se
numete:
a.
Etichet (Caption)
b.
Regul de validare (Validation Rule)
c.
Text de validare (Validation Text)
d.
Valoare iniial (Default Value)
e.
Cmp memo
8. Dac U este o mulime de atribute i se manifest dependena XY, atunci regula de inferen:
{XY, ZU} XZYZ
se numete:
a.
Reflexivitatea dependenelor funcionale
b.
Amplificarea dependenelor funcionale
c.
Tranzitivitatea dependenelor funcionale
d.
Complementarea dependenelor multivaloare
e.
Tranzitivitatea dependenelor multivaloare
9. Structura care conine informaii i metode de prelucrare a acestora se numete:
a.
Dicionar
b.
Obiect
c.
Clas
d.
Ierarhie
e.
Mesaj.

11.6 Testul 6
1. Precizai ordinea corect a etapelor ce trebuie urmate n proiectarea unei baze de date:
a. alegerea SGBD-ului
b. ncrcarea datelor
c. proiectarea schemei interne
d. proiectarea schemei externe
e. proiectarea schemei conceptuale
f. analiza structural
g. analiza cerinelor informaionale
h. analiza temporal
i. integrarea modelelor
j. exploatarea i ntreinerea
2.Restriciile de integritate de comportament:
a. se definesc prin egalitatea sau inegalitatea unor valori din cadrul relaiilor
b. sunt proprii unei anumite baze de date relaionale
c. sunt obligatoriu de definit.
Precizai o restricie de comportament pentru o baz de date n care figureaz relaia:
PENSIONAR(Nume, Prenume, Vrsta, Adresa)
3. Fie relaia OLIMPIADA, ce conine informaii despre elevii participani la un concurs de informatic organizat la
Bacu:
Legitimaie
23

Numele
Barbu

67

Barbu

Prenumele

Clasa

Andreea

Codrin

Mihai
55

Constantinescu

Adela

10

31

Manoliu

Cristian

20

Parincea

11

Semenov

Maria
Monica
Alexandru

10
9

Liceul

Punctajul

Ferdinand
I
Bacu
Gh.Vrnceanu
Bacu
N.
Comneci
Oneti
H.
Coand
Bacu
Letea Bacu

68

G.
Bacu

37

Apostu

70
61
84
50

S se scrie o fraz SELECT ce permite afiarea numelor i punctajului elevilor din clasa a 9-a, care au obinut cel
puin 50 de puncte, n ordinea descresctoare a punctajului. Cte tupluri conine rezultatul? S se scrie numerele de
legitimaie corespunztoare acestor tupluri.
4. Transformai relaia de mai jos (de tip

) n dou relaii de tip 1-n:

REVISTE

CITITORI
AI Journal

PC Magazine
CD Forum

Ionu
tefan
Maria

5. Care sunt caracteristicile SGBD Access? Ce instrumente de ajutor ofer? Ce tipuri de obiecte pot fi incluse ntro baz de date Access?
6. Ce este un depozit de date? Indicai cteva elemente specifice unui depozit de date.
7. Cum se realizeaz protecia unei baze dae date la nivel utilizator?
8. Cum pot fi accesate bazele de date Access pe Internet?
9. Aplicaie. Catedra de Informatic organizeaz un simpozion cu participare internaional. Pentru aceasta,
responsabilul cu activitatea tiinific decide implementarea unei baze de date relaionale. Se dorete ca, utiliznd
datele incluse n baza de date, s se obin urmtoarele informaii:
- Lista seciunilor simpozionului (codul i denumirea)
- Lista lucrrilor iinifice prezentate pe seciuni
- Lista lucrrilor tiinifice pe Institute de nvmnt Superior, n numele crora s-au nscris lucrrile la simpozion
- Lista autorilor (nume, prenume, adresa profesional i adresa personal) care vor susine lucrri pe seciuni.
Se cere s se elaboreze modelul relaional al bazei de date.

11.7 Testul 7
1. Ce nseamn modelarea datelor i de ce este necesar?
2. n ce const optimizarea unei baze de date?
3. Ce nseamn replicarea unei baze de date?
4. Ce nseamn normalizarea datelor i care este scopul normalizrii?
5. Care sunt implicaiile accesului concurent la o baz de date?
6. Care sunt caracteristicile bazelor de date distribuite?
7. Ce este o baz de cunotine?
8. Care sunt problemele actuale ale dezvoltrii de aplicaii cu baze de date?
9. Aplicaie. Se propune realizarea informatizrii bibliotecii unei Instituii de nvmnt Superior, folosind o baz
de date relational. Se fac urmtoarele precizri:
- n bibliotec se afl exemplare ale unor lucrri de mare interes; fiecare exemplar are un cod de identificare
unic;
- Fiecare lucrare are un titlu, un numr ISBN, o editur n care apare i unul sau mai muli autori;
- Exemplarele pot fi imprumutate de catre cadrele didactice, doctoranzi sau studeni;
- Exemplarele se mprumut n baza unui bon de mprumut, n care se pot trece mai multe cri imprumutate;
- n momentul mprumutului se precizeaz data de mprumut i data returnrii crilor.
Cititorilor le sunt utile urmtoarele informaii:
- Lista lucrrilor existente n bibliotec;
- Lista exemplarelor existente n bibliotec pentru fiecare lucrare;
- Lista cititorilor care nu au returnat la termen exemplarele mprumutate;
- Lista lucrrilor existente n bibliotec pe o anumit tem.
Se cere s se elaboreze modelul relaional al bazei de date.

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