ISA 2008-2009

149
 Ana GRAMA Marin FOTACHE Alexandru ŢUGUI Florin DUMITRIU INSTRUMENTE SOFTWARE PENTRU AFACERI

Transcript of ISA 2008-2009

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