Sunteți pe pagina 1din 149

Ana GRAMA

Marin FOTACHE
Alexandru UGUI
Florin DUMITRIU

INSTRUMENTE SOFTWARE PENTRU AFACERI

Instrumente software pentru afaceri

CUPRINS
Noiuni de baz privind instrumentele software .......................................................................................................3
1.1. Istoricul limbajelor de programare ................................................................................................................ 4
1.2. Etapele elaborrii programelor de aplicaii i rolul economitilor ................................................................. 8
1.3. Instrumente pentru dezvoltarea aplicaiilor ................................................................................................. 11
1.4. Instrumente software pentru economiti...................................................................................................... 12
1.5. Tendine n instrumente software................................................................................................................ 14
STRUCTURI DE DATE I STRUCTURI DE PRELUCRARE ...........................................................................19
2.1. Aspecte introductive.................................................................................................................................... 20
2.2. Structuri de date .......................................................................................................................................... 20
2.3. STRUCTURI algoritmice DE PRELUCRARE .......................................................................................... 27
Programele de calcul tabelar i utilizarea lor n gestiunea organizaiilor................................................................36
3.1. PROGRAMELE DE CALCUL TABELAR INSTRUMENTE DE SPRIJINIRE A DECIZIILOR ........ 37
3.2. Crearea i gestionarea registrelor de lucru i a foilor de calcul................................................................... 42
3.3. FORMULE I FUNCII N EXCEL ......................................................................................................... 52
3.4. Crearea i formatarea graficelor.................................................................................................................. 61
3.5. LISTE I BAZE DE DATE N EXCEL ..................................................................................................... 66
MODELUL RELAIONAL DE ORGANIZARE A BAZELOR DE DATE ........................................................76
4.1. Cte ceva despre baze de date..................................................................................................................... 77
4.2. PREZENTARE GENERAL a modelului relaional................................................................................. 83
4.3. Restricii ale bazei de date........................................................................................................................... 86
4.4. Schema i coninutul unei baze de date RELAIONALE .......................................................................... 94
SISTEME DE GESTIUNE A BAZELOR DE DATE. ACCESS...........................................................................96
5.1. SGBD ACCESS PREZENTARE GENERAL ...................................................................................... 97
5.2. CREAREA I ACTUALIZAREA BAZELOR DE DATE ACCESS....................................................... 100
5.3. Formulare ACCESS.................................................................................................................................. 111
5.4. Obtinerea de informatii din BAZA DE DATE n ACCESS ..................................................................... 115
5.5. Construirea i utilizarea rapoartelor .......................................................................................................... 119
5.6. Aplicaii, programe, proceduri VBA N ACCESS.................................................................................... 125
Interogarea bazelor de date. Limbajul SQL ..........................................................................................................128
6.1. Prezentare general a limbajului SQL....................................................................................................... 129
6.2. CREAREA TABELELOR I DECLARAREA RESTRICTIILOR.......................................................... 132
6.3. Comenzi de actualizare a tabelelor............................................................................................................ 135
6.4. Structura de baz a frazei SELECT........................................................................................................... 137
6.5. JONCIUNI.............................................................................................................................................. 141
6.6. Funcii-agregat: COUNT, SUM, AVG, MAX, MIN ................................................................................ 143
6.7. Sub-consultri. Operatorul IN ................................................................................................................... 144
6.8. REUNIUNE, INTERSECTIE, DIFERENT........................................................................................... 145
6.9. Gruparea tuplurilor. Clauzele GROUP BY i HAVING........................................................................... 145
BIBLIOGRAFIE...................................................................................................................................................149

Invmnt la distan Anul I 2008/2009

Capitolul 1

NOIUNI DE BAZ PRIVIND INSTRUMENTELE SOFTWARE

Obiective:
i.
ii.
iii.
iv.

Contientizarea importanei instrumentelor software n creterea


productivitii muncii
Expunerea principalelor instrumente software utilizate pentru
dezvoltarea programelor de aplicaii n domeniul economic
Prezentarea principalelor etape n dezvoltarea programelor de
aplicaii i a rolului economitilor
Descrierea facilitilor oferite de principalele instrumente destinate
economitilor

Rezultate ateptate:
i.
ii.
iii.
iv.
v.

Cunoaterea caracteristicilor evoluiei limbajelor de programare


nelegerea etapelor i activitilor ce trebuie urmate n dezvoltarea
programelor de aplicaii, a sistemelor informaionale, n general
Familiarizarea cu categoriile principale de instrumente software i
scopul n care ele pot fi folosite
Cunoaterea categoriilor de instrumente software destinate
economitilor i a rolului acestora n asigurarea succesului n cariera
profesional
Cunoaterea tendinelor manifestate n dezvoltarea programelor de
aplicaii i pe piaa instrumentelor software

Instrumente software pentru afaceri

1.1. ISTORICUL LIMBAJELOR DE PROGRAMARE


Astzi, aproape orice activitate dintr-o organizaie se desfoar cu ajutorul calculatorului.
Nevoia de programe de aplicaii s-a diversificat n permanen, iar odat cu ele i instrumentele
software. Prin instrument software se nelege un program folosit de informaticieni sau utilizatori
pentru dezvoltarea programelor de aplicaii.
Istoria instrumentelor software a nceput odat cu primele calculatoare, la nceputul anilor 50.
De atunci i pn n anii 80 singura modalitate de dezvoltare a programelor de aplicaii era
reprezentat de limbajele de programare. Astzi avem la dispoziie o multitudine de alte instrumente
software. n afara limbajelor de programare pot fi enumerate sistemele de gestiune a bazelor de date,
programe de calcul tabelar, produsele CASE, programele pentru gestiunea informaiilor personale i
multe altele. Multe dintre acestea se adreseaz nespecialitilor n programarea calculatoarelor.
Pentru a nelege principalele evoluii i tendine ale instrumentelor software, vom face cu o
scurt prezentare a istoricului limbajelor de programare.
Limbajele de programare constituie rezultatul unei evoluii, care a fost determinat att de
performanele calculatoarelor electronice, ct i de progresele din teoria i practica programrii, ele
fiind grupate n cinci categorii: limbaje main, limbaje de asamblare, limbaje de nivel nalt, limbaje
din generaia a patra, numite i limbaje de nivel foarte nalt i limbaje naturale.
Fiecare procesor are propriul set de instruciuni, care formeaz aa numitul limbaj main. n
primii ani ai dezvoltrii programelor, aceste limbaje constituiau singura variant la ndemn. Toate
instruciunile de programare trebuiau s fie redactate n cod binar, adic sub forma unor iruri formate
din 0 i 1. De exemplu, o instruciune avea forma 0110 1010 0110 1011 i poate semnifica operaiunea
de adunare. Astfel, programele se concretizau n secvene de cifre binare pentru adrese, date i
operaii, programatorul cunoscnd perfect operaiunile interne din unitatea central a calculatorului
(procesor). O mic funcie de prelucrare necesita lungi serii de instruciuni pentru a fi realizat.
Dezavantajele acestor limbaje de programare sunt astzi evidente: dificultatea scrierii i, mai
ales, a nelegerii programelor; lipsa portabilitii programelor, adic imposibilitatea executrii lor pe
alte tipuri de calculatoare dect cel pentru care au fost elaborate.
Limbajele de asamblare au permis reducerea dificultilor specifice programrii n limbaj
main, prin folosirea unor abrevieri alfabetice (mnemonice) n locul irurilor de 0 i 1. De exemplu,
instruciunea ADD R1, R2, R4 semnific adunarea valorilor coninute n registrele de memorie R1 i
R2, iar rezultatul este scris n registrul R4. Dup cum se poate observa, codurile de operaii i poziiile
din memorie sunt reprezentate prin simboluri, motiv pentru care aceste limbaje se mai numesc i
simbolice. Ele simplific mult programarea, deoarece abrevierile alfabetice sunt mai uor de memorat
dect adresele scrise n binar, oferind mai mult comoditate n scrierea sau citirea i nelegerea
programelor.
Odat scrise, programele n limbajele de ansamblare trebuie traduse n limbajul main, pentru
a putea fi executate pe calculator. Aceast operaiune este realizat prin intermediul unor programe
speciale, numite ansambloare. Ele preiau programele surs (cele scrise n limbajul de ansamblare) i
le convertesc n programe obiect executabile (scrise n limbajul main). Operaiunea de ansamblare

Invmnt la distan Anul I 2008/2009

este necesar deoarece un calculator tie s interpreteze i s execute doar programele scrise n cod
main.
Principalele limbaje din aceast categorie sunt: ASSIRIS, ASSEMBLER, MAGIRIS.
Dincolo de avantajele sale, limbajele de asamblare rmn orientate-main, deoarece
comenzile sale corespund instruciunilor n limbaj main, conform tipului de calculator utilizat. O
singur instruciune n limbaj de asamblare corespunde unei singure instruciuni n limbaj main i,
deci, este nevoie de acelai numr de instruciuni pentru scrierea programelor n ambele cazuri. Deci,
n continuare, ele nu pot fi portate de pe un tip de calculator pe altul. Totui, ele sunt nc utilizate
astzi, mai ales de ctre programatorii care dezvolt software de sistem, pentru c ele permit utilizarea
mai eficient a resurselor calculatorului i sunt mai rapide la execuie.
n practica programrii calculatoarelor, limbajele main i cele de asamblare sunt considerate
de nivel redus.
O dat cu lansarea limbajului FORTRAN (1954) s-a trecut la o alt generaie de limbaje,
numite de nivel nalt sau evoluate. Alte limbaje din aceast categorie sunt: COBOL, BASIC, C i
C++, ADA, PROLOG.
Limbajele de nivel nalt au fost dezvoltate pentru a crete productivitatea muncii
programatorilor. Ele sunt mai uor de asimilat i de neles dect un limbaj de asamblare, deoarece
regulile, normele i sintaxa sunt mai suple, ceea ce reduce riscul erorilor. Instruciunile n limbajele
evoluate, numite enunuri, se aseamn mult cu limbajul uman sau cu conveniile de scriere n
matematic. De fapt, fiecare enun constituie o macroinstruciune, adic ea realizeaz operaiuni
specifice mai multor instruciuni n limbajul main. Iat cteva exemple de comenzi ntlnite n
limbajele de nivel nalt: COMPUTE, DISPLAY, SUBSTRACT.
Pentru a fi executat, programul surs, scris ntr-un limbaj de nivel nalt, trebuie convertit n
program obiect, scris n limbaj main. Aceast operaiune poate fi realizat prin intermediul unor
programe speciale, numite interpretoare sau compilatoare. Interpretoarele trateaz programul surs la
nivel de linie de program, fiecare linie fiind executat imediat ce este convertit n cod obiect. n
schimb, compilatoarele realizeaz conversia ntregului program surs n program obiect i dup aceea
el poate fi executat. Datorit manierei diferite de lucru, programele interpretate au o vitez de execuie
mai mic dect cele compilate. Dup compilare/interpretare mai trebuie urmat o etap nainte de a fi
executat programul. Este vorba despre editarea de legturi, n care programul obiect este completat cu
module preluate din bibliotecile sistemului de operare.
Principalele avantaje ale limbajelor de nivel nalt sunt:

Creterea productivitii muncii de programare. Instruciunile de program sunt


orientate pe activitate i nu pe calculatorul pe care se va executa programul, ceea ce
uureaz munca programatorilor. Se mai spune c aceste limbaje sunt orientate pe
problem. De exemplu, limbajul COBOL a fost conceput pentru dezvoltarea
aplicaiilor economice, iar FORTRAN pentru scopuri tiinifice sau domeniul
matematicii.

Programele scrise n limbajele de nivel nalt sunt portabile. Prin utilizarea


macroinstruciunilor n scrierea programelor surs i traducerea lor n limbaj main,
cu ajutorul interpretoarelor sau a compilatoarelor, programele vor putea fi executate

Instrumente software pentru afaceri

pe diferite tipuri de calculatoare. Pentru a fi posibil acest lucru, fiecare tip de


calculator va avea propriul interpretor/compilator pentru fiecare limbaj de programare.

Posibilitatea scrierii de programe de ctre persoane mai puin calificate dect n


cazul limbajelor de ansamblare. Apropierea macroinstruciunilor de limbajul uman i
orientarea lor pe problema de rezolvat le fac mai uor de nvat.
n schimb, limbajele evoluate sunt mai puin eficiente dect limbajele de asamblare, din
punctul de vedere al utilizrii resurselor calculatorului, i necesit mai mult timp de execuie. Aceste
inconveniente n-au putut determina programatorii s nu utilizeze pe scar larg limbajele de nivel nalt
n dezvoltarea aplicaiilor pentru companii.
Limbajele din generaia a patra (cunoscute i sub acronimul 4LG) descriu o mare varietate
de limbaje care sunt mai neprocedurale i mai conversaionale dect cele de nivel nalt. Ele sunt
extrem de cunoscute i utilizate astzi, dar, n acelai timp, dificil de definit, chiar i ncadrarea lor n
categoria limbaje fiind discutabil. Ele pot fi considerate ca limbaje sofisticate care permit creterea
productivitii muncii programatorilor, prin facilitile de dezvoltare a aplicaiilor pe care le ofer, sau
ca limbaje mai directe i mai simple, care permit utilizatorilor s-i dezvolte propriile aplicaii
informatice.
Totui, pot fi identificate cteva caracteristici comune majoritii limbajelor 4GL 1:

sunt centrate n jurul bazelor de date, n mod deosebit a celor relaionale, oferind
faciliti pentru stocarea i interogarea datelor din baz;

sunt limbaje declarative, numite i neprocedurale, ceea ce nseamn c accentul este


pus pe ceea ce trebuie s fac aplicaia i nu cum trebuie s fac. Acum este posibil
dezvoltarea unor mici aplicaii informatice fr a mai fi necesar scrierea de programe.
Utilizatorii se rezum la a indica rezultatele vizate, de o manier declarativ, astfel nct
calculatorul s poat determina secvena de program necesar pentru obinerea acestor
rezultate. Din acest motiv, se spune c limbajele din aceast generaie au simplificat
mult procesul de programare.

pun la dispoziie o interfa grafic prietenoas, bazat pe dialogul interactiv, cu care


utilizatorii pot interaciona pentru a-i dezvolta propriile aplicaii. Aceast interfa este
referit prin acronimul GUI (Graphical User Interface Interfa grafic utilizator);

includ limbaje de programare de nivel nalt pentru scrierea de proceduri program prin
care s se acopere anumite funciuni ale aplicaiilor care nu pot fi rezolvate prin
instrumentele 4GL;
Apariia limbajelor 4GL a reprezentat rspunsul la neajunsurile limbajelor de nivel nalt. Dei
acestea au permis o sporire considerabil a productivitii muncii programatorilor, n comparaie cu
limbajele de ansamblare, ea nu a fost suficient n condiiile extinderii rapide a utilizrii
microcalculatoarelor din anii 80, a creterii permanente a cerinelor utilizatorilor i a complexitii
aplicaiilor informatice. De fapt, prin introducerea limbajelor 4GL s-a urmrit rezolvarea a trei
probleme: reducerea costurilor mari cu dezvoltarea programelor, nevoia de obinere a programelor n
timp ct mai scurt i creterea calitii programelor, mai ales n ce privete includerea cerinelor
funcionale ale utilizatorilor.
1

prelucrare dup Curtis, G., Cobham, D. Business Information Systems. Analysis, Design and Practice, fourth edition,
Prentice Hall, 2002, p. 122

Invmnt la distan Anul I 2008/2009

Prin urmare, aceste limbaje prezint urmtoarele avantaje:

posibilitatea dezvoltrii de noi aplicaii mai ieftine i mai rapid;

uurina ntreinerii aplicaiilor;

posibilitatea utilizatorilor de a-i dezvolta propriile aplicaii. Odat cu apariia acestor


limbaje s-a dezvoltat un nou concept utilizatorul final informatizat (end user
computing), care face referire la faptul c utilizatorii cu mai puine cunotine

informatice i pot crea i ntreine singuri propriile aplicaii.


n evoluia limbajelor de programare de pn acum, apariia unei generaii noi a determinat
renunarea, n bun msur, la limbajele din generaia anterioar (dar nu i dispariia lor). Acum, ne
putem ntreba dac apariia i dezvoltarea limbajelor 4GL vor avea acelai efect asupra limbajelor de
nivel nalt. Rspunsul ferm este nu, att pentru prezent, ct i pentru viitorul imediat. Explicaiile sunt
urmtoarele:

aplicaiile dezvoltate n 4GL sunt mai puin eficiente dect limbajele de nivel nalt, din
punctul de vedere al utilizrii resurselor calculatorului, aspect care devine mai evident
cu ct crete complexitatea aplicaiilor sau volumul datelor de prelucrat. Viteza de
execuie a programelor generate automat de aceste limbaje, pe baza specificaiilor
utilizatorilor, este mai mic, fapt care se rsfrnge n timpi de rspuns mai mari, dar i
pretenii sporite n ce privete puterea de calcul. Unii chiar se ntreab dac reducerea
costurilor i a timpului de dezvoltare a aplicaiilor nu sunt depite de costurile
suplimentare cu achiziia echipamentelor necesare pentru obinerea de performane
echivalente limbajelor din a treia generaie.

aplicaiile complexe solicitate astzi de firme nu pot fi dezvoltate integral cu limbajele


4GL. Facilitile oferite sunt nc limitate, ceea ce impune apelarea la limbajele de
generaia a treia, mai ales n cazul aplicaiilor pentru firmele medii i mari.

utilizarea limbajelor 4GL de ctre utilizatori poate conduce la lipsa standardizrii n


dezvoltarea sistemelor informatice la nivelul organizaiei, ceea ce poate crea
deficiene n desfurarea activitii angajailor.
Cel mai tipic exemplu de limbaj 4GL este SQL. El ndeplinete ambele caracteristici ale
acestei generaii de limbaje: este utilizat de profesioniti, n vederea creterii productivitii muncii lor,
dar i de utilizatorii finali, n scopul dezvoltrii propriilor aplicaii. SQL este orientat spre dezvoltarea
aplicaiilor cu baze de date relaionale, fiind inclus de marea majoritatea a SGBD-urilor, precum
ACCESS, Visual FoxPro, Oracle. El ofer faciliti pentru crearea, actualizarea i interogarea bazelor
de date
n categoria limbajelor 4GL sunt incluse i SGBD-ul ACCESS, programele de calcul tabelar
EXCEL i LOTUS 1-2-3, limbajele de interogare a bazelor de date QBE i RPG IV, generatorul de
rapoarte Crystal Reports.
Ultimul pas n evoluia limbajelor de programare l reprezint limbajele naturale, referite
uneori i ca limbaje de programare de generaia a cincea 2. Ele i propun utilizarea limbajului uman
n programarea calculatoarelor, cele mai cunoscute exemple fiind INTELLECT i ELF. Ele sunt
adesea folosite ca interfee pentru instrumentele 4GL.
2

unii autori linclud limbajele naturale tot n categoria 4GL. Vezi OBrien, J.A. Introduction ti Information Systems.
Essentials for the Internetworked E-Business Enterprise, McGraw-Hill, 2001, p.158

Instrumente software pentru afaceri

Principalul lor neajuns este legat de translatarea programelor din limbajul natural n limbaj
main, o operaiune extrem de complex i costisitoare din punctul de vedere al resurselor hardware
solicitate. Ele sunt integrate cu aplicaiile de inteligen artificial, incluse i ele n aceast generaie.
Un astfel de exemplu l reprezint LISP.
Dei limbajele naturale sunt nc n faza de nceput a dezvoltrii lor, ele reflect foarte bine
caracteristica principal a evoluiei limbajelor de programare apropierea de limbajul uman. Aceast
caracteristic, precum i altele, sunt evideniate figura 1.1 3.
Generatia
Caracteristici

II

Limbaj
masina

Limbaj de
ansamblare

Apropierea de
limbajul uman

III
Limbaj de
nivel nalt

IV

Limbaj
neprocedural

Limbaj
natural

Progres

Productivitate

Progres

Eficienta
utilizarii
resurselor

Diminuare

Portabilitate

Nu

Nu

Da

Da

Da

Utilizarea de
macroinstructiuni

Nu

Nu

Da

Da

Da

Utilizarea
simbolurilor

Nu

Da

Da

Da

Da

Figura 1.1 Caracteristicile evoluiei limbajelor de programare

1.2. ETAPELE ELABORRII PROGRAMELOR DE APLICAII I


ROLUL ECONOMITILOR
Dezvoltarea programelor de aplicaii (sau a sistemelor informaionale) nu se limiteaz la
scrierea programelor, ci presupune parcurgerea unui proces mai amplu, format din mai multe etape.
Ansamblul tuturor acestor etape formeaz ciclul de via al programelor de aplicaii. Astzi exist
numeroase metodologii de dezvoltare a programelor, ce difer ntre ele prin numrul etapelor,
coninutul i organizarea lor. n acest paragraf dorim s descriem succint etapele comune majoritii
metodologiilor, i s punem n eviden rolul economitilor de-a lungul procesului de dezvoltare.
Procesul de dezvoltare ncepe cu etapa de microanaliz. Aceast etap are drept int definirea
clar a problemei sau oportunitii ivite, precum i a scopului urmrit, n sensul c trebuie s se
neleag ce se ntmpl la nivelul firmei, ce obiective are firma i cum noua aplicaie poate conduce la
atingerea lor. Este important s se identifice exact care sunt avantajele pe care le aduce noua aplicaie,
ce activiti economice sprijin i ce probleme pot fi rezolvate cu ajutorul ei. Printre motivele de
iniiere a dezvoltrii unei noi aplicaii putem enumera: modernizarea sistemului informaional n
3

adaptare dup Turban, E., McLean, E., Wetherbe, J. Information Technology for Management, John Wiley&Sons, 2001,
p. 735

Invmnt la distan Anul I 2008/2009

vederea valorificrii avantajelor oferite de noile tehnologii informaionale; modificarea legislaiei;


ineficiena unor activiti derulate n cadrul firmei, datorat slabei integrri a sistemului informaional;
aplicaiile existente nu mai fac fa cerinelor, datorit extinderii activitii firmei; sprijinirea realizrii
obiectivelor strategice.
La finalul acestei etape se elaboreaz un plan de dezvoltare, care este supus spre analiz
conducerii. Dac se obine aprobarea, proiectul poate fi iniiat, n sensul c vor fi alocate fondurile i
resursele necesare i se va organiza echipa de dezvoltare.
Cel mai adesea, economitii sunt cei care iniiaz dezvoltarea de noi aplicaii. Chiar dac
iniiativa aparine altor categorii de personal, rolul economitilor rmne important, deoarece ei trebuie
s elaboreze planul de dezvoltare, n care se face o estimare a cheltuielilor i beneficiilor poteniale ale
aplicaiei propuse.
Dup iniierea proiectului de dezvoltare a noului program de aplicaie, se merge mai departe cu
etapa de analiz, prin care se urmrete identificarea i descrierea cerinelor funcionale i
informaionale. La sfritul ei trebuie s fie foarte clar ce funcii va realiza noua aplicaie. Astfel, n
aceast etap sunt urmrite trei obiective principale:

descrierea sistemului informaional existent, fiind analizate documentele primare,


fluxurile de informaii din sistem, prelucrrile i rapoartele;

identificarea i definirea cerinelor pentru noua aplicaie;

documentarea detaliat a tuturor cerinelor, funcionale i nefuncionale.


Analiza sistemului este o activitate esenial n aflarea situaiei existente i a ceea ce se dorete
n viitor. Informaiile privind sistemul curent i cerinele pentru noul sistem se pot obine prin
intermediul mai multor tehnici, cum ar fi observarea a ceea ce fac utilizatorii, intervievarea lor sau
sondarea pe baz de chestionare, analiza documentelor i a procedurilor de lucru, a regulilor
economice i a responsabilitilor fiecrui loc de munc care este influenat sau influeneaz
funcionarea sistemului, a documentaiei sistemul informatic existent.
Dar nu este suficient simpla culegere a informaiilor. Analitii trebuie s le revizuiasc,
analizeze i structureze astfel nct cerinele noii aplicaii s fie uor nelese de ctre cei care se vor
ocupa de proiectarea i scrierea programelor. Cerinele pot transpuse sub form grafic, cu ajutorul
diferitelor instrumente.
n finalul etapei de analiz, se pregtete o documentaie necesar proiectrii, prin care sunt
surprinse toate aspectele privind modul de funcionare a sistemului curent, cror nevoi i cerine
trebuie s rspund noua aplicaie, ce funcii trebuie s cuprind i ce obiective trebuie s sprijine.
n aceast etap, economitii joac un rol covritor. Ei sunt cei care trebuie s descrie
documentele primare, prelucrrile realizate n sistem, procedurile de control, modalitile de obinere a
informaiilor i prezentare a lor n rapoarte. Informaticienii nu au cum s neleag mecanismele
economice desfurate n cadril firmei. Provocarea major n rndul economitilor const n
structurarea tuturor informaiilor despre sistem ntr-o form care s faciliteze comunicarea cu
informaticienii. De aceea, ei trebuie s stpneasc instrumentele grafice de reprezentare a sistemului.

Instrumente software pentru afaceri

10

n etapa de proiectare logic se urmrete dezvoltarea arhitecturii aplicaiei, pregtirea


specificaiilor de proiectare a interfeelor utilizator i a bazei de date, a controalelor i procedurilor de
realizare a copiilor de siguran, a programelor, independent de platformele pe care urmeaz s fie
implementat aplicaia. Aceste activiti se bazeaz pe utilizarea informaiilor culese i a modelelor
create n timpul analizei.
Proiectarea logic se deruleaz prin intermediul a trei pai sau subfaze:

proiectarea formularelor/formatelor (pentru culegerea datelor) i a rapoartelor;

proiectarea interfeelor i a dialogurilor, pentru evidenierea modului de comunicare a


utilizatorului cu programele i echipamentele;

proiectarea logic a bazelor de date, prin care este conceput schema relaional a bazei de
date, sub forma unui ansamblu de tabele normalizate ntre care exist legturi.
i n aceast etap economitii pot juca un rol important. nelegerea corect a modului de

funcionare a sistemului informaional este crucial n proiectarea interfeelor utilizator, a


documentelor i rapoartelor, chiar i a bazei de date. ns, pentru a face fa acestor sarcini,
economistul trebuie s dein cunotine suplimentare de informatic, precum: modelul relaional i
normalizarea bazelor de date, tipurile de obiecte regsite n formularele, limbajul SQL.
Dup parcurgerea etapei de proiectare logic se trece la o nou etap, proiectarea fizic.
Aceast etap are un caracter preponderent tehnic, fiind orientat spre platformele pe care va fi
implementat aplicaia. Ca atare, i specificaiile acestei etape vor avea un pronunat caracter tehnic,
economitii intervenind rareori n derularea acestor activiti.
Dou dintre activitile importante ale acestei etape privesc proiectarea fizic a bazei de date i
proiectarea modulelor de program. De exemplu, la proiectarea fizic a bazei de date se vor lua n
considerare facilitile de stocare i accesare a datelor din SGBD-ul ales, precum tipul de organizare a
fiierelor i utilizarea indecilor.
Dup finalizarea proiectrii, se trece la etapa de implementare, n timpul creia sistemul este
construit, testat i instalat. Obiectivul activitilor specifice nu este numai de asigurare a funcionrii
aplicaiei, n concordan cu nevoile identificate, ci i a faptului c utilizatorii sunt instruii astfel nct
firma s beneficieze de rezultatele prevzute prin exploatarea corespunztoare a acesteia. Principalele
activiti care se desfoar n cadrul etapei sunt:

scrierea i testarea programelor;

construirea bazei de date;

conversia datelor din vechea aplicaie n formatul cerut de noua aplicaie;

instalarea aplicaiei pe calculatoare;

instruirea utilizatorilor pentru oferirea tuturor explicaiilor i cunotinelor necesare


exploatrii aplicaiei la parametrii la care a fost proiectat;

elaborarea documentaiei aplicaiei i a manualelor de utilizare, exploatare i ntreinere.

La finalul acestei etape, programul de aplicaie se poate considera a fi funcional, i se trece la


etapa de exploatare i ntreinere. n aceast etap el trebuie supus revizuirilor periodice pentru a se
asigura ntreinerea acestuia, fie pentru corectarea eventualelor erori aprute n exploatarea lui, fie
pentru mbuntirea caracteristicilor sau funciilor, ca rspuns la modificarea unor cerine

Invmnt la distan Anul I 2008/2009

11

organizaionale. Aceast etap este, de obicei, cea mai costisitoare, avnd n vedere c timpul pe care
i-l petrec specialitii din departamentele informatice reprezint cam 48-60% din totalul timpului
alocat pentru dezvoltarea sistemului.

1.3. INSTRUMENTE PENTRU DEZVOLTAREA APLICAIILOR


Enumerarea i descrierea instrumentelor software poate porni de la cele trei componente ale
programelor de aplicaii:
interfaa utilizator, adic o serie de componente (formulare pentru introducerea datelor,
ferestre de dialog, meniuri, rapoarte) cu ajutorul crora utilizatorul s poat iniia diferite
operaiuni de culegere a datelor, prelucrare i obinere a informaiilor solicitate;
modulele de program, care realizeaz prelucrrile din sistem, cum ar fi calculul
salariilor, ntocmirea graficelor de rambursare etc.;
baza de date, n care sunt organizate i stocate toate datele necesare aplicaiei.
Pentru dezvoltarea acestor componente se apeleaz la instrumente diferite, pe care ncercm s
le prezentm n continuare.
Mediile de programare sunt seturi de programe care includ urmtoarele funcii: introducerea i
editarea programului surs, instrumente pentru transformarea programului surs n programe
executabile sau librrii de funcii i instrumente pentru depanarea programelor. ntr-un mediu de
dezvoltare se pot folosi unul sau mai multe limbaje de programare. Exemple de medii de programare
sunt: MS Visual Studio, Oracle JDeveloper, Oracle PowerObjects, Java, Borland Jbuilder, Borland
Delphi, IBM Visual Age, Sybase PowerBuilder. n MS Visual Studio pot fi folosite mai multe limbaje
de programare, cum ar fi: Visual Basic, C# sau C++.
Mediile de programare contribuie la realizarea n cadrul unei aplicaii nu doar a modulelor de
programe pentru prelucrarea datelor, ci i a interfeei utilizator i a legturii cu bazele de date.
Pentru stocarea i gestionarea volumelor mari de date se apeleaz sistemele de gestiune a
bazelor de date. Astzi marea majoritate a aplicaiilor stocheaz datele n baze de date. Bazele de date
cel mai des ntlnite sunt cele organizate dup modelul relaional: Oracle, DB2 produs de IBM, Sybase
SQL Server, MS SQL Server, MS Access, MS Visual FoxPro.
n condiiile globalizrii afacerilor i a dezvoltrii reelelor de calculatoare se simte din ce n
ce mai mult nevoia distribuirii resurselor informaionale ale companiei, respectiv date i/sau programe,
pe mai multe calculatoare. Dezvoltarea unei aplicaii distribuite impune apelarea la arhitectura client
server, care presupune conceperea aplicaiei n termenii a dou categorii de componente: componente
client, care solicit anumite servicii, i componente server, care furnizeaz servicii. Cele dou categorii
de componente vor fi rezidente pe dou sau mai multe calculatoare.
Comunicarea ntre dou componente aflate pe calculatoare diferite sau mascarea eterogenitii
platformelor hardware i software sunt rezolvate prin intermediul soluiilor middleware. Ele sunt un
set de programe care nu au doar rolul de a ascunde natura eterogen a echipamentelor, sistemelor de
operare sau a limbajelor de programare folosite n sistem, ci i de a oferi un mediu de programare mai
comod. Cele mai cunoscute modele midleware sunt RPC (Remote Procedure Call), RMI (Remote
Method Invocation), ODBC (Open Database Connectivity) i CORBA (Common Object Request
Broker Architecture).

Instrumente software pentru afaceri

12

Indiferent de arhitectura software dorit, n cazul n care firma nu dispune de resurse


financiare care s permit achiziionarea unor produse program necesare, se poate apela la soluia
soluii freeware. Aa cum exist aplicaii financiar-contabile gratuite (de exemplu SAGA), tot aa
exist instrumente de dezvoltare software gratuite. Cel mai rspndit limbaj de programare folosit n
medii de programare gratuite este Java. Un SGBD gratuit, care reuete s ajung la un nivel de
complexitate a prelucrrii datelor comparabil cu cel al celor mai bine vndute SGBD-uri este
PostgreSQL. Spre deosebire de alte SGBD-uri gratuite (MySQL), PostgreSQL este capabil s rezolve
interogri complexe adresate bazelor de date pe care le gestioneaz. La capitolul SGBD-uri gratuite
ncepe s concureze i unul dintre cele mai performante SGBD-uri relaionale din lume, Oracle, prin
lansarea versiunii Oracle Database 10g Express Edition.
Dezvoltarea aplicaiilor Web presupune folosirea unor platforme diferite de mediile de
programare specificate anterior. Pentru realizarea rapid a unor site-uri Web se poate apela la
programul MS FrontPage. Uurina n utilizarea acestui instrument software este dat de asemnarea
interfeei sale cu interfeele programelor din cadrul MS Office, de faptul c utilizatorul nu este nevoit
s nvee limbajul HTML i de folosirea unor abloane.
Site-urile Web capt o scalabilitate i o dinamic deosebit atunci cnd folosesc baze de date
n care i salveaz o parte din coninut. Trecerea la site-uri mai complexe nu presupune doar folosirea
resurselor unei baze de date, ci i elemente grafice care s atrag atenia utilizatorului. Ca exemple de
instrumente pentru construirea site-urilor Web complexe putem aminti Dreamweaver, ColdFusion,
Flash i RoboDemo. Aplicaiile Web pot conine elemente de limbaj mprumutate din mediile de
programare tradiionale, cum ar fi VB Scripts sau Java Scripts.

1.4. INSTRUMENTE SOFTWARE PENTRU ECONOMITI


Economitilor li se ofer astzi o serie de instrumente software cu ajutorul crora pot s-i
dezvolte propriile aplicaii informatice, e drept, de complexitate mai redus. n acest paragraf dorim s
trecem n revist astfel de instrumente, cu referire la cele utilizate n dezvoltarea aplicaiilor
economice. n acest sens, dorim s reinem atenia asupra instrumentelor CASE, programelor de calcul
tabelar, sistemelor de gestiune a bazelor de date (SGBD), instrumentelor pentru crearea de pagini Web
i a celor pentru organizarea informaiilor personale.
CASE (Computer Aidded Software Engineering) reprezint un instrument pentru
automatizarea procesului de dezvoltare a programelor. El permite realizarea rapid a unor programe de
calitate, prin sprijinul care-l ofer tuturor activitilor de dezvoltare, de la planificarea sistemelor
informaionale pn la generarea automat i testarea programelor.
CASE se bazeaz pe instrumente grafice i simple, orientate spre utilizatorii fr prea multe
cunotine tehnice, fapt ce permite implicarea lor activ n procesul de dezvoltare a programelor.
Economitii au posibilitatea de a realiza variate sarcini, precum:
planificarea resurselor financiare alocate proiectelor de sisteme informaionale,
redactarea cerinelor funcionale ale aplicaiei,
participarea activ la ntocmirea specificaiilor de proiectare a programelor,
generarea automat a programelor sau a bazei de date fr a avea cunotine tehnice
privind limbajul de programare sau SGBD-ul folosite,

Invmnt la distan Anul I 2008/2009

13

testarea programelor,
generarea automat a documentaiei pentru aplicaia dezvoltat.
Implicarea direct a economitilor n procesul de dezvoltare va determina sporirea anselor de
reuit datorit calitii mai bune a programelor dar i creterii probabilitii de acceptare de ctre ei a
noilor programe. Cele mai cunoscute instrumente CASE sunt Oracle Designer i Visible Analyst.
SGBD-urile sunt, fr ndoial, cele mai populare instrumente software n dezvoltarea
aplicaiilor economice. Datorit acestui fapt, furnizorii au pus la dispoziia utilizatorilor nespecializai
astfel de produse, cele mai utilizate fiind ACCESS, Visual FoxPro, Corel Paradox sau Lotus
Approach. Prin instrumentele grafice furnizate, ele se disting de produsele destinate profesionitilor,
precum Oracle. Apelnd la un astfel de produs, utilizatorii vor fi n msur s dezvolte aplicaii de
complexitate relativ redus, fr a avea cunotine de specialitate.
Principalele faciliti oferite de aceste SGBD-uri sunt:
Crearea i actualizarea bazei de date. Utilizatorii pot defini structura datelor, sub forma
tabelelor i a relaiilor dintre acestea, dar i aspectele de comportament a datelor, sub
forma restriciilor de integritate. De asemenea, ei pot aduga, modifica sau terge date fie
prin intermediul unor ferestre, fie apelnd la comenzile limbajului SQL.
Interogarea bazei de date. Accesarea datelor din baz se poate face prin intermediul unor
faciliti grafice de interogare, dar i prin utilizarea frazei SELECT SQL, de cei cu
cunotine ceva mai avansate.
Dezvoltarea de aplicaii. Utilizatorii au la dispoziie o serie de instrumente prin care pot
crea formulare pentru introducerea datelor n baz, rapoarte pentru extragerea datelor i
prezentarea informaiilor ntr-o form plcut, meniuri pentru exploatarea mai uoar a
aplicaiei, pagini Web. Prin integrarea lor se pot obine aplicaii destul de complexe.
Programele de calcul tabelar, precum EXCEL, LOTUS 1-2-3, QuatroPro au reprezentat
prima categorie de instrumente software destinate utilizatorilor neinformaticieni. Ele pot fi utilizate de
economiti n activitile de planificare i elaborarea bugetelor, n analize complexe privind activitatea
firmei, n procesul decizional etc. Aceste programe sunt considerate instrumente elementare de asistare
a procesului decizional.
Programele de calcul tabelar organizeaz datele n centralizatoare formate din linii i coloane,
la intersecia crora se gsesc csue n care pot fi introduse date numerice i de tip text, precum i
formule complexe de calcul. De asemenea, n centralizatoare pot fi create i afiate grafice. n
momentul introducerii datelor n centralizatoare, calculele din csuele cu formule sunt efectuate
automat, iar rezultatele sunt afiate imediat.
Principalele faciliti de lucru sunt:

o gam larg de funcii predefinite, cum sunt cele financiare, statistice, matematice
etc., pe care utilizatorii le pot folosi n elaborarea unor modele de calcul complexe;

reprezentarea grafic a datelor din centralizatoare;

regsirea uoar a datelor din centralizatoare;

posibilitatea realizrii de operaii specifice bazelor de date, precum extragerea datelor


n funcie de anumite criterii, ordonarea datelor, adugarea, modificarea i tergerea
de date etc.

Instrumente software pentru afaceri

14

efectuarea de analize de tip What-if (Ce se ntmpl dac). De exemplu, putem


gsi rspunsul la ntrebarea Ce se ntmpl cu cota de pia dac vom crete
cheltuielile de promovare cu 10%? Pentru a afla rspunsul la aceast ntrebare, este
suficient s introducem ntr-un centralizator relaia de calcul i datele privind factorii
de influen. Simularea poate continua prin considerarea a unui procent de 15%.

automatizarea unor sarcini de lucru repetitive, prin crearea de macro-programe.


Programele pentru gestiunea informaiilor personale au rolul de a ajuta utilizatorii n
stocarea, organizarea i extragerea informaiilor privind clienii, diferite activiti, ntlniri, edine etc.
De exemplu, informaiile pot fi extrase i prezentate sub forma unui calendar electronic, o list de
ntlniri sau o planificare n timp a activitilor unui proiect. Cele mai cunoscute astfel de programe
sunt Lotus Organizer i Microsoft Outlook.
Furnizorii de software destinate nespecialitilor ofer astzi pachete integrate de programe sub
forma unor suite de programe. Astfel de pachete includ diferite instrumente software care sprijin
utilizatorii n creterea productivitii muncii lor. De regul, ntr-o suit se regsesc un SGBD, un
program de calcul tabelar i un program pentru gestiunea informaiilor personale, la care se adaug un
procesor de texte i unul pentru grafic. n funcie de furnizor, suitele pot include i alte programe.
Cele mai cunoscute suite, precum i cteva dintre componentele lor sunt prezentate n tabelul 1.1.
Tabelul 1.1 Principalele suite de programe i componentele lor
Pachete (suite)

Microsoft Office

Lotus SmartSuite

Corel WordPerfect Office

Calcul tabelar

Excel

Lotus 1-2-3

QuatroPro

SGBD

Access

Approach

Paradox

Gestiunea informaiilor
personale

Outlook

Organizer

Corel Central

Avantajele principalele ale suitelor de programe constau n costul mai redus fa de


cumprarea individual a fiecrui produs inclus, oferirea unei interfee grafice uniforme, adic aceleai
ferestre, meniuri, butoane, linii de stare etc., ceea ce le face mai uor de nvat i, nu n ultimul rnd,
posibilitatea integrrii aplicaiilor dezvoltate cu instrumente software diferite. De exemplu, datele din
baza de date pot fi uor exportate ntr-o aplicaie dezvoltat n programul de calcul tabelar. n schimb,
ele sunt criticate pentru faptul c sunt prea mari i ocup prea mult spaiu pe calculator, mai ales c
unele componente nu sunt folosite niciodat de cei mai muli utilizatori.

1.5. TENDINE N INSTRUMENTE SOFTWARE


Progresele extrem de rapide nregistrate n ultimii ani n domeniul tehnologiilor
informaionale i de comunicaii i pun amprenta i asupra aplicaiilor informatice economice i a
instrumentelor software pentru dezvoltarea acestora. Desprinderea unor tendine n evoluia
instrumentelor software este o ncercare dificil datorit numeroasele evoluii nregistrate n prezent,
unele contradictorii.
Ca o tendin mai general n ce privete dezvoltarea aplicaiilor informatice, se observ
predilecia companiilor ctre achiziia programelor de aplicaii de la furnizorii specializai, n
detrimentul dezvoltrii lor n cadrul campaniei, cu fore proprii sau prin angajarea de specialiti. n
acest context, dou acronime au devenit extrem de populare: ERP i ASP.

Invmnt la distan Anul I 2008/2009

15

La mijlocul anilor 90, multe organizaii au contientizat c nu mai pot rezista pe pia dac vor
continua s utilizeze vechile sisteme informatice neintegrate. Nevoii de integrare i-au rspuns
sistemele ERP (Enterprise Resource Planning). ERP reprezint o mega-aplicaie multi-modular
care integreaz procesele economice i optimizeaz resursele disponibile ale organizaiei, reunind
toate funciunile sale ntr-o singur soluie software. ERP elimin barierele departamentale, prin
integrarea tuturor sistemelor informaionale tranzacionale ntr-o singur baz de date, accesibil oricui
din organizaie 4. Nu n ultimul rnd, se urmrete eliminarea granielor organizaiei cu partenerii si de
afaceri. Dou aplicaii, adesea incluse n soluiile ERP, stau drept mrturie: CRM (Customer
Relationship Management), centrat pe gestiunea relaiilor cu clienii, i SCM (Supply Chain
Management), orientat spre gestiunea relaiilor cu furnizorii.
ERP nu realizeaz doar integrarea funcional, ci i pe cea tehnologic. Sub egida sa sunt reunite
diverse tehnologii, precum: groupware, EDI (Electronic Data Interchange), Internet, Intranet, data
warehouse (depozite de date) etc.
Principalele avantaje obinute prin apelarea la soluiile ERP constau n: reducerea costurilor
produciei i a stocurilor, planificarea integral a resurselor ntreprinderii, mbuntirea productivitii
globale, maximizarea profitului prin flexibilitate i reactivitate sporit la cerinele pieei. Aceste
avantaje nu deriv doar din integrarea funcional i tehnologic, ci i ca urmare a expertizei de care
sunt nsoite soluiile ERP. Furnizorii de astfel de sisteme desfoar ample activiti de cercetare
pentru a gsi cele mai bune practici n diferite domenii de afaceri.
Dincolo de aceste avantaje, apelarea pe scar larg la soluiile ERP este deocamdat limitat,
situaie explicabil prin trei mari neajunsuri: preul exorbitant de mare, timpul ndelungat de
implementare i adaptabilitatea redus la condiiile particulare din firm. Soluiile ERP implic riscuri
destul de mari pentru firme, legate de volumul mare al investiiilor iniiale, costuri ascunse
semnificative, incertitudini privind adaptabilitatea ei i responsabilitile sporite ncredinate
personalului.
Cel de-al doilea acronim, ASP, a devenit cunoscut odat cu tendina, din ce n ce mai accentuat,
de externalizare a serviciilor informaionale, n scopul reducerii costurilor i mbuntirii
performanelor acestora. Externalizarea serviciilor informaionale cuprinde o palet larg de
posibiliti, de la externalizarea integral a lor i pn la externalizarea dezvoltrii unei pri a
sistemului informaional. Externalizarea serviciilor informaionale este astzi posibil prin apelarea la
furnizorii specializai, numii ASP (Application Service Providers). ASP reprezint o companie care
dezvolt i furnizeaz servicii informaionale folosite n comun de mai muli utilizatori, care pltesc un
abonament sau taxe de folosire, serviciile fiind furnizate dintr-o locaie central prin Internet sau
printr-o reea privat. Un ASP permite clienilor si accesul la un mediu de aplicaii complet,
preocupndu-se de investiiile necesare n licene de aplicaii, servere, angajai i alte resurse.
Apelarea la serviciile unor astfel de furnizori ofer numeroase beneficii, dintre care amintim:

investiii iniiale modeste i predictibilitatea costurilor, deoarece pentru aceste servicii se


pltete o tax fix pe principiul plteti pe msur ce utilizezi;

posibilitatea de a fi mereu n pas cu progresele tehnologice;

Fotache D., Hurbean, L. Soluii informatice integrate pentru gestiunea afacerilor ERP, Ed. Economic,
Bucureti, 2004, p. 16

Instrumente software pentru afaceri

16

posibilitatea nchirierii aplicaiilor scumpe, inaccesibile companiilor mici i mijlocii sau a


celor cu investiii iniiale importante;

acces la suport tehnic i consultan de specialitate pentru servicii cu nalt nivel tehnologic;

obinerea de aplicaii funcionale ntr-un interval de timp foarte scurt.


n ultimul timp se manifest tendina extinderii serviciilor furnizate, conceptul ASP fiind
nlocuit cu XSP. Spre deosebire de ASP, XSP (X semnific servicii generice) nu ofer doar aplicaii,
ci i tehnologii, sisteme i procese economice. Actorii de pe aceast pia vor fi marile companii (de
exemplu Microsoft, Oracle, Sun), care sunt capabile s realizeze investiii foarte mari pentru crearea
infrastructurii necesare oferirii de servicii n reea bazate pe Internet. Modelul XSP promite numeroase
beneficii: firmele vor putea s cumpere doar funcionalitatea pe care o doresc i atunci cnd o doresc,
reducnd astfel investiiile n tehnologiile informaionale; transferul responsabilitii i riscurilor
meninerii permanente n pas cu noile tehnologii; firmele pot activa pe pia nu doar pe post de
consumator de servicii ci i cel de furnizor; uurina modificrii proceselor i a relaiilor de parteneriat
n funcie de condiiile de pe pia.
Dincolo de aceste beneficii, unele probleme rmn nc nerezolvate sau, cel puin, neclare:
securitatea serviciilor informaionale disponibile pe pia; protecia datelor sensibile ale clienilor;
posibilitatea furnizrii de aplicaii critice pe web n condiii de siguran sporit; portabilitatea
aplicaiilor i interoperabilitatea componentelor sale.
n ce privete strict limbajele de programare, reinem dou tendine: limbajele orientate-obiect,
limbajele orientate-Internet i limbajele naturale. Ele nu sunt tocmai noi, ns n prezent se
nregistreaz o extindere a utilizrii lor, n ncercrile obsedante de apropiere de limbajul uman i de
mbuntire a productivitii muncii programatorilor.
Limbajele orientate-obiect modeleaz sistemul informaional sub forma unui set de obiecte
care interacioneaz ntre ele prin schimbul de mesaje. Un obiect integreaz datele i aciunile
(procedurile) care pot fi executate asupra datelor, numite metode. Astfel, spre deosebire de limbajele
anterioare, datele i programele de prelucrare a acestora nu mai sunt separate. ntr-o banc, contul de
card al unui client reprezint un obiect. Numele clientului, adresa sa, numrul contului, numrul
cardului, soldul contului, limita de credit reprezint datele, referite i ca proprieti, iar retragerea de
numerar, depunerea, transferul bancar, schimbarea cardului reprezint aciuni, numite metode, care
descriu comportamentul obiectului.
Una dintre caracteristicile acestor limbaje se refer la faptul c datele unui obiect sunt ascunse
fa de alte pri ale programului, proprietate numit ncapsulare. Datele pot fi manipulate numai din
interiorul obiectului, prin intermediul metodelor disponibile. Un alt obiect sau un utilizator care
dorete s modifice anumite date vor trebui s apeleze una dintre metodele obiectului. n acest fel,
fiecare obiect reprezint o unitate independent de program, ce poate fi utilizat n diferite moduri
fr a fi necesar modificarea programului. Aceast caracteristic permite reducerea drastic a
timpului i costului de scriere a programelor, prin reutilizarea programelor n alte aplicaii
asemntoare.
Reutilizabilitatea programelor este facilitat de alte dou concepte specifice limbajelor
orientate-obiect: clas i motenire. Obiectele cu proprieti similare sunt reunite n aceeai clas.
Clasele sunt organizate ierarhic n superclase i subclase. Motenirea permite definirea unei clase de
obiecte ca un caz particular al altei clase mai generale, numit superclas. O clas va moteni

Invmnt la distan Anul I 2008/2009

17

proprietile i metodele superclasei, ns va putea modifica definiiile acestora sau aduga proprieti
i metode noi. De exemplu, STUDENT poate fi considerat o clas n sistemul de eviden a
studenilor, iar un anumit student va reprezenta o instan a acestei clase, adic un obiect. Clasa
STUDENT poate fi considerat o subclas a FIINTA_UMANA, aceasta fiind superclasa. La rndul
su, STUDENT poate avea ca subclas STUDENT_BURSIER. Aceast clas va avea, n plus fa de
student, proprietatea TipBursa. Oricum, proprietile i metodele clasei STUDENT sunt motenite de
STUDENT_BURSIER.
Un alt mare avantaj al limbajelor orientate-obiect, pe lng reutilizabilitate, se refer la faptul
sunt mai apropiate de modul n care utilizatorii vd lumea. Se consider c este mult mai natural
descrierea realitii nconjurtoare n termenii claselor de obiecte, cu proprieti i comportament,
dect sub forma unor funcii de prelucrare i a datelor, aa cum cereau limbajele anterioare.
Limbajele orientate-obiect au aprut n anii 70, odat cu Smalltalk. Astzi, cele mai utilizate
limbaje sunt Java i C#.
Dezvoltarea limbajelor orientate-obiect a determinat apariia unei alte tehnologii, numit
programarea vizual. Aceste limbaje dispun de un mediu grafic ce permite programatorilor s
dezvolte aplicaii prin manipularea direct a unor imagini, n loc de scrierea de programe. Visual Basic
este cel mai cunoscut astfel de limbaj, ns tot aici se nscriu DELPHI, Power Objects i Visual C++.
Limbajele de programare orientate-obiect au influenat i alte domenii ale sistemelor
informaionale, astfel c astzi exist metode de analiz i proiectare orientate-obiect, sisteme de
gestiune a bazelor de date orientate obiect (SGBDOO), instrumente CASE orientate-obiect.
Limbajele orientate-Internet se refer la tehnologiile care stau la baza dezvoltrii aplicaiilor
Web, cele mai importante fiind limbajele HTML i XML.
HTML (HyperText Markup Language) reprezint un limbaj de descriere utilizat pentru
crearea paginilor Web sub forma documentelor hypertext sau hypermedia. El este derivat din SGML
(Standard Generalized Markup Language), o metod de reprezentare a limbajelor de formatare a
documentelor, ceea ce permite ca la crearea documentelor s se separe informaia de modul de
prezentare a ei. Aceasta nseamn c documente care conin aceeai informaie pot fi diferite prin
modul de prezentare, adic tipul i mrimea fontului, spaierea paragrafelor etc., fr ca informaia s
fie modificat. HTML utilizeaz instruciuni numite tag-uri, pentru a descrie cum vor fi plasate n
document informaiile de tip text, grafic, video i sunet i pentru a crea legturi dinamice (numite i
hiper-legturi) ctre alte documente i obiecte stocate pe acelai calculator sau pe altul. Aceste legturi
permit utilizatorului s deschid un alt document printr-un simplu clic pe un text subliniat sau pe o
imagine.
Popularitatea nregistrat de acest limbaj a determinat principalii furnizori de software s-l
includ n produsele lor. Astzi, majoritatea procesoarelor de text, programelor de calcul tabelar,
programelor de procesare grafic sau sistemelor de gestiune a bazelor de date ofer faciliti pentru
generarea automat a documentelor n format HTML. De asemenea, dup cum am vzut n paragraful
anterior, au fost puse la dispoziia utilizatorilor instrumente software speciale pentru dezvoltarea
paginilor Web, fr a fi nevoie s se scrie programe HTML. Cele mai cunoscute sunt Microsoft
FrontPage i Lotus FastSite.
XML (eXtensible Markup Language) nu este un limbaj de descriere a formatului unei
pagini Web, ci un limbaj de descriere a coninutului paginilor Web. De exemplu, informaiile privind

Instrumente software pentru afaceri

18

zborurile aeriene de pe pagina Web a unei agenii de turism vor fi descrise prin intermediul tag-urilor
XML. El este derivat tot din standardul SGML.
Exemple de teste gril
1. Care dintre urmtoarele instrumente software se adreseaz economitilor, ca utilizator final
informatizat?
a) Programe de calcul tabelar
b) Limbajul Java
c) Produsele de tip CASE
d) Limbajele de ansamblare (numite i simbolice)
2. Evoluia limbajelor de programare reflect progresele nregistrate n privina:
a) Eficienei utilizrii resurselor calculatoarelor
b) Productivitii muncii programatorilor
c) Apropierii de limbajul uman
d) Memorarea datelor

Invmnt la distan Anul I 2008/2009

19

Capitolul 2

STRUCTURI DE DATE I STRUCTURI DE PRELUCRARE

Obiective:
i.
ii.

Prezentarea principalelor structuri de date i a structurilor de prelucrare;


Prezentarea unor exemple pe tipuri de date i structuri de prelucrare.

Rezultate ateptate:
i.
ii.
iii.

Utilizarea structurilor de date n proceduri simple;


Utilizarea structurilor de prelucrare n programe;
Posibilitatea adaptrii practice a studiilor de caz pe situaii particulare;

Instrumente software pentru afaceri

20

2.1. ASPECTE INTRODUCTIVE


Literatura de specialitate subliniaz importana deosebit a nelegerii corecte a principalelor
structuri de date i a structurilor de prelucrare folosite n activitatea de programare, precum i n
formarea specialitilor n domeniul instrumentelor software.
O structur de date reprezint o modalitate de organizare a datelor care acoper data
elementar propriu-zis i relaiile acesteia cu alte date. Selectarea n activitatea de programare a unei
structuri de date adecvate poate conduce la avantaje importante, ntre care: utilizarea eficient a
memoriei, eficientizarea prelucrrilor i chiar reducerea costurilor de programare.
Prin structuri de prelucrare sau structuri algoritmice de prelucrare ne referim la acele
modaliti de organizare a controlului n prelucrarea prin program/proceduri a unor structuri de date i
nu numai.
Este important de subliniat faptul c structurile de date sunt strns legate de structurile
algoritmice prin care se eficientizeaz operaiile de creare i actualizare a structurilor de date, dar i
operaii de cutare i sortare a acestora. Toate aceste structuri de date i de prelucrare se bazeaz pe
memoria calculatorului. n cel mai simplu mod trebuie privit memoria ca fiind o structur liniar de
celule/locaii n care se depoziteaz date cu valori corespunztoare (figura 2.1).
Trebuie s facem precizarea c adresele de memorie nu se codific dup o regul uor de
neles i de utilizat n activitatea de programare. Iat, spre exemplu, o adres de memorie: AF0021E.
Acest fapt a condus la necesitatea atribuirii de nume n logica utilizatorilor de medii de programare i
a problemei de rezolvat.
Produs

Pret

UM

Intrare

Data

paine

0.5

buc

100

05/12/05

A1

A2

An

Figura 2.1 Atribuirea numelor la celulele de memorie


Dup o asemenea mprire a memoriei i atribuirea de adrese i nume, putem stoca date n
oricare din celule, n funcie de ce ne-am propus prin numele asociat. Cu alte cuvinte, constatm c la
Pret nu putem introduce dect valori numerice iar la UM numai text. Astfel, se realizeaz o
specializare a acestor celule n funcie de coninutul lor pe tipuri de valori. Aceast caracteristic a
celulei poart numele de tip i poate fi: numeric, alfabetic, alfanumeric, logic, dat calendaristic . a.

2.2. STRUCTURI DE DATE


2.2.1. Clasificri ale principalelor structuri de date
Compoziia intern a unei date impune gruparea acestora n date structurate i date
elementare. O dat elementar se definete ca fiind un atribut care nu poate fi descompus din punct

Invmnt la distan Anul I 2008/2009

21

de vedere logic. La rndul lor, datele structurate sau compuse se definesc ca fiind o grupare de date
elementare i chiar de alte date compuse.
Trebuie precizat c toate datele n baze de date sau entiti sunt declarate n dicionarul de date
pe ultimul nivel ca fiind date elementare.
La rndul lor, datele structurate se grupeaz n:

Date structurate de nivel redus, care permit operaii la nivel de component. Sunt
incluse n aceast categorie tablourile i articolele;

Date structurate de nivel nalt, care permit operaii implementate de algoritmi


utilizator. n aceast categorie intr: liste liniare, liste liniare ordonate, stiva i coada.

2.2.2. Date elementare, tablouri i pointeri


O dat elementar reprezint cea mai simpl modalitate de reprezentare logic a unei
informaii. n categoria datelor elementare sunt incluse:
Numere ntregi: celule sau locaii de memorie n care sunt stocate numere ntregi. Asupra
acestor date se pot aplica operaiile aritmetice cunoscute: +, -, ...;
Numere reale: celule de memorie n care sunt stocate numere raionale. Ca i n cazul
numerelor ntregi asupra lor se pot aplica operaiile aritmetice;
Valori booleene: celule sau locaii de memorie n care sunt stocate valorile logice true sau
false. Aceste date fac obiectul operaiilor/operatorilor: and, or, not.
Caractere: celule sau locaii de memorie n care sunt stocate iruri de caractere alfabetice de
genul a, b, abc, Popescu . Pentru aceste date se pot aplica operaii speciale de concatenare i
comparaie.
n tabelul 2.1. prezentm cteva exemple de date elementare.
Tabel 2.1. Prezentare variabile de lucru
Nr.
crt.

Nume_dat

Valoare

Tip

Produs

Paine

ir de caractere

Pre

0.5

Numeric

UM

Buc

ir de caractere

Intrare

100

Numeric

Data

05/12/05

Dat calendaristic

Particularizm crearea datelor elementare din tabelul 2.1 n Visual Basic for Application:
Sub algoritm()
' creare -initializare
produs = "paine"
pret = 0.5
um = "buc"
intrare = 100
data = "12/12/2005"
' calcul valoare
v = pret * intrare

' creare variabila produs si intializare cu "paine"


' creare variabila pret si intializare cu 0.5
' creare variabila UM si intializare cu "buc"
' creare variabila intrare si intializare cu 100
' creare variabila data si intializare cu "12/12/2005"
' creare variabila v si incarcare cu produsul dintre continutul
' variabilei pret cu cel al variabilei intrare

' afiare rezultate


MsgBox "Variabila v contine: " & Str(v)
MsgBox "Total intrari " & produs & ": " & Str(v) & " RON"
End Sub

' Afisare variabila v


' Afisare rezultate finisate

Instrumente software pentru afaceri

22

Observaie: semnul ' de pe linia cu instruciuni permite ataarea unui comentariu.


Rezultatul execuiei acestui Algoritm este cel din figura 2.2.

Figura 2.2 Rezultate la execuia procedurii Algoritm


Acelai algoritm se putea scrie i astfel:
Public produs As String ' se creaza in mod public variabila produs de tip sir
Public pret
' se creaza in mod public variabila pret de tip variant
Public um As String
Public intrare
Public data As Date
' se creaza in mod public variabila produs te tip data calendaristica
Public v
Sub algoritm()
' creare-initializare
produs = "paine"
' intializare cu "paine"
pret = 0.5
' intializare cu 0.5
um = "buc"
' intializare cu "buc"
intrare = 100
' intializare cu 100
data = "12/12/2005"
' intializare cu "12/12/2005"
' calcul valoare
v = pret * intrare
' incarcare cu produsul dintre continutul lui pret si cel al variabilei intrare
' afiare rezultate
MsgBox "Variabila v contine: " & Str(v)
' Afisare variabila v
MsgBox "Total intrari " & produs & ": " & Str(v) & " RON" ' Afisare rezultate finisate
End Sub

Un tablou se definete ca fiind cea mai simpl dat structurat organizat sub form tabelar.
O caracteristic important a unui tablou o reprezint dimensiunea acestuia. Un tablou cu o singur
dimensiune (o singur coloan) poart denumirea de vector, iar un tablou cu dou dimensiuni poart
denumirea de matrice. n figura de mai jos reprezentm schematic un vector i o matrice.
Din figura urmtoare i din definiiile date trebuie s se rein faptul c n fiecare celul a unui
tablou se regsete o dat elementar.

1
1

A(1)

A(1,1)

A(1,2)

A(2)

A(2)

A(i,1)

A(i)

A(n)

a. Tablou cu o singur dimensiune


(vector)

A(n,1)

A(1,j)

A(2)

A(2,j)

A(2,m)

A(i,2)

A(i,j)

A(i,m)

A(n,2)

A(n,j)

A(n,m)

b. Tablou cu dou dimensiuni (matrice)

Figura 2.3 Structuri de date de tip tablou

A(1,m)

Invmnt la distan Anul I 2008/2009

23

Exemplul precedent, de la datele elementare, se poate converti sub urmtoarea form folosind
un tablou cu o singur dimensiune.
Sub Alg_tablou_1()
' creare-initializare
Dim aprov(5)
aprov(0) = "paine"
' intializare cu "paine"
aprov(1) = 0.5
' intializare cu 0.5
aprov(2) = "buc"
' intializare cu "buc"
aprov(3) = 100
' intializare cu 100
aprov(4) = "12/12/2005" ' intializare cu "12/12/2005"
' calcul valoare
aprov(5) = aprov(1) * aprov(3)
' afisare rezultate
MsgBox "Total intrari " & produs & ": " & Str(aprov(5)) & " RON" ' Afisare rezultate finisate
End Sub

n Visual Basic se pot crea tablouri cu maximum 60 de dimensiuni. Noi vom particulariza
crearea pe un tablou cu dou dimensiuni. Astfel vom considera intrrile de pine pe 3 zile.
Sub Alg_tablou_2()
' creare-initializare
Dim aprov(5, 1)
' prima zi
aprov(0, 0) = "paine"
' intializare cu "paine"
aprov(1, 0) = 0.5
' intializare cu 0.5
aprov(2, 0) = "buc"
' intializare cu "buc"
aprov(3, 0) = 100
' intializare cu 100
aprov(4, 0) = "12/12/2005"
' intializare cu "12/12/2005"
' a doua zi
aprov(0, 1) = "paine"
' intializare cu "paine"
aprov(1, 1) = 0.5
' intializare cu 0.5
aprov(2, 1) = "buc"
' intializare cu "buc"
aprov(3, 1) = 100
' intializare cu 108
aprov(4, 1) = "12/12/2005"
' intializare cu "12/12/2005"
' a treia zi
aprov(0, 2) = "paine"
' intializare cu "paine"
aprov(1, 2) = 0.5
' intializare cu 0.5
aprov(2, 2) = "buc"
' intializare cu "buc"
aprov(3, 2) = 100
' intializare cu 116
aprov(4, 2) = "12/12/2005"
' intializare cu "12/12/2005"
' calcul valoare
aprov(5, 0) = aprov(1, 0) * aprov(3, 0)
aprov(5, 1) = aprov(1, 1) * aprov(3, 1)
aprov(5, 2) = aprov(1, 2) * aprov(3, 2)
' afisare rezultate
MsgBox "Intrari Luni" & produs & ": " & Str(aprov(5, 0)) & " RON"
MsgBox "Intrari Marti" & produs & ": " & Str(aprov(5, 1)) & " RON"
MsgBox "Intrari Miercuri" & produs & ": " & Str(aprov(5, 2)) & " RON"
End Sub

Pointer-ul reprezint o legtur ctre o dat elementar. Cu alte cuvinte, o variabil care
conine o adres sau un nume de variabil pentru o alt dat elementar. Schematic un pointer se
reprezint ca n figura de mai jos.

Instrumente software pentru afaceri

24

V1
Adr1

Adr2

Nume variabil: V1
Adres: Adr1
Coninut/Valoare: Adr2

V2
Adr2

Iasi

Nume variabil: V2
Adres: Adr2
Coninut/Valoare: Iai

Figura 2.4. Reprezentare pointer V1


Explicaii referitoare la pointer:
- n limba romn pointer nseamn ac indicator sau simplu indicator, adic un
instrument care ne indic o direcie;
- tiind numele variabilei pointer, n cazul nostru v1, putem ajunge la valoarea
variabilei v2.

2.2.3. Liste
O list reprezint o colecie omogen i secvenial de date. Astfel, aceasta constituie cea mai
comun dat structurat. Schematic cea mai simpl list se reprezint ca n figura de mai jos.
Intrare
list

Ieire
list

Figura 2.5. Reprezentare list simpl


O asemenea list mai poart denumirea de list liniar sau simpl, adic un set de date
elementare stocate n locaii de memorie consecutive. ntr-o asemenea list vom distinge:

Nodul, adic acea component n care se conine o dat elementar;

Lungimea, adic numrul de noduri din list,

Definiia pentru stabilirea ordinii nodurilor, adic pentru fiecare nod exist un
predecesor i un succesor.
n situaia n care definiia pentru stabilirea ordinii nodurilor conine o regul care conduce la
o succesiune ntre ultimul nod i primul nod, atunci discutm de liste circulare.
B

C
F

Figura 2.6. Reprezentare list circular

Invmnt la distan Anul I 2008/2009

25

Unei liste i se pot aplica operaii de actualizare (modificare, inserare i tergere) nod-uri din
list, operaii de concatenare cu alt list i de numrare a nodurilor declarate.
Pentru implementarea unei liste se pot folosi dou strategii:
a. Implementarea secvenial sau static, ceea ce presupune atribuirea de locaii succesive de
memorie n coresponden cu ordinea nodurilor din list.
b. Implementarea nlnuit sau dinamic. n acest caz, fiecare nod conine dou pri: informaia
propriu-zis i adresa nodului succesor.
n practic se ntlnesc dou cazuri particulare de liste:
a. Stive. O stiv (stack) este o list liniar cu proprietatea c operaiile de inserare/extragere a
nodurilor se fac n/din coada listei. Dac nodurile A, B, C, D sunt inserate ntr-o stiv n aceasta
ordine, atunci primul nod care poate fi extras este D. In mod echivalent, spunem ca ultimul nod inserat
va fi i primul ters. Din acest motiv, stivele se mai numesc i liste LIFO (Last In First Out), sau liste
pushdown.
b. Cozi. O coada (queue) este o list liniar n care inserrile se fac doar n capul listei, iar
extragerile doar din coada listei. Cozile se numesc i liste FIFO (First In First Out).

2.2.4. Arbori
Arborii reprezint o dat structurat cu dou-dimensiuni n care nodurile formeaz o ierarhie.
Astfel, o asemenea structur de date dispune de un nod rdcin (plasat fie n vrf, fie la baza
arborelui). La rndul su. un nod rdcin dispune de unul sau mai multe niveluri de noduri-copil,
care pot s aib, la rndul lor, proprii lor noduri-copil. Astfel, putem spune c ntr-un arbore deosebim:
nodul rdcin, noduri copil i noduri-printe. Mai multe noduri subordonate succesiv unul altuia
formeaz o ramur, iar un nod care nu are subordonat un nod-copil se numete nod frunz. n forma sa
cea mai sintetic un arbore se reprezint ca n figura 2.7.

Figura 2.7 Exemplu de structur ierarhic arborescent


Pe exemplu din figura precedent particularizm urmtoarele tipuri de noduri:

nod rdcin: a;

noduri copil: b, c, d, e, f, g, h, i, j i k;

nod printe: b fa de e i f; c fa de g; d fa de h i i; f fa de j i k;

ramur: a, b i e;

Instrumente software pentru afaceri

26

noduri frunz: e, j, k, g, h i i;
n literatura de specialitate sunt prezentai: arbori cu rdcin (figura 2.8.a), arbori binari
(figura 2.8.b), arborii multi-cale (figura 2.8.c).

b. Arbore binar

a. Arbore cu rdcina
A

valoarea vrfului
adresa fiului din stnga
adresa fiului din dreapta

valoarea nodului-fiu
din stnga

D
B

c. Arbori multi-cale

d. Memorarea valorilor i adreselor n noduri

Figura 2.8 Reprezentri grafice ale arborilor


Reprezentarea unui arbore cu rdcin se poate face prin adrese cu ajutorul listelor nlnuite.
n cazul arborelui binar se observ c fiecare nod-printe are n subordine cte dou noduri-copil.
Dup cum se observ i din figura 2.8.d., fiecare nod va fi memorat n trei locaii diferite ale unei
listei, dup cum urmeaz: o locaie va fi folosit pentru valoarea propriu-zis a nodului, o a doua
locaie va fi destinat pentru memorarea adresei celui mai vrstnic fiu, iar a treia locaie pentru adresa
urmtorului frate. Cu alte cuvinte, legtura ntre un nod-printe i un nod-copil se realizeaz prin
intermediul pointerilor.
Not: Sesizm faptul c pentru arbori se face trimitere la liste, pentru a cror reprezentare se
folosesc tablourile bi-dimensionale. Iat de ce tablourile reprezint cea mai simpl dat structurat.

2.2.5. Structuri de date externe: articolul i fiierul


Fiierul reprezint o colecie ordonat de date. Urmare a faptului c stocarea datelor se face pe
supori de memorie extern, fiierul este definit i ca structur de date extern.
Structura ordonat de date din cadrul fiierului poart denumirea de articol, care la rndul su
este constituit dintr-o mulime ordonat de valori ale cror caracteristici aparin unei entiti din
domeniul unei probleme. Caracteristicile descrise prin intermediul valorilor din articolele unui fiier le
vom regsi sub denumirea de cmpuri.

Invmnt la distan Anul I 2008/2009

27

Figura 2.9 Reprezentri ale structurilor de date externe de tip articol i fiier 5
Din punct de vedere al activitilor de programare este interesant s cunoatem metoda de
organizare i tipul de acces aferente structurilor de date externe.
a. Metoda de organizare. Aceasta poate fi una din urmtoarele: secvenial, relativ i
indexat;
b. Tipul de acces la date n operaii de citire i scriere a valorilor din /n cmpuri. Se poate
folosi accesul secvenial sau accesul direct.

2.3. STRUCTURI ALGORITMICE DE PRELUCRARE


Principala sarcin a unui mediu de programare (instrument software) const n a permite
definirea structurilor de date ntr-un mod eficient i de a asigura accesul, manipularea, actualizarea
i controlul asupra acestora prin intermediul algoritmilor i structurilor de prelucrare /control.
Structurile de prelucrare /control constituie aportul cel mai de seam al metodei de programare
structurat, care a impus utilizarea a trei tipuri de structuri fundamentale, toate cu o singur intrare i o
singur ieire, renunndu-se n fapt la utilizarea n activitatea de programare la instruciunea GOTO.
Cele trei tipuri de structuri fundamentale sunt:
- secveniale;
- alternative;
- repetitive.
n figura de mai jos punem n eviden aceste tipuri i instruciunile corespunztoare.

Capitolele 4, 5 i 6 prezint exemple suplimentare de structuri de date de tip fiiere (tabele) i articole.

Instrumente software pentru afaceri

28

Figura 2.10 Structurile de control fundamentale


n Visual Basic for Application (VBA) cele trei structuri de control fundamentale se codific
n mod direct prin comenzi specifice acestui mediu de programare.
A. Structuri secveniale
Ca n orice mediu de programare VBA asigur operaii de atribuire i operaii de intrare/ieire,
dup cum urmeaz:

Atribuirea se realizeaz cu instruciune LET sau direct cu folosire semnului =, ca n


exemplul precedent.

Sub atribuire()
precizare variabilele care se folosesc mai jos trebuie in principiu declarate (create) inainte
LET cont=212
se atribuie valoarea numerica 212 pentru variabila cont
Den = Mijloace fixe se atribuie irul Mijloace fixe pentru variabila den
Tip_C= True
valoarea True este atribuit conturilor de activ
Data=#12/31/2004#
se atribuie valoarea 31.12.2004 variabilei data
Nota: Trebuie se foloseste semnul #, iar formatul este ll/zz/aaaa
End Sub

Operaia de atribuire prin citirea datelor introduse de utilizator este asigurat de


instruciunea InputBox. Cu alte cuvinte, aceast instruciune ne permite introducerea

Invmnt la distan Anul I 2008/2009

29

de la tastatur a valorilor pentru o anumit variabil. Exemplul de mai sus se


transform n urmtorul:
Sub citire()
Cont = InputBox(Simbol cont,Introduceti o valoare, 0)

se permite citirea (preluarea) n


variabila cont a raspunsului dat de
utilizator

Den = InputBox(Denumire cont:,Introduceti o valoare, )


Data= InputBox(Data operatiei:,Introduceti o valoare in formatul ll/zz/aaaa, 0)
End Sub

Formatul instruciunii InputBox este urmtorul:


InputBox(mesaj, [titlu, valoare_implicita])
Precizri:
- Mesaj trebuie scris ntre ghilimele sau se poate prelua dintr-o variabil de tip ir. Este
textul ce apare ca explicaie n interiorul ferestrei;
- Titlu i valoare_implicit sunt facultative;
- Titlu trebuie scris intre ghilimele sau se poate prelua dintr-o variabil de tip ir. Este
textul ce apare pe linia de titlu a ferestrei;
- Valoare_implicit este valoarea care va apare n rubrica de completat;
- Fereastra rezultat are i butoanele predefinite OK i Cancel (vezi figura 2.11)
Spre exemplu, din procedura Citire() rezultatul executrii liniei
Cont = InputBox(Simbol cont,Introduceti o valoare, 0)
este prezentat n figura 2.17.

Figura 2.11 Rezultatul execuiei liniei Cont = InputBox(Simbol cont,Introduceti o valoare, 0)

Operaia de ieire este uor de evideniat cu ajutorul instruciunii MsgBox, care


permite afiarea unui text ntr-o fereastr de dialog. Cea mai simpl utilizare este
atunci cnd dorim sa vizualizm coninutul unei variabile, ca n exemplul de mai jos.

Sub citire()
Cont = InputBox(Simbol cont,Introduceti o valoare, 0)
Den = InputBox(Denumire cont:,Introduceti o valoare, )
Data= InputBox(Data operatiei:,Introduceti o valoare in formatul ll/zz/aaaa, 0)
MsgBox ("Informatii despre cont")
MsgBox ("Denumire cont: " & Den)
MsgBox ("Simbol cont: " & Str(cont))
MsgBox ("" & data)

afiseaza text simplu


afiseaza denumire cont cu text in fata
afiseaza textul simbol cont: dupa care simbolul introdus
afiseaza o data calendaristica

End Sub

Prezentm n figura 2.12 fereastra afiat pentru instruciunea MsgBox ("Denumire cont: " &
Den) i a instruciunii MsgBox ("Denumire cont: " & Den).

Instrumente software pentru afaceri

30

Figura 2.12 Rezultate la execuia instruciunilor de tip MsgBox


n chenarul de mai jos oferim spre exemplificare o utilizare mai complicat a instruciunii
MsgBox dar pentru preluare a rspunsului de la utilizator.
Sub MesajBox()
Dim Mesaj, Butoane, Titlu, Help, Raspuns, Rasp
Mesaj = "Doriti sa continuati ?"
Butoane = vbYesNo + vbCritical + vbDefaultButton2
Titlu = "Titlu fereastra"
Help = "Ajutor.txt"
Raspuns = MsgBox(Mesaj, Butoane, Titlu, Help, 1000)
If Raspuns = vbYes Then
Rasp = "Yes"
Else
Rasp = "No"
End If
End Sub

' Definim variabilele de lucru


' Definim mesajul
' Definim butoanele
' Definim titlul ferestrei
' Definim fisierul de ajutor
' Selectie Yes
' Executa o actiune pentru Yes
' Selectie No
' Executa o actiune pentru No

n figura 2.13. prezentm rezultatul dup lansarea n execuie a procedurii de mai sus.

Figura 2.13 Preluare rspuns prin MsgBox


B. Structurile de control alternative
Aa cum rezult i din figura 2.10 n cadrul structurilor de control alternative distingem:

structuri de control alternative cu ramur dubl;

structuri de control alternative cu ramur vid;

structuri de control alternative generalizate.

a. Codificarea structurilor de control alternative cu ramur dubl i a celor cu ramur vid


se realizeaz cu ajutorul comenzii: IF THEN ELSE ENDIF. Formatul acestei comenzi este:
IF <condiie> THEN
<set_comenzi1>
[ELSE
<set_comenzi2>]
END IF
Pentru codificarea structurii de control alternative cu ramur vid formatul comenzii IF
devine :
6

Se observ c n formatul precedent ramura ELSE este opional (inclus n paranteze drepte.)

Invmnt la distan Anul I 2008/2009

31

IF <condiie> THEN
<set_comenzi>
END IF

Exemplu de utilizare Vom exemplifica aceast structur de control pe selecia folder-ului


(directorului) de lucru pentru o aplicaie ce poate fi lansat n laboratoarele facultii sau pe un
calculator personal (acas sau la serviciu).
Sub Mod_IF()
' construim fereastra de interogare a dorintei utilizatorului
Dim dir As Object
Set dir = CreateObject("Scripting.FileSystemObject")
Dim cale, cale_nou
Dim Mesaj, Butoane, Titlu, Help, Raspuns
Mesaj = "Lucrati in laboratoarele FEAA <Yes-Da; No-Nu>?"
Butoane = vbYesNo + vbCritical + vbDefaultButton2
Titlu = "Selectati un raspuns !"
Help = "Ajutor.txt"
Raspuns = MsgBox(Mesaj, Butoane, Titlu, Help, 1000)

'Definim variabilele de lucru


'Definim mesajul
'Definim butoanele
'Definim titlul ferestrei
'Definim fisierul de ajutor
Stocarea raspunsului in Raspuns

' **** Selectia unitatii de lucru D sau Z


If Raspuns = vbYes Then
cale = "Z:"
Else
cale = "D:"
End If
ChDir (cale)
' **** Testarea existentei directorului VBA pe unitatea de disc selectata
cale_nou = "" & cale + "\VBA"
'construirea caii de lucru complete
If dir.FolderExists(cale_nou) Then
'testarea existentei directorului VBA
MsgBox "VBA este directorul de lucru de pe " & cale
Else
Raspuns = MsgBox("Nu exista directorul VBA pe " & cale, vbOKOnly, "Informatie")
MkDir (cale_nou)
'crearea noului director VBA in cazul in care nu exista
Raspuns = MsgBox("VBA a fost creat si va fi directorul de lucru de pe " & cale, vbOKOnly, "Informatie")
End If
ChDir (cale_nou)
'stabilirea directorului de lucru
End Sub

n procedura de mai sus se observ dou instruciuni IF una dup alta. Exist ns posibilitatea
ca pe ramura Else a unei structuri IF s nu fie nici o secven, ceea ce ne conduce la o structur
alternativ cu ramur vid de forma IF THEN END IF, dar i la posibilitatea ca pe oricare din
cele dou ramuri s apar o alt structur alternativ, ceea ce ne-ar conduce la un IF imbricat de forma
IF THEN If Then Else End If ELSE END IF.
b. Codificarea structurilor de control alternative generalizate se realizeaz cu ajutorul
comenzii: SELECT CASE CASE CASE ELSE END SELECT. Formatul general pentru
aceast comand este urmtorul:
SELECT CASE <var>
CASE <var_1>

Instrumente software pentru afaceri

32

<set_comenzi_1>
[CASE <var_2>
<set_comenzi_2>]
[CASE <var_k>
<set_comenzi_k>]
[]
[CASE <var_m>
<set_comenzi_m>]
CASE ELSE
<set_comenzi>]
END SELECT
Modul de utilizare a acestei comenzi este simplu i const n a identifica cazurile de descris,
care se vor reprezenta sub forma unor condiii. De fiecare dat se compar coninutul variabilei <var>
cu coninutul variabilelor <var_1>, <var_2> . Dac se ajunge s fie indeplinit o condiie
<var>=<var_k> se va executa set_comenzi_k (k poate fi o valoare din intervalul 1,m). n cazul n
care nu se ndeplinete nici una din condiii, se transfer controlul pe ramura lui CASE ELSE spre a
se executa setul de comenzi <set_comenzi>.
Exemplu de utilizare Dorim s aflm dup data naterii ziua din cadrul sptmnii, tiind
c datele calendaristice sunt valori numerice, iar restul mpririi la 7, la care se adaug 1, ne asigur
obinerea unui numr n intervalul 1-7.
Function zi(numzi As Byte) As String
Select Case numzi
Case 1
zi = "Luni"
Case 2
zi = "Marti"
Case 3
zi = "Miercuri"
Case 4
zi = "Joi"
Case 5
zi = "Vineri"
Case 6
zi = "Sambata"
Case 7
zi = "Duminica"
End Select
End Function
Sub case_zi()
Dim varzi As Date
varzi = InputBox("Introduceti ziua Dvs de nastere in format ll/zz/aaaa")
MsgBox ("Sunteti nascut(a) intr-o zi de " + zi((Int(varzi) Mod 7) + 1))
End Sub
Not: (Int(varzi) Mod 7) + 1 asigur obinerea restului la mprirea lui varzi la 7 in intervalul 1 7.

Exemplu de utilizare n funcie de distana n km la care se afl localitatea dvs. se va afia


un mesaj de apreciere a apropierii fa de Iai.

Invmnt la distan Anul I 2008/2009

33

Sub dist()
Dim d
d = InputBox("Introduceti distanta pana la localitatea dvs. in Km.")
Select Case d
Case Is <= 50
MsgBox ("Localitatea este foarte aproape, la distanta de " + Str(d) + " km.")
Case 51 To 100
MsgBox ("Localitatea este aproape, la distanta de " + Str(d) + " km.")
Case 101 To 250
MsgBox ("Localitatea este departe, la distanta de " + Str(d) + " km.")
Case Is > 250
MsgBox ("Localitatea este foarte departe, la distanta de " + Str(d) + " km.")
Case Else
MsgBox ("Distanta introdusa trebuie sa fie un numar intreg!")
End Select
End Sub
Not: Se observ n exemplul precedent utilizarea lui Case Is pentru comparare i a lui Case v1 to v2 pentru
a acoperi valorile ntregi pe intervalul v1-v2.

C. Structurile de control repetitive


n VBA structurile de control repetitive sunt realizate astfel:

WHILE WEND, pentru structuri repetitive condiionate anterior. Setul de


comenzi se execut ct timp condiia este adevrat.

FOR NEXT, pentru structuri repetitive cu numr stabilit de pai.

WHILE WEND
n VBA aceast structur repetitiv este considerat cea mai simpl, deoarece nu ofer
posibilitatea prsirii forate a setului de comenzi cu o instruciune de tipul EXIT. Formatul su este:
WHILE conditie
CT TIMP conditie
<set_comenzi>
<set_comenzi>
WEND
SFRIT_CT_TIMP
Iat un exemplu de utilizare a acestei structuri de prelucrare pe exemplul introducerii de date
n tabloul cu dou dimensiuni pentru produsele care au intrat n magazin ntr-o perioad de timp
stabilit de utilizator.
Sub Wend_tablou_2()
Dim i As Integer ' definirea variabilei pentru control executie
Dim var As Integer ' definirea variabilei de ciclare
i = InputBox("Numar de intrari in cadrul zilei: ")
Dim aprov(5, 100) ' definirea tabloului
var = 0
While var < i
aprov(0, var) = InputBox("Denumire produs: " & (var + 1))
aprov(1, var) = InputBox("Pret de intrare: " & (var + 1))
aprov(2, var) = InputBox("Unitate de masura: " & (var + 1))
aprov(3, var) = InputBox("Cantitate:" & (var + 1))
aprov(4, var) = InputBox("Data intrarii (ll/zz/aaaa):")
var = var + 1
Wend
End Sub

Instrumente software pentru afaceri

34

Not: Pentru a nu se repeta la infinit este necesar introducerea unei clauze de actualizare a
valorii variabilei de ciclare var (vezi linia var = var + 1).
FOR NEXT
Aceast structur ofer posibilitatea prestabilirii numrului de execuii pentru set_comenzi.
Din punct de vedere logic se aseamn cu WHILE WEND, cu precizarea c actualizarea lui se face
cu clauza NEXT . Formatul su este:
FOR i =1 to n
<set_comenzi>
NEXT i

PENTRU i = 1 la N
<set_comenzi>
URMTORUL i

Vom adapta exemplul precedent n cazul utilizrii structurii de prelucrare FOR NEXT, dar
pe zile ale sptmnii.
Sub For_tablou_2()
Dim i As Integer ' definirea variabilei de ciclare
Dim aprov(5, 100) ' definirea tabloului
Dim zi As String
i=0
For i = 0 To 6
Select Case i
Case 0
zi = "Luni"
Case 1
zi = "Marti"
Case 2
zi = "Miercuri"
Case 3
zi = "Joi"
Case 4
zi = "Vineri"
Case 5
zi = "Sambata"
Case 6
zi = "Duminica"
End Select
aprov(0, i) = InputBox("Denumire produs intrat " & zi & ":")
aprov(1, i) = InputBox("Pret de intrare:")
aprov(2, i) = InputBox("Unitate de masura:")
aprov(3, i) = InputBox("Cantitate:")
aprov(4, i) = InputBox("Data intrarii (ll/zz/aaaa):")
Next i
End Sub

DO LOOP
Aceast structur de prelucrare de tip repetitiv permite utilizarea a dou clauze diferite, i
anume: pentru transferul controlului n cazul ndeplinirii condiiei (WHILE) i pentru transferul
controlului n cazul nendeplinirii condiiei (UNTIL). n varianta cu WHILE DO LOOP
corespunde structurii de control repetitive condiionate anterior, n timp ce n varianta cu UNTIL,
permite codificarea structurilor de control condiionate posterior (adic set_comenzi se execut
naintea verificrii condiiei, deci cel puin o dat).

Invmnt la distan Anul I 2008/2009

35

DO WHILE <conditie>
<set_comenzi_1>
[EXIT DO]
<set_comenzi_2>
LOOP
DO UNTIL <conditie>
<set_comenzi_1>
[EXIT DO]
<set_comenzi_2>
LOOP
DO <conditie>
<set_comenzi_1>
[EXIT DO]
<set_comenzi_2>
LOOP [UNTIL|WHILE]

Oferim dou exemple de utilizare a structurii repetitive DO ... LOOP


Sub citire()
DO UNTIL CONT<900 and CONT>99
Cont = InputBox(Simbol cont,Introduceti o valoare, 0)

se permite citirea (preluarea) n


variabila cont a raspunsului dat de
utilizator

LOOP
Den = InputBox(Denumire cont:,Introduceti o valoare, )
Data= InputBox(Data operatiei:,Introduceti o valoare in formatul ll/zz/aaaa, 0)
End Sub
Sub citire()
DO WHILE CONT>900 and CONT<100
Cont = InputBox(Simbol cont,Introduceti o valoare, 0)

se permite citirea (preluarea) n


variabila cont a raspunsului dat de
utilizator

LOOP
Den = InputBox(Denumire cont:,Introduceti o valoare, )
Data= InputBox(Data operatiei:,Introduceti o valoare in formatul ll/zz/aaaa, 0)
End Sub

Exemple de ntrebri teste gril


1. Care este structura de control incorect:
a. Secvenial
b. Repetitiv
c. Iterativ
d. Repetitiv-Indexat
2. Tipul de dat Arbore este:
a. Elementar
b. Structurat
c. Stiv

36

Instrumente software pentru afaceri

CAPITOLUL 3

PROGRAMELE DE CALCUL TABELAR I UTILIZAREA LOR N


GESTIUNEA ORGANIZAIILOR

Obiective:
i. Cunoaterea i familiarizarea cu componentele programelor de calcul tabelar:
registrul de lucru i foaia de calcul.
ii. Analiz rapid a datelor prin reprezentarea lor grafic.
iii. Folosirea n foile de calcul a formulelor i funciilor pentru efectuarea unei
game variate de operaiuni: calcule matematice, financiare, statistice, logice,
cutri de informaii, simulri i analize etc.
Rezultate ateptate:
i. Obinerea i gestionarea registrelor de lucru i a foilor de calcul astfel nct
modelele proiectate s automatizeze cererile utilizatorilor.
ii. Alegerea tipului de grafic n aa fel nct acesta s fie sugestiv.
iii. Susinerea procesului decizional prin simulri i analize de date n foile de
calcul i n grafice.
iv. Exploatarea listelor i a bazelor de date Excel prin actualizri, sortri i
interogri.

Invmnt la distan Anul I 2008/2009

37

Expansiunea microinformaticii nlesnete accesul utilizatorilor, aproape nelimitat, la resursele


fizice i logice ale sistemelor de calcul. Printre instrumentele pe care le au la dispoziie un loc aparte l
au programele de calcul tabelar. La ora actual cele mai populare produse din aceast categorie sunt
EXCEL, LOTUS 123, QUATTRO PRO.

3.1 PROGRAMELE DE CALCUL TABELAR INSTRUMENTE DE


SPRIJINIRE A DECIZIILOR
Programele de calcul tabelar sunt produse care integreaz faciliti de lucru cu tabele, baze de
date, grafice, simulri etc., fiind concepute pentru a prelua, din sarcina funcionarilor din diverse
domenii, o parte important a lucrrilor de rutin.
ntr-un program de calcul tabelar se regsesc instrumente care sunt, pe de o parte foarte uor
de manevrat, iar pe de alt parte deosebit de performante. Sunt referite aici: foaia de calcul, modulul
pentru lucrul cu bazele de date i modulul grafic.

3.1.1 Excel evoluie, caracteristici i componente


Cel mai popular program de calcul tabelar este, fr ndoial, Excel. Iniial Excel a fost
proiectat pentru sistemele MacIntosh. ncepnd cu 1990 sunt lansate versiunile pentru Windows, care
sunt n mod continuu perfecionate. mbuntirile de anvergur apar n versiunea a cincea (1993) la
care se introduc agenda /registrul de lucru i limbajul VBA (Visual Basic for Applications).
Excel este un produs integrat n pachetul de aplicaii Microsoft Office alturi de Word,
PowerPoint, Access etc. Fiind o component Office, Excel exploateaz toate facilitile oferite de
pictogramele din barele de instrumente standard sau cele specializate i de comenzile din meniurile de
baz sau cele rapide (apelate prin click de pe butonul din dreapta al mouse-ului). Cu acestea suntei
familiarizai de la procesorul de texte Word sau programul de prezentri PowerPoint .
Deschiderea unei sesiuni de lucru Excel se poate realiza n mai multe moduri:

meniul Start (figura 3.1), selectnd din meniul Programs opiunea Microsoft Excel,

meniul rapid (figura 3.2), selectnd comanda New i apoi opiunea Microsoft Excel;

shortcut-ul de pe Desktop (figura 3.3), accesnd pictograma de pe desktop, dac a fost creat o
scurttur Excel.

Figura 3.1 Deschiderea sesiunii Excel din Start

Figura 3.2 Deschiderea sesiunii Excel din meniul


rapid

Instrumente software pentru afaceri

38

Figura 3. 3 Deschiderea sesiunii Excel prin schortcut-ul de pe Desktop


Indiferent de modalitatea folosit sistemul deschide o fereastr de lucru Excel (figura 3.4).
Pentru mai mult claritate, n fereastr a fost deschis un fiier Excel, Lista salariatilor.xls.
Bara de titlu Bara meniu

Bara standard

Bara de formatare Bara de formule

Etichet foaie de calcul Celula curent (F11)

Foaia de calcul

Task Pane

Figura 3.4 Fereastra de lucru Excel


Dup cum se observ pe suprafaa de lucru, implicit, sunt disponibile bara meniu i dou bare
cu instrumente (Standard i Formatting) care asigur exploatarea facilitilor prezente n toate
componentele Microsoft. Sub aceste bare este plasat bara de formule care vizualizeaz, n stnga, n
caseta de nume, adresa celulei curente sau numele simbolic atribuit unui domeniu (grup de celule), iar
n dreapta coninutul celulei (date, formule sau funcii). ntre aceste elemente sunt disponibile i
butoanele: = pentru a construi formule de calcul, X-Cancel pentru anularea introducerii i revenirea la
vechiului coninut al celulei curente i - Enter pentru confirmarea /acceptarea datelor introduse.
Atunci cnd este lansat constructorul de funcii n locul butonului = apare butonul fx. La activarea
barei de formule, n locul casetei de nume este afiat caseta Paste Functions care poate fi consultat
n vederea alegerii, din lista subordonat, a funciei dorite pentru celula curent.
n ultimele versiuni ale pachetului MS Office la deschiderea sesiunii de lucru, implicit, n
dreapta ecranului se activeaz panoul de activiti Task Pane, organizat pe mai multe zone, care difer
n funcie de operaiunea n curs de derulare:

Invmnt la distan Anul I 2008/2009

39

Create an interactive Web site - crearea interactiv a unui site Web folosind, sub
supravegherea unui asistent, programul Front Page;

Find links in a workbook cutarea unor legturi Web, n registrul de lucru curent;

Search for... - cutarea n funcie de anumite criterii;

Open deschiderea unuia dintre fiierele aflate n lista ultimelor fiiere cu care s-a lucrat,

sau a unui alt fiier, cutat cu ajutorul butonului More...care deschide o fereastr Open.
Componenta principal ntr-o aplicaie realizat cu un program de calcul tabelar o reprezint
foaia de calcul, care trebuie privit ca un centralizator uria cu linii i coloane, la intersecia crora
sunt celulele n care se introduc date, formule i funcii. Rezult c, ntr-o foaie de calcul elementul de
baz este celula.
O foaie de calcul are:

coloane (256) - identificate cu ajutorul literelor de la A la IV (A,B,..,Z, AA, AB,..,AZ,


BA,BB,..BZ,....,IA,IV);

linii (65536) - identificate cu ajutorul cifrelor.

La intersecia coloanelor cu liniile sunt celulele (csue /casete) care sunt referite n mod
univoc cu ajutorul adreselor, care se obine prin concatenarea codurilor de coloane cu cele de linii.
La rndul lor, adresele de celule pot fi:

relative;

absolute;

mixte.

Adresele relative sunt implicite i se modific prin operaiile de copiere sau mutare n funcie
de zona destinaie stabilit de utilizator. Acest tip de adrese se obine prin combinarea simpl a
codurilor de coloan cu a celor de linie (de exemplu, A1, BC234, IV65536). Adresele absolute se
stabilesc explicit de ctre utilizator prin plasarea semnului $ naintea codului de coloan i a celui de
linie (de exemplu, $A$1, $BC$234, $IV$65536). Avantajul adreselor absolute const n faptul c la
copiere sau mutare ele nu se modific. O combinaie a acestor dou tipuri de adrese o reprezint
adresele mixte, n care numai una dintre coordonate se modific (de exemplu, A$1, $BC234).
Adresele mixte sunt utilizate, cel mai adesea, la formatarea condiionat a datelor din foile de calcul.
Foile de calcul sunt organizate n agende sau registre de lucru numite Book<n>. ncepnd cu
versiunea Excel 7 ntr-un registru de lucru, implicit, sunt definite trei foi de calcul numite Sheet<n>,
numrul maxim putnd fi de 255. Adugarea de noi foi de calcul n registrul de lucru curent se
realizeaz din meniul Insert folosind opiunea Worksheet. Numele implicite Book i Sheet pot fi
schimbate de utilizator odat cu salvarea coninutului registrelor de lucru sau prin operaia de
redenumire. Este recomandat ca n acelai registru de lucru s fie organizate foile de calcul care conin
date relative la aceeai aplicaie sau care privesc acelai utilizator.
ntr-o foaie de calcul pot fi referite celule /date din alte foi de calcul, ntlnindu-se urmtoarele
situaii:

cnd foaia de calcul este din acelai registru de lucru, adresa celulei va fi precedat de semnul ! i
numele foii de calcul (de exemplu, Sheet2!C34, Rentabilitate!B5);

Instrumente software pentru afaceri

40

cnd foaia de calcul este din alt registru de lucru, adresa celulei va fi precedat de semnul !,

numele foii de calcul i numele registrului de lucru din care face parte, specificat ntre paranteze
ptrate (de exemplu, [Situatie_scolara]Anul_1!F6, [IDD]Anul_1!A15).
Cnd o comand /operaie urmeaz a fi aplicat asupra mai multor celule, pentru creterea
vitezei de lucru acestea sunt grupate ntr-un domeniu (range). Domeniile la rndul lor pot fi contigue
(cnd celulele sunt adiacente /nlnuite), sau necontigue (cnd celulele nu sunt nvecinate /conectate).
n primul caz, operatorul de referire (numit operator de domeniu) este caracterul dou puncte
(exemplu, domeniul A3:J75 ). n cel de al doilea caz, operatorul de referire (numit operator de
reuniune) este caracterul punct i virgul (exemplu, domeniul A5; D5; M5).
Celula (csua) n care este plasat prompterul sistem se numete celul curent sau activ i
este evideniat printr-un chenar trasat cu o linie ngroat. n aceast celul vor fi preluate elementele
nou introduse sau se vor reda rezultatele obinute n urma evalurii formulelor i /sau a funciilor.
n principal facilitile oferite de Excel sunt apelate prin intermediul opiunilor organizate ntro reea de meniuri specializate care respect principiile Windows. Implicit, n bara meniu sunt
disponibile meniurile File, Edit, View, Insert, Format, Tools, Data, Windows i Help. Foarte multe
opiuni sunt cunoscute din procesorul de texte Word. n funcie de comanda lansat la un moment dat,
n bara meniu devin disponibile i alte meniuri cu propriile comenzi. De exemplu, pentru modificarea
unui grafic, n bara meniu, apare meniul Chart ale crui opiuni permit, printre altele, reluarea pailor
de obinerea a unui grafic.

3.1.2 Deplasarea i derularea n foaia de calcul


Trecerea de la o celul la alta poate fi realizat de la tastatur (cu tastele direcionale) sau cu
ajutorul mouse-ului, prin clic n celula dorit. Pentru deplasri mai ample i rapide se pot folosi
opiunea Go To din meniul Edit, sau tasta funcional F5, utilizatorul trebuind s specifice adresa
locaiei n care va fi plasat prompterul sistem.

Figura 3.5 Meniul Edit,


comanda Go To...

Figura 3.6 Fereastra Go To

Home - mutarea punctului de inserare la nceput de linie;

PgUp/PgDn - mutarea cu o fereastr n sus sau n jos;

Ctrl + Home - deplasarea n colul stnga-sus al foii de calcul;

Figura 3.7 Fereastra Go To


Special

Invmnt la distan Anul I 2008/2009

41

Ctrl + End - mutarea n colul dreapta-jos al seciunii de date din foaia de calcul;

Ctrl + PgUp - mutarea n celula activ din foaia de calcul anterioar;

Ctrl + PgDn - mutarea n celula activ din foaia de calcul urmtoare;

F5 /Ctrl + G <adresa celul> - mutarea ntr-o anumit celul sau zon din foaia de calcul;

Tab - deplasarea de la stnga la dreapta sau de sus n jos ntr-un domeniu selectat;

Shift + Tab - deplasarea n direcia invers ntr-un domeniu selectat.

Un rol aparte l are tasta End ce comut n modul End, oferind opiuni de navigare
suplimentare:
End + tasta Enter determin ajungerea la sfritul de linie;
End + o tast direcional determin deplasarea la urmtoarea celul ocupat din direcia
respectiv;
End + tasta Home determin deplasarea la ultima celul ocupat din foaia de calcul (acelai rol
cu Ctrl + End).
Pe lng aceste modaliti, Excel permite selectarea celulelor i dup coninutul lor sau dup
relaiile folosite n formule. Pentru aceasta se folosete opiunea Special a comenzii Go To din meniu
Edit.
Pentru derularea foii de calcul sunt folosite barele i butoanele de defilare /deplasare vertical
sau orizontal plasate n dreapta i respectiv la baza foii de calcul. Acestea sunt identice cu barele i
butoanele de defilare /derulare din orice fereastr Windows.

Figura 3.8 nghearea antetului de tabel


Derularea ntr-o foaie de calcul ampl duce la pierderea de pe suprafaa ecranului a titlurilor
de coloane sau de linii, ceea ce face citirea sau interpretarea datelor organizate n foaie mai greu de
realizat. Soluia n astfel de situaii o reprezint nghearea antetelor de coloan i /sau a celor de linie.
Pentru aceasta se folosete comanda Freeze Panes din meniul Windows, dup ce pointerul de celul a
fost plasat sub linia i /sau la stnga coloanei deasupra i respectiv la stnga creia se dorete definirea
titlurilor (figura 3.8). Pentru a dezghea fereastra, se selecteaz comanda Unfreeze Panes, tot din
meniul Windows.

3.1.3 Selectarea celulelor


Atunci cnd se lucreaz cu grupuri de celule pentru operaiile de copiere, mutare, formatare,
tiprire etc., este necesar selectarea acestora. n acest context sunt urmtoarele situaii:

Instrumente software pentru afaceri

42

pentru selectarea celulelor nlnuite (domeniu contiguu) se execut clic pe celula dintr-o
extremitate a domeniului i se deplaseaz indicatorul mouse-ului n cealalt extremitate, prin
tehnica tragerii drag&drop; celulele adiacente pot fi selectate rapid i prin urmtoarea
secven de operaii: clic de mouse de pe prima celul din domeniu, apsarea continu a tastei
Shift, clic de mouse pe ultima celul din domeniul dorit;

pentru a selecta un domeniu necontiguu se selecteaz prima celul din grup, se ine apsat
tasta Ctrl, dup care, pe rnd, se selecteaz cu mouse-ul, celelalte celule dorite;

selectarea n ntregime a unei linii sau a unei coloane se realizeaz printr-un clic pe antetul
liniei, respectiv cel al coloanei dorite;

pentru selectarea n ntregime a mai multor linii sau coloane contigue se execut clic pe antetul
primei linii sau coloane domeniul dorit, dup care prin drag&drop (tragere de mouse) se
acoper toate liniile, respectiv coloanele din domeniu. Acest tip de selecie se poate realiza
prin urmtoarea secven de operaii: clic de mouse de pe antetul primei linii sau coloane din
domeniu, apsarea tastei Shift, clic de mouse pe ultima linie, respectiv coloan din domeniul
dorit;

pentru selectarea n ntregime a mai multor linii sau coloane necontigue se execut clic pe
antetul primei linii sau coloane din domeniu, se ine apsat tasta Ctrl, dup care, prin clic de
mouse pe antetele liniilor, respectiv a coloanelor dorite se selecteaz ntregul domeniu.

3.2. CREAREA I GESTIONAREA REGISTRELOR DE LUCRU I A


FOILOR DE CALCUL
Aa cum am vzut n paragraful anterior un registru de lucru este un fiier din Microsoft Excel
(cu extensia implicit .xls) care conine una sau mai multe foi de calcul. Fiecare foaie este o pagin n
care se introduc date i se evalueaz formule i funcii.

3.2.1 Tipuri de date i mesaje de eroare


Tipuri de date
n principal n celule foilor pot fi date de tip numeric sau de tip caracter. Excel stabilete tipul
datei dup natura primului caracter introdus sau dup rezultatul evalurii formulei sau funciei
specificate de utilizator. Astfel, data este numeric dac primul caracter introdus este:

orice cifr: 0-9;

semnul algebric + sau -;

unul din caracterele speciale: #, $, . , =.

Asociate datelor numerice sunt i datele calendaristice, care intern se reprezint ca numere.
O dat este de tip caracter dac primul caracter introdus este:

orice liter a alfabetului: A-Z sau a-z;

unul dintre urmtoarele caractere speciale: spaiul, !, , , %, &, ?, *, :, ;, ^, \, |, [,], _.

Formulele i funciile au ca prefix semnul =.

Invmnt la distan Anul I 2008/2009

43

3.2.2 Introducerea i formatarea datelor i a foilor de calcul


Introducerea datelor este o operaie care de cele mai multe ori se realizeaz manual de la
tastatur. n acelai scop Excel pune la dispoziia utilizatorului un instrument deosebit AutoComplete.
Acest accesoriu este de mare folos la introducerea repetat a unor texte, Excel construindu-i o list cu
toate elementele din coloan, list din care utilizatorul i-l poate selecta pe cel dorit. Lista astfel
construit poate fi accesat, din meniul rapid (activat cu butonul din dreapta al mouse-ului), prin
selectarea opiunii Pick From Drop down List....
Formatarea datelor se realizeaz folosind:

comenzile din meniul Format sau cel rapid (contextual);

pictogramele /butoanele din bara de instrumente Formatting.

Prin formatarea unei celule sau a unui domeniu de celule se poate stabili att tipul datelor
introduse ct i aspectul acestora. Se folosete din meniul Format comanda Cells. La selectarea
acesteia se deschide fereastra Format Cells n care comenzile sunt grupate pe cadre de pagin
(etichetele): Number, Alignment, Font, Border, Patterns i Protection (figura 3.9).
Cadrul de pagin Number permite stabilirea formatelor pentru datele numerice, inclusiv a
celor de tip dat calendaristic i timp. Formatul implicit este General care asigur preluarea i
afiarea datelor numerice pe cea mai scurt lungime posibil.
Celelalte categorii de formate permit:
Number - stabilirea numrului de zecimale (maximum 30) i a modului de afiare a numerelor
negative (scrise cu culoare neagr sau roie, precedate sau nu de semnul (pentru cele scrise n rou);
Currency - afiarea numerelor precedate sau urmate, dup caz, de simbolul monetar ales de
utilizator (figura 3.10);
Accounting - stabilirea de ctre utilizator a monedei n care vor fi reprezentate datele;
Percentage - stabilirea numrului de zecimale ntr-o reprezentare procentual;
Scientific - reprezentarea n format tiinific, cu mantis i exponent, a datelor (de exemplu,
numrul 6.100.000, n format tiinific devine 6,10E+06);

Stabilirea numrului de
zecimale (max. 30)
Zona de previzualizare a
coninutului celulei curente
Afiarea prii ntregi n
grupe de trei cifre separate
printr-un punct (.)
Formate de afiare /
tiprire a numerelor
negative
Formatele de afiare / tiprire
a datelor numerice

Figura 3.9 Fereastra Format Cells Cadrul de pagin Number

44

Instrumente software pentru afaceri

Lista simbolurilor
monetare (n ultimele
versiuni de Office este
disponibil i moneda
pentru Romnia)

Figura 3.10 Lista simbolurilor monetare


Date - alegerea, dintr-o plaj disponibil, a formatului de afiare a irurilor de numere, n date
calendaristice, precum i a locaiei (zonei geografice) dorite (figura 3.11); numrul maxim ce poate fi
transformat n dat calendaristic este 999999 i corespunde datei de 25 noiembrie 4637;
Observaie! Pentru a introduce rapid data i ora curent, n celula selectat, se acioneaz
tastele Ctrl +; pentru dat i respectiv Ctrl + : pentru or.

Lista formatelor
pentru datele
calendaristice

Lista zonelor
geografice

Figura 3.11 Lista formatelor i a zonelor geografice pentru datele calendaristice


Time - stabilirea formatului de configurare a timpului n dat calendaristic i a locaiei /zonei
geografice dorite;
Text - transformarea datelor numerice n date de tip text;
Special - stabilirea formatelor speciale, utilizate frecvent n anumite liste sau baze de date
(coduri potale, numere de telefon, CNP) (figura 3.12);
Custom - generarea unor formate personalizate de afiare a datelor numerice, inclusiv a celor
de tip dat calendaristic sau timp.

Invmnt la distan Anul I 2008/2009

45

Figura 3.12 Lista formatelor speciale


Cadrul de pagin Alignment (figura 3.13) permite stabilirea modului n care va fi aliniat
coninutul celulelor. Implicit, numerele sunt aliniate la dreapta, iar textele la stnga.
Opiunile din fereastra Alignment controleaz att alinierea pe orizontal (Text Alignment
Horizontal), ct i pe vertical (Text Alignment Vertical). n plus, poate fi stabilit i orientarea
scrierii: pe vertical sau oblic, folosind, fie butonul de comand Text, fie cadranul cu indicator al
gradelor de nclinare a scrierii sau caseta de modificare valoric Degrees.
Sunt importante i casetele de validare plasate n partea dreapta-jos a ferestrei:

Wrap text (Alt + Enter) - permite scrierea pe mai multe linii n cadrul aceleiai celule;

Shrink to fit - stabilete dimensiunea datei introduse astfel nct s ncap n celula curent;

Merge cells - mbin celulele selectate i centreaz, n spaiul astfel obinut, data din celula cea
mai de sus, sau cea mai din stnga.

Scrierea oblic

Scrierea
pe
vertical
Alinierea pe
vertical

Figura 3.13 Fereastra Format Cells - Cadrul de pagin Alignment


Cadrul de pagin Font permite stabilirea dimensiunii, formei, grosimii i culorii caracterelor
din celule, ntr-o manier identic cu formatarea n Word (figura 3.14).

46

Instrumente software pentru afaceri

Figura 3.14 Fereastra Font


Cadrul de pagin Border permite trasarea liniilor i chenarelor n jurul celulelor /blocurilor
foii de calcul, asemntor modului de trasare a liniilor i chenarelor n Word.
Cadrul de pagin Patterns permite adugarea de culori i umbre.
Cadrul de pagin Protection protejeaz coninutul unei celule sau a unui grup de celule prin
blocare (caseta Locked) sau prin ascundere (caseta Hidden).
O parte dintre facilitile de formatare prezentate mai sus se regsesc n figura 3.15:

Merge cells mbinarea celulelor A8:F8 i centrarea titlului;

Merge cells mbinarea celulelor A9:C8 i alinierea la stnga a subtitlului;

Border trasarea cu linie ngroat a conturului tabelului;

Alignment Orientation Text scrierea pe vertical n celula A10;

Alignment Orientation Text scrierea oblic n celulele C10:F10;

Bold scrierea antetului de situaie, a titlului, a subtitlului i a antetului de coloane;

WordArt pentru scrierea, din antetul situaiei, a denumirii societii comerciale.

Figura 3.15 Foaie de calcul formatat


Pe lng formatul stabilit de ctre utilizator, Excel permite, prin opiunea AutoFormat din
meniul Format i crearea de documente aspectoase prin simpla selectare a unor formate predefinite
din lista AutoFormat (figura 3.16).

Invmnt la distan Anul I 2008/2009

47

Figura 3.16 Comanda AutoFormat


n meniul Format o comand special este Conditional Formatting care permite formatarea
n funcie de anumite condiii stabilite de utilizator. Astfel, pentru a scoate n eviden salariile de
peste 16 milioane de lei se selecteaz celulele care conin salariile de baz, dup care se activeaz
comanda Conditional Formatting pentru a deschide fereastra n care se va construi condiia dorit
folosind opiunea Cell Value Is (figura 3.17).

Figura 3.17 Formatarea condiionat - Cell Value Is

Figura 3.18 Formatarea condiionat (Cell Value Is) - Rezultat


Din fereastra Conditional Formatting se poate activa butonul Format care permite stabilirea
formatului de afiare a datelor care respect condiia stabilit (figura 3.18).
Prin formatare condiionat pot fi evideniate linii ntregi dintr-o tabel, dac se selecteaz
opiunea Formula Is din lista Condition 1 a ferestrei Condition Formatting n care condiia (simpl
sau compus) este construit cu ajutorul adreselor mixte de celule.
Astfel, pentru a scoate n eviden angajaii care au salariile cuprinse ntre 15 milioane i 16,5
milioane se construiete condiia din figura 3.19.

Instrumente software pentru afaceri

48

Figura 3.19 Formatare condiionat Formula Is

Figura 3.20 Formatarea condiionat (Formula Is) Rezultat


Dup stabilirea fonturilor, alinierilor, culorilor, chenarelor i a altor elemente care in de
formatarea foilor de calcul, pentru reutilizarea lor este indicat salvarea ca stil (style), folosind
comanda Style, din meniul Format.
Observaie! Elementele de formatare (chenare, centrare, simboluri monetare etc.) pot fi
anulate prin comanda Clear, Formats, din meniul Edit.

3.2.3 Mutarea i copierea


Excel ofer tehnici deosebit de simple de copiere i mutare a datelor, formulelor i funciilor.
Operaiile pot fi realizate fie cu ajutorul comenzilor Copy, Cut i Paste din meniul Edit, fie prin
tehnica drag&drop. Opiunile meniului Edit permit mutarea i copierea datelor n cadrul aceleiai
foi, ntre diferite foi sau chiar ntre aplicaii.
n meniul Edit este disponibil i comanda Paste Special (figura 3.21) care permite transferul:

coninutului zonei surs (All);

formulelor (Formulas);

valorilor i a rezultatelor evalurii formulelor i funciilor (Values);

formatelor celulelor (Formats);

comentariilor (Comments);

condiiilor de validare (Validation);

ntregului coninut, mai puin marginile zonei surs ((All except borders).

Invmnt la distan Anul I 2008/2009

49

Figura 3.21 Comanda Paste Special


Dac datele copiate sau mutate sunt de tip numeric, ele pot fi adunate, nmulite etc. cu datele
din zona destinaie, selectndu-se butonul corespunztor din zona Operation. Implicit, nu se fac
calcule cu datele mutate sau copiate.
n fereastra Paste Special, un rol deosebit l are butonul de comand Paste Link care permite
legarea datelor din zona destinaie cu cele din zona surs. n felul acesta orice modificare din zona
surs influeneaz i zona destinaie.
Tehnica drag&drop poate fi utilizat numai n cadrul aceleiai foi de calcul. Mutarea
presupune selectarea zonei surs, fixarea indicatorului de mouse pe marginea ei (pn cnd ia forma
unei cruci cu patru vrfuri-sgei), deplasarea n zona destinaie i, n final, eliberarea mouse-ului.
Pentru copiere se poate folosi i marcajul de umplere - AutoFill (un ptrat mic, negru, din
colul dreapta-jos al celulei sau zonei surs selectate). Pe acest marcaj se plaseaz indicatorul de
mouse, care devine o cruce simpl. n continuare se ine apsat butonul din stnga al mouse-ului i,
prin drag&drop se stabilete zona destinaie. La eliberarea butonului de mouse se realizeaz copierea
propriu-zis.
AutoFill poate fi folosit i pentru a completa liste standard, liste personalizate, iruri de
numere i date ceea ce asigur creterea vitezei de introducere a datelor n foile de calcul. De
asemenea, cu AutoFill se pot realiza rapid prognoze i tendine pe baza unor serii de date introduse
anterior.

3.2.4 Protecia celulelor, foilor de calcul i a registrelor de lucru


Pentru ca datele organizate n foile de calcul i registrele de lucru s nu poat fi modificate i
/sau terse, Excel ofer mai multe modaliti de protecie.
Protejarea unei foi de calcul determin blocarea tuturor celulelor, ceea ce nseamn c ulterior
nu mai poate fi realizat nici o modificare. O astfel de situaie nu este de dorit, deoarece celulele
rezervate datelor de intrare trebuie s permit modificarea, fiind posibile introduceri eronate care
trebuie corectate. Din aceast cauz, nainte de a proteja o foaie de calcul, sunt stabilite celulele care
nu trebuie protejate (de regul zona datelor de intrare). Pentru a realiza acest lucru se dezactiveaz
caseta de validare Locked din fereastra Format Cells Protection (figura 3.22). Implicit, aceast
caset este activat. Prin aceast manevr celulele selectate vor rmne deblocate chiar i dac foaia de
calcul din care fac parte va fi protejat.

Instrumente software pentru afaceri

50

Figura 3.22 Fereastra Format Cells


O protecie special este realizat i prin ascunderea formulelor i /sau funciilor folosite n
foaia de calcul (caseta Hidden din fereastra Format Cells), a anumitor linii i /sau coloane (opiunile
Hide subordonate comenzilor Row, respectiv Column, din meniul Format.
Pentru protejarea foilor de calcul i a registrelor se folosete meniul Tools, comanda
Protection (figura 3.23).
Pentru protejarea foii de calcul curente se selecteaz opiunea Protect Sheet care deschide
fereastra cu acelai nume (figura 3.24). n aceast fereastr se precizeaz obligatoriu o parol. Parola
trebuie introdus, succesiv, de dou ori. n felul acesta foaia de calcul devine read only, putnd fi doar
citit de cei care nu tiu parola pentru deprotejare.

Figura 3.23 Comanda Protection

Figura 3.24 Fereastra Protect Sheet

ncercarea de a modifica date din celulele unei foi de calcul protejate duce la afiarea unui
mesaj de avertizare (figura 3.25).

Figura 3.25 Mesaj de avertizare - Foaia de calcul este protejat

Invmnt la distan Anul I 2008/2009

51

Figura 3.26 Stabilirea parolei de protejare a registrului de lucru


Comanda Protection permite protejarea ntregului registru de lucru, prin opiunea Protection
Workbook. i n acest caz trebuie stabilit o parol de protejare (figura 3.26).
n ambele situaii prezentate pentru deprotejare se selecteaz opiunea corespunztoare i se
retiprete parola (figura 3.27).

Figura 3.27 Deprotejarea registrului de lucru

3.2.5 Salvarea registrelor de lucru


Salvarea registrului de lucru i implicit a foilor de calcul organizate n el este o operaie simpl
asemntoare operaiei de salvare din oricare alt produs Microsoft. Se poate folosi, fie pictograma
Save din bara de instrumente Standard, fie opiunile Save sau Save As din meniul File.

Figura 3.28 Fereastra Save As


n ambele situaii n zona File Name trebuie specificat un nume, dac nu se dorete atribuirea
numelui predefinit Book<n>. Fiierul salvat este, implicit, de tip .xls (figura 3.28).

Instrumente software pentru afaceri

52

3.3 FORMULE I FUNCII N EXCEL


3.3.1 Utilizarea formulelor
Formulele sunt elemente de baz ale foii de calcul i permit efectuarea de operaii simple
(adunare, scdere etc.), dar i calcule complexe din diverse domenii (financiar, statistic sau tiinific.
De asemenea, folosind funciile Excel se pot realiza comparaii sau operaii cu iruri de caractere etc.
Formulele programului Excel ncep ntotdeauna cu semnul = i pot include constante (valori
numerice sau de tip text), operatori aritmetici, de comparare, funcii, paranteze, referine i nume de
domenii. Excel memoreaz formulele stabilite de utilizator, dar n foaia de calcul sunt afiate
rezultatele evalurii acestora. Dac se dorete afiarea propriu-zis a formulei /formulelor se activeaz
caseta de validare Formulas din cadrul de pagin View a comenzii Options, din meniul Tools. Acelai
efect se obine sau se anuleaz i prin comanda rapid Ctrl + ` (accent grav). Pentru a afia doar
formula din celula curent se folosete comanda rapid Ctrl + (apostrof).
Formulele conin valori i operatori. Valorile (operanzii) sunt numere, date calendaristice,
texte etc. i se introduc n celulele foilor de calcul. Operatorii sunt instruciuni prin care se stabilete
cum sunt prelucrate valorile. De regul, pentru operatori se folosesc simboluri. La rndul lor,
operatorii sunt: aritmetici (+, -, *, /, %, ^), de comparaie (<,>,>=, <=, <>), de referire (dou puncte,
virgula).

Figura 3.29 Foaie de calcul cu formul matriceal


Un caz particular de formul complex l reprezint formula matriceal. La crearea unei astfel
de formule trebuie s se in seama de urmtoarele aspecte:

forma i dimensiunea rezultatului trebuie s fie la fel cu forma i dimensiunea domeniilor


asupra crora se aplic formula;

formula matriceal este inclus ntre acolade, introduse automat de ctre Excel;

execuia unei formule matriceale se realizeaz cu ajutorul combinaiei de taste: Shift + Ctrl +
Enter.

Invmnt la distan Anul I 2008/2009

53

n formule pot fi folosite i nume date de utilizator pentru anumite domenii (grupuri de celule
apelate frecvent). n figura 3.30 este prezentat un exemplu n care au fost definite pentru dou domenii
de celule, nume care ulterior sunt referite n formule.

Figura 3.30 Folosirea numelor n formule


n acest exemplu au fost definite nume pentru coloanele Tarif orar i Ore lucrate (Tarif_orar
i Ore_lucrate), care ulterior au fost folosite pentru stabilirea venitului brut. Numele poate fi atribuit
de utilizator, prin comanda Define (figura 3.31), sau poate fi coninutul unei linii sau coloane din foaia
de calcul, dac se activeaz comanda Create.

Figura 3. 31 Definirea numelor de domenii

Figura 3.32 Caseta


Name box

Pentru nlocuirea adreselor de celule cu nume se folosete, fie caseta Name box din stnga
barei de formule (figura 3.32), fie comanda Name, din meniul Insert.
Domeniul de celule referit ntr-o formul poate primi ulterior un nume, care s apar n
formul dac se folosete comanda Apply, din fereastra comenzii Name a meniului Insert.

3.3.2 Funciile Excel


Programul Excel dispune de numeroase funcii predefinite pentru a efectua rapid calcule
matematice, financiare, statistice i logice, prelucrri de texte sau cutri de informaii n foile de
calcul. n comparaie cu formulele, funciile sunt mai uor de editat i permit o executare mai rapid a
diverselor operaii.
O funcie este format din dou pri:

Instrumente software pentru afaceri

54

nume (cuvnt rezervat precedat de semnul =) i

argumente (incluse ntre paranteze rotunde).

Argumentele pot fi adrese de celule, nume de domenii, valori numerice, iruri de caractere sau
chiar alte funcii etc. Argumentele de tip ir de caractere sunt ncadrate de ghilimele. n general,
argumentele sunt separate prin punct i virgul, dac nu a fost setat un alt separator, de exemplu,
virgula. Rezultatele pot fi valori calculate, valori de tip text, referine, valori logice etc.
Editarea funciilor se poate realiza fie direct n bara de formule sau celula curent, fie
apelndu-se generatorul de funcii (Function Wizard). Cea mai comod variant o reprezint
asistentul de funcii apelat:

din meniul Insert cu comanda Function;

prin intermediul pictogramei AutoSum

prin intermediul pictogramei f(x)

, din bara cu instrumente Standard;

din bara cu instrumente Formatting.

Figura 3.33 Fereastra Insert Function


Indiferent de modalitatea folosit se deschide fereastra Insert Function (figura 3.33), n care
sunt disponibile funciile organizate pe categorii, fiecare categorie avnd funciile componente aranjate
n ordine alfabetic. Excel creeaz o categorie special, pe baza celor mai recent utilizate funcii (Most
Recently Used).

3.3.2.1 - Succint prezentare a principalelor funcii Excel


Funciile sunt grupate dup tipul operaiilor pe care le realizeaz n: funcii financiare; funcii
statistice; funcii de lucru cu liste i baze de date; funcii logice; funcii de cutare i referire; funcii
matematice i trigonometrice; funcii pentru date calendaristice i timp; funcii pentru iruri de
caractere; funcii pentru informare.
Fiecare funcie activat deschide o fereastr n care sunt afiate: formatul i o succint
descriere a funciei precum i zone distincte de editare a argumentelor din format. n plus, este afiat i
rezultatul ce se va obine prin executarea funciei. Pentru exemplificare, n figura 3.34, este fereastra
asociat funciei IF() n care prin condiia specificat se stabilete dac se pltete sau nu penalizare,
dup cum ntrzierea plii unei facturi este sau nu mai mare de trei zile.

Invmnt la distan Anul I 2008/2009

55

Figura 3.34 Utilizarea funciei IF()


Funcii statistice. Pachetul de funcii statistice ofer modaliti rapide de realizare a celor mai
cunoscute calcule statistice (figura 3.35).
Funcia Average( ) calculeaz media argumentelor care pot fi valori singulare sau domenii.
Domeniile, la rndul lor, pot conine numere, referine de celule sau matrici de valori;
Funcia Count( ) returneaz numrul de celule care conin cifre sau formule, ignorndu-le pe
cele care conin iruri de caractere, valori logice, erori sau blank (celule libere);
Funcia CountA( ) stabilete numrul de celule al cror coninut este nenul;
Funcia Max( ) afieaz cel mai mare numr dintr-un domeniu de celule;
Funcia Min( ) afieaz cel mai mic numr dintr-un domeniu de celule.

Figura 3.35 Funcii statistice Formule i Rezultate


Funcii financiare. Aceste funcii sunt folosite pentru realizarea unei game variate de calcule
i analize economico-financiare. La utilizarea lor trebuie s se in seama de o serie de restricii dintre
care amintim:

numrul de perioade trebuie s fie exprimat n aceeai unitate de timp (lun, an);

n calculul anuitilor se folosesc vrsminte egale i intervale regulate de timp.


Pentru calculul amortizrii Excel ofer funcii specializate pe metodele de amortizare

folosite.

Instrumente software pentru afaceri

56

Funcia SLN( ) calculeaz amortizarea dup metoda liniar prin stabilirea valorii anuale a
deprecierii unui bun (de exemplu, imobilizri corporale). Formatul general al funciei este
=SLN(val_inv, val_rez, durat), n care:

val_inv reprezint valoarea iniial sau de inventar,

val_rez este uzura calculat sau valoarea rezidual,

durat constituie durata de via a bunului.

Funcia SYD( ) folosete, pentru calculul amortizrii, metoda sumei cifrelor anilor. Formatul
general este =SYD(val_inv, val_rez,durat,per), n care pe lng argumentele funciei precedente se
mai adaug prin per anul din durata de via pentru care se calculeaz deprecierea (primul an, al
doilea, al treilea etc.).
Funcia DDB( ) calculeaz deprecierea pentru o perioad indicat folosind metoda balanei
dublu depreciate sau o alt metod specificat. Formatul funciei este =DDB(val_inv, val_rez,
durat,per[,factor]), n care factor indic viteza /rata de depreciere, care dac este omis, se consider
egal cu doi.
Pentru calcularea anuitilor Excel folosete n principal funciile =FV(), =PMT(), =PV() i
RATE( ).
Observaie
Anuitatea este un procedeu prin care, de regul, un capital mprumutat se ramburseaz ntr-un
anumit numr de ani /luni, printr-o serie de pli periodice, cuprinznd n afara dobnzii i o sum
destinat a reconstitui capitalul.
Funcia FV( ) stabilete valoarea viitoare pentru o serie de ncasri provenite din pli egale
(plat), fcute ntr-un numr de perioade (nper), cu o anumit dobnd (dobnd). Formatul general al
funciei este =FV(dobnd, nper, plat, [vp,tip]). Se observ c din format pot lipsi vp (suma global
investit la nceputul operaiei) i tip (care stabilete dac plata va fi fcut la nceputul perioadei 1,
sau la sfritul perioadei 0). n absena lor, aceste argumente sunt considerate ca avnd valoarea 0.
Funcia PMT( ) calculeaz plile periodice pentru diferite tipuri (tip) i valori viitoare ale
unei investiii (vv), fiind date dobnda investiiei (dobnd), termenul (nper) i valoarea prezent (vp).
Formatul general este =PMT(dobnd, nper, vp [,vv, tip]), funcia determinnd valoarea ratei lunare
/anuale pentru un mprumut pe un numr de luni /ani cu o dobnd lunar /anual fixat. Dac pentru
vv i tip nu sunt introduse valori, sunt considerate egale cu zero.
Funcia PV( ) calculeaz valoarea prezent a unei investiii pe baz de vrsminte egale.
Formatul general este =PV(dobnd, nper, plat [,vv, tip]). Dac vrsmintele nu sunt egale se
folosete funcia NPV( ).
Funcia RATE( ) stabilete procentual dobnda necesar pentru ca o investiie s ajung la
valoarea capitalizat scontat. Formatul general este =RATE(nper, plata, vp [,vv, estimare]). Aceast
funcie poate furniza mai multe valori dependente de estimare. Dac acest argument nu este folosit,
estimarea implicit este de 10%. Pe de alt parte, dac estimarea se deprteaz de valoarea corect
Excel returneaz mesajul de eroare #NUM!.
Funcia IRR( ) determin rata intern de rentabilitate pentru o serie de venituri sau ncasri.
Formatul general este =IRR(valori, estimare). Valorile pot fi pozitive sau negative, coninute ntr-un
domeniu sau o matrice de celule referite, iar estimarea este un numr care de obicei este cuprins ntre 0
i 1, i indic evaluarea privind beneficiul final.

Invmnt la distan Anul I 2008/2009

57

Funcii pentru baze de date. Funciile din aceast categorie sunt construite n principal pe
funciile statistice (DAVERAGE(), DCOUNT(), DMAX(), DSTV() etc.) i o serie de funcii
matematice (DSUM(), DPRODUCT() etc.), realiznd aceste calcule cu valori ale cmpurilor ncrcate
n articolele bazelor de date.
Funciile logice. Aceste funcii sunt printre cele mai folosite funcii Excel, ele oferind
posibilitatea de a aduga noi faciliti logice i de decizie foilor de calcul. Cele mai utilizate funcii din
aceast categorie sunt: =IF(), =AND(), =OR(), =NOT(), =FALSE() i =TRUE().
Funcia IF( ) este cea mai simpl funcie logic avnd totodat i cele mai multe aplicaii
practice. IF() este folosit pentru testarea unor condiii i pentru luarea unor decizii. Formatul general
este =IF(condiie, val_adevr, val_fals), rezultnd faptul c funcia IF( ) folosete trei argumente:
testul logic i valorile pentru adevrat i pentru fals. n cazul n care condiia evaluat este adevrat,
funcia returneaz rezultatul aciunii val_adevr. n caz contrar este returnat rezultatul aciunii val_fals.
Dac val_fals lipsete, iar condiia este evaluat ca fiind fals se va returna valoarea FALSE. Pentru
testarea unor condiii complexe /multiple se pot construi IF-uri imbricate prin plasarea altor funcii
IF() n val_adevr i /sau n val_fals, sau pot fi folosite funciile AND( ) i OR( ).
Funcia AND( ) are rolul de a reuni condiii n care toate argumentele logice trebuie s
respecte condiia stabilit. Formatul general este =AND(argument1; argument2;), cu precizarea c
argumentele trebuie s fie valori logice unice. Funcia returneaz TRUE dac toate argumentele logice
sunt adevrate i FALSE dac cel puin un argument este fals.
Funcia OR( ) are acelai format cu funcia AND() i este folosit pentru obinerea condiiilor
multiple n care este suficient ca mcar unul dintre argumente s respecte condiia specificat. Altfel,
funcia va returna valoarea FALSE dac nici unul dintre argumentele folosite nu respect condiia.
Funcia NOT( ) inverseaz condiia de test logic n cadrul unei funcii IF(). Formatul general
este =NOT(argument), funcia avnd rolul de a inversa valoarea argumentului de la TRUE la FALSE
i invers.
Funciile TRUE( ) i FALSE( ) returneaz ntotdeauna TRUE i respectiv FALSE putnd fi
folosite n construciile utilizatorului chiar i fr parantezele rotunde.
Funcii matematice. Acest tip de funcii ofer faciliti pentru efectuarea unei game deosebit
de variate de calcule matematice, tiinifice, inginereti etc. n calculele economice sunt utilizate:
=SUM(), =SUMIF(), =PRODUCT(), =INT(), =ROUND().
Funcia SUM( ) este cea mai utilizat funcie, motiv pentru care n bara de instrumente
Standard este disponibil pictograma AutoSum- specializat n nsumarea coninutului celulelor unei
foi de calcul. Prin AutoSum, implicit, este nsumat coninutul numeric al celulelor plasate la stnga sau
deasupra celulei curente. Pentru o totalizare rapid a fiecrei coloane dintr-un tabel, se selecteaz tot
tabelul (cu mouse-ul sau cu combinaia Ctrl+Shift+*), dup care se activeaz AutoSum. Procedura
funcioneaz i pentru domenii neadiacente. Dup selectarea acestora, executnd clic pe AutoSum,
totalurile vor aprea la baza coloanelor sau n dreapta liniilor selectate. Funcia SUM() are formatul
general =SUM(argment1;argument2;) i calculeaz suma argumentelor specificate (maxim 30).
Funcia SUMIF( ) calculeaz suma tuturor celulelor dintr-un domeniu care verific o condiie
stabilit. Formatul general este =SUMIF(domeniu, condiie, domeniu_sum). ntotdeauna condiia este
precizat sub forma unui ir de caractere inclus ntre ghilimele.

58

Instrumente software pentru afaceri

Funcii de cutare i referire. Funciile din aceast categorie asigur cutarea i returnarea unor
valori dintr-un anumit domeniu. n aplicaiile economice cele mai utilizate funcii de acest tip sunt
=VLOOKUP() i =HLOOKUP().
Funcia HLOOKUP( ) permite realizarea cutrilor pe orizontal, pe rndul din partea de sus
a unui tabel, pn la gsirea unei valori de comparare adecvate. Formatul general este:
=HLOOKUP(val_cutat, matrice_tabel, nr_linie_index, dom_cutare). Funcia ncepe cutarea
valorii specificate n prima linie a domeniului definit, dup care cutarea continu, pe vertical i se
oprete n linia specificat prin nr_linie_index. Domeniul de cutare este o valoare logic opional
(TRUE (implicit) sau FALSE) i permite returnarea exact a valorii cutate sau a unei valori
aproximative.
Funcia VLOOKUP( ) efectueaz cutarea pe vertical a unui element n coloana cea mai din
stnga a unui domeniu dintr-o tabel indexat. Formatul este asemntor cu cel al funciei
HLOOKUP(). Dac nu este gsit valoarea dorit, funcia va returna, urmtoarea valoare mai mare,
dect cea cutat.

3.3.2.2 Utilizarea principalelor funcii Excel n domeniul economic


Calculul amortizrii: SLN(), DDB() i SYD()
Se achiziioneaz un utilaj la preul de 17.000.000.000 lei. Durata de via a acestuia este
estimat la 7 ani. S se calculeze amortizarea corespunztore fiecruia din cei 7 ani pn la
amortizarea complet a utilajului. Valoarea rezidual este egal cu zero. n figura 3.36 sunt prezentate
funciile i rezultatele aplicrii acestora.

Figura 3.36 Calculul amortizrii formule i rezultate


Formula poate fi editat n bara de formule sau n fereastra Insert Function dac se activeaz
constructorul de funcii (figura 3.37).

Invmnt la distan Anul I 2008/2009

59

Figura 3.37 Fereastr de stabilire a argumentelor unei funcii


Calculul anuitilor: FV(), PV(), IRR(), RATE()
Funcia FV(). O persoan fizic depune la o banc, n contul su, suma de 15.000 . Timp de
cinci ani i propune s depun anual cte 3.500 . S se calculeze soldul contului la sfritul
perioadei, tiind c dobnda anual va fi constant, n procent de 5,5%. Depunerile pot fi fcute la
sfritul sau nceputul fiecrui an. Valoarea prezent i plile periodice vor fi preluate cu semnul
minus deoarece ele reprezint ieiri de fluxuri de numerar pentru depuntor. Dup cum se observ n
figura 3.38, n bara de formule, n celula C10 s-a calculat valoarea viitoare n condiiile plilor la
sfritul perioadei (valoarea argumentului tip este 0). n celula C11, pentru cazul plilor efectuate la
nceputul perioadei, argumentul tip este egal cu 1.

Figura 3.38 Funcia FV()

Figura 3.39 Funcia PV()

Funcia PV(). O societate de asigurri ofer polie de asigurare prin care asiguratul poate s
beneficieze de 18.000 Euro, cu condiia s se plteasc trimestrial, timp de 15 ani cte 150 . Dobnda
la depozitele n Euro este de 5,5% pe an i se consider constant n aceast perioad. Care este
valoarea real (prezent) a unei astfel de polie de asigurare? (figura 3.39)
Funcia IRR(). Un investitor dispune de 100.000.000 lei i i investete n comerul cu
amnuntul. El prognozeaz s obin de pe urma acestei investiii, n urmtorii 4 ani, urmtoarele
venituri 35.000.000 lei, 27.500.000 lei, 29.000.000 lei i 45.000.000 lei. S se calculeze rata intern de
rentabilitate a investiiei, aproximarea rezultatului fiind de 10%. Reamintim c investiia iniial

Instrumente software pentru afaceri

60

trebuie introdus cu semnul minus, fiind o plat. Modelul proiectat pentru acest exemplu este
prezentat n figura 3.40.

Figura 3.40 Funcia IRR()

Figura 3.41 Funcia RATE()

Funcia RATE(). S se calculeze dobnda care ar trebui perceput la un mprumut de


300.000.000 lei acordat pe o perioad de 5 ani, dac se dorete ca rambursrile lunare s fie de
10.000.000 lei (figura 3.41).
Funcii logice - IF()
n funcie de vechimea n munc s se stabileasc valoarea sporului cuvenit salariailor unei
firme. Tranele de vechime i sporurile aferente sunt reglementate prin lege:
Trana de vechime (ani)
<3
3-5
5-10
10-15
15-20
>20

% spor vechime
0
5%
10%
15%
20%
25%

Figura 3.42 Funcia IF()

Invmnt la distan Anul I 2008/2009

61

n figura 3.42 a fost proiectat un model n care s-a folosit funcia IF() n combinaie cu o alt
funcie logic AND() pentru a verifica apartenena la un anumit interval a valorilor vechimii exprimat
n ani. Funcia a fost construit pentru primul salaria din list (celula E6), apelndu-se adresele relative
pentru valorile aferente vechimii i salariului de baz. n bara de formule este afiat funcia IF()
pentru celula E6:

=IF(C6<5;0;IF(AND(C6>=5;C6<10);D6*5%;IF(AND(C6>=10;C6<15);D6*10%;
IF(AND(C6>=15;C6<20);D6*20%;D6*25%))))
Din E6 funcia este copiat pentru toi salariaii, n celulele coloanei Valoare spor vechime.
Funcii de cutare: VLOOKUP(), HLOOKUP()
Funcia VLOOKUP. Din statul de plat simplificat, pentru o marc specificat s se
gseasc Numele i prenumele i Salariul de baz. Respectnd restriciile funciei de cutare pe
vertical, prima coloan este ordonat ascendent (ordinea cresctoare numerelor de marc a
salariailor). n celula A22 se va introduce numrul de marc dorit, iar n celulele B22 i C22 sunt
construite funciile Vlookup() de gsire a datelor cutate (figura 3.43).

Figura 3.43 Funcia VLOOKUP()

Figura 3.44 Funcia HLOOKUP()

Funcia HLOOKUP(). Din situaia centralizatoare a vnzrilor pe raioane, n perioada 20012005, s se afle care a fost, n anul 2004, volumul vnzrilor la raionul Jucrii. n figura 3.44 n bara
de formule este afiat funcia Hlookup() i argumentele folosite pentru B18.

3.4. CREAREA I FORMATAREA GRAFICELOR


Excel asigur transformarea datelor numerice n imagini grafice informaiile reprezentate
devenind mult mai sugestive i mai uor de interpretat. Fiecare element de informaie din grafic se
numete punct de date. Mai multe puncte formeaz o serie. Punctele i seriile sunt similare celulelor i
domeniilor de celule.

3.4.1 Tipuri de grafice


Excel dispune de un modul care permite obinerea unei game diversificate de grafice, fiecare
corespunznd unui anumit mod de aranjare i analizare a datelor. n acest scop se activeaz modulul

62

Instrumente software pentru afaceri

Chart Wizard, fie din bara de instrumente Standard, prin pictograma Chart Wizard, fie din meniul
Insert, prin opiunea Chart (figura 3.45).

Figura 3.45 Activarea modulului grafic i Meniul Graph


Implicit, n bara meniu devine disponibil meniul Chart ale crui opiuni permit definirea i
modificarea unui grafic. Primele patru opiuni corespund celor patru pai pe care i presupune
obinerea unui grafic sub asistena Chart Wizard. Fiecare pas are o fereastr proprie n care se pot
stabili elemente suplimentare.
Exemplificm procedura de obinere a graficelor cu datele ce reprezint volumul vnzrilor,
pe raioane, ntr-un magazin universal (figura 3. 46).

Figura 3.46 Foaia de calcul cu datele ce vor fi reprezentate grafic


n primul pas - Chart Type se stabilete modelul /tipul de grafic (figura 3.47). Graficele sunt
organizate n dou liste: Standard (lista Standard Type conine modelele standard: Column, Bar, Line,
Pie etc.) i Custom (lista Custom Type conine modele personalizate).
Alegerea tipului de grafic trebuie fcut n aa fel nct s se potriveasc cel mai bine cu datele
i cu ceea ce dorete utilizatorul s sugereze prin respectivul grafic (comparaii, structuri etc.). Pentru
domeniul economic, principalele categorii de grafice i tipurile de date pentru a cror reprezentare sunt
adecvate sunt prezentate n continuare.
Graficele Column (coloan) sunt implicite i sunt folosite, n general, pentru compararea, n
acelai interval de timp, a unor serii de date. Pe axa orizontal sunt reprezentate domeniile, iar pe axa
vertical valorile.
Graficele Bar (bar) sunt similare cu graficele Column, rotite cu 900 i au valorile pe axa
orizontal i domeniile pe axa vertical.

Invmnt la distan Anul I 2008/2009

63

Figura 3.47 Fereastra Chart Type


Graficele Pie (cerc) sunt numite i diagrame de structur sau diagrame circulare i ilustreaz
cota parte a parilor dintr-un ntreg, putndu-se reprezenta o singur serie de date (se selecteaz o
singur linie cu mai multe coloane sau o singur coloan cu mai multe linii). Similare diagramelor de
structur sunt graficele Doughtnut (inel) care sunt folosite pentru reprezentarea n acelai grafic mai
multor serii de date.
Graficele Line (linie) compar tendinele sau evoluiile unor serii de date pe parcursul unor
intervale de timp egale.
Graficele XY (Scatter) numite i diagrame dispersate se folosesc pentru a pune n eviden
relaiile ntre diferite serii de valori dependente de acelai parametru.
Graficele combinate afieaz dou tipuri de diagrame n acelai grafic (de exemplu, o serie de
date s fie reprezentat n linie i o alt serie de date sub form de coloane). Aceste grafice pot fi doar
de tip 2D i pun n eviden similitudini ntre dou serii de valori de naturi diferite. ntr-o prim etap
se obine un grafic 2D, dup care se selecteaz una din seriile de date reprezentate. Pentru aceast serie
se modific tipul de grafic.
n cel de al doilea pas - Chart Source Data se stabilete sursa datelor care vor fi reprezentate
(figura 3.48). Fereastra Chart Source Data este structurat pe dou cadre de pagin Data Range i
Series. n funcie de obiectivul urmrit, din Data Range este posibil optarea pentru reprezentarea pe
axa OY fie a datelor de pe linii, fie a celor de pe coloanele.

Figura 3.48 Pasul 2 - Stabilirea sursei datelor

Instrumente software pentru afaceri

64

Implicit, sunt reprezentate datele din domeniul selectat. Pagina Series permite stabilirea sau
modificarea explicit a fiecrei serii de date. Este posibil i adugarea (cu butonul de comand Add),
sau eliminarea (cu butonul de comand Remove) unor serii de date n /din grafic. n zona Name pot fi
atribuie sau pot fi modificate numele seriilor de date reprezentate n grafic. De asemenea, pot fi
modificate etichetele axei OX (figura 3.49).

Figura 3.49 Fereastra Chart Source Data Series


n pasul al treilea - Chart Options graficul poate fi mbuntit prin definirea anumitor
opiuni. Excel deschide fereastra Chart Options organizat, n funcie de tipul de grafic, pe mai multe
cadre de pagin, care conin opiuni pentru rafinarea unui grafic pentru a fi sugestiv i mai uor de
interpretat. n principal, sunt asigurate urmtoarele operaii:

stabilirea titlurilor pentru grafic i axele utilizate Titles (figura 3.50);

Figura 3.50 Fereastra Chart Options Titles

stabilirea modului de afiare a etichetelor pentru axa OX i dac vor fi sau nu afiate
valorile pentru axa OY, (n cazul graficelor 2D) sau pentru axa OZ, (n cazul graficelor
3D) Axes;

stabilirea grilelor orizontale i /sau verticale Gridlines (figura 3.51);

Invmnt la distan Anul I 2008/2009

Figura 3.51 Fereastra Chart Options Gridlines

65

Figura 3.52 Fereastra Chart Options Legend

stabilirea poziiei legendei i dac aceasta va fi sau nu afiat Legend (figura 3.52);

plasarea sau nu a unor etichete de tip text sau valoare corespunztoare datelor reprezentate
- Data Labels (figura 3.53);

plasarea sub grafic a unui tabel ce conine datele din domeniul reprezentat - Data Table
(figura 3.54).

Figura 3.53 Fereastra Chart Options Data Labels

Figura 3.54 Fereastra Chart Options Data


Table

n ultimul pas, al patrulea - Chart Location, se stabilete locaia n care va fi salvat graficul
obinut (figura 3.55). Graficul poate fi plasat ca un obiect n foaia de calcul curent (As object in), sau
salvat ntr-o foaie de calcul special Chart<n>, care va fi plasat n registrul de lucru activ, naintea
foii de calcul curente. Foaia cu grafic va avea plasat n bara meniu, meniul Chart care organizeaz o
serie de opiuni care permit, n principal, reluarea independent a fiecrui pas prezentat mai sus.

Figura 3.55 Fereastra Chart Location

Instrumente software pentru afaceri

66

Figura 3.56 Salvarea unui grafic

3.5. LISTE I BAZE DE DATE N EXCEL


Pe lng performane n calculule cu numere i n operaiuni cu formule i funcii complexe,
Excel permite i lucrul cu liste. Prin list se nelege o colecie de elemente denumite nregistrri
(records), fiecare nregistrare fiind structurat n cmpuri (fields). Aceast organizare se aseamn cu
cea folosit n sistemele de gestiune a bazelor de date, motiv pentru care listele complexe i cu un
volum mare de date sunt denumite baze de date.
La organizarea unei liste trebuie avute n vedere cteva reguli:

fiecare nregistrare este memorat pe o singur linie i fiecare cmp este definit ca o
singur coloan;

listele au un antet opional (header row) constituit din prima linie din list i care indic
numele cmpurilor listei;

pentru cmpuri este recomandat folosirea unor nume scurte prin care s se sugereze
coninutul informaional al datelor ncrcate;

ntr-o list pot fi organizate orice tip de date: text, cifre, date calendaristice, imagini etc.;

datele unei coloane trebuie s fie de acelai tip, ele fiind valori pentru un singur cmp;

ntre antetul listei i articolele listei nu trebuie s apar linii libere;

pentru fiecare articol trebuie s existe cel puin un cmp ncrcat cu date.

Organizarea i gestionarea datelor dintr-o list sau baz de date se realizeaz cu ajutorul
opiunilor meniului Data.

3.5.1 Introducerea datelor n liste /baze de date


ncrcarea unei liste cu date poate fi realizat direct de la tastatur sau folosind formularul de
date (Data form) activat prin comanda Form, din meniul Data. Aceast comand deschide o fereastr
cu numele foii de calcul curente. Pentru exemplificare folosim foaia de calcul Baze de date n care
sunt ncrcate 16 nregistrri ce conin informaii privind salariaii unei uniti comerciale (figura
3.57).

Invmnt la distan Anul I 2008/2009

67

Figura 3.57 Introducerea datelor Comanda Form

3.5.2 Sortarea datelor din liste /baze de date


Excel memoreaz datele n ordinea introducerii lor, fiind dificil localizarea rapid a acestora,
atunci cnd sunt n volum mare.
Sortarea permite organizarea datelor n ordine alfabetic sau numeric, ascendent sau
descendent. Operaia este executat din meniul Data, prin comanda Sort care deschide caseta de
dialog Sort (figura 3.58). Pot fi cel mult trei chei de sortare, stabilite de utilizator dintre cmpurile
listei. Rapid, pentru sortarea datelor dup un singur criteriu (coloana curent) se pot folosi, din bara cu
instrumente Standard, pictogramele Sort Ascending (A-Z) sau Sort Descending (Z-A)

Figura 3.58 Fereastra Sort

Figura 3.59 Rezultatul sortrii

3.5.3 Regsirea i filtrarea listelor /bazelor de date


Regsirea datelor ncrcate n liste sau baze de date se poate realiza n dou moduri:

folosind din formularul de date Data Form butonul de opiuni Criteria;

folosind comanda Filter, din meniul Data.

Formularul de date ofer posibilitatea cutrii i editrii, la un moment dat, a unei singure
nregistrri, n timp ce opiunea Filter afieaz, n acelai timp, toate nregistrrile care respect

Instrumente software pentru afaceri

68

criteriul /criteriile stabilite. La rndul lor, filtrele pot fi obinute cu ajutorul comenzilor AutoFilter i
Advanced Filter.

3.5.3.1 Auto filtrarea


Comanda AutoFilter permite accesul rapid la informaiile care rspund condiiei /condiiilor
de filtrare afindu-le peste nregistrrile din foaia de calcul. La lansarea acestei comenzi, n dreapta
fiecrui nume de cmp este plasat un buton-sgeat
construirea criteriului /criteriilor de selecie.
n listele subordonate butoanelor
cmp n parte.

care, dac este activat, permite selectarea sau

sunt disponibile opiuni generale sau specifice fiecrui

Opiunea All este implicit, n list fiind prezente toate nregistrrile. n plus, dup o filtrare
anterioar, aceast opiune reface lista iniial.
Opiunea Top 10 poate fi folosit numai n coloanele ce conin numere sau date calendaristice
i permite extragerea celor mai mari sau mai mici valori din list pe baza unui numr sau a unui
procent ales de utilizator.
Custom permite crearea unor condiii folosind operatori relaionali (>, <, >=, <= etc.). Pentru
expresii compuse se folosesc butoanele de opiuni AND sau OR.
Blanks permite afiarea tuturor nregistrrilor din baza de date care, n coloana curent, conin
celule libere (n care nu au fost introduse date). NonBlanks are efectul invers opiunii Blanks afind
nregistrrile ce conin date n coloana curent de filtrare.
Valorile cmpurilor permit extragerea din baza de date numai a articolelor care conin
valoarea selectat. De exemplu, din baza de date s se extrag doar articolele care conin informaii
privind economitii. Se va realiza un filtru pe cmpul Functie pentru articolele care conin irul de
caractere economist (figura 3.61).

Figura 3. 60 Comanda AutoFilter

Figura 3.61 Rezultatul unui AutoFiter

Prin AutoFilter se pot construi condiii orict de complexe singurul aspect negativ al opiunii
putndu-l constitui suprascrierea rezultatelor filtrului peste datele de intrare. Cu opiunea Show All,
din comanda Filter nregistrrile pot fi reafiate.

Invmnt la distan Anul I 2008/2009

69

3.5.3.2 Filtrarea avansat


Comanda Advanced Filter este folosit cnd se dorete obinerea, n afara tabelului propriuzis, a unei liste distincte cu nregistrrile care ndeplinesc condiia /condiiile de filtrare. Pentru aceasta
este necesar definirea a trei zone distincte: zona datelor de intrare; zona criteriilor de filtrare i zona
datelor de ieire. Legtura ntre aceste zone se realizeaz prin intermediul numelor de cmpuri.
Zona datelor de intrare reprezint domeniul nregistrrilor din baza de date ce va fi supus
restriciilor de filtrare. Este obligatorie includerea n aceast zon a numelor de cmpuri i a coloanelor
folosite la construirea criteriilor de filtrare.
Zona criteriilor de filtrare este definit pentru condiiile de filtrare i trebuie s cuprind pe
prima sa linie numele cmpului sau cmpurilor cu care se construiesc aceste restricii. Zona criteriilor
nu trebuie s conin linii goale, iar numele de cmpuri trebuie s fie ortografiate exact ca i numele
cmpurilor din baza de date (zona datelor de intrare). Criteriile pot fi simple sau multiple. n cazul
celor multiple ele pot fi plasate pe aceeai linie sau pe linii diferite. Criteriile construite pe aceeai linie
trebuie s fie ndeplinite n totalitate pentru ca o nregistrare s fie selectat n rezultatul filtrului.
Zona datelor de ieire este declarat pentru copierea nregistrrilor care respect criteriul
/criteriile de filtrare, ntr-o alt zon dect cea a datelor de intrare.
Pentru exemplificare, din baza de date Salariai s se extrag lista economitilor care au un
salariu de baz mai mare de 25.000.000 lei . La selectarea comenzii Advanced Filter se deschide o
fereastr cu acelai nume (figura 3.62). Rezultatul filtrrii poate fi dirijat n zona datelor de intrare
(butonul de opiuni Filter the list, in-place), sau ntr-o locaie stabilit prin definirea unei zone a
datelor de ieire (butonul de opiuni Copy to another location).

Figura 3.62 Comanda Advanced Filter


Zonele de lucru pentru realizarea filtrului, se precizeaz prin:

List range (pentru zona datelor de intrare),

Criteria range (pentru zona criteriilor de filtrare) i

Instrumente software pentru afaceri

70

Copy to (pentru zona datelor de ieire). Zona Copy to poate fi utilizat numai dup
selectarea butonului de opiuni Copy to another location.

3.5.3.3 Funcii pentru bazele de date


Bazele de date Excel pot fi prelucrate i cu ajutorul unor funcii specifice, care au n sintax
trei argumente:

grupul de intrare care conine baza de date sau o parte din aceasta;

cmpul a crui valori vor fi supuse prelucrrii; cmpul se precizeaz prin numrul de
ordine a coloanei pe care se gsete sau prin numele su, scris ntre ghilimele;

criteriul este zona n care se specific restricia /restriciile de selecie. Aceast zon

include pe o linie numele cmpului / cmpurilor (aa cum este scris n zona grupului de
intrare), i n celula /celulele de sub numele de cmp /cmpuri se precizeaz condiia de
selecie propriu-zis.
n figura 3.63 sunt exemplificate cteva funcii de lucru cu bazele de date.

Figura 3.63 Funcii pentru baze de date

3.5.4 Faciliti privind simularea datelor


Folosind teoria jocurilor Ce s-ar ntmpla dac? (What if than?) se pot realiza analize,
previziuni i prognoze care s permit stabilirea unei anumite strategii pentru conduita viitoare a
utilizatorului. Acesta are la dispoziie dou posibiliti:

Invmnt la distan Anul I 2008/2009

71

s schimbe o dat de intrare pentru a vedea efectul pe care l produce asupra uneia sau mai multor
formule /funcii;

s schimbe dou date de intrare pentru a vedea efectul produs asupra unei singure formule /funcii.

Pentru aceasta se utilizeaz comanda Table din meniul Data care deschide fereastra Table
unde n zonele Row input cell i /sau Column input cell utilizatorul precizeaz celula sau celule n
funcie de care Excel va realiza simularea. Realizarea simulrilor presupune o formul /funcie n care
se folosete variabila /variabilele ce se modific.
Pentru exemplificare s-a utilizat funcia PMT() care stabilete plata constant de efectuat
pentru un credit /mprumut pe o perioada determinat (un numr de ani /luni) i cu o rat a dobnzii
constant.

3.5.4.1 Simularea cu una sau dou variabile


Atunci cnd se modific pe coloan, o singur variabil, (n exemplul prezentat mai jos, rata
dobnzii) se parcurg urmtorii pai (figura 3.64):

Figura 3.64 Simularea cu o variabil - Rezultate

se genereaz, pe coloan (n zona B12:B25) o serie de poteniale valori ale ratei dobnzii
(ntre 8,5% i 15%);

cu o linie mai sus, n coloana urmtoare (celula C11) se editeaz funcia din celula (C8);

se selecteaz zona n care vor fi afiate valorile simulrii (B11:C25);

din meniul Data se activeaz comanda Table;

n fereastra Table se precizeaz, n zona Column input cell, celula din zona datelor de intrare
care conine variabila ce se modific ($C$6);
se activeaz butonul de comand OK.
Cnd se modific dou variabile (figura 3.65), paii pentru realizarea simulrii sunt:

Instrumente software pentru afaceri

72

Figura 3.65 Simularea cu dou variabile Rezultate

se genereaz, pe coloan (n zona B12:B25) o serie de poteniale valori ale ratei dobnzii
(ntre 8,5% i 15%), iar pe linie (C11:I11) o serie de poteniale valori pentru numrul de ani
(ntre 10 i 22);

n celula B11 (situat n colul stnga-sus a zonei de simulare cu dou variabile) se reediteaz
funcia sau coninutul celulei folosit la simulare (C8);

se selecteaz zona de simulare (B11:I25);

din meniul Data se activeaz comanda Table;

n fereastra Table se precizeaz n zona Row input cell celula care conine variabila ce se
modific pe linie (numrul de ani - $C$5), iar n zona Column input cell celula din zona
datelor de intrare care conine variabila ce se modific pe coloan (rata dobnzii - $C$6);

se activeaz butonul de comand OK.

Observaie! S-a forat plasarea ferestrei Table pentru a se observa care dintre variabile se
modific pe coloan i care pe linie.
Dup obinere, tabela nu poate fi modificat datele din celulele ei fiind stabilite pe baza altor
date considerate date de intrare.

3.5.4.2 Simularea pe baz de grafice


Deoarece graficele sunt construite pe baza datelor din una sau mai multe foi de calcul, ele
permit folosirea tehnicilor din teoria jocurilor pentru a realiza diferite scenarii n care uor i rapid sunt
estimate vizual situaiile scontate de utilizator.
n continuare este prezentat un exemplu n care, plecnd de la un grafic de tip Column 2D,
realizat pe baza datelor din foaia de calcul ce conine valorile veniturilor, cheltuielilor i a profitului de
pe semestru II al anului 2005, se realizeaz un scenariu n care Excel trebuie s stabileasc valoarea
veniturilor din luna decembrie astfel nct s se ajung la un anumit nivel al profitului. Concret
ntrebarea este: Cu ct ar fi trebui s creasc veniturile (cheltuielile rmnnd aceleai), pentru ca n

Invmnt la distan Anul I 2008/2009

73

luna decembrie s se fi nregistrat un profit de 8.800.000? n figura 3.66 este prezentat foaia de
calcul i graficul obinut pe baza datelor de start.

Figura 3.66 Indicatori financiari Foaie de


calcul i Grafic

Figura 3.67 Selectarea seriei ce urmeaz a fi


modificat

Pentru a realiza o astfel de simulare, dup selectarea seriei de date pe care urmeaz s o
aducem la o alt valoare (prin dublu clic de pe bara corespunztoare profitului din luna decembrie), se
folosete tehnica drag&drop i prin tragere n sus /jos se stabilete valoarea int /scop (figura 3.67).
Deoarece profitul se obine pe baza unei formule (Venituri Cheltuieli), automat Excel activeaz
instrumentul Goal Seek cernd precizarea celulei din formul care s fie modificat pentru a se ajunge
la valoarea dorit a profitului (figura 3.68).

Figura 3.68 Simulare pe baz de grafic


Dac pentru valoarea int precizat Excel gsete soluie (figura 3.69) se modific automat
att graficul ct i celula din foaia de calcul (figura 3.70).

74

Instrumente software pentru afaceri

Figura 3.69 Fereastra Goal Seek Status

Figura 3.70 Rezultatul simulrii pe baz de grafic


ntr-un grafic pot fi trasate i linii care prefigureaz evoluiile i tendinele seriilor de date
reprezentate. Pentru aceasta dup crearea sau selectarea unui grafic 2D (Column, Bar, Line, XY,
Bubble, Area, Stock) se activeaz comanda Add Trendline, din meniul Chart. Din fereastra asociat
acestei opiuni se selecteaz tipul de tendin dorit (liniar, exponenial, logaritmic etc.). Din pagina
Options se poate stabili prin Forecast, numrul de perioade ulterioare (Forward) pentru care se
dorete estimarea tendinei, sau numrul de perioade anterioare (Backward) pentru a sugera evoluia
ncepnd cu o perioad necuprins n foaia de calcul (figurile 3.71 i 3.72).

Figura 3.71 Fereastra Add Trendline

Invmnt la distan Anul I 2008/2009

75

Figura 3.72 Estimarea tendinei ntr-un grafic Column

Rezumat
Programele de calcul tabelar sunt instrumente specifice care permit utilizatorului s-i rezolve
singur problemele de prelucrare automat a datelor.
Modelele de rezolvare a aplicaiilor sunt proiectate n foile de calcul, care sunt organizate n
registre de lucru.
Celulele foilor de calcul se identific prin adrese (relative, absolute i mixte). Introducerea datelor
se realizeaz n celula curent.
Graficele sunt reprezentri sugestive ale datelor organizate n foile de calcul.
Apelnd la teoria jocurilor, n Excel sunt posibile analize de tip What if ?- Ce se ntmpl
dac? folosind fie datele din tabele, fie elementele unui grafic.

Exemple de teste gril


Care sunt elementele unei baze de date ntr-un program de calcul tabelar?
a. cmpurile
b. nregistrrile
c. numele cmpurilor
Ce se va afia n celula F8 dup copierea funciei din F7?
D
E
F
7
8
9
a. DA
b. ERR
c. NU

10
20
30

10
20
30

=IF(E7+$D$7>35,DA,NU)

Instrumente software pentru afaceri

76

Capitolul 4

MODELUL RELAIONAL DE ORGANIZARE A BAZELOR DE


DATE

Obiective:
vi.
vii.
viii.
ix.

Conturarea importanei bazelor de date n sistemele informaionale


actuale
Expunerea principalelor noiuni ale bazelor de date relaionale: relaie
(tabel), tuplu (linie), coloan (atribut)
Prezentarea restriciilor ce pot fi declarate i gestionate ntr-o baz de
date relaional
nelegerea raportului dintre schema i coninutul unei baze de date

Rezultate ateptate:
x.
xi.
xii.
xiii.

xiv.
xv.

Cunoaterea elementelor ce definesc bazele de date, avantajele i


evoluia acestora
nelegerea arhitecturii unei baze de date
Familiarizarea cu elementele de fundament ale modelului relaional
Identificarea modalitilor prin care, cu ajutorul restriciilor
atomicitate, nenulitate, unicitatea liniilor, cheie primar, cheie strin
(restricie referenial), reguli de validare la nivel de atribut, reguli de
validare la nivel de nregistrare poate fi ameliorat gradul de
corectitudine a informaiilor stocate n baz
Un prim contact cu modul de declarare a restriciilor n Sistemele de
Gestiune a Bazelor de Date (ACCESS)
nelegerea raportului dintre schema i coninut unei baze de date,
precum i a modalitilor de prezentare ale acestora n SGBD
ACCESS

Invmnt la distan Anul I 2008/2009

77

4.1. CTE CEVA DESPRE BAZE DE DATE


Simplificnd i exagernd nepermis lucrurile, am putea spune c exist doi poli ntre care
poate fi poziionat orice problem informatic. Pe de o parte, cel al chestiunilor interesante, nu
neaprat cu formule i calcule complexe, ct o anume ingeniozitate n rezolvare - mult invocata i
ateptata "fis". Imaginea clasic a informaticianului mioritic (un informatician fr ochelari, adidai
i blugi este unul ndoielnic, dac nu insuportabil !) este cea a unui programator preocupat permanent
s gseasc o funcie recursiv care s-i rezolve o problem neaprat de logic superioar.
Cellalt pol regrupeaz probleme n care complexitatea calculelor rareori depete nivelul
celor patru operaii aritmetice elementare - adunare, scdere i nc dou; n schimb, volumul
informaiilor i zecile/sutele moduri de regrupare i agregare a lor este deconcertant.
Fr a face concuren vreunui manual de filosofie, putem spune c, din pcate, ca i n via,
ponderea problemelor din a doua categorie s le spunem plicticoase este mult mai mare dect
ponderea problemelor cu adevrat interesante. Aceasta ar fi vestea proast. Vestea bun este c se
ctig enorm de muli bani din chestiunile plicticoase. O veste intermediar ar fi c, n majoritate,
problemele pe care le are de rezolvat un informatician presupun elemente din ambele categorii. De
fapt, cei doi poli de care vorbim au o existen virtual, fiind utili mai degrab din raiuni didactice &
pedagogice.
Cert este c, nc de la nceputurile sale, informatica a fost confruntat nu numai cu efectuarea
de calcule sofisticate, tiinifice, dar i cu stocarea i gestionarea unui volum de informaii din ce n ce
mai mare. Astfel nct apariia unor instrumente software dedicate gestiunii i prelucrrii datelor a fost
doar o problem de timp.

4.1.1. La nceput a fost fiierul


Prima care a resimit acut nevoia unor instrumente software dedicate administrrii unor
cantiti imense de informaii a fost armata SUA. n a doua parte a anilor '50 Departamentul Aprrii
al SUA a format un grup de specialiti pentru elaborarea unui limbaj destinat aplicaiilor
administrative, n care dificultatea major inea de volumul imens de resurse materiale i financiare ce
trebuia "chivernisit" i pentru care erau necesare rapoarte dintre cele mai diverse. La acel moment
apruse FLOWMATIC, limbaj precursor celui care a fost considerat cteva decenii regele informaticii
economice COBOL (Common Business Oriented Language).
Arhitectura aplicaiilor de acest tip specific nu numai COBOL-ului, ci multor limbaje din a
III-a generaie, denumit flat-files architecture tradus, ntr-o doar, n romnete drept fiiere
independente este reprezentat n figura 4.1. Specific acestui mod de lucru, referit ca file-based sau
flat files (fiiere independente), este faptul c fiecare dat (Data1, Data2,... Datan) este descris (nume,
tip, lungime), autonom, n toate fiierele n care apare. Mai mult, descrierea fiecrui fiier de date
(cmpurile care-l alctuiesc, tipul i lungimea fiecruia, modul de organizare (secvenial, indexat,
relativ etc.)) este obligatorie n toate programele care l citesc sau modific. ntre FIIER1,
FIIER2, ... FIIERn nu exist nici o relaie definit explicit.

Instrumente software pentru afaceri

78

Data 1

Raport 1

Data 2
Data 3

FIIER 1

PRELUCRARE 1

Data 4
Data 2

Raport 4

Data 4
FIIER 2

Data 5

Fiier de
legturi

PRELUCRARE 2

Raport 3
Raport 2

Data 6
Data 1

FIIER 3

PRELUCRARE 3

Raport 5

PRELUCRRI

IEIRI

Data 5
Data 7
Data 8

DATE

FIIERE

Figura 4.1. Sistem informatic bazat pe organizarea datelor n fiiere independente


Spre exemplu, Data2 este prezent n dou fiiere de date, FIIER1 i FIIER2. Dac, prin
program, se modific formatul sau valoarea acesteia n FIIER1, modificarea nu se face automat i n
FIIER2; prin urmare, o aceeai dat, Data2, va prezenta dou valori diferite n cele dou fiiere, iar
necazurile bat la u: informaiile furnizate de sistemul informatic sunt redundante i prezint un mare
risc de pierdere a coerenei.
Se poate proiecta un mecanism de meninere a integritii datelor, astfel nct actualizarea unei
date ntr-un fiier s atrag automat actualizarea tuturor fiierelor de date n care aceasta apare, ns, n
sistemele mari, care gestioneaz volume uriae de informaii, implementarea unui asemenea mecanism
este extrem de complex i costisitoare. n plus, fiierele de date sunt uneori proiectate i
implementate la distane mari n timp, n formate diferite: de exemplu, FIIER1 este posibil s fi fost
creat cu ajutorul limbajului COBOL, FIIER2 n FORTRAN iar FIIER3 n BASIC. n asemenea
condiii, punerea n oper a mecanismului de meninere a integritii devine o utopie.
Chiar numai i din cele prezentate mai sus, se pot desprinde cteva dezavantaje ale organizrii
datelor dup modelul fiierelor independente:
Redundana i inconsistena datelor: o aceeai dat apare n mai multe fiiere; n aceste cazuri
exist riscul modificrii acesteia ntr-un fiier fr a face modificrile i n toate celelalte fiiere.
Dificultatea accesului. ntr-o ntreprindere, o aceeai informaie este exploatat de mai muli
utilizatori. Spre exemplu, pentru departamentul care se ocup cu gestiunea stocurilor, intrrile de
materiale trebuie ordonate pe magazii (depozite) i repere, n timp ce pentru departamentul care se
ocup cu decontrile cu partenerii de afaceri ai ntreprinderii, intrrile trebuie ordonate pe furnizori ai
materialelor. Or, fiierele tradiionale nu faciliteaz accesarea datelor dup mai multe criterii, specifice
diferiilor utilizatori sau grupuri de utilizatori.
Izolarea datelor: cnd datele sunt stocate n formate diferite, este dificil de scris programe care
s realizeze accesul ntr-o manier global a tuturor celor implicate n derularea unei tranzacii.
Complexitatea apstoare a actualizrilor. O actualizare presupune adugarea, modificarea
sau tergerea unor informaii din fiiere. Cum prelucrrile se desfoar n timp real, de la mai multe
terminale (n mediile multi-utilizator), pot apare situaii conflictuale atunci cnd doi utilizatori doresc

Invmnt la distan Anul I 2008/2009

79

modificarea simultan a unei aceleai date. Rezolvarea acestui gen de conflicte presupune existena
unui program-supervizor al prelucrrilor, care este greu de realizat cu o multitudine de fiiere, create la
distan n timp i, n formate diferite.
Problemele de securitate in de dificultatea crerii unui mecanism care s protejeze pe deplin
datele din fiiere de accesul neautorizat.
Probleme legate de integritatea datelor. Informaiile stocate n fiiere sunt supuse la
numeroase restricii semantice. Toate aceste restricii alctuiesc mecanismul de integritate a datelor,
deosebit de complex n mediile de lucru multi-utilizator i eterogene.
Inabilitatea de a obine rspunsuri rapide la probleme ad-hoc simple.
Costul ridicat se datoreaz gradului mare de redundan a datelor, eforturilor deosebite ce
trebuie depuse pentru interconectarea diferitelor tipuri de fiiere de date i pentru asigurarea
funcionrii sistemului n condiiile respectrii unui nivel minim de integritate i securitate a
informaiilor.
Inflexibilitatea fa de schimbrile ulterioare, ce sunt inerente oricrui sistem informaional.
Modelarea inadecvat a lumii reale.
Aceste dezavantaje sunt mai mult dect convingtoare, nct v putei ntreba dac au existat
aa incontieni care s-i arunce banii pe apa... fiierelor independente. Ei bine, o serie de aplicaii
dezvoltate n anii '60 sau '70 au fost motenite i folosite pn zilele noastre. De ce ? Datorit
consistentelor sume investite, care au putut fi amortizate (trecute pe costuri) doar n ani buni, chiar
decenii. Un alt motiv a fost ns funcionalitatea i viteza unor asemenea aplicaii. i, nu n ultimul
rnd, un mediu economic relativ aezat (v dai seama c nu de mediul nostru economic este vorba),
n care nu au fost necesare modificri majore ale procedurilor i funciilor eseniale.

4.1.2. Baze de date


Sintagma baz de date apare pentru prima dat n titlul unei conferine organizate la Santa
Monica (California) n 1964 de System Development Corporation. Consacrarea definitiv a termenului
este marcat de publicarea n anul 1969, de ctre CODASYL, n cadrul unei conferine dedicate
limbajelor de gestiune a datelor, a primului raport tehnic n care este prezentat conceptul de baz de
date. Fa de modelul fiierelor independente, noutatea o constituie existena unui fiier de descriere
global a bazei, astfel nct s se poat asigura independena programelor fa de date, dup cum o
arat i figura 4.2.
Avantajele organizrii informaiilor n baze de date decurg tocmai din existena acestui fiier
de descriere global a bazei, denumit, n general, dicionar de date (alte titulaturi: repertoar de date
sau catalog de sistem). Extragerea i modificarea datelor, altfel spus, lucrul cu fiierele de date, se
deruleaz exclusiv prin intermediul dicionarului n care se gsesc informaii privitoare la structura
datelor i restriciile ndeplinite de acestea.
O baz de date (BD) reprezint un ansamblu structurat de fiiere, care grupeaz datele
prelucrate n aplicaiile informatice ale unei persoane, grup de persoane, ntreprinderi, instituii etc.
Formal, BD poate fi definit ca o colecie de date aflate n interdependen, mpreun cu descrierea
datelor i a relaiilor dintre ele, sau ca o colecie de date utilizat ntr-o organizaie, colecie care
este automatizat, partajat, definit riguros (formalizat) i controlat la nivel central.

Instrumente software pentru afaceri

80

B A Z A DE D A T E

Fiier de date 1
Dicionar
de date

Fiier de date 2

Fiier de date n

Aplicaia 1

Aplicaia 2

Aplicaia 3

Figura 4.2. Schem de principiu a unei baze de date


Atunci vorbim despre o baz de date, trebuie avute n vedere dou aspecte fundamentale
aceste acesteia, schema i coninutul. Organizarea bazei de date se reflect n schema sau structura sa,
ce reprezint un ansamblu de instrumente pentru descrierea datelor, a relaiilor dintre acestea, a
semanticii lor i a restriciilor la care sunt supuse. Ansamblul informaiilor stocate n baz la un
moment dat constituie coninutul sau instanierea sau realizarea acesteia. n timp ce volumul prezint
o evoluie spectaculoas n timp, schema unei baze rmne relativ constant pe tot parcursul utilizrii
acesteia.
ntr-un sistem informatic ce utilizeaz BD, organizarea datelor poate fi analizat din mai multe
puncte de vedere i pe diferite paliere. De obicei, abordarea se face pe trei nivele: fizic sau intern,
conceptual sau global i extern.
Nivelul fizic (sau intern). Reprezint modalitatea efectiv n care acestea sunt "scrise" pe
suportul de stocare - disc magnetic, disc optic, band magnetic etc.
Nivelul conceptual (sau global). Este nivelul imediat superior celui fizic, datele fiind privite
prin prisma semanticii lor; intereseaz coninutul lor efectiv, ca i relaiile care le leag de alte date.
Reprezint primul nivel de abstractizare a lumii reale observate. Obiectivul acestui nivel l constituie
modelarea realitii considerate, asigurndu-se independena bazei fa de orice restricie tehnologic
sau echipament anume. Toi utilizatorii i exprim nevoile de date la nivel conceptual, prezentndu-le
administratorului bazei de date, acesta fiind cel care are o viziune global necesar satisfacerii tuturor
cerinelor informaionale.
Nivelul extern. Este ultimul nivel de abstractizare la care poate fi descris o baz de date.
Structurile de la nivelul conceptual sunt relativ simple, ns volumul lor poate fi deconcertant. Iar dac
la nivel conceptual baza de date este abordat n ansamblul ei, n practic, un utilizator sau un grup de
utilizatori lucreaz numai cu o poriune specific a bazei, n funcie de departamentul n care i
desfoar activitatea i de atribuiile sale (lor). Simplificarea interaciunii utilizatori-baz, precum i
creterea securitii bazei, sunt deziderate ale unui nivel superior de abstractizare, care este nivelul
extern. Astfel, structura BD se prezint sub diferite machete, referite, uneori i ca sub-scheme, scheme
externe sau imagini, n funcie de nevoile fiecrui utilizator sau grup de utilizatori.
Lund n considerare cele trei nivele de abstractizare, schematizarea unui sistem de lucru cu o
baz de date se poate face ca n figura 4.3.

Invmnt la distan Anul I 2008/2009

Utilizator A1
Aplicaie

Utilizator A2

81

Utilizator B1

Comenzi
autonome

Aplicaie

Schem extern
Imagine A
A
(nivel extern)

Utilizator B3

Aplicaie

Comenzi
autonome

Imagine B
Schem extern
B
(nivel extern)

Interfa A
dintre nivelele
global i extern
Schema
conceptual
(global)

Utilizator B2

Interfa B
dintre nivelele
global i extern

Imagine global
(nivel global)

SISTEM DE
GESTIUNE A
BAZEI
DE DATE

Interfa dintre nivelele


fizic i global

Definirea structurii
interne de stocare
(Schema intern)

Baza de date memorat pe disc

Figura 4.3. Schematizare a unui sistem de lucru cu o baz de date


Posibilitatea modificrii structurii la un nivel, fr a afecta structura nivelului sau nivelelor
superioare, se numete autonomie a datelor stocate n baz, analizabil pe dou paliere.
Autonomia fizic reprezint posibilitatea modificrii arhitecturii bazei la nivel intern, fr ca
aceasta s necesite schimbarea schemei conceptuale i rescrierea programelor pentru exploatarea bazei
de date. Asemenea modificri sunt necesare uneori pentru ameliorarea performanelor de lucru (vitez
de acces, mrimea fiierelor etc.). Tot autonomia fizic este cea care asigur portarea bazei de date de
pe un sistem de calcul pe altul fr modificarea schemei conceptuale i a programelor.
Autonomia logic presupune posibilitatea modificrii schemei conceptuale a bazei (modificare
datorat necesitii rezolvrii unor noi cerine informaionale) fr a rescrie programele de exploatare.
Autonomia logic a datelor este mai greu de realizat dect autonomia fizic, deoarece programele de
exploatare sunt dependente, n foarte mare msur, de structura logic a datelor pe care le consult i
actualizeaz, n ciuda existenei dicionarului de date. Firete, un element important l reprezint i
anvergura modificrii schemei conceptuale.
Datele stocate ntr-o BD prezint, ntr-o msur mai mare sau mai mic, urmtoarele
caracteristici:

partajabilitate disponibilitate pentru un mare numr de utilizatori i aplicaii;

persisten existen permanent, din momentul prelurii n baz pn n momentul


actualizrii sau tergerii;

securitate protejarea de accesul neautorizat, att n ceea ce privete citirea i copierea, ct i


modificarea i tergerea;

validitate referit i ca integritate sau corectitudine privete gradul de adecvare dintre


datele din baz i realitatea, procesele pe care le reflect aceste date;

Instrumente software pentru afaceri

82

consisten ori de cte ori diverse aspecte ale proceselor sau fenomenelor reale sunt preluate
n baz sub forma a doua sau mai multor entiti sau atribute, aceste entiti/atribute trebuie s
fie n concordan unele ce celelalte, s respecte relaiile existente ntre aspectele
proceselor/fenomenelor reale;

nonredundan - pe ct posibil, o entitate din realitate ar trebui s aib un singur corespondent


n baza de date;

independen privete autonomia logic i fizic evocate mai sus.

4.1.3. Modele de organizare a datelor n baze


Nucleul unei baze de date l reprezint dicionarul de date ce conine structura bazei, structur
care se materializeaz prin instruciuni scrise cu ajutorul unui limbaj de definire a datelor (DDL).
Analiza, proiectarea i implementarea structurii (schemei) bazei se realizeaz utiliznd un model de
date. Un asemenea model reprezint un ansamblu de instrumente conceptuale care permit descrierea
datelor, relaiilor dintre ele, a semanticii lor, ca i a restriciilor la care sunt supuse.
Modelul datelor este o reprezentare a obiectelor lumii reale i a evenimentelor asociate lor.
Este o abstractizare care se concentreaz pe aspectele eseniale ale organizaiei/aplicaiei, furniznd
conceptele de baz i notaiile care vor permite utilizatorilor bazelor de date s comunice clar i rapid
informaiile i cunotinele lor despre datele organizaiei.
O grupare "tradiional" a modelelor utilizate n bazele de date delimiteaz trei categorii:
modele logice bazate pe obiect, modele logice bazate pe nregistrare i modele fizice. Din punctul
nostru de vedere, intereseaz numai nivelele conceptual i extern de abstractizare a datelor; de aceea,
vom prezenta, n linii mari, numai reprezentanii principali ai primelor dou categorii.
Modelul ierarhic. Primele produse-software (Sisteme de Gestiune a Bazelor de Date - SGBD)
lucrau cu baze de date ierarhice. Structura datelor este prezentat sub forma unui arbore, partea
superioar a arborelui fiind rdcina (arborele este vzut "cu verdele n jos"). Un nod-tat poate avea
mai multe noduri-fii. Un fiu nu poate exista independent de tatl su. Legtura (reprezentat prin linie)
se face exclusiv ntre tat i fii.
Modelul reea. Este o dezvoltare a modelului ierarhic, prin care se pot reprezenta i situaiile
n care un fiu "posed" mai muli tai. nregistrrile sunt privite n BD ca o colecie de grafuri.
Modelul relaional a fost urmtorul n ordinea cronologic i rmne cel care domin copios
piaa bazelor de date i la acest moment, motiv pentru care cea mai mare parte a acestui curs i este
dedicat.
Modelul obiectual. ncepnd cu anii 60, n programare i, ceva mai trziu, n analiz i
proiectare, orientarea pe obiecte (OO) a avut un succes uria, reuit s depeasc metodologiile
structurate. Pe baza acestui succes, s-a crezut c i n materie de baze de date, modelul obiectual l va
surclasa pe cel relaional. Rezultatele sunt ns deprimante pentru suporterii OO-ului, piaa SGBD OO
fiind sub 6% din valoarea total a pieii bazelor de date.
Modelul relaional-obiectual. Este un model mai recent ce ncearc s valorifice deopotriv
atuurile relaionalului cu orientarea pe obiecte. Dei privit mai degrab cu nencrederile n cercurile
teoreticienilor, acest model se impune ncet-ncet datorit marilor productori de software dedicat
bazelor de date.

Invmnt la distan Anul I 2008/2009

83

4.2. PREZENTARE GENERAL A MODELULUI RELAIONAL


Un model de date are trei piloni: componenta structural, adic modul n care, efectiv, la nivel
logic, datele sunt stocate n baz, componenta de integritate, adic regulile ce pot fi declarate pentru
datele din baz i o component manipulatorie, adic modul n care obinem informaii din bazele de
date (ceea ce presupune o serie de operatori aplicabili uneia sau mai multor relaii).
Dei puternic contestat, i cu neajunsurile sale, modelul relaional de organizare a bazelor de
date rmne cel mai utilizat. Cu foarte puine excepii, toate aplicaiile software realizate pentru bnci,
buticuri, universiti (ordinea este, n ciuda aparenelor, pur ntmpltoare) sunt realizate cu
produse/instrumente ce gestioneaz baze de date relaionale.
n acest paragraf vom discuta aspectele structurale ale modelului (paragraful 4.2.2) i pe cele
de integritate (paragraful 4.3), urmnd ca n paragraful 5.4 i mai ales n capitolul 6 s ne ocupm de
manipularea datelor, altfel spus, de modalitile n care stoarcem de informaii baza de date.

4.2.1. Puin istorie


Modelul relaional de organizare a datelor s-a conturat n dou articole publicate n 1969 i
1970 de ctre E.F. Codd, matematician la centrul de cercetri din San Jose (California) al firmei
IBM 7. n acel moment, tehnologia bazelor de date era centrat pe modelele ierarhic i reea, modele ce
depind ntr-o mai mare msur de organizarea intern a datelor pe suportul de stocare. Codd a propus
o structur de date tabelar, independent de tipul de echipamente i software de sistem pe care este
implementat, structur "nzestrat" cu o serie de operatori pentru extragerea datelor. Dei puternic
matematizat, modelul relaional este relativ uor de neles.
Modelul relaional al datelor se poate defini printr-o serie de structuri de date (relaii alctuite
din tupluri), operaii aplicate asupra structurilor de date (selecie, proiecie, jonciune etc.) i reguli de
integritate care s asigure consistena datelor (chei primare, restricii refereniale .a.). Modelarea
realitii se concretizeaz n tabele de valori numite relaii, avndu-se n vedere c:

o relaie are un nume;


o coloan reprezint un atribut;
o linie reprezint un n-uplet (tuplu) de valori ale celor n atribute din relaie;
ordinea liniilor i coloanelor n cadrul tabelei nu este relevant pentru coninutul
informaional.
Fiecare linie a tabelei reprezint o entitate sau un fapt al realitii, n timp ce o coloan
reprezint o proprietate a acestei entiti sau fapt. Introducnd un plus de rigoare, se cuvine de
remarcat c entitatea poate fi nu numai un obiect concret/proces (o persoan, un lucru oarecare), dar i
o relaie ntre obiecte (persoane, lucruri), cum ar fi: contractele de afaceri, cstoriile (exist totui
cteva deosebiri ntre acestea i precedentele), structura ierarhic a unei organizaii etc. n plus, nu e
ntotdeauna evident care dintre informaii sunt entiti, care atribute i care asociaii (relaii).
Ansamblul valorilor stocate n tabelele reprezint coninutul bazei de date, coninut ce poate fi
modificat prin operaiuni de actualizare: introducerea unor linii (tupluri) noi, tergerea unor linii,
modificarea valorii unor atribute.
Fa de modelele ierarhice i reea, modelul relaional prezint cteva avantaje:
7

Extrase din lucrarea [Codd70] se gsesc la adresa http://www.acm.org/classics/nov95/. De asemenea, o


excelent analiz a articolelor lui Codd este n [Date98].

Instrumente software pentru afaceri

84

propune structuri de date uor de utilizat;


amelioreaz independena logic i fizic;
pune la dispoziia utilizatorilor limbaje ne-procedurale;
optimizeaz accesul la date;
mbuntete integritatea i confidenialitatea datelor;
ia n calcul o larg varietate de aplicaii;
abordeaz metodologic definirea structurii bazei de date.

Modelului relaional i este asociat teoria normalizrii, care are ca scop prevenirea
comportamentului aberant al relaiilor n momentul actualizrii lor, eliminarea datelor redundante i
nlesnirea nelegerii legturilor semantice dintre date.
Dei IBM a fost prima care a iniial un proiect destinat elaborrii unui SGBD relaional
(System/R, ncepnd cu 1974), prima firm care a lansat primul SGBDR comercial a fost Relational
Software Inc., astzi Oracle. nfiinarea firmei a avut loc n 1977, iar lansarea produsului n 1979.
Impunerea pe pia a SGBD-urilor grefate pe modelul relaional a fost mult mai dificil dect s-ar
putea nelege astzi. Abia n deceniul 9, datorit vitezei ameliorate, securitii sporite i mai ales
productivitii dezvoltatorilor de aplicaii, modelul relaional a ctigat supremaia.
Exist o larg tipologie a SGBDR-urilor, aa nct orice categorisire i are riscul su. Cele
mai accesibile i, implicit, cele mai utilizate sunt SGBD-urile dedicate iniial uzului individual:
Access, Paradox, Visual FoxPro. Astzi, multe dintre acestea au caracteristici profesionale i pot fi
folosite la dezvoltarea aplicaiilor pentru simulant a zeci de utilizatori.
Pentru aplicaiile complexe din bnci, corporaii, organizaii i instituii de mari dimensiuni sau impus SGBDR-urile de "categoria grea": Oracle, DB2 (IBM), Informix (DB2), Sybase, SQL Server
(Microsoft). Acestea sunt mult mai robuste, mult mai fiabile, dar i costisitoare.
n ultimul timp i-au fcut apariia, ca alternative la marii coloi, aa zisele Free-DBMS-uri,
precum PostgreSQL, MySQL, Interbase etc. Acestea ruleaz, de obicei, pe sisteme de operare de tip
Linux (foarte ieftine) i se ntrevd ca adversari serioi ai marilor productori.

4.2.2. Relaii/tabele, domenii i atribute


La modul simplist, o baz de date relaional (BDR) poate fi definit ca un ansamblu de relaii
(tabele); fiecare tabel (sau tabel), alctuit din linii (tupluri), are un nume unic i este stocat pe
suport extern (de obicei disc). La intersecia unei linii cu o coloan se gsete o valoare atomic
(elementar). O relaie conine informaii omogene legate de anumite entiti, procese, fenomene:
CRI, STUDENI, LOCALITI, PERSONAL, FACTURI etc. Spre exemplu, n figura 4.4 este
reprezentat tabela CLIENI.
n teoria relaional se folosete termenul relaie. Practica, ns, a consacrat termenul tabel
(engl. table). Un tuplu sau o linie este o succesiune de valori de diferite tipuri. n general, o linie
regrupeaz informaii referitoare la un obiect, eveniment etc., altfel spus, informaii referitoare la o
entitate: o carte (un titlu sau un exemplar din depozitul unei biblioteci, depinde de circumstane), un/o
student(), o localitate (ora sau comun), un angajat al firmei, o factur emis etc. Figura 4.5 conine
al doilea tuplu din tabela CLIENI, tuplu referitor la forma MODERN SRL. Linia de mai sus este
alctuit din patru valori ce desemneaz: codul, numele, adresa i codul potal al localitii i adresei
referitoare la clientul MODERN SRL.

Invmnt la distan Anul I 2008/2009

85

Figura 4.4. Relaia (tabela) CLIENI


Teoretic, orice tuplu reprezint o relaie ntre clase de valori (n cazul nostru, ntre patru clase
de valori); de aici provine sintagma baze de date relaionale, n sensul matematic al relaiei, de
asociere a dou sau mai multe elemente. Firete, toate tuplurile relaiei au acelai format (structur),
ceea ce nseamn c n tabela CLIENI, din care a fost extras linia din figura 4.5, fiecare linie este
constituit dintr-o valoare a codului, o valoare a numelui, o valoare a adresei, i o valoare a codului
potal. Ordinea tuplurilor nu prezint importan din punctul de vedere al coninutul informaional al
tabelei.
Figura 4.5. Un tuplu al tabelei CLIENI
Fiecare atribut este caracterizat printr-un nume i un domeniu de valori pe care le poate lua.
Domeniul poate fi definit ca ansamblul valorilor acceptate (autorizate) pentru un element component
al relaiei:

ntr-o tabel destinat datelor generale ale angajailor, pentru atributul Sex, domeniul
este alctuit din dou valori: Femeiesc i Brbtesc;

domeniul atributului Judet este alctuit din numele fiecrui jude (plus Bucureti).

domeniul unui atribut precum PreUnitar, care se refer la preul la care a fost vndut un
produs/serviciu, este cu mult mai larg, fiind alctuit din orice valoarea cuprins ntre 1
i 99999999 lei (ceva mai noi).

i acum, cteva senzaii tari (urmeaz un pic de matematic) ! Dac notm cu D1 domeniul
atributului CodClient, cu D2 domeniul atributului NumeClient, cu D3 domeniul pentru Adresa, i cu
D4 domeniul atributul CodPostal, se poate spune c fiecare linie a tabelei CLIENI este un tuplu de
patru elemente, iar relaia n ansamblu corespunde unui subansamblu din ansamblul tuturor tuplurilor
posibile alctuite din patru elemente, ansamblu care este produsul cartezian al celor patru domenii.
n general, orice relaie R poate fi definit ca un subansamblu al produsului cartezian de n domenii Di:

R D1 x D2 x D3 x ...x Dn ,
n fiind denumit gradul sau ordinul relaiei. Relaiile de grad 1 sunt unare, cele de grad 2 - binare, ...,
cele de grad n - n-are. Aceast definiie pune n eviden aspectul constant al relaiei, de independen
n timp (se spune c n acest caz relaia este definit ca un predicat).

Instrumente software pentru afaceri

86

O a doua definiie abordeaz o relaie R ca un ansamblu de m-uplete (m-tupluri) de


valori: R = { t1, t 2 , ..., t k , ..., t m} ,

unde t k = (dk1,dk2 , ..., dki ,...,dkn )

n care:
dk1 este o valoare n D1, dk2 este o valoare n D2, , dkn este o valoare n Dn;
n - reprezint ordinul lui R;
m - cardinalitatea lui R.
Pentru un (mic) plus de claritate, vezi figura 4.6.

Figura 4.6. Ilustrarea celei de-a doua definiii a unei relaii


Reprezentarea sub form de tabel, deci ca ansamblu de tupluri, pune n eviden aspectul
dinamic, variabil al relaiei. Abordarea predicativ (prima definiie) sau ansamblist (a doua definiie)
reprezint un criteriu important de delimitare a limbajelor de interogare a bazelor de date relaionale.

Reinem corespondena noiunilor relaie-tabel, tuplu-linie i atribut-coloan.


Numrul de tabele pe care le conine o baz de date, atributele adunate n fiecare tabel,
domeniul fiecruia dintre atribute prezint diferene majore de la o baz la alta, chiar dac uneori
reflect acelai tip de procese. Intrm astfel n sfera proiectrii bazelor de date, a dependenelor i
normalizrii.
Relaia CLIENI conine informaii despre firmele crora compania noastr le vinde
produsele pe care producem i/sau comercializm. Fiecare linie se refer la un singur client. n figura
4.4 pe a treia linie a tabelei apare o valoarea curioas notat NULL. Valoarea NULL este considerat o
metavaloare i indic faptul c, n acel loc, informaia este necunoscut sau inaplicabil. Valoarea
NULL este diferit, ns de valorile 0 sau spaiu. Uneori, importana sa este, din pcate, major n
expresii i funcii, dup cum tiu cei cu oarecare experien n limbajului SQL.

4.3. RESTRICII ALE BAZEI DE DATE


De ce ne intereseaz restriciile ntr-o baz de date ? Termenul de restricie este oarecum
iritant, att pentru studeni, ct i pentru profesori, deoarece semnaleaz existena unor constrngeri
instituite i oarecum obligatorii, i, de vreme ce sunt impuse, nsemn c nu sunt prea plcute (dect,

Invmnt la distan Anul I 2008/2009

87

n cel mai bun caz, pentru cel care le-a instituit). Partea cea mai enervant este c respectarea
restriciilor este (supra)vegheat de o anumit autoritate nzestrat cu anumite instrumente de
constrngere, de la bastoane de cauciuc, la creterea i scderea impozitelor, salariilor, banilor de
buzunar etc.
Ei bine, n bazele de date, restriciile sunt ceva mai acceptabile. Cei care lucreaz cu bazele de
date sunt foarte interesai n declararea restriciilor, pentru c, odat definite, de respectarea lor se va
ngriji sistemul de gestiune a bazelor de date (adic programele de lucru cu bazele de date). Esenial
este c, ajutai de restricii, putem crete gradul de corectitudine i de ncredere al datelor din baz. n
cele ce urmeaz vor fi prezentate pe scurt cele mai importante restricii definibile ntr-o baz de date
relaional: restricia de domeniu, de atomicitate, de unicitate, referenial i restriciile-utilizator.

4.3.1. Restricia de domeniu


Dup cum am vzut n paragraful anterior, un atribut este definit printr-un nume i un
domeniu. Orice valoare a atributului trebuie s se ncadreze n domeniul definit. Exist mai multe
moduri de percepie a acestei restricii.
O parte din informaticieni substituie domeniul tipului atributului: numeric, ir de caractere,
dat calendaristic, logic (boolean) etc. i, eventual, lungimii (numrul maxim de poziii/caractere pe
care se poate ntinde un atribut). Dup cum se observ, este luat n calcul numai aspectul sintactic al
domeniului. Faptul c indicativul auto al unui jude (vezi plcuele de nmatriculare) poate fi una din
valorile: IS, TM, B etc. reprezint o restricie de comportament sau, mai simplu, o restricie definit de
utilizator.
Cea de-a doua categorie privete domeniul deopotriv sintactic i semantic. Astfel, domeniul
sintactic al atributului Jud (indicativul judeului) este un ir de dou caractere, obligatoriu litere (sau o
liter i un spaiu, pentru Bucureti), i, chiar mai restrictiv, literele sunt obligatoriu majuscule. Din
punct de vedere semantic, indicativul poate lua una din valorile: IS, TM
Majoritatea SGBD-urilor permit definirea tuturor elementelor ce caracterizeaz domeniul
(sintactic i semantic) atributului Jud prin declararea tipului i lungimii atributului i prin aa-numitele
reguli de validare la nivel de cmp (field validation rule). Sunt ns i produse la care domeniul poate
fi definit explicit, sintactic i semantic, dndu-i-se un nume la care vor legate atributele n momentul
crerii tabelelor.

4.3.2. Atomicitate
Conform teoriei bazelor de date relaionale, orice atribut al unei tabele oarecare trebuie s fie
atomic, n sensul imposibilitii descompunerii sale n alte atribute. Implicit, toate domeniile unei baze
de date sunt musai atomice (adic elementare). n aceste condiii, se spune c baza de date se afl n
prima form normal sau prima form normalizat (1NF).
Astzi, atomicitatea valorii atributelor a devenit o int predilect a atacurilor dumnoase la
adresa modelului relaional, datorit imposibilitii nglobrii unor structuri de date mai complexe,
specifice unor domenii ca: proiectare asistat de calculator, baze de date multimedia etc. Muli autori,
dintre care merit amintii cu deosebire Chris J. Date i Hugh Darwen, se opun ideii de atomicitate
formulat de Codd.

Instrumente software pentru afaceri

88

Primele vizate de stigmatul neatomicitii sunt atributele compuse. Un exemplu de atribut


compus (non-atomic) este Adresa. Fiind alctuit din Strad, Numr, Bloc, Scar, Etaj, Apartament,
discuia despre atomicitatea adresei pare de prisos, iar descompunerea sa imperativ. Trebuie ns s
ne raportm la obiectivele bazei. Fr ndoial c pentru BD a unei filiale CONEL sau
ROMTELECOM, sau pentru poliie, preluarea separat a fiecrui element constituent al adresei este
foarte important. Pentru un importator direct, ns, pentru un mare en-grossist sau pentru o firm de
producie lucrurile stau ntr-o cu totul alt lumin. Partenerii de afaceri ai acestora sunt persoane
juridice, iar adresa intereseaz numai la nivel general, caz n care atributul Adresa nu este considerat a
fi non-atomic.
Alte exemple de atribute ce pot fi considerate, n funcie de circumstane, simple sau compuse:
DataOperaiuniiBancare (Data + Ora), BuletinIdentitate (Seria+Numr), NrnmatriculareAuto (privit
global, sau pe cele trei componente: numr, jude, combinaie trei de litere).
O relaie (tabel) n 1NF nu trebuie s conin atribute care se repet ca grupuri (grupuri
repetitive). ntr-o alt formulare, toate liniile unei tabele trebuie s conin acelai numr de atribute.
Fiecare celul a tabelei (intersecia unei coloane cu o linie), altfel spus, valoarea unui atribut pe o linie
(nregistrare), trebuie s fie atomic.

4.3.3. Nenulitate
Modelul relaional accept ca, atunci cnd nu se cunoate valoarea unui atribut pentru o
anumite entitate, sau cnd pentru acel obiect, entitate, persoan etc. atributul este inaplicabil, s se
foloseasc (meta)valoare NULL. Celui de-al treilea client din figura 4.4 nu i cunoate adresa. Dac am
avea o tabel PRODUSE cu atributele CodProdus, DenumireProdus, UM, Culoare, este posibil ca,
pentru anumite sortimente, cum ar tricouri, cmi, jachete, atributul s fie important, n timp ce
pentru altele, precum vodc, cafea, lapte atributul culoare s nu furnizeze nici o informaie, adic s nu
fie aplicabil. Iar dac laptele poate fi doar alb, vodca chiar c nu are culoare (sunt foarte muli
specialiti n acest domeniu, i putei ntreba !).

Figura 4.7. Un atribut forat s nu primeasc valori NULL i un altul relaxat


ntr-o baz de date relaional avem posibilitatea de a le impune unor atribute s aib
ntotdeauna valori specificate, altfel spus, le interzicem valorile nule, n timp cel altor atribute li se pot
permite valori nule. Modul n care se declar i se afieaz o restricie de nulitate depinde de la SGBD
la SGBD. De exemplu, n Access mecanismul este de tipul celui din figura 4.7. Atributului

Invmnt la distan Anul I 2008/2009

89

NumeClient din tabela CLIENI i se interzic valorile nule, prin setarea opiunii Required pe valoarea
Yes, n timp ce atributul Adresa din aceeai tabel poate avea valori NULL, Required fiind setat pe
valoarea No.
Ca regul, atributele importante, ce in de identificarea sau caracterizarea unei entiti, proces,
fenomen, precum i cele implicitate n calculul unor informaii importante, sunt declarate NOT NULL,
iar atributele fr importan deosebit pot fi mai relaxate.

4.3.4. Restricia de unicitate


ntr-o relaie nu pot exista dou linii identice (dou linii care prezint aceleai valori pentru
toate atributele). Mai mult, majoritatea relaiilor prezint un atribut, sau o combinaie de atribute, care
difereniaz cu siguran un tuplu de toate celelalte tupluri ale relaiei.
Cheia primar a unei relaii (tabele) este un atribut sau un grup de atribute care identific fr
ambiguitate fiecare tuplu (linie) al relaiei (tabelei). Dup Codd, exist trei restricii pe care trebuie s
le verifice cheia primar:

unicitate: o cheie identific un singur tuplu (linie) al relaiei.

compoziie minimal: atunci cnd cheia primar este compus, nici un atribut din cheie
nu poate fi eliminat fr distrugerea unicitii tuplului n cadrul relaiei; n cazuri
limit, o cheie poate fi alctuit din toate atributele relaiei.

valori non-nule: valorile atributului (sau ale ansamblului de atribute) ce desemneaz


cheia primar sunt ntotdeauna specificate, deci ne-nule i, mai mult, nici un atribut
din compoziia cheii primare nu poate avea valori nule; aceast a treia condiie se mai
numete i restricie a entitii.

Domeniul unui atribut care este cheie primar ntr-o relaie este denumit domeniu primar.
Dac ntr-o relaie exist mai multe combinaii de atribute care confer unicitate tuplului, acestea sunt
denumite chei candidate. O cheie candidat care nu este identificator primar este referit ca i cheie
alternativ.
n tabela CLIENI cheia primar este simpl - CodClient, CodClient reprezint un numr unic
asociat fiecrei firme creia i-am fcut vnzri. Exist ns suficiente cazuri n care cheia primar este
compus din dou, trei .a.m.d. sau, la extrem, toate atributele relaiei. S lum spre analiz o relaie
PERSONAL care conine date generale despre angajaii firmei. Fiecare tuplu al relaiei se refer la un
angajat, atributele fiind: Nume, Prenume, DataNaterii, Vechime, SalariuTarifar.

- atributul Nume nu poate fi cheie, deoarece chiar i ntr-o ntreprindere de talie mijlocie, este
posibil s existe doi angajai cu acelai nume.
- dac apariia a dou persoane cu nume identice este posibil, atunci apariia a dou persoane
cu acelai Prenume este probabil.
- nici unul din aceste atributele DataNaterii, Vechime, SalariuTarifar nu poate fi "nzestrat"
cu funciunea de identificator.

Instrumente software pentru afaceri

90

n acest caz, se ncearc gruparea a dou, trei, patru .a.m.d. atribute, pn cnd se obine
combinaia care va permite diferenierea clar a oricrei linii de toate celelalte.

Combinaia Nume+Adres pare, la primele dou vederi, a ndeplini "cerinele" de


identificator. Ar fi totui o problem: dac n aceeai firm (organizaie) lucreaz
mpreun soul i soia ? Ambii au, de obicei, acelai nume de familie i, tot de obicei,
acelai domiciliu. Este adevrat, cazul ales nu este prea fericit. Dar este suficient
pentru a compromiterea combinaiei.

Urmtoarea tentativ este grupul Nume+Prenume+Adres, combinaie neoperant


dac n organizaie lucreaz tatl i un fiu (sau mama i o fiic) care au aceleai nume
i prenume i domiciliul comun.

Ar rmne de ales una dintre soluiile (Nume+Prenume+Adres+Vechime) sau


(Nume+Prenume+Adresa+DataNaterii).

Oricare din cele dou combinaii prezint riscul violrii restriciei de entitate, deoarece este
posibil ca, la preluarea unui angajai n baz, s nu i se cunoasc adresa sau data naterii, caz n care
atributul respectiv ar avea valoarea NULL. Dificultile de identificare fr ambiguitate a angajailor au
determinat firmele ca, la angajare, s aloce fiecrei persoane un numr unic, numr denumit Marc.
Prin adugarea acestui atribut la cele existente, pentru relaia PERSONAL problema cheii primare este
rezolvat mult mai simplu. Actualmente, sarcina este simplificat i prin utilizarea codului numeric
personal (CNP), combinaie de 13 cifre care prezint avantajul c rmne neschimbat pe tot parcursul
vieii persoanei.
Revenim la tabela CLIENI. Dac n ara noastr s-ar respecta regula: nu pot exista dou
firme cu aceeai denumire, atunci tabele mai are, pe lng CodClient, o cheie candidat NumeClient.
ntruct CodClient a fost preferat drept cheie primar, NumeClient va fi cheie alternativ. n Access
un atribut de tip cheie primar are n dreptul su o cheie (de yal) vezi figura 4.8. Cheile alternative
sunt declarate prin setarea opiunii Indexed pe valoarea Yes (NoDuplicates).

Figura 4.8. O cheie primar i o cheie alternativ

Invmnt la distan Anul I 2008/2009

91

4.3.5. Restricia referenial


O baz de date relaional este alctuit din relaii (tabele) aflate n legtur. Stabilirea
legturii se bazeaz pe mecanismul cheii strine i, implicit, a restriciei refereniale. Figura 5.5
prezint o relaie n care sunt implicate tabelele FACTURI i CLIENI.

Figura 4.9. O restricie referenial ntre FACTURI (tabel-copil) i CLIENI (printe)


Atributul CodClient joac un rol de agent de legtur ntre tabelele CLIENI i FACTURI.
Pentru relaia CLIENI, atributul CodClient este cheie primar, n timp ce n tabela FACTURI,
CodClient reprezint coloana de referin sau cheia strin, deoarece numai pe baza valorilor sale se
poate face legtura cu relaia printe CLIENI.
Cheile strine sau coloanele de referin sunt deci atribute sau combinaii de atribute care pun
n legtur linii (tupluri) din relaii diferite. Tabela n care atributul de legtur este primar se
numete tabel-printe (n cazul nostru, CLIENI), iar cealalt tabel-copil.
Legat de noiunea de cheie strin apare conceptul de restricie referenial. O restricie de
integritate referenial apare atunci cnd o relaie face referin la o alt relaie. Cnd dou tabele
(relaii), T1 i T2, prezint atributul sau grupul de atribute notat CH, care, pentru T1, este cheie
primar, iar pentru T2 cheie strin, dac n T2 se interzice apariia de valori nenule ale CH care nu
exist n nici un tuplu din T1, se spune c ntre T2 i T1 s-a instituit o restricie referenial.
Instituirea restriciei refereniale ntre tabela CLIENI (printe) i FACTURI (copil) permite
cunoaterea, pentru fiecare client, a denumirii localitii i a judeului n care-i are sediul. Dac n
FATURI ar exista vreo linie n care valoarea atributului CodClient ar fi, spre exemplu 9988, este clar
c acea linie ar fi orfan (nu ar avea linie corespondent n tabela printe CLIENI).

Observaii
1. Pentru muli utilizatori i profesioniti ai bazelor de date, denumirea de "relaional"
desemneaz faptul c o baz de date este alctuit din tabele puse n legtur prin
intermediul cheilor strine. Aceasta este, de fapt, a doua accepiune a termenului de BDR,
prima, cea "clasic", avnd n vedere percepia fiecrei linii dintr-o tabel ca o relaie ntre
clase de valori.

Instrumente software pentru afaceri

92

2. Majoritatea SGBD-urilor prezint mecanisme de declararea i gestionare automat a


restriciilor refereniale, prin actualizri n cascad i interzicerea valorilor care ar nclca
aceste restricii.
3. Respectarea restriciilor refereniale este una din cele mai complicate sarcini pentru
dezvoltatorii de aplicaii ce utilizeaz baze de date. Din acest punct de vedere, tentaia este
a sparge baza de date n ct mai puine tabele cu putin, altfel spus, de a avea relaii ct
mai corpolente. Gradul de fragmentare al bazei ine de normalizarea bazei de date, care,
ca parte a procesului de proiectare a BD, se bazeaz pe dependenele funcionale,
multivaloare i de jonciune ntre atribute.

4.3.6. Restricii-utilizator
Restriciile utilizator mai sunt denumite i restricii de comportament sau restricii ale
organizaiei. De obicei, aceste restricii iau forma unor reguli de validare la nivel de atribut, la nivel de
linie/tabel sau a unor reguli implementate prin declanatoare (triggere).
Reguli la nivel de atribut
O restricie la nivel de atribut poate preveni introducerea n baza de date a unor valori din alte
intervale dect cele stabilite, n alte formate dect cele acceptate etc. Forma clasic a unei restricii la
nivel de atribut este o expresie n care apar constante, funcii-sistem i, nu n ultimul rnd, atributul
respectiv. La orice editare a atributului cu pricina (declanat n cazul inserrii unei linii n tabela din
care face parte, sau la modificarea sa) expresia este evaluat i dac rezultatul evalurii este TRUE
(adevrat), atunci inserarea/modificarea este permis, iar dac rezultatul este FALSE, atunci
inserarea/modificarea este blocat.
n partea stng a figurii 4.10 este ilustrat o regul de validare conform creia n tabela
CLIENI valorile atributului CodClient trebuie s fie mai mari dect 1000. Rubrica Validation Rule
este cea n care apare expresia-restricie - [CodClient]>1000 - (observai c numele atributului este
scris ntre paranteze unghiulare), iar n rubrica Validation Text se indic mesajul care va aprea pe
ecran atunci cnd se ncalc restricia - Cel mai mic cod de client acceptat este 1001 !.

Figura 4.10 Dou restricii la nivel de atribut

Invmnt la distan Anul I 2008/2009

93

n dreapta figurii apare o regul ceva mai impresionant, prin care literele din valorile
atributului NumeClient sunt obligatoriu majuscule. Expresia este de-a dreptul impresionant StrComp(Left(UCase([NumeClient]),1),Left([NumeClient],1),0) = 0 i nu vom strica vraja pn n
capitolul urmtor.
Reguli la nivel de nregistrare
Expresia care definete o restricie la nivel de nregistrare poate conine dou sau mai multe
atribute i este evaluat la inserarea sau modificarea oricrei linii din tabel. Tabela FACTURI
conine, printre altele dou atribute valorice, unul pentru pstrarea valorii totale (inclusiv TVA)
facturii respective i un altul care indic doar cuantumul TVA colectate pentru factur. Majoritatea
produselor i serviciilor comercializate la noi n ar au un procent al taxei pe valoarea adugat de
19%. Exist, ns, i produse la care procentul poate fi 9% sau chiar scutite de TVA (0%). De aceea,
TVA colectat pentru o factur este mai mic poate fi egal sau dect 19% din valoarea fr tva. S
punem sub form de formul: ValoareaTotal = ValoareaFrTVA + TVA. Dac factura conine
numai produse cu 19%: ValoareaTotal = ValoareaFrTVA + 0.19 * ValoareaFrTVA, sau
ValoareaTotal = 1.19 * ValoareaFrTVA. Dar tabela noastr are doar atributele ValoareTotal i
TVAColectat, aa c nlocuim ValoareaFrTVA prin diferena celorlalte dou. Scriem:
ValoareTotal = 1.19 * (ValoareTotal TVAColectat), i dup calcule de matematic superioar,
TVAColectat * 1.19 = 0.19 * ValoareTotal, altfel spus TVAColectat = ValoareTotal * 0.19 / 1.19.
Prin urmare, regula este TVAColectat <= ValoareTotal * 0.19 / 1.19, iar n Access
declararea sa este ilustrat n figura 4.11.

Figura 4.11. O restricie la nivel de nregistrare


Alte tipuri de restricii utilizator
Exist i alte tipuri de restricii a cror validare presupune citirea unor date aflate n tabele
diferite. Spre exemplu, se poate institui o regul care interzice emiterea unei noi facturi (o nou
vnzare) dac datoriile firmei client sunt mai mari de 200000 RON, iar directorul acesteia nu este

94

Instrumente software pentru afaceri

membru n partidul/partidele de guvernmnt. Acestea reclam ntrebuinarea unor proceduri speciale,


numite declanatoare (triggere). Curioii n-au dect s urmeze specializarea Informatic Economic.

4.4. SCHEMA I CONINUTUL UNEI BAZE DE DATE RELAIONALE


Exist dou aspecte complementare de abordare a bazelor de date relaionale: schema
(structura, intensia) i coninutul (instanierea, extensia).
Coninutul unei relaii este reprezentat de ansamblul tuplurilor ce o alctuiesc la un moment
dat. Pe parcursul exploatrii bazei, coninutul poate crete exponenial, n funcie de volumul i
complexitatea operaiunilor consemnate.
Schema unei baze de date conine denumiri ale tabelelor, numele, tipul i lungimea atributelor,
restricii de unicitate, de non-nulitate, restricii la nivel de atribut, linie i alte eventuale tipuri de
restricii de comportament, precum i restricii refereniale. La acestea se adaug cele privind
drepturile utilizatorilor, definiia i restriciile tabelelor virtuale, indeci etc. Foarte importante n
lumea profesionitilor dezvoltrii de aplicaii cu bazele de date sunt procedurile stocate programe de
forma funciilor, procedurilor, pachetelor i mai ales declanatoarelor (triggerelor) care, dup cum le
spune i numele sunt memorate n schema bazei de date i fac parte integrant din aceasta. Schema
este independent de timp i reprezint componenta permanent a relaiilor.
Atenie ! n literatura de popularizare a bazelor de date (mai ales a Accessului) apar i o serie
de bazaconii, precum c rapoartele, formularele, meniurile ar fi incluse n schema unei baze de date.
Nu este adevrat ! n Visual FoxPro, Access i alte SGBD-uri, pentru a gestiona mai uor o aplicaie se
creeaz un project n care sunt incluse bazele de date (tabele, tabele virtuale, proceduri stocate),
interogri, formulare, rapoarte, meniuri etc. Ori, confuzia care se face uneori este ntre proiect i baz
de date.
n capitolele care vor urma, va fi utilizat cu precdere o baz de date martor, denumit
VNZRI, cu schema din figura 4.12.

Figura 4.12. Schema simplificat a bazei de date VNZRI

Coninut celor trei tabele, ce vor constitui suportul editrilor i interogrilor din
capitolele urmtoare sunt prezentate 4.13.

Invmnt la distan Anul I 2008/2009

95

Figura 4.13. Coninutul celor trei tabelei ale bazei de date VNZRI

Rezumat
Modelul relaional al datelor se poate defini printr-o serie de structuri de date (relaii alctuite
din tupluri), operaii aplicate asupra structurilor de date (selecie, proiecie, jonciune
etc.) i reguli de integritate care s asigure consistena datelor (chei primare, restricii
refereniale . a.). n prezent se manifest o puternic orientare a relaionalului ctre
aplicaii web i orientarea pe obiecte. Au aprut SGBD-uri gratuite (free-database),
precum PostgreSQL, MySQL etc.
Noiunea esenial a acestui model de organizare a datelor este relaia, vzut fie ca
subansamblu al produsului cartezian de n domenii (unde n este numrul atributelor ordinul relaiei), fie ca ansamblu de m tupluri (unde m este denumit cardinalitate).
Valoarea oricrui atribut (fiecare atribut are un nume distinct) ntr-un tuplu oarecare conine a
singur valoare (o valoare atomic), valoare ce face parte dintr-un domeniu.
Fiecare tuplu este distinct, adic nu pot exista dou tupluri identice, iar Ordinea tuplurilor nu
influeneaz coninutul informaional al relaiei.
Restricia de domeniu se refer la ansamblul valorilor autorizate pentru un atribut. Domeniul
poate fi alctuit din valori finite (sexul unei persoane, judeele rii) sau infinite
(valoarea unei facturi etc.)
Conform modelului relaional, fiecare relaie are un atribut sau un grup de atribute ale cror
valori nu se repet. Aceasta este restricia de unicitate. Noiunile legate de aceast
restricie sunt: chei candidat, chei primare i chei alternative.
Restricia referenial se instituie ntre dou tabele, prin intermediul unui atribut comun (de
fapt, numele poate s difere, dar s aib aceeai semnificaie). n virtutea acestei
restricii, se interzice apariia de valori ale cheii strine care s nu re regseasc n tabela
printe.

Exemple de teste gril


Care dintre cheile urmtoare identific fr ambiguitate fiecare tuplu n cadrul unei relaii?
a. Cheile strine
b. Coloanele de referin
c. Cheile primare
d. Cheile candidat
e. Cheile alternative

96

Instrumente software pentru afaceri

CAPITOLUL 5

SISTEME DE GESTIUNE A BAZELOR DE DATE. ACCESS

Obiective:
i.
crearea practic a tabelelor ce compun o baz de date,
concomitent cu declararea cheilor i restriciilor aferente.
ii.
Actualizarea, interogarea bazelor de date i obinerea de rapoarte.
iii. Elaborarea de proceduri
iv.
Utilizarea de meniuri pentru integrarea procedurilor i
programelor n aplicaii
Rezultate ateptate:
i.
Familiarizarea cu mediul de lucru ACCESS.
ii.
Obinerea unei baze de date, a cheilor primare i stabilirea
legturilor permanente dintre tabele.
iii. Dezvoltarea de proceduri i aplicaii economice.

Invmnt la distan Anul I 2008/2009

97

5.1 SGBD ACCESS PREZENTARE GENERAL


ACCESS este un sistem de gestiune a bazelor de date integrat n pachetul MS Office destinat
pentru uzul personal, pentru munca n grup sau pentru mici afaceri. Fiind, probabil, cel mai utilizat
instrument software dedicat bazelor de date, ACCESS ofer urmtoarele faciliti majore:

dispune de o interfa uor de folosit pentru introducerea datelor;

gsete rapid datele legate ntre ele;

asigur afiarea pe ecran sau tiprirea la imprimant a datelor ntr-un format uor de neles;

permite afiarea datelor sub form de grafice sau ca pagini Web;

are incluse mecanisme pentru exportul datelor n Excel i /sau Word;

asigur protejarea datelor de erori;

automatizeaz operaiile comune pentru a reduce timpul de dactilografiere.


ACCESS este conceput pentru scenarii multiutilizator, ceea ce nseamn c mai muli
utilizatori pot accesa aceleai tipuri de date n acelai timp. Teoretic o baz de date ACCESS 2003 se
poate adapta pentru 255 de utilizatori simultan.
Deschiderea sesiunii de lucru ACCESS
Ca i n cazul celorlalte componente MS Office, ACCESS se poate lansa n mai multe moduri:

meniul Start (figura 5.1), selectnd din meniul Programs opiunea Microsoft Office ACCESS
2003,

Figura 5.1 Deschiderea sesiunii ACCESS din


meniul Start

Figura 5. 2 Deschiderea sesiunii ACCESS din


meniul rapid

meniul rapid (figura 5.2), selectnd comanda New i apoi opiunea Microsoft Office ACCESS
Application;

Figura 5. 3 Deschiderea sesiunii ACCESS prin schortcut-ul de pe Desktop

shortcut-ul de pe Desktop (figura 5.3), accesnd pictograma de pe desktop, dac a fost creat o
scurttur ACCESS 2003.

Instrumente software pentru afaceri

98

Interfaa ACCESS
Dialogul utilizator-sistem se realizeaz, prin intermediul interfeei ACCESS constituit, n
principal, din bara de instrumente Database, bara meniu i panoul de activiti.
Bara de instrumente Database, pe lng butoanele prezente n barele Standard ale altor
produse MS Office, are n componen o serie de butoane specifice:
OfficeLinks

permite fuzionarea (Merge) sau publicarea (Publish) datelor n Word

sau analiza (Analyze) datelor folosind Excel.


- lanseaz unul dintre utilitarele de analiz: Analyze Table, Analyze
Analyze
Performance sau Documenter.
Relationships

reprezint grafic relaiile existente i permite modificarea acestora sau

crearea altora noi.


Bara meniu organizeaz meniurile ferestrelor ACCESS. Comenzile meniurilor permit:

manipularea fiierelor bazei de date ACCESS;


crearea i modificarea obiectelor bazei de date;
partajarea datelor cu alte aplicaii;
personalizarea mediului ACCESS.

La deschiderea sesiunii este activat, n dreapta ecranului, panoul de activiti Task Pane care
ofer o serie de legturi, ce difer n funcie de operaia n curs de derulare (figura 5.4):

Connect to Microsoft Office online conectarea online la pagina Microsoft Office ;


Search for... - cutarea n funcie de anumite criterii;
Open deschiderea unuia dintre fiierele aflate n lista ultimelor fiiere cu care s-a lucrat, sau
a unui alt fiier, cutat cu ajutorul butonului More...care deschide o fereastr Open;
Create a new file... crearea unui nou fiier.

Afiarea sau ascunderea panoului de activiti se realizeaz din meniul View, prin comanda
Task Pane.

Figura 5.4 Task Pane

Figura 5.5 Task Pane New File

Dac se opteaz pentru crearea unui nou fiier, Task Pane ofer variantele (figura 5.5):

Blank database - crearea unei baze de date goale care nu conine nici o dat sau orice alte
obiecte (opiunea cea mai des utilizat);

Invmnt la distan Anul I 2008/2009

99

From Existing File crearea unei baze de date noi folosind structura unei baze de date
existente;
On my computer construirea unei baze de date dintr-un fiier ablon;
Project using existing data) i Project using new data) - proiectele ACCESS combin
interfaa prietenoas cu utilizatorul a programului ACCESS cu puterea unui server de baze de
date performant, cum este Microsoft SQL Server.

Proiectele ACCESS permit dezvoltarea unor noi aplicaii client-server n urmtoarele situaii
mai complexe:

datele sunt foarte importante; nu se accept nici un fel de pierderi da date i nici o
indisponibilitate temporar a datelor;

datele vor fi folosite simultan de mai multe persoane. ACCESS admite cel mult 255 de
utilizatori, dar performanele pot fi mult diminuate dac utilizatorii sunt deosebit de activi;

baza de date va avea dimensiuni foarte mari.

Configurarea sesiunii de lucru n ACCESS


Ca i alte produse software, ACCESS permite stabilirea unor parametrii de lucru pentru
sesiunea curent i, eventual, a sesiunilor urmtoare. n acest scop se activeaz din meniul Tools,
comanda Options. Fereastra acestei comenzi este structurat pe numeroase cadre de pagin: View,
General, Edit/Find, International etc.
Vizm n continuare doar cadrul de pagin General care, printre altele, permite stabilirea unui
director implicit n care vor fi salvate fiierele. Pentru exemplificare, din raiuni lesne de neles, n
zona Default database folder:, s-a declarat ca director curent D:\feaa\isa_id\capitolul 5 (figura 5.6).

Declararea directorului
curent

Figura 5.6 Declararea unui director implicit


nchiderea sesiunii ACCESS
O sesiune de lucru ACCESS se poate nchide folosind:

Butonul Close (X) al ferestrei ACCESS;

Comanda Exit, din meniul File.

n ambele variante este asigurat i nchiderea i salvarea bazei de date deschis n acel
moment.
Tipuri de obiecte n proiectele ACCESS
Un proiect ACCESS se organizeaz n jurul unei baze de date, i poate conine urmtoarele
tipuri de obiecte:

Instrumente software pentru afaceri

100

Tabele (Tables) reprezint locul n care sunt stocate datele brute ale unei baze de date;
Interogri (Queries) tabele care conin rspunsuri la anumite ntrebri despre date;
Formulare (Forms) interfee de introducere i afiare a datelor;
Rapoarte (Reports) faciliti care ofer diferite modaliti de afiare /tiprire a datelor
coninute n tabele;
Pagini (Pages) sunt asemntoare formularelor, n plus ele pot fi afiate ntr-un browser
Web. Astfel, ACCESS este prima BD care permite transferul datelor pe un site Web;
Macro-uri (Macros) - sunt liste de comenzi pe care ACCESS le poate salva i executa;
Module (Modules) sunt obiecte care conin coduri de programare, scrise n VBA.
Modulele ofer utilizatorilor avansai posibilitatea de a personaliza bazele de date i
coninutul acestora.

5.2 CREAREA I ACTUALIZAREA BAZELOR DE DATE ACCESS


Orice proiect de lucru cu o baz de date demareaz cu crearea tabelelor din baz i definirea
restriciilor. Crearea tabelelor presupune declararea numelui, tipului, lungimii i altor proprieti
pentru fiecare atribut.

5.2.1 Tipuri de date


n tabelele ACCESS pot fi organizate o palet diversificat de tipuri de date. Pentru fiecare
cmp dintr-o tabel trebuie stabilit un tip de dat prin care se controleaz natura i cantitatea de date ce
poate fi introdus. Sunt disponibile urmtoarele tipuri de date:

Text este folosit pentru stocarea irurilor de cel mult 255 de caractere alfanumerice
(litere, numere, simboluri etc.);

Memo este indicat pentru a stoca iruri care depesc 255 de caractere, nu sunt
structurate i /sau au un anumit caracter de confidenialitate; coninutul cmpurilor memo
nu este vizualizat atunci cnd se afieaz coninutul tabelelor;

Number accept doar date numerice (ntregi sau cu zecimale), cu un numr suficient de
poziii, pentru aproape toate datele economice. La rndul lor datele numerice pot fi
reprezentate n diferite formate: Byte - General Number, Format Euro, Currency, Fexed,
Standard, Percent, Scientific; Long Integer - General Number, Format Euro, Currency,
Fexed, Standard, Percent, Scientific; Integer - General Number, Format Euro, Currency,
Fexed, Standard, Percent, Scientific; Single - General Number, Format Euro, Currency,
Fexed, Standard, Percent, Scientific; Double - General Number, Format Euro, Currency,
Fexed, Standard, Percent, Scientific; Replication ID; Decimal - General Number, Format
Euro, Currency, Fexed, Standard, Percent, Scientific;

Date /Time General Date este tipul de date folosit pentru a stoca data calendaristic
i/sau timpul i are mai multe formate: Long Date, Medium Date, Short Date, Long Time,
Medium Time, Short Time;

Currency este asemntor datelor numerice, cu deosebirea c accept doar patru digii
pentru partea zecimal. Este conceput pentru a evita erorile de rotunjire, astfel nct
calculele cu bani s fie precise. i datele de acest tip pot avea mai multe formate: General
number, Format Euro, Currency, Fexed, Standard, Percent, Scientific;

Invmnt la distan Anul I 2008/2009

101

AutoNumber este o variant special a datelor Number. Este recomandat n procedura


de stabilire a cheii primare, atunci cnd din structura tabelei este dificil de ales un cmp
reprezentativ. Formatele pentru AutoNumber sunt: Long Integer, Replication ID;

Yes /No - este conceput pentru a pstra nregistrri simple de tip On /Off;

Ole Object permite stocarea informaiilor ntr-un format accesibil altor programe
(documente Word, foi de calcul Excel, imagini, fiiere cu muzic etc.)

Hyperlink este un tip de date text special conceput pentru a stoca hyperlink-uri ctre
site-uri Web sau alte resurse Internet;

Lookup Wizard cmp special de cutare.

Remarcm disponibilitatea datelor de tip Lookup Wizard care folosite pentru a declara
cmpuri de cutare. Majoritatea bazelor de date organizeaz dou tipuri de tabele: cele care includ
date primare i cele care conin liste de valori folosite n tabele. Aceste tabele auxiliare se numesc
tabele de cutare (lookup tables) i prezint dou avantaje: pun la dispoziia utilizatorului opiuni
consecvente i simplu de utilizat i permit validarea datelor, acceptnd numai datele din tabel.
Observaie
n expresii datele text sunt incluse ntre ghilimele (de exemplu, FEAA),
calendaristice sunt ncadrate de semnul # (de exemplu, #12/18/2005#).

iar datele

O noutate deosebit n ACCESS 2003 o reprezint etichetele inteligente (Smart Tags) care
pot fi aplicate cmpurilor. Aceast facilitate este preluat din Excel care folosete etichete inteligente
pentru a semnaliza erorile din foile de calcul i pentru a oferi soluii posibile. Prin etichete inteligente
se pot accesa informaii de pe Internet sau ndeplini anumite sarcini. n principal, aceste etichete sunt
oferite de Microsoft i cele mai multe dintre ele sunt gratuite.

5.2.2 Crearea /construirea tabelelor


Tabelele, fiind obiecte componente ale bazelor de date, presupun, ca prim etap, obinerea
bazei de date din care vor face parte. Dac se opteaz pentru Blank database trebuie precizate
locaia, numele i tipul unui astfel de fiier. Implicit, ACCESS atribuie numele db<n> i extensia
.mdb (figura 5.7). Este recomandat ca numele fiierului s sugereze coninutul informaional sau
apartenena de o aplicaie sau un utilizator. Exemplificrile din acest capitol au ca suport baza de date
vinzri.mdb.

Locaia n care va fi
salvat BD

Numele BD
Extensia implicit
a BD

Figura 5.7 Fereastra File New Database

Instrumente software pentru afaceri

102

Pentru crearea unui tabel ACCESS ofer trei posibiliti (figura 5.8):

Opiuni pentru crearea


tabelelor unei BD

Obiectele unei BD

Figura 5.8 Opiuni pentru creare tabelelor unei Baze de date

Create table in Design view - folosind modul de proiectare a tabelului; este cea mai
puternic i mai flexibil modalitate fiind specificate detaliile fiecrui cmp;
Create table using wizard - apelnd asistentul Table Wizard care precizeaz paii care
trebuie urmai pentru construirea unor tabele obinuite;
Create table by entering date introducnd datele n cmpurile create de ACCESS;
aceast metod este apropiat de modul de lucru n Excel.

Crearea tabelelor prin introducerea datelor


Cea mai confortabil pentru nceptori este crearea tabelelor prin introducerea datelor. Dac
se alege aceasta opiune, n etapa imediat urmtoare se cere confirmarea salvrii tabelului i, implicit,
precizarea numelui acestuia ntr-o fereastr Save As. Pentru exemplificare, n baza de date Vinzri se
creeaz tabela Clienti (figura 5.9).

Figura 5.9 Fereastra Save As pentru tabela Clienti


n continuare, se deschide o fereastr n care coloanele, reprezentnd cmpurile, au nume
predefinite de tipul Field<n>. Pe rndurile tabelului se introduc nregistrrile /articolele (figura 5.10).

Figura 5.10 Fereastra Create table by entering date pentru tabela Clieni

Invmnt la distan Anul I 2008/2009

103

Figura 5.11 Comanda Rename Column


Pentru a sugera coninutul cmpurilor/coloanelor este necesar redenumirea acestora. Se
folosete comanda Rename Column apelat fie din meniul rapid (activat de pe antetul /header-ul
cmpului /coloanei), fie din meniul Format (figura 5.11). Intrarea n modul de editare este posibil i
prin dublu click de mouse de pe antetul cmpului al crui nume urmeaz a fi schimbat.
Crearea tabelelor folosind Table Wizard
Table Wizard este un instrument care permite crearea tabelelor prin parcurgerea unor pai
prestabilii. Pentru exemplificare s-a dorit crearea tabelei CodPost_loc. ntr-un prim pas sunt stabilite
cmpurile care vor constitui structura noii tabele. ACCESS ofer variate abloane att pentru domeniul
afacerilor (Business) ct i cu caracter personal, dup uzanele americane. Folosind butonul Rename
Field se pot personaliza machetele pentru articole, n sensul c structurile pot fi adaptate la specificul
aplicaiei ce se proiecteaz (figura 5.12).

Tipuri de abloane

Structuri de articole

Redenumirea unui
cmp

Figura 5.12 Stabilirea cmpurilor ntr-o tabel creat cu Table wizard

Instrumente software pentru afaceri

104

Dup stabilirea cmpurilor, n pasul urmtor se precizeaz numele sub care va fi salvat tabela
i modalitatea n care va fi stabilit cheia primar (vezi paragraful 4.3.4), de ctre utilizator sau,
implicit, de ctre ACCESS (figurile 5.13 i 5.14).
Numele tabelei

Stabilirea cheii primare


de ctre Access prin
cmpul AutoNumber

Stabilirea cheii primare


de ctre utilizator

Figura 5.13 Stabilirea numelui i a opiunii pentru cheii primare


3

Cheia primar stabilit


de Access

Cheia primar stabilit de


utilizator

Figura 5.14 Stabilirea cheii primare


Dup precizarea cheii primare se alege modul n care se va continua dup crearea tabelei, fiind
disponibile opiunile (figura 5.15):

modificarea n Table Design;


introducerea datelor direct n tabel; (varianta folosit n exemplificarea de mai jos);
introducerea datelor n tabel folosind un formular creat de un asistent /wizard ACCESS.
4

Opiuni prin care se


stabilete maniera de
lucru cu tabela, dup
creare

Figura 5.15 Opiunea de introducere a datelor direct n tabel

Invmnt la distan Anul I 2008/2009

105

Introducerea datelor n
tabel

Figura 5.16 Introducerea datelor n tabel


Dup parcurgerea acestor pai are loc introducerea datelor n tabel (figura 5.16).
Crearea tabelelor folosind Design View
Cea mai complex modalitatea de obinere a tabelelor unei baze de date o ofer Design View
n a crui fereastr pot fi stabilite: numele cmpurilor, tipul datelor i proprietile acestora, cheia
primar etc. Exemplificm obinerea celei de a treia tabele din baza de date vinzari.mdb.

Stabilirea cheii
primare

Figura 5.17 Stabilirea cheii primare


Primul cmp, numrul facturii, este de tip numeric i este reprezentat n formatul Long
Integer. Acest format a fost ales ca proprietate din lista General. n plus, acest cmp a fost desemnat
cheie primar. Stabilirea acestei chei se poate realiza fie activnd pictograma Primary Key

din

bara cu instrumente Database, fie selectnd comanda Primary Key din meniul rapid activat de pe
numele cmpului (figura 5.17). Din lista General se stabilesc proprietile i pentru celelalte cmpuri
(figurile 5.18 i 5.19).

106

Instrumente software pentru afaceri

Stabilirea formatului pentru


data calendaristic

Figura 5.18 Stabilirea formatului pentru data calendaristic

Figura 5.19 Stabilirea formatului pentru o dat numeric


Dup crearea tuturor tabelelor i popularea acestora cu articole fereastra Database, pentru
baza de date vinzari este prezentat n figura 5.20. Pictogramele din bara cu instrumentele Database
permit realizarea unor operaii specifice.

Figura 5.20 Fereastra Database pentru vinzari.mbd

Invmnt la distan Anul I 2008/2009

107

Figura 5.21 Comenzi pentru adugarea unui nou cmp


Este posibil modificarea structurii unei tabele n sensul c pot fi adugate i /sau terse
cmpuri sau pot fi modificate atributele acestora. Adugarea unui cmp se realizeaz fie din meniul
Insert, fie din cel rapid, ambele selectate cnd prompterul este poziionat pe cmpul la stnga cruia
se va insera unul nou (figura 5.21).
tergerea unuia sau mai multor cmpuri presupune selectarea i apoi activarea comenzii
Delete fie din meniul Edit, fie din cel rapid (figura 5.22).

Figura 5.22 Comenzi pentru tergerea unui atribut

5.2.3 Declararea restriciilor


Paragraful 4.3 a fost consacrat tipologiei restriciilor ntr-o baz de date relaional, restricii
care cresc gradul de ncredere n baza de date prin prevenirea a o serie de erori ce pot interveni la
inserarea, modificarea sau tergerea de linii ntr-o tabel. Pentru acomodare, ilustrarea practic a o
serie de restricii a fost fcut pe exemplul ACCESS-ului. Aa nct sarcina noastr din acest paragraf
este destul de uoar. Fa de ceea ce discutam n capitolul 4, ar mai fi de adugat c este
recomandabil ca declararea restriciilor s fie fcut odat cu crearea tabelelor sau imediat dup, n
orice caz, naintea de preluarea vreunei nregistrri n baz. Aceasta asigur preluarea corect a tuturor
informaiilor n tabele.
Ca i crearea tabelelor, declararea i modificarea ulterioar a restriciilor decurge ct se poate
de natural n ACCESS. Dup deschiderea bazei de date, sunt suficiente trei click-uri mari i late pentru
a (re)intra n proiectantul tabelei CLIENI vezi figura 5.23.

108

Instrumente software pentru afaceri

n figura 4.7 am ilustrat modul n care, setnd opiunea Required a proiectantului de tabele
pentru oricare atribut pe valoarea Yes, acelui atribut i se vor interzice valorile nule. Ca o mic
ciudenie a ACCESS-ului, atributele de tip cheie primar apar n macheta proiectantului de tabele ca
avnd proprietatea Required pe No vezi partea stng a figurii 4.8 n timp ce, de fapt, nici un
atribut de tip cheie primar nu poate avea valori nule.

Figura 5.23. Trei click uri


Legat de restriciile de unicitate, pe lng cele discutate n paragraful 4.3.4 i 5.2.2 (figurile
5.13, 5.14 i 5.17) s mai adugm c n ACCESS cheia primar poate fi: natural - cnd valorile
atributelor care o compune se introduc de utilizator - i artificial - cnd se folosete un cmp de tip
AutoNumber, n acest din urm caz ACCESS introducnd automat o valoare consecutiv la inserarea
unei nregistrri (1 pentru prima nregistrare, 2 pentru a doua nregistrare .a.m.d.). ACCESS-ul
creeaz indeci pentru fiecare tip de cheie primar sau alternativ, acesta fiind motivul pentru care la
aceste tipuri de atribute proprietatea Indexed este setat pe Yes (No Duplicates). Dac o cheie primar
este compus, pentru fiecare atribut component se alege simbolul cheii primare din bara de
instrumente.
n privina restriciei refereniale, se cuvin cteva detalii fa de ceea ce a fost discutat n
paragraful 4.3.5. Figura 4.12 ilustreaz modul n care se stabilesc relaiile (legturile) refereniale ntre
tabele (vizualizare realizat prin folosirea opiunii Relationship
din bara de instrumente. De
fapt, ceea ce afieaz figura reprezint aa numitele legturile permanente dintre tabele. Regulile
pentru pstrarea integritii refereniale se stabilesc n fereastra Edit Relationships (figura 5.24)
activat prin dublu click de pe oricare legtur permanent din fereastra Relationships (figura 4.12).

Opiuni pentru
Integritatea
referenial

Figura 5.24 Fereastra Edit Relationships

Invmnt la distan Anul I 2008/2009

109

Practic, restricia de integritate referenial se instituie abia la bifarea opiunii Enforce


Referential Integrity, ACCESS-ul restricionnd adugarea, modificarea i /sau tergerea n tabelele
printe i copil astfel:

nu se permite modificarea valorii cheii primare din tabela printe dac exist n tabela copil
mcar o nregistrare cu care este n legtur;
nu poate fi introdus nici o valoare a unei chei strine dac respectiva valoare nu exist deja ca
i cheie primar n tabela printe.

Dac se alege opiunea Cascade Update Related Fields orice modificarea a unei chei primare n
tabela primare va atrage modificarea n cascad a tuturor cheilor strine n nregistrrile copil, iar
bifnd opiunea Cascade Delete Related Records la tergerea unei nregistrri din tabela printe se
vor elimina automat toate nregistrrile copil.
Din fereastra Database pot fi realizate diverse operaii cu tabelele i nregistrrile ncrcate n
acestea. Pentru a vizualiza coninutul unei tabele este suficient un dublu click de mouse de pe numele
tabelei. La afiare unele tabele au n stnga o coloan n care apare semnul plus (+) sau spaiu. Semnul
plus n dreptul unei nregistrri semnific faptul c aceasta este legat prin chei strine de nregistrri
aflate n alte tabele. Click pe semnul plus determin schimbarea n semnul minus (-) i afiarea
nregistrrilor nrudite (copil) ntr-o subfoaie de date (figura 5.25).

Semnul +
nregistrarea are cel
puin o nregistrare
nrudit ntr-o alt
tabel

Semnul - sunt afiate


nregistrrile
nrudite

Figura 5.25 Afiarea nregistrrilor din tabela copil


Pentru a vedea toate nregistrrile subordonate articolelor dintr-o tabel printe se poate lansa
comanda Subdatasheet din meniul Format (figura 5.26).

Figura 5.26 Expandarea articolelor subordonate


La capitolul (de fapt, paragraful) restricii utilizator de tipul regulilor la nivel de atribut (figura
4.10) am rmas datori cu expresia de la Validation Rule a atributului NumeClient din tabela CLIENI:

Instrumente software pentru afaceri

110

StrComp(UCase([NumeClient]),[NumeClient],0)=0. Exotismul expresie ine nu att de folosirea


funciei Ucase care convertete toate literele din valoarea argumentului (atributul NumeClient, n cazul
nostru) n majuscule, ct de funcia StrComp, prin care, n formatul prezentat se compar dou iruri
de caractere, dintre care unul (cel din dreapta) este valoarea atributului, iar cellalt aceeai valoare, dar
scris cu majuscule. Dac cele dou iruri difer ctui de puin, rezultatul evalurii expresiei este
False, iar modificarea atributului (sau inserarea liniei) este respins. Practic, regula accept numai
valori n care literele sunt exclusiv majuscule.
Bnuind c expresia n-a fost suficient, v supunem ateniei regula de validare a atributului
Adresa prin care prima liter din valoarea oricrei adrese va fi majuscul, restul valorii fiind lsat la
latitudinea utilizatorului: StrComp(Left(UCase([Adresa]),1),Left([Adresa],1),0)=0. Funcia LEFT
extrage primele n caractere de la stnga valorii argumentului.
Orice regul la nivel de nregistrare, aa cum a fost cea pentru tabela FACTURI prezentat n
figura 4.11, se poate introduce n proiectantul de tabel apelnd opiunea Properties din bara de
instrumente (simbolul acestei opiuni n bara de instrumente este chiar cel al ferestrei Table Properties
din figur).

5.2.4. Inserri, modificri i tergeri de nregistrri


Dac n SGBD-uri am putea cheltui zeci de pagini explicnd de zor ce butoane, comenzi,
opiuni trebuie apelate pentru inserri, poziionarea pe nregistrri, modificri, tergeri, n Access
putem s expediem subiectul n cteva propoziii, bazndu-ne pe experiena din... Excel. Afiarea
nregistrrilor unei tabele existente n baza de date se face de manier similar modificrii structurii,
numai c n loc de opiunea Design se alege Open vezi partea stnga sus a figurii 5.27. Pentru
inserarea unei nregistrri din meniul Insert se alege chiar prima comand, New Record (vezi stnga
jos a figurii), iar pentru tergere, n maniera din Excel se selecteaz linia sau liniile de ters (click pe
antetul liniei, iar apoi din meniul Edit se alege Delete Record. Modificarea valorilor se face direct,
prin poziionarea n linia i coloana dorit i operarea modificrilor.

Figura 5.27 Editarea datelor dintr-o tabel

Invmnt la distan Anul I 2008/2009

111

Atunci cnd numrul de linii dintr-o tabel este imens, iar datele trebuie modificate dup
criterii riguroase, este necesar recurgerea la interogri pe care le vom discuta n paragraful 5.4 i
capitolul 6.

5.3. FORMULARE ACCESS


Un formular reprezint un instrument pus la dispoziia utilizatorului n scopul uurrii
operaiilor de accesare i actualizare a datelor stocate n tabelele unei bazei de date. Trebuie reinut
faptul c un formular este legat la o structur de date de tip tabel sau cursor (query) obinut n urma
unei interogri. Prin intermediul formularului se asigur o vedere organizat i formatat asupra unei
pri sau asupra tuturor cmpurilor din una sau mai multe tabele.
n cadrul unui formular deosebim cinci seciuni de lucru, i anume:
1. Antetul de formular (Form Header);
2. Antetul de pagin (Page Header);
3. Zona de detalii (Detail);
4. Subsolul de pagin (Page Footer);
5. Subsolul de formular (Form Footer).
Din cele cinci seciuni este obligatorie doar zona de detalii, deoarece prin intermediul ei se
atinge scopul pentru care a fost conceput un asemenea instrument. Antetele de formular i de pagin,
precum i subsolurile aferente, pentru a fi aduse pe ecran trebuie s se apeleze la opiune View din
meniul principal.
n ACCESS, formularele pot fi construite n trei moduri:
Crearea rapid a unui formular prin utilizarea facilitii AutoForm (Columnar, Tabular,
Datasheet, PivotTable sau PivotChart). De obicei se utilizeaz varianta organizrii
datelor sub forma unei coloane. Dac se alege Tabular, formularul va cuprinde un numr
mai mare de nregistrri n zona de detaliu, ceea ce va semna cu o tabel.
Apelarea la asistent/vrjitor (Form Wizard). Utilizatorul va construi formularul, pas cu
pas, sub ndrumarea asistentului. Singura sarcin a acestuia fiind s rspund la ntrebri
prin selecia unei variante din mai multe posibile;
Utilizarea ferestrei de proiectare (Design View). n acest mod de lucru, formularul este
creat de ctre utilizatori avansai.
n prima etap, pentru oricare variant am opta din cele trei, trebuie s selectm din proiectantul
bazei de date, de sub Object opiunea Forms, dup care s activm butonul New, ca n figura 5.28.
1

Figura 5.28. Lansarea n execuie a generatorului de formulare

Instrumente software pentru afaceri

112

Urmare a aciunii 2 din figura precedent se va activa fereastra New Form (figura 5.29), n
care va trebui s selectm varianta de lucru pentru organizarea cmpurilor (1) i tabela de legtur (2)
aa cum se prezint n figura 5.29.

2
3

Figura 5.29. Fereastr de selecie a modului de organizare a datelor i a tabelei de lucru


Vom parcurge n cele ce urmeaz variantele de lucru cu asistentul /vrjitorul i cea cu
AutoForm Columnar.
1. Utilizarea facilitii AutoForm n generarea de formulare
Ne propunem pentru tabela CLIENTI s generm formularul cu acelai nume. n acest sens,
vom da click pe AutoForm: Columnar (1), dup care vom da click pe sgeata rubricii (Combo Box)
din dreptul Choose the table (2) de unde vom selecta tabela CLIENTI (3).
Dup selecia tabelei CLIENTI vom activa butonul Ok moment n care se va genera automat
formularul corespunztor tabelei noastre (figura 5.30.)

4
2

Figura 5.30. Formularul generat automat pentru tabela CLIENTI


Din figura precedent observm:
1. Titlul ferestrei este clienti, ca i numele tabelei;
2. Suntem poziionai pe prima nregistrare din tabela CLIENTI;
3. Pe ultimul rnd dispunem de un set de butoane de navigare de la o nregistrare la alta;
4. cheia primar a tabelei este marcat prin sgeata n dreptul codului client;

Invmnt la distan Anul I 2008/2009

113

5. Putem modifica foarte uor, chiar prea uor, valorile oricrui cmp cu respectarea
restriciilor de integritate referenial declarate deja;
6. Putem realiza operaii de sortare, filtrare, cutare, tergere ( ) i adugare ( ) din
butoanele din linia de instrumente. Adugarea este posibil i din butoanele de navigare cu
acelai buton

Dup crearea formularului de mai sus este necesar s-l salvm cu un nume, n cazul nostru i
vom da numele Clienti. Acest lucru se realizeaz prin activarea opiunii Save din meniul File sau
direct click pe discheta. Rezultatul va fi apariia ferestrei de salvare a formularului cu un nume
recomandat de ACCESS, n cazul nostru clienti. Dac dorim s pstrm numele, nu ne rmne dect
s dm click pe butonul Ok. n caz c dorim s schimbm numele, vom introduce numele nou i vom
da Ok (figura 5.31).

Figura 5.31 Salvarea formularului


n urma operaiei de salvare va apare n proiectantul bazei de date pentru formulare noul
formular creat, cu numele clienti.
2. Utilizarea asistentului n generarea de formulare
Continum crearea unui formular pentru tabela CODPOST_LOC, dar prin apelarea la
asistentului n generarea de formulare. n figura 5.32. avem marcate etapele necesare lansrii
asistentului.
3

2
1

Figura 5.32 Lansarea generatorului de formulare prin asistentul specializat


Dup activarea butonului Ok (5) vom intra n fereastra din figura de mai jos, din care va trebui
s selectm cmpurile care s fie trimise n formular. n cazul nostru vom trimite toate cmpurile, ceea
ce nseamn c vom da click pe butonul >>, apoi Next.

114

Instrumente software pentru afaceri

Figura 5.33. Fereastra de selectare a cmpurilor din tabela CODPOST_LOC


Dup activarea butonului Next vom intra n fereastra de organizare a datelor, din care vom
selecta butonul radio Columnar i Next, ceea ce va face trecerea n fereastra de stabilire a stilului, din
care vom selecta Standard i Next (figura 5.34).

Figura 5.34 Selecia modului de organizare a datelor i a stilului


Dup selectarea stilului se va solicita ataarea unui nume pentru formular. n cazul nostru i vom
da numele Coduri i vom activa butonul Finish (figura 5.35).

Figura 5.35 Salvarea i afiarea formularului


Utilizarea unui formular se realizeaz direct din proiectantul bazei de date prin dublu click pe
numele acestuia sau cu selectare Form, selectare nume formular i activarea butonului Open. Dac ne
propunem s utilizm formularul Coduri, astfel (figura 3.36):
a. selectm Form;
b. selectm Coduri;
c. activm butonul Open.

Invmnt la distan Anul I 2008/2009

115

Figura 5.36 Lansarea n execuie a unui formular


din zona
n cazul n care se dorete adugarea unei nregistrri se activeaz butonul
butoanelor de defilare sau din liniile de instrumente, ceea ce va determina golirea formularului, cu
posibilitatea completrii datelor despre alta localitate (figura 5.37).

Figura 5.37 Adugarea unei nregistrri


Modificarea unei nregistrri cu ajutorul formularului Coduri se realizeaz n dou etape:
a. cutarea articolului de modificat;
b. efectuarea modificrii direct n formular.
n mod similar modificrii se realizeaz i tergerea unei nregistrri cu ajutorul formularului,
cu precizarea c se d click pe butonul

c. cutarea articolului de modificat;


d. efectuarea modificrii direct n formular.

5.4. OBINEREA DE INFORMAII DIN BAZA DE DATE N ACCESS


ACCESS-ul a fost, nc din tinereea sa, un reper n materie de faciliti de obinere a
informaiilor dintr-o baz de date relaional, printr-un mecanism simplu de creare a interogrilor.
Vis-a-vis de terminologie, n englez, verbul care desemneaz explorarea bazei de date pentru a obine
informaiile necesare este to query pe care-l traducem prin a interoga. Chiar dac la noi interogatoriul
ne duce cu gndul mai degrab la beciurile securitii i btile crunte aplicate dumanilor poporului,
sensul interogrii unei baze de date este de a o investiga pentru a stoarce informaii. Astfel nct, n
cele ce urmeaz ne vom transforma n storctori de informaii, este drept, fr bastoane de cauciuc,
reflectoare n ochi i pumni la ficat.

116

Instrumente software pentru afaceri

Figura 5.38 Proiectantul de interogri


ntr-un proiect ACCESS, la loc de cinste ntre obiecte, imediat dou tabele (Tables) apar
interogrile (Queries). Selectarea acestora, click-ul de rigoare pe butonul New i apoi a opiunii Design
View determin afiarea pe ecran a proiectantului de interogri, un cadru foarte versatil prin care
putem formula o cerin informaional (figura 5.38).
Partea de sus a ecranului (n spatele ferestrei de alegere a tabelelor) servete la afiarea
tabelelor implicate n interogare, precum i a legturilor (restriciilor refereniale) dintre ele. n cadrul
propriu zis, fiecare coloan corespunde unei coloane din lista ce se dorete a fi obinut, informaiile
specificate fiind: numele atributului (Field), tabela n care se afl acesta (Table), dac valorile
atributului vor fi ordonate cresctor sau descresctor (Sort) n list, dac respectiva coloan va fi
afiat n list sau servete doar la precizarea filtrului de selecie a nregistrrilor (Show) i condiiile
pe care trebuie s le ndeplineasc nregistrrile (liniile) pentru a fi incluse n raport, altfel spus,
condiia a filtrate a liniilor n rezultat (Criteria).
Ar mai trebui spus c putem include n rezultat nu numai atribute din tabele, ci i expresii de
atribute, dup cum vom vedea imediat.

5.4.1. Informaii obinute dintr-o singur tabel


Ne propunem s obinem din tabela FACTURI o list (situaie) de genul celei din figura 5.39.
Comparnd cu liniile tabelei FACTURI din finalul capitolului 4 observm c n rezultat sunt incluse
numai facturile emise dup 20 iunie 2005, iar situaia obinut prezint o coloan inexistent n tabela
FACTURI, i anume ValoareFrTVA.

Figura 5.39 Facturile (inclusiv valoarea fr TVA) emise dup 20 iunie 2005

Invmnt la distan Anul I 2008/2009

117

Pornind de la ceea ce dorim s obinem, s vedem cum se construiete macheta interogrii.


Figura 5.40 ncearc (fr succes) s lmureasc lucrurile. n partea de sus troneaz singura tabel
necesar obinerii rezultatului FACTURI. Partea interesant este ns n partea de jos a figurii.

Figura 5.40 Macheta interogrii pentru obinerea listei din figura 5.39
Mai nti, n linia Criteria a coloanei Data este formulat criteriu de filtrare a liniilor din
rezultat: > #6/20/2005#. Este modalitate de a indica faptul c valorile de pe coloana Data trebuie s fie
mai mari dect 20 iunie 2005. Dar cel mai captivant este ceea ce se petrece pe a treia coloan a
machetei. n prima faz pe linia Field se introduce expresia ValoareTotala TVAColectata. Apoi se
face un click discret pe butonul Properties (pasul 2) i se obine pe ecran modesta fereastr Field
Properties. Aici vom indica formatul de afiare fix (Format...Fixed) cu dou zecimale (Decimal
Places...2), precum i numele coloanei calculate (Caption...ValoareFaraTVA). Simplu, nu ? (v
ateptm cu drag la restane !)
Se salveaz macheta (celebra pictogram a dischetei din figura de mai sus) sub numele
Facturi_dupa_20iunie2005, o imagine izbitor de asemntoare figurii 5.39 fiind obinut dup click-ul
de rigoare pe butonul View din stnga-sus-ul ferestrei interogrii.

5.4.2. Informaii obinute din dou sau mai multe tabele


Prinznd un pic de curaj dup ncercarea din paragraful precedent, ne apropiem simitor de
majoritatea situaiilor reale, n care informaiile necesare, precum i condiiile pe care trebuie s le
ndeplineasc acestea, se gsesc nu ntr-o singur tabel, ci n dou sau chiar mai multe. Interogarea
din figura 5.41 botezat Fac_dupa20iunie2005v2 (adic versiunea a dou a facturilor emise dup 20
iunie 2005) beneficiaz de serviciile tuturor celor trei tabele. ntruct n primele paragrafe ale
capitolului au fost declarate restriciile refereniale, pe msura adugrii tabelelor n interogare,
ACCESS-ul indic i legturile dintre ele.
Spre deosebire de interogarea precedent, ntre coloanele Data i ValoareFrTVA au fost
introduse dou coloane, NumeClient (corespunztor atributului cu acelai nume din tabela CLIENI) i
Localitate (ce conine valorile atributului corespunztor din tabela CODPOST_LOC). Condiia de
filtrare a liniilor din rezultat privete dou atribute. n afara datei, ce trebuie s fie, n continuare, dup

Instrumente software pentru afaceri

118

20 iunie 2005, facturile trebuie s fi fost emise unor clieni din localitatea Iai. Pentru aceasta, pe linia
Criteria, n dreptul coloanei Localitate este specificat Iasi.

Figura 5.41. Interogare ce folosete trei tabele, dou condiii de filtrare i ordonare
n plus, s-a dorit i ordonarea cresctoare a liniilor din rezultat dup valorile atributului
NumeClient. V lsm pe dvs. s vizualizai rezultatul acestei interogri.

5.4.3. Prelucrri /grupri /sintetizri


Partea cea mai interesant a interogrilor, n ACCESS sau orice alt SGBD, ine de prelucrarea
datelor numerice. Astfel, cei de la compartimentul Vnzri (de obicei, acum i se spune Marketing,
deoarece sun mult mai bine) pot fi ct se poate de interesai s afle valorile vnzrilor pe zile
calendaristice, pe un interval la alegere. Probabil dialogul ar putea suna aa: A fi interesat() de
evoluia zilnic a vnzrilor n perioada 18-24 iunie 2005, iar dup un timp situaia cerut ar fi
similar, numai c s-ar referi la intervalul 25-30 iunie 2005.
n tabela FACTURI fiecare linie se refer la o factur, aa nct, pentru onorarea solicitrii
colegilor de la compartimentul Marketing este necesar gruparea pe zile a facturilor i nsumarea,
pentru fiecare zi, a celor trei mrimi: valoarea fr TVA, TVA colectat i valoarea total ale facturilor
din ziua respectiv. Iat cum rezolvm problema vezi figura 5.42.

Figura 5.42. Filtru generalizat, plus o grupare dup dat

Invmnt la distan Anul I 2008/2009

119

Pentru declararea modalitii de grupare trebuie mai nti folosit simbolul de nsumare din
bara de instrumente a interogrii. Ca urmare, n machet, ntre liniile Table i Sort apare linia Total.
Pe aceast linie, pentru coloanele TVAColectat i ValoareTotal este suficient selectarea opiunii
Sum, n timp ce pentru valoarea fr TVA trebuie selectat opiunea Expression, deoarece valoarea sa
se determin prin diferena dintre celelalte dou (vezi n linia Fields expresia ValFaraTVA:
SUM(ValoareTotala TVAColectata)).
Un alt artificiu care face o impresie bun este noul criteriu prin care utilizatorul poate indica n
momentul vizualizrii rezultatelor interogrii intervalul de vizualizare, adic data iniial i data final
a acestuia: BETWEEN [Data Initiala:] AND [Data finala:]. La vizualizare (click pe simbolul View
din stnga barei de instrumente a interogrii) pe ecran apare o fereastr minuscul, ca n figura 5.43,
urmat de o alta, le fel de minuscul, n care se solicit data final i numai dup aceea se afieaz
rezultatul cu liniile ce desemneaz zile din intervalul specificat n care exist mcar o factur.

Figura 5.43. Solicitarea valorii primului parametru de intrare (data iniial a intervalului)
Cam att deocamdat. Ne revedem cu interogrile n capitolul 6.

5.5 CONSTRUIREA I UTILIZAREA RAPOARTELOR


Informaiile din domeniul economic sunt prezentate, cel mai adesea, prin intermediul
rapoartelor. Raportul reprezint un ansamblu de informaii conforme cu cerinele utilizatorilor,
construit pe baza datelor din tabele. Rapoartele poate fi afiate pe ecran sau tiprite la imprimant,
majoritatea lor avnd form tabelar.
La proiectarea i construirea rapoartelor n format tabelar se vor lua n considerare cinci seciuni
principale, la care mai pot fi adugate altele dou, dac se dorete gruparea datelor. Aceste seciuni,
prezentate n structura raportului din figura 5, sunt (redm i denumirea lor n limba englez, pentru o
mai bun recunoatere a lor n generatoarele de rapoarte):
Antetul i sfritul (subsolul) raportului (Report Header i Report Footer). Antetul raportului
conine elementele care vor apare o singur dat, la nceputul raportului. Aici se includ, de obicei,
titlul raportului, data obinerii i numele destinatarului. n seciunea de sfrit (subsol) se prevd
elementele care vor apare o singur dat n raport, la sfritul acestuia. Aici se pot include totalurile
generale pentru cmpurile numerice i numele persoanelor care au generat i certificat raportul
respectiv.
Antetul i sfritul paginii (Page Header i Page Footer). n aceste seciuni vor fi incluse acele
elemente ale raportului care vor apare o singur dat pe fiecare pagin, la nceputul sau la sfritul
ei. De regul, numele coloanelor sunt prevzute n antetul paginii astfel nct ele s fie afiate la
nceputul fiecrei pagini. Totalurile la nivel de pagin, dac sunt necesare, trebuie incluse n
seciunea de sfrit (subsol) a paginii. Numrul paginii poate apare n oricare din cele dou
seciuni.

120

Instrumente software pentru afaceri

Seciunea de detaliu (Detail). Este seciunea principal a oricrui raport i conine valorile
cmpurilor din baza de date i a expresiilor calculate ce vor forma o linie cu date. Pentru fiecare
nregistrare prelucrat din baza de date se va crea cte o linie n raport.
Antetul i sfritul grupului (Group Header i Group Footer). Aceste dou seciuni apar n
rapoarte numai atunci cnd se dorete gruparea datelor. n exemplul din figura 5.48, vnzrile sunt
grupate pe clieni, iar codul clientului reprezint cmpul de control, adic acela dup valorile cruia
se va face gruparea. Elementele incluse n aceste seciuni vor apare o singur dat pentru fiecare
grup de date, deasupra primei linii cu date din grup, respectiv sub ultima linie. n antetul grupului
se includ, de regul, datele de identificare ale grupului adic, n exemplul nostru, codul i numele
clientului. n seciunea de sfrit se pot afia totaluri sau rezultatele altor operaiuni de agregare la
nivelul grupului, precum numrul elementelor, valoarea medie, valoarea minim i valoarea
maxim pentru cmpurile numerice.
n ACCESS, rapoartele pot fi construite n trei moduri:

Crearea rapid a unui raport pe baza unei singure tabele sau interogri, prin utilizarea facilitii
AutoReport (Columnar sau Tabular). Utilizatorul trebuie doar s specifice tabela din care se vor
extrage datele, iar raportul va fi generat i afiat pe ecran imediat. Dac se opteaz pentru
Columnar, raportul obinut va fi de tip coloan, adic datele unei linii din tabel vor fi aranjate pe
o singur coloan. Dac se alege Tabular, raportul generat va fi de tip tabel, rezervndu-se cte o
coloan pentru fiecare cmp din tabel.

Apelarea la vrjitor (Report Wizard). Utilizatorul va construi raportul, pas cu pas, sub
ndrumarea vrjitorului, rolul su constnd n furnizarea de rspunsuri la anumite ntrebri, care
privesc sursa datelor (tabelele i/sau interogrile), cmpurile de date care vor fi reinute n raport,
modul de grupare i ordonare a datelor, formatul i titlul raportului. Spre deosebire de cazul
anterior, acum pot fi create rapoarte pe baza mai multor tabele i/sau interogri.

Utilizarea ferestrei de proiectare (Design View). n acest mod de lucru, rapoartele vor fi create

fr ajutorul vrjitorului. n schimb, utilizatorul va avea posibilitatea s creeze rapoarte mai


complexe, pe care s le personalizeze conform cerinelor sale. Ca i n primul caz, raportul poate
conine date dintr-o singur tabel sau interogare.
Pentru crearea unui raport, indiferent de modalitatea dorit, se selecteaz opiunea Reports din
fereastra bazei de date i apoi butonul New din linia de instrumente, situat n partea superioar a
ecranului. n urma acestei aciuni se afieaz fereastra de dialog din figura 5.44.

Figura 5.44 Fereastra de dialog pentru alegerea modalitii de realizare a unui raport
n continuare vom descrie numai ultimul mod de lucru, ntruct acesta ne permite realizarea de
rapoarte complexe i personalizate, iar celelalte dou ci sunt mult mai simple de urmat.

Invmnt la distan Anul I 2008/2009

121

Ne propunem s construim un raport privind situaia vnzrilor dup 20 iunie 2005, pe


categorii de clieni. Cerinele raportului sunt urmtoarele:
vor fi incluse urmtoarele informaii: codul i numele clientului, numrul i data facturii,
valoarea total i valoare TVA;
datele vor fi grupate pe clieni (dup codul clientului), iar pentru fiecare client se va calcula
i afia valoarea total a facturilor i valoare total TVA;
datele vor fi ordonate dup numrul facturii;
se vor include totaluri pentru coloanele valoare total i valoare TVA, att pentru fiecare
client, ct i la sfritul raportului.
Etapele de creare a raportului sunt urmtoarele:
1. Crearea interogrii pentru extragerea datelor necesare raportului din tabele. Aa cum
spuneam anterior, n fereastra de proiectare pot fi construite rapoarte pe baza unei singure tabele sau
interogri. ntruct raportul solicit date din dou tabele, CLIENTI i FACTURI, va trebui s crem o
interogare care s extrag datele din cele dou tabele. La construirea raportului se vor folosi datele
extrase prin interogarea FAC_DUPA20IUNIE2005V2, creat anterior, n paragraful destinat
interogrii bazei de date.
2. Deschiderea ferestrei pentru construirea raportului. n acest sens, se activeaz fereastra
de dialog New Report, prezentat anterior n figura 5.44. Se selecteaz opiunea Design View dup
care, din csua combinat (combo box) situat mai jos se alege interogarea
FAC_DUPA20IUNIE2005V2. Dup apsarea butonului OK, se deschide fereastra pentru construire a
rapoartelor, prezentat n fig. 5.45.

Figura 5.45 Fereastra pentru construirea rapoartelor


n cadrul ferestrei se poate observa pagina raportului care, pentru nceput, este goal, bara de
instrumente i o mic fereastr ce conine lista cmpurilor tabelei sau interogrii selectate anterior. Se
observ c pagina conine numai trei din cele cinci seciuni ale unui raport. Pentru adugarea celorlalte
dou, Report Header i Report Footer, se va accesa meniul View i se va selecta opiunea Report
Header/Footer.
3. Adugarea obiectelor n cele cinci seciuni ale raportului. Pentru includerea obiectelor n
raport se utilizeaz bara de instrumente, n aceeai manier ca la construirea formularelor. n acest
sens, vor fi utilizate urmtoarele butoane:
etichet
,pentru specificarea titlului raportului, denumirii coloanelor sau a altor texte
cu rol explicativ;

Instrumente software pentru afaceri

122

csu de text
, pentru adugarea cmpurilor de date i a expresiilor de calcul ale cror
valori vor fi afiate la vizualizarea /tiprirea raportului.
linie

i dreptunghi

, pentru trasarea liniilor i chenarelor necesare pentru

nfrumusearea raportului;
sgeat
, atunci cnd dorim selectarea unui obiect din raport.
Pentru adugarea unui text, se selecteaz butonul etichet, se poziioneaz mouse-ul n poziia
din care dorim s nceap textul i se d clic, dup care se introduce textul. Pentru a continua textul pe
linia urmtoare, dar n aceeai csu, se folosete combinaia de taste CTRL+ENTER.
Mai nti se completeaz antetul raportului (Report header), n care se include data afirii sau
tipririi, i antetul paginii (Page header). Pentru includerea datei curente se adaug o csu de text
care va avea ca expresie de calcul funcia DATE(). Specificarea expresiei de calcul se face astfel: se
selecteaz csua, se apas butonul dreapta al mouse-ului i se alege opiunea Properties din meniul
afiat. Efectul acestei aciuni const n afiarea ferestrei cu proprieti, prezentat n figura 5.46.a). n
aceast fereastr se alege proprietatea Control Source i se apas butonul trei puncte, din dreapta,
pentru deschiderea ferestrei Expression Builder (construirea expresiilor de calcul). n figura 5.46.b) se
poate vedea coninutul acestei ferestre i modul n care a fost introdus expresia DATE(). Expresia de
calcul poate fi introdus i de la tastatur, direct n csua de editare. Se revine n pagina raportului
prin apsarea butonului OK i nchiderea ferestrei cu proprieti.

a) Fereastra cu proprieti

b) Fereastra pentru introducerea expresiilor de calcul

Figura 5.46 Ferestrele pentru introducerea expresiilor de calcul


Pasul urmtor vizeaz introducerea cmpurilor numr factur, data factur, valoare total i
valoare TVA n seciunea de detaliu (Detail). n acest sens, din lista cmpurilor se trag, pe rnd, cele
patru cmpuri n locul dorit. Eticheta adugat automat pentru fiecare cmp introdus n raport poate fi
tears deoarece rolul explicativ l ndeplinete numele coloanei n care acesta este plasat. Dedesubtul
celor patru cmpuri se traseaz o linie pentru a delimita rndurile cu date n momentul vizualizrii
/tipririi raportului.
n subsolul paginii (Page Footer) se vor introduce numrul paginii curente i numrul total de
pagini din raport. Se va aduga o csu de text, urmndu-se paii descrii anterior pentru data curent,
a crei expresie va avea forma:
= Pagina & [Page] & din & [Pages].
Variabila [Page] livreaz numrul paginii curente, iar variabila [Pages] numrul total de
pagini. Operatorul & este utilizat pentru adunarea irurilor de caractere.

Invmnt la distan Anul I 2008/2009

123

n subsolul raportului (seciunea Report Footer) se adaug o linie pentru totalul general, n
care vor fi nsumate valoarea facturilor i valoarea TVA. Cele dou formule de calcul se introduc tot
prin intermediul csuelor de text i vor avea forma:
= SUM ([ValoareTotal])
= SUM ([TVAColectata])
ValoareTotala i TVAColectata sunt cmpurile din rezultatul interogrii pentru valoarea total a
unei facturi i valoarea TVA aferent.
4. Gruparea i ordonarea datelor. Liniile din raport pot fi ordonate sau grupate n funcie de
mai multe criterii, iar pentru fiecare grup de date se pot introduce n raport alte dou seciuni: antetul i
subsolul grupului. Cele dou operaiuni sunt realizate din fereastra Sorting and Grouping. Deschiderea
ei se face prin selectarea opiunii Sorting and Grouping din meniul View sau prin apsarea butonului
din linia cu instrumente, situat deasupra ferestrei de construirea a raportului.
Fereastra (prezentat n figura 5.47) conine un grid (tabel), format din dou coloane, Field
/Expression i Sort Order, i un grup de proprieti pentru definirea grupurilor de date, n partea sa
inferioar. Coloana Field /Expression este utilizat pentru specificarea cmpurilor sau expresiilor dup
care se face gruparea i /sau ordonarea datelor n raport. n raportul nostru datele trebuie grupate dup
codul clientului i ordonate dup numrul facturii. De aceea, vom selecta n prima linie cmpul
CodClient, iar n cea de-a doua Nrfact. Aceast coloan poate conine cel mult zece nume de cmpuri i
/sau expresii, adic pot fi utilizate cel mult zece criterii de grupare i sortare.

Figura 5.47 Fereastra Sorting and Grouping


Coloana Sort Order permite alegerea ordinii cresctoare (Ascending) sau descresctoare
(Descending) pentru cmpul sau expresia din linia respectiv. n momentul completrii coloanei
Field/Expression, n coloana Sort Order va fi atribuit implicit valoarea Ascending. Dac se dorete
modificarea ordinii de sortare pentru un anumit cmp sau expresie, atunci se selecteaz printr-un clic
elementul respectiv, dup care n coloana Sort Order se alege valoarea Descending.
n cazul n care pentru un cmp sau o expresie se dorete nu doar sortarea datelor, ci i
gruparea lor, atunci se selecteaz elementul respectiv i se vor configura proprietile din jumtatea
inferioar a ferestrei Sorting and Grouping. Aceste proprieti au urmtoarele semnificaii:

Group Header prezint dou valori posibile Yes /No. Dac se alege valoarea Yes, atunci pentru
cmpul sau expresia selectat din coloana Field /Expression se adaug n raport o seciune nou
pentru antetul grupului. Valoarea implicit este No, adic nu se creeaz automat o seciune pentru
antetul grupului.

Group Footer este asemntoare cu proprietatea anterioar, numai c se refer la seciunea de


sfrit (subsol) a grupului respectiv. Pentru includerea ei n raport se va alege valoarea Yes.

124

Instrumente software pentru afaceri

Group On stabilete modul de grupare a valorilor cmpului selectat. Valorile posibile depind de
tipul cmpului sau expresiei de grupare (text, numeric sau dat calendaristic). De exemplu, dac
s-a ales data facturii drept cmp de grupare, atunci prin aceast proprietate se va stabili dac datele
vor fi grupate pe fiecare valoare distinct (se alege valoarea Each Value), pe fiecare an (Year),
lun (Month), sptmn (Week) .a.m.d.

Group Interval specific un interval sau un numr de caractere pe care se bazeaz gruparea
liniilor din raport. n cazul unui cmp de grupare de tip Date/Time, stabilirea valorii 12 semnific
gruparea liniilor care aparin aceleiai jumti de zi, dac pentru proprietatea Group On a fost
stabilit valoarea Hour.

Keep together se refer la modul de tiprire a liniilor raportului care fac parte din acelai grup.
Pentru aceast proprietate exist trei valori posibile: No permite tiprirea liniilor dintr-un grup i
pe pagina urmtoare, dac s-a ajuns la sfritul paginii; Whole group (Grupul ntreg) are ca efect
tiprirea tuturor seciunilor grupului (antetul, detaliile i subsolul) pe o singur pagin, dac este
posibil; With First Detail (Cu prima linie de detaliu) antetul grupului va fi tiprit pe aceeai
pagin cu prima linie a seciunii de detaliu.
Dup adugarea tuturor cmpurilor i expresiilor de ordonare i grupare i configurarea
proprietilor de grupare, se nchide fereastra Sorting and Grouping i se trece la completarea
seciunilor nou introduse n pagina raportului. Cerinele raportului ales de noi ca exemplu impun
crearea unui grup de date, n funcie de codul clientului. n seciunea de antet se introduc codul i
numele clientului, iar n cea de subsol se adaug sumele calculate pentru valoarea facturilor i valoarea
TVA, n maniera descris pentru seciunea Report Footer.

Figura 5.48 Fereastra pentru construirea raportului exemplificat


Forma final a raportului privind vnzrile pe clieni, cu toate obiectele incluse, este
prezentat n figura 5.48. Acum se salveaz raportul (este recomandabil s salvai mai des, fr a
atepta s finalizai construirea raportului), dup care se face vizualizarea acestuia, prin selectarea
opiunii Print Preview din meniul View sau prin apsarea butonului

din linia cu instrumente. n

continuare se poate configura pagina (dimensiune, orientare, margini etc.), folosind opiunea Page

Invmnt la distan Anul I 2008/2009

125

Setup din meniul File. De asemenea, se poate tipri raportul prin comanda Print din acelai meniu
File.
La vizualizare raportul va arta ca n figura 5.49.
Odat salvat, raportul poate fi ulterior modificat. n acest sens, se alege obiectul Report din
fereastra bazei de date, apoi se alege raportul dorit din fereastra din dreapta, ce conine rapoartele
create deja, i se apas butonul
din linia cu instrumente. Efectul acestei comenzi va consta
n deschiderea ferestrei de proiectare a raportului (figura 5.48), n care vor fi regsite toate obiectele
raportului i care pot fi modificate n conformitate cu noile cerine.

Figura 5.49 Forma raportului exemplificat la vizualizare

5.6 APLICAII, PROGRAME, PROCEDURI VBA N ACCESS


Ca orice aplicaie din pachetul MS Office pentru scrierea de proceduri se folosete Visual
Basic for Application. Programele VBA sunt numite proceduri i sunt grupate n:
Sub rutine, care se refer la instruciuni VBA cuprinse ntre Sub End Sub i care nu
returneaz o valoare;
Sub nume_proc()

End sub

a. Funcii procedurale care se refer la instruciuni VBA cuprinse ntre Function End
Function i care returneaz o valoare.
Function nume_funct(param)

End Function

Instrumente software pentru afaceri

126

Orice procedur cuprinde un set de instruciuni care ndeplinesc o anumit sarcin. n scrierea
unei proceduri se folosesc cuvinte cheie, adic acele cuvinte de culoare albastr, care reprezint
cuvinte rezervate ale mediului VBA. Celelalte cuvinte de culoare neagr sunt cuvinte utilizator de
natura variabilelor sau valorilor.
La rndul lor, procedurile i modulele se regrupeaz n module, care pot fi: clase de module i
module standard.
Toate aceste proceduri se scriu n VBA i devin parte a componentei module din proiectantul
de baz de date (vezi figura de mai jos). Tot ca proceduri i funcii se scriu i interogrile aplicate
asupra bazei de date. Pentru a vizualiza coninutul unui modul este necesar s se dea dublu click pe
numele acestuia i astfel se va intra n VBA.

Dublu
click

Figura 5.50 Componenta Module din BD Vinzari i vizualizarea coninutului pentru Meniu n VBA
n mod similar se vizualizeaz coninutul celorlalte module i a interogrilor (ramura Query).
Lansarea n execuie a unei proceduri n VBA se face direct din meniul Run opiunea Run
Sub/User Form sau simplu cu F5. Acelai lucru se poate realiza dac se d click pe butonul
din
linia de instrumente (de obicei se gsete sub Run). Dac n urma unei execuii se intr n modul
Break (adic se blocheaz execuia n VBA prin colorarea n galben a unei linii cu instruciuni), va
trebui s se reseteze din meniul Run opiunea Reset sau simplu click pe butonul

din linia de

instrumente.
Lansarea n execuie n cadrul procedurilor de interogare i a celor din module se realizeaz cu
urmtoarele instruciuni:
Run (Auto_Open)
Sau

se executa procedura Auto_Open

Call Auto_Open se apeleaz procedura Auto_Open


Pentru apelarea unei interogri (query), a unui formular sau raport ntr-o procedur VBA se
folosete instruciunea DoCmd, astfel:
DoCmd.OpenQuery ("interog")
DoCmd.OpenReport ("Situatia vanzarilor"), acPreview
DoCmd.OpenForm ("Coduri")

apeleaza interogarea cu numele interog


apeleaza raportul Situaia vanzarilor

Invmnt la distan Anul I 2008/2009

Exemple de teste gril


1. Lansarea unui formular se face:
a. direct din proiectantul bazei de date
b. cu comanda DoCmd
c. din interiorul unui funcii
2. Elementele raportului care apar la nceputul fiecrei pagini trebuie incluse n seciunea:
a. Page footer
b. Antet of page
c. Group Header
d. Page Header

127

Instrumente software pentru afaceri

128

Capitolul 6

INTEROGAREA BAZELOR DE DATE. LIMBAJUL SQL

Obiective:
xvi.
xvii.
xviii.

Expunerea, n termeni generali, a problematicii standardizrii


limbajelor de lucru cu bazele de date. Punerea n eviden a
importanei SQL n lumea bazelor de date
Prezentarea principalelor tipuri de date ce pot fi gestionate prin SQL
i a restriciilor ce pot fi declarate.
Expunerea gradual a principalelor clauze ale interogrilor

Rezultate ateptate:
xix.
xx.
xxi.
xxii.

Crearea unei baze de date relaionale, inclusiv a restriciilor folosind


comenzi i clauze SQL: CREATE TABLE, ALTER TABLE, DROP
TABLE.
Cunoaterea comenzilor pentru editarea unei tabele; comenzile
INSERT, UPDATE, DELETE
Cunoaterea celor mai importani operatori i clauze ai interogrilor
SQL: fraza SELECT, operatorii de comparaie obinuii i cei
specifici: BETWEEN, IN, IS NULL, LIKE.
Folosirea clauzelor GROUP BY i HAVING i a funciilor-agregat:
COUNT, SUM, AVG, MIN, MAX pentru calcularea unor parametri
sintetici din baza de date.

Invmnt la distan Anul I 2008/2009

129

6.1. PREZENTARE GENERAL A LIMBAJULUI SQL


Dup dou capitole de lupt surd cu bazele de date, a devenit aproape evident c folosim
bazele de date pentru c avem memoria prea scurt. Deoarece suntem o lume aezat pe un morman de
hrtii & hroage, ne este cu neputin s reconstituim ceea ce am fcut adineaori, dar-mi-te ieri,
sptmna trecut sau acum un an sau cinci. Necazul e c, de cele mai multe ori, trebuie s tim nu
numai ce-am fcut noi, dar ce-au fcut i colegii i partenerii de afaceri. Dac la oameni mai putem
trece cu vederea, n cazul bazelor de date ncrederea este elementul cheie (primar, strin...). Aa
nct i n capitolul 4 i n capitolul 5 am fost foarte interesai s aflm cu definim ct mai multe
restricii, astfel s diminum riscul prelurii n baza de date a unor informaii eronate. Apoi am vzut
cum inserm, modificm i tergem date ntr-o baz. Tangenial am abordat i cteva modaliti de a
obine informaii de o manier asistat, grafic.
Chiar dac am ncercat s pstrm discuia la un nivel general, exemplificrile au fost fcute
pe calapodul ACCESS-ului. Cei care au experien n ACCESS i vor s treac, forai de mprejurri,
pe un SGBD mai performant, gen PostgreSQL, Oracle etc. (trecere care echivaleaz vor descoperi c
trecerea de la amatori la semi sau chiar profesioniti de-a binelea) vor fi bruscai de diferenele de
interfa, opiuni etc.
Pentru atenuarea ocurilor trecerilor de la un SGBD la altul, specialitii bazelor de date s-au
gndit la un limbaj universal dedicat crerii tabelelor, definirii restriciilor, crerii utilizatorilor i
grupurilor de utilizatori, definirii drepturilor fiecrui utilizator/grup la obiecte din baz, actualizrii
nregistrrilor din tabele (inserare, modificare, tergere) i, mai ales, extragerii i prelucrrii datelor din
baz. Acest limbaj a fost standardizat nc din 1986 (n SUA) i 1989 (la nivel mondial ISO) i se
numete SQL.
Haidei s revenim la interogarea FACTURI_DUPA_20IUNIE2005 din figura 5.40 (a crei
execuie produce rezultatul din figura 5.39). Dac din modul proiectare (Design) alegem opiunea
SQL View, o s ne trezim cu o fereastr n care apare din senin o comand cel puin ciudat:

Figura 6. 1. O interogare SQL de-a gata

130

Instrumente software pentru afaceri

SELECT facturi.NrFact, facturi.Data, [ValoareTotala]-[TVAColectata] AS Expr1,


facturi.TVAColectata, facturi.ValoareTotala
FROM facturi
WHERE (((facturi.Data)>#6/20/2005#));
Ei bine, acest SELECT este chiar o comand SQL. Dar s-o lum la pas temeinic. Un mobil
determinant al succesului bazelor de date relaionale l-a constituit, fr nici o ndoial, SQL. De la
nceputurile bazelor de date, s-a pus problema elaborrii unui limbaj universal special dedicat bazelor
de date, limbaj care s permit, n egal msur, definirea relaiilor (tabelelor), declararea restriciilor,
modificarea datelor din tabele, precum i extragerea informaiilor din cele mai diverse din datele
existente n baz. n 1970, E.F.Codd sugera "adoptarea unui model relaional pentru organizarea
datelor [...] care s permit punerea la punct a unui sub-limbaj universal pentru gestiunea acestora,
sub-limbaj care s fie, n fapt, o form aplicat de calcul asupra predicatelor".
De atunci pn n prezent au fost propuse numeroase limbaje pentru lucrul cu bazele de date,
denumite, n general, limbaje de interogare. Dintre cele teoretice, cele mai cunoscute sunt algebra
relaional i calculul relaional, iar dintre cele practice (comerciale) Quel, QBE i SQL. De departe,
cel mai important este SQL, fundamentat de algebra relaional.
Dup muli autori, momentul decisiv n naterea SQL ca limbaj l constituie lansarea
proiectului System /R de ctre firma IBM, eveniment ce a avut loc n 1974. Tot n 1974 Chamberlin i
Boyce au publicat o lucrare n care este prezentat forma unui limbaj structurat de interogare,
"botezat" SEQUEL (Structured English as QUEry Language). n 1975 Chamberlin, Boyce, King i
Hammer public un articol n care prezint sub-limbajul SQUARE, asemntor SEQUEL-ului, dar
care utiliza expresii matematice i nu cuvinte din limba englez. Autorii celor dou studii au
demonstrat c limbajele SEQUEL i SQUARE sunt complete din punct de vedere relaional.
Un colectiv de autori, condus de Chamberlin, elaboreaz n 1976 o nou lucrare n care se face
referire la SEQUEL 2, acesta fiind "preluat" ca limbaj de interogare al SGBD-ului System /R al firmei
IBM. n 1980 Chamberlin schimb denumirea SEQUEL n SQL - Structured Query Language (Limbaj
Structurat de Interogare), dar i astzi muli specialiti pronun SQL ca pe predecesorul su. Anii
urmtori au nregistrat apariia a o serie ntreag de lucrri care l-au perfecionat, ultimul deceniu
consacrndu-l ca pe cel mai rspndit limbaj de interogare a BDR, fiind prezent n numeroase
"dialecte" specifice tuturor SGBDR-urilor actuale, de la DB2 la Microsoft SQL Server, de la Oracle la
FoxPro i ACCESS.
American National Standard Institute public n 1986 standardul SQL ANSI X3.136-1986.
Este un standard care se bazeaz, ntr-o mare msur, pe "dialectul" SQL al produsului DB2 de la
IBM. n 1989 are loc revizuirea extinderea acestui standard, "nscndu-se" SQL-89, care mai este
denumit i SQL1. Dei recunoscut ca baz a multor SGBDR-uri comerciale, SQL1 i-a atras
numeroase critici. n plus, variantele comercializate de diferiii productori, dei asemntoare n
esen, erau (i sunt) incompatibile la nivel de detaliu. Pentru a umple golurile SQL1, ANSI a elaborat
n 1992 "versiunea" SQL2, specificaiile fiind prezentate la un nivel mult mai detaliat (dac SQL1 se
ntindea pe numai 100 de pagini, SQL2 a fost publicat n aproape 600). IBM a avut un aport
incontestabil la apariia i maturizarea SQL, fiind un productor cu mare influen n "lumea" SGBDurilor, iar produsul su, DB2, este unul din standardele de facto ale SQL.
Standardul SQL:1999 a fost amnat de cteva ori pn la publicarea sa, iar cea mai recent
versiune este SQL:2003. Principalele orientri ale SQL vizeaz transformarea acestuia ntr-un limbaj

Invmnt la distan Anul I 2008/2009

131

complet, n vederea definirii i gestionrii obiectelor complexe i persistente. Aceasta include:


generalizare i specializare, moteniri multiple, polimorfism, ncapsulare, tipuri de date definite de
utilizator, triggere (declanatoare) i proceduri stocate, suport pentru sisteme bazate pe gestiunea
cunotinelor, expresii privind interogri recursive i instrumente adecvate de administrare a datelor.
La momentul actual, SQL reprezint cel mai important limbaj actual n domeniul bazelor de
date, att prin gama comenzilor i opiunilor de care dispune, dar mai ales datorit faptului c s-a
reuit standardizarea sa i portarea pe toate Sistemele de Gestiune a Bazelor de date semnificative. Cu
att mai mult, cu ct, spre deosebire de majoritatea covritoare a altor limbaje, poate fi deprins relativ
uor de neinformaticieni i utilizat pentru chestiuni de mare finee de ctre profesioniti. Acest capitol
se dorete a fi o prezentare a elementelor eseniale prin care, dat fiind structura unei baze de date
relaionale, pot fi formulate interogri (fraze SELECT) prin care se obin rspunsuri la gam eterogen
de ntrebri. n plus, sunt evocate pe scurt comenzile pentru actualizarea unei tabele (INSERT,
UPDATE, DELETE), precum i cele de declarare a structurii bazei de date (CREATE TABLE).
Din punctul de vedere al utilizatorului final, obiectivul principal al SQL const n a oferi
utilizatorului mijloacele necesare formulrii unei consultri numai prin descrierea rezultatului dorit, cu
ajutorul unei aseriuni (expresie logic), fr a fi necesar i explicitarea modului efectiv n care se
face cutarea n BD. Altfel spus, utilizatorul calific (specific) rezultatul iar sistemul se ocup de
procedura de cutare.
Dei este referit, n primul rnd, ca un limbaj de interogare, SQL este mult mai mult dect un
instrument de consultare a bazelor de date, deoarece permite, n egal msur:

Definirea datelor
Consultarea BD
Manipularea datelor din baz
Controlul accesului
Partajarea bazei ntre mai muli utilizatori ai acesteia
Meninerea integritii BD.
Dei toate clasificrile l ncadreaz la limbaje de generaia a IV-a, SQL nu este, totui, un
limbaj de programare propriu-zis, prin comparaie cu Basic, Pascal, C, COBOL etc. SQL nu conine
(pn la SQL3) instruciuni/comenzi pentru codificarea secvenelor alternative i repetitive, cu att
mai puin faciliti de lucru cu obiecte vizuale, specifice formularelor de preluare a datelor (csuetext, butoane radio, liste, butoane de comand etc.). Din acest punct de vedere, poate fi referit ca sublimbaj orientat pe lucrul cu bazele de date. Comenzile sale pot fi, ns, inserate n programe redactate
n limbaje de programare "clasice".
Principalele atuuri ale SQL sunt:
1. Independena de productor, nefiind o tehnologie "proprietar".
2. Portabilitate ntre diferite sisteme de operare.
3. Este standardizat.
4. "Filosofia" sa se bazeaz pe modelul relaional de organizare a datelor.
5. Este un limbaj de nivel nalt, cu structur ce apropie de limba englez.
6. Furnizeaz rspunsuri la numeroase nterogri simple, ad-hoc, neprevzute iniial.
7. Constituie suportul programatic pentru accesul la BD.
8. Permite multiple imagini asupra datelor bazei.
9. Este un limbaj relaional complet.
10. Permite definirea dinamic a datelor, n sensul modificrii structurii bazei chiar n timp ce o parte
din utilizatori sunt conectai la BD.
11. Constituie un excelent suport pentru implementarea arhitecturilor client-server.

Instrumente software pentru afaceri

132

Principalele comenzi ale SQL, care se regsesc, ntr-o form sau alta, n multe dintre SGBDRurile actuale sunt prezentate n tabelul 6.1.
Tabel 6.1. Clase de comenzi SQL
Comand

Scop

Pentru manipularea datelor


SELECT
INSERT
DELETE
UPDATE

Extragerea datelor din BD


Adugarea de noi linii ntr-o tabel
tergerea de linii dintr-o tabel
Modificarea valorilor unor atribute

Pentru definirea bazei de date


Adugarea unei noi tabele n BD
CREATE TABLE
tergerea unei tabele din baz
DROP TABLE
Modificarea structurii unei tabele
ALTER TABLE
Crearea unei tabele virtuale
CREATE VIEW
tergerea unei tabele virtuale
DROP VIEW
Pentru controlul accesului la BD
Acordarea unor drepturi pentru utilizatori
GRANT
Revocarea unor drepturi pentru utilizatori
REVOKE
Pentru controlul tranzaciilor
Marcheaz sfritul unei tranzacii
COMMIT
Abandoneaz tranzacia n curs
ROLLBACK

6.2. CREAREA TABELELOR I DECLARAREA RESTRICIILOR


Limbajul SQL prezint o serie ntreag de opiuni care permit crearea tabelelor i modificarea
valorilor unor atribute pentru tuplurile unei relaii. Mai mult, standardul SQL dispune de opiuni clare
privind specificarea unor restricii legate de cheile primare, cheile strine etc. Baza de date pe care o
vom lua n discuie pe parcursul acestui capitol este cea prezentat n capitolul 4. Pentru crearea unei
tabele comanda SQL este, natural, CREATE TABLE prin care se declar numele tabelei, numele, tipul
i lungimea fiecrui atribut, precum i restriciile. Astfel, primele dou tabele din baza de date,
CODPOST_LOC i CLIENI pot fi create astfel:
CREATE TABLE codPost_loc (
CodPostal CHAR(6) CONSTRAINT pk_cp PRIMARY KEY,
Localitate CHAR (35) NOT NULL,
Judet CHAR(25) NOT NULL ) ;
CREATE TABLE clienti (
CodClient INTEGER CONSTRAINT pk_cp PRIMARY KEY,
NumeClient CHAR (30) NOT NULL CONSTRAINT un_numeclient UNIQUE,
Adresa CHAR(60),
CodPostal CHAR(6) NOT NULL CONSTRAINT ref_cl_codpost
REFERENCES codpost_loc (CodPostal) ) ;
Se pot observa cu uurin clauzele PRIMARY KEY folosite pentru declararea cheilor
primare, UNIQUE pentru cheile alternative, NOT NULL pentru interzicerea valorilor nule, precum i

Invmnt la distan Anul I 2008/2009

133

REFERENCES pentru declararea cheii strine. n plus, opiunea CONSTRAINT ne ajut s


botezm fiecare restricie dup cum dorim.
Spre deosebire de alte SGBD-uri, n ACCESS comenzile nu pot fi introduse direct, ci incluse
n module de program. Iat modulul CREARETABELE():
Sub CreareTabele()
Dim dbs As Database
'Set dbs = OpenDatabase("Z:\Medii_2006_ID\BD\vinzari.mdb")
Set dbs = CurrentDb
dbs.Execute "CREATE TABLE codPost_loc " _
& "(CodPostal CHAR(6) CONSTRAINT pk_cp PRIMARY KEY, " _
& " Localitate CHAR (35) NOT NULL, " _
& " Judet CHAR(25) NOT NULL) ; "
dbs.Execute "CREATE TABLE clienti " _
& "(CodClient INTEGER CONSTRAINT pk_cp PRIMARY KEY, " _
& " NumeClient CHAR (30) NOT NULL CONSTRAINT un_numeclient UNIQUE, " _
& " Adresa CHAR(60), " _
& " CodPostal CHAR(6) NOT NULL CONSTRAINT ref_cl_codpost REFERENCES codpost_loc (CodPostal) ) ;"
dbs.Execute "CREATE TABLE facturi " _
& "(NrFact INTEGER CONSTRAINT pk_facturi PRIMARY KEY, " _
& " CodClient INTEGER NOT NULL CONSTRAINT ref_fact_cl REFERENCES clienti (CodClient), " _
& " Data DATETIME NOT NULL, " _
& " ValoareTotala NUMERIC NOT NULL, " _
& " TVAColectata NUMERIC NOT NULL) ;"
End Sub

Dei n capitolul 4 spuneam c structura unei baze de date este constant, exist situaii n care
trebuie s:
- adugm un atribut;
- eliminm un atribut;
- schimbm tipul unui atribut;
- modificm lungimea unui atribut;
- s declarm o nou restricie
- s anulm o restricie n vigoare.
Deoarece baza de date este n uz, nu ne putem permite s tergem i apoi s recrem tabelele,
pentru c aceasta echivaleaz cu pierderea iremediabil a nregistrrilor existente. Aa c este necesar
folosirea comenzii ALTER TABLE. Dac n tabela CLIENI se dorete pstrarea i a codului fiscal al
fiecrui furnizor, este necesar adugarea atributului CodFiscal, care este un ir de caractere (un numr
precedat de litera R, dac clientul respectiv este pltitor de TVA) de lungime 10 caractere. Comanda
utilizat este:
ALTER TABLE CLIENI ADD CodFiscal CHAR(10)
n SQL tergerea unei tabele din baza de date este realizabil cu ajutorul comenzii DROP
TABLE. Iat cum ar putea lansate comenzile de tergere ale celor trei tabele pe care abia le-am creat
acum jumtate de pagin:
Sub StergeTabele()
Dim dbs As Database
Set dbs = OpenDatabase("Z:\ Medii_2006_ID\BD\vinzari.mdb")
dbs.Execute "DROP TABLE facturi ;"
dbs.Execute "DROP TABLE clienti ;"
dbs.Execute "DROP TABLE codpost_loc ;"
End Sub

Am trecut n revist pn n acest moment principalele clauze ale comenzii CREATE TABLE
(i ALTER TABLE) pentru declararea cheilor primare, alternative i strine, i valorilor nenule.

Instrumente software pentru afaceri

134

Nemeritat, a fost omis clauza CHECK prin care putem defini restricii utilizator sub forma regulilor
de validare la nivel de atribut sau nregistrare. Astfel, n tabela CLIENI valorile atributului CodClient
trebuie s nceap de la 1001, iar numele clientului se dorete a fi scris cu majuscule ntotdeauna.
Aceste dou reguli de validare pot fi definite n SQL att n momentul crerii:
CREATE TABLE clienti (
CodClient INTEGER CONSTRAINT pk_cp PRIMARY KEY
CONSTRAINT ck_codclient CHECK (CocClient > 1000),
NumeClient CHAR (30) NOT NULL CONSTRAINT un_numeclient UNIQUE
CONSTRAINT ck_numeclient CHECK (NumeClient = UPPER(NumeClient)),
Adresa CHAR(60),
CodPostal CHAR(6) NOT NULL CONSTRAINT ref_cl_codpost
REFERENCES codpost_loc (CodPostal) ) ;
ct i ulterior prin ALTER TABLE. Din pcate, ACCESSul nu este prea ngduitor n aceast privin,
clauza CHECK fiind interzis. Singura modalitate de declarare a regulilor este cea procedural:
Sub Reguli_Atribute()
Dim dbs As Database, tdf As TableDef, fld As Field
Set dbs = CurrentDb
' CLIENTI.CodClient > 1000
Set tdf = dbs.TableDefs("clienti")
Set fld = tdf.Fields("CodClient")
fld.ValidationRule = "[CodClient] > 1000"
fld.ValidationText = "Cel mai mic cod de client acceptat este 1001 !"
' CLIENTI.NumeClient se scrie numai cu majuscule
Set tdf = dbs.TableDefs("clienti")
Set fld = tdf.Fields("NumeClient")
fld.ValidationRule = "StrComp(UCase([NumeClient]), [NumeClient], 0) = 0"
fld.ValidationText = "Literele din numele clientului sunt obligatoriu majuscule !"
' Prima litera din CLIENTI.Adresa este majuscula. Restul, la alegere !
Set tdf = dbs.TableDefs("clienti")
Set fld = tdf.Fields("Adresa")
fld.ValidationRule = "StrComp(LEFT(UCase([Adresa]),1), LEFT([Adresa],1), 0) = 0"
fld.ValidationText = "Prima litera din adresa clientului trebuie sa fie majuscula !"
'Data facturii
Set tdf = dbs.TableDefs("facturi")
Set fld = tdf.Fields("Data")
fld.ValidationRule = "[Data] BETWEEN #1-1-2005# AND #12-31-2010# "
fld.ValidationText = "Data facturii trebuie sa se incadreze in intervalul 1 ian.2005 - 31 dec.2010 !"
End Sub

Despre reguli la nivel de nregistrare, ce s mai vorbim... Astfel, dac n tabela FACTURI s-ar
dori instituirea regulii dup care TVA-ul poate fi cel mult egal cu 0,19/1,19 din valoarea total a
fiecrei facturi (prietenii tiu de ce !), restricia ar putea fi definit la creare astfel:
CREATE TABLE facturi (
NrFact INTEGER CONSTRAINT pk_facturi PRIMARY KEY,
CodClient INTEGER NOT NULL CONSTRAINT ref_fact_cl REFERENCES clienti (CodClient),
Data DATE NOT NULL,
ValoareTotala NUMERIC NOT NULL,
TVAColectata NUMERIC NOT NULL),
CONSTRAINT ck_tva_valtot CHECK (TVAColectata <= ValoareTotala * 0.19 / 1.19) );
ACCESS-ul este, dup cum v imaginai, impasibil la graiile (de tip CHECK) ale SQL-ului,
aa c singura soluie e tot cea procedural:
Sub Regula_inregistrare()

Invmnt la distan Anul I 2008/2009

End Sub

135

Dim dbs As Database, tdf As TableDef


Set dbs = CurrentDb
Set tdf = dbs.TableDefs("facturi")
tdf.ValidationRule = "[TVAColectata] <= [ValoareTotala] * 0.19 / 1.19"
tdf.ValidationText = "TVA poate fi maxim 0,19/1,19 din valoarea totala a facturii !"

6.3. COMENZI DE ACTUALIZARE A TABELELOR


SQL prezint comenzi specifice pentru modificarea coninutului unei tabele, nelegnd prin
aceasta trei aciuni prin care se actualizeaz baza: a) adugarea de noi linii la cele existente ntr-o
tabel; b) tergerea unor linii, c) modificarea valorii unui atribut.

6.3.1. Adugare
S presupunem c, la un moment dat, ntreprinderea vinde produse i firmei RODEX SRL
care are sediul pe strada Sapienei, nr.44 bis, n localitatea Iai. Acest nou client trebuie "introdus" n
baza de date, operaiune care n SQL, se realizeaz prin comanda:
INSERT INTO clienti VALUES (1009, RODEX SRL, Sapienei, 44 bis, 706600)
Fraza INSERT de mai sus poate fi scris i sub forma:
INSERT INTO clienti (CodClient, NumeClient, Adresa, CodPostal)
VALUES (5009, RODEX SRL, Sapienei 44 bis, 706600)
Dup cum se observ, dup numele tabelei (CLIENI) au fost enumerate toate atributele
pentru care se introduc valori prin clauza VALUES. Dac nu s-ar fi cunoscut adresa clientului RODEX,
atunci fraza INSERT ar fi avut una din formele:
INSERT INTO clienti (CodClient, NumeClient, Adresa, CodPostal)
VALUES (5009, "RODEX SRL", NULL, 6600) sau
INSERT INTO clienti (CodClient, NumeClient, CodPostal) VALUES (5009, RODEX SRL, 6600)
n noua linie a tabelei CLIENI valoarea atributului Adresa va fi NULL.
Coninutul celor trei tabele din finalul capitolului 4 a fost realizat n ACCESS prin modulul
urmtor n care comanda INSERT este argumentul unei comenzi DoCmd.RunSQL:
Sub Inserturi()
' CODPOST_LOC
DoCmd.RunSQL ("INSERT INTO codPost_loc VALUES ('706600', 'Iasi', 'Iasi') ;")
DoCmd.RunSQL ("INSERT INTO codPost_loc VALUES ('706610', 'Iasi', 'Iasi') ;")
DoCmd.RunSQL ("INSERT INTO codPost_loc VALUES ('705300', 'Focsani', 'Vrancea') ;")
DoCmd.RunSQL ("INSERT INTO codPost_loc VALUES ('705725', 'Pascani', 'Iasi') ;")
DoCmd.RunSQL ("INSERT INTO codPost_loc VALUES ('706750', 'Tg.Frumos', 'Iasi') ;")
' CLIENTI
DoCmd.RunSQL ("INSERT INTO clienti VALUES (1001, 'TEXTILA SA', 'Bld. Copou, 87', '706600' );")
DoCmd.RunSQL ("INSERT INTO clienti VALUES (1002, 'MODERN SRL', 'Bld. Grii, 22', '705300' ) ;")
DoCmd.RunSQL ("INSERT INTO clienti VALUES (1003, 'OCCO SRL', NULL, '706610') ;")
DoCmd.RunSQL ("INSERT INTO clienti VALUES (1004, 'FILATURA SA', 'Bld. Unirii, 145', '705300' ) ;")
DoCmd.RunSQL ("INSERT INTO clienti VALUES (1005, 'INTEGRATA SA', 'I.V.Viteazu, 115', '705725' ) ;")
DoCmd.RunSQL ("INSERT INTO clienti VALUES (1006, 'AMI SRL', 'Galatiului, 72', '706750' );")
DoCmd.RunSQL ("INSERT INTO clienti VALUES (1007, 'AXON SRL', 'Silvestru, 2', '706610' ) ;")
DoCmd.RunSQL ("INSERT INTO clienti VALUES (1008, 'ALFA SRL', 'Prosperittii, 15', '705725' ) ;")
'FACTURI
DoCmd.RunSQL ("INSERT INTO facturi VALUES (111111, 1003, #6-17-2005#, 17000, 0) ;")

Instrumente software pentru afaceri

136

DoCmd.RunSQL ("INSERT INTO facturi VALUES (111112, 1001, #6-17-2005#,


DoCmd.RunSQL ("INSERT INTO facturi VALUES (111113, 1004, #6-18-2005#,
DoCmd.RunSQL ("INSERT INTO facturi VALUES (111114, 1003, #6-18-2005#,
DoCmd.RunSQL ("INSERT INTO facturi VALUES (111115, 1008, #6-18-2005#,
DoCmd.RunSQL ("INSERT INTO facturi VALUES (111116, 1008, #6-19-2005#,
DoCmd.RunSQL ("INSERT INTO facturi VALUES (111117, 1006, #6-20-2005#,
DoCmd.RunSQL ("INSERT INTO facturi VALUES (111118, 1007, #6-23-2005#,
DoCmd.RunSQL ("INSERT INTO facturi VALUES (111119, 1005, #6-24-2005#,
DoCmd.RunSQL ("INSERT INTO facturi VALUES (111120, 1003, #6-24-2005#,
DoCmd.RunSQL ("INSERT INTO facturi VALUES (111121, 1001, #6-24-2005#,
DoCmd.RunSQL ("INSERT INTO facturi VALUES (111122, 1007, #6-24-2005#,
DoCmd.RunSQL ("INSERT INTO facturi VALUES (111123, 1006, #6-25-2005#,
DoCmd.RunSQL ("INSERT INTO facturi VALUES (111124, 1004, #6-25-2005#,
DoCmd.RunSQL ("INSERT INTO facturi VALUES (111125, 1003, #6-30-2005#,
DoCmd.RunSQL ("INSERT INTO facturi VALUES (111126, 1002, #6-01-2005#,

2850, 0);")
5850, 0);")
2850, 0);")
35700, 0);")
8700, 0);")
1100, 0);")
15000, 0);")
4720, 0);")
3000, 0);")
4250, 0);")
8750, 0);")
66000, 0);")
38600, 0);")
1280, 0);")
54250, 0);")

End Sub

Dup cum se observ, deliberat TVA colectat este declarat zero la toate liniile inserate n
FACTURI. Aceasta pentru a avea motiv de modificare (UPDATE) vezi paragraful pe peste linia
curent.

6.3.2. Modificarea valorilor unor atribute


Pentru modificarea valorilor unuia sau multor atribute dintr-o tabel, comanda utilizat este
UPDATE care are formatul general: UPDATE tabel SET atribut = expresie WHERE predicat
Ca rezultat, vor fi modificate valorile atributului specificat, noile valori ale acestuia fiind cele
care rezult n urma evalurii expresiei; modificarea se va produce pe toate liniile tabelei care
ndeplinesc condiia specificat n predicat. Astfel comanda:
UPDATE facturi SET TVAColectata = INT(ValoareTotala * 19 / 1.19) / 100
va stabili valoarea TVA colectat pentru toate facturile (lipsete clauza WHERE, deci vor fi afectate
toate liniile din tabela FACTURI) pe 0.19/1.19 din valoarea total a fiecrei facturi. Funcia INT
extrage doar partea ntreag dintr-un numr real (se elimin, deci, partea fracionar), iar prin
mprirea rezultatului la 100 ne asigurm c TVA va avea dou poziii la partea fracionar.
n ACCESS aceast actualizare se poate face n dou moduri. Grafic, putem creea o interogare
de tip pe calapodul clasic al construirii machetelor (prezentat n paragraful 5.4), dup aducerea
tabelei FACTURI n machet, selectnd din meniul Query Type a opiunii Update Query vezi
partea stng a figurii 6.2. Partea dreapt a figurii prezenta noua form a machetei, n care apare linia
Update To i dispar Sort i Show. La rubrica Update To se introduce expresia de calcul a valorilor
atributului TVAColectat. Cea de-a dou modalitate este cea procedural, comanda prin care se
lanseaz UPDATE-rile fiind, ca i in cazul inserrii, DoCmd.RunSQL.
Sub Updateuri()
DoCmd.RunSQL ("UPDATE facturi SET TVAColectata = INT(ValoareTotala * 19 / 1.19) / 100 ;")
DoCmd.RunSQL ("UPDATE facturi SET TVAColectata = 0 WHERE NrFact = 111117 ;")
DoCmd.RunSQL ("UPDATE facturi SET TVAColectata = INT(ValoareTotala * 9 / 1.09) / 100 " & _
" WHERE NrFact IN (111118, 111122) ;")
End Sub

Invmnt la distan Anul I 2008/2009

137

Figura 6.2. Interogare de modificare


Modulul de mai sus, specific ACCESSului conine, pe lng comanda UPDATE explicat,
alte dou, prin care facturii 111117 i este declarat procentul zero de TVA, iar a doua indic faptul c
toate produsele/serviciile din facturile 111118 i 111122 au procentul de TVA de 9%. Dei cei mai
muli utilizatori ar opta pentru varianta grafic, va asigurm c varianta procedural este mai
productiv atunci cnd sunt necesare actualizri repetate, aa cum este cazul de mai sus.

6.3.3. tergeri
Operaiunea de eliminarea a una sau mai multe linii dintr-o tabel, pe baza unui predicat, se
realizeaz n SQL prin comanda DELETE care are sintaxa: DELETE FROM nume-tabel WHERE predicat
Dac am dori s eliminm din tabela CLIENI linia aferent clientului MODERN SRL (cod
1002), comanda ar fi:
DELETE FROM clienti WHERE CodClient = 1002
n ACCESS, similar interogrilor pentru modificare pot fi create i interogri pentru tergere,
n care se specific criteriul pe care trebuie s-l satisfac liniile pentru a fi terse din tabela indicat
(fiind n criz de spaiu, nu vom mai prezenta nici o figur n acest scop). Prin program, dac am dori
eliminarea tuturor nregistrrilor din tabelele bazei, apoi re-adugarea i re-modificarea lor, ne-am
putea servi de blocul urmtor:
Sub Stergeri()
DoCmd.RunSQL ("DELETE FROM facturi ;")
DoCmd.RunSQL ("DELETE FROM clienti ;")
DoCmd.RunSQL ("DELETE FROM codPost_loc ;")
Call Inserturi
Call Updateuri
End Sub

6.4. STRUCTURA DE BAZ A FRAZEI SELECT


Fr ndoial, cea mai gustat parte din SQL este cea legat de interogarea bazei, adic de
obinerea de informaii din cele mai diverse, prin prelucrri, grupri etc. Ceea ce a fost prezentat n
paragraful 5.4 este doar o prticic din ceea ce poate fi stors dintr-o baz de date. Aadar, n SQL o

Instrumente software pentru afaceri

138

interogare se formuleaz printr-o fraz SELECT. Aceasta prezint trei clauze principale: SELECT,
FROM i WHERE.

SELECT este utilizat pentru desemnarea listei de atribute (coloanele) din rezultat;

FROM este cea care permite enumerarea relaiilor din care vor fi extrase informaiile aferente
consultrii;

prin WHERE se desemneaz condiia (predicatul), simpl sau complex, pe care trebuie s le
ndeplineasc liniile tabelelor (enumerate n clauza FROM) pentru a fi extrase n rezultat.
La modul general (i simplist) o consultare simpl n SQL poate fi prezentat astfel: SELECT

C1, C2, ..., Cn FROM R1, R2, ..., Rm WHERE P.


Execuia unei fraze SELECT se concretizeaz n obinerea unui rezultat de forma unei tabele
(relaii). Cnd clauza WHERE este omis, se consider implicit c predicatul P are valoarea logic
"adevrat". Dac n locul coloanelor C1, C2, ... Cn apare simbolul "*", n tabela-rezultat vor fi incluse
toate coloanele (atributele) din toate relaiile specificate n clauza FROM. De asemenea, n tabelarezultat, nu este obligatoriu ca atributele s prezinte nume identic cu cel din tabela enumerat n clauza
FROM. Schimbarea numelui se realizeaz prin opiunea AS.
Uneori, rezultatul interogrii "ncalc" poruncile modelului relaional. Conform restriciei de
entitate, ntr-o relaie nu pot exista dou linii identice. Or, n SQL, rezultatul unei consultri poate
conine dou sau mai multe tupluri identice. Pentru eliminarea liniilor identice este necesar utilizarea
opiunii DISTINCT: SELECT DISTINCT C1, C2, ..., Cn FROM R1, R2, ..., Rm WHERE P
Am nceput acest capitol prin a arta fraza SELECT care se ascunde n spatele unei consultri
grafice ACCESS. Fraza:
SELECT facturi.NrFact, facturi.Data, [ValoareTotala]-[TVAColectata] AS ValFaraTVA,
facturi.TVAColectata, facturi.ValoareTotala
FROM facturi WHERE (((facturi.Data)>#6/20/2005#));
conine i un cmp calculat ValFrTVA, al crui nume se specific prin clauza AS, i ale crui valori
se determin prin relaia ValoareTotal TVAColectat. Predicatul de selecie (clauza WHERE) asigur
extragerea n rezultat doar a facturilor emise dup 20 iunie 2005.
Cum se poate introduce o interogare n ACCESS fr a o desena cu proiectantul de machete
pentru interogri prezentat n paragraful 5.4 ? Mai nti crem o interogare foarte simpl s-i zicem
INTEROG. Dup modelul indicat n stnga figurii 6.3 i vizualizm definiia folosind opiunea SQL
View, iar apoi n fereastra care apare nlocuim fraza SELECT cu cea care ne intereseaz (fraz care nu
are, probabil, nici o legtur cu definiia actual a interogrii), dup care se apas butonul Run
(semnul mirrii).
Iar dac vrem s facem acelai lucru prin program, folosim modulul urmtor:
Sub interogareBETWEEN()
Dim consultare As QueryDef
Set consultare = CurrentDb.QueryDefs("interog")
consultare.SQL = "SELECT * FROM facturi WHERE nrfact BETWEEN 111120 AND 111124 ; "
DoCmd.OpenQuery ("interog")
End Sub

Modulul interogareBETWEEN() declar (prin Dim) obiectul consultare ca fiind definiia unei
interogri (QueryDef), preia (prin comanda Set) n consultare fraza SELECT care constituie definiia

Invmnt la distan Anul I 2008/2009

139

interogrii create anterior interog , modific definiia acestea prin linia consultare.SQL = SELECT
i, n final, execut noua variant a interogrii, rezultatul fiind similar variantei din figura 6.3.

Figura 6.3. Schimbarea definiiei unei interogri i re-execuia sa


Firete, noile definiii pot fi salvate sau se poate renuna la ele, mai ales atunci lucrm cu
module ce pot apelate ori de cte ori este nevoie.
Operatorul BETWEEN
Fraza SELECT de mai sus conine operatorul BETWEEN care va extrage din tabel numai
facturile cu numerele cuprinse ntre 111120 i 111124. Fr BETWEEN predicatul ar trebuit scris
WHERE nrfact >= 111120 AND nrfact <= 111124.
Operatorul LIKE
Operatorul LIKE se folosete pentru a compara un atribut de tip ir de caractere (ex.
NumeClient, Adresa, Localitate) cu un literal (constant de tip ir de caractere). Astfel, dac se dorete
obinerea unei tabele-rezultat care s conin numai clienii ai cror nume ncepe cu litera M, putem
scrie predicatul din clauza WHERE sub forma: NumeClient LIKE "M%". Deoarece dup litera M apare
semnul "%" (sau *), se vor extrage din tabela CLIENI toate tuplurile pentru care valoarea
atributului NumeClient ncepe cu litera M, indiferent de lungimea acestuia (ex. MELCRET, MIGAS,
MITA, MATSUSHITA etc.). Despre semnul "%" (sau *) se spune c este un specificator multiplu,
joker sau masc. Un alt specificator multiplu utilizat n multe versiuni SQL este liniua-de-subliniere
("_") sau semnul de ntrebare (?). Spre deosebire de "%", "_" substituie un singur caracter. Diferena
dintre cei doi specificatori multipli este pus n eviden n continuare. Astfel, dac intereseaz care
sunt clienii ai cror nume ncepe cu litera A i sunt societi cu rspundere limitat (SRL-uri), fraza
SELECT care furnizeaz rspunsul este:
SELECT * FROM CLIENI WHERE NumeClient LIKE "A__ SRL%"
(vezi partea stng a figurii 6.4). Dac s-ar fi utilizat simbolul "%" de maniera urmtoare:
SELECT * FROM CLIENI WHERE NumeClient LIKE "A%SRL%"
rezultatul ar fi fost cel din partea dreapt a figurii.

Instrumente software pentru afaceri

140

Figura 6.4. Folosirea specificatorilor multipli


n concluzie, "_" sau ? nlocuiesc (substituie) un singur caracter, n timp ce "%" sau *
nlocuiesc un ir de caractere de lungime variabil (ntre 0 i n caractere). Cei doi specificatori multipli
pot fi utilizai mpreun.
Operatorul IN
Un alt operator util este IN cu formatul general: expresie1

IN

(expresie2, expresie3, ...).

Rezultatul evalurii unui predicat ce conine acest operator va fi "adevrat" dac valoarea expresiei1
este egal cu (cel puin) una din valorile: expresie2, expresie3, ...
Spre exemplu, pentru a afla care sunt clienii din localitile din judeele Iai i Vaslui, fr
utilizarea operatorului IN se scrie:
SELECT * FROM codpost_loc WHERE Judet = 'Iasi' OR Judet = 'Vaslui'
Iar utiliznd IN:
SELECT * FROM codpost_loc WHERE Judet IN ("Iasi", "Vaslui")
Operatorul IS NULL
O valoare nul este o valoare nedefinit. Este posibil ca la adugarea unei linii ntr-o tabel,
valorile unor atribute s fie necunoscute. n aceste cazuri valoarea atributului pentru tuplul respectiv
este nul. Reamintim c, prin definiie, nu se admit valori nule pentru grupul atributelor care constituie
cheia primar a relaiei. Pentru aflarea clienilor pentru care nu s-a introdus adresa, se poate scrie:
SELECT * FROM clienti WHERE Adresa IS NULL
Cum n baza noastr de date, numai clientului OCCO SRL nu-i cunoatem adresa, rezultatul
interogrii este cel din figura 6.5 (n ACCESS valorile NULL se afieaz ca i cum ar conine spaii).

Figura 6.5. Extragerea valorilor NULLe


Observaii
Valoarea NULL nu se confund cu valoarea zero (pentru atributele numerice) sau cu valoarea
"spaiu" (pentru atributele de tip ir de caractere)
Operatorul NULL se utilizeaz cu IS i nu cu semnul "=". Dac s-ar utiliza expresia = NULL i nu
expresia IS NULL, rezultatul evalurii va fi ntotdeauna fals, chiar dac expresia nu este nul !
Opiunile DISTINCT i ORDER BY
Dorim s aflm judeele n care firma are clieni. Este necesar parcurgerea relaiei
CODPOST_LOC, singurul atribut care intereseaz fiind Jude:
SELECT DISTINCT Judet FROM codpost_loc
Dup cum se observ n partea stng a figurii 6.6, SQL nu elimin dublurile automat, iar dac
se dorete ca n tabela-rezultat o localitate s figureze o singur dat, se utilizeaz opiunea DISTINCT
(rezultatul n dreapta figurii 6.6):
SELECT DISTINCT Judet FROM codpost_loc

Invmnt la distan Anul I 2008/2009

Figura 6.6. Fr i cu DISTINCT

141

Figura 6.7. Clauza ORDER BY

n continuare vrem s obinem denumirea fiecrei localiti i judeul n care se afl, dar liniile
rezultatului trebuie ordonate n funcie de jude i, n cadrul aceluiai jude, n ordinea invers a
localitii (de la Z la A), fraza SELECT se formuleaz dup cum urmeaz, rezultatul fiind prezentat n
figura 6.7.

SELECT DISTINCT Localitate, Judet FROM codpost_loc


ORDER BY Judet ASC, Localitate DESC
Opiunile ASCENDING (cresctor) i DESCENDING (descresctor) indic deci modul n care se
face ordonarea tuplurilor tabelei-rezultat al interogrii. Prioritatea de ordonare este stabilit prin
ordinea atributelor specificate n ORDER BY: ordonarea "principal" se face n funcie de valorile
primului atribut specificat; n cadrul grupelor de tupluri pentru care valoarea primului atribut este
identic, ordinea se stabilete dup valoarea celui de-al doilea atribut specificat .a.m.d. Dac n
ORDER BY lipsesc opiunile ASCENDING/DESCENDING, ordonarea se face cresctor.

6.5. JONCIUNI
Dup cum afirmam i n paragraful 5.4 majoritatea informaiilor obinute dintr-o baz de date
necesit rsfoirea simultan a dou sau mai multe tabele. Interogarea Fac_dupa20iunie2005v2 din
figura 5.41 folosete trei tabele. Folosind opiunea SQLView obinem o fraz SELECT cu totul
remarcabil:
SELECT facturi.NrFact, facturi.Data, clienti.NumeClient, codPost_loc.Localitate,
[ValoareTotala]-[TVAColectata] AS Expr1, facturi.TVAColectata, facturi.ValoareTotala, *
FROM (codPost_loc INNER JOIN clienti ON codPost_loc.CodPostal = clienti.CodPostal)
INNER JOIN facturi ON clienti.CodClient = facturi.CodClient
WHERE (((facturi.NrFact)>#6/20/2005#) AND ((codPost_loc.Localitate)="Iasi"));
Clauza FROM vine acum n centrul ateniei prin apariia clauzei INNER JOIN. Iat cum stau
lucrurile: deoarece n lista pe care vrem s obinem se gsesc atribute plasate n cele trei tabele, n
clauza FROM trebuie enumerate cele trei numere; n fapt, dup cum am vzut n capitolul 4, cele trei
tabele prin legate prin restricii refereniale, atributele de legtura fiind cheile strine cheile primare.
Astfel, legtura dintre FACTURI i CLIENI se poate realiza prin intermediul atributului CodClient
care este cheie primar n CLIENI (tabela printe) i cheie strin n FACTURI (tabela copil).
Legtura dintre aceste dou tabele care prezint un cmp comun se numete jonciune i se
simbolizeaz n SQL prin INNER JOIN:
SELECT *
FROM facturi INNER JOIN clienti ON facturi.CodClient=clienti.CodClient

142

Instrumente software pentru afaceri

Fr a intra n prea multe detalii teoretice, reinem c, ori de cte ori informaiile necesare i
condiiile pe care trebuie s le ndeplineasc acele informaii privesc atribute aflate n tabele diferite,
trebuie fcut jonciunea acestor tabele. Cnd tabele nu pot fi joncionate direct, trebuie aduse cu
fora n clauza FROM i tabelele care s completeze lanul.
Ne intereseaz, spre exemplu, numrul i data facturilor emise clienilor din judeul Iai.
Numrul i data facturilor se gsesc n tabela FACTURI (atributele NrFact i Data), ns pentru
denumirea judeului exist un atribut (Judet) n tabela CODPOST_LOC. Cele dou tabele nu pot fi
joncionate direct, aa nct atragem n interogare i cea de-a treia tabel CLIENI:
SELECT NrFact, Data
FROM (facturi INNER JOIN clienti ON facturi.codclient=clienti.codclient)
INNER JOIN codpost_loc ON codpost_loc.codpostal=clienti.codpostal
WHERE judet=Iasi
ORDER BY NrFact
Scris sub form de modul ACCESS InterogareJONCTIUNE1() i lansat prin apsarea
butonului Run, fraza SELECT obine rezultatul este cel din figura 6.8.

Figura 6.8. Un modul ACCESS cu fraz SELECT ce joncioneaz cele trei tabele (plus rezultatul)
Lsam s se neleag, la un moment dat, c n SQL pot fi formulate interogri mult mai
complexe dect se poate realiza cu ajutorul machetei din paragraful 5.4. Haidei s lum o asemenea
problem, ce-i drept nu att de complicat precum ameninam: Care sunt facturile emise n aceeai zi
ca i factura 111113 ? Dificultatea ine de faptul c cerina este formulat indirect, adic vrem s
aflm facturile emise ntr-o zi (Data), dar noi nu tim data etalon, ci factura-etalon.
Problema propus poate fi rezolvat relativ uor folosind o subconsultare, dup cum va fi
prezentat ntr-un paragraf viitor. Pn una-alta, soluia pe care o avem n acest moment la ndemn se
bazeaz pe autojonciune. Autojonciunea nseamn jonciunea unei tabele (FACTURI) cu ea-nsi,
practic, jonciunea a dou instane ale unei aceleai tabele. Pentru a jonciune cele dou instane
trebuie s aib pseudonime (aliasuri) diferite, n cazul nostru F1 i F2. ntruct ne intereseaz facturi
emise n aceeai zi cu 111113, autojonciunea se face dup atributul Data:
SELECT *
FROM facturi F1 INNER JOIN facturi F2 ON F1.data=F2.data
WHERE F2.NrFact = 111113

Invmnt la distan Anul I 2008/2009

143

Iat rezultatul vezi figura 6.9. Rezultatul conine 10 coloane, cinci din prima instan a
tabelei FACTURI (F1) i cinci din a doua instan (F2). ACCESSul e destul de inspirat s scrie
naintea fiecrui atribut din ce instan provine.

Figura 6.9. Facturile emise n aceeai zi ca i 111113


Toate liniile rezultatului respect condiia de jonciune - F1.data=F2.data. Jumtatea din dreapta
a coloanelor se refer strict la factura etalon 111113, iar cea din stnga la facturile din aceeai zi cu
111113, inclusiv factura-etalon. Pentru a rspunde punctual la problem, precizm atributele
(coloanele) care ne intereseaz i eliminm din rezultat factura 111113:
SELECT F1.NrFact, F1.Data
FROM facturi F1 INNER JOIN facturi F2 ON F1.data=F2.data
WHERE F2.NrFact = 111113 AND F1.NrFact <> 111113

6.6. FUNCII-AGREGAT: COUNT, SUM, AVG, MAX, MIN


Cu funciile agregat facem un prim pas spre analiza datelor din baz. Li se spune funcii
agregat deoarece, n absena gruprii (clauza GROUP BY vezi ultimul paragraf din acest capitol)
rezultatul unei asemenea funcii are forma unei tabele cu o singur linie.
Funcia COUNT
Contorizeaz valorile unei coloane, altfel spus, numr, ntr-o relaie, cte valori diferite de
NULL are coloana specificat. Dac n locul unui atribut apare semnul asterisc (*) se numr liniile
rezultatului. Astfel, dac vrem s aflm ci clieni are firma vom folosi interogarea (rezultatul su se
afl in stnga figurii 6.10).
SELECT COUNT (CodClient) AS Nr_Clienti1, COUNT (*) AS Nr_Clienti2 FROM clienti

Figura 6.10. Nite COUNT-uri


Teoretic, n tabela CLIENI pot aprea i clieni crora nc nu li s-a trimis nc nici o factur.
Dac vrem s aflm rspunsul la ntrebarea: La ci clieni s-au trimis facturi ?, am fi tentai s
folosim interogarea:
SELECT COUNT () AS NrClienti1, COUNT(CodClient) AS NrClienti2
FROM clienti INNER JOIN facturi ON clienti.CodClient=facturi.CodClient
care, ns, ne va furniza un rspuns eronat (vezi partea dreapt a figurii 6.10). n produsele care
respect recomandrile standardelor SQL, rezultatul corect poate fi ns obinut prin utilizarea clauzei
DISTINCT astfel:
SELECT COUNT (DISTINCT CodClient) FROM facturi
n ACCESS aceast opiune nu este acceptat, aa nct mai ateptm pn la paragraful
dedicat subconsultrilor.
Funcia SUM

Instrumente software pentru afaceri

144

Funcia SUM calculeaz suma valorilor unei coloane. Pentru a afla suma valorilor totale ale
facturilor, soluia este ct se poate de simpl:
SELECT SUM (ValoareTotala) AS Total_ValoriFacturi FROM facturi
iar totalul valorilor pentru facturile trimise clientului AXON SRL este obinut astfel:
SELECT SUM (ValoareTotala) AS Total_Fact_AXON
FROM facturi INNER JOIN clienti ON facturi.CodClient = clienti.CodClient
WHERE NumeClient = AXON SRL
Funciile MAX i MIN
Determin valorile maxime, respectiv minime ale unei coloane n cadrul unei tabele. Valorile
cea mai mic i cea mai mare ale unei facturi se afl astfel:
SELECT MIN(ValoareTotala), MAX(ValoareTotala) FROM facturi
Atenie ! La ntrebarea Care este factura emis cu cea mai mare valoare ? nu putem rspunde
deocamdat. Varianta urmtoare nu este corect: SELECT NrFactura, MAX(ValoareTotala ) FROM facturi
La execuia acestei interogri se afieaz un mesaj de eroare, soluia problemei fiind posibil
ceva mai pe finalul capitolului.

6.7. SUB-CONSULTRI. OPERATORUL IN


O alt facilitate deosebit de important a limbajului SQL o constituie posibilitatea includerii
(imbricrii) a dou sau mai multe fraze SELECT, astfel nct pot fi formulate interogri cu mare grad
de complexitate. Operatorul cel mai des ntrebuinat este IN. Astfel, revenind la o problem anterioar Care sunt facturile emise n aceeai zi n care a fost ntocmit factura 111113 ? n locul epuizantei
auto-jonciuni putem recurge la subconsultare:
SELECT * FROM facturi WHERE NrFact <> 111113 AND Data IN
(SELECT Data FROM facturi WHERE NrFact=111113)
Sub-consultarea SELECT Data FROM facturi WHERE NrFact = 111113 are ca rezultat o tabel
alctuit dintr-o singur coloan (Data) i o singur linie ce conine valoarea atributului Data pentru
factura 111113, ca n stnga figurii 6.11. Clauza WHERE Data IN determin cutarea n tabela
FACTURI a tuturor tuplurilor (liniilor) care au valoarea atributului Data egal cu una din valorile
tuplurilor (n cazul nostru, egal cu valoarea tuplului) din tabela obinut prin "sub-consultare" (n
cazul nostru, tabela din stnga figurii). Cu alte cuvinte, n acest caz WHERE Data IN va selecta toate
facturile pentru care data emiterii este 18/06/2005 partea dreapt a figurii 6.11.

Figura 6.11 Rezultatul sub-consultrii (stnga) i al interogrii


Dac s-ar schimba condiia de selecie, n sensul c ne-ar interesa facturile emise n alte zile
dect cea n care a fost ntocmit factura 111113 operatorul de sub-consultare va fi NOT IN:
SELECT * FROM facturi WHERE Data NOT IN
(SELECT Data FROM facturi WHERE NrFact = 111113)
Ca s ncheiem paragraful cu o interogare mai prezentabil, ne intereseaz clienii crora li
s-au trimis facturi ntocmite n aceeai zi cu factura 111113:

Invmnt la distan Anul I 2008/2009

145

SELECT DISTINCT NumeClient FROM clienti WHERE CodClient IN


(SELECT CodClient FROM facturi WHERE Data IN
(SELECT Data FROM facturi WHERE NrFact = 111113))
Am ilustrat modul n care pot fi imbricate (nlnuite, incluse) trei fraze SELECT.

6.8. REUNIUNE, INTERSECIE, DIFEREN


Operatorul pentru reuniune este deci UNION. De remarcat c, la reuniune, SQL elimin
automat dublurile, deci nu este necesar utilizarea clauzei DISTINCT. Operatorul UNION este prezent n
toate SGBD-urile importante. Dac dou relaii, R1 i R2 sunt uni-compatibile, adic au acelai numr
de atribute care corespund sintactic (adic primul atribut din R1 este de acelai tip cu primul atribut
din R2), se poate scrie SELECT * FROM R1 UNION SELECT * FROM R2.
n ceea ce ne privete, vrem s aflm cum se numesc clienii crora le-am emis facturi pe 23
sau pe 24 iunie 2005, avem la dispoziie dou variante, una bazat pe operatorul logic OR:
SELECT DISTINCT NumeClient FROM clienti WHERE CodClient IN
(SELECT DISTINCT CodClient FROM facturi
WHERE Data = #6/23/2005# OR Data = #6/24/2005#)
i o alta bazat pe reuniune:
SELECT DISTINCT NumeClient FROM clienti WHERE CodClient IN
(SELECT DISTINCT CodClient FROM facturi WHERE Data = #6/23/2005# )
UNION
SELECT DISTINCT NumeClient FROM clienti WHERE CodClient IN
(SELECT DISTINCT CodClient FROM facturi WHERE Data = #6/24/2005#)
Pentru realizarea interseciei a dou tabele unicompatibile, R1 i R2, n standardele SQL a fost
introdus operatorul INTERSECT: SELECT * FROM R1 INTERSECT SELECT * FROM R2. Dac n
produsele profesionale, precum DB2 (IBM) sau Oracle operatorul este prezent, n schimb multe din
cele din categoria uoar, precum Visual Fox Pro i ACCESS INTERSECT rmne un deziderat,
funcionalitatea sa realizndu-se prin subconsultri (operatorul IN) sau, uneori, prin jonciune. Astfel,
dac dorim s aflm cum se numesc clienii crora le-am emis facturi i pe 23 i pe 24 iunie 2005,
soluia cea mai la ndemn n ACCESS este:
SELECT DISTINCT NumeClient FROM clienti WHERE CodClient IN
(SELECT DISTINCT CodClient FROM facturi WHERE Data = #6/23/2005# )
AND CodClient IN
(SELECT DISTINCT CodClient FROM facturi WHERE Data = #6/24/2005#)
Diferena dintre tabelele R1 i R2 (unicompatibile) se realizeaz utiliznd operatorul MINUS
sau EXCEPT, ns implementrile sunt similare operatorului INTERSECT. Astfel, pentru a obine
clienii crora le-am emis facturi i pe 24, dar nu i pe 24 iunie 2005, soluia ACCESS este:
SELECT DISTINCT NumeClient FROM clienti WHERE CodClient IN
(SELECT DISTINCT CodClient FROM facturi WHERE Data = #6/24/2005# )
AND CodClient NOT IN
(SELECT DISTINCT CodClient FROM facturi WHERE Data = #6/23/2005#)

6.9. GRUPAREA TUPLURILOR. CLAUZELE GROUP BY I HAVING

Instrumente software pentru afaceri

146

n paragraful 5.4 fceam cunotin cu o prim interogare n care era necesar gruparea
liniilor. Ne interesa valoarea zilnic a vnzrilor ntr-o anumit perioad, iar cadrul construirii
interogrii (VinzariPeZile_interval_la_alegere) lua forma din figura 5.42. Folosind din nou opiunea
SQL View s vedem fraza SELECT ce se ascunde n spatele machetei:
SELECT facturi.Data, Sum(facturi.TVAColectata) AS SumOfTVAColectata,
Sum(facturi.ValoareTotala) AS SumOfValoareTotala,
Sum([ValoareTotala]-[TVAColectata]) AS ValFaraTVA
FROM facturi
GROUP BY facturi.Data
HAVING (((facturi.Data) Between [Data initiala:] And [Data finala:]))
ORDER BY facturi.Data;
SQL permite utilizarea clauzei GROUP BY pentru a forma grupe (grupuri) de tupluri ale unei
relaii, pe baza valorilor comune ale unei coloane. n frazele SELECT formulate pn n acest paragraf,
prin intermediul clauzei WHERE au fost selectate tupluri din diferite tabele. Prin asocierea unei clauze
HAVING la o clauz GROUP BY este posibil selectarea anumitor grupe de tupluri ce ndeplinesc un
criteriu.
Clauza GROUP BY
Rezultatul unei fraze SELECT ce conine aceast clauz este o tabel care va fi obinut prin
regruparea tuturor liniilor din tabelele enumerate n FROM, care prezint o aceeai valoare pentru o
coloan sau un grup de coloane. Formatul general este:
SELECT coloan 1, coloan 2, ...., coloan m FROM tabel GROUP BY coloan-de-regrupare
Simplificm problema, dorind o list cu are este totalul zilnic al valorii facturilor emise. Fraza
este ceva mai simpl:
SELECT Data, SUM (ValoareTotala) AS Total_Zilnic FROM facturi GROUP BY Data
Tabela-rezultat va avea un numr de linii egal cu numrul de date calendaristice distincte din
tabela FACTURI. Pentru toate facturile aferente unei zile se va calcula suma valorilor, datorit
utilizrii funciei SUM(ValoareTotala). Succesiunea pailor este urmtoarea:
1. Se ordoneaz liniile tabelei FACTURI n funcie de valoarea atributului Data - figura 6.12.

Figura 6.12. Pasul 1 al gruprii

Figura 6.13. Al doilea pas al gruprii

2. Se formeaz cte un grup pentru fiecare valoare distinct a atributului Data - vezi figura 6.13.
3. Pentru fiecare din cele nou grupuri se calculeaz suma valorilor atributului ValoareTotala. Tabela
rezultat va avea nou linii, ca n figura 6.14.

Invmnt la distan Anul I 2008/2009

Figura 6.14. Rezultatul final al gruprii

147

Figura 6.15. Zilele cu vnzri mai mari de 40000 RON

Dac intereseaz este numrul facturilor emise pentru fiecare client, rspunsul poate fi obinut
prin interogarea:
SELECT NumeClient, COUNT(NrFact) AS NrFacturi_pe_Client
FROM facturi INNER JOIN clienti ON facturi.CodClient = clienti.CodClient
GROUP BY NumeClient
Pn la standardul SQL:1999 i publicarea Amendamentului OLAP la acest standard, n SQL
nu puteau fi calculate, prin GROUP BY, subtotaluri pe mai multe niveluri. Pentru aceasta este necesar
scrierea de programe n SGBD-ul respectiv.
Clauza HAVING
Clauza HAVING permite introducerea unor restricii care sunt aplicate grupurilor de tupluri,
deci nu tuplurilor "individuale", aa cum "face" clauza WHERE. Din tabela rezultat sunt eliminate
toate grupurile care nu satisfac condiia specificat. Clauza HAVING "lucreaz" mpreun cu o clauz
GROUP BY, fiind practic o clauz WHERE aplicat acesteia. Formatul general este:
SELECT coloan 1, coloan 2, .... , coloan m FROM tabel
GROUP BY coloan-de-regrupare HAVING caracteristic-de-grup
Pentru facturile emise intereseaz valoarea zilnic a acestora (n funcie de data la care au fost
ntocmite), dar numai dac aceasta (valoarea zilnic) este de mai mare de 40000 lei noi (RON).
SELECT Data, SUM(ValoareTotala) AS Vinzari_Zilnice
FROM facturi GROUP BY Data HAVING SUM(ValoareTotala) > 40000
La execuia acestei fraze, se parcurg cei trei pai descrii la nceputul acestui paragraf, apoi,
dintre cele nou tupluri obinute prin grupare, sunt extrase numai cele care ndeplinesc condiia
SUM(ValoareTotala) > 40000. Rezultatul final este cel din figura 6.15.
i acum, o interogare cu adevrat interesant: S se afieze ziua n care s-au ntocmit cele mai
multe facturi ! Iat soluia:
SELECT Data, COUNT(*) AS nr_facturilor FROM facturi
GROUP BY Data HAVING COUNT(*) >= ALL
(SELECT COUNT(*) FROM facturi GROUP BY Data)

Figura 6.16. Clauza HAVING cu folosirea unei subconsultri

148

Instrumente software pentru afaceri

Avem de-a face cu o subconsultare al crei rezultat (stnga figurii 6.16) servete drept termen
de comparaie al predicatului (condiiei) formulat n clauza HAVING.
Cam att pentru acest capitol, disciplin, semestru (informatic) i an (tot informatic) ! V
mulumim pentru rbdare, i v asigurm c cine a ajuns cu cititul (i nelesul) pn n acest punct, are
toate ansele unui examen ncununat de succes.

Rezumat
nc de la apariia bazelor de date s-a pus problema elaborrii unui limbaj universal acceptat
care s permit lucrul cu bazele de date, n sensul crerii obiectelor din baz, ct mai
ales extragerii informaiilor.
SQL reprezint cel mai rspndit limbaj de interogare a bazelor de date, fiind prezent n toate
SGBD-urile importante la aceast or. Standardele SQL considerate decisive n evoluia
bazelor de date: SQL-92, SQL:1999 i SQL:2003.
SQL pune la dispoziie comenzi att pentru crearea tabelelor i modificarea structurii:
CREATE TABLE, ALTER TABLE, ct i pentru modificarea lor: INSERT, UPDATE,
DELETE. Cea mai important comand este SELECT.
Structura de baz a interogrilor, adic a frazei SELECT cuprinde, obligatoriu clauzele
SELECT - n care sunt enumerate atributele i expresiile ce vor constitui coloanele
rezultatului i FROM - n care se specific tabelele n care se gsesc atributele extrase n
rezultat sau asupra crora se formuleaz condiiile din clauza WHERE.
n multe situaii, obinerea informaiilor reclam joncionarea a dou sau mai multe tabele din
baza de date, precum i folosirea subconsultrilor, operatorul tradiional fiind IN.
Obinerea informaiilor sintetice presupune folosirea funciilor agregat: COUNT, SUM, AVG,
MIN, MAX, folosite ca atare sau n combinaiile cu clauzele de grupare GROUP BY i
HAVING.

Exemple de teste gril


I. SQL este acronimul de la:
a. Strict Queuing Language
b. Structured Queuing Language
c. Simbolic Query Language
d. Simple Query Language
e. Structured Query Language
II. Se d urmtoarea fraz SQL:
SELECT Data, SUM(ValoareTotala) AS TotalValTotala
FROM FACTURI, CLIENI
WHERE CLIENI.CodClient =FACTURI.CodClient
GROUP BY Data
HAVING SUM(ValoareTotala) > 50000000
Rezultatul acestei fraze va conine:
a. Valoarea zilnic facturilor emise
b. Totalul facturilor emise, pe fiecare zi
c. Totalul facturilor emise, pe fiecare zi n care acesta depete valoarea de 50000000 lei
d. Fraza SELECT este greit

Invmnt la distan Anul I 2008/2009

149

BIBLIOGRAFIE

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.

Airinei, D., .a., Medii de programare, ediia 2, Ed. Sedcom Libris, Iai, 2002
Fotache, M., Baze de date relaionale, Ed. Junimea, Iai, 1997
Fotache, M.,SQL Dialecte DB2, Oracle, Visual FoxPro, Ed. Polirom, Iai, 2001
Fotache, M., Proiectarea bazelor de date, Ed. Polirom, Iai, 2005
Grama, A, Filip, M., Faciliti Excel n aplicaiile economice, Ed. Sedcom Libris, Iai, 2000
Grama, A., Filip, M., Medii de programare n economie, Ed. Sedcom Libris, Iai, 2000
Grama, A., Fotache, M., ugui, Al., Dumitriu, F., Medii de programare, Ed. Sedcom Libris,
Iai, 2002
Gunderloy, M., Harkins, S.S., Microsoft Office Access 2003, Editura All, Timioara, 2003
Maniez, D., VBA pour Microsoft Word, Excel, Access, Dunod, Paris, 2000
ugui, Al, Teoria mediilor de programare, Ed. Junimea, Iai, 2001
***, Microsoft Office Access 2003. Step by Step, Microsoft Press, 2004

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