7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 1/149
Ana GRAMAMarin FOTACHEAlexandru ŢUGUI
Florin DUMITRIU
INSTRUMENTE SOFTWARE PENTRU AFACERI
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 2/149
2 Instrumente software pentru afaceri
CUPRINS
Noţiuni de bază privind instrumentele software .......................................................................................................3 1.1. Istoricul limbajelor de programare ............................................................................. ................................... 4
1.2. Etapele elabor ării programelor de aplicaţii şi rolul economiştilor................................................................. 8 1.3. Instrumente pentru dezvoltarea aplicaţiilor................................................................. ................................ 11
1.4. Instrumente software pentru economişti...................................................................... ................................ 12 1.5. Tendinţe î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 organizaţiilor................................................................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 FUNCŢII ÎN EXCEL ......................................................................................................... 52 3.4. Crearea şi formatarea graficelor........................................................................ .......................................... 61
3.5. LISTE ŞI BAZE DE DATE ÎN EXCEL.................................................................................. ................... 66 MODELUL RELAŢIONAL DE ORGANIZARE A BAZELOR DE DATE ........................................................76 4.1. Câte ceva despre baze de date.......................................................................... ........................................... 77 4.2. PREZENTARE GENERALĂ a modelului relaţional................................................................................. 83 4.3. Restricţii ale bazei de date..................................................................................................... ...................... 86 4.4. Schema şi conţinutul unei baze de date RELAŢIONALE .......................................................................... 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. Obtiner ea de informatii din BAZA DE DATE în ACCESS ..................................................................... 115 5.5. Construirea şi utilizarea rapoartelor.......................................................................................................... 119 5.6. Aplicaţii, 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. JONCŢIUNI............................................................................................................................... ............... 141 6.6. Funcţii-agregat: COUNT, SUM, AVG, MAX, MIN ................................................................................ 143 6.7. Sub-consultări. Operatorul IN ................................................................................................... ................ 144 6.8. REUNIUNE, INTERSECTIE, DIFERENTĂ............................................................................ ............... 145 6.9. Gruparea tuplurilor. Clauzele GROUP BY şi HAVING........................................................................... 145
BIBLIOGRAFIE................................................................................................................................................... 149
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 3/149
Invăţământ la distanţă – Anul I 2008/2009 3
Capitolul 1
NOŢIUNI DE BAZĂ PRIVIND INSTRUMENTELE SOFTWARE
Obiective:
i. Conştientizarea importanţei instrumentelor software în creştereaproductivităţii munciiii. Expunerea principalelor instrumente software utilizate pentru
dezvoltarea programelor de aplicaţii în domeniul economiciii. Prezentarea principalelor etape în dezvoltarea programelor de
aplicaţii şi a rolului economiştiloriv. Descrierea facilităţilor oferite de principalele instrumente destinate
economiştilor
Rezultate aşteptate:
i. Cunoaşterea caracteristicilor evoluţiei limbajelor de programareii. Înţelegerea etapelor şi activităţilor ce trebuie urmate în dezvoltarea
programelor de aplicaţii, a sistemelor informaţionale, în generaliii. Familiarizarea cu categoriile principale de instrumente software şi
scopul în care ele pot fi folositeiv. Cunoaşterea categoriilor de instrumente software destinate
economiştilor şi a rolului acestora în asigurarea succesului în carieraprofesională
v. Cunoaşterea tendinţelor manifestate în dezvoltarea programelor deaplicaţii şi pe piaţa instrumentelor software
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 4/149
4 Instrumente software pentru afaceri
1.1. ISTORICUL LIMBAJELOR DE PROGRAMARE
Astăzi, aproape orice activitate dintr-o organizaţie se desf ăşoar ă cu ajutorul calculatorului. Nevoia de programe de aplicaţii s-a diversificat în permanenţă, iar odată cu ele şi instrumentele
software. Prin instrument software se înţelege un program folosit de informaticieni sau utilizatori
pentru dezvoltarea programelor de aplicaţii.
Istoria instrumentelor software a început odată cu primele calculatoare, la începutul anilor ’50.
De atunci şi până în anii ’80 singura modalitate de dezvoltare a programelor de aplicaţii era
reprezentată de limbajele de programare. Astăzi avem la dispoziţie 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 informaţiilor personale şi
multe altele. Multe dintre acestea se adresează nespecialiştilor în programarea calculatoarelor.Pentru a înţelege principalele evoluţii şi tendinţe ale instrumentelor software, vom face cu o
scurtă prezentare a istoricului limbajelor de programare.
Limbajele de programare constituie rezultatul unei evoluţii, care a fost determinată atât de
performanţele calculatoarelor electronice, cât şi de progresele din teoria şi practica programării, ele
fiind grupate în cinci categorii: limbaje ma şină, limbaje de asamblare, limbaje de nivel înalt, limbaje
din genera ţ ia a patra, numite şi limbaje de nivel foarte înalt şi limbaje naturale.
Fiecare procesor are propriul set de instrucţiuni, care formează aşa numitul limbaj maşină. În
primii ani ai dezvoltării programelor, aceste limbaje constituiau singura variantă la îndemână. Toate
instrucţiunile de programare trebuiau să fie redactate în cod binar, adică sub forma unor şiruri formatedin 0 şi 1. De exemplu, o instrucţiune avea forma 0110 1010 0110 1011 şi poate semnifica operaţiunea
de adunare. Astfel, programele se concretizau în secvenţe de cifre binare pentru adrese, date şi
operaţii, programatorul cunoscând perfect operaţiunile interne din unitatea centrală a calculatorului
(procesor). O mică funcţie de prelucrare necesita lungi serii de instrucţiuni pentru a fi realizată.
Dezavantajele acestor limbaje de programare sunt astăzi evidente: dificultatea scrierii şi, mai
ales, a înţelegerii programelor; lipsa portabilităţii programelor, adică imposibilitatea executării lor pe
alte tipuri de calculatoare decât cel pentru care au fost elaborate.
Limbajele de asamblare au permis reducerea dificultăţilor specifice programării în limbaj
maşină, prin folosirea unor abrevieri alfabetice (mnemonice) în locul şirurilor de 0 şi 1. De exemplu,instrucţiunea „ADD R1, R2, R4” semnifică adunarea valorilor conţinute în registrele de memorie R1 şi
R2, iar rezultatul este scris în registrul R4. După cum se poate observa, codurile de operaţii şi poziţiile
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 uşor de memorat
decât adresele scrise în binar, oferind mai multă comoditate în scrierea sau citirea şi înţelegerea
programelor.
Odată scrise, programele în limbajele de ansamblare trebuie traduse în limbajul maşină, pentru
a putea fi executate pe calculator. Această operaţiune 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 maşină). Operaţiunea de ansamblare
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 5/149
Invăţământ la distanţă – Anul I 2008/2009 5
este necesar ă deoarece un calculator ştie să interpreteze şi să execute doar programele scrise în cod
maşină.
Principalele limbaje din această categorie sunt: ASSIRIS, ASSEMBLER, MAGIRIS.
Dincolo de avantajele sale, limbajele de asamblare r ămân orientate-maşină, deoarece
comenzile sale corespund instrucţiunilor în limbaj maşină, conform tipului de calculator utilizat. Osingur ă instrucţiune în limbaj de asamblare corespunde unei singure instrucţiuni în limbaj maşină şi,
deci, este nevoie de acelaşi număr de instrucţiuni pentru scrierea programelor în ambele cazuri. Deci,
în continuare, ele nu pot fi portate de pe un tip de calculator pe altul. Totuşi, ele sunt încă utilizate
astăzi, mai ales de către programatorii care dezvoltă software de sistem, pentru că ele permit utilizarea
mai eficientă a resurselor calculatorului şi sunt mai rapide la execuţie.
În practica programării calculatoarelor, limbajele maşină şi cele de asamblare sunt considerate
de nivel redus.
O dată cu lansarea limbajului FORTRAN (1954) s-a trecut la o altă generaţie 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 creşte productivitatea muncii
programatorilor. Ele sunt mai uşor de asimilat şi de înţeles decât un limbaj de asamblare, deoarece
regulile, normele şi sintaxa sunt mai suple, ceea ce reduce riscul erorilor. Instrucţiunile în limbajele
evoluate, numite enun ţ uri, se aseamănă mult cu limbajul uman sau cu convenţiile de scriere în
matematică. De fapt, fiecare enunţ constituie o macroinstrucţiune, adică ea realizează operaţiuni
specifice mai multor instrucţiuni în limbajul maşină. Iată câteva exemple de comenzi întâlnite î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 maşină. Această operaţiune 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 execuţie
mai mică decât cele compilate. După compilare/interpretare mai trebuie urmată o etapă înainte de a fi
executat programul. Este vorba despre editarea de leg ături, în care programul obiect este completat cu
module preluate din bibliotecile sistemului de operare.
Principalele avantaje ale limbajelor de nivel înalt sunt:
• Cre şterea productivit ăţ ii muncii de programare. Instrucţiunile de program sunt
orientate pe activitate şi nu pe calculatorul pe care se va executa programul, ceea ce
uşurează munca programatorilor. Se mai spune că aceste limbaje sunt orientate pe
problemă. De exemplu, limbajul COBOL a fost conceput pentru dezvoltarea
aplicaţiilor economice, iar FORTRAN pentru scopuri ştiinţifice sau domeniul
matematicii.
• Programele scrise în limbajele de nivel înalt sunt portabile. Prin utilizarea
macroinstrucţiunilor în scrierea programelor sursă şi traducerea lor în limbaj maşină,
cu ajutorul interpretoarelor sau a compilatoarelor, programele vor putea fi executate
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 6/149
6 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 către persoane mai pu ţ in calificate decât în
cazul limbajelor de ansamblare. Apropierea macroinstrucţiunilor de limbajul uman şi
orientarea lor pe problema de rezolvat le fac mai uşor de învăţat.În schimb, limbajele evoluate sunt mai puţin eficiente decât limbajele de asamblare, din
punctul de vedere al utilizării resurselor calculatorului, şi necesită mai mult timp de execuţie. Aceste
inconveniente n-au putut determina programatorii să nu utilizeze pe scar ă largă limbajele de nivel înalt
în dezvoltarea aplicaţiilor pentru companii.
Limbajele din generaţia a patra (cunoscute şi sub acronimul 4LG) descriu o mare varietate
de limbaje care sunt mai neprocedurale şi mai conversaţionale decât cele de nivel înalt. Ele sunt
extrem de cunoscute şi utilizate astăzi, dar, în acelaşi timp, dificil de definit, chiar şi încadrarea lor în
categoria „limbaje” fiind discutabilă. Ele pot fi considerate ca limbaje sofisticate care permit creşterea
productivităţii muncii programatorilor, prin facilităţile de dezvoltare a aplicaţiilor pe care le ofer ă, sauca limbaje mai directe şi mai simple, care permit utilizatorilor să-şi dezvolte propriile aplicaţii
informatice.
Totuşi, pot fi identificate câteva caracteristici comune majorităţii limbajelor 4GL1:
• sunt centrate în jurul bazelor de date, în mod deosebit a celor relaţionale, oferind
facilităţi 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ă aplicaţia şi nu cum trebuie să facă. Acum este posibilă
dezvoltarea unor mici aplicaţii informatice f ăr ă a mai fi necesar ă scrierea de programe.
Utilizatorii se rezumă la a indica rezultatele vizate, de o manier ă declarativă, astfel încâtcalculatorul să poată determina secvenţa de program necesar ă pentru obţinerea acestor
rezultate. Din acest motiv, se spune că limbajele din această generaţie au simplificat
mult procesul de programare.
• pun la dispoziţie o interfa ţă grafică prietenoasă, bazată pe dialogul interactiv, cu care
utilizatorii pot interacţiona pentru a-şi dezvolta propriile aplicaţii. 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 funcţiuni ale aplicaţiilor care nu pot fi rezolvate prin
instrumentele 4GL;Apariţia limbajelor 4GL a reprezentat r ăspunsul la neajunsurile limbajelor de nivel înalt. Deşi
acestea au permis o sporire considerabilă a productivităţii muncii programatorilor, în comparaţie cu
limbajele de ansamblare, ea nu a fost suficientă în condiţiile extinderii rapide a utilizării
microcalculatoarelor din anii ‘80, a creşterii permanente a cerinţelor utilizatorilor şi a complexităţii
aplicaţiilor informatice. De fapt, prin introducerea limbajelor 4GL s-a urmărit rezolvarea a trei
probleme: reducerea costurilor mari cu dezvoltarea programelor, nevoia de obţinere a programelor în
timp cât mai scurt şi creşterea calităţii programelor, mai ales în ce priveşte includerea cerinţelor
funcţionale ale utilizatorilor.
1 prelucrare după Curtis, G., Cobham, D. – Business Information Systems. Analysis, Design and Practice, fourth edition,
Prentice Hall, 2002, p. 122
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 7/149
Invăţământ la distanţă – Anul I 2008/2009 7
Prin urmare, aceste limbaje prezintă următoarele avantaje:
• posibilitatea dezvoltării de noi aplicaţii mai ieftine şi mai rapid;
• uşurinţa întreţinerii aplicaţiilor;
• posibilitatea utilizatorilor de a-şi dezvolta propriile aplicaţii. Odată cu apariţia acestor
limbaje s-a dezvoltat un nou concept – utilizatorul final informatizat (end usercomputing), care face referire la faptul că utilizatorii cu mai puţine cunoştinţe
informatice îşi pot crea şi întreţine singuri propriile aplicaţii.
În evoluţia limbajelor de programare de până acum, apariţia unei generaţii noi a determinat
renunţarea, în bună măsur ă, la limbajele din generaţia anterioar ă (dar nu şi dispariţia lor). Acum, ne
putem întreba dacă apariţia şi dezvoltarea limbajelor 4GL vor avea acelaşi efect asupra limbajelor de
nivel înalt. R ăspunsul ferm este nu, atât pentru prezent, cât şi pentru viitorul imediat. Explicaţiile sunt
următoarele:
• aplicaţiile dezvoltate în 4GL sunt mai puţin eficiente decât limbajele de nivel înalt, din
punctul de vedere al utilizării resurselor calculatorului, aspect care devine mai evidentcu cât creşte complexitatea aplicaţiilor sau volumul datelor de prelucrat. Viteza de
execuţie a programelor generate automat de aceste limbaje, pe baza specificaţiilor
utilizatorilor, este mai mică, fapt care se r ăsfrânge în timpi de r ăspuns mai mari, dar şi
pretenţii sporite în ce priveşte puterea de calcul. Unii chiar se întreabă dacă reducerea
costurilor şi a timpului de dezvoltare a aplicaţiilor nu sunt depăşite de costurile
suplimentare cu achiziţia echipamentelor necesare pentru obţinerea de performanţe
echivalente limbajelor din a treia generaţie.
• aplicaţiile complexe solicitate astăzi de firme nu pot fi dezvoltate integral cu limbajele
4GL. Facilităţile oferite sunt încă limitate, ceea ce impune apelarea la limbajele degeneraţia a treia, mai ales în cazul aplicaţiilor pentru firmele medii şi mari.
• utilizarea limbajelor 4GL de către utilizatori poate conduce la lipsa standardizării în
dezvoltarea sistemelor informatice la nivelul organizaţiei, ceea ce poate crea
deficienţe în desf ăşurarea activităţii angajaţilor.
Cel mai tipic exemplu de limbaj 4GL este SQL. El îndeplineşte ambele caracteristici ale
acestei generaţii de limbaje: este utilizat de profesionişti, în vederea creşterii productivităţii muncii lor,
dar şi de utilizatorii finali, în scopul dezvoltării propriilor aplicaţii. SQL este orientat spre dezvoltarea
aplicaţiilor cu baze de date relaţionale, fiind inclus de marea majoritatea a SGBD-urilor, precum
ACCESS, Visual FoxPro, Oracle. El ofer ă facilităţi pentru crearea, actualizarea şi interogarea bazelorde 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 evoluţia limbajelor de programare îl reprezintă limbajele naturale, referite
uneori şi ca limbaje de programare de generaţia a cincea2. Ele îşi propun utilizarea limbajului uman
în programarea calculatoarelor, cele mai cunoscute exemple fiind INTELLECT şi ELF. Ele sunt
adesea folosite ca interfeţe pentru instrumentele 4GL.
2 unii autori linclud limbajele naturale tot în categoria 4GL. Vezi O’Brien, J.A. – Introduction ti Information Systems. Essentials for the Internetworked E-Business Enterprise, McGraw-Hill, 2001, p.158
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 8/149
8 Instrumente software pentru afaceri
Principalul lor neajuns este legat de translatarea programelor din limbajul natural în limbaj
maşină, o operaţiune extrem de complexă şi costisitoare din punctul de vedere al resurselor hardware
solicitate. Ele sunt integrate cu aplicaţiile de inteligenţă artificială, incluse şi ele în această generaţie.
Un astfel de exemplu îl reprezintă LISP.
Deşi limbajele naturale sunt încă în faza de început a dezvoltării lor, ele reflectă foarte binecaracteristica principală a evoluţiei limbajelor de programare – apropierea de limbajul uman. Această
caracteristică, precum şi altele, sunt evidenţiate figura 1.13.
DaDaDaDa NuUtilizarea
simbolurilor
DaDaDa Nu NuUtilizarea demacroinstructiuni
DaDaDa Nu NuPortabilitate
Eficientautilizariiresurselor
Productivitate
Apropierea delimbajul uman
Limbajnatural
Limbajneprocedural
Limbaj denivel înalt
Limbaj deansamblare
Limbajmasina
Caracteristici
DaDaDaDa NuUtilizarea
simbolurilor
DaDaDa Nu NuUtilizarea demacroinstructiuni
DaDaDa Nu NuPortabilitate
Eficientautilizariiresurselor
Productivitate
Apropierea delimbajul uman
Limbajnatural
Limbajneprocedural
Limbaj denivel înalt
Limbaj deansamblare
Limbajmasina
Caracteristici
Progres
Progres
Diminuare
Generatia
I II III IV V
DaDaDaDa NuUtilizarea
simbolurilor
DaDaDa Nu NuUtilizarea demacroinstructiuni
DaDaDa Nu NuPortabilitate
Eficientautilizariiresurselor
Productivitate
Apropierea delimbajul uman
Limbajnatural
Limbajneprocedural
Limbaj denivel înalt
Limbaj deansamblare
Limbajmasina
Caracteristici
DaDaDaDa NuUtilizarea
simbolurilor
DaDaDa Nu NuUtilizarea demacroinstructiuni
DaDaDa Nu NuPortabilitate
Eficientautilizariiresurselor
Productivitate
Apropierea delimbajul uman
Limbajnatural
Limbajneprocedural
Limbaj denivel înalt
Limbaj deansamblare
Limbajmasina
Caracteristici
Progres
Progres
Diminuare
Generatia
I II III IV V
Figura 1.1 Caracteristicile evolu ţ iei limbajelor de programare
1.2. ETAPELE ELABOR ĂRII PROGRAMELOR DE APLICAŢII ŞIROLUL ECONOMIŞTILOR
Dezvoltarea programelor de aplicaţii (sau a sistemelor informaţionale) 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 aplicaţii. Astăzi există
numeroase metodologii de dezvoltare a programelor, ce difer ă între ele prin numărul etapelor,conţinutul şi organizarea lor. În acest paragraf dorim să descriem succint etapele comune majorităţii
metodologiilor, şi să punem în evidenţă rolul economiştilor de-a lungul procesului de dezvoltare.
Procesul de dezvoltare începe cu etapa de microanaliză. Această etapă are drept ţintă definirea
clar ă a problemei sau oportunităţii ivite, precum şi a scopului urmărit, în sensul că trebuie să se
înţeleagă ce se întâmplă la nivelul firmei, ce obiective are firma şi cum noua aplicaţie poate conduce la
atingerea lor. Este important să se identifice exact care sunt avantajele pe care le aduce noua aplica ţie,
ce activităţi economice sprijină şi ce probleme pot fi rezolvate cu ajutorul ei. Printre motivele de
iniţiere a dezvoltării unei noi aplicaţii putem enumera: modernizarea sistemului informaţional în
3 adaptare după Turban, E., McLean, E., Wetherbe, J. – Information Technology for Management , John Wiley&Sons, 2001, p. 735
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 9/149
Invăţământ la distanţă – Anul I 2008/2009 9
vederea valorificării avantajelor oferite de noile tehnologii informaţionale; modificarea legislaţiei;
ineficienţa unor activităţi derulate în cadrul firmei, datorată slabei integr ări a sistemului informaţional;
aplicaţiile existente nu mai fac faţă cerinţelor, datorită extinderii activităţii firmei; sprijinirea realizării
obiectivelor strategice.
La finalul acestei etape se elaborează un plan de dezvoltare, care este supus spre analiză conducerii. Dacă se obţine aprobarea, proiectul poate fi iniţiat, în sensul că vor fi alocate fondurile şi
resursele necesare şi se va organiza echipa de dezvoltare.
Cel mai adesea, economiştii sunt cei care iniţiază dezvoltarea de noi aplicaţii. Chiar dacă
iniţiativa apar ţine altor categorii de personal, rolul economiştilor r ămâne important, deoarece ei trebuie
să elaboreze planul de dezvoltare, în care se face o estimare a cheltuielilor şi beneficiilor potenţiale ale
aplicaţiei propuse.
După iniţierea proiectului de dezvoltare a noului program de aplicaţie, se merge mai departe cu
etapa de analiză, prin care se urmăreşte identificarea şi descrierea cerinţelor funcţionale şi
informaţionale. La sfâr
şitul ei trebuie s
ă fie foarte clar ce func
ţii va realiza noua aplica
ţie. Astfel, în
această etapă sunt urmărite trei obiective principale:
• descrierea sistemului informaţional existent, fiind analizate documentele primare,
fluxurile de informaţii din sistem, prelucr ările şi rapoartele;
• identificarea şi definirea cerinţelor pentru noua aplicaţie;
• documentarea detaliată a tuturor cerinţelor, funcţionale şi nefuncţionale.
Analiza sistemului este o activitate esenţială în aflarea situaţiei existente şi a ceea ce se doreşte
în viitor. Informaţiile privind sistemul curent şi cerinţele pentru noul sistem se pot obţine 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 responsabilităţilor fiecărui loc de muncă care este influenţat sau influenţează
funcţionarea sistemului, a documentaţiei sistemul informatic existent.
Dar nu este suficientă simpla culegere a informaţiilor. Analiştii trebuie să le revizuiască,
analizeze şi structureze astfel încât cerinţele noii aplicaţii să fie uşor înţelese de către cei care se vor
ocupa de proiectarea şi scrierea programelor. Cerinţele pot transpuse sub formă grafică, cu ajutorul
diferitelor instrumente.
În finalul etapei de analiză, se pregăteşte o documenta ţ ie necesar ă proiect ării, prin care sunt
surprinse toate aspectele privind modul de funcţionare a sistemului curent, căror nevoi şi cerinţe
trebuie să r ăspundă noua aplicaţie, ce funcţii trebuie să cuprindă şi ce obiective trebuie să sprijine.
În această etapă, economiştii joacă un rol covâr şitor. Ei sunt cei care trebuie să descrie
documentele primare, prelucr ările realizate în sistem, procedurile de control, modalităţile de obţinere a
informaţiilor şi prezentare a lor în rapoarte. Informaticienii nu au cum să înţeleagă mecanismele
economice desf ăşurate în cadril firmei. Provocarea major ă în rândul economiştilor constă în
structurarea tuturor informaţiilor despre sistem într-o formă care să faciliteze comunicarea cu
informaticienii. De aceea, ei trebuie să stă pânească instrumentele grafice de reprezentare a sistemului.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 10/149
10 Instrumente software pentru afaceri
În etapa de proiectare logică se urmăreşte dezvoltarea arhitecturii aplicaţiei, pregătirea
specificaţiilor de proiectare a interfeţelor 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ă aplicaţia. Aceste activităţi se bazează pe utilizarea informaţiilor culese şi a modelelor
create în timpul analizei.
Proiectarea logică se derulează prin intermediul a trei paşi sau subfaze:
• proiectarea formularelor/formatelor (pentru culegerea datelor) şi a rapoartelor ;
• proiectarea interfe ţ elor şi a dialogurilor , pentru evidenţierea modului de comunicare a
utilizatorului cu programele şi echipamentele;
• proiectarea logică a bazelor de date, prin care este concepută schema relaţională a bazei de
date, sub forma unui ansamblu de tabele normalizate între care există legături.
Şi în această etapă economiştii pot juca un rol important. Înţelegerea corectă a modului de
funcţionare a sistemului informaţional este crucială în proiectarea interfeţelor utilizator, adocumentelor şi rapoartelor, chiar şi a bazei de date. Însă, pentru a face faţă acestor sarcini,
economistul trebuie să deţină cunoştinţe suplimentare de informatică, precum: modelul relaţional şi
normalizarea bazelor de date, tipurile de obiecte regăsite î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ă aplicaţia. Ca atare, şi specificaţiile acestei etape vor avea un pronunţat caracter tehnic,
economiştii intervenind rareori în derularea acestor activităţi.
Două dintre activităţile 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 facilităţile de stocare şi accesare a datelor din SGBD-ul ales, precum tipul de organizare a
fişierelor şi utilizarea indecşilor.
După finalizarea proiectării, se trece la etapa de implementare, în timpul căreia sistemul este
construit, testat şi instalat. Obiectivul activităţilor specifice nu este numai de asigurare a funcţionării
aplicaţiei, în concordanţă cu nevoile identificate, ci şi a faptului că utilizatorii sunt instruiţi astfel încât
firma să beneficieze de rezultatele prevăzute prin exploatarea corespunzătoare a acesteia. Principalele
activităţi care se desf ăşoar ă în cadrul etapei sunt:
• scrierea şi testarea programelor;• construirea bazei de date;
• conversia datelor din vechea aplicaţie în formatul cerut de noua aplicaţie;
• instalarea aplicaţiei pe calculatoare;
• instruirea utilizatorilor pentru oferirea tuturor explicaţiilor şi cunoştinţelor necesare
exploatării aplicaţiei la parametrii la care a fost proiectat;
• elaborarea documentaţiei aplicaţiei şi a manualelor de utilizare, exploatare şi întreţinere.
La finalul acestei etape, programul de aplicaţie se poate considera a fi funcţional, şi se trece la
etapa de exploatare şi întreţinere. În această etapă el trebuie supus revizuirilor periodice pentru a se
asigura întreţinerea acestuia, fie pentru corectarea eventualelor erori apărute în exploatarea lui, fie pentru îmbunătăţirea caracteristicilor sau funcţiilor, ca r ăspuns la modificarea unor cerinţe
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 11/149
Invăţământ la distanţă – Anul I 2008/2009 11
organizaţionale. Această etapă este, de obicei, cea mai costisitoare, având în vedere că timpul pe care
şi-l petrec specialiştii din departamentele informatice reprezintă cam 48-60% din totalul timpului
alocat pentru dezvoltarea sistemului.
1.3. INSTRUMENTE PENTRU DEZVOLTAREA APLICAŢIILOR
Enumerarea şi descrierea instrumentelor software poate porni de la cele trei componente ale
programelor de aplicaţii:
• interfaţa utilizator, adică o serie de componente (formulare pentru introducerea datelor,
ferestre de dialog, meniuri, rapoarte) cu ajutorul cărora utilizatorul să poată iniţia diferite
operaţiuni de culegere a datelor, prelucrare şi obţinere a informaţiilor solicitate;
• modulele de program, care realizează prelucr ările din sistem, cum ar fi calculul
salariilor, întocmirea graficelor de rambursare etc.;
• baza de date, în care sunt organizate şi stocate toate datele necesare aplicaţiei.Pentru dezvoltarea acestor componente se apelează la instrumente diferite, pe care încercăm să
le prezentăm în continuare.
Mediile de programare sunt seturi de programe care includ următoarele funcţii: introducerea şi
editarea programului sursă, instrumente pentru transformarea programului sursă în programe
executabile sau libr ării de funcţii ş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 aplicaţii nu doar a modulelor de
programe pentru prelucrarea datelor, ci şi a interfeţei utilizator şi a legăturii cu bazele de date.
Pentru stocarea şi gestionarea volumelor mari de date se apelează sistemele de gestiune a
bazelor de date. Astăzi marea majoritate a aplicaţiilor stochează datele în baze de date. Bazele de date
cel mai des întâlnite sunt cele organizate după modelul relaţional: Oracle, DB2 produs de IBM, Sybase
SQL Server, MS SQL Server, MS Access, MS Visual FoxPro.
În condiţiile globalizării afacerilor şi a dezvoltării reţelelor de calculatoare se simte din ce în
ce mai mult nevoia distribuirii resurselor informaţionale ale companiei, respectiv date şi/sau programe,
pe mai multe calculatoare. Dezvoltarea unei aplicaţii distribuite impune apelarea la arhitectura client – server , care presupune conceperea aplicaţiei î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 eterogenităţii
platformelor hardware şi software sunt rezolvate prin intermediul soluţiilor 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 RequestBroker Architecture).
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 12/149
12 Instrumente software pentru afaceri
Indiferent de arhitectura software dorită, în cazul în care firma nu dispune de resurse
financiare care să permită achiziţionarea unor produse program necesare, se poate apela la solu ţia
solu ţ ii freeware. Aşa cum există aplicaţii financiar-contabile gratuite (de exemplu SAGA), tot aşa
există instrumente de dezvoltare software gratuite. Cel mai r ăspândit limbaj de programare folosit în
medii de programare gratuite este Java. Un SGBD gratuit, care reuşeşte să ajungă la un nivel decomplexitate a prelucr ării datelor comparabil cu cel al celor mai bine vândute SGBD-uri este
PostgreSQL. Spre deosebire de alte SGBD-uri gratuite (MySQL), PostgreSQL este capabil să rezolve
interogări 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 relaţionale din lume, Oracle, prin
lansarea versiunii Oracle Database 10g Express Edition.
Dezvoltarea aplicaţiilor 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. Uşurinţa în utilizarea acestui instrument software este dată de asemănarea
interfeţei sale cu interfe
ţele programelor din cadrul MS Office, de faptul c
ă utilizatorul nu este nevoit
să înveţe limbajul HTML şi de folosirea unor şabloane.
Site-urile Web capătă o scalabilitate şi o dinamică deosebită atunci când folosesc baze de date
în care îşi salvează o parte din conţinut. Trecerea la site-uri mai complexe nu presupune doar folosirea
resurselor unei baze de date, ci şi elemente grafice care să atragă atenţia utilizatorului. Ca exemple de
instrumente pentru construirea site-urilor Web complexe putem aminti Dreamweaver, ColdFusion,
Flash şi RoboDemo. Aplicaţiile Web pot conţine elemente de limbaj împrumutate din mediile de
programare tradiţionale, cum ar fi VB Scripts sau Java Scripts.
1.4. INSTRUMENTE SOFTWARE PENTRU ECONOMIŞTI
Economiştilor li se ofer ă astăzi o serie de instrumente software cu ajutorul cărora pot să-şi
dezvolte propriile aplicaţii 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 aplicaţiilor
economice. În acest sens, dorim să reţinem atenţia 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 informaţiilor personale.
CASE (Computer Aidded Software Engineering) reprezintă un instrument pentru
automatizarea procesului de dezvoltare a programelor. El permite realizarea rapidă a unor programe decalitate, prin sprijinul care-l ofer ă tuturor activităţilor de dezvoltare, de la planificarea sistemelor
informaţionale până la generarea automată şi testarea programelor.
CASE se bazează pe instrumente grafice şi simple, orientate spre utilizatorii f ăr ă prea multe
cunoştinţe tehnice, fapt ce permite implicarea lor activă în procesul de dezvoltare a programelor.
Economiştii au posibilitatea de a realiza variate sarcini, precum:
• planificarea resurselor financiare alocate proiectelor de sisteme informaţionale,
• redactarea cerinţelor funcţionale ale aplicaţiei,
• participarea activă la întocmirea specificaţiilor de proiectare a programelor,
• generarea automată a programelor sau a bazei de date f ăr ă a avea cunoştinţe tehnice privind limbajul de programare sau SGBD-ul folosite,
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 13/149
Invăţământ la distanţă – Anul I 2008/2009 13
• testarea programelor,
• generarea automată a documentaţiei pentru aplicaţia dezvoltată.
Implicarea directă a economiştilor în procesul de dezvoltare va determina sporirea şanselor de
reuşită datorită calităţii mai bune a programelor dar şi creşterii probabilităţii de acceptare de către ei a
noilor programe. Cele mai cunoscute instrumente CASE sunt Oracle Designer şi Visible Analyst.SGBD-urile sunt, f ăr ă îndoială, cele mai populare instrumente software în dezvoltarea
aplicaţiilor economice. Datorită acestui fapt, furnizorii au pus la dispoziţia utilizatorilor nespecializaţi
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 profesioniştilor,
precum Oracle. Apelând la un astfel de produs, utilizatorii vor fi în măsur ă să dezvolte aplicaţii de
complexitate relativ redusă, f ăr ă a avea cunoştinţe de specialitate.
Principalele facilităţi oferite de aceste SGBD-uri sunt:
• Crearea şi actualizarea bazei de date. Utilizatorii pot defini structura datelor, sub forma
tabelelor şi a relaţiilor dintre acestea, dar şi aspectele de comportament a datelor, subforma restricţiilor de integritate. De asemenea, ei pot adăuga, modifica sau şterge date fie
prin intermediul unor ferestre, fie apelând la comenzile limbajului SQL.
• Interogarea bazei de date. Accesarea datelor din bază se poate face prin intermediul unor
facilităţi grafice de interogare, dar şi prin utilizarea frazei SELECT SQL, de cei cu
cunoştinţe ceva mai avansate.
• Dezvoltarea de aplica ţ ii. Utilizatorii au la dispoziţie o serie de instrumente prin care pot
crea formulare pentru introducerea datelor în bază, rapoarte pentru extragerea datelor şi
prezentarea informaţiilor într-o formă plăcută, meniuri pentru exploatarea mai uşoar ă a
aplicaţiei, pagini Web. Prin integrarea lor se pot obţine aplicaţii 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
economişti în activităţile 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 intersecţia cărora se găsesc căsuţe î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 afişate grafice. În
momentul introducerii datelor în centralizatoare, calculele din căsuţele cu formule sunt efectuateautomat, iar rezultatele sunt afişate imediat.
Principalele facilităţi de lucru sunt:
• o gamă largă de funcţii 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;
• regăsirea uşoar ă a datelor din centralizatoare;
• posibilitatea realizării de operaţii specifice bazelor de date, precum extragerea datelor
în funcţie de anumite criterii, ordonarea datelor, adăugarea, modificarea şi ştergerea
de date etc.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 14/149
14 Instrumente software pentru afaceri
• efectuarea de analize de tip „What-if” („Ce se întâmplă dacă”). De exemplu, putem
găsi r ăspunsul la întrebarea „Ce se întâmplă cu cota de piaţă dacă vom creşte
cheltuielile de promovare cu 10%?” Pentru a afla r ăspunsul la această întrebare, este
suficient să introducem într-un centralizator relaţia 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 informaţiilor personale au rolul de a ajuta utilizatorii în
stocarea, organizarea şi extragerea informaţiilor privind clienţii, diferite activităţi, întâlniri, şedinţe etc.
De exemplu, informaţiile pot fi extrase şi prezentate sub forma unui calendar electronic, o listă de
întâlniri sau o planificare în timp a activităţilor unui proiect. Cele mai cunoscute astfel de programe
sunt Lotus Organizer şi Microsoft Outlook.
Furnizorii de software destinate nespecialiştilor ofer ă astăzi pachete integrate de programe sub
forma unor suite de programe. Astfel de pachete includ diferite instrumente software care sprijină
utilizatorii în creşterea productivităţii muncii lor. De regulă, într-o suită se regăsesc un SGBD, un program de calcul tabelar şi un program pentru gestiunea informaţiilor personale, la care se adaugă un
procesor de texte şi unul pentru grafică. În funcţie de furnizor, suitele pot include şi alte programe.
Cele mai cunoscute suite, precum şi câteva 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 informaţiilor
personale
Outlook Organizer Corel Central
Avantajele principalele ale suitelor de programe constau în costul mai redus fa ţă de
cumpărarea individuală a fiecărui produs inclus, oferirea unei interfeţe grafice uniforme, adică aceleaşi
ferestre, meniuri, butoane, linii de stare etc., ceea ce le face mai uşor de învăţat şi, nu în ultimul rând,
posibilitatea integr ării aplicaţiilor dezvoltate cu instrumente software diferite. De exemplu, datele din
baza de date pot fi uşor exportate într-o aplicaţie dezvoltată în programul de calcul tabelar. În schimb,
ele sunt criticate pentru faptul că sunt prea mari şi ocupă prea mult spaţiu pe calculator, mai ales că
unele componente nu sunt folosite niciodată de cei mai mulţi utilizatori.
1.5. TENDINŢE ÎN INSTRUMENTE SOFTWARE
Progresele extrem de rapide înregistrate în ultimii ani în domeniul tehnologiilor
informaţionale şi de comunicaţii îşi pun amprenta şi asupra aplicaţiilor informatice economice şi a
instrumentelor software pentru dezvoltarea acestora. Desprinderea unor tendinţe în evoluţia
instrumentelor software este o încercare dificilă datorită numeroasele evoluţii înregistrate în prezent,
unele contradictorii.
Ca o tendinţă mai generală în ce priveşte dezvoltarea aplicaţiilor informatice, se observă
predilecţia companiilor către achiziţia programelor de aplicaţii de la furnizorii specializaţi, în
detrimentul dezvoltării lor în cadrul campaniei, cu for ţe proprii sau prin angajarea de specialişti. Înacest context, două acronime au devenit extrem de populare: ERP şi ASP.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 15/149
Invăţământ la distanţă – Anul I 2008/2009 15
La mijlocul anilor ’90, multe organizaţii au conştientizat că nu mai pot rezista pe piaţă dacă vor
continua să utilizeze vechile sisteme informatice neintegrate. Nevoii de integrare i-au r ăspuns
sistemele ERP (Enterprise Resource Planning). ERP reprezintă o mega-aplicaţie multi-modular ă
care integrează procesele economice şi optimizează resursele disponibile ale organizaţiei, reunind
toate funcţiunile sale într-o singur ă soluţie software. ERP elimină barierele departamentale, prinintegrarea tuturor sistemelor informaţionale tranzacţionale într-o singur ă bază de date, accesibilă oricui
din organizaţie4. Nu în ultimul rând, se urmăreşte eliminarea graniţelor organizaţiei cu partenerii săi de
afaceri. Două aplicaţii, adesea incluse în soluţiile ERP, stau drept mărturie: CRM (Customer
Relationship Management), centrată pe gestiunea relaţiilor cu clienţii, şi SCM (Supply Chain
Management), orientată spre gestiunea relaţiilor cu furnizorii.
ERP nu realizează doar integrarea funcţională, 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 obţinute prin apelarea la solu
ţiile ERP constau în: reducerea costurilor
producţiei şi a stocurilor, planificarea integrală a resurselor întreprinderii, îmbunătăţirea productivităţii
globale, maximizarea profitului prin flexibilitate şi reactivitate sporită la cerinţele pieţei. Aceste
avantaje nu derivă doar din integrarea funcţională şi tehnologică, ci şi ca urmare a expertizei de care
sunt însoţite soluţiile ERP. Furnizorii de astfel de sisteme desf ăşoar ă ample activităţi de cercetare
pentru a găsi cele mai bune practici în diferite domenii de afaceri.
Dincolo de aceste avantaje, apelarea pe scar ă largă la soluţiile ERP este deocamdată limitată,
situaţie explicabilă prin trei mari neajunsuri: preţul exorbitant de mare, timpul îndelungat de
implementare şi adaptabilitatea redusă la condiţiile particulare din firmă. Soluţiile ERP implică riscuri
destul de mari pentru firme, legate de volumul mare al investiţiilor iniţiale, costuri ascunse
semnificative, incertitudini privind adaptabilitatea ei şi responsabilităţile sporite încredinţate
personalului.
Cel de-al doilea acronim, ASP, a devenit cunoscut odată cu tendinţa, din ce în ce mai accentuată,
de externalizare a serviciilor informaţionale, în scopul reducerii costurilor şi îmbunătăţirii
performanţelor acestora. Externalizarea serviciilor informaţionale cuprinde o paletă largă de
posibilităţi, de la externalizarea integrală a lor şi până la externalizarea dezvoltării unei păr ţi a
sistemului informaţional. Externalizarea serviciilor informaţionale este astăzi posibilă prin apelarea la
furnizorii specializaţi, numiţi ASP (Application Service Providers). ASP reprezintă o companie care
dezvoltă şi furnizează servicii informaţionale folosite în comun de mai mulţi utilizatori, care plătesc un
abonament sau taxe de folosire, serviciile fiind furnizate dintr-o locaţie centrală prin Internet sau
printr-o reţea privată. Un ASP permite clienţilor săi accesul la un mediu de aplicaţii complet,
preocupându-se de investiţiile necesare în licenţe de aplicaţii, servere, angajaţi şi alte resurse.
Apelarea la serviciile unor astfel de furnizori ofer ă numeroase beneficii, dintre care amintim:
• investiţii iniţiale modeste şi predictibilitatea costurilor, deoarece pentru aceste servicii se
plăteşte o taxă fixă pe principiul “plăteşti pe măsur ă ce utilizezi”;
• posibilitatea de a fi mereu în pas cu progresele tehnologice;
4 Fotache D., Hurbean, L. – Solu ţ ii informatice integrate pentru gestiunea afacerilor – ERP , Ed. Economică,
Bucureşti, 2004, p. 16
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 16/149
16 Instrumente software pentru afaceri
• posibilitatea închirierii aplicaţiilor scumpe, inaccesibile companiilor mici şi mijlocii sau a
celor cu investiţii iniţiale importante;
• acces la suport tehnic şi consultanţă de specialitate pentru servicii cu înalt nivel tehnologic;
• obţinerea de aplicaţii funcţionale într-un interval de timp foarte scurt.
În ultimul timp se manifestă tendinţa extinderii serviciilor furnizate, conceptul ASP fiindînlocuit cu XSP. Spre deosebire de ASP, XSP (X semnifică servicii generice) nu ofer ă doar aplicaţii,
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 investiţii foarte mari pentru crearea
infrastructurii necesare oferirii de servicii în reţea bazate pe Internet. Modelul XSP promite numeroase
beneficii: firmele vor putea să cumpere doar funcţionalitatea pe care o doresc şi atunci când o doresc,
reducând astfel investiţiile în tehnologiile informaţionale; transferul responsabilităţii şi riscurilor
menţinerii permanente în pas cu noile tehnologii; firmele pot activa pe pia ţă nu doar pe post de
consumator de servicii ci şi cel de furnizor; uşurinţa modificării proceselor şi a relaţiilor de parteneriat
în funcţie de condiţiile de pe piaţă.Dincolo de aceste beneficii, unele probleme r ămân încă nerezolvate sau, cel puţin, neclare:
securitatea serviciilor informaţionale disponibile pe piaţă; protecţia datelor sensibile ale clienţilor;
posibilitatea furnizării de aplicaţii critice pe web în condiţii de siguranţă sporită; portabilitatea
aplicaţiilor şi interoperabilitatea componentelor sale.
În ce priveşte strict limbajele de programare, reţinem două tendinţe: limbajele orientate-obiect,
limbajele orientate-Internet şi limbajele naturale. Ele nu sunt tocmai noi, însă în prezent se
înregistrează o extindere a utilizării lor, în încercările obsedante de apropiere de limbajul uman şi de
îmbunătăţire a productivităţii muncii programatorilor.
Limbajele orientate-obiect modelează sistemul informaţional sub forma unui set de obiectecare interacţionează între ele prin schimbul de mesaje. Un obiect integrează datele şi acţiunile
(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, numărul contului, numărul
cardului, soldul contului, limita de credit reprezintă datele, referite şi ca proprietăţi, iar retragerea de
numerar, depunerea, transferul bancar, schimbarea cardului reprezintă acţiuni, numite metode, care
descriu comportamentul obiectului.
Una dintre caracteristicile acestor limbaje se refer ă la faptul că datele unui obiect sunt ascunse
faţă de alte păr ţi ale programului, proprietate numită încapsulare. Datele pot fi manipulate numai dininteriorul obiectului, prin intermediul metodelor disponibile. Un alt obiect sau un utilizator care
doreşte 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
f ăr ă a fi necesar ă modificarea programului. Această caracteristică permite reducerea drastică a
timpului şi costului de scriere a programelor, prin reutilizarea programelor în alte aplicaţii
asemănătoare.
Reutilizabilitatea programelor este facilitată de alte două concepte specifice limbajelor
orientate-obiect: clasă şi moştenire. Obiectele cu proprietăţi similare sunt reunite în aceeaşi clasă.
Clasele sunt organizate ierarhic în superclase şi subclase. Moştenirea permite definirea unei clase deobiecte ca un caz particular al altei clase mai generale, numită superclasă. O clasă va moşteni
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 17/149
Invăţământ la distanţă – Anul I 2008/2009 17
proprietăţile şi metodele superclasei, însă va putea modifica definiţiile acestora sau adăuga proprietăţi
şi metode noi. De exemplu, STUDENT poate fi considerat o clasă în sistemul de evidenţă a
studenţilor, 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 rândul
său, STUDENT poate avea ca subclasă STUDENT_BURSIER. Această clasă va avea, în plus faţă destudent, proprietatea TipBursa. Oricum, proprietăţile şi metodele clasei STUDENT sunt moştenite de
STUDENT_BURSIER.
Un alt mare avantaj al limbajelor orientate-obiect, pe lângă reutilizabilitate, se refer ă la faptul
sunt mai apropiate de modul în care utilizatorii văd lumea. Se consider ă că este mult mai naturală
descrierea realităţii înconjur ătoare în termenii claselor de obiecte, cu proprietăţi şi comportament,
decât sub forma unor funcţii de prelucrare şi a datelor, aşa cum cereau limbajele anterioare.
Limbajele orientate-obiect au apărut în anii ’70, odată cu Smalltalk. Astăzi, cele mai utilizate
limbaje sunt Java şi C#.
Dezvoltarea limbajelor orientate-obiect a determinat apariţia unei alte tehnologii, numit
ă
programarea vizuală. Aceste limbaje dispun de un mediu grafic ce permite programatorilor să
dezvolte aplicaţii 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 influenţat şi alte domenii ale sistemelor
informaţionale, astfel că astăzi 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 dezvoltării aplicaţiilor
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 informaţia de modul de
prezentare a ei. Aceasta înseamnă că documente care conţin aceeaşi informaţie pot fi diferite prin
modul de prezentare, adică tipul şi mărimea fontului, spaţierea paragrafelor etc., f ăr ă ca informaţia să
fie modificată. HTML utilizează instrucţiuni numite tag-uri, pentru a descrie cum vor fi plasate în
document informaţiile de tip text, grafică, video şi sunet şi pentru a crea legături dinamice (numite şi
hiper-legături) către alte documente şi obiecte stocate pe acelaşi calculator sau pe altul. Aceste legături
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. Astăzi, majoritatea procesoarelor de text, programelor de calcul tabelar,
programelor de procesare grafică sau sistemelor de gestiune a bazelor de date ofer ă facilităţi pentru
generarea automată a documentelor în format HTML. De asemenea, după cum am văzut în paragraful
anterior, au fost puse la dispoziţia utilizatorilor instrumente software speciale pentru dezvoltarea
paginilor Web, f ăr ă 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 conţinutului paginilor Web. De exemplu, informaţiile privind
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 18/149
18 Instrumente software pentru afaceri
zborurile aeriene de pe pagina Web a unei agenţii de turism vor fi descrise prin intermediul tag-urilor
XML. El este derivat tot din standardul SGML.
Exemple de teste grilă
1. Care dintre următoarele instrumente software se adresează economiştilor, ca utilizator finalinformatizat?
a) Programe de calcul tabelar
b) Limbajul Java
c) Produsele de tip CASE
d) Limbajele de ansamblare (numite şi simbolice)
2. Evoluţia limbajelor de programare reflectă progresele înregistrate în privinţa:
a) Eficienţei utilizării resurselor calculatoarelor
b) Productivităţ
ii muncii programatorilor
c) Apropierii de limbajul uman
d) Memorarea datelor
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 19/149
Invăţământ la distanţă – Anul I 2008/2009 19
Capitolul 2
STRUCTURI DE DATE ŞI STRUCTURI DE PRELUCRARE
Obiective:
i. Prezentarea principalelor structuri de date şi a structurilor de prelucrare;ii. Prezentarea unor exemple pe tipuri de date şi structuri de prelucrare.
Rezultate aşteptate:
i. Utilizarea structurilor de date în proceduri simple;ii. Utilizarea structurilor de prelucrare în programe;
iii. Posibilitatea adaptării practice a studiilor de caz pe situaţii particulare;
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 20/149
20 Instrumente software pentru afaceri
2.1. ASPECTE INTRODUCTIVE
Literatura de specialitate subliniază importanţa deosebită a înţelegerii corecte a principalelorstructuri de date şi a structurilor de prelucrare folosite în activitatea de programare, precum şi în
formarea specialiştilor în domeniul instrumentelor software.
O structur ă de date reprezintă o modalitate de organizare a datelor care acoper ă data
elementar ă propriu-zisă şi relaţiile 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 prelucr ărilor şi chiar reducerea costurilor de programare.
Prin structuri de prelucrare sau structuri algoritmice de prelucrare ne referim la acele
modalităţi 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 strâns legate de structurile
algoritmice prin care se eficientizează operaţiile de creare şi actualizare a structurilor de date, dar şi
operaţii de căutare ş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/loca ţ ii în care se depozitează date cu valori corespunzătoare (figura 2.1).
Trebuie să facem precizarea că adresele de memorie nu se codifică după o regulă uşor de
înţeles ş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.
Figura 2.1 Atribuirea numelor la celulele de memorie
După o asemenea împăr ţire a memoriei şi atribuirea de adrese şi nume, putem stoca date în
oricare din celule, în funcţie de ce ne-am propus prin numele asociat. Cu alte cuvinte, constatăm că la
Pret nu putem introduce decât valori numerice iar la UM numai text. Astfel, se realizează o
specializare a acestor celule în funcţie de conţinutul 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. Clasificări ale principalelor structuri de date
Compoziţia internă a unei date impune gruparea acestora în date structurate şi dateelementare. O dat ă elementar ă se defineşte ca fiind un atribut care nu poate fi descompus din punct
05/12/05
A1 A2 An…
Produs Pret UM Intrare Data
0.5 buc 100paine
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 21/149
Invăţământ la distanţă – Anul I 2008/2009 21
de vedere logic. La rândul 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 entităţi sunt declarate în dicţionarul de date
pe ultimul nivel ca fiind date elementare.
La rândul lor, datele structurate se grupează în:• Date structurate de nivel redus, care permit operaţii la nivel de componentă. Sunt
incluse în această categorie tablourile şi articolele;
• Date structurate de nivel înalt , care permit operaţii 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
informaţii. În categoria datelor elementare sunt incluse:
• Numere întregi: celule sau locaţii de memorie în care sunt stocate numere întregi. Asupraacestor date se pot aplica operaţiile aritmetice cunoscute: +, -, ...;
• Numere reale: celule de memorie în care sunt stocate numere ra ţ ionale. Ca şi în cazul
numerelor întregi asupra lor se pot aplica operaţiile aritmetice;
• Valori booleene: celule sau locaţii de memorie în care sunt stocate valorile logice true sau
false. Aceste date fac obiectul operaţiilor/operatorilor: and, or, not.
• Caractere: celule sau locaţii de memorie în care sunt stocate şiruri de caractere alfabetice de
genul ‘a’, ‘b’, ‘abc’, ‘Popescu’ … . Pentru aceste date se pot aplica operaţii speciale de concatenare şi
comparaţie.
În tabelul 2.1. prezentăm câteva exemple de date elementare.Tabel 2.1. Prezentare variabile de lucru
Nr.
crt.
Nume_dată Valoare Tip
1 Produs Paine Şir de caractere
2 Preţ 0.5 Numeric
3 UM Buc Şir de caractere
4 Intrare 100 Numeric
5 Data 05/12/05 Dată calendaristică
Particularizăm crearea datelor elementare din tabelul 2.1 în Visual Basic for Application:
Sub algoritm()' creare -initializare
produs = "paine" ' creare variabila produs si intializare cu "paine" pret = 0.5 ' creare variabila pret si intializare cu 0.5um = "buc" ' creare variabila UM si intializare cu "buc"intrare = 100 ' creare variabila intrare si intializare cu 100data = "12/12/2005" ' creare variabila data si intializare cu "12/12/2005"
' calcul valoarev = pret * intrare ' creare variabila v si incarcare cu produsul dintre continutul
' variabilei pret cu cel al variabilei intrare' afi şare rezultate
MsgBox "Variabila v contine: " & Str(v) ' Afisare variabila v
MsgBox "Total intrari " & produs & ": " & Str(v) & " RON" ' Afisare rezultate finisateEnd Sub
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 22/149
22 Instrumente software pentru afaceri
Observaţie: semnul ' de pe linia cu instrucţiuni permite ataşarea unui comentariu.
Rezultatul execuţiei acestui Algoritm este cel din figura 2.2.
Figura 2.2 Rezultate la execu ţ ia procedurii Algoritm
Acelaşi algoritm se putea scrie şi astfel:
Public produs As String ' se creaza in mod public variabila produs de tip sirPublic pret ' se creaza in mod public variabila pret de tip variantPublic um As StringPublic intrarePublic data As Date ' se creaza in mod public variabila produs te tip data calendaristicaPublic v
Sub algoritm()' creare-initializare produs = "paine" ' intializare cu "paine" pret = 0.5 ' intializare cu 0.5um = "buc" ' intializare cu "buc"intrare = 100 ' intializare cu 100data = "12/12/2005" ' intializare cu "12/12/2005"
' calcul valoarev = pret * intrare ' incarcare cu produsul dintre continutul lui pret si cel al variabilei intrare
' afi şare rezultateMsgBox "Variabila v contine: " & Str(v) ' Afisare variabila vMsgBox "Total intrari " & produs & ": " & Str(v) & " RON" ' Afisare rezultate finisate
End Sub
Un tablou se defineşte 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 reprezentăm schematic un vector şi o matrice.
Din figura următoare şi din definiţiile date trebuie să se reţină faptul că în fiecare celulă a unui
tablou se regăseşte o dată elementar ă.
1 j M
1 A(1) 1 A(1,1) A(1,2) … A(1,j) … A(1,m)
A(2) A(2) A(2) … A(2,j) … A(2,m)
… … … … … … …
i A(i) i A(i,1) A(i,2) … A(i,j) … A(i,m)
… … … … … … …
n A(n) n A(n,1) A(n,2) … A(n,j) … A(n,m)
a. Tablou cu o singur ă dimensiune(vector)
b. Tablou cu două dimensiuni (matrice)
Figura 2.3 Structuri de date de tip tablou
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 23/149
Invăţământ la distanţă – Anul I 2008/2009 23
Exemplul precedent, de la datele elementare, se poate converti sub următoarea 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.5aprov(2) = "buc" ' intializare cu "buc"aprov(3) = 100 ' intializare cu 100aprov(4) = "12/12/2005" ' intializare cu "12/12/2005"
' calcul valoareaprov(5) = aprov(1) * aprov(3)
' afisare rezultateMsgBox "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 intr ările de pâine pe 3 zile.Sub Alg_tablou_2()' creare-initializare
Dim aprov(5, 1)' prima ziaprov(0, 0) = "paine" ' intializare cu "paine"aprov(1, 0) = 0.5 ' intializare cu 0.5aprov(2, 0) = "buc" ' intializare cu "buc"aprov(3, 0) = 100 ' intializare cu 100aprov(4, 0) = "12/12/2005" ' intializare cu "12/12/2005"' a doua ziaprov(0, 1) = "paine" ' intializare cu "paine"aprov(1, 1) = 0.5 ' intializare cu 0.5aprov(2, 1) = "buc" ' intializare cu "buc"aprov(3, 1) = 100 ' intializare cu 108aprov(4, 1) = "12/12/2005" ' intializare cu "12/12/2005"' a treia ziaprov(0, 2) = "paine" ' intializare cu "paine"aprov(1, 2) = 0.5 ' intializare cu 0.5aprov(2, 2) = "buc" ' intializare cu "buc"aprov(3, 2) = 100 ' intializare cu 116aprov(4, 2) = "12/12/2005" ' intializare cu "12/12/2005"
' calcul valoareaprov(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 rezultateMsgBox "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 legătur ă către o dată elementar ă. Cu alte cuvinte, o variabilă care
conţine o adresă sau un nume de variabil ă pentru o altă dată elementar ă. Schematic un pointer se
reprezintă ca în figura de mai jos.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 24/149
24 Instrumente software pentru afaceri
Figura 2.4. Reprezentare pointer V1
Explicaţii referitoare la pointer :
- În limba română pointer înseamnă ac indicator sau simplu indicator , adică un
instrument care ne indică o direcţie;
- Ştiind numele variabilei pointer , în cazul nostru v1, putem ajunge la valoarea
variabilei v2.
2.2.3. Liste
O listă reprezintă o colecţie omogenă şi secvenţială de date. Astfel, aceasta constituie cea mai
comună dată structurată. Schematic cea mai simplă listă se reprezintă ca în figura de mai jos.
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 locaţii de memorie consecutive. Într-o asemenea listă vom distinge:• Nodul , adică acea componentă în care se conţine o dată elementar ă;
• Lungimea, adică numărul de noduri din listă,
• Defini ţ ia pentru stabilirea ordinii nodurilor, adică pentru fiecare nod există un
predecesor şi un succesor.
În situaţia în care definiţia pentru stabilirea ordinii nodurilor conţine o regulă care conduce la
o succesiune între ultimul nod şi primul nod, atunci discutăm de liste circulare.
Figura 2.6. Reprezentare list ă circular ă
Intrarelistă
A B C D Ieşirelistă
AB
C
DE
F
Adr2
Iasi
Nume variabilă: V1Adresă: Adr1Conţinut/Valoare: Adr2
Nume variabilă: V2Adresă: Adr2Conţinut/Valoare: Iaşi
V1Adr1
V2Adr2
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 25/149
Invăţământ la distanţă – Anul I 2008/2009 25
Unei liste i se pot aplica operaţii de actualizare (modificare, inserare şi ştergere) nod-uri din
listă, operaţii de concatenare cu altă listă şi de numărare a nodurilor declarate.
Pentru implementarea unei liste se pot folosi două strategii:
a. Implementarea secven ţ ial ă sau statică, ceea ce presupune atribuirea de locaţii succesive de
memorie în corespondenţă cu ordinea nodurilor din listă.b. Implementarea înl ăn ţ uit ă sau dinamică. În acest caz, fiecare nod conţine două păr ţi: informaţia
propriu-zisă şi adresa nodului succesor.
În practică se întâlnesc două cazuri particulare de liste:
a. Stive. O stivă ( stack ) este o listă liniar ă cu proprietatea că operaţiile 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 inser
ările 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 r ăd ăcină (plasat fie în vârf, fie la baza
arborelui). La rândul său. un nod r ăd ăcină dispune de unul sau mai multe niveluri de noduri-copil ,
care pot să aibă, la rândul lor, proprii lor noduri-copil . Astfel, putem spune că într-un arbore deosebim:
nodul r ăd ăcină, noduri copil şi noduri-părinte. Mai multe noduri subordonate succesiv unul altuia
formează o ramur ă, iar un nod care nu are subordonat un nod-copil se numeşte nod frunză. În forma sacea mai sintetică un arbore se reprezintă ca în figura 2.7.
A
B C D
GE F H I
J K
A
B C D
GE F H I
J K
Figura 2.7 Exemplu de structur ă ierarhică arborescent ă
Pe exemplu din figura precedentă particularizăm următoarele tipuri de noduri:
• nod r ădăcină: a;
• noduri copil: b, c, d, e, f, g, h, i, j şi k;
• nod părinte: 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;
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 26/149
26 Instrumente software pentru afaceri
• noduri frunză: e, j, k, g, h şi i;
În literatura de specialitate sunt prezentaţi: arbori cu r ădăcină (figura 2.8.a), arbori binari
(figura 2.8.b), arborii multi-cale (figura 2.8.c).
a. Arbore cu r ădăcina
A
B C
ED F G
IH
A
B C
ED F G
IH b. Arbore binar
A
B DC
E GF
c. Arbori multi-cale
A
B
DC
adresa fiului din stângaadresa fiului din dreapta
valoarea vârfuluivaloarea nodului-fiu
din stânga
A
B
DC
adresa fiului din stângaadresa fiului din dreapta
valoarea vârfuluivaloarea nodului-fiu
din stânga
d. Memorarea valorilor şi adreselor în noduri
Figura 2.8 Reprezent ări grafice ale arborilor
Reprezentarea unui arbore cu r ăd ăcină se poate face prin adrese cu ajutorul listelor înlănţuite.
În cazul arborelui binar se observă că fiecare nod-părinte are în subordine câte două noduri-copil.
După cum se observă şi din figura 2.8.d., fiecare nod va fi memorat în trei locaţii diferite ale unei
listei, după cum urmează: o locaţie va fi folosită pentru valoarea propriu-zisă a nodului, o a doua
locaţie va fi destinată pentru memorarea adresei celui mai vârstnic fiu, iar a treia locaţie pentru adresa
următorului frate. Cu alte cuvinte, legătura între un nod-părinte şi un nod-copil se realizează prin
intermediul pointerilor .
Not ă: Sesizăm faptul că pentru arbori se face trimitere la liste, pentru a căror 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 fişierul
Fi şierul reprezintă o colecţie ordonată de date. Urmare a faptului că stocarea datelor se face pe
supor ţi de memorie externă, fişierul este definit şi ca structur ă de date externă.
Structura ordonată de date din cadrul fişierului poartă denumirea de articol , care la rândul său
este constituit dintr-o mulţime ordonată de valori ale căror caracteristici apar ţin unei entităţi din
domeniul unei probleme. Caracteristicile descrise prin intermediul valorilor din articolele unui fişier le
vom regăsi sub denumirea de câmpuri.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 27/149
Invăţământ la distanţă – Anul I 2008/2009 27
Figura 2.9 Reprezent ări ale structurilor de date externe de tip articol şi fi şier 5
Din punct de vedere al activităţilor de programare este interesant să cunoaştem metoda de
organizare şi tipul de acces aferente structurilor de date externe.
a. Metoda de organizare. Aceasta poate fi una din următoarele: secvenţială, relativă şi
indexată;
b. Tipul de acces la date în operaţii de citire şi scriere a valorilor din /în câmpuri. Se poate
folosi accesul secvenţial 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 ă ieşire, renunţându-se în fapt la utilizarea în activitatea de programare la instruc ţiunea GOTO.Cele trei tipuri de structuri fundamentale sunt:
- secvenţiale;
- alternative;
- repetitive.
În figura de mai jos punem în evidenţă aceste tipuri şi instrucţiunile corespunzătoare.
5 Capitolele 4, 5 şi 6 prezintă exemple suplimentare de structuri de date de tip fişiere (tabele) şi articole.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 28/149
28 Instrumente software pentru afaceri
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 secvenţiale
Ca în orice mediu de programare VBA asigur ă operaţii de atribuire şi operaţii de intrare/ieşire,
după cum urmează:
• Atribuirea se realizează cu instrucţiune LET sau direct cu folosire semnului =, ca înexemplul precedent.
Sub atribuire()‘ precizare variabilele care se folosesc mai jos trebuie in principiu declarate (create) inainteLET cont=212 ‘ se atribuie valoarea numerica 212 pentru variabila cont
Den = “Mijloace f ixe” ‘ se atribuie şirul „Mijloace fixe” pentru variabila den Tip_C= True ‘ valoarea True este atribuită conturilor de activData=#12/31/2004# ‘ se atribuie valoarea 31.12.2004 variabilei data ‘ Nota: Trebuie se foloseste semnul #, iar formatul este ll/zz/aaaa
End Sub
• Opera ţ ia de atribuire prin citirea datelor introduse de utilizator este asigurată de
instrucţiunea InputBox. Cu alte cuvinte, această instrucţiune ne permite introducerea
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 29/149
Invăţământ la distanţă – Anul I 2008/2009 29
de la tastatur ă a valorilor pentru o anumită variabilă. Exemplul de mai sus se
transformă în următorul:
Sub citire()Cont = InputBox(“Simbol cont”,”Introduceti o valoare”, 0) ‘se permite citirea (preluarea) în
‘variabila cont a raspunsului dat de
‘ utilizatorDen = InputBox(“Denumire cont:”,”Introduceti o valoare”, “”)Data= InputBox(“Data operatiei:”,”Introduceti o valoare in formatul ll/zz/aaaa”, 0)
End Sub
Formatul instrucţiunii InputBox este următorul:
InputBox(mesaj, [titlu, valoare_implicita])
Precizări:
- Mesaj trebuie scris între ghilimele sau se poate prelua dintr-o variabilă de tip şir. Este
textul ce apare ca explicaţie î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 executării liniei
Cont = InputBox(“Simbol cont”,”Introduceti o valoare”, 0)
este prezentat în figura 2.17.
Figura 2.11 Rezultatul execu ţ iei liniei Cont = InputBox(“Simbol cont”,”Introduceti o valoare”, 0)
• Opera ţ ia de ie şire este uşor de evidenţiat cu ajutorul instrucţiunii MsgBox, care
permite afişarea unui text într-o fereastr ă de dialog. Cea mai simplă utilizare este
atunci când dorim sa vizualizăm conţinutul 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") ‘ afiseaza text simpluMsgBox ("Denumire cont: " & Den) ‘ afiseaza denumire cont cu text in fataMsgBox ("Simbol cont: " & Str(cont)) ‘ afiseaza textul simbol cont: dupa care simbolul introdusMsgBox ("" & data) ‘ afiseaza o data calendaristica
End Sub
Prezentăm în figura 2.12 fereastra afişată pentru instrucţiunea MsgBox ("Denumire cont: " &Den) şi a instrucţiunii MsgBox ("Denumire cont: " & Den).
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 30/149
30 Instrumente software pentru afaceri
Figura 2.12 Rezultate la execu ţ ia instruc ţ iunilor de tip MsgBox
În chenarul de mai jos oferim spre exemplificare o utilizare mai complicată a instrucţiunii
MsgBox dar pentru preluare a r ăspunsului de la utilizator.
Sub MesajBox()Dim Mesaj, Butoane, Titlu, Help, Raspuns, Rasp ' Definim variabilele de lucruMesaj = "Doriti sa continuati ?" ' Definim mesajulButoane = vbYesNo + vbCritical + vbDefaultButton2 ' Definim butoaneleTitlu = "Titlu fereastra" ' Definim titlul ferestreiHelp = "Ajutor.txt" ' Definim fisierul de ajutorRaspuns = MsgBox(Mesaj, Butoane, Titlu, Help, 1000)
If Raspuns = vbYes Then ' Selectie YesRasp = "Yes" ' Executa o actiune pentru YesElse ' Selectie No
Rasp = "No" ' Executa o actiune pentru NoEnd If
End SubÎn figura 2.13. prezentăm rezultatul după lansarea în execuţie a procedurii de mai sus.
Figura 2.13 Preluare r ă spuns prin MsgBox
B. Structurile de control alternative
Aşa 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 <condiţie> THEN<set_comenzi1>
[ELSE<set_comenzi2>]
END IF
Pentru codificarea structurii de control alternative cu ramur ă vidă formatul comenzii IF
devine
6
:6 Se observă că în formatul precedent ramura ELSE este opţională (inclusă în paranteze drepte.)
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 31/149
Invăţământ la distanţă – Anul I 2008/2009 31
IF <condiţie> THEN<set_comenzi>
END IF
Exemplu de utilizare – Vom exemplifica această structur ă de control pe selecţia folder-ului
(directorului) de lucru pentru o aplicaţie ce poate fi lansată în laboratoarele facultăţii sau pe un
calculator personal (acasă sau la serviciu).
Sub Mod_IF()' construim fereastra de interogare a dorintei utilizatoruluiDim dir As ObjectSet dir = CreateObject("Scripting.FileSystemObject")Dim cale, cale_nouDim Mesaj, Butoane, Titlu, Help, Raspuns 'Definim variabilele de lucruMesaj = "Lucrati in laboratoarele FEAA <Yes-Da; No-Nu>?" 'Definim mesajulButoane = vbYesNo + vbCritical + vbDefaultButton2 'Definim butoaneleTitlu = "Selectati un raspuns !" 'Definim titlul ferestreiHelp = "Ajutor.txt" 'Definim fisierul de ajutorRaspuns = MsgBox(Mesaj, Butoane, Titlu, Help, 1000) ‘Stocarea raspunsului in Raspuns
' **** Selectia unitatii de lucru D sau Z
If Raspuns = vbYes Thencale = "Z:"
Elsecale = "D:"
End If ChDir (cale)
' **** Testarea existentei directorului VBA pe unitatea de disc selectatacale_nou = "" & cale + "\VBA" 'construirea caii de lucru complete
If dir.FolderExists(cale_nou) Then 'testarea existentei directorului VBAMsgBox "VBA este directorul de lucru de pe " & cale
ElseRaspuns = MsgBox("Nu exista directorul VBA pe " & cale, vbOKOnly, "Informatie")MkDir (cale_nou) 'crearea noului director VBA in cazul in care nu existaRaspuns = MsgBox("VBA a fost creat si va fi directorul de lucru de pe " & cale, vbOKOnly, "Informatie")
End IfChDir (cale_nou) 'stabilirea directorului de lucru
End Sub
În procedura de mai sus se observă două instrucţiuni IF una după alta. Există însă posibilitateaca 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 următorul:
SELECT CASE <var>CASE <var_1>
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 32/149
32 Instrumente software pentru afaceri
<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 condiţii. De fiecare dată se compar ă conţinutul variabilei <var>
cu conţinutul variabilelor <var_1>, <var_2> … . Dacă se ajunge să fie indeplinită o condiţie
<var>=<var_k> se va executa set_comenzi_k (k poate fi o valoare din intervalul 1,m). În cazul în
care nu se îndeplineşte nici una din condiţii, se transfer ă controlul pe ramura lui CASE ELSE spre ase executa setul de comenzi < set_comenzi>.
Exemplu de utilizare – Dorim să aflăm după data naşterii ziua din cadrul să ptămânii, ştiind
că datele calendaristice sunt valori numerice, iar restul împăr ţirii la 7, la care se adaugă 1, ne asigur ă
obţinerea unui număr în intervalul 1-7.
Function zi(numzi As Byte) As StringSelect Case numzi
Case 1zi = "Luni"
Case 2zi = "Marti"Case 3
zi = "Miercuri"Case 4
zi = "Joi"Case 5
zi = "Vineri"Case 6
zi = "Sambata"Case 7zi = "Duminica"
End Select
End Function
Sub case_zi()Dim varzi As Datevarzi = 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 ă obţinerea restului la împăr ţirea lui varzi la 7 in intervalul 1 – 7.
Exemplu de utilizare – În funcţie de distanţa în km la care se află localitatea dvs. se va afişa
un mesaj de apreciere a apropierii faţă de Iaşi.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 33/149
Invăţământ la distanţă – Anul I 2008/2009 33
Sub dist()
Dim dd = InputBox("Introduceti distanta pana la localitatea dvs. in Km.")Select Case dCase Is <= 50
MsgBox ("Localitatea este foarte aproape, la distanta de " + Str(d) + " km.")
Case 51 To 100MsgBox ("Localitatea este aproape, la distanta de " + Str(d) + " km.")
Case 101 To 250MsgBox ("Localitatea este departe, la distanta de " + Str(d) + " km.")
Case Is > 250MsgBox ("Localitatea este foarte departe, la distanta de " + Str(d) + " km.")
Case ElseMsgBox ("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 condiţionate anterior. Setul de
comenzi se execută cât timp condi ţ ia este adevărat ă.
• FOR … NEXT, pentru structuri repetitive cu număr stabilit de paşi.
WHILE … WEND
În VBA această structur ă repetitivă este considerată cea mai simplă, deoarece nu ofer ă posibilitatea păr ăsirii for ţate a setului de comenzi cu o instrucţiune de tipul EXIT. Formatul său este:
WHILE conditie
<set_comenzi>
WEND
CÂT TIMP conditie
<set_comenzi>
SFÂRŞIT_CÂT_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 executieDim var As Integer ' definirea variabilei de ciclarei = InputBox("Numar de intrari in cadrul zilei: ")Dim aprov(5, 100) ' definirea tablouluivar = 0
While var < iaprov(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
WendEnd Sub
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 34/149
34 Instrumente software pentru afaceri
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 numărului de execuţii pentru set_comenzi.Din punct de vedere logic se aseamănă cu WHILE … WEND, cu precizarea că actualizarea lui se face
cu clauza NEXT . Formatul său este:
FOR i =1 to n
<set_comenzi>
NEXT i
PENTRU i = 1 la N
<set_comenzi>
URMĂTORUL i
Vom adapta exemplul precedent în cazul utilizării structurii de prelucrare FOR … NEXT, dar
pe zile ale să ptămânii.
Sub For_tablou_2()Dim i As Integer ' definirea variabilei de ciclareDim aprov(5, 100) ' definirea tablouluiDim zi As Stringi = 0
For i = 0 To 6Select Case i
Case 0zi = "Luni"Case 1zi = "Marti"Case 2zi = "Miercuri"
Case 3zi = "Joi"Case 4zi = "Vineri"
Case 5zi = "Sambata"
Case 6zi = "Duminica"
End Selectaprov(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 iEnd Sub
DO … LOOP
Această structur ă de prelucrare de tip repetitiv permite utilizarea a două clauze diferite, şi
anume: pentru transferul controlului în cazul îndeplinirii condiţiei (WHILE) şi pentru transferul
controlului în cazul neîndeplinirii condiţiei (UNTIL). În varianta cu WHILE DO … LOOP
corespunde structurii de control repetitive condiţionate anterior, în timp ce în varianta cu UNTIL,
permite codificarea structurilor de control condiţionate posterior (adică set_comenzi se execută
înaintea verificării condiţiei, deci cel puţin o dată).
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 35/149
Invăţământ 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
LOOPDen = 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
LOOPDen = InputBox(“Denumire cont:”,”Introduceti o valoare”, “”)Data= InputBox(“Data operatiei:”,”Introduceti o valoare in formatul ll/zz/aaaa”, 0)
End Sub
Exemple de întrebări teste grilă
1. Care este structura de control incorectă:
a. Secvenţială
b. Repetitivă c. Iterativă
d. Repetitiv-Indexată
2. Tipul de dată Arbore este:
a. Elementar
b. Structurat
c. Stivă
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 36/149
36 Instrumente software pentru afaceri
CAPITOLUL 3
PROGRAMELE DE CALCUL TABELAR ŞI UTILIZAREA LOR ÎNGESTIUNEA ORGANIZAŢIILOR
Obiective:
i. Cunoaşterea ş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 funcţiilor pentru efectuarea unei
game variate de operaţiuni: calcule matematice, financiare, statistice, logice,căutări de informaţii, simulări şi analize etc.
Rezultate aşteptate:
i. Obţinerea şi gestionarea registrelor de lucru şi a foilor de calcul astfel încâtmodelele proiectate să automatizeze cererile utilizatorilor.
ii. Alegerea tipului de grafic în aşa fel încât acesta să fie sugestiv.iii. Susţinerea procesului decizional prin simulări şi analize de date în foile de
calcul şi în grafice.iv. Exploatarea listelor şi a bazelor de date Excel prin actualizări, sortări şi
interogări.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 37/149
Invăţământ la distanţă – Anul I 2008/2009 37
Expansiunea microinformaticii înlesneşte accesul utilizatorilor, aproape nelimitat, la resursele
fizice şi logice ale sistemelor de calcul. Printre instrumentele pe care le au la dispoziţie 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 DESPRIJINIRE A DECIZIILOR
Programele de calcul tabelar sunt produse care integrează facilităţi de lucru cu tabele, baze de
date, grafice, simulări etc., fiind concepute pentru a prelua, din sarcina funcţionarilor din diverse
domenii, o parte importantă a lucr ărilor de rutină.
Într-un program de calcul tabelar se regăsesc instrumente care sunt, pe de o parte foarte uşor
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 – evoluţie, caracteristici şi componente
Cel mai popular program de calcul tabelar este, f ăr ă îndoială, Excel. Iniţial Excel a fost
proiectat pentru sistemele MacIntosh. Începând cu 1990 sunt lansate versiunile pentru Windows, care
sunt în mod continuu perfecţionate. Îmbunătăţirile 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 aplicaţii Microsoft Office alături de Word,
PowerPoint, Access etc. Fiind o componentă Office, Excel exploatează toate facilităţile 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 sunte ţi
familiarizaţi de la procesorul de texte Word sau programul de prezentări PowerPoint .
Deschiderea unei sesiuni de lucru Excel se poate realiza în mai multe moduri:
• meniul Start (figura 3.1), selectând din meniul Programs opţiunea Microsoft Excel,
• meniul rapid (figura 3.2), selectând comanda New şi apoi opţiunea Microsoft Excel;
• shortcut-ul de pe Desktop (figura 3.3), accesând pictograma de pe desktop, dacă a fost creată o
scurtătur ă Excel.
Figura 3.1 Deschiderea sesiunii Excel din Start Figura 3.2 Deschiderea sesiunii Excel din meniul
rapid
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 38/149
38 Instrumente software pentru afaceri
Figura 3. 3 Deschiderea sesiunii Excel prin schortcut-ul de pe DesktopIndiferent de modalitatea folosită sistemul deschide o fereastr ă de lucru Excel (figura 3.4).
Pentru mai multă claritate, în fereastr ă a fost deschis un fişier 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 suprafaţa de lucru, implicit, sunt disponibile bara meniu şi două bare
cu instrumente (Standard şi Formatting ) care asigur ă exploatarea facilităţilor prezente în toate
componentele Microsoft. Sub aceste bare este plasată bara de formule care vizualizează, în stânga, încaseta de nume, adresa celulei curente sau numele simbolic atribuit unui domeniu (grup de celule), iar
în dreapta conţinutul celulei (date, formule sau funcţii). Între aceste elemente sunt disponibile şi
butoanele: = pentru a construi formule de calcul, X -Cancel pentru anularea introducerii şi revenirea la
vechiului conţinut al celulei curente şi √ - Enter pentru confirmarea /acceptarea datelor introduse.
Atunci când este lansat constructorul de funcţii în locul butonului = apare butonul fx. La activarea
barei de formule, în locul casetei de nume este afişată caseta Paste Functions care poate fi consultată
în vederea alegerii, din lista subordonată, a funcţiei dorite pentru celula curentă.
În ultimele versiuni ale pachetului MS Office la deschiderea sesiunii de lucru, implicit, în
dreapta ecranului se activează panoul de activităţi Task Pane, organizat pe mai multe zone, care difer ă în funcţie de operaţiunea în curs de derulare:
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 39/149
Invăţământ 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 – căutarea unor legături Web, în registrul de lucru curent;
• Search for... - căutarea în funcţie de anumite criterii;
• Open – deschiderea unuia dintre fişierele aflate în lista ultimelor fişiere cu care s-a lucrat,sau a unui alt fişier, căutat cu ajutorul butonului More...care deschide o fereastr ă Open.
Componenta principală într-o aplicaţie realizată cu un program de calcul tabelar o reprezintă
foaia de calcul , care trebuie privită ca un centralizator “uriaş” cu linii şi coloane, la intersecţia cărora
sunt celulele în care se introduc date, formule şi funcţii. 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 intersecţia coloanelor cu liniile sunt celulele (căsuţe /casete) care sunt referite în mod
univoc cu ajutorul adreselor , care se obţine prin concatenarea codurilor de coloane cu cele de linii.
La rândul lor, adresele de celule pot fi:
• relative;
• absolute;
• mixte.
Adresele relative sunt implicite şi se modifică prin operaţiile de copiere sau mutare în funcţie
de zona destinaţie stabilită de utilizator. Acest tip de adrese se obţine prin combinarea simplă a
codurilor de coloană cu a celor de linie (de exemplu, A1, BC234, IV65536). Adresele absolute se
stabilesc explicit de către 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 combinaţie 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 condiţionată a datelor din foile de calcul.
Foile de calcul sunt organizate în agende sau registre de lucru numite Book<n>. Începând cu
versiunea Excel 7 într-un registru de lucru, implicit, sunt definite trei foi de calcul numite Sheet<n>,
numărul maxim putând fi de 255. Adăugarea de noi foi de calcul în registrul de lucru curent se
realizează din meniul Insert folosind opţiunea Worksheet . Numele implicite Book şi Sheet pot fi
schimbate de utilizator odată cu salvarea conţinutului registrelor de lucru sau prin operaţia de
redenumire. Este recomandat ca în acelaşi registru de lucru să fie organizate foile de calcul care conţin
date relative la aceeaşi aplicaţie sau care privesc acelaşi utilizator.
Într-o foaie de calcul pot fi referite celule /date din alte foi de calcul, întâlnindu-se următoarele
situaţii:
• când foaia de calcul este din acelaşi registru de lucru, adresa celulei va fi precedată de semnul ! şi
numele foii de calcul (de exemplu, Sheet2!C34, Rentabilitate!B5);
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 40/149
40 Instrumente software pentru afaceri
• când 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
pătrate (de exemplu, [Situatie_scolara]Anul_1!F6, [IDD]Anul_1!A15).
Când o comandă /operaţie urmează a fi aplicată asupra mai multor celule, pentru creşterea
vitezei de lucru acestea sunt grupate într-un domeniu (range). Domeniile la rândul lor pot fi contigue(când celulele sunt adiacente /înlănţuite), sau necontigue (când 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 (căsuţa) în care este plasat prompterul sistem se numeşte celulă curent ă sau activă şi
este evidenţiată printr-un chenar trasat cu o linie îngroşată. În această celulă vor fi preluate elementele
nou introduse sau se vor reda rezultatele obţinute în urma evaluării formulelor şi /sau a funcţiilor.
În principal facilităţile oferite de Excel sunt apelate prin intermediul opţiunilor organizate într-
o reţea de meniuri specializate care respectă principiile Windows. Implicit, în bara meniu suntdisponibile meniurile File, Edit, View, Insert, Format, Tools, Data, Windows şi Help. Foarte multe
opţiuni sunt cunoscute din procesorul de texte Word. În funcţie 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 cărui opţiuni permit, printre altele, reluarea paşilor
de obţinerea 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 direcţionale) sau cu
ajutorul mouse-ului, prin clic în celula dorită. Pentru deplasări mai ample şi rapide se pot folosiopţiunea Go To din meniul Edit, sau tasta funcţională F5, utilizatorul trebuind să specifice adresa
locaţiei în care va fi plasat prompterul sistem.
Figura 3.5 Meniul Edit,comanda Go To...
Figura 3.6 Fereastra Go To Figura 3.7 Fereastra Go ToSpecial
• Home - mutarea punctului de inserare la început de linie;
• PgUp/PgDn - mutarea cu o fereastr ă în sus sau în jos;• Ctrl + Home - deplasarea în colţul stânga-sus al foii de calcul;
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 41/149
Invăţământ la distanţă – Anul I 2008/2009 41
• Ctrl + End - mutarea în colţul dreapta-jos al secţiunii 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 următoare;
• F5 /Ctrl + G <adresa celulă> - mutarea într-o anumită celulă sau zonă din foaia de calcul;
• Tab - deplasarea de la stânga la dreapta sau de sus în jos într-un domeniu selectat;
• Shift + Tab - deplasarea în direcţia inversă într-un domeniu selectat.
Un rol aparte îl are tasta End ce comută în modul End , oferind opţiuni de navigare
suplimentare:
End + tasta Enter determină ajungerea la sfâr şitul de linie;
End + o tastă direcţională determină deplasarea la următoarea celulă ocupată din direcţia
respectivă;
End + tasta Home determină deplasarea la ultima celulă ocupată din foaia de calcul (acelaşi rol
cu Ctrl + End ).
Pe lângă aceste modalităţi, Excel permite selectarea celulelor şi după conţinutul lor sau după
relaţiile folosite în formule. Pentru aceasta se foloseşte opţiunea 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 Înghe ţ area antetului de tabel
Derularea într-o foaie de calcul amplă duce la “pierderea” de pe suprafaţa ecranului a titlurilor
de coloane sau de linii, ceea ce face citirea sau interpretarea datelor organizate în foaie mai greu de
realizat. Soluţia în astfel de situaţii o reprezintă înghe ţ area antetelor de coloană şi /sau a celor de linie.
Pentru aceasta se foloseşte comanda Freeze Panes din meniul Windows, după ce pointerul de celulă a
fost plasat sub linia şi /sau la stânga coloanei deasupra şi respectiv la stânga căreia se doreşte definirea
titlurilor (figura 3.8). Pentru a dezghe ţ a fereastra, se selectează comanda Unfreeze Panes, tot din
meniul Windows.
3.1.3 Selectarea celulelor
Atunci când se lucrează cu grupuri de celule pentru operaţiile de copiere, mutare, formatare,tipărire etc., este necesar ă selectarea acestora. În acest context sunt următoarele situaţii:
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 42/149
42 Instrumente software pentru afaceri
• pentru selectarea celulelor înlănţuite (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 următoarea
secvenţă de operaţii: clic de mouse de pe prima celulă din domeniu, apăsarea 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 apăsată
tasta Ctrl, după care, pe rând, 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 selecţie se poate realiza
prin următoarea secvenţă de operaţii: clic de mouse de pe antetul primei linii sau coloane din
domeniu, apăsarea tastei Shift, clic de mouse pe ultima linie, respectiv coloană din domeniuldorit;
• pentru selectarea în întregime a mai multor linii sau coloane necontigue se execută clic pe
antetul primei linii sau coloane din domeniu, se ţine apăsată 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 AFOILOR DE CALCUL
Aşa cum am văzut în paragraful anterior un registru de lucru este un fişier din Microsoft Excel(cu extensia implicită .xls) care conţine una sau mai multe foi de calcul. Fiecare foaie este o pagină în
care se introduc date şi se evaluează formule şi funcţii.
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 stabileşte tipul
datei după natura primului caracter introdus sau după rezultatul evaluării formulei sau funcţiei
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 următoarele caractere speciale: spaţiul, !, ‘, “, %, &, ?, *, :, ;, ^, \, |, [,], _.
Formulele şi funcţiile au ca prefix semnul =.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 43/149
Invăţământ la distanţă – Anul I 2008/2009 43
3.2.2 Introducerea şi formatarea datelor şi a foilor de calcul
Introducerea datelor este o operaţie care de cele mai multe ori se realizează “manual” de la
tastatur ă. În acelaşi scop Excel pune la dispoziţia 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 astfelconstruită poate fi accesată, din meniul rapid (activat cu butonul din dreapta al mouse-ului), prin
selectarea opţiunii 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 atât tipul datelor
introduse cât şi aspectul acestora. Se foloseşte 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
afişarea datelor numerice pe cea mai scurtă lungime posibilă.
Celelalte categorii de formate permit:
Number - stabilirea numărului de zecimale (maximum 30) şi a modului de afişare a numerelor
negative (scrise cu culoare neagr ă sau roşie, precedate sau nu de semnul – (pentru cele scrise în roşu);
Currency - afişarea numerelor precedate sau urmate, după caz, de simbolul monetar ales de
utilizator (figura 3.10);
Accounting - stabilirea de către utilizator a monedei în care vor fi reprezentate datele;
Percentage - stabilirea numărului de zecimale într-o reprezentare procentuală;
Scientific - reprezentarea în format ştiinţific, cu mantisă şi exponent, a datelor (de exemplu,
numărul 6.100.000, în format ştiinţific devine 6,10E+06);
Zona de previzualizare a
conţinutului celulei curente
Stabilirea numărului dezecimale (max. 30)
Afişarea păr ţii întregi îngrupe de trei cifre separateprintr-un punct (.)
Formate de afişare /tipărire a numerelornegative
Formatele de afişare / tipărirea datelor numerice
Figura 3.9 Fereastra Format Cells – Cadrul de pagină Number
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 44/149
44 Instrumente software pentru afaceri
Lista simbolurilormonetare (în ultimeleversiuni de Office estedisponibilă şi monedapentru România)
Figura 3.10 Lista simbolurilor monetare
Date - alegerea, dintr-o plajă disponibilă, a formatului de afişare a şirurilor de numere, în datecalendaristice, precum şi a locaţiei (zonei geografice) dorite (figura 3.11); numărul maxim ce poate fi
transformat în dată calendaristică este 999999 şi corespunde datei de 25 noiembrie 4637;
Observa ţ ie! Pentru a introduce rapid data şi ora curentă, în celula selectată, se acţionează
tastele Ctrl +; pentru dată şi respectiv Ctrl + : pentru or ă.
Lista formatelorpentru 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 locaţiei /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 poştale, numere de telefon, CNP) (figura 3.12);
Custom - generarea unor formate personalizate de afişare a datelor numerice, inclusiv a celor
de tip dată calendaristică sau timp.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 45/149
Invăţământ 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
conţinutul celulelor. Implicit, numerele sunt aliniate la dreapta, iar textele la stânga.
Opţiunile din fereastra Alignment controlează atât alinierea pe orizontală (Text Alignment –
Horizontal), cât ş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 aceleiaşi celule;
• Shrink to fit - stabileşte dimensiunea datei introduse astfel încât să încapă în celula curentă;
• Merge cells - îmbină celulele selectate şi centrează, în spaţiul astfel obţinut, data din celula cea
mai de sus, sau cea mai din stânga.
Scriereapeverticală
Scrierea oblică
Alinierea peverticală
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).
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 46/149
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, asemănător modului de trasare a liniilor şi chenarelor în Word.
Cadrul de pagină Patterns permite adăugarea de culori şi umbre.
Cadrul de pagină Protection protejează conţinutul unei celule sau a unui grup de celule prin
blocare (caseta Locked ) sau prin ascundere (caseta Hidden).
O parte dintre facilităţile de formatare prezentate mai sus se regăsesc în figura 3.15:
• Merge cells – îmbinarea celulelor A8:F8 şi centrarea titlului;
• Merge cells – îmbinarea celulelor A9:C8 şi alinierea la stânga a subtitlului;
• Border – trasarea cu linie îngroşată 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 situaţie, a titlului, a subtitlului şi a antetului de coloane;
• WordArt – pentru scrierea, din antetul situaţiei, a denumirii societăţii comerciale.
Figura 3.15 Foaie de calcul formatat ă
Pe lângă formatul stabilit de către utilizator, Excel permite, prin opţiunea AutoFormat din
meniul Format şi crearea de documente “aspectoase” prin simpla selectare a unor formate predefinite
din lista AutoFormat (figura 3.16).
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 47/149
Invăţământ 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 funcţie de anumite condiţii stabilite de utilizator. Astfel, pentru a scoate în evidenţă salariile de
peste 16 milioane de lei se selectează celulele care conţin salariile de bază, după care se activează comanda Conditional Formatting pentru a deschide fereastra în care se va construi condiţia dorită
folosind opţiunea Cell Value Is (figura 3.17).
Figura 3.17 Formatarea condi ţ ionat ă - Cell Value Is
Figura 3.18 Formatarea condi ţ ionat ă (Cell Value Is) - Rezultat
Din fereastra Conditional Formatting se poate activa butonul Format care permite stabilirea
formatului de afişare a datelor care respectă condiţia stabilită (figura 3.18).
Prin formatare condiţionată pot fi evidenţiate linii întregi dintr-o tabelă, dacă se selectează
opţiunea Formula Is din lista Condition 1 a ferestrei Condition Formatting în care condiţia (simplă
sau compusă) este construită cu ajutorul adreselor mixte de celule.
Astfel, pentru a scoate în evidenţă angajaţii care au salariile cuprinse între 15 milioane şi 16,5
milioane se construieşte condiţia din figura 3.19.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 48/149
48 Instrumente software pentru afaceri
Figura 3.19 Formatare condi ţ ionat ă – Formula Is
Figura 3.20 Formatarea condi ţ ionat ă (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.
Observa ţ ie! 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 funcţiilor.
Operaţiile pot fi realizate fie cu ajutorul comenzilor Copy , Cut şi Paste din meniul Edit , fie prin
tehnica “drag&drop”. Opţiunile meniului Edit permit mutarea şi copierea datelor în cadrul aceleiaşi
foi, între diferite foi sau chiar între aplicaţii.
În meniul Edit este disponibilă şi comanda Paste Special (figura 3.21) care permite transferul:
• conţinutului zonei sursă ( All );
• formulelor ( Formulas);
• valorilor şi a rezultatelor evaluării formulelor şi funcţiilor (Values);
• formatelor celulelor ( Formats);
• comentariilor (Comments);
• condiţiilor de validare (Validation);
• întregului conţinut, mai puţin marginile zonei sursă (( All except borders).
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 49/149
Invăţământ 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, înmul ţite etc. cu datele
din zona destinaţie, selectându-se butonul corespunzător din zona Operation. Implicit, nu se faccalcule 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 destinaţie cu cele din zona sursă. În felul acesta orice modificare din zona
sursă influenţează şi zona destinaţie.
Tehnica drag&drop poate fi utilizată numai în cadrul aceleiaşi foi de calcul. Mutarea
presupune selectarea zonei sursă, fixarea indicatorului de mouse pe marginea ei (până când ia forma
unei cruci cu patru vârfuri-săgeţi), deplasarea în zona destinaţie şi, în final, eliberarea mouse-ului.
Pentru copiere se poate folosi şi marcajul de umplere - AutoFill (un pătrat mic, negru, din
colţul dreapta-jos al celulei sau zonei sursă selectate). Pe acest marcaj se plasează indicatorul demouse, care devine o cruce simplă. În continuare se ţine apăsat butonul din stânga al mouse-ului şi,
prin drag&drop se stabileşte zona destinaţie. 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 ă creşterea vitezei de introducere a datelor în foile de calcul. De
asemenea, cu AutoFill se pot realiza rapid prognoze şi tendinţe pe baza unor serii de date introduse
anterior.
3.2.4 Protecţia 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 modalităţi de protecţie.
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 situaţie 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 r ămâne deblocate chiar şi dacă foaia decalcul din care fac parte va fi protejată.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 50/149
50 Instrumente software pentru afaceri
Figura 3.22 Fereastra Format Cells
O protecţie specială este realizată şi prin ascunderea formulelor şi /sau funcţiilor folosite în
foaia de calcul (caseta Hidden din fereastra Format Cells), a anumitor linii şi /sau coloane (opţiunile
Hide subordonate comenzilor Row, respectiv Column, din meniul Format.Pentru protejarea foilor de calcul şi a registrelor se foloseşte meniul Tools, comanda
Protection (figura 3.23).
Pentru protejarea foii de calcul curente se selectează opţiunea Protect Sheet care deschide
fereastra cu acelaşi 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, putând 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 afi şarea unui
mesaj de avertizare (figura 3.25).
Figura 3.25 Mesaj de avertizare - Foaia de calcul este protejat ă
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 51/149
Invăţământ 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 opţiunea Protection
Workbook . Şi în acest caz trebuie stabilită o parolă de protejare (figura 3.26).
În ambele situaţii prezentate pentru deprotejare se selectează opţiunea corespunzătoare şi se
retipăreşte 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 opera ţie simplă asemănătoare operaţiei de salvare din oricare alt produs Microsoft. Se poate folosi, fie pictograma
Save din bara de instrumente Standard, fie opţiunile Save sau Save As din meniul File.
Figura 3.28 Fereastra Save As
În ambele situaţii în zona File Name trebuie specificat un nume, dacă nu se doreşte atribuirea
numelui predefinit Book<n>. Fişierul salvat este, implicit, de tip .xls (figura 3.28).
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 52/149
52 Instrumente software pentru afaceri
3.3 FORMULE ŞI FUNCŢII ÎN EXCEL
3.3.1 Utilizarea formulelor
Formulele sunt elemente de bază ale foii de calcul şi permit efectuarea de operaţii simple
(adunare, scădere etc.), dar şi calcule complexe din diverse domenii (financiar, statistic sau ştiinţific.
De asemenea, folosind funcţiile Excel se pot realiza comparaţii sau operaţii 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, funcţii, paranteze, referinţe şi nume de
domenii. Excel memorează formulele stabilite de utilizator, dar în foaia de calcul sunt afişate
rezultatele evaluării acestora. Dacă se doreşte afişarea propriu-zisă a formulei /formulelor se activează
caseta de validare Formulas din cadrul de pagină View a comenzii Options, din meniul Tools. Acelaşi
efect se obţine sau se anulează şi prin comanda rapidă Ctrl + ` (accent grav). Pentru a afişa doar
formula din celula curentă se foloseşte comanda rapidă Ctrl + ‘ (apostrof).
Formulele conţin valori şi operatori. Valorile (operanzii) sunt numere, date calendaristice,
texte etc. şi se introduc în celulele foilor de calcul. Operatorii sunt instruc ţiuni prin care se stabileşte
cum sunt prelucrate valorile. De regulă, pentru operatori se folosesc simboluri. La rândul lor,
operatorii sunt: aritmetici (+, -, *, /, %, ^), de compara ţie (<,>,>=, <=, <>), 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 următoarele aspecte:
• forma şi dimensiunea rezultatului trebuie să fie la fel cu forma şi dimensiunea domeniilor
asupra cărora se aplică formula;
• formula matriceală este inclusă între acolade, introduse automat de către Excel;
• execuţia unei formule matriceale se realizează cu ajutorul combinaţiei de taste: Shift + Ctrl +
Enter .
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 53/149
Invăţământ 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 conţinutul 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 foloseşte, fie caseta Name box din stânga 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 foloseşte comanda Apply, din fereastra comenzii Name a meniului Insert.
3.3.2 Funcţiile Excel
Programul Excel dispune de numeroase funcţii predefinite pentru a efectua rapid calcule
matematice, financiare, statistice şi logice, prelucr ări de texte sau căutări de informaţii în foile de
calcul. În comparaţie cu formulele, funcţiile sunt mai uşor de editat şi permit o executare mai rapidă a
diverselor operaţii.O funcţie este formată din două păr ţi:
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 54/149
54 Instrumente software pentru afaceri
• nume (cuvânt 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 funcţii 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, referinţe, valori logice etc.
Editarea funcţiilor se poate realiza fie direct în bara de formule sau celula curentă, fie
apelându-se generatorul de funcţii (Function Wizard). Cea mai comod ă variantă o reprezintă
asistentul de funcţii apelat:
• din meniul Insert cu comanda Function;
• prin intermediul pictogramei AutoSum , din bara cu instrumente Standard;
• prin intermediul pictogramei f(x) 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 funcţiile organizate pe categorii, fiecare categorie având funcţiile componente aranjate
în ordine alfabetică. Excel creează o categorie specială, pe baza celor mai recent utilizate funcţii ( Most
Recently Used ).
3.3.2.1 - Succint ă prezentare a principalelor func ţ ii Excel
Funcţiile sunt grupate după tipul operaţiilor pe care le realizează în: funcţii financiare; funcţii
statistice; funcţii de lucru cu liste şi baze de date; funcţii logice; funcţii de căutare şi referire; funcţii
matematice şi trigonometrice; funcţii pentru date calendaristice şi timp; funcţii pentru şiruri de
caractere; funcţii pentru informare.
Fiecare funcţie activată deschide o fereastr ă în care sunt afişate: formatul şi o succintă
descriere a funcţiei precum şi zone distincte de editare a argumentelor din format. În plus, este afişat şi
rezultatul ce se va obţine prin executarea funcţiei. Pentru exemplificare, în figura 3.34, este fereastra
asociată funcţiei IF() în care prin condiţia specificată se stabileşte dacă se plăteşte sau nu penalizare,
după cum întârzierea plăţii unei facturi este sau nu mai mare de trei zile.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 55/149
Invăţământ la distanţă – Anul I 2008/2009 55
Figura 3.34 Utilizarea func ţ iei IF()
Funcţii statistice. Pachetul de funcţii statistice ofer ă modalităţi rapide de realizare a celor mai
cunoscute calcule statistice (figura 3.35).
Funcţia Average( ) calculează media argumentelor care pot fi valori singulare sau domenii.
Domeniile, la rândul lor, pot conţine numere, referinţe de celule sau matrici de valori;
Funcţia Count( ) returnează numărul de celule care conţin cifre sau formule, ignorându-le pecele care conţin şiruri de caractere, valori logice, erori sau blank (celule libere);
Funcţia CountA( ) stabileşte numărul de celule al căror conţinut este nenul;
Funcţia Max( ) afişează cel mai mare număr dintr-un domeniu de celule;
Funcţia Min( ) afişează cel mai mic număr dintr-un domeniu de celule.
Figura 3.35 Func ţ ii statistice – Formule şi Rezultate
Funcţii financiare. Aceste funcţii 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 restricţii dintre
care amintim:
• numărul de perioade trebuie să fie exprimat în aceeaşi unitate de timp (lună, an);
• în calculul anuităţilor se folosesc vărsăminte egale şi intervale regulate de timp.
Pentru calculul amortizării Excel ofer ă funcţii specializate pe metodele de amortizarefolosite.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 56/149
56 Instrumente software pentru afaceri
Funcţia SLN( ) calculează amortizarea după metoda liniar ă prin stabilirea valorii anuale a
deprecierii unui bun (de exemplu, imobilizări corporale). Formatul general al funcţiei este
=SLN(val_inv, val_rez, durată), în care:
• val_inv reprezintă valoarea iniţială sau de inventar,
• val_rez este uzura calculată sau valoarea reziduală,• durată constituie durata de viaţă a bunului.
Funcţia SYD( ) foloseşte, pentru calculul amortizării, metoda sumei cifrelor anilor . Formatul
general este =SYD(val_inv, val_rez,durată,per), în care pe lângă argumentele funcţiei precedente se
mai adaugă prin per anul din durata de viaţă pentru care se calculează deprecierea (primul an, al
doilea, al treilea etc.).
Funcţia DDB( ) calculează deprecierea pentru o perioadă indicată folosind metoda balan ţ ei
dublu depreciate sau o altă metodă specificată. Formatul funcţiei 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 anuităţilor Excel foloseşte în principal funcţiile =FV(), =PMT(), =PV() şi
RATE( ).
Observa ţ ieAnuitatea este un procedeu prin care, de regulă, un capital împrumutat se rambursează într-un
anumit număr de ani /luni, printr-o serie de plăţi periodice, cuprinzând în afara dobânzii şi o sumă destinată a reconstitui capitalul.
Funcţia FV( ) stabileşte valoarea viitoare pentru o serie de încasări provenite din plăţi egale
(plată), f ăcute într-un număr de perioade (nper), cu o anumită dobândă (dobândă). Formatul general al
funcţiei este =FV(dobândă, nper, plată, [vp,tip]). Se observă că din format pot lipsi vp (suma globală
investită la începutul operaţiei) şi tip (care stabileşte dacă plata va fi f ăcută la începutul perioadei – 1,sau la sfâr şitul perioadei – 0). În absenţa lor, aceste argumente sunt considerate ca având valoarea 0.
Funcţia PMT( ) calculează plăţile periodice pentru diferite tipuri (tip) şi valori viitoare ale
unei investiţii (vv), fiind date dobânda investiţiei (dobândă), termenul (nper) şi valoarea prezentă (vp).
Formatul general este =PMT(dobândă, nper, vp [,vv, tip]), funcţia determinând valoarea ratei lunare
/anuale pentru un împrumut pe un număr de luni /ani cu o dobândă lunar ă /anuală fixată. Dacă pentru
vv şi tip nu sunt introduse valori, sunt considerate egale cu zero.
Funcţia PV( ) calculează valoarea prezentă a unei investiţii pe bază de vărsăminte egale.
Formatul general este =PV(dobândă, nper, plată [,vv, tip]). Dacă vărsămintele nu sunt egale se
foloseşte funcţia NPV( ).Funcţia RATE( ) stabileşte procentual dobânda necesar ă pentru ca o investiţie să ajungă la
valoarea capitalizată scontată. Formatul general este =RATE(nper, plata, vp [,vv, estimare]). Această
funcţie 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 depărtează de valoarea corectă
Excel returnează mesajul de eroare #NUM!.
Funcţia IRR( ) determină rata internă de rentabilitate pentru o serie de venituri sau încasări.
Formatul general este =IRR(valori, estimare). Valorile pot fi pozitive sau negative, conţinute într-un
domeniu sau o matrice de celule referite, iar estimarea este un număr care de obicei este cuprins între 0
şi 1, şi indică evaluarea privind beneficiul final.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 57/149
Invăţământ la distanţă – Anul I 2008/2009 57
Funcţii pentru baze de date. Funcţiile din această categorie sunt construite în principal pe
funcţiile statistice (DAVERAGE(), DCOUNT(), DMAX(), DSTV() etc.) şi o serie de funcţii
matematice (DSUM(), DPRODUCT() etc.), realizând aceste calcule cu valori ale câmpurilor încărcate
în articolele bazelor de date.
Funcţiile logice. Aceste funcţii sunt printre cele mai folosite funcţii Excel, ele oferind posibilitatea de a adăuga noi facilităţi logice şi de decizie foilor de calcul. Cele mai utilizate funcţii din
această categorie sunt: =IF(), =AND(), =OR(), =NOT(), =FALSE() şi =TRUE().
Funcţia IF( ) este cea mai simplă funcţie logică având totodată şi cele mai multe aplicaţii
practice. IF() este folosită pentru testarea unor condiţii şi pentru luarea unor decizii. Formatul general
este =IF(condiţie, val_adevăr, val_fals), rezultând faptul că funcţia IF( ) foloseşte trei argumente:
testul logic şi valorile pentru adevărat şi pentru fals. În cazul în care condiţia evaluată este adevărată,
funcţia returnează rezultatul acţiunii val_adevăr. În caz contrar este returnat rezultatul acţiunii val_fals.
Dacă val_fals lipseşte, iar condiţia este evaluată ca fiind falsă se va returna valoarea FALSE. Pentru
testarea unor condiţii complexe /multiple se pot construi IF-uri imbricate prin plasarea altor func
ţii
IF() în val_adevăr şi /sau în val_fals, sau pot fi folosite funcţiile AND( ) şi OR( ).
Funcţia AND( ) are rolul de a reuni condiţii în care toate argumentele logice trebuie să
respecte condiţia stabilită. Formatul general este =AND(argument1; argument2;…), cu precizarea că
argumentele trebuie să fie valori logice unice. Funcţia returnează TRUE dacă toate argumentele logice
sunt adevărate şi FALSE dacă cel puţin un argument este fals.
Funcţia OR( ) are acelaşi format cu funcţia AND() şi este folosită pentru obţinerea condiţiilor
multiple în care este suficient ca măcar unul dintre argumente să respecte condiţia specificată. Altfel,
funcţia va returna valoarea FALSE dacă nici unul dintre argumentele folosite nu respectă condiţia.
Funcţia NOT( ) inversează condiţia de test logic în cadrul unei funcţii IF(). Formatul general
este =NOT(argument), funcţia având rolul de a inversa valoarea argumentului de la TRUE la FALSE
şi invers.
Funcţiile TRUE( ) şi FALSE( ) returnează întotdeauna TRUE şi respectiv FALSE putând fi
folosite în construcţiile utilizatorului chiar şi f ăr ă parantezele rotunde.
Funcţii matematice. Acest tip de funcţii ofer ă facilităţi pentru efectuarea unei game deosebit
de variate de calcule matematice, ştiinţifice, inginereşti etc. În calculele economice sunt utilizate:
=SUM(), =SUMIF(), =PRODUCT(), =INT(), =ROUND().
Funcţia SUM( ) este cea mai utilizată funcţie, motiv pentru care în bara de instrumente
Standard este disponibilă pictograma AutoSum-Σ specializată în însumarea conţinutului celulelor unei
foi de calcul. Prin AutoSum, implicit, este însumat con ţinutul numeric al celulelor plasate la stânga sau
deasupra celulei curente. Pentru o totalizare rapidă a fiecărei coloane dintr-un tabel, se selectează tot
tabelul (cu mouse-ul sau cu combinaţia Ctrl+Shift+*), după care se activează AutoSum. Procedura
funcţionează şi pentru domenii neadiacente. După selectarea acestora, executând clic pe AutoSum,
totalurile vor apărea la baza coloanelor sau în dreapta liniilor selectate. Funcţia SUM() are formatul
general =SUM(argment1;argument2;…) şi calculează suma argumentelor specificate (maxim 30).
Funcţia SUMIF( ) calculează suma tuturor celulelor dintr-un domeniu care verifică o condiţie
stabilită. Formatul general este =SUMIF(domeniu, condiţie, domeniu_sumă). Întotdeauna condiţia este
precizată sub forma unui şir de caractere inclus între ghilimele.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 58/149
58 Instrumente software pentru afaceri
Funcţii de căutare şi referire. Funcţiile din această categorie asigur ă căutarea şi returnarea unor
valori dintr-un anumit domeniu. În aplicaţiile economice cele mai utilizate funcţii de acest tip sunt
=VLOOKUP() şi =HLOOKUP().
Funcţia HLOOKUP( ) permite realizarea căutărilor pe orizontală, pe rândul din partea de sus
a unui tabel, până la găsirea unei valori de comparare adecvate. Formatul general este:=HLOOKUP(val_căutată, matrice_tabel, nr_linie_index, dom_căutare). Funcţia începe căutarea
valorii specificate în prima linie a domeniului definit, după care căutarea continuă, pe verticală şi se
opreşte în linia specificată prin nr_linie_index. Domeniul de căutare este o valoare logică opţională
(TRUE (implicită) sau FALSE) şi permite returnarea exactă a valorii căutate sau a unei valori
aproximative.
Funcţia VLOOKUP( ) efectuează căutarea pe verticală a unui element în coloana cea mai din
stânga a unui domeniu dintr-o tabelă indexată. Formatul este asemănător cu cel al funcţiei
HLOOKUP(). Dacă nu este găsită valoarea dorită, funcţia va returna, următoarea valoare mai mare,
decât cea căutat
ă.
3.3.2.2 Utilizarea principalelor func ţ ii Excel în domeniul economic
Calculul amortiz ării: SLN(), DDB() şi SYD()
Se achiziţionează un utilaj la preţul de 17.000.000.000 lei. Durata de viaţă a acestuia este
estimată la 7 ani. Să se calculeze amortizarea corespunzătore fiecăruia din cei 7 ani până la
amortizarea completă a utilajului. Valoarea reziduală este egală cu zero. În figura 3.36 sunt prezentate
funcţiile şi rezultatele aplicării acestora.
Figura 3.36 Calculul amortizării – formule şi rezultate
Formula poate fi editată în bara de formule sau în fereastra Insert Function dacă se activează
constructorul de funcţii (figura 3.37).
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 59/149
Invăţământ la distanţă – Anul I 2008/2009 59
Figura 3.37 Fereastr ă de stabilire a argumentelor unei func ţ ii
Calculul anuit ăţ ilor: FV(), PV(), IRR(), RATE()
Funcţia FV(). O persoană fizică depune la o bancă, în contul său, suma de 15.000 €. Timp de
cinci ani îşi propune să depună anual câte 3.500 €. Să se calculeze soldul contului la sfâr şitul
perioadei, ştiind că dobânda anuală va fi constantă, în procent de 5,5%. Depunerile pot fi f ăcute la
sfâr şitul sau începutul fiecărui an. Valoarea prezentă şi plăţile periodice vor fi preluate cu semnul
minus deoarece ele reprezintă ieşiri de fluxuri de numerar pentru depunător. După cum se observă în
figura 3.38, în bara de formule, în celula C10 s-a calculat valoarea viitoare în condiţiile plăţilor la
sfâr şitul perioadei (valoarea argumentului tip este 0). În celula C11, pentru cazul plăţilor efectuate la
începutul perioadei, argumentul tip este egal cu 1.
Figura 3.38 Funcţia FV() Figura 3.39 Funcţia PV()
Funcţia PV(). O societate de asigur ări ofer ă poliţe de asigurare prin care asiguratul poate să
beneficieze de 18.000 Euro, cu condiţia să se plătească trimestrial, timp de 15 ani câte 150 €. Dobânda
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 poliţe de asigurare? (figura 3.39)
Funcţia IRR(). Un investitor dispune de 100.000.000 lei şi îi investeşte în comer ţul cu
amănuntul. El prognozează să obţină de pe urma acestei investiţii, în următorii 4 ani, următoarele
venituri 35.000.000 lei, 27.500.000 lei, 29.000.000 lei şi 45.000.000 lei. Să se calculeze rata internă derentabilitate a investiţiei, aproximarea rezultatului fiind de 10%. Reamintim că investiţia iniţială
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 60/149
60 Instrumente software pentru afaceri
trebuie introdusă cu semnul minus, fiind o “plată”. Modelul proiectat pentru acest exemplu este
prezentat în figura 3.40.
Figura 3.40 Funcţia IRR() Figura 3.41 Funcţia RATE()
Funcţia RATE(). Să se calculeze dobânda care ar trebui percepută la un împrumut de
300.000.000 lei acordat pe o perioadă de 5 ani, dacă se doreşte ca rambursările lunare să fie de
10.000.000 lei (figura 3.41).
Func ţ ii logice - IF() În funcţie de vechimea în muncă să se stabilească valoarea sporului cuvenit salariaţilor unei
firme. Tranşele de vechime şi sporurile aferente sunt reglementate prin lege:
Tranşa de vechime (ani) % spor vechime<3 0
3-5 5%5-10 10%10-15 15%15-20 20%>20 25%
Figura 3.42 Func ţ ia IF()
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 61/149
Invăţământ la distanţă – Anul I 2008/2009 61
În figura 3.42 a fost proiectat un model în care s-a folosit funcţia IF() în combinaţie cu o altă
funcţie logică AND() pentru a verifica apartenenţa la un anumit interval a valorilor vechimii exprimată
în ani. Funcţia a fost construită pentru primul salaria din listă (celula E6), apelându-se adresele relative
pentru valorile aferente vechimii şi salariului de bază. În bara de formule este afişată funcţia 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 funcţia este copiată pentru toţi salariaţii, în celulele coloanei Valoare spor vechime.
Func ţ ii de căutare: VLOOKUP(), HLOOKUP()
Funcţia VLOOKUP. Din statul de plată simplificat, pentru o marcă specificată să se
„găsească” Numele şi prenumele şi Salariul de bază. Respectând restricţiile funcţiei de căutare pe
verticală, prima coloană este ordonată ascendent (ordinea crescătoare numerelor de marcă a
salariaţilor). În celula A22 se va introduce numărul de marcă dorit, iar în celulele B22 şi C22 sunt
construite funcţiile Vlookup() de „găsire” a datelor căutate (figura 3.43).
Figura 3.43 Func ţ ia VLOOKUP() Figura 3.44 Func ţ ia HLOOKUP()
Funcţia HLOOKUP(). Din situaţia centralizatoare a vânzărilor pe raioane, în perioada 2001-
2005, să se afle care a fost, în anul 2004, volumul vânzărilor la raionul Jucării. În figura 3.44 în bara
de formule este afişată funcţia Hlookup() şi argumentele folosite pentru B18.
3.4. CREAREA ŞI FORMATAREA GRAFICELOR
Excel asigur ă transformarea datelor numerice în imagini grafice informaţiile reprezentate
devenind mult mai sugestive şi mai uşor de interpretat. Fiecare element de informaţie din grafic se
numeşte 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 obţinerea unei game diversificate de grafice, fiecare
corespunzând unui anumit mod de aranjare şi analizare a datelor. În acest scop se activează modulul
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 62/149
62 Instrumente software pentru afaceri
Chart Wizard , fie din bara de instrumente Standard, prin pictograma Chart Wizard , fie din meniul
Insert, prin opţiunea Chart (figura 3.45).
Figura 3.45 Activarea modulului grafic şi Meniul Graph
Implicit, în bara meniu devine disponibil meniul Chart ale cărui opţiuni permit definirea şi
modificarea unui grafic. Primele patru opţiuni corespund celor patru paşi pe care îi presupune
obţinerea unui grafic sub asistenţa Chart Wizard. Fiecare pas are o fereastr ă proprie în care se pot
stabili elemente suplimentare.Exemplificăm procedura de obţinere a graficelor cu datele ce reprezintă volumul vânzărilor,
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 stabileşte modelul /tipul de grafic (figura 3.47). Graficele sunt
organizate în două liste: Standard (lista Standard Type conţine modelele standard: Column, Bar, Line,
Pie etc.) şi Custom (lista Custom Type conţine modele personalizate).
Alegerea tipului de grafic trebuie f ăcută în aşa fel încât să se potrivească cel mai bine cu datele
şi cu ceea ce doreşte utilizatorul să sugereze prin respectivul grafic (comparaţii, structuri etc.). Pentru
domeniul economic, principalele categorii de grafice şi tipurile de date pentru a căror reprezentare sunt
adecvate sunt prezentate în continuare.
Graficele Column (coloană) sunt implicite şi sunt folosite, în general, pentru compararea, în
acelaşi 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 axaorizontală şi domeniile pe axa verticală.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 63/149
Invăţământ 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 par ţilor dintr-un întreg, putându-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 destructur ă sunt graficele Doughtnut (inel) care sunt folosite pentru reprezentarea în acelaşi grafic mai
multor serii de date.
Graficele Line (linie) compar ă tendinţele sau evoluţiile 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ţă
relaţiile între diferite serii de valori dependente de acelaşi parametru.
Graficele combinate afişează două tipuri de diagrame în acelaşi 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 obţine 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 stabileşte 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 funcţie de obiectivul urmărit, 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
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 64/149
64 Instrumente software pentru afaceri
Implicit, sunt reprezentate datele din domeniul selectat. Pagina Series permite stabilirea sau
modificarea explicită a fiecărei serii de date. Este posibilă şi adăugarea (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 îmbunătăţit prin definirea anumitor
opţiuni. Excel deschide fereastra Chart Options organizată, în funcţie de tipul de grafic, pe mai multe
cadre de pagină, care conţin opţiuni pentru rafinarea unui grafic pentru a fi sugestiv şi mai uşor de
interpretat. În principal, sunt asigurate următoarele operaţii:
• stabilirea titlurilor pentru grafic şi axele utilizate – Titles (figura 3.50);
Figura 3.50 Fereastra Chart Options – Titles
• stabilirea modului de afişare a etichetelor pentru axa OX şi dacă vor fi sau nu afişate
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);
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 65/149
Invăţământ la distanţă – Anul I 2008/2009 65
Figura 3.51 Fereastra Chart Options – Gridlines Figura 3.52 Fereastra Chart Options – Legend
• stabilirea poziţiei legendei şi dacă aceasta va fi sau nu afişată – Legend (figura 3.52);
• plasarea sau nu a unor etichete de tip text sau valoare corespunzătoare datelor reprezentate
- Data Labels (figura 3.53);
• plasarea sub grafic a unui tabel ce conţine 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 stabileşte locaţia în care va fi salvat graficul
obţinut (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ă oserie de opţiuni care permit, în principal, reluarea independentă a fiecărui pas prezentat mai sus.
Figura 3.55 Fereastra Chart Location
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 66/149
66 Instrumente software pentru afaceri
Figura 3.56 Salvarea unui grafic
3.5. LISTE ŞI BAZE DE DATE ÎN EXCEL
Pe lângă performanţe în calculule cu numere şi în operaţiuni cu formule şi funcţii complexe,
Excel permite şi lucrul cu liste. Prin list ă se înţelege o colecţie de elemente denumite înregistr ări
(records), fiecare înregistrare fiind structurată în câmpuri ( fields). Această organizare se aseamănă 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 câteva reguli:
• fiecare înregistrare este memorată pe o singur ă linie şi fiecare câmp este definit ca o
singur ă coloană;
• listele au un antet opţional (header row) constituit din prima linie din listă şi care indică
numele câmpurilor listei;
• pentru câmpuri este recomandată folosirea unor nume scurte prin care să se sugereze
conţinutul informaţional al datelor încărcate;
• într-o listă pot fi organizate orice tip de date: text, cifre, date calendaristice, imagini etc.;
• datele unei coloane trebuie să fie de acelaşi tip, ele fiind valori pentru un singur câmp;
• între antetul listei şi articolele listei nu trebuie să apar ă linii libere;
• pentru fiecare articol trebuie să existe cel puţin un câmp încărcat cu date.Organizarea şi gestionarea datelor dintr-o listă sau bază de date se realizează cu ajutorul
opţiunilor meniului Data.
3.5.1 Introducerea datelor în liste /baze de date
Încărcarea 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 încărcate 16 înregistr ări ce conţin informaţii privind salariaţii unei unităţi comerciale (figura
3.57).
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 67/149
Invăţământ 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 când sunt în volum mare.
Sortarea permite organizarea datelor în ordine alfabetică sau numerică, ascendentă sau
descendentă. Operaţia 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 câmpurile
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 sort ării
3.5.3 Regăsirea şi filtrarea listelor /bazelor de date
Regăsirea datelor încărcate în liste sau baze de date se poate realiza în două moduri:
• folosind din formularul de date Data Form butonul de opţiuni Criteria;
• folosind comanda Filter, din meniul Data.
Formularul de date ofer ă posibilitatea căutării şi editării, la un moment dat, a unei singure
înregistr ări, în timp ce opţiunea Filter afişează, în acelaşi timp, toate înregistr ările care respectă
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 68/149
68 Instrumente software pentru afaceri
criteriul /criteriile stabilite. La rândul lor, filtrele pot fi obţinute cu ajutorul comenzilor AutoFilter şi
Advanced Filter.
3.5.3.1 Auto filtrarea
Comanda AutoFilter permite accesul rapid la informaţiile care r ăspund condiţiei /condiţiilor
de filtrare afişându-le peste înregistr ările din foaia de calcul. La lansarea acestei comenzi, în dreapta
fiecărui nume de câmp este plasat un buton-săgeată care, dacă este activat, permite selectarea sau
construirea criteriului /criteriilor de selecţie.
În listele subordonate butoanelor sunt disponibile opţiuni generale sau specifice fiecărui
câmp în parte.
Opţiunea All este implicită, în listă fiind prezente toate înregistr ările. În plus, după o filtrare
anterioar ă, această opţiune reface lista iniţială.
Opţiunea Top 10 poate fi folosită numai în coloanele ce conţin numere sau date calendaristiceşi permite extragerea celor mai mari sau mai mici valori din listă pe baza unui număr sau a unui
procent ales de utilizator.
Custom permite crearea unor condiţii folosind operatori relaţionali (>, <, >=, <= etc.). Pentru
expresii compuse se folosesc butoanele de opţiuni AND sau OR .
Blanks permite afişarea tuturor înregistr ărilor din baza de date care, în coloana curentă, conţin
celule libere (în care nu au fost introduse date). NonBlanks are efectul invers opţiunii Blanks afişând
înregistr ările ce conţin date în coloana curentă de filtrare.
Valorile câmpurilor permit extragerea din baza de date numai a articolelor care conţin
valoarea selectată. De exemplu, din baza de date să se extragă doar articolele care conţin informaţii privind economiştii. Se va realiza un filtru pe câmpul Functie pentru articolele care conţin şirul de
caractere “economist ” (figura 3.61).
Figura 3. 60 Comanda AutoFilter Figura 3.61 Rezultatul unui AutoFiter
Prin AutoFilter se pot construi condiţii oricât de complexe singurul aspect negativ al opţiunii
putându-l constitui suprascrierea rezultatelor filtrului peste datele de intrare. Cu opţiunea Show All,
din comanda Filter înregistr ările pot fi reafişate.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 69/149
Invăţământ la distanţă – Anul I 2008/2009 69
3.5.3.2 Filtrarea avansat ă
Comanda Advanced Filter este folosită când se doreşte obţinerea, în afara tabelului propriu-
zis, a unei liste distincte cu înregistr ările care îndeplinesc condiţia /condiţiile de filtrare. Pentru aceasta
este necesar ă definirea a trei zone distincte: zona datelor de intrare; zona criteriilor de filtrare şi zonadatelor de ieşire. Legătura între aceste zone se realizează prin intermediul numelor de câmpuri.
Zona datelor de intrare reprezintă domeniul înregistr ărilor din baza de date ce va fi supus
restricţiilor de filtrare. Este obligatorie includerea în această zonă a numelor de câmpuri şi a coloanelor
folosite la construirea criteriilor de filtrare.
Zona criteriilor de filtrare este definită pentru condiţiile de filtrare şi trebuie să cuprindă pe
prima sa linie numele câmpului sau câmpurilor cu care se construiesc aceste restricţii. Zona criteriilor
nu trebuie să conţină linii goale, iar numele de câmpuri trebuie să fie ortografiate exact ca şi numele
câmpurilor din baza de date (zona datelor de intrare). Criteriile pot fi simple sau multiple. În cazul
celor multiple ele pot fi plasate pe aceeaşi linie sau pe linii diferite. Criteriile construite pe aceeaşi linie
trebuie să fie îndeplinite în totalitate pentru ca o înregistrare să fie selectată în rezultatul filtrului.
Zona datelor de ieşire este declarată pentru copierea înregistr ărilor care respectă criteriul
/criteriile de filtrare, într-o altă zonă decât cea a datelor de intrare.
Pentru exemplificare, din baza de date Salariaţi să se extragă lista economiştilor care au un
salariu de bază mai mare de 25.000.000 lei . La selectarea comenzii Advanced Filter se deschide o
fereastr ă cu acelaşi nume (figura 3.62). Rezultatul filtr ării poate fi dirijat în zona datelor de intrare
(butonul de opţiuni Filter the list, in-place), sau într-o locaţie stabilită prin definirea unei zone a
datelor de ieşire (butonul de opţiuni 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
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 70/149
70 Instrumente software pentru afaceri
• Copy to (pentru zona datelor de ieşire). Zona Copy to poate fi utilizată numai după
selectarea butonului de opţiuni Copy to another location.
3.5.3.3 Func ţ ii pentru bazele de date
Bazele de date Excel pot fi prelucrate şi cu ajutorul unor funcţii specifice, care au în sintaxă
trei argumente:
• grupul de intrare care conţine baza de date sau o parte din aceasta;
• câmpul a cărui valori vor fi supuse prelucr ării; câmpul se precizează prin numărul de
ordine a coloanei pe care se găseşte sau prin numele său, scris între ghilimele;
• criteriul este zona în care se specifică restricţia /restricţiile de selecţie. Această zonă
include pe o linie numele câmpului / câmpurilor (aşa cum este scris în zona grupului de
intrare), şi în celula /celulele de sub numele de câmp /câmpuri se precizează condiţia de
selecţie propriu-zisă.În figura 3.63 sunt exemplificate câteva funcţii de lucru cu bazele de date.
Figura 3.63 Func ţ ii pentru baze de date
3.5.4 Facilităţi privind simularea datelor
Folosind teoria jocurilor Ce s-ar întâmpla 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 dispoziţie două posibilităţi:
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 71/149
Invăţământ 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 /funcţii;
• să schimbe două date de intrare pentru a vedea efectul produs asupra unei singure formule /funcţii.
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 înfuncţie de care Excel va realiza simularea. Realizarea simulărilor presupune o formulă /funcţie în care
se foloseşte variabila /variabilele ce se modifică.
Pentru exemplificare s-a utilizat funcţia PMT() care stabileşte plata constant ă de efectuat
pentru un credit /împrumut pe o perioada determinată (un număr de ani /luni) şi cu o rată a dobânzii
constantă.
3.5.4.1 Simularea cu una sau două variabile
Atunci când se modifică pe coloană, o singur ă variabilă, (în exemplul prezentat mai jos, ratadobânzii) se parcurg următorii paşi (figura 3.64):
Figura 3.64 Simularea cu o variabil ă - Rezultate
• se generează, pe coloană (în zona B12:B25) o serie de potenţiale valori ale ratei dobânzii(între 8,5% şi 15%);
• cu o linie mai sus, în coloana următoare (celula C11) se editează funcţia din celula (C8);
• se selectează zona în care vor fi afişate valorile simulării (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 conţine variabila ce se modifică ($C$6);
se activează butonul de comandă OK .
Când se modifică două variabile (figura 3.65), paşii pentru realizarea simulării sunt:
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 72/149
72 Instrumente software pentru afaceri
Figura 3.65 Simularea cu două variabile – Rezultate
• se generează, pe coloană (în zona B12:B25) o serie de potenţiale valori ale ratei dobânzii
(între 8,5% şi 15%), iar pe linie (C11:I11) o serie de potenţiale valori pentru numărul de ani
(între 10 şi 22);
• în celula B11 (situată în colţul stânga-sus a zonei de simulare cu două variabile) se reeditează
funcţia sau conţinutul 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 conţine variabila ce se
modifică pe linie (numărul de ani - $C$5), iar în zona Column input cell celula din zona
datelor de intrare care conţine variabila ce se modifică pe coloană (rata dobânzii - $C$6);
• se activează butonul de comandă OK .
Observa ţ ie! S-a for ţat plasarea ferestrei Table pentru a se observa care dintre variabile se
modifică pe coloană şi care pe linie.
După obţinere, 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 uşor şi rapid sunt
estimate vizual situaţiile scontate de utilizator.
În continuare este prezentat un exemplu în care, plecând de la un grafic de tip Column 2D,
realizat pe baza datelor din foaia de calcul ce conţine 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 încât să se ajungă la un anumit nivel al profitului. Concret
întrebarea este: Cu cât ar fi trebui să crească veniturile (cheltuielile r ămânând acelea şi), pentru ca în
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 73/149
Invăţământ 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 obţinut 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 corespunzătoare profitului din luna decembrie), se
foloseşte tehnica drag&drop şi prin tragere în sus /jos se stabileşte valoarea ţ int ă /scop (figura 3.67).
Deoarece profitul se obţine pe baza unei formule (Venituri – Cheltuieli), automat Excel activează
instrumentul Goal Seek cerând 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 „găseşte” soluţie (figura 3.69) se modifică automat
atât graficul cât şi celula din foaia de calcul (figura 3.70).
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 74/149
74 Instrumente software pentru afaceri
Figura 3.69 Fereastra Goal Seek Status
Figura 3.70 Rezultatul simul ării pe bază de grafic
Într-un grafic pot fi trasate şi linii care prefigurează evoluţiile şi tendinţele 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 opţiuni se selectează tipul de tendinţă dorit (liniar, exponenţial, logaritmic etc.). Din pagina
Options se poate stabili prin Forecast , numărul de perioade ulterioare (Forward) pentru care se
doreşte estimarea tendinţei, sau numărul de perioade anterioare (Backward) pentru a sugera evoluţia
începând cu o perioadă necuprinsă în foaia de calcul (figurile 3.71 şi 3.72).
Figura 3.71 Fereastra Add Trendline
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 75/149
Invăţământ la distanţă – Anul I 2008/2009 75
Figura 3.72 Estimarea tendin ţ ei î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 aplicaţiilor sunt proiectate în foile de calcul , care sunt organizate înregistre de lucru.
Celulele foilor de calcul se identifică prin adrese (relative, absolute şi mixte). Introducerea datelorse realizează în celula curent ă.
Graficele sunt reprezentări sugestive ale datelor organizate în foile de calcul.
Apelând la teoria jocurilor, în Excel sunt posibile analize de tip „ What if ?- Ce se întâmpl ă
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. câmpurile
b. înregistr ărilec. numele câmpurilor
Ce se va afişa în celula F8 după copierea funcţiei din F7?D E F
7 10 10 =IF(E7+$D$7>35,”DA”,”NU”)8 20 209 30 30a. DA
b. ERRc. NU
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 76/149
76 Instrumente software pentru afaceri
Capitolul 4
MODELUL RELAŢIONAL DE ORGANIZARE A BAZELOR DEDATE
Obiective:
vi. Conturarea importanţei bazelor de date în sistemele informaţionaleactuale
vii. Expunerea principalelor noţiuni ale bazelor de date relaţionale: relaţie(tabelă), tuplu (linie), coloană (atribut)
viii. Prezentarea restricţiilor ce pot fi declarate şi gestionate într-o bază dedate relaţională
ix. Înţelegerea raportului dintre schema şi conţinutul unei baze de date
Rezultate aşteptate:
x. Cunoaşterea elementelor ce definesc bazele de date, avantajele şievoluţia acestora
xi. Înţelegerea arhitecturii unei baze de datexii. Familiarizarea cu elementele de fundament ale modelului relaţional
xiii. Identificarea modalităţilor prin care, cu ajutorul restricţiilor –atomicitate, nenulitate, unicitatea liniilor, cheie primară, cheie străină (restricţie referenţială), reguli de validare la nivel de atribut, reguli de
validare la nivel de înregistrare – poate fi ameliorat gradul decorectitudine a informaţiilor stocate în bază xiv. Un prim contact cu modul de declarare a restricţiilor în Sistemele de
Gestiune a Bazelor de Date (ACCESS)xv. Înţelegerea raportului dintre schema şi conţinut unei baze de date,
precum şi a modalităţilor de prezentare ale acestora în SGBDACCESS
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 77/149
Invăţământ la distanţă – Anul I 2008/2009 77
4.1. CÂTE CEVA DESPRE BAZE DE DATE
Simplificând şi exagerând nepermis lucrurile, am putea spune că există doi poli între care
poate fi poziţionată orice problemă informatică. Pe de o parte, cel al chestiunilor interesante, nuneapărat cu formule şi calcule complexe, cât o anume ingeniozitate în rezolvare - mult invocata şi
aşteptata "fisă". Imaginea clasică a informaticianului mioritic (un informatician f ăr ă ochelari, adidaşi
şi blugi este unul îndoielnic, dacă nu insuportabil !) este cea a unui programator preocupat permanent
să găsească o funcţie recursivă care să-i rezolve o problemă neapărat de logică superioar ă.
Celălalt pol regrupează probleme în care complexitatea calculelor rareori depăşeşte nivelul
celor patru operaţii aritmetice elementare - adunare, scădere şi încă două; în schimb, volumul
informaţiilor şi zecile/sutele moduri de regrupare şi agregare a lor este deconcertant.
Făr ă a face concurenţă vreunui manual de filosofie, putem spune că, din păcate, ca şi în viaţă,
ponderea problemelor din a doua categorie – să le spunem plicticoase – este mult mai mare decât ponderea problemelor cu adevărat interesante. Aceasta ar fi vestea proastă. Vestea bună este că se
câştigă enorm de mulţi 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 raţiuni didactice &
pedagogice.
Cert este că, încă de la începuturile sale, informatica a fost confruntată nu numai cu efectuarea
de calcule sofisticate, ştiinţifice, dar şi cu stocarea şi gestionarea unui volum de informaţii din ce în ce
mai mare. Astfel încât apariţia unor instrumente software dedicate gestiunii şi prelucr ării datelor a fost
doar o problemă de timp.
4.1.1. La început a fost fişierul
Prima care a resimţit acut nevoia unor instrumente software dedicate administr ării unor
cantităţi imense de informaţii a fost armata SUA. În a doua parte a anilor '50 Departamentul Apăr ării
al SUA a format un grup de specialişti pentru elaborarea unui limbaj destinat aplicaţiilor
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
apăruse FLOWMATIC, limbaj precursor celui care a fost considerat câteva decenii regele informaticii
economice – COBOL (Common Business Oriented Language).Arhitectura aplicaţiilor de acest tip – specifică nu numai COBOL-ului, ci multor limbaje din a
III-a generaţie, denumită flat-files architecture – tradusă, într-o doar ă, în româneşte drept fi şiere
independente – este reprezentată în figura 4.1. Specific acestui mod de lucru, referit ca file-based sau
flat files (fişiere independente), este faptul că fiecare dată (Data1, Data2,... Datan) este descrisă (nume,
tip, lungime), autonom, în toate fişierele în care apare. Mai mult, descrierea fiecărui fişier de date
(câmpurile care-l alcătuiesc, tipul şi lungimea fiecăruia, modul de organizare (secvenţial, indexat,
relativ etc.)) este obligatorie în toate programele care îl “citesc” sau modifică. Între FIŞIER1,
FIŞIER2, ... FIŞIER n nu există nici o relaţie definită explicit.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 78/149
78 Instrumente software pentru afaceri
Data 1Data 2
Data 3
Data 4
Data 2
Data 4
Data 5
Data 6
Data 1
Data 5
Data 7
Data 8
FIŞIER 1
FIŞIER 2
FIŞIER 3
PRELUCRARE 1
PRELUCRARE 2
PRELUCRARE 3
Raport 1
Fişier delegături
Raport 4
Raport 3
Raport 2
Raport 5
DATE FIŞIERE PRELUCR ĂRI IEŞIRI
Figura 4.1. Sistem informatic bazat pe organizarea datelor în fi şiere independente
Spre exemplu, Data2 este prezentă în două fişiere de date, FIŞIER1 şi FIŞIER2. Dacă, prin
program, se modifică formatul sau valoarea acesteia în FIŞIER1, modificarea nu se face automat şi în
FIŞIER2; prin urmare, o aceeaşi dată, Data2, va prezenta două valori diferite în cele două fişiere, iar
necazurile bat la uşă: informaţiile furnizate de sistemul informatic sunt redundante şi prezintă un mare
risc de pierdere a coerenţei.
Se poate proiecta un mecanism de menţinere a integrităţii datelor, astfel încât actualizarea unei
date într-un fişier să atragă automat actualizarea tuturor fişierelor de date în care aceasta apare, însă, în
sistemele mari, care gestionează volume uriaşe de informaţii, implementarea unui asemenea mecanismeste extrem de complexă şi costisitoare. În plus, fişierele de date sunt uneori proiectate şi
implementate la distanţe mari în timp, în formate diferite: de exemplu, FIŞIER1 este posibil să fi fost
creat cu ajutorul limbajului COBOL, FIŞIER2 în FORTRAN iar FIŞIER3 în BASIC. În asemenea
condiţii, punerea în oper ă a mecanismului de menţinere a integrităţii devine o utopie.
Chiar numai şi din cele prezentate mai sus, se pot desprinde câteva dezavantaje ale organizării
datelor după modelul fişierelor independente:
Redundan ţ a şi inconsisten ţ a datelor : o aceeaşi dată apare în mai multe fişiere; în aceste cazuri
există riscul modificării acesteia într-un fişier f ăr ă a face modificările şi în toate celelalte fişiere.
Dificultatea accesului. Într-o întreprindere, o aceeaşi informaţie este exploatată de mai mulţiutilizatori. Spre exemplu, pentru departamentul care se ocupă cu gestiunea stocurilor, intr ările de
materiale trebuie ordonate pe magazii (depozite) şi repere, în timp ce pentru departamentul care se
ocupă cu decontările cu partenerii de afaceri ai întreprinderii, intr ările trebuie ordonate pe furnizori ai
materialelor. Or, fişierele tradiţionale nu facilitează accesarea datelor după mai multe criterii, specifice
diferiţilor utilizatori sau grupuri de utilizatori.
Izolarea datelor : când 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 tranzacţii.
Complexitatea apă sătoare a actualizărilor . O actualizare presupune adăugarea, modificarea
sau ştergerea unor informaţii din fişiere. Cum prelucr ările se desf ăşoar ă în timp real, de la mai multeterminale (în mediile multi-utilizator), pot apare situaţii conflictuale atunci când doi utilizatori doresc
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 79/149
Invăţământ la distanţă – Anul I 2008/2009 79
modificarea simultană a unei aceleaşi date. Rezolvarea acestui gen de conflicte presupune existenţa
unui program-supervizor al prelucr ărilor, care este greu de realizat cu o multitudine de fişiere, create la
distanţă în timp şi, în formate diferite.
Problemele de securitate ţin de dificultatea creării unui mecanism care să protejeze pe deplin
datele din fişiere de accesul neautorizat.Probleme legate de integritatea datelor . Informaţiile stocate în fişiere sunt supuse la
numeroase restricţii semantice. Toate aceste restricţii alcătuiesc mecanismul de integritate a datelor,
deosebit de complex în mediile de lucru multi-utilizator şi eterogene.
Inabilitatea de a ob ţ ine r ă spunsuri 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 fişiere de date şi pentru asigurarea
funcţionării sistemului în condiţiile respectării unui nivel minim de integritate şi securitate a
informaţiilor.
Inflexibilitatea fa ţă de schimbările ulterioare, ce sunt inerente oricărui sistem informa
ţional.
Modelarea inadecvat ă a lumii reale.
Aceste dezavantaje sunt mai mult decât convingătoare, încât vă puteţi întreba dacă au existat
aşa inconştienţi care să-şi arunce banii pe apa... fişierelor independente. Ei bine, o serie de aplicaţii
dezvoltate în anii '60 sau '70 au fost moştenite şi folosite până 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ă funcţionalitatea şi viteza unor asemenea aplicaţii. Şi, nu în ultimul
rând, un mediu economic relativ “aşezat” (vă daţi seama că nu de mediul nostru economic este vorba),
în care nu au fost necesare modificări majore ale procedurilor şi funcţiilor esenţiale.
4.1.2. Baze de date
Sintagma bază de date apare pentru prima dată în titlul unei conferinţe organizate la Santa
Monica (California) în 1964 de System Development Corporation. Consacrarea definitivă a termenului
este marcată de publicarea în anul 1969, de către CODASYL, în cadrul unei conferinţe dedicate
limbajelor de gestiune a datelor, a primului raport tehnic în care este prezentat conceptul de bază de
date. Faţă de modelul fişierelor independente, noutatea o constituie existenţa unui fi şier de descriere
global ă a bazei, astfel încât să se poată asigura independenţa programelor faţă de date, după cum o
arată şi figura 4.2.
Avantajele organizării informaţiilor în baze de date decurg tocmai din existenţa acestui fişierde descriere globală a bazei, denumit, în general, dic ţ ionar de date (alte titulaturi: repertoar de date
sau catalog de sistem). Extragerea şi modificarea datelor, altfel spus, lucrul cu fişierele de date, se
derulează exclusiv prin intermediul dicţionarului în care se găsesc informaţii privitoare la structura
datelor şi restricţiile îndeplinite de acestea.
O bază de date (BD) reprezint ă un ansamblu structurat de fi şiere, care grupează datele
prelucrate în aplica ţ iile informatice ale unei persoane, grup de persoane, întreprinderi, institu ţ ii etc.
Formal, BD poate fi definit ă ca o colec ţ ie de date aflate în interdependen ţă , împreună cu descrierea
datelor şi a rela ţ iilor dintre ele, sau ca o colec ţ ie de date utilizat ă într-o organiza ţ ie, colec ţ ie care
este automatizat ă , partajat ă , definit ă riguros (formalizat ă ) şi controlat ă la nivel central .
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 80/149
80 Instrumente software pentru afaceri
Fişier de date n
Dicţionarde date
B A Z A DE D A T E
Aplicaţia 1
Fişier de date 2
Fişier de date 1
Aplicaţia 2 Aplicaţia 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 fundamentaleaceste acesteia, schema şi con ţ inutul . Organizarea bazei de date se reflectă în schema sau structura sa,
ce reprezintă un ansamblu de instrumente pentru descrierea datelor, a relaţiilor dintre acestea, a
semanticii lor şi a restricţiilor la care sunt supuse. Ansamblul informaţiilor stocate în bază la un
moment dat constituie con ţ inutul sau instan ţ ierea sau realizarea acesteia. În timp ce volumul prezintă
o evoluţie spectaculoasă în timp, schema unei baze r ămâne relativ constantă pe tot parcursul utilizării
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ă conţinutul lor efectiv, ca şi relaţiile care le leagă de alte date.
Reprezintă primul nivel de abstractizare a lumii reale observate. Obiectivul acestui nivel îl constituie
modelarea realităţii considerate, asigurându-se independenţa bazei faţă de orice restricţie tehnologică
sau echipament anume. Toţi utilizatorii îşi exprimă nevoile de date la nivel conceptual, prezentându-le
administratorului bazei de date, acesta fiind cel care are o viziune globală necesar ă satisfacerii tuturor
cerinţelor informaţionale. 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 por ţiune specifică a bazei, în funcţie de departamentul în care îşi
desf ăşoar ă activitatea şi de atribuţiile sale (lor). Simplificarea interacţiunii utilizatori-bază, precum şi
creşterea securităţii 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 funcţie de nevoile fiecărui utilizator sau grup de utilizatori.
Luând î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.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 81/149
Invăţământ la distanţă – Anul I 2008/2009 81
Definirea structuriiinterne de stocare(Schema internă)
Baza de date memorată pe disc
Imagine globală(nivel global)
Interfaţă dintre nivelelefizic şi global
Schemaconceptuală
(globală)
Interfaţă Adintre niveleleglobal şi extern
Interfaţă Bdintre niveleleglobal şi extern
Imagine A(nivel extern) Imagine B(nivel extern)Schemă externăA Schemă externăB
AplicaţieComenziautonome Aplicaţie Aplicaţie Comenzi
autonome
Utilizator A1 Utilizator B1 Utilizator B2 Utilizator B3Utilizator A2
SISTEM DEGESTIUNE A
BAZEIDE DATE
Figura 4.3. Schematizare a unui sistem de lucru cu o bază de date
Posibilitatea modificării structurii la un nivel, f ăr ă a afecta structura nivelului sau nivelelor
superioare, se numeşte autonomie a datelor stocate în bază, analizabilă pe două paliere.
Autonomia fizică reprezintă posibilitatea modificării arhitecturii bazei la nivel intern, f ăr ă ca
aceasta să necesite schimbarea schemei conceptuale
şi rescrierea programelor pentru exploatarea bazei
de date. Asemenea modificări sunt necesare uneori pentru ameliorarea performanţelor de lucru (viteză
de acces, mărimea fişierelor etc.). Tot autonomia fizică este cea care asigur ă portarea bazei de date de
pe un sistem de calcul pe altul f ăr ă modificarea schemei conceptuale şi a programelor.
Autonomia logică presupune posibilitatea modificării schemei conceptuale a bazei (modificare
datorată necesităţii rezolvării unor noi cerinţe informaţionale) f ăr ă a rescrie programele de exploatare.
Autonomia logică a datelor este mai greu de realizat decât autonomia fizică, deoarece programele de
exploatare sunt dependente, în foarte mare măsur ă, de structura logică a datelor pe care le consultă şi
actualizează, în ciuda existenţei dicţionarului de date. Fireşte, un element important îl reprezintă şi
anvergura modificării schemei conceptuale.
Datele stocate într-o BD prezintă, într-o măsur ă mai mare sau mai mică, următoarele
caracteristici:
• partajabilitate – disponibilitate pentru un mare număr de utilizatori şi aplicaţii;
• persisten ţă – existenţă permanentă, din momentul preluării în bază până în momentul
actualizării sau ştergerii;
• securitate – protejarea de accesul neautorizat, atât în ceea ce priveşte citirea şi copierea, cât şi
modificarea şi ştergerea;
• validitate – referită şi ca integritate sau corectitudine – priveşte gradul de adecvare dintre
datele din bază şi realitatea, procesele pe care le reflectă aceste date;
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 82/149
82 Instrumente software pentru afaceri
• consisten ţă – ori de câte ori diverse aspecte ale proceselor sau fenomenelor reale sunt preluate
în bază sub forma a doua sau mai multor entităţi sau atribute, aceste entităţi/atribute trebuie să
fie în concordanţă unele ce celelalte, să respecte relaţiile existente între aspectele
proceselor/fenomenelor reale;
• nonredundan ţă - pe cât posibil, o entitate din realitate ar trebui să aibă un singur corespondentîn baza de date;
• independen ţă – priveşte autonomia logică şi fizică evocate mai sus.
4.1.3. Modele de organizare a datelor în baze
Nucleul unei baze de date îl reprezintă dicţionarul de date ce conţine structura bazei, structur ă
care se materializează prin instrucţiuni scrise cu ajutorul unui limbaj de definire a datelor (DDL).
Analiza, proiectarea şi implementarea structurii (schemei) bazei se realizează utilizând un model de
date. Un asemenea model reprezintă un ansamblu de instrumente conceptuale care permit descrierea
datelor, relaţiilor dintre ele, a semanticii lor, ca şi a restricţiilor 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 esenţiale ale organizaţiei/aplicaţiei, furnizând
conceptele de bază şi notaţiile care vor permite utilizatorilor bazelor de date să comunice clar şi rapid
informaţiile şi cunoştinţele lor despre datele organizaţiei.
O grupare "tradiţională" 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 reprezentanţii 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 r ădăcina (arborele este văzut "cu verdele în jos"). Un nod-tată poate avea
mai multe noduri-fii. Un fiu nu poate exista independent de tatăl său. Legătura (reprezentată prin linie)
se face exclusiv între tată şi fii.
Modelul re ţ ea. Este o dezvoltare a modelului ierarhic, prin care se pot reprezenta şi situaţiile
în care un fiu "posedă" mai mulţi taţi. Înregistr ările sunt privite în BD ca o colecţie de grafuri.
Modelul rela ţ ional a fost următorul în ordinea cronologică şi r ămâne cel care domină copios
piaţa bazelor de date şi la acest moment, motiv pentru care cea mai mare parte a acestui curs îi este
dedicată. Modelul obiectual . Începând cu anii ’60, în programare şi, ceva mai târziu, în analiză şi
proiectare, orientarea pe obiecte (OO) a avut un succes uriaş, reuşit să depăşească metodologiile
structurate. Pe baza acestui succes, s-a crezut că şi în materie de baze de date, modelul obiectual îl va
surclasa pe cel relaţional. Rezultatele sunt însă deprimante pentru suporterii OO-ului, piaţa SGBD OO
fiind sub 6% din valoarea totală a pieţii bazelor de date.
Modelul rela ţ ional-obiectual . Este un model mai recent ce încearcă să valorifice deopotrivă
atuurile relaţionalului cu orientarea pe obiecte. Deşi privit mai degrabă cu neîncrederile în cercurile
teoreticienilor, acest model se impune încet-încet datorită marilor producători de software dedicat
bazelor de date.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 83/149
Invăţământ la distanţă – Anul I 2008/2009 83
4.2. PREZENTARE GENERALĂ A MODELULUI RELAŢIONAL
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 obţinem informaţii din bazele de
date (ceea ce presupune o serie de operatori aplicabili uneia sau mai multor relaţii).Deşi puternic contestat, şi cu neajunsurile sale, modelul relaţional de organizare a bazelor de
date r ămâne cel mai utilizat. Cu foarte puţine excepţii, toate aplicaţiile software realizate pentru bănci,
buticuri, universităţi (ordinea este, în ciuda aparenţelor, pur întâmplătoare) sunt realizate cu
produse/instrumente ce gestionează baze de date relaţionale.
În acest paragraf vom discuta aspectele structurale ale modelului (paragraful 4.2.2) şi pe cele
de integritate (paragraful 4.3), urmând ca în paragraful 5.4 şi mai ales în capitolul 6 să ne ocupăm de
manipularea datelor, altfel spus, de modalităţile în care “stoarcem” de informaţii baza de date.
4.2.1. Puţină istorieModelul relaţional de organizare a datelor s-a conturat în două articole publicate în 1969 şi
1970 de către E.F. Codd, matematician la centrul de cercetări din San Jose (California) al firmei
IBM7. În acel moment, tehnologia bazelor de date era centrată pe modelele ierarhic şi reţea, modele ce
depind într-o mai mare măsur ă 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. Deşi puternic
matematizat, modelul relaţional este relativ uşor de înţeles.
Modelul relaţional al datelor se poate defini printr-o serie de structuri de date (relaţii alcătuite
din tupluri), operaţii aplicate asupra structurilor de date (selecţie, proiecţie, joncţiune etc.) şi reguli de
integritate care să asigure consistenţa datelor (chei primare, restricţii referenţiale ş.a.). Modelarea
realităţii se concretizează în tabele de valori numite relaţii, avându-se în vedere că:
• o relaţie are un nume;• o coloană reprezintă un atribut;• o linie reprezintă un n-uplet (tuplu) de valori ale celor n atribute din relaţie;• ordinea liniilor şi coloanelor în cadrul tabelei nu este relevantă pentru conţinutul
informaţional.Fiecare linie a tabelei reprezintă o entitate sau un fapt al realităţii, în timp ce o coloană
reprezintă o proprietate a acestei entităţi sau fapt. Introducând 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 relaţie între obiecte (persoane, lucruri), cum ar fi: contractele de afaceri, căsătoriile (există totuşi
câteva deosebiri între acestea şi precedentele), structura ierarhică a unei organizaţii etc. În plus, nu e
întotdeauna evident care dintre informaţii sunt entităţi, care atribute şi care asociaţii (relaţii).
Ansamblul valorilor stocate în tabelele reprezintă conţinutul bazei de date, conţinut ce poate fi
modificat prin operaţiuni de actualizare: introducerea unor linii (tupluri) noi, ştergerea unor linii,
modificarea valorii unor atribute.
Faţă de modelele ierarhice şi reţea, modelul relaţional prezintă câteva avantaje:
7Extrase din lucrarea [Codd70] se găsesc la adresa http://www.acm.org/classics/nov95/. De asemenea, oexcelentă analiză a articolelor lui Codd este în [Date98].
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 84/149
84 Instrumente software pentru afaceri
• propune structuri de date uşor de utilizat;• ameliorează independenţa logică şi fizică;• pune la dispoziţia utilizatorilor limbaje ne-procedurale;• optimizează accesul la date;• îmbunătăţeşte integritatea şi confidenţialitatea datelor;
• ia în calcul o largă varietate de aplicaţii;• abordează metodologic definirea structurii bazei de date.
Modelului relaţional îi este asociată teoria normalizării, care are ca scop prevenirea
comportamentului aberant al relaţiilor în momentul actualizării lor, eliminarea datelor redundante şi
înlesnirea înţelegerii legăturilor semantice dintre date.
Deşi IBM a fost prima care a iniţial un proiect destinat elabor ării unui SGBD relaţional
(System/R, începând cu 1974), prima firmă care a lansat primul SGBDR comercial a fost Relational
Software Inc., astăzi Oracle. Înfiinţarea firmei a avut loc în 1977, iar lansarea produsului în 1979.
Impunerea pe piaţă a SGBD-urilor grefate pe modelul relaţional a fost mult mai dificilă decât s-ar
putea înţelege astăzi. Abia în deceniul 9, datorită vitezei ameliorate, securităţii sporite şi mai ales
productivităţii dezvoltatorilor de aplicaţii, modelul relaţional a câştigat supremaţia.
Există o largă tipologie a SGBDR-urilor, aşa încât orice categorisire îşi are riscul său. Cele
mai accesibile şi, implicit, cele mai utilizate sunt SGBD-urile dedicate iniţial uzului individual:
Access, Paradox, Visual FoxPro. Astăzi, multe dintre acestea au caracteristici profesionale şi pot fi
folosite la dezvoltarea aplicaţiilor pentru simulant a zeci de utilizatori.
Pentru aplicaţiile complexe din bănci, corporaţii, organizaţii şi instituţii de mari dimensiuni s-
au 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 f ăcut apariţia, ca alternative la marii coloşi, aşa zisele Free-DBMS -uri,
precum PostgreSQL, MySQL, Interbase etc. Acestea rulează, de obicei, pe sisteme de operare de tip
Linux (foarte ieftine) şi se întrevăd ca adversari serioşi ai marilor producători.
4.2.2. Relaţii/tabele, domenii şi atribute
La modul simplist, o bază de date relaţională (BDR) poate fi definită ca un ansamblu de relaţii
(tabele); fiecare tabelă (sau tabel), alcătuită din linii (tupluri), are un nume unic şi este stocată pe
suport extern (de obicei disc). La intersecţia unei linii cu o coloană se găseşte o valoare atomică
(elementar ă). O relaţie conţine informaţii omogene legate de anumite entităţi, procese, fenomene:
CĂR ŢI, STUDENŢI, LOCALITĂŢI, PERSONAL, FACTURI etc. Spre exemplu, în figura 4.4 este
reprezentată tabela CLIENŢI.
În teoria relaţională se foloseşte termenul rela ţ ie. 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ă informaţii referitoare la un obiect, eveniment etc., altfel spus, informaţii referitoare la o
entitate: o carte (un titlu sau un exemplar din depozitul unei biblioteci, depinde de circumstanţe), un/o
student(ă), o localitate (oraş sau comună), un angajat al firmei, o factur ă emisă etc. Figura 4.5 conţine
al doilea tuplu din tabela CLIENŢI, tuplu referitor la forma MODERN SRL. Linia de mai sus este
alcătuită din patru valori ce desemnează: codul, numele, adresa şi codul poştal al localităţii şi adresei
referitoare la clientul MODERN SRL.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 85/149
Invăţământ la distanţă – Anul I 2008/2009 85
Figura 4.4. Rela ţ ia (tabela) CLIEN Ţ I
Teoretic, orice tuplu reprezint ă o rela ţ ie între clase de valori (în cazul nostru, între patru clase
de valori); de aici provine sintagma baze de date rela ţ ionale, în sensul matematic al relaţiei, de
asociere a două sau mai multe elemente. Fireşte, toate tuplurile relaţiei au acelaşi format (structur ă),
ceea ce înseamnă că în tabela CLIENŢI, 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
poştal. Ordinea tuplurilor nu prezintă importanţă din punctul de vedere al conţinutul informaţional al
tabelei.
Figura 4.5. Un tuplu al tabelei CLIEN Ţ I
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 relaţiei:• într-o tabelă destinată datelor generale ale angajaţilor, pentru atributul Sex, domeniul
este alcătuit din două valori: Femeiesc şi Bărbătesc;
• domeniul atributului Judet este alcătuit din numele fiecărui judeţ (plus Bucureşti).
• domeniul unui atribut precum PreţUnitar , care se refer ă la preţul la care a fost vândut un
produs/serviciu, este cu mult mai larg, fiind alcătuit din orice valoarea cuprinsă între 1
şi 99999999 lei (ceva mai noi).
Şi acum, câteva senzaţii tari (urmează un pic de matematică) ! Dacă notăm cu D1 domeniulatributului 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 CLIENŢI este un tuplu de
patru elemente, iar relaţia în ansamblu corespunde unui subansamblu din ansamblul tuturor tuplurilor
posibile alcătuite din patru elemente, ansamblu care este produsul cartezian al celor patru domenii.
În general, orice relaţie R poate fi definită ca un subansamblu al produsului cartezian de n domenii Di:
R D x D x D x ...x D1 2 3 n⊆ ,n fiind denumit gradul sau ordinul relaţiei. Relaţiile de grad 1 sunt unare, cele de grad 2 - binare, ...,
cele de grad n - n-are. Această definiţie pune în evidenţă aspectul constant al relaţiei, de independenţă
în timp (se spune că în acest caz relaţia este definită ca un predicat).
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 86/149
86 Instrumente software pentru afaceri
O a doua definiţie abordează o relaţie R ca un ansamblu de m-uplete (m-tupluri) de
valori: R = { t , t , ..., t , ..., t }1 2 k m , unde t (d ,d , ..., d ,...,dk k1 k2 ki kn= )
î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 defini ţ ii a unei rela ţ ii
Reprezentarea sub formă de tabelă, deci ca ansamblu de tupluri, pune în evidenţă aspectul
dinamic, variabil al relaţiei. Abordarea predicativă (prima definiţie) sau ansamblistă (a doua definiţie)
reprezintă un criteriu important de delimitare a limbajelor de interogare a bazelor de date relaţionale.
Reţinem corespondenţa noţiunilor rela ţ ie-tabel ă, tuplu-linie şi atribut-coloană.
Numărul de tabele pe care le conţine o bază de date, atributele “adunate” în fiecare tabelă,
domeniul fiecăruia dintre atribute prezintă diferenţe majore de la o bază la alta, chiar dacă uneori
reflectă acelaşi tip de procese. Intr ăm astfel în sfera proiectării bazelor de date, a dependenţelor şi
normalizării.
Relaţia CLIENŢI conţine informaţii despre firmele cărora compania noastr ă le vinde
produsele pe care producem şi/sau comercializăm. 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ă ometavaloare şi indică faptul că, în acel loc, informaţia este necunoscută sau inaplicabilă. Valoarea
NULL este diferită, însă de valorile 0 sau spaţiu. Uneori, importanţa sa este, din păcate, major ă în
expresii şi funcţii, după cum ştiu cei cu oarecare experienţă în limbajului SQL.
4.3. RESTRICŢII ALE BAZEI DE DATE
De ce ne interesează restricţiile într-o bază de date ? Termenul de restric ţ ie este oarecum
iritant, atât pentru studenţi, cât şi pentru profesori, deoarece semnalează existenţa unor constrângeriinstituite şi oarecum obligatorii, şi, de vreme ce sunt impuse, însemnă că nu sunt prea plăcute (decât,
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 87/149
Invăţământ 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
restricţiilor este (supra)vegheată de o anumită autoritate înzestrată cu anumite instrumente de
constrângere, de la bastoane de cauciuc, la creşterea şi scăderea impozitelor, salariilor, banilor de
buzunar etc.
Ei bine, în bazele de date, restricţiile sunt ceva mai acceptabile. Cei care lucrează cu bazele dedate sunt foarte interesaţi în declararea restricţiilor, 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). Esenţial
este că, ajutaţi de restricţii, putem creşte gradul de corectitudine şi de încredere al datelor din bază. În
cele ce urmează vor fi prezentate pe scurt cele mai importante restricţii definibile într-o bază de date
relaţională: restricţia de domeniu, de atomicitate, de unicitate, referenţială şi restricţiile-utilizator.
4.3.1. Restricţia de domeniu
După cum am văzut î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 multemoduri de percepţie a acestei restricţii.
O parte din informaticieni substituie domeniul tipului atributului: numeric, şir de caractere,
dat ă calendaristică, logic (boolean) etc. şi, eventual, lungimii (numărul maxim de poziţii/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 plăcuţele de înmatriculare) poate fi una din
valorile: IS, TM, B etc. reprezintă o restricţie de comportament sau, mai simplu, o restricţie definită de
utilizator.
Cea de-a doua categorie priveşte domeniul deopotrivă sintactic şi semantic. Astfel, domeniul
sintactic al atributului Jud (indicativul judeţului) este un şir de două caractere, obligatoriu litere (sau oliter ă şi un spaţiu, pentru Bucureşti), ş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 aşa-numitele
reguli de validare la nivel de câmp (field validation rule). Sunt însă şi produse la care domeniul poate
fi definit explicit, sintactic şi semantic, dându-i-se un nume la care vor legate atributele în momentul
creării tabelelor.
4.3.2. Atomicitate
Conform teoriei bazelor de date relaţionale, orice atribut al unei tabele oarecare trebuie să fie
atomic, în sensul imposibilităţii descompunerii sale în alte atribute. Implicit, toate domeniile unei baze
de date sunt musai atomice (adică elementare). În aceste condiţii, se spune că baza de date se află în
prima formă normală sau prima formă normalizată (1NF).
Astăzi, atomicitatea valorii atributelor a devenit o ţintă predilectă a “atacurilor duşmănoase” la
adresa modelului relaţional, datorită imposibilităţii înglobării unor structuri de date mai complexe,
specifice unor domenii ca: proiectare asistată de calculator, baze de date multimedia etc. Mulţi autori,
dintre care merită amintiţi cu deosebire Chris J. Date şi Hugh Darwen, se opun ideii de atomicitate
formulată de Codd.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 88/149
88 Instrumente software pentru afaceri
Primele vizate de “stigmatul” neatomicităţii sunt atributele compuse. Un exemplu de atribut
compus (non-atomic) este Adresa. Fiind alcătuită din Stradă, Număr , Bloc, Scar ă, Etaj, Apartament,
discuţia despre atomicitatea adresei pare de prisos, iar descompunerea sa imperativă. Trebuie însă să
ne raportăm la obiectivele bazei. Făr ă îndoială că pentru BD a unei filiale CONEL sau
ROMTELECOM, sau pentru poliţie, preluarea separată a fiecărui element constituent al adresei estefoarte importantă. Pentru un importator direct, însă, pentru un mare en-grossist sau pentru o firmă de
producţie 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 funcţie de circumstanţe, simple sau compuse:
DataOperaţiuniiBancare (Data + Ora), BuletinIdentitate (Seria+Număr ), NrÎnmatriculareAuto (privit
global, sau pe cele trei componente: număr, judeţ, combinaţie trei de litere).
O relaţie (tabelă) în 1NF nu trebuie să conţină atribute care se repetă ca grupuri (grupuri
repetitive). Într-o altă formulare, toate liniile unei tabele trebuie să conţină acelaşi număr de atribute.Fiecare celulă a tabelei (intersecţia unei coloane cu o linie), altfel spus, valoarea unui atribut pe o linie
(înregistrare), trebuie să fie atomică.
4.3.3. Nenulitate
Modelul relaţional acceptă ca, atunci când nu se cunoaşte valoarea unui atribut pentru o
anumite entitate, sau când 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 cunoaşte adresa. Dacă am
avea o tabelă PRODUSE cu atributele CodProdus, DenumireProdus, UM, Culoare, este posibil ca,
pentru anumite sortimente, cum ar tricouri, cămăşi, jachete, atributul să fie important, în timp ce pentru altele, precum vodcă, cafea, lapte atributul culoare să nu furnizeze nici o informaţie, adică să nu
fie aplicabil. Iar dacă laptele poate fi doar alb, vodca chiar că nu are culoare (sunt foarte mulţi
specialişti în acest domeniu, îi puteţi întreba !).
Figura 4.7. Un atribut “for ţ at” să nu primească valori NULL şi un altul “relaxat”
Într-o bază de date relaţională 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 afişează o restricţie de nulitate depinde de la SGBDla SGBD. De exemplu, în Access mecanismul este de tipul celui din figura 4.7. Atributului
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 89/149
Invăţământ la distanţă – Anul I 2008/2009 89
NumeClient din tabela CLIENŢI i se interzic valorile nule, prin setarea opţiunii Required pe valoarea
Yes, în timp ce atributul Adresa din aceeaşi tabelă poate avea valori NULL, Required fiind setat pe
valoarea No.
Ca regulă, atributele importante, ce ţin de identificarea sau caracterizarea unei entităţi, proces,
fenomen, precum şi cele implicitate în calculul unor informaţii importante, sunt declarate NOT NULL,iar atributele f ăr ă importanţă deosebită pot fi mai relaxate.
4.3.4. Restricţia de unicitate
Într-o relaţie nu pot exista două linii identice (două linii care prezintă aceleaşi valori pentru
toate atributele). Mai mult, majoritatea relaţiilor prezintă un atribut, sau o combinaţie de atribute, care
diferenţiază cu siguranţă un tuplu de toate celelalte tupluri ale relaţiei.
Cheia primar ă a unei relaţii (tabele) este un atribut sau un grup de atribute care identifică f ăr ă
ambiguitate fiecare tuplu (linie) al relaţiei (tabelei). După Codd, există trei restricţii pe care trebuie să
le verifice cheia primar ă:• unicitate: o cheie identifică un singur tuplu (linie) al relaţiei.
• compozi ţ ie minimal ă: atunci când cheia primar ă este compusă, nici un atribut din cheie
nu poate fi eliminat f ăr ă distrugerea unicităţii tuplului în cadrul relaţiei; în cazuri
limită, o cheie poate fi alcătuită din toate atributele relaţiei.
• 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 compoziţia cheii primare nu poate avea valori nule; această a treia condiţie se mai
numeşte şi restric ţ ie a entit ăţ ii.
Domeniul unui atribut care este cheie primar ă într-o relaţie este denumit domeniu primar.
Dacă într-o relaţie există mai multe combinaţii 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 CLIENŢI cheia primar ă este simplă - CodClient, CodClient reprezintă un număr unic
asociat fiecărei firme căreia i-am f ăcut vânzări. Există însă suficiente cazuri în care cheia primar ă este
compusă din două, trei ş.a.m.d. sau, la extrem, toate atributele relaţiei. Să luăm spre analiză o relaţie
PERSONAL care conţine date generale despre angajaţii firmei. Fiecare tuplu al relaţiei se refer ă la unangajat, atributele fiind: Nume, Prenume, DataNaşterii, Vechime, SalariuTarifar .
- atributul Nume nu poate fi cheie, deoarece chiar şi într-o întreprindere de talie mijlocie, este
posibil să existe doi angajaţi cu acelaşi nume.
- dacă apariţia a două persoane cu nume identice este posibilă, atunci apariţia a două persoane
cu acelaşi Prenume este probabilă.
- nici unul din aceste atributele DataNaşterii, Vechime, SalariuTarifar nu poate fi "înzestrat"
cu funcţiunea de identificator.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 90/149
90 Instrumente software pentru afaceri
În acest caz, se încearcă gruparea a două, trei, patru ş.a.m.d. atribute, până când se obţine
combinaţia care va permite diferenţierea clar ă a oricărei linii de toate celelalte.
• Combinaţia Nume+Adresă pare, la primele două vederi, a îndeplini "cerinţele" de
identificator. Ar fi totuşi o problemă: dacă în aceeaşi firmă (organizaţie) lucrează
împreună soţul şi soţia ? Ambii au, de obicei, acelaşi nume de familie şi, tot de obicei,
acelaşi domiciliu. Este adevărat, cazul ales nu este prea fericit. Dar este suficient
pentru a “compromiterea” combinaţiei.
• Următoarea tentativă este grupul Nume+Prenume+Adresă, combinaţie neoperantă
dacă în organizaţie lucrează tatăl şi un fiu (sau mama şi o fiică) care au aceleaşi nume
şi prenume şi domiciliul comun.
• Ar r ămâne de ales una dintre soluţiile (Nume+Prenume+Adresă+Vechime) sau
(Nume+Prenume+Adresa+DataNaşterii).Oricare din cele două combinaţii prezintă riscul violării restricţiei de entitate, deoarece este
posibil ca, la preluarea unui angajai în bază, să nu i se cunoască adresa sau data naşterii, caz în care
atributul respectiv ar avea valoarea NULL. Dificultăţile de identificare f ăr ă ambiguitate a angajaţilor au
determinat firmele ca, la angajare, să aloce fiecărei persoane un număr unic, număr denumit Marcă.
Prin adăugarea acestui atribut la cele existente, pentru relaţia PERSONAL problema cheii primare este
rezolvată mult mai simplu. Actualmente, sarcina este simplificată şi prin utilizarea codului numeric
personal (CNP), combinaţie de 13 cifre care prezintă avantajul că r ămâne neschimbată pe tot parcursul
vieţii persoanei.
Revenim la tabela CLIENŢI. Dacă în ţara noastr ă s-ar respecta regula: nu pot exista două
firme cu aceea şi denumire, atunci tabele mai are, pe lângă CodClient, o cheie candidat – NumeClient.
Întrucât CodClient a fost preferată drept cheie primar ă, NumeClient va fi cheie alternativă. În Access
un atribut de tip cheie primar ă are în dreptul său o cheie (de yală) – vezi figura 4.8. Cheile alternative
sunt declarate prin setarea opţiunii Indexed pe valoarea Yes (NoDuplicates).
Figura 4.8. O cheie primar ă şi o cheie alternativă
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 91/149
Invăţământ la distanţă – Anul I 2008/2009 91
4.3.5. Restricţia referenţială
O bază de date relaţională este alcătuită din relaţii (tabele) aflate în legătur ă. Stabilirea
legăturii se bazează pe mecanismul cheii str ăine şi, implicit, a restricţiei referenţiale. Figura 5.5
prezintă o relaţie în care sunt implicate tabelele FACTURI şi CLIENŢI.
Figura 4.9. O restric ţ ie referen ţ ial ă între FACTURI (tabel ă-copil) şi CLIEN Ţ I (părinte)
Atributul CodClient joacă un rol de “agent de legătur ă” între tabelele CLIENŢI şi FACTURI.
Pentru relaţia CLIENŢI, atributul CodClient este cheie primar ă, în timp ce în tabela FACTURI,
CodClient reprezintă coloana de referinţă sau cheia str ăină, deoarece numai pe baza valorilor sale se
poate face legătura cu relaţia părinte CLIENŢI.
Cheile str ăine sau coloanele de referinţă sunt deci atribute sau combinaţii de atribute care punîn legătur ă linii (tupluri) din relaţii diferite. Tabela în care atributul de legătur ă este primar ă se
numeşte tabel ă-părinte (în cazul nostru, CLIENŢI), iar cealaltă tabel ă-copil .
Legat de noţiunea de cheie str ăină apare conceptul de restricţie referenţială. O restricţie de
integritate referenţială apare atunci când o relaţie face referinţă la o altă relaţie. Când două tabele
(relaţii), T1 şi T2, prezintă atributul sau grupul de atribute notat CH, care, pentru T1, este cheie
primar ă, iar pentru T2 cheie str ăină, dacă în T2 se interzice apari ţ ia 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 restric ţ ie referen ţ ial ă.
Instituirea restricţiei referenţiale între tabela CLIENŢI (părinte) şi FACTURI (copil) permite
cunoaşterea, pentru fiecare client, a denumirii localităţii şi a judeţului în care-şi are sediul. Dacă înFATURI 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 părinte CLIENŢI).
Observa ţ ii1. Pentru mulţi utilizatori şi profesionişti ai bazelor de date, denumirea de "relaţional"
desemnează faptul că o bază de date este alcătuită din tabele puse în legătur ă prinintermediul cheilor str ăine. Aceasta este, de fapt, a doua accepţiune a termenului de BDR,
prima, cea "clasică", având în vedere percepţia fiecărei linii dintr-o tabelă ca o relaţie întreclase de valori.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 92/149
92 Instrumente software pentru afaceri
2. Majoritatea SGBD-urilor prezintă mecanisme de declararea şi gestionare automată arestricţiilor referenţiale, prin actualizări în cascadă şi interzicerea valorilor care ar încălcaaceste restricţii.
3. Respectarea restricţiilor referenţiale este una din cele mai complicate sarcini pentrudezvoltatorii de aplicaţii ce utilizează baze de date. Din acest punct de vedere, tentaţia este
a “sparge” baza de date în cât mai puţine tabele cu putinţă, altfel spus, de a avea relaţii câtmai “corpolente”. Gradul de fragmentare al bazei ţine de normalizarea bazei de date, care,ca parte a procesului de proiectare a BD, se bazează pe dependenţele funcţionale,multivaloare şi de joncţiune între atribute.
4.3.6. Restricţii-utilizator
Restricţiile utilizator mai sunt denumite şi restricţii de comportament sau restricţii ale
organizaţiei. De obicei, aceste restricţii iau forma unor reguli de validare la nivel de atribut, la nivel de
linie/tabelă sau a unor reguli implementate prin declanşatoare (triggere).
Reguli la nivel de atribut
O restricţie la nivel de atribut poate preveni introducerea în baza de date a unor valori din alte
intervale decât cele stabilite, în alte formate decât cele acceptate etc. Forma clasică a unei restricţii la
nivel de atribut este o expresie în care apar constante, func ţii-sistem şi, nu în ultimul rând, atributul
respectiv. La orice editare a atributului cu pricina (declanşată în cazul inser ării unei linii în tabela din
care face parte, sau la modificarea sa) expresia este evaluată şi dacă rezultatul evaluării este TRUE
(adevărat), atunci inserarea/modificarea este permisă, iar dacă rezultatul este FALSE, atunci
inserarea/modificarea este blocată.
În partea stângă a figurii 4.10 este ilustrată o regulă de validare conform căreia în tabela
CLIENŢI valorile atributului CodClient trebuie să fie mai mari decât 1000. Rubrica Validation Rule
este cea în care apare expresia-restricţie - [CodClient]>1000 - (observaţi că numele atributului este
scris între paranteze unghiulare), iar în rubrica Validation Text se indică mesajul care va apărea pe
ecran atunci când se încalcă restricţia - Cel mai mic cod de client acceptat este 1001 ! .
Figura 4.10 Două restric ţ ii la nivel de atribut
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 93/149
Invăţământ 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 până în
capitolul următor.
Reguli la nivel de înregistrare
Expresia care defineşte o restricţie la nivel de înregistrare poate conţine două sau mai multe
atribute şi este evaluată la inserarea sau modificarea oricărei linii din tabelă. Tabela FACTURI
conţine, printre altele două atribute “valorice”, unul pentru păstrarea 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 adăugată 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 decât 19% din valoarea f ăr ă tva. Să
punem sub formă de formul
ă: ValoareaTotal
ă = ValoareaF
ăr ăTVA + TVA. Dac
ă factura con
ţine
numai produse cu 19%: ValoareaTotală = ValoareaFăr ăTVA + 0.19 * ValoareaFăr ăTVA, sau
ValoareaTotală = 1.19 * ValoareaFăr ăTVA. Dar tabela noastr ă are doar atributele ValoareTotală şi
TVAColectată, aşa că înlocuim ValoareaFăr ăTVA prin diferenţa 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 restric ţ ie la nivel de înregistrare
Alte tipuri de restricţii utilizator
Există şi alte tipuri de restricţii a căror validare presupune “citirea” unor date aflate în tabele
diferite. Spre exemplu, se poate institui o regulă care interzice emiterea unei noi facturi (o nouă
vânzare) dacă datoriile firmei client sunt mai mari de 200000 RON, iar directorul acesteia nu este
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 94/149
94 Instrumente software pentru afaceri
membru în partidul/partidele de guvernământ. Acestea reclamă întrebuinţarea unor proceduri speciale,
numite declanşatoare (triggere). Curioşii n-au decât să urmeze specializarea Informatică Economică.
4.4. SCHEMA ŞI CONŢINUTUL UNEI BAZE DE DATE RELAŢIONALEExistă două aspecte complementare de abordare a bazelor de date relaţionale: schema
(structura, intensia) şi con ţ inutul (instanţierea, extensia).
Con ţ inutul unei relaţii este reprezentat de ansamblul tuplurilor ce o alcătuiesc la un moment
dat. Pe parcursul exploatării bazei, conţinutul poate creşte exponenţial, în funcţie de volumul şi
complexitatea operaţiunilor consemnate.
Schema unei baze de date conţine denumiri ale tabelelor, numele, tipul şi lungimea atributelor,
restricţii de unicitate, de non-nulitate, restricţii la nivel de atribut, linie şi alte eventuale tipuri de
restricţii de comportament, precum şi restricţii referenţiale. La acestea se adaugă cele privind
drepturile utilizatorilor, definiţia şi restricţiile tabelelor virtuale, indecşi etc. Foarte importante înlumea profesioniştilor dezvoltării de aplicaţii cu bazele de date sunt procedurile stocate – programe de
forma funcţiilor, procedurilor, pachetelor şi mai ales declanşatoarelor (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 relaţiilor.
Atenţie ! Î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 adevărat ! În Visual FoxPro, Access şi alte SGBD-uri, pentru a gestiona mai uşor o aplicaţie se
creează un project în care sunt incluse bazele de date (tabele, tabele virtuale, proceduri stocate),interogări, 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 precădere o bază de date “martor”, denumită
VÎNZĂRI, cu schema din figura 4.12.
Figura 4.12. Schema simplificat ă a bazei de date VÎNZ Ă RI
Conţinut celor trei tabele, ce vor constitui suportul editărilor şi interogărilor dincapitolele următoare sunt prezentate 4.13.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 95/149
Invăţământ la distanţă – Anul I 2008/2009 95
Figura 4.13. Con ţ inutul celor trei tabelei ale bazei de date VÎNZ Ă RI
Rezumat
Modelul relaţional al datelor se poate defini printr-o serie de structuri de date (relaţii alcătuitedin tupluri), operaţii aplicate asupra structurilor de date (selecţie, proiecţie, joncţiuneetc.) şi reguli de integritate care să asigure consistenţa datelor (chei primare, restricţiireferenţiale ş. a.). În prezent se manifestă o puternică orientare a relaţionalului cătreaplicaţii web şi orientarea pe obiecte. Au apărut SGBD-uri gratuite (free-database),precum PostgreSQL, MySQL etc.
Noţiunea esenţială a acestui model de organizare a datelor este relaţia, văzută fie casubansamblu al produsului cartezian de n domenii (unde n este numărul atributelor -ordinul relaţiei), fie ca ansamblu de m tupluri (unde m este denumit cardinalitate).
Valoarea oricărui atribut (fiecare atribut are un nume distinct) într-un tuplu oarecare conţine 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 nuinfluenţează conţinutul informaţional al relaţiei.
Restricţia de domeniu se referă la ansamblul valorilor autorizate pentru un atribut. Domeniulpoate fi alcătuit din valori finite (sexul unei persoane, judeţele ţării) sau infinite(valoarea unei facturi etc.)
Conform modelului relaţional, fiecare relaţie are un atribut sau un grup de atribute ale cărorvalori nu se repetă. Aceasta este restricţia de unicitate. Noţiunile legate de această restricţie sunt: chei candidat, chei primare şi chei alternative.
Restricţia referenţială se instituie între două tabele, prin intermediul unui atribut comun (defapt, numele poate să difere, dar să aibă aceeaşi semnificaţie). În virtutea acesteirestricţii, se interzice apariţia de valori ale cheii străine care să nu re regăsească în tabelapărinte.
Exemple de teste grilă
Care dintre cheile următoare identifică f ăr ă ambiguitate fiecare tuplu în cadrul unei relaţii?
a. Cheile str ăine
b. Coloanele de referinţă
c. Cheile primare
d. Cheile candidate. Cheile alternative
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 96/149
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 restricţiilor aferente.
ii. Actualizarea, interogarea bazelor de date şi obţinerea de rapoarte.
iii. Elaborarea de proceduri
iv. Utilizarea de meniuri pentru integrarea procedurilor şi
programelor în aplicaţii
Rezultate aşteptate:
i. Familiarizarea cu mediul de lucru ACCESS.
ii. Obţinerea unei baze de date, a cheilor primare şi stabilirea
legăturilor permanente dintre tabele.
iii. Dezvoltarea de proceduri şi aplicaţii economice.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 97/149
Invăţământ 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 ă următoarele facilităţi majore:
• dispune de o interfaţă uşor de folosit pentru introducerea datelor;
• „găseşte” rapid datele legate între ele;
• asigur ă afişarea pe ecran sau tipărirea la imprimantă a datelor într-un format uşor de înţeles;
• permite afişarea 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ă operaţiile comune pentru a reduce timpul de dactilografiere.
ACCESS este conceput pentru scenarii multiutilizator, ceea ce înseamnă că mai mulţi
utilizatori pot accesa aceleaşi tipuri de date în acelaşi 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), selectând din meniul Programs opţiunea Microsoft Office ACCESS
2003,
Figura 5.1 Deschiderea sesiunii ACCESS dinmeniul Start
Figura 5. 2 Deschiderea sesiunii ACCESS dinmeniul rapid
• meniul rapid (figura 5.2), selectând comanda New şi apoi opţiunea Microsoft Office ACCESS
Application;
Figura 5. 3 Deschiderea sesiunii ACCESS prin schortcut-ul de pe Desktop
• shortcut-ul de pe Desktop (figura 5.3), accesând pictograma de pe desktop, dacă a fost creată o
scurt ătur ă ACCESS 2003.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 98/149
98 Instrumente software pentru afaceri
Interfaţa ACCESS
Dialogul utilizator-sistem se realizează, prin intermediul interfeţei ACCESS constituită, în
principal, din bara de instrumente Database, bara meniu şi panoul de activităţi.
Bara de instrumente Database, pe lângă 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.
Analyze - lansează unul dintre utilitarele de analiză: Analyze Table, Analyze
Performance sau Documenter.
Relationships – reprezintă grafic relaţiile existente şi permite modificarea acestora sau
crearea altora noi.
Bara meniu organizează meniurile ferestrelor ACCESS. Comenzile meniurilor permit:
• manipularea fişierelor bazei de date ACCESS;• crearea şi modificarea obiectelor bazei de date;• partajarea datelor cu alte aplicaţii;• personalizarea mediului ACCESS.
La deschiderea sesiunii este activat, în dreapta ecranului, panoul de activităţi Task Pane care
ofer ă o serie de legături, ce difer ă în funcţie de operaţia în curs de derulare (figura 5.4):
• Connect to Microsoft Office online – conectarea online la pagina Microsoft Office ;• Search for... - căutarea în funcţie de anumite criterii;• Open – deschiderea unuia dintre fişierele aflate în lista ultimelor fişiere cu care s-a lucrat, sau
a unui alt fişier, căutat cu ajutorul butonului More...care deschide o fereastr ă Open; • Create a new file... – crearea unui nou fişier.
Afişarea sau ascunderea panoului de activităţi 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 fişier, Task Pane ofer ă variantele (figura 5.5):
• Blank database - crearea unei baze de date goale care nu conţine nici o dată sau orice alteobiecte (opţiunea cea mai des utilizată);
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 99/149
Invăţământ la distanţă – Anul I 2008/2009 99
• From Existing File – crearea unei baze de date noi folosind structura unei baze de dateexistente;
• On my computer – construirea unei baze de date dintr-un fişier şablon;• Project using existing data) şi Project using new data) - proiectele ACCESS combină
interfaţa 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 aplicaţii client-server în următoarele situaţii
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 performanţele 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 pentrusesiunea curentă şi, eventual, a sesiunilor următoare. Î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.
Vizăm în continuare doar cadrul de pagină General care, printre altele, permite stabilirea unui
director implicit în care vor fi salvate fişierele. Pentru exemplificare, din raţiuni lesne de înţeles, în
zona Default database folder:, s-a declarat ca director curent D:\feaa\isa_id\capitolul 5 (figura 5.6).
Declararea directoruluicurent
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 conţine următoarele
tipuri de obiecte:
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 100/149
100 Instrumente software pentru afaceri
• Tabele (Tables) – reprezintă locul în care sunt stocate datele brute ale unei baze de date;• Interogări (Queries) – tabele care conţin r ăspunsuri la anumite „întrebări” despre date;• Formulare (Forms) –interfeţe de introducere şi afişare a datelor;• Rapoarte (Reports) – facilităţi care ofer ă diferite modalităţi de afişare /tipărire a datelor
conţinute în tabele;
• Pagini (Pages) – sunt asemănătoare formularelor, în plus ele pot fi afişate într-un browserWeb. 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 conţin coduri de programare, scrise în VBA.
Modulele ofer ă utilizatorilor avansaţi posibilitatea de a personaliza bazele de date şiconţinutul 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
restricţiilor. Crearea tabelelor presupune declararea numelui, tipului, lungimii şi altor proprietăţi pentru fiecare atribut.
5.2.1 Tipuri de date
În tabelele ACCESS pot fi organizate o paletă diversificată de tipuri de date. Pentru fiecare
câmp dintr-o tabelă trebuie stabilit un tip de dată prin care se controlează natura şi cantitatea de date ce
poate fi introdusă. Sunt disponibile următoarele 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 depăşesc 255 de caractere, nu sunt
structurate şi /sau au un anumit caracter de confidenţialitate; conţinutul câmpurilor memo
nu este vizualizat atunci când se afişează conţinutul tabelelor;
• Number – acceptă doar date numerice (întregi sau cu zecimale), cu un număr suficient de
poziţii, pentru aproape toate datele economice. La rândul 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 asemănător datelor numerice, cu deosebirea că acceptă doar patru digiţi
pentru partea zecimală. Este conceput pentru a evita erorile de rotunjire, astfel încât
calculele cu bani să fie precise. Şi datele de acest tip pot avea mai multe formate: Generalnumber, Format Euro, Currency, Fexed, Standard, Percent, Scientific;
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 101/149
Invăţământ 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 când din structura tabelei este dificil de ales un câmp
reprezentativ. Formatele pentru AutoNumber sunt: Long Integer, Replication ID;
• Yes /No - este conceput pentru a păstra înregistr ări simple de tip On /Off;
• Ole Object – permite stocarea informaţiilor într-un format accesibil altor programe(documente Word, foi de calcul Excel, imagini, fişiere cu muzică etc.)
• Hyperlink – este un tip de date text special conceput pentru a stoca hyperlink-uri către
site-uri Web sau alte resurse Internet;
• Lookup Wizard – câmp special de căutare.
Remarcăm disponibilitatea datelor de tip Lookup Wizard care folosite pentru a declara
câmpuri de căutare. Majoritatea bazelor de date organizează două tipuri de tabele: cele care includ
date primare şi cele care conţin liste de valori folosite în tabele. Aceste tabele auxiliare se numesc
tabele de căutare (lookup tables) şi prezintă două avantaje: pun la dispoziţia utilizatorului opţiuni
consecvente şi simplu de utilizat şi permit validarea datelor, acceptând numai datele din tabel.
Observa ţ ie
În expresii datele text sunt incluse între ghilimele (de exemplu, „FEAA”), iar datele
calendaristice sunt încadrate de semnul # (de exemplu, #12/18/2005#).
O noutate deosebită în ACCESS 2003 o reprezintă etichetele inteligente (Smart Tags) care
pot fi aplicate câmpurilor. Această facilitate este preluată din Excel care foloseşte etichete inteligente
pentru a semnaliza erorile din foile de calcul şi pentru a oferi soluţii posibile. Prin etichete inteligente
se pot accesa informaţii 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ă, obţinerea
bazei de date din care vor face parte. Dacă se optează pentru Blank database trebuie precizate
locaţia, numele şi tipul unui astfel de fişier. Implicit, ACCESS atribuie numele db<n> şi extensia
.mdb (figura 5.7). Este recomandat ca numele fişierului să sugereze conţinutul informaţional sau
apartenenţa de o aplicaţie sau un utilizator. Exemplificările din acest capitol au ca suport baza de date
vinzări.mdb.
Locaţia în care va fisalvată BD
Extensia implicită a BD
Numele BD
Figura 5.7 Fereastra File New Database
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 102/149
102 Instrumente software pentru afaceri
Pentru crearea unui tabel ACCESS ofer ă trei posibilităţi (figura 5.8):
Obiectele unei BD
Opţiuni pentru crearea
tabelelor unei BD
Figura 5.8 Op ţ iuni 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 fiecărui câmp;• Create table using wizard - apelând asistentul Table Wizard care precizează paşii care
trebuie urmaţi pentru construirea unor tabele obişnuite;• Create table by entering date – introducând datele în câmpurile create de ACCESS;
această metodă este apropiată de modul de lucru în Excel.
Crearea tabelelor prin introducerea datelor
Cea mai „confortabilă” pentru începători este crearea tabelelor prin introducerea datelor. Dacă
se alege aceasta opţiune, în etapa imediat următoare se cere confirmarea salvării tabelului şi, implicit,
precizarea numelui acestuia într-o fereastr ă Save As. Pentru exemplificare, în baza de date Vinzări 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, reprezentând câmpurile, au nume
predefinite de tipul Field<n>. Pe rândurile tabelului se introduc înregistr ările /articolele (figura 5.10).
Figura 5.10 Fereastra Create table by entering date pentru tabela Clien ţ i
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 103/149
Invăţământ la distanţă – Anul I 2008/2009 103
Figura 5.11 Comanda Rename Column
Pentru a sugera conţinutul câmpurilor/coloanelor este necesar ă redenumirea acestora. Sefoloseşte comanda Rename Column apelată fie din meniul rapid (activat de pe antetul /header-ul
câmpului /coloanei), fie din meniul Format (figura 5.11). Intrarea în modul de editare este posibil şi
prin dublu click de mouse de pe antetul câmpului al cărui nume urmează a fi schimbat.
Crearea tabelelor folosind Table Wizard
Table Wizard este un instrument care permite crearea tabelelor prin parcurgerea unor paşi
prestabiliţi. Pentru exemplificare s-a dorit crearea tabelei CodPost_loc. Într-un prim pas sunt stabilite
câmpurile care vor constitui structura noii tabele. ACCESS ofer ă variate şabloane atât pentru domeniul
afacerilor ( Business) cât şi cu caracter personal, după uzanţele americane. Folosind butonul Rename
Field se pot personaliza machetele pentru articole, în sensul că structurile pot fi adaptate la specificulaplicaţiei ce se proiectează (figura 5.12).
Redenumirea unuicâmp
Tipuri de şabloaneStructuri de articole
1
Figura 5.12 Stabilirea câmpurilor într-o tabel ă creat ă cu Table wizard
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 104/149
104 Instrumente software pentru afaceri
După stabilirea câmpurilor, în pasul următor se precizează numele sub care va fi salvată tabela
şi modalitatea în care va fi stabilită cheia primar ă (vezi paragraful 4.3.4), de către utilizator sau,
implicit, de către ACCESS (figurile 5.13 şi 5.14).Numele tabelei
Stabilirea cheii primarede către Access princâmpul AutoNumber
Stabilirea cheii primarede către utilizator
2
Figura 5.13 Stabilirea numelui şi a op ţ iunii pentru cheii primare
Cheia primar ă stabilită de Access
Cheia primar ă stabilită de
utilizator
3
Figura 5.14 Stabilirea cheii primare
După precizarea cheii primare se alege modul în care se va continua după crearea tabelei, fiind
disponibile opţiunile (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.
Opţiuni prin care sestabileşte maniera delucru cu tabela, după
creare
4
Figura 5.15 Op ţ iunea de introducere a datelor direct în tabel ă
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 105/149
Invăţământ la distanţă – Anul I 2008/2009 105
Introducerea datelor întabelă
5
Figura 5.16 Introducerea datelor în tabel ă
După parcurgerea acestor paşi are loc introducerea datelor în tabelă (figura 5.16).
Crearea tabelelor folosind Design View
Cea mai complexă modalitatea de obţinere a tabelelor unei baze de date o ofer ă Design View
în a cărui fereastr ă pot fi stabilite: numele câmpurilor, tipul datelor şi proprietăţile acestora, cheia
primar ă etc. Exemplificăm obţinerea celei de a treia tabele din baza de date vinzari.mdb.
Stabilirea cheiiprimare
Figura 5.17 Stabilirea cheii primare
Primul câmp, numărul 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 câmp a fost desemnat
cheie primar ă. Stabilirea acestei chei se poate realiza fie activând pictograma Primary Key din
bara cu instrumente Database, fie selectând comanda Primary Key din meniul rapid activat de pe
numele câmpului (figura 5.17). Din lista General se stabilesc proprietăţile şi pentru celelalte câmpuri
(figurile 5.18 şi 5.19).
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 106/149
106 Instrumente software pentru afaceri
Stabilirea formatului pentrudata 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 operaţii specifice.
Figura 5.20 Fereastra Database pentru vinzari.mbd
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 107/149
Invăţământ la distanţă – Anul I 2008/2009 107
Figura 5.21 Comenzi pentru ad ăugarea unui nou câmp
Este posibilă modificarea structurii unei tabele în sensul că pot fi adăugate şi /sau şterse
câmpuri sau pot fi modificate atributele acestora. Adăugarea unui câmp se realizează fie din meniul
Insert, fie din cel rapid, ambele selectate când prompterul este poziţionat pe câmpul la stânga căruia
se va insera unul nou (figura 5.21). Ştergerea unuia sau mai multor câmpuri 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 restricţiilor
Paragraful 4.3 a fost consacrat tipologiei restricţiilor într-o bază de date relaţională, restricţii
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 restricţii a fost f ăcută pe exemplul ACCESS-ului. Aşa încât sarcina noastr ă din acest paragraf
este destul de uşoar ă. Faţă de ceea ce discutam în capitolul 4, ar mai fi de adăugat că este
recomandabil ca declararea restricţiilor să fie f ăcută odată cu crearea tabelelor sau imediat după, în
orice caz, înaintea de preluarea vreunei înregistr ări în bază. Aceasta asigur ă preluarea corectă a tuturor
informaţiilor în tabele.
Ca şi crearea tabelelor, declararea şi modificarea ulterioar ă a restricţiilor decurge cât 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 CLIENŢI – vezi figura 5.23.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 108/149
108 Instrumente software pentru afaceri
În figura 4.7 am ilustrat modul în care, setând op ţiunea Required a proiectantului de tabele
pentru oricare atribut pe valoarea Yes, acelui atribut i se vor interzice valorile nule. Ca o mică
ciudăţenie a ACCESS-ului, atributele de tip cheie primar ă apar în macheta proiectantului de tabele ca
având proprietatea Required pe No – vezi partea stângă 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 restricţiile de unicitate, pe lângă cele discutate în paragraful 4.3.4 şi 5.2.2 (figurile
5.13, 5.14 şi 5.17) să mai adăugăm că în ACCESS cheia primar ă poate fi: natural ă - când valorile
atributelor care o compune se introduc de utilizator - şi artificial ă - când se foloseşte un câmp de tip
AutoNumber, în acest din urmă caz ACCESS introducând automat o valoare consecutivă la inserarea
unei înregistr ări (1 pentru prima înregistrare, 2 pentru a doua înregistrare ş.a.m.d.). ACCESS-ul
creează indecşi pentru fiecare tip de cheie primar ă sau alternativă, acesta fiind motivul pentru care laaceste 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 privinţa restricţiei referenţiale, se cuvin câteva detalii faţă de ceea ce a fost discutat în
paragraful 4.3.5. Figura 4.12 ilustrează modul în care se stabilesc relaţiile (legăturile) referenţiale între
tabele (vizualizare realizată prin folosirea opţiunii Relationship din bara de instrumente. De
fapt, ceea ce afişează figura reprezintă aşa numitele legăturile permanente dintre tabele. Regulile
pentru păstrarea integrităţii referenţiale se stabilesc în fereastra Edit Relationships (figura 5.24)activată prin dublu click de pe oricare legătur ă permanentă din fereastra Relationships (figura 4.12).
Opţiuni pentruIntegritatea
referenţială
Figura 5.24 Fereastra Edit Relationships
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 109/149
Invăţământ la distanţă – Anul I 2008/2009 109
Practic, restricţia de integritate referenţială se instituie abia la bifarea opţiunii Enforce
Referential Integrity, ACCESS-ul restricţionând adăugarea, modificarea şi /sau ştergerea în tabelele
părinte şi copil astfel:
• nu se permite modificarea valorii cheii primare din tabela părinte dacă există în tabela copilmăcar o înregistrare cu care este în legătur ă;
• nu poate fi introdusă nici o valoare a unei chei str ăine dacă respectiva valoare nu există deja caşi cheie primar ă în tabela părinte.
Dacă se alege opţiunea Cascade Update Related Fields orice modificarea a unei chei primare în
tabela primare va atrage modificarea în cascadă a tuturor cheilor str ăine în înregistr ările copil, iar
bifând opţiunea Cascade Delete Related Records la ştergerea unei înregistr ări din tabela părinte se
vor elimina automat toate înregistr ările copil.
Din fereastra Database pot fi realizate diverse operaţii cu tabelele şi înregistr ările încărcate în
acestea. Pentru a vizualiza conţinutul unei tabele este suficient un dublu click de mouse de pe numele
tabelei. La afişare unele tabele au în stânga o coloană în care apare semnul plus (+) sau spaţiu. Semnul
plus în dreptul unei înregistr ări semnifică faptul că aceasta este legată prin chei str ăine de înregistr ăriaflate în alte tabele. Click pe semnul plus determină schimbarea în semnul minus (-) şi afişarea
înregistr ărilor „înrudite” (copil) într-o subfoaie de date (figura 5.25).
Semnul + înregistrarea are cel
puţin o înregistrare“înrudită” într-o altă
tabelă
Semnul - sunt afişate înregistr ările
“înrudite”
Figura 5.25 Afi şarea înregistr ărilor din tabela copil
Pentru a vedea toate înregistr ările subordonate articolelor dintr-o tabelă părinte se poate lansa
comanda Subdatasheet din meniul Format (figura 5.26).
Figura 5.26 Expandarea articolelor subordonate
La capitolul (de fapt, paragraful) restricţii utilizator de tipul regulilor la nivel de atribut (figura4.10) am r ămas datori cu expresia de la Validation Rule a atributului NumeClient din tabela CLIENŢI:
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 110/149
110 Instrumente software pentru afaceri
StrComp(UCase([NumeClient]),[NumeClient],0)=0. Exotismul expresie ţine nu atât de folosirea
funcţiei Ucase care converteşte toate literele din valoarea argumentului (atributul NumeClient, în cazul
nostru) în majuscule, cât de funcţia StrComp, prin care, în formatul prezentat se compar ă două şiruri
de caractere, dintre care unul (cel din dreapta) este valoarea atributului, iar celălalt aceeaşi valoare, dar
scrisă cu majuscule. Dacă cele două şiruri difer ă câtuşi de puţin, rezultatul evaluării expresiei este False, iar modificarea atributului (sau inserarea liniei) este respinsă. Practic, regula acceptă numai
valori în care literele sunt exclusiv majuscule.
Bănuind că expresia n-a fost suficientă, vă supunem atenţiei regula de validare a atributului
Adresa prin care prima liter ă din valoarea oricărei adrese va fi majusculă, restul valorii fiind lăsat la
latitudinea utilizatorului: StrComp(Left(UCase([Adresa]),1),Left([Adresa],1),0)=0. Funcţia LEFT
extrage primele n caractere de la stânga valorii argumentului.
Orice regulă la nivel de înregistrare, aşa cum a fost cea pentru tabela FACTURI prezentată în
figura 4.11, se poate introduce în proiectantul de tabelă apelând opţiunea Properties din bara de
instrumente (simbolul acestei opţiuni în bara de instrumente este chiar cel al ferestrei Table Properties
din figur ă).
5.2.4. Inserări, modificări şi ştergeri de înregistrări
Dacă în SGBD-uri am putea cheltui zeci de pagini explicând de zor ce butoane, comenzi,
opţiuni trebuie apelate pentru inser ări, poziţionarea pe înregistr ări, modificări, ştergeri, în Access
putem să expediem subiectul în câteva propoziţii, bazându-ne pe experienţa din... Excel. Afişarea
înregistr ărilor unei tabele existente în baza de date se face de manier ă similar ă modificării structurii,
numai că în loc de opţiunea Design se alege Open – vezi partea stânga sus a figurii 5.27. Pentru
inserarea unei înregistr ări din meniul Insert se alege chiar prima comandă, New Record (vezi stânga 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 poziţionarea în linia şi coloana dorită şi operarea modificărilor.
Figura 5.27 Editarea datelor dintr-o tabel ă
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 111/149
Invăţământ la distanţă – Anul I 2008/2009 111
Atunci când numărul de linii dintr-o tabelă este imens, iar datele trebuie modificate după
criterii riguroase, este necesar ă recurgerea la interogări pe care le vom discuta în paragraful 5.4 şi
capitolul 6.
5.3. FORMULARE ACCESS
Un formular reprezintă un instrument pus la dispoziţia utilizatorului în scopul uşur ării
operaţiilor de accesare şi actualizare a datelor stocate în tabelele unei bazei de date. Trebuie reţinut
faptul că un formular este legat la o structur ă de date de tip tabelă sau cursor (query) obţinut în urma
unei interogări. Prin intermediul formularului se asigur ă o vedere organizată şi formatată asupra unei
păr ţi sau asupra tuturor câmpurilor din una sau mai multe tabele.
În cadrul unui formular deosebim cinci secţiuni 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 secţiuni 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 opţiune View din
meniul principal.
În ACCESS, formularele pot fi construite în trei moduri:• Crearea rapidă a unui formular prin utilizarea facilităţii AutoForm (Columnar, Tabular,
Datasheet, PivotTable sau PivotChart). De obicei se utilizează varianta organizării
datelor sub forma unei coloane. Dacă se alege Tabular , formularul va cuprinde un număr
mai mare de înregistr ări în zona de detaliu, ceea ce va semăna cu o tabelă.
• Apelarea la asistent/vră jitor (Form Wizard). Utilizatorul va construi formularul, pas cu
pas, sub îndrumarea asistentului. Singura sarcină a acestuia fiind să r ăspundă la întrebări
prin selecţia unei variante din mai multe posibile;
• Utilizarea ferestrei de proiectare (Design View). În acest mod de lucru, formularul este
creat de către utilizatori avansaţi.În prima etapă, pentru oricare variantă am opta din cele trei, trebuie să selectăm din proiectantul
bazei de date, de sub Object opţiunea Forms, după care să activăm butonul New, ca în figura 5.28.
Figura 5.28. Lansarea în execu ţ ie a generatorului de formulare
1 2
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 112/149
112 Instrumente software pentru afaceri
Urmare a acţiunii 2 din figura precedentă se va activa fereastra New Form (figura 5.29), în
care va trebui să selectăm varianta de lucru pentru organizarea câmpurilor (1) şi tabela de legătur ă (2)
aşa cum se prezintă în figura 5.29.
Figura 5.29. Fereastr ă de selec ţ ie a modului de organizare a datelor şi a tabelei de lucru
Vom parcurge în cele ce urmează variantele de lucru cu asistentul /vr ă jitorul şi cea cu
AutoForm Columnar.
1. Utilizarea facilităţii AutoForm în generarea de formulare
Ne propunem pentru tabela CLIENTI să gener ăm formularul cu acelaşi nume. În acest sens,
vom da click pe AutoForm: Columnar (1), după care vom da click pe săgeata rubricii (Combo Box)
din dreptul Choose the table … (2) de unde vom selecta tabela CLIENTI (3).
După selecţia tabelei CLIENTI vom activa butonul Ok moment în care se va genera automat
formularul corespunzător tabelei noastre (figura 5.30.)
Figura 5.30. Formularul generat automat pentru tabela CLIENTI
Din figura precedentă observăm:
1. Titlul ferestrei este clienti, ca şi numele tabelei;
2. Suntem poziţionaţi pe prima înregistrare din tabela CLIENTI;
3. Pe ultimul rând dispunem de un set de butoane de navigare de la o înregistrare la alta;4. cheia primar ă a tabelei este marcată prin săgeata în dreptul codului client;
1
2
3
1
2 34
26
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 113/149
Invăţământ la distanţă – Anul I 2008/2009 113
5. Putem modifica foarte uşor, chiar prea uşor, valorile oricărui câmp cu respectarea
restricţiilor de integritate referenţială declarate deja;
6. Putem realiza operaţii de sortare, filtrare, căutare, ştergere ( ) şi adăugare ( ) din
butoanele din linia de instrumente. Adăugarea este posibilă şi din butoanele de navigare cu
acelaşi buton .După crearea formularului de mai sus este necesar să-l salvăm cu un nume, în cazul nostru îi
vom da numele Clienti. Acest lucru se realizează prin activarea opţiunii Save din meniul File sau
direct click pe discheta. Rezultatul va fi apariţia ferestrei de salvare a formularului cu un nume
recomandat de ACCESS, în cazul nostru clienti. Dacă dorim să păstr ăm numele, nu ne r ămâne decât
să dăm click pe butonul Ok . În caz că dorim să schimbăm numele, vom introduce numele nou şi vom
da Ok (figura 5.31).
Figura 5.31 Salvarea formularului
În urma operaţiei de salvare va apare în proiectantul bazei de date pentru formulare noul
formular creat, cu numele clienti.
2. Utilizarea asistentului în generarea de formulare
Continuăm crearea unui formular pentru tabela CODPOST_LOC, dar prin apelarea la
asistentului în generarea de formulare. În figura 5.32. avem marcate etapele necesare lansării
asistentului.
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ă selectăm câmpurile care să fie trimise în formular. În cazul nostru vom trimite toate câmpurile, ceea
ce înseamnă că vom da click pe butonul >>, apoi Next.
23
4
5
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 114/149
114 Instrumente software pentru afaceri
Figura 5.33. Fereastra de selectare a câmpurilor 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 Selec ţ ia modului de organizare a datelor şi a stilului
După selectarea stilului se va solicita ataşarea 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 afi şarea 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ă utilizăm formularul Coduri, astfel (figura 3.36):
a. selectăm Form;
b. selectăm Coduri;c. activăm butonul Open.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 115/149
Invăţământ la distanţă – Anul I 2008/2009 115
Figura 5.36 Lansarea în execu ţ ie a unui formular
În cazul în care se doreşte adăugarea unei înregistr ări se activează butonul din zona
butoanelor de defilare sau din liniile de instrumente, ceea ce va determina golirea formularului, cu posibilitatea completării datelor despre alta localitate (figura 5.37).
Figura 5.37 Ad ăugarea unei înregistr ări
Modificarea unei înregistr ări cu ajutorul formularului Coduri se realizează în două etape:a. căutarea articolului de modificat;
b. efectuarea modificării direct în formular.
În mod similar modificării se realizează şi ştergerea unei înregistr ări cu ajutorul formularului,
cu precizarea că se dă click pe butonul :
c. căutarea articolului de modificat;
d. efectuarea modificării direct în formular.
5.4. OBŢINEREA DE INFORMAŢII DIN BAZA DE DATE ÎN ACCESS
ACCESS-ul a fost, încă din tinereţea sa, un reper în materie de facilităţi de obţinere a
informaţiilor dintr-o bază de date relaţională, printr-un mecanism simplu de creare a interog ărilor .
Vis-a-vis de terminologie, în engleză, verbul care desemnează explorarea bazei de date pentru a obţine
informaţiile necesare este to query pe care-l traducem prin a interoga. Chiar dacă la noi interogatoriul
ne duce cu gândul mai degrabă la beciurile securităţii şi bătăile crunte aplicate duşmanilor poporului,
sensul interogării unei baze de date este de a o investiga pentru a “stoarce” informaţii. Astfel încât, în
cele ce urmează ne vom transforma în storcători de informaţii, este drept, f ăr ă bastoane de cauciuc,
reflectoare în ochi şi pumni la ficat.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 116/149
116 Instrumente software pentru afaceri
Figura 5.38 Proiectantul de interog ări
Într-un proiect ACCESS, la loc de cinste între obiecte, imediat două tabele (Tables) apar
interogările (Queries). Selectarea acestora, click-ul de rigoare pe butonul New şi apoi a opţiunii Design
View determină afişarea pe ecran a “proiectantului” de interogări, un cadru foarte versatil prin care
putem formula o cerinţă informaţională (figura 5.38).
Partea de sus a ecranului (în spatele ferestrei de alegere a tabelelor) serveşte la afişarea
tabelelor implicate în interogare, precum şi a legăturilor (restricţiilor referenţiale) dintre ele. În cadrul
propriu zis, fiecare coloană corespunde unei coloane din lista ce se doreşte a fi obţinută, informaţiile
specificate fiind: numele atributului ( Field ), tabela în care se află acesta (Table), dacă valorileatributului vor fi ordonate crescător sau descrescător (Sort ) în listă, dacă respectiva coloană va fi
afişată în listă sau serveşte doar la precizarea filtrului de selecţie a înregistr ărilor (Show) şi condiţiile
pe care trebuie să le îndeplinească înregistr ările (liniile) pentru a fi incluse în raport, altfel spus,
condiţia 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. Informaţii obţinute dintr-o singură tabelă
Ne propunem să obţinem din tabela FACTURI o listă (situaţie) de genul celei din figura 5.39.
Comparând cu liniile tabelei FACTURI din finalul capitolului 4 observăm că în rezultat sunt incluse
numai facturile emise după 20 iunie 2005, iar situaţia obţinută prezintă o coloană inexistentă în tabela
FACTURI, şi anume ValoareFăr ăTVA.
Figura 5.39 Facturile (inclusiv valoarea f ăr ă TVA) emise după 20 iunie 2005
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 117/149
Invăţământ la distanţă – Anul I 2008/2009 117
Pornind de la ceea ce dorim să obţinem, să vedem cum se construieşte macheta interogării.
Figura 5.40 încearcă (f ăr ă succes) să lămurească lucrurile. În partea de sus tronează singura tabelă
necesar ă obţinerii rezultatului – FACTURI. Partea interesantă este însă în partea de jos a figurii.
Figura 5.40 Macheta interog ării pentru ob ţ inerea listei din figura 5.39
Mai întâi, î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 decât 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 obţine pe ecran modesta fereastr ă FieldProperties. Aici vom indica formatul de afişare – fix (Format... Fixed ) cu două zecimale (Decimal
Places...2), precum şi numele coloanei calculate (Caption...ValoareFaraTVA). Simplu, nu ? (vă
aşteptăm cu drag la restanţe !)
Se salvează macheta (celebra pictogramă a dischetei din figura de mai sus) sub numele
Facturi_dupa_20iunie2005, o imagine izbitor de asemănătoare figurii 5.39 fiind obţinută după click-ul
de rigoare pe butonul View din stânga-sus-ul ferestrei interogării.
5.4.2. Informaţii obţinute din două sau mai multe tabele
Prinzând un pic de curaj după încercarea din paragraful precedent, ne apropiem simţitor demajoritatea situaţiilor reale, în care informaţiile necesare, precum şi condiţiile pe care trebuie să le
îndeplinească acestea, se găsesc 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. Întrucât în primele paragrafe ale
capitolului au fost declarate restricţiile referenţiale, pe măsura adăugării tabelelor în interogare,
ACCESS-ul indică şi legăturile dintre ele.
Spre deosebire de interogarea precedentă, între coloanele Data şi ValoareFăr ăTVA au fost
introduse două coloane, NumeClient (corespunzător atributului cu acelaşi nume din tabela CLIENŢI) şi
Localitate (ce conţine valorile atributului corespunzător din tabela CODPOST_LOC). Condiţia defiltrare a liniilor din rezultat priveşte două atribute. În afara datei, ce trebuie să fie, în continuare, după
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 118/149
118 Instrumente software pentru afaceri
20 iunie 2005, facturile trebuie să fi fost emise unor clienţi din localitatea Iaşi. Pentru aceasta, pe linia
Criteria, în dreptul coloanei Localitate este specificat “Iasi”.
Figura 5.41. Interogare ce folose şte trei tabele, două condi ţ ii de filtrare şi ordonare
În plus, s-a dorit şi ordonarea crescătoare a liniilor din rezultat după valorile atributului
NumeClient. Vă lăsăm pe dvs. să vizualizaţi rezultatul acestei interogări.
5.4.3. Prelucrări /grupări /sintetizări
Partea cea mai interesantă a interogărilor, în ACCESS sau orice alt SGBD, ţine de prelucrarea
datelor numerice. Astfel, cei de la compartimentul Vânzări (de obicei, acum i se spune Marketing ,
deoarece sună mult mai bine) pot fi cât se poate de interesa ţi să afle valorile vânzărilor pe zile
calendaristice, pe un interval la alegere. Probabil dialogul ar putea suna aşa: “Aş fi interesat(ă) de
evoluţia zilnică a vânzărilor în perioada 18-24 iunie 2005”, iar după un timp situaţia cerută ar fisimilar ă, numai că s-ar referi la intervalul 25-30 iunie 2005.
În tabela FACTURI fiecare linie se refer ă la o factur ă, aşa încât, pentru onorarea solicitării
colegilor de la compartimentul Marketing este necesar ă gruparea pe zile a facturilor şi însumarea,
pentru fiecare zi, a celor trei mărimi: valoarea f ăr ă TVA, TVA colectată şi valoarea totală ale facturilor
din ziua respectivă. Iată cum rezolvăm problema – vezi figura 5.42.
Figura 5.42. Filtru generalizat, plus o grupare după dat ă
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 119/149
Invăţământ la distanţă – Anul I 2008/2009 119
Pentru declararea modalităţii de grupare trebuie mai întâi folosit simbolul de însumare din
bara de instrumente a interogării. Ca urmare, în machetă, între liniile Table şi Sort apare linia Total.
Pe această linie, pentru coloanele TVAColectat ă şi ValoareTotal ă este suficientă selectarea opţiunii
Sum, în timp ce pentru valoarea f ăr ă TVA trebuie selectată opţiunea Expression, deoarece valoarea sa
se determină prin diferenţa 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 vizualizării rezultatelor interogării intervalul de vizualizare, adică data iniţială şi data finală
a acestuia: BETWEEN [Data Initiala:] AND [Data finala:]. La vizualizare (click pe simbolul View
din stânga barei de instrumente a interogării) 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 afişează
rezultatul cu liniile ce desemnează zile din intervalul specificat în care există măcar o factur ă.
Figura 5.43. Solicitarea valorii primului parametru de intrare (data ini ţ ial ă a intervalului)
Cam atât deocamdată. Ne revedem cu interogările în capitolul 6.
5.5 CONSTRUIREA ŞI UTILIZAREA RAPOARTELOR
Informaţiile din domeniul economic sunt prezentate, cel mai adesea, prin intermediulrapoartelor. Raportul reprezintă un ansamblu de informaţii conforme cu cerinţele utilizatorilor,
construit pe baza datelor din tabele. Rapoartele poate fi afişate pe ecran sau tipărite la imprimantă,
majoritatea lor având formă tabelar ă.
La proiectarea şi construirea rapoartelor în format tabelar se vor lua în considerare cinci secţiuni
principale, la care mai pot fi adăugate altele două, dacă se doreşte gruparea datelor. Aceste secţiuni,
prezentate în structura raportului din figura 5, sunt (redăm şi denumirea lor în limba engleză, pentru o
mai bună recunoaştere a lor în generatoarele de rapoarte):
• Antetul şi sfârşitul (subsolul) raportului (Report Header şi Report Footer). Antetul raportului
conţine elementele care vor apare o singur ă dată, la începutul raportului. Aici se includ, de obicei,titlul raportului, data obţinerii şi numele destinatarului. În sec ţ iunea de sfâr şit (subsol) se prevăd
elementele care vor apare o singur ă dată în raport, la sfâr şitul acestuia. Aici se pot include totalurile
generale pentru câmpurile numerice şi numele persoanelor care au generat şi certificat raportul
respectiv.
• Antetul şi sfârşitul paginii (Page Header şi Page Footer). În aceste secţiuni vor fi incluse acele
elemente ale raportului care vor apare o singur ă dată pe fiecare pagină, la începutul sau la sfâr şitul
ei. De regulă, numele coloanelor sunt prevăzute în antetul paginii astfel încât ele să fie afişate la
începutul fiecărei pagini. Totalurile la nivel de pagină, dacă sunt necesare, trebuie incluse în
secţiunea de sfâr şit (subsol) a paginii. Numărul paginii poate apare în oricare din cele două secţiuni.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 120/149
120 Instrumente software pentru afaceri
• Secţiunea de detaliu (Detail). Este secţiunea principală a oricărui raport şi conţine valorile
câmpurilor 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 câte o linie în raport.
• Antetul şi sfârşitul grupului (Group Header şi Group Footer). Aceste două secţiuni apar în
rapoarte numai atunci când se doreşte gruparea datelor. În exemplul din figura 5.48, vânzările suntgrupate pe clienţi, iar codul clientului reprezintă câmpul de control, adică acela după valorile căruia
se va face gruparea. Elementele incluse în aceste sec ţiuni 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 sec ţ iunea de sfâr şit se pot afişa totaluri sau rezultatele altor operaţiuni de agregare la
nivelul grupului, precum numărul elementelor, valoarea medie, valoarea minimă şi valoarea
maximă pentru câmpurile numerice.
În ACCESS, rapoartele pot fi construite în trei moduri:
• Crearea rapidă a unui raport pe baza unei singure tabele sau interogări, prin utilizarea facilităţiiAutoReport (Columnar sau Tabular). Utilizatorul trebuie doar să specifice tabela din care se vor
extrage datele, iar raportul va fi generat şi afişat pe ecran imediat. Dacă se optează pentru
Columnar , raportul obţinut 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, rezervându-se câte o
coloană pentru fiecare câmp din tabelă.
• Apelarea la vră jitor (Report Wizard). Utilizatorul va construi raportul, pas cu pas, sub
îndrumarea vr ă jitorului, rolul său constând în furnizarea de r ăspunsuri la anumite întrebări, care
privesc sursa datelor (tabelele şi/sau interogările), câmpurile de date care vor fi reţinute în raport,
modul de grupare şi ordonare a datelor, formatul şi titlul raportului. Spre deosebire de cazulanterior, acum pot fi create rapoarte pe baza mai multor tabele şi/sau interogări.
• Utilizarea ferestrei de proiectare (Design View). În acest mod de lucru, rapoartele vor fi create
f ăr ă ajutorul vr ă jitorului. În schimb, utilizatorul va avea posibilitatea să creeze rapoarte mai
complexe, pe care să le personalizeze conform cerinţelor sale. Ca şi în primul caz, raportul poate
conţine date dintr-o singur ă tabelă sau interogare.
Pentru crearea unui raport, indiferent de modalitatea dorită, se selectează opţiunea Reports din
fereastra bazei de date şi apoi butonul New din linia de instrumente, situată în partea superioar ă a
ecranului. În urma acestei acţiuni se afişează fereastra de dialog din figura 5.44.
Figura 5.44 Fereastra de dialog pentru alegerea modalit ăţ ii de realizare a unui raport
În continuare vom descrie numai ultimul mod de lucru, întrucât acesta ne permite realizarea derapoarte complexe şi personalizate, iar celelalte două căi sunt mult mai simple de urmat.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 121/149
Invăţământ la distanţă – Anul I 2008/2009 121
Ne propunem să construim un raport privind situaţia vânzărilor după 20 iunie 2005, pe
categorii de clienţi. Cerinţele raportului sunt următoarele:
• vor fi incluse următoarele informaţii: codul şi numele clientului, numărul şi data facturii,
valoarea totală şi valoare TVA;
• datele vor fi grupate pe clienţi (după codul clientului), iar pentru fiecare client se va calculaşi afişa valoarea totală a facturilor şi valoare totală TVA;
• datele vor fi ordonate după numărul facturii;
• se vor include totaluri pentru coloanele valoare totală şi valoare TVA, atât pentru fiecare
client, cât şi la sfâr şitul raportului.
Etapele de creare a raportului sunt următoarele:
1. Crearea interogării pentru extragerea datelor necesare raportului din tabele. Aşa cum
spuneam anterior, în fereastra de proiectare pot fi construite rapoarte pe baza unei singure tabele sau
interogări. Întrucât raportul solicită date din două tabele, CLIENTI şi FACTURI, va trebui să creăm o
interogare care să extragă datele din cele două tabele. La construirea raportului se vor folosi dateleextrase prin interogarea FAC_DUPA20IUNIE2005V2, creată anterior, în paragraful destinat
interogării 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ă opţiunea Design View după
care, din căsuţa combinată (combo box) situată mai jos se alege interogarea
FAC_DUPA20IUNIE2005V2. După apăsarea 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 conţine lista câmpurilor tabelei sau interogării selectate anterior. Se
observă că pagina conţine numai trei din cele cinci secţiuni ale unui raport. Pentru adăugarea celorlalte
două, Report Header şi Report Footer , se va accesa meniul View şi se va selecta opţiunea Report
Header/Footer .
3. Adăugarea obiectelor în cele cinci secţiuni ale raportului. Pentru includerea obiectelor în
raport se utilizează bara de instrumente, în aceeaşi manier ă ca la construirea formularelor. În acest
sens, vor fi utilizate următoarele butoane:
• etichetă ,pentru specificarea titlului raportului, denumirii coloanelor sau a altor textecu rol explicativ;
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 122/149
122 Instrumente software pentru afaceri
• căsuţă de text , pentru adăugarea câmpurilor de date şi a expresiilor de calcul ale căror
valori vor fi afişate la vizualizarea /tipărirea raportului.
• linie şi dreptunghi , pentru trasarea liniilor şi chenarelor necesare pentru
înfrumuseţarea raportului;
• săgeată , atunci când dorim selectarea unui obiect din raport.
Pentru adăugarea unui text, se selectează butonul etichetă, se poziţionează mouse-ul în poziţia
din care dorim să înceapă textul şi se dă clic, după care se introduce textul. Pentru a continua textul pe
linia următoare, dar în aceeaşi căsuţă, se foloseşte combinaţia de taste CTRL+ENTER.
Mai întâi se completează antetul raportului ( Report header ), în care se include data afişării sau
tipăririi, şi antetul paginii ( Page header ). Pentru includerea datei curente se adaugă o că su ţă de text
care va avea ca expresie de calcul funcţia DATE(). Specificarea expresiei de calcul se face astfel: se
selectează căsuţa, se apasă butonul dreapta al mouse-ului şi se alege opţiunea Properties din meniul
afişat. Efectul acestei acţiuni constă în afişarea ferestrei cu proprietăţi, 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 conţinutul acestei ferestre şi modul în care a fost introdusă expresia DATE(). Expresia de
calcul poate fi introdusă şi de la tastatur ă, direct în căsuţa de editare. Se revine în pagina raportului
prin apăsarea butonului OK şi închiderea ferestrei cu proprietăţi.
a) Fereastra cu proprietăţi b) Fereastra pentru introducerea expresiilor de calcul
Figura 5.46 Ferestrele pentru introducerea expresiilor de calcul
Pasul următor vizează introducerea câmpurilor număr factur ă, data factur ă, valoare totală şi
valoare TVA în secţiunea de detaliu ( Detail ). În acest sens, din lista câmpurilor se trag, pe rând, cele
patru câmpuri în locul dorit. Eticheta adăugată automat pentru fiecare câmp introdus în raport poate fi
ştearsă deoarece rolul explicativ îl îndeplineşte numele coloanei în care acesta este plasat. Dedesubtul
celor patru câmpuri se trasează o linie pentru a delimita rândurile cu date în momentul vizualizării
/tipăririi raportului.
În subsolul paginii ( Page Footer ) se vor introduce numărul paginii curente şi numărul total de
pagini din raport. Se va adăuga o căsuţă de text, urmându-se paşii descrişi anterior pentru data curentă,
a cărei expresie va avea forma:
= „Pagina” & [Page] & „ din ” & [Pages].
Variabila [Page] livrează numărul paginii curente, iar variabila [Pages] numărul total de
pagini. Operatorul & este utilizat pentru adunarea şirurilor de caractere.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 123/149
Invăţământ la distanţă – Anul I 2008/2009 123
În subsolul raportului (secţiunea 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 că su ţ elor de text şi vor avea forma:
= SUM ([ValoareTotală])
= SUM ([TVAColectata])ValoareTotala şi TVAColectata sunt câmpurile din rezultatul interogării pentru valoarea totală a
unei facturi şi valoarea TVA aferentă.
4. Gruparea şi ordonarea datelor. Liniile din raport pot fi ordonate sau grupate în func ţie de
mai multe criterii, iar pentru fiecare grup de date se pot introduce în raport alte două secţiuni: antetul şi
subsolul grupului. Cele două operaţiuni sunt realizate din fereastra Sorting and Grouping . Deschiderea
ei se face prin selectarea opţiunii Sorting and Grouping din meniul View sau prin apăsarea butonului
din linia cu instrumente, situată deasupra ferestrei de construirea a raportului.
Fereastra (prezentată în figura 5.47) conţine un grid (tabel), format din două coloane, Field
/Expression şi Sort Order , şi un grup de proprietăţi pentru definirea grupurilor de date, în partea sainferioar ă. Coloana Field /Expression este utilizată pentru specificarea câmpurilor 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ă numărul facturii. De aceea, vom selecta în prima linie câmpul
CodClient, iar în cea de-a doua Nrfact. Această coloană poate conţine cel mult zece nume de câmpuri ş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 crescătoare (Ascending) sau descrescătoare
(Descending) pentru câmpul sau expresia din linia respectivă. În momentul completării coloanei
Field/Expression, în coloana Sort Order va fi atribuită implicit valoarea Ascending . Dacă se doreşte
modificarea ordinii de sortare pentru un anumit câmp sau expresie, atunci se selectează printr-un clicelementul respectiv, după care în coloana Sort Order se alege valoarea Descending .
În cazul în care pentru un câmp sau o expresie se dore şte nu doar sortarea datelor, ci şi
gruparea lor, atunci se selectează elementul respectiv şi se vor configura proprietăţile din jumătatea
inferioar ă a ferestrei Sorting and Grouping . Aceste proprietăţi au următoarele semnificaţii:
• Group Header prezintă două valori posibile Yes /No. Dacă se alege valoarea Yes, atunci pentru
câmpul sau expresia selectată din coloana Field /Expression se adaugă în raport o secţiune nouă
pentru antetul grupului. Valoarea implicită este No, adică nu se creează automat o secţiune pentru
antetul grupului.
• Group Footer este asemănătoare cu proprietatea anterioar ă, numai că se refer ă la secţiunea desfâr şit (subsol) a grupului respectiv. Pentru includerea ei în raport se va alege valoarea Yes.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 124/149
124 Instrumente software pentru afaceri
• Group On stabileşte modul de grupare a valorilor câmpului selectat. Valorile posibile depind de
tipul câmpului sau expresiei de grupare (text, numeric sau dată calendaristică). De exemplu, dacă
s-a ales data facturii drept câmp 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), să ptămână (Week ) ş.a.m.d.• Group Interval specifică un interval sau un număr de caractere pe care se bazează gruparea
liniilor din raport. În cazul unui câmp de grupare de tip Date/Time, stabilirea valorii 12 semnifică
gruparea liniilor care apar ţin aceleiaşi jumătăţi de zi, dacă pentru proprietatea Group On a fost
stabilită valoarea Hour .
• Keep together se refer ă la modul de tipărire a liniilor raportului care fac parte din acelaşi grup.
Pentru această proprietate există trei valori posibile: No – permite tipărirea liniilor dintr-un grup şi
pe pagina următoare, dacă s-a ajuns la sfâr şitul paginii; Whole group (Grupul întreg) – are ca efect
tipărirea tuturor secţiunilor grupului (antetul, detaliile şi subsolul) pe o singur ă pagină, dacă este
posibil; With First Detail (Cu prima linie de detaliu) – antetul grupului va fi tipărit pe aceeaşi pagină cu prima linie a secţiunii de detaliu.
După adăugarea tuturor câmpurilor şi expresiilor de ordonare şi grupare şi configurarea
proprietăţilor de grupare, se închide fereastra Sorting and Grouping şi se trece la completarea
secţiunilor nou introduse în pagina raportului. Cerinţele raportului ales de noi ca exemplu impun
crearea unui grup de date, în funcţie de codul clientului. În secţiunea 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 secţiunea Report Footer .
Figura 5.48 Fereastra pentru construirea raportului exemplificat
Forma finală a raportului privind vânzările pe clienţi, cu toate obiectele incluse, este
prezentată în figura 5.48. Acum se salvează raportul (este recomandabil să salvaţi mai des, f ăr ă a
aştepta să finalizaţi construirea raportului), după care se face vizualizarea acestuia, prin selectarea
opţiunii Print Preview din meniul View sau prin apăsarea butonului din linia cu instrumente. Încontinuare se poate configura pagina (dimensiune, orientare, margini etc.), folosind opţiunea Page
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 125/149
Invăţământ la distanţă – Anul I 2008/2009 125
Setup din meniul File. De asemenea, se poate tipări raportul prin comanda Print din acelaşi meniu
File.
La vizualizare raportul va ar ăta 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 conţine rapoartelecreate 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 regăsite toate obiectele
raportului şi care pot fi modificate în conformitate cu noile cerinţe.
Figura 5.49 Forma raportului exemplificat la vizualizare
5.6 APLICAŢII, PROGRAME, PROCEDURI VBA ÎN ACCESS
Ca orice aplicaţie din pachetul MS Office pentru scrierea de proceduri se foloseşte Visual
Basic for Application. Programele VBA sunt numite proceduri şi sunt grupate în:
Sub rutine, care se refer ă la instrucţiuni VBA cuprinse între Sub … End Sub şi care nureturnează o valoare;
Sub nume_proc()
…
End sub
a. Funcţii procedurale care se refer ă la instrucţiuni VBA cuprinse între Function … End
Function şi care returnează o valoare.
Function nume_funct(param)
…
End Function
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 126/149
126 Instrumente software pentru afaceri
Orice procedur ă cuprinde un set de instrucţiuni 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 rândul lor, procedurile şi modulele se regrupează în module, care pot fi: clase de module şimodule 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 funcţii se scriu şi interogările aplicate
asupra bazei de date. Pentru a vizualiza conţinutul unui modul este necesar să se dea dublu click pe
numele acestuia şi astfel se va intra în VBA.
Figura 5.50 Componenta Module din BD Vinzari şi vizualizarea con ţ inutului pentru Meniu în VBA
În mod similar se vizualizează conţinutul celorlalte module şi a interogărilor (ramura Query).Lansarea în execuţie a unei proceduri în VBA se face direct din meniul Run opţiunea Run
Sub/User Form sau simplu cu F5. Acelaşi lucru se poate realiza dacă se dă click pe butonul din
linia de instrumente (de obicei se găseşte sub Run). Dacă în urma unei execuţii se intr ă în modul
Break (adică se blochează execuţia în VBA prin colorarea în galben a unei linii cu instruc ţiuni), va
trebui să se reseteze din meniul Run opţiunea Reset sau simplu click pe butonul din linia de
instrumente.
Lansarea în execuţie în cadrul procedurilor de interogare şi a celor din module se realizează cu
următoarele instrucţiuni:
Run (“Auto_Open”) ‘ se executa procedura Auto_OpenSau
Call Auto_Open ‘ se apelează procedura Auto_Open
Pentru apelarea unei interogări (query), a unui formular sau raport într-o procedur ă VBA se
foloseşte instrucţiunea DoCmd, astfel:
DoCmd.OpenQuery ("interog ") ‘ apeleaza interogarea cu numele interog
DoCmd.OpenReport ("Situatia vanzarilor"), acPreview ‘ apeleaza raportul Situaţ ia vanzarilor
DoCmd.OpenForm ("Coduri")
Dublu
click
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 127/149
Invăţământ la distanţă – Anul I 2008/2009 127
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 funcţii2. Elementele raportului care apar la începutul fiecărei pagini trebuie incluse în secţiunea:
a. Page footer
b. Antet of page
c. Group Header
d. Page Header
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 128/149
128 Instrumente software pentru afaceri
Capitolul 6
INTEROGAREA BAZELOR DE DATE. LIMBAJUL SQL
Obiective:
xvi. Expunerea, în termeni generali, a problematicii standardizăriilimbajelor de lucru cu bazele de date. Punerea în evidenţă aimportanţei SQL în lumea bazelor de date
xvii. Prezentarea principalelor tipuri de date ce pot fi gestionate prin SQLşi a restricţiilor ce pot fi declarate.
xviii. Expunerea graduală a principalelor clauze ale interogărilor
Rezultate aşteptate:
xix. Crearea unei baze de date relaţionale, inclusiv a restricţiilor folosindcomenzi şi clauze SQL: CREATE TABLE, ALTER TABLE, DROPTABLE.
xx. Cunoaşterea comenzilor pentru editarea unei tabele; comenzileINSERT, UPDATE, DELETE
xxi. Cunoaşterea celor mai importanţi operatori şi clauze ai interogărilorSQL: fraza SELECT, operatorii de comparaţie obişnuiţi şi ceispecifici: BETWEEN, IN, IS NULL, LIKE.
xxii. Folosirea clauzelor GROUP BY şi HAVING şi a funcţiilor-agregat:COUNT, SUM, AVG, MIN, MAX pentru calcularea unor parametrisintetici din baza de date.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 129/149
Invăţământ 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 aşezată pe un morman dehârtii & hâr ţoage, ne este cu neputinţă să reconstituim ceea ce am f ăcut adineaori, dar ă-mi-te ieri,
să ptămâna trecută sau acum un an sau cinci. Necazul e că, de cele mai multe ori, trebuie să ştim nu
numai ce-am f ăcut noi, dar ce-au f ăcut şi colegii şi partenerii de afaceri. Dacă la oameni mai putem
trece cu vederea, în cazul bazelor de date încrederea este elementul cheie (primar ă, str ăină...). Aşa
încât şi în capitolul 4 şi în capitolul 5 am fost foarte interesaţi să aflăm cu definim cât mai multe
restricţii, astfel să diminuăm riscul preluării în baza de date a unor informaţii eronate. Apoi am văzut
cum inser ăm, modificăm şi ştergem date într-o bază. Tangenţial am abordat şi câteva modalităţi de a
obţine informaţii de o manier ă asistată, grafică.
Chiar dacă am încercat să păstr ăm discuţia la un nivel general, exemplificările au fost f ăcute pe calapodul ACCESS-ului. Cei care au experienţă în ACCESS şi vor să treacă, for ţaţi de împrejur ări,
pe un SGBD mai performant, gen PostgreSQL, Oracle etc. (trecere care echivalează vor descoperi că
trecerea de la amatori la semi sau chiar profesionişti de-a binelea) vor fi bruscaţi de diferenţele de
interfaţă, opţiuni etc.
Pentru atenuarea şocurilor trecerilor de la un SGBD la altul, specialiştii bazelor de date s-au
gândit la un limbaj universal dedicat creării tabelelor, definirii restricţiilor, creării utilizatorilor şi
grupurilor de utilizatori, definirii drepturilor fiecărui utilizator/grup la obiecte din bază, actualizării
înregistr ărilor din tabele (inserare, modificare, ştergere) şi, mai ales, extragerii şi prelucr ării datelor din
bază. Acest limbaj a fost standardizat încă din 1986 (în SUA) şi 1989 (la nivel mondial – ISO) şi senumeşte SQL.
Haideţi să revenim la interogarea FACTURI_DUPA_20IUNIE2005 din figura 5.40 (a cărei
execuţie produce rezultatul din figura 5.39). Dacă din modul proiectare (Design) alegem opţiunea
SQL View, o să ne trezim cu o fereastr ă în care apare din senin o comandă cel puţin ciudată:
Figura 6. 1. O interogare SQL de-a gata
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 130/149
130 Instrumente software pentru afaceri
SELECT facturi.NrFact, facturi.Data, [ValoareTotala]-[TVAColectata] AS Expr1,facturi.TVAColectata, facturi.ValoareTotala
FROM facturiWHERE (((facturi.Data)>#6/20/2005#));
Ei bine, acest SELECT este chiar o comandă SQL. Dar s-o luăm la pas temeinic. Un mobil
determinant al succesului bazelor de date relaţionale l-a constituit, f ăr ă nici o îndoială, SQL. De laînceputurile bazelor de date, s-a pus problema elabor ării unui limbaj universal special dedicat bazelor
de date, limbaj care să permită, în egală măsur ă, definirea relaţiilor (tabelelor), declararea restricţiilor,
modificarea datelor din tabele, precum şi extragerea informaţiilor din cele mai diverse din datele
existente în bază. În 1970, E.F.Codd sugera "adoptarea unui model rela ţional 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 până î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
relaţională şi calculul relaţional, iar dintre cele practice (comerciale) Quel, QBE şi SQL. De departe,cel mai important este SQL, fundamentat de algebra relaţională.
După mulţi autori, momentul decisiv în naşterea SQL ca limbaj îl constituie lansarea
proiectului System /R de către 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, asemănător 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 relaţional.
Un colectiv de autori, condus de Chamberlin, elaborează în 1976 o nouă lucrare în care se facereferire 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 astăzi mulţi specialişti pronunţă SQL ca pe predecesorul său. Anii
următori au înregistrat apariţia a o serie întreagă de lucr ări care l-au perfecţionat, ultimul deceniu
consacrându-l ca pe cel mai r ăspândit 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 măsur ă, pe "dialectul" SQL al produsului DB2 de laIBM. În 1989 are loc revizuirea extinderea acestui standard, "născându-se" SQL-89, care mai este
denumit şi SQL1. Deşi recunoscut ca bază a multor SGBDR-uri comerciale, SQL1 şi-a atras
numeroase critici. În plus, variantele comercializate de diferiţii producători, deşi asemănătoare în
esenţă, erau (şi sunt) incompatibile la nivel de detaliu. Pentru a umple golurile SQL1, ANSI a elaborat
în 1992 "versiunea" SQL2, specificaţiile 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 apariţia şi maturizarea SQL, fiind un producător cu mare influenţă în "lumea" SGBD-
urilor, iar produsul său, DB2, este unul din standardele de facto ale SQL.
Standardul SQL:1999 a fost amânat de câteva ori până la publicarea sa, iar cea mai recentă versiune este SQL:2003. Principalele orientări ale SQL vizează transformarea acestuia într-un limbaj
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 131/149
Invăţământ la distanţă – Anul I 2008/2009 131
complet, în vederea definirii şi gestionării obiectelor complexe şi persistente. Aceasta include:
generalizare şi specializare, moşteniri multiple, polimorfism, încapsulare, tipuri de date definite de
utilizator, triggere (declanşatoare) şi proceduri stocate, suport pentru sisteme bazate pe gestiunea
cunoştinţelor, expresii privind interogări recursive şi instrumente adecvate de administrare a datelor.
La momentul actual, SQL reprezintă cel mai important limbaj actual în domeniul bazelor dedate, atât prin gama comenzilor şi opţiunilor de care dispune, dar mai ales datorită faptului că s-a
reuşit standardizarea sa şi portarea pe toate Sistemele de Gestiune a Bazelor de date semnificative. Cu
atât mai mult, cu cât, spre deosebire de majoritatea covâr şitoare a altor limbaje, poate fi deprins relativ
uşor de neinformaticieni şi utilizat pentru chestiuni de mare fineţe de către profesionişti. Acest capitol
se doreşte a fi o prezentare a elementelor esenţiale prin care, dată fiind structura unei baze de date
relaţionale, pot fi formulate interogări (fraze SELECT) prin care se obţin r ăspunsuri la gamă eterogenă
de întrebări. Î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 formulării unei consultări numai prin descrierea rezultatului dorit, cu
ajutorul unei aser ţiuni (expresie logică), f ăr ă a fi necesar ă şi explicitarea modului efectiv în care se
face căutarea în BD. Altfel spus, utilizatorul califică (specifică) rezultatul iar sistemul se ocupă de
procedura de căutare.
Deşi este referit, în primul rând, ca un limbaj de interogare, SQL este mult mai mult decât un
instrument de consultare a bazelor de date, deoarece permite, în egală măsur ă:
• Definirea datelor• Consultarea BD• Manipularea datelor din bază
• Controlul accesului• Partajarea bazei între mai mulţi utilizatori ai acesteia• Menţinerea integrităţii BD.
Deşi toate clasificările îl încadrează la limbaje de generaţia a IV-a, SQL nu este, totuşi, un
limbaj de programare propriu-zis, prin comparaţie cu Basic, Pascal, C, COBOL etc. SQL nu conţine
(până la SQL3) instrucţiuni/comenzi pentru codificarea secvenţelor alternative şi repetitive, cu atât
mai puţin facilităţi de lucru cu obiecte vizuale, specifice formularelor de preluare a datelor (căsuţe-
text, butoane radio, liste, butoane de comandă etc.). Din acest punct de vedere, poate fi referit ca sub-
limbaj 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. Independenţa de producător, nefiind o tehnologie "proprietar ă".2. Portabilitate între diferite sisteme de operare.3. Este standardizat.4. "Filosofia" sa se bazează pe modelul relaţional de organizare a datelor.5. Este un limbaj de nivel înalt, cu structur ă ce apropie de limba engleză.6. Furnizează r ăspunsuri la numeroase înterogări simple, ad-hoc, neprevăzute iniţial.7. Constituie suportul programatic pentru accesul la BD.8. Permite multiple imagini asupra datelor bazei.9. Este un limbaj relaţional complet.10. Permite definirea dinamică a datelor, în sensul modificării structurii bazei chiar în timp ce o parte
din utilizatori sunt conectaţi la BD.11. Constituie un excelent suport pentru implementarea arhitecturilor client-server.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 132/149
132 Instrumente software pentru afaceri
Principalele comenzi ale SQL, care se regăsesc, într-o formă sau alta, în multe dintre SGBDR-
urile actuale sunt prezentate în tabelul 6.1.
Tabel 6.1. Clase de comenzi SQL
Comandă Scop
Pentru manipularea datelor
SELECT Extragerea datelor din BD
INSERT Adăugarea de noi linii într-o tabelă
DELETE Ştergerea de linii dintr-o tabelă
UPDATE Modificarea valorilor unor atribute
Pentru definirea bazei de date
CREATE TABLE Adăugarea unei noi tabele în BD
DROP TABLE Ştergerea unei tabele din bază
ALTER TABLE Modificarea structurii unei tabele
CREATE VIEW Crearea unei tabele virtualeDROP VIEW Ştergerea unei tabele virtuale
Pentru controlul accesului la BD
GRANT Acordarea unor drepturi pentru utilizatori
REVOKE Revocarea unor drepturi pentru utilizatori
Pentru controlul tranzacţiilor
COMMIT Marchează sfâr şitul unei tranzacţii
ROLLBACK Abandonează tranzacţia în curs
6.2. CREAREA TABELELOR ŞI DECLARAREA RESTRICŢIILOR
Limbajul SQL prezintă o serie întreagă de opţiuni care permit crearea tabelelor şi modificarea
valorilor unor atribute pentru tuplurile unei relaţii. Mai mult, standardul SQL dispune de opţiuni clare
privind specificarea unor restricţii legate de cheile primare, cheile str ăine etc. Baza de date pe care o
vom lua în discuţie 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 fiecărui atribut, precum şi restricţiile. Astfel, primele două tabele din baza de date,
CODPOST_LOC şi CLIENŢI 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 uşurinţă clauzele PRIMARY KEY folosite pentru declararea cheilor
primare, UNIQUE pentru cheile alternative, NOT NULL pentru interzicerea valorilor nule, precum şi
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 133/149
Invăţământ la distanţă – Anul I 2008/2009 133
REFERENCES pentru declararea cheii str ăine. În plus, opţiunea CONSTRAINT ne ajută să
“botezăm” fiecare restricţie 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 = CurrentDbdbs.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
Deşi în capitolul 4 spuneam că structura unei baze de date este constantă, există situaţii în care
trebuie să:
- adăugăm un atribut;- eliminăm un atribut;- schimbăm tipul unui atribut;- modificăm lungimea unui atribut;- să declar ăm o nouă restricţie- să anulăm o restricţie în vigoare.
Deoarece baza de date este în uz, nu ne putem permite să ştergem şi apoi să recreăm tabelele,
pentru că aceasta echivalează cu pierderea iremediabilă a înregistr ărilor existente. Aşa că este necesar ă
folosirea comenzii ALTER TABLE. Dacă în tabela CLIENŢI se doreşte păstrarea şi a codului fiscal al
fiecărui furnizor, este necesar ă adăugarea atributului CodFiscal, care este un şir de caractere (un număr
precedat de litera R, dacă clientul respectiv este plătitor de TVA) de lungime 10 caractere. Comanda
utilizată este:
ALTER TABLE CLIENŢI 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 jumătate de pagină:
Sub StergeTabele()Dim dbs As DatabaseSet 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ă până în acest moment principalele clauze ale comenzii CREATE TABLE(şi ALTER TABLE) pentru declararea cheilor primare, alternative şi str ăine, şi valorilor nenule.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 134/149
134 Instrumente software pentru afaceri
Nemeritat, a fost omisă clauza CHECK prin care putem defini restricţii utilizator sub forma regulilor
de validare la nivel de atribut sau înregistrare. Astfel, în tabela CLIENŢI valorile atributului CodClient
trebuie să înceapă de la 1001, iar numele clientului se doreşte a fi scris cu majuscule întotdeauna.
Aceste două reguli de validare pot fi definite în SQL atât în momentul creării:
CREATE TABLE clienti (CodClient INTEGER CONSTRAINT pk_cp PRIMARY KEYCONSTRAINT ck_codclient CHECK (CocClient > 1000),
NumeClient CHAR (30) NOT NULL CONSTRAINT un_numeclient UNIQUECONSTRAINT ck_numeclient CHECK (NumeClient = UPPER(NumeClient)),
Adresa CHAR(60),CodPostal CHAR(6) NOT NULL CONSTRAINT ref_cl_codpost
REFERENCES codpost_loc (CodPostal) ) ;
cât şi ulterior prin ALTER TABLE. Din păcate, ACCESSul nu este prea îngăduitor î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 FieldSet dbs = CurrentDb
' CLIENTI.CodClient > 1000Set 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 majusculeSet 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 facturiiSet 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
fiecărei facturi (prietenii ştiu de ce !), restricţia 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ă imaginaţi, impasibil la graţiile (de tip CHECK) ale SQL-ului,
aşa că singura soluţie e tot cea procedurală:Sub Regula_inregistrare()
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 135/149
Invăţământ la distanţă – Anul I 2008/2009 135
Dim dbs As Database, tdf As TableDefSet dbs = CurrentDbSet 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 !"
End Sub
6.3. COMENZI DE ACTUALIZARE A TABELELOR
SQL prezintă comenzi specifice pentru modificarea conţinutului unei tabele, înţelegând prin
aceasta trei acţiuni prin care se actualizează baza: a) adăugarea de noi linii la cele existente într-o
tabelă; b) ştergerea unor linii, c) modificarea valorii unui atribut.
6.3.1. Adăugare
Să presupunem că, la un moment dat, întreprinderea vinde produse şi firmei RODEX SRL
care are sediul pe strada Sapienţei, nr.44 bis, în localitatea Iaşi. Acest nou client trebuie "introdus" în
baza de date, operaţiune care în SQL, se realizează prin comanda:
INSERT INTO clienti VALUES (1009, ‘RODEX SRL’, ‘Sapienţei, 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’, ‘Sapienţei 44 bis’, 706600)
După cum se observă, după numele tabelei (CLIENŢI) 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 CLIENŢI valoarea atributului Adresa va fi NULL.
Conţinutul celor trei tabele din finalul capitolului 4 a fost realizat în ACCESS prin modulul
următor în care comanda INSERT este argumentul unei comenzi DoCmd.RunSQL:
Sub Inserturi()
' CODPOST_LOCDoCmd.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') ;")
' CLIENTIDoCmd.RunSQL ("INSERT INTO clienti VALUES (1001, 'TEXTILA SA', 'Bld. Copou, 87', '706600' );")DoCmd.RunSQL ("INSERT INTO clienti VALUES (1002, 'MODERN SRL', 'Bld. Gãrii, 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', 'Prosperitãtii, 15', '705725' ) ;")
'FACTURIDoCmd.RunSQL ("INSERT INTO facturi VALUES (111111, 1003, #6-17-2005#, 17000, 0) ;")
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 136/149
136 Instrumente software pentru afaceri
DoCmd.RunSQL ("INSERT INTO facturi VALUES (111112, 1001, #6-17-2005#, 2850, 0);")DoCmd.RunSQL ("INSERT INTO facturi VALUES (111113, 1004, #6-18-2005#, 5850, 0);")DoCmd.RunSQL ("INSERT INTO facturi VALUES (111114, 1003, #6-18-2005#, 2850, 0);")DoCmd.RunSQL ("INSERT INTO facturi VALUES (111115, 1008, #6-18-2005#, 35700, 0);")DoCmd.RunSQL ("INSERT INTO facturi VALUES (111116, 1008, #6-19-2005#, 8700, 0);")DoCmd.RunSQL ("INSERT INTO facturi VALUES (111117, 1006, #6-20-2005#, 1100, 0);")
DoCmd.RunSQL ("INSERT INTO facturi VALUES (111118, 1007, #6-23-2005#, 15000, 0);")DoCmd.RunSQL ("INSERT INTO facturi VALUES (111119, 1005, #6-24-2005#, 4720, 0);")DoCmd.RunSQL ("INSERT INTO facturi VALUES (111120, 1003, #6-24-2005#, 3000, 0);")DoCmd.RunSQL ("INSERT INTO facturi VALUES (111121, 1001, #6-24-2005#, 4250, 0);")DoCmd.RunSQL ("INSERT INTO facturi VALUES (111122, 1007, #6-24-2005#, 8750, 0);")DoCmd.RunSQL ("INSERT INTO facturi VALUES (111123, 1006, #6-25-2005#, 66000, 0);")DoCmd.RunSQL ("INSERT INTO facturi VALUES (111124, 1004, #6-25-2005#, 38600, 0);")DoCmd.RunSQL ("INSERT INTO facturi VALUES (111125, 1003, #6-30-2005#, 1280, 0);")DoCmd.RunSQL ("INSERT INTO facturi VALUES (111126, 1002, #6-01-2005#, 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 evaluării expresiei; modificarea se va produce pe toate liniile tabelei care
îndeplinesc condiţia specificată în predicat. Astfel comanda:
UPDATE facturi SET TVAColectata = INT(ValoareTotala * 19 / 1.19) / 100
va stabili valoarea TVA colectată pentru toate facturile (lipseşte clauza WHERE, deci vor fi afectate
toate liniile din tabela FACTURI) pe 0.19/1.19 din valoarea totală a fiecărei facturi. Funcţia INT
extrage doar partea întreagă dintr-un număr real (se elimină, deci, partea fracţionar ă), iar prin
împăr ţirea rezultatului la 100 ne asigur ăm că TVA va avea două poziţii la partea fracţionar ă.
Î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ă, selectând din meniul Query Type a opţiunii Update Query – vezi
partea stângă 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 valoriloratributului TVAColectată. Cea de-a două modalitate este cea procedurală, comanda prin care se
lansează UPDATE-rile fiind, ca şi in cazul inser ării, 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
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 137/149
Invăţământ la distanţă – Anul I 2008/2009 137
Figura 6.2. Interogare de modificare
Modulul de mai sus, specific ACCESSului conţine, pe lângă 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%. Deşi cei mai
mulţi utilizatori ar opta pentru varianta grafică, va asigur ăm că varianta procedurală este mai
productivă atunci când sunt necesare actualizări repetate, aşa cum este cazul de mai sus.
6.3.3. Ştergeri
Operaţiunea 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 predicatDacă am dori să eliminăm din tabela CLIENŢI linia aferentă clientului MODERN SRL (cod
1002), comanda ar fi:
DELETE FROM clienti WHERE CodClient = 1002
În ACCESS, similar interogărilor pentru modificare pot fi create şi interogări 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 spaţiu, nu vom mai prezenta nici o figur ă în acest scop). Prin program, dacă am dori
eliminarea tuturor înregistr ărilor din tabelele bazei, apoi re-adăugarea şi re-modificarea lor, ne-am
putea servi de blocul următor:
Sub Stergeri()DoCmd.RunSQL ("DELETE FROM facturi ;")DoCmd.RunSQL ("DELETE FROM clienti ;")DoCmd.RunSQL ("DELETE FROM codPost_loc ;")Call InserturiCall Updateuri
End Sub
6.4. STRUCTURA DE BAZĂ A FRAZEI SELECT
Făr ă îndoială, cea mai gustată parte din SQL este cea legată de interogarea bazei, adică de
obţinerea de informaţii din cele mai diverse, prin prelucr ări, grupări etc. Ceea ce a fost prezentat în
paragraful 5.4 este doar o părticică din ceea ce poate fi “stors” dintr-o bază de date. Aşadar, în SQL o
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 138/149
138 Instrumente software pentru afaceri
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 relaţiilor din care vor fi extrase informaţiile aferente
consultării;• prin WHERE se desemnează condiţia (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.
Execuţia unei fraze SELECT se concretizează în obţinerea unui rezultat de forma unei tabele
(relaţii). Când clauza WHERE este omisă, se consider ă implicit că predicatul P are valoarea logică
"adevărat". Dacă în locul coloanelor C1, C2, ... Cn apare simbolul "*", în tabela-rezultat vor fi incluse
toate coloanele (atributele) din toate relaţiile specificate în clauza FROM. De asemenea, în tabela-
rezultat, nu este obligatoriu ca atributele să prezinte nume identic cu cel din tabela enumerată în clauzaFROM. Schimbarea numelui se realizează prin opţiunea AS.
Uneori, rezultatul interogării "încalcă" poruncile modelului relaţional. Conform restricţiei de
entitate, într-o relaţie nu pot exista două linii identice. Or, în SQL, rezultatul unei consultări poate
conţine două sau mai multe tupluri identice. Pentru eliminarea liniilor identice este necesar ă utilizarea
opţiunii DISTINCT: SELECT DISTINCT C1, C2, ..., Cn FROM R1, R2, ..., Rm WHERE P
Am început acest capitol prin a ar ăta fraza SELECT care se ascunde în spatele unei consultări
“grafice” ACCESS. Fraza:
SELECT facturi.NrFact, facturi.Data, [ValoareTotala]-[TVAColectata] AS ValFaraTVA,facturi.TVAColectata, facturi.ValoareTotala
FROM facturi WHERE (((facturi.Data)>#6/20/2005#));
conţine şi un câmp calculat – ValFăr ăTVA, al cărui nume se specifică prin clauza AS, şi ale cărui valori
se determină prin relaţia ValoareTotală – TVAColectată. Predicatul de selecţie (clauza WHERE) asigur ă
extragerea în rezultat doar a facturilor emise după 20 iunie 2005.
Cum se poate introduce o interogare în ACCESS f ăr ă a o “desena” cu proiectantul de machete
pentru interogări prezentat în paragraful 5.4 ? Mai întâi creăm o interogare foarte simplă – să-i zicem –
INTEROG. După modelul indicat în stânga figurii 6.3 îi vizualizăm definiţia folosind opţiunea SQL
View, iar apoi în fereastra care apare înlocuim fraza SELECT cu cea care ne interesează (frază care nu
are, probabil, nici o legătur ă cu definiţia actuală a interogării), după care se apasă butonul Run
(semnul mir ării).
Iar dacă vrem să facem acelaşi lucru prin program, folosim modulul următor:
Sub interogareBETWEEN()Dim consultare As QueryDefSet 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 definiţia unei
interogări (QueryDef ), preia (prin comanda Set) în consultare fraza SELECT care constituie definiţia
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 139/149
Invăţământ la distanţă – Anul I 2008/2009 139
interogării create anterior – interog –, modifică definiţia acestea prin linia consultare.SQL = “SELECT
…” şi, în final, execută noua variantă a interogării, rezultatul fiind similar variantei din figura 6.3.
Figura 6.3. Schimbarea defini ţ iei unei interog ări şi re-execu ţ ia sa
Fireşte, noile definiţii pot fi salvate sau se poate renunţa la ele, mai ales atunci lucr ăm cu
module ce pot apelate ori de câte ori este nevoie.
Operatorul BETWEEN
Fraza SELECT de mai sus conţine operatorul BETWEEN care va extrage din tabelă numai
facturile cu numerele cuprinse între 111120 şi 111124. Făr ă BETWEEN predicatul ar trebuit scris
WHERE nrfact >= 111120 AND nrfact <= 111124.
Operatorul LIKE
Operatorul LIKE se foloseşte 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 doreşte
obţinerea unei tabele-rezultat care să conţină numai clienţii ai căror 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 CLIENŢI 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 liniuţa-de-subliniere("_") sau semnul de întrebare (“?”). Spre deosebire de "%", "_" substituie un singur caracter. Diferen ţa
dintre cei doi specificatori multipli este pusă în evidenţă în continuare. Astfel, dacă interesează care
sunt clienţii ai căror nume începe cu litera A şi sunt societăţi cu r ăspundere limitată (SRL-uri), fraza
SELECT care furnizează r ăspunsul este:
SELECT * FROM CLIENŢI WHERE NumeClient LIKE "A__ SRL%"
(vezi partea stângă a figurii 6.4). Dacă s-ar fi utilizat simbolul "%" de maniera următoare:
SELECT * FROM CLIENŢI WHERE NumeClient LIKE "A%SRL%"
rezultatul ar fi fost cel din partea dreaptă a figurii.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 140/149
140 Instrumente software pentru afaceri
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 utilizaţi împreună.
Operatorul IN
Un alt operator util este IN cu formatul general: expresie1 IN (expresie2, expresie3, ...).
Rezultatul evaluării unui predicat ce conţine acest operator va fi "adevărat" dacă valoarea expresiei1
este egală cu (cel puţin) una din valorile: expresie2, expresie3, ...
Spre exemplu, pentru a afla care sunt clienţii din localităţile din judeţele Iaşi şi Vaslui, f ăr ă
utilizarea operatorului IN se scrie:
SELECT * FROM codpost_loc WHERE Judet = 'Iasi' OR Judet = 'Vaslui'
Iar utilizând IN:
SELECT * FROM codpost_loc WHERE Judet IN ("Iasi", "Vaslui")
Operatorul IS NULL
O valoare nulă este o valoare nedefinită. Este posibil ca la adăugarea unei linii într-o tabelă,
valorile unor atribute să fie necunoscute. În aceste cazuri valoarea atributului pentru tuplul respectiv
este nulă. Reamintim că, prin definiţie, nu se admit valori nule pentru grupul atributelor care constituie
cheia primar ă a relaţiei. Pentru aflarea clienţilor 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 cunoaştem adresa, rezultatul
interogării este cel din figura 6.5 (în ACCESS valorile NULL se afişează ca şi cum ar conţine spaţii).
Figura 6.5. Extragerea valorilor NULLe
Observaţii
Valoarea NULL nu se confundă cu valoarea zero (pentru atributele numerice) sau cu valoarea
"spaţiu" (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 evaluării va fi întotdeauna fals, chiar dacă expresia nu este nulă !
Opţiunile DISTINCT şi ORDER BY
Dorim să aflăm judeţele în care firma are clienţi. Este necesar ă parcurgerea relaţiei
CODPOST_LOC, singurul atribut care interesează fiind Judeţ:
SELECT DISTINCT Judet FROM codpost_loc
După cum se observă în partea stângă a figurii 6.6, SQL nu elimină dublurile automat, iar dacă
se doreşte ca în tabela-rezultat o localitate să figureze o singur ă dată, se utilizează opţiunea DISTINCT
(rezultatul în dreapta figurii 6.6):SELECT DISTINCT Judet FROM codpost_loc
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 141/149
Invăţământ la distanţă – Anul I 2008/2009 141
Figura 6.6. F ăr ă şi cu DISTINCT Figura 6.7. Clauza ORDER BY
În continuare vrem să obţinem denumirea fiecărei localităţi şi judeţul în care se află, dar liniile
rezultatului trebuie ordonate în funcţie de judeţ şi, în cadrul aceluiaşi judeţ, în ordinea inversă a
localităţii (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_locORDER BY Judet ASC, Localitate DESC
Opţiunile ASCENDING (crescător) şi DESCENDING (descrescător) indică deci modul în care se
face ordonarea tuplurilor tabelei-rezultat al interogării. Prioritatea de ordonare este stabilită prin
ordinea atributelor specificate în ORDER BY: ordonarea "principală" se face în funcţie de valorile
primului atribut specificat; în cadrul grupelor de tupluri pentru care valoarea primului atribut este
identică, ordinea se stabileşte după valoarea celui de-al doilea atribut specificat ş.a.m.d. Dacă în
ORDER BY lipsesc opţiunile ASCENDING/DESCENDING, ordonarea se face crescător.
6.5. JONCŢIUNIDupă cum afirmam şi în paragraful 5.4 majoritatea informaţiilor obţinute dintr-o bază de date
necesită “r ăsfoirea” simultană a două sau mai multe tabele. Interogarea Fac_dupa20iunie2005v2 din
figura 5.41 foloseşte trei tabele. Folosind opţiunea SQLView obţinem 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 atenţiei prin apariţia clauzei INNER JOIN. Iată cum stau
lucrurile: deoarece în lista pe care vrem să obţinem se găsesc atribute plasate în cele trei tabele, în
clauza FROM trebuie enumerate cele trei numere; în fapt, după cum am văzut în capitolul 4, cele trei
tabele prin legate prin restricţii referenţiale, atributele de legătura fiind cheile str ăine – cheile primare.
Astfel, legătura dintre FACTURI şi CLIENŢI se poate realiza prin intermediul atributului CodClient
care este cheie primar ă în CLIENŢI (tabela părinte) şi cheie str ăină în FACTURI (tabela copil).
Legătura dintre aceste două tabele care prezintă un câmp comun se numeşte joncţiune şi se
simbolizează în SQL prin INNER JOIN:
SELECT *FROM facturi INNER JOIN clienti ON facturi.CodClient=clienti.CodClient
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 142/149
142 Instrumente software pentru afaceri
Făr ă a intra în prea multe detalii teoretice, reţinem că, ori de câte ori informaţiile necesare şi
condiţiile pe care trebuie să le îndeplinească acele informaţii privesc atribute aflate în tabele diferite,
trebuie f ăcută joncţiunea acestor tabele. Când tabele nu pot fi joncţionate direct, trebuie aduse “cu
for ţa” în clauza FROM şi tabelele care să completeze “lanţul”.
Ne interesează, spre exemplu, numărul şi data facturilor emise clienţilor din judeţul Iaşi. Numărul şi data facturilor se găsesc în tabela FACTURI (atributele NrFact şi Data), însă pentru
denumirea judeţului există un atribut (Judet) în tabela CODPOST_LOC. Cele două tabele nu pot fi
joncţionate direct, aşa încât atragem în interogare şi cea de-a treia tabelă – CLIENŢI:
SELECT NrFact, DataFROM (facturi INNER JOIN clienti ON facturi.codclient=clienti.codclient)
INNER JOIN codpost_loc ON codpost_loc.codpostal=clienti.codpostalWHERE judet=’Iasi’ORDER BY NrFact
Scrisă sub formă de modul ACCESS – InterogareJONCTIUNE1() – şi lansată prin “apăsarea
butonului Run, fraza SELECT obţine rezultatul este cel din figura 6.8.
Figura 6.8. Un modul ACCESS cu frază SELECT ce jonc ţ ionează cele trei tabele (plus rezultatul)
Lăsam să se înţeleagă, la un moment dat, că în SQL pot fi formulate interogări mult mai
complexe decât se poate realiza cu ajutorul machetei din paragraful 5.4. Haideţi să luăm o asemenea
problemă, ce-i drept nu atât de complicată precum ameninţam: Care sunt facturile emise în aceea şi zi
ca şi factura 111113 ? Dificultatea ţine de faptul că cerinţa este formulată indirect, adică vrem să
aflăm facturile emise într-o zi (Data), dar noi nu ştim data etalon, ci factura-etalon.
Problema propusă poate fi rezolvată relativ uşor folosind o subconsultare, după cum va fi prezentat într-un paragraf viitor. Până una-alta, soluţia pe care o avem în acest moment la îndemână se
bazează pe autojonc ţ iune. Autojoncţiunea înseamnă joncţiunea unei tabele (FACTURI) cu ea-însăşi,
practic, joncţiunea a două instanţe ale unei aceleaşi tabele. Pentru a joncţiune cele două instanţe
trebuie să aibă pseudonime (aliasuri) diferite, în cazul nostru F1 şi F2. Întrucât ne interesează facturi
emise în aceea şi zi cu 111113, autojoncţiunea se face după atributul Data:
SELECT *FROM facturi F1 INNER JOIN facturi F2 ON F1.data=F2.dataWHERE F2.NrFact = 111113
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 143/149
Invăţământ la distanţă – Anul I 2008/2009 143
Iată rezultatul – vezi figura 6.9. Rezultatul conţine 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 fiecărui atribut din ce instanţă provine.
Figura 6.9. Facturile emise în aceea şi zi ca şi 111113
Toate liniile rezultatului respectă condiţia de joncţiune - F1.data=F2.data. Jumătatea din dreapta
a coloanelor se refer ă strict la factura etalon – 111113, iar cea din stânga la facturile din aceeaşi zi cu
111113, inclusiv factura-etalon. Pentru a r ăspunde punctual la problemă, precizăm atributele
(coloanele) care ne interesează şi eliminăm din rezultat factura 111113:
SELECT F1.NrFact, F1.DataFROM facturi F1 INNER JOIN facturi F2 ON F1.data=F2.dataWHERE F2.NrFact = 111113 AND F1.NrFact <> 111113
6.6. FUNCŢII-AGREGAT: COUNT, SUM, AVG, MAX, MIN
Cu funcţiile agregat facem un prim pas spre analiza datelor din bază. Li se spune funcţii
agregat deoarece, în absenţa grupării (clauza GROUP BY – vezi ultimul paragraf din acest capitol)
rezultatul unei asemenea funcţii are forma unei tabele cu o singur ă linie.
Funcţia COUNT
Contorizează valorile unei coloane, altfel spus, număr ă, într-o relaţie, câte valori diferite de
NULL are coloana specificată. Dacă în locul unui atribut apare semnul asterisc (*) se număr ă liniilerezultatului. Astfel, dacă vrem să aflăm câţi clienţi are firma vom folosi interogarea (rezultatul său se
află in stânga figurii 6.10).
SELECT COUNT (CodClient) AS Nr_Clienti1, COUNT (*) AS Nr_Clienti2 FROM clienti
Figura 6.10. Ni şte COUNT-uri
Teoretic, în tabela CLIENŢI pot apărea şi clienţi cărora încă nu li s-a trimis încă nici o factur ă.
Dacă vrem să aflăm r ăspunsul la întrebarea: La câ ţ i clien ţ i s-au trimis facturi ?, am fi tentaţi să
folosim interogarea:
SELECT COUNT ( ) AS NrClienti1, COUNT(CodClient) AS NrClienti2FROM clienti INNER JOIN facturi ON clienti.CodClient=facturi.CodClient
care, însă, ne va furniza un r ăspuns eronat (vezi partea dreaptă a figurii 6.10). În produsele care
respectă recomandările standardelor SQL, rezultatul corect poate fi însă obţinut prin utilizarea clauzei
DISTINCT astfel:
SELECT COUNT (DISTINCT CodClient) FROM facturi
În ACCESS această opţiune nu este acceptată, aşa încât mai aşteptăm până la paragraful
dedicat subconsultărilor.
Funcţia SUM
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 144/149
144 Instrumente software pentru afaceri
Funcţia SUM calculează suma valorilor unei coloane. Pentru a afla suma valorilor totale ale
facturilor, soluţia este cât se poate de simplă:
SELECT SUM (ValoareTotala) AS Total_ValoriFacturi FROM facturi
iar totalul valorilor pentru facturile trimise clientului AXON SRL este obţinut astfel:
SELECT SUM (ValoareTotala) AS Total_Fact_AXONFROM facturi INNER JOIN clienti ON facturi.CodClient = clienti.CodClientWHERE NumeClient = ‘AXON SRL’
Funcţiile 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
Aten ţ ie ! La întrebarea Care este factura emisă cu cea mai mare valoare ? nu putem r ăspunde
deocamdată. Varianta următoare nu este corectă: SELECT NrFactura, MAX(ValoareTotala ) FROM facturi
La execuţia acestei interogări se afişează un mesaj de eroare, soluţia problemei fiind posibilă
ceva mai pe finalul capitolului.
6.7. SUB-CONSULTĂRI. OPERATORUL IN
O altă facilitate deosebit de importantă a limbajului SQL o constituie posibilitatea includerii
(imbricării) a două sau mai multe fraze SELECT, astfel încât pot fi formulate interogări cu mare grad
de complexitate. Operatorul cel mai des întrebuinţat este IN. Astfel, revenind la o problemă anterioar ă -
Care sunt facturile emise în aceea şi zi în care a fost întocmit ă factura 111113 ? – în locul epuizantei
auto-joncţiuni 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ă
alcătuită dintr-o singur ă coloană (Data) şi o singur ă linie ce conţine valoarea atributului Data pentru
factura 111113, ca în stânga figurii 6.11. Clauza WHERE Data IN determină căutarea î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 obţinută prin "sub-consultare" (în
cazul nostru, tabela din stânga 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-consult ării (stânga) şi al interog ării
Dacă s-ar schimba condiţia de selecţie, în sensul că ne-ar interesa facturile emise în alte zile
decât 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ă clienţii cărora lis-au trimis facturi întocmite în aceeaşi zi cu factura 111113:
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 145/149
Invăţământ 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 (înlănţuite, incluse) trei fraze SELECT.
6.8. REUNIUNE, INTERSECŢIE, 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ă relaţii, R1 şi R2 sunt uni-compatibile, adică au acelaşi număr
de atribute care corespund sintactic (adică primul atribut din R1 este de acelaşi tip cu primul atribut
din R2), se poate scrie SELECT * FROM R1 UNION SELECT * FROM R2.
În ceea ce ne priveşte, vrem să aflăm cum se numesc clienţii cărora le-am emis facturi pe 23
sau pe 24 iunie 2005, avem la dispoziţie două variante, una bazată pe operatorul logic OR:SELECT DISTINCT NumeClient FROM clienti WHERE CodClient IN(SELECT DISTINCT CodClient FROM facturiWHERE 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# )
UNIONSELECT DISTINCT NumeClient FROM clienti WHERE CodClient IN
(SELECT DISTINCT CodClient FROM facturi WHERE Data = #6/24/2005#)
Pentru realizarea intersec ţ iei 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 “uşoar ă”, precum Visual Fox Pro şi ACCESS INTERSECT r ămâne un deziderat,
funcţionalitatea sa realizându-se prin subconsultări (operatorul IN) sau, uneori, prin joncţiune. Astfel,
dacă dorim să aflăm cum se numesc clienţii cărora le-am emis facturi şi pe 23 şi pe 24 iunie 2005,
soluţia cea mai la îndemână î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#) Diferen ţ a dintre tabelele R1 şi R2 (unicompatibile) se realizează utilizând operatorul MINUS
sau EXCEPT, însă implementările sunt similare operatorului INTERSECT. Astfel, pentru a obţine
clienţii cărora le-am emis facturi şi pe 24, dar nu şi pe 24 iunie 2005, soluţia 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
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 146/149
146 Instrumente software pentru afaceri
În paragraful 5.4 f ăceam cunoştinţă cu o primă interogare în care era necesar ă gruparea
liniilor. Ne interesa valoarea zilnică a vânzărilor într-o anumită perioadă, iar cadrul construirii
interogării (VinzariPeZile_interval_la_alegere) lua forma din figura 5.42. Folosind din nou opţiunea
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 facturiGROUP BY facturi.DataHAVING (((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
relaţii, pe baza valorilor comune ale unei coloane. În frazele SELECT formulate până î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 conţine această clauză este o tabelă care va fi obţinută prin
regruparea tuturor liniilor din tabelele enumerate în FROM, care prezintă o aceeaşi 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
Simplificăm 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 DataTabela-rezultat va avea un număr de linii egal cu numărul de date calendaristice distincte din
tabela FACTURI. Pentru toate facturile aferente unei zile se va calcula suma valorilor, datorit ă
utilizării funcţiei SUM(ValoareTotala). Succesiunea paşilor este următoarea:
1. Se ordonează liniile tabelei FACTURI în funcţie de valoarea atributului Data - figura 6.12.
Figura 6.12. Pasul 1 al grupării Figura 6.13. Al doilea pas al grupării
2. Se formează câte 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.
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 147/149
Invăţământ la distanţă – Anul I 2008/2009 147
Figura 6.14. Rezultatul final al grupării Figura 6.15. Zilele cu vânzări mai mari de 40000 RON
Dacă interesează este numărul facturilor emise pentru fiecare client, r ăspunsul poate fi obţinut
prin interogarea:
SELECT NumeClient, COUNT(NrFact) AS NrFacturi_pe_ClientFROM facturi INNER JOIN clienti ON facturi.CodClient = clienti.CodClientGROUP BY NumeClient
Până 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 restricţii care sunt aplicate grupurilor de tupluri,
deci nu tuplurilor "individuale", aşa cum "face" clauza WHERE. Din tabela rezultat sunt eliminate
toate grupurile care nu satisfac condiţia 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 funcţie 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_ZilniceFROM facturi GROUP BY Data HAVING SUM(ValoareTotala) > 40000
La execuţia acestei fraze, se parcurg cei trei paşi descrişi la începutul acestui paragraf, apoi,
dintre cele nouă tupluri obţinute prin grupare, sunt extrase numai cele care îndeplinesc condiţia
SUM(ValoareTotala) > 40000. Rezultatul final este cel din figura 6.15.
Şi acum, o interogare cu adevărat interesantă: S ă se afi şeze ziua în care s-au întocmit cele mai
multe facturi ! Iată soluţia:
SELECT Data, COUNT(*) AS nr_facturilor FROM facturiGROUP BY Data HAVING COUNT(*) >= ALL
(SELECT COUNT(*) FROM facturi GROUP BY Data)
Figura 6.16. Clauza HAVING cu folosirea unei subconsult ări
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 148/149
148 Instrumente software pentru afaceri
Avem de-a face cu o subconsultare al cărei rezultat (stânga figurii 6.16) serveşte drept termen
de comparaţie al predicatului (condiţiei) formulat în clauza HAVING.
Cam atât pentru acest capitol, disciplină, semestru (“informatic”) şi an (tot “informatic”) ! Vă
mulţumim pentru r ă bdare, şi vă asigur ăm că cine a ajuns cu cititul (şi înţelesul) până în acest punct, are
toate şansele unui examen încununat de succes.
Rezumat
Încă de la apariţia bazelor de date s-a pus problema elaborării unui limbaj universal acceptatcare să permită lucrul cu bazele de date, în sensul creării obiectelor din bază, cât maiales extragerii informaţiilor.
SQL reprezintă cel mai răspândit limbaj de interogare a bazelor de date, fiind prezent în toateSGBD-urile importante la această oră. Standardele SQL considerate decisive în evoluţiabazelor de date: SQL-92, SQL:1999 şi SQL:2003.
SQL pune la dispoziţie comenzi atât pentru crearea tabelelor şi modificarea structurii:CREATE TABLE, ALTER TABLE, cât şi pentru modificarea lor: INSERT, UPDATE,DELETE. Cea mai importantă comandă este SELECT.
Structura de bază a interogărilor, adică a frazei SELECT cuprinde, obligatoriu clauzeleSELECT - în care sunt enumerate atributele şi expresiile ce vor constitui coloanelerezultatului şi FROM - în care se specifică tabelele în care se găsesc atributele extrase înrezultat sau asupra cărora se formulează condiţiile din clauza WHERE.
În multe situaţii, obţinerea informaţiilor reclamă joncţionarea a două sau mai multe tabele dinbaza de date, precum şi folosirea subconsultărilor, operatorul tradiţional fiind IN.
Obţinerea informaţiilor sintetice presupune folosirea funcţiilor agregat: COUNT, SUM, AVG,MIN, MAX, folosite ca atare sau în combinaţiile 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 Languagec. Simbolic Query Languaged. Simple Query Languagee. Structured Query Language
II. Se dă următoarea frază SQL:SELECT Data, SUM(ValoareTotala) AS TotalValTotalaFROM FACTURI, CLIENŢIWHERE CLIENŢI.CodClient =FACTURI.CodClientGROUP BY DataHAVING SUM(ValoareTotala) > 50000000
Rezultatul acestei fraze va conţine:a. Valoarea zilnică facturilor emise
b. Totalul facturilor emise, pe fiecare zic. Totalul facturilor emise, pe fiecare zi în care acesta depăşeşte valoarea de 50000000 lei
d. Fraza SELECT este greşită
7/22/2019 ISA 2008-2009
http://slidepdf.com/reader/full/isa-2008-2009 149/149
Invăţământ la distanţă – Anul I 2008/2009 149
BIBLIOGRAFIE
1. Airinei, D., ş.a., Medii de programare, ediţia 2, Ed. Sedcom Libris, Iaşi, 2002
2. Fotache, M., Baze de date rela ţ ionale, Ed. Junimea, Iaşi, 19973. Fotache, M.,SQL – Dialecte DB2, Oracle, Visual FoxPro, Ed. Polirom, Iaşi, 2001
4. Fotache, M., Proiectarea bazelor de date, Ed. Polirom, Iaşi, 2005
5. Grama, A, Filip, M., Facilit ăţ i Excel în aplica ţ iile economice, Ed. Sedcom Libris, Iaşi, 2000
6. Grama, A., Filip, M., Medii de programare în economie, Ed. Sedcom Libris, Iaşi, 2000
7. Grama, A., Fotache, M., Ţugui, Al., Dumitriu, F., Medii de programare, Ed. Sedcom Libris,
Iaşi, 2002
8. Gunderloy, M., Harkins, S.S., Microsoft Office Access 2003, Editura All, Timişoara, 2003
9. Maniez, D., VBA pour Microsoft Word, Excel, Access, Dunod, Paris, 2000
10. Ţugui, Al, Teoria mediilor de programare, Ed. Junimea, Iaşi, 2001
11. ***, Microsoft Office Access 2003. Step by Step, Microsoft Press, 2004