Documente Academic
Documente Profesional
Documente Cultură
Costul ridicat se datoreaz gradului mare de redundan a datelor, eforturilor deosebite ce trebuie depuse pentru interconectarea diferitelor tipuri de fiiere de date i pentru asigurarea funcionrii sistemului n condiiile respectrii unui nivel minim de integritate i securitate a informaiilor. Aceste dezavantaje sunt mai mult dect convingtoare, determinndu-i pe specialiti s caute alte soluii, concretizate prin conceptul de baz de date. Sintagma baz de date apare pentru prima dat n titlul unei conferine organizate la Santa Monica (California) n 1964 de System Development Corporation. Consacrarea definitiv a termenului este marcat de publicarea n anul 1969, de ctre CODASYL, n cadrul unei conferine dedicate limbajelor de gestiune a datelor, a primului raport tehnic n care este prezentat conceptul de baz de date. Fa de modelul fiierelor independente, noutatea o constituie existena unui fiier de descriere global a bazei, astfel nct s se poat asigura independena programelor fa de date. Avantajele organizrii informaiilor n baze de date decurg tocmai din existena acestui fiier de descriere global a bazei, denumit, n general, dicionar de date. Extragerea i modificarea datelor, altfel spus, lucrul cu fiierele de date, se deruleaz exclusiv prin intermediul dicionarului n care se gsesc informaii privitoare la structura datelor i restriciile ndeplinite de acestea. O baz de date (BD) reprezint un ansamblu structurat de fiiere, care grupeaz datele prelucrate n aplicaiile informatice ale unei persoane, grup de persoane, ntreprinderi, instituii etc. Formal, BD poate fi definit ca o colecie de date aflate n interdependen, mpreun cu descrierea datelor i a relaiilor dintre ele, sau ca o colecie de date utilizat ntr-o organizaie, colecie care este automatizat, partajat, definit riguros (formalizat) i controlat la nivel central. Atunci cnd vorbim despre o baz de date, trebuie avute n vedere dou aspecte fundamentale ale acesteia, schema i coninutul. Organizarea bazei de date se reflect n schema sau structura sa, ce reprezint un ansamblu de instrumente pentru descrierea datelor, a relaiilor dintre acestea, a semanticii lor i a restriciilor la care sunt supuse. Ansamblul informaiilor stocate n baz la un moment dat constituie coninutul sau instanierea sau realizarea acesteia. n timp ce volumul prezint o evoluie spectaculoas n timp, schema unei baze rmne relativ stabil pe tot parcursul utilizrii ei. Datele stocate ntr-o BD prezint, ntr-o msur mai mare sau mai mic, urmtoarele caracteristici: partajabilitate disponibilitate pentru un mare numr de utilizatori i aplicaii; persisten existen permanent, din momentul prelurii n baz pn n momentul actualizrii sau tergerii; securitate protejarea de accesul neautorizat, att n ceea ce privete citirea i copierea, ct i modificarea i tergerea; validitate referit i ca integritate sau corectitudine privete gradul de adecvare dintre datele din baz i realitatea, procesele pe care le reflect aceste date; consisten ori de cte ori diverse aspecte ale proceselor sau fenomenelor reale sunt preluate n baz sub forma a doua sau mai multor entiti sau atribute, aceste entiti /atribute trebuie s fie n concordan unele cu celelalte, s respecte relaiile existente ntre aspectele proceselor /fenomenelor reale; nonredundan - pe ct posibil, o entitate din realitate ar trebui s aib un singur corespondent n baza de date; independen privete autonomia logic i fizic evocate mai sus.
De-a lungul istoriei bazelor de date au existat mai multe modele de organizare a datelor. Fr a intra n detalii, s le amintim totui: Modelul ierarhic. Primele Sisteme de Gestiune a Bazelor de Date - SGBD lucrau cu baze de date ierarhice, n care structura datelor era prezentat sub forma unui arbore. Modelul reea. Este o dezvoltare a modelului ierarhic, prin care se pot reprezenta i situaiile n care un fiu "posed" mai muli tai. Modelul relaional a fost urmtorul n ordinea cronologic i rmne cel care domin copios piaa bazelor de date i la acest moment, motiv pentru care vom cu prezentarea ceva mai detaliat a sa. Modelul obiectual. S-a ncercat aplicarea abordrii orientate pe obiecte (OO) i n lumea bazelor de date ns, spre deosebire de domeniile analizei, proiectrii i programrii, fr prea mult succes. Piaa SGBD OO se afl sub 6% din valoarea total a pieei bazelor de date. Modelul relaional-obiectual. Este un model mai recent ce ncearc s valorifice deopotriv atuurile relaionalului cu orientarea pe obiecte. Dei privit mai degrab cu nencredere n cercurile teoreticienilor, acest model se impune ncet-ncet datorit marilor productori de software dedicat bazelor de date.
ordinea liniilor i coloanelor n cadrul tabelei nu este relevant pentru coninutul informaional. Fiecare linie a tabelei reprezint o entitate sau un fapt al realitii, n timp ce o coloan reprezint o proprietate a acestei entiti sau fapt. Introducnd un plus de rigoare, se cuvine de remarcat c entitatea poate fi nu numai un obiect concret/proces (o persoan, un lucru oarecare), dar i o relaie ntre obiecte (persoane, lucruri), cum ar fi: contractele de afaceri, cstoriile (exist totui cteva deosebiri ntre acestea i precedentele), structura ierarhic a unei organizaii etc. n plus, nu e ntotdeauna evident care dintre informaii sunt entiti, care atribute i care asociaii (relaii). Ansamblul valorilor stocate n tabelele reprezint coninutul bazei de date, coninut ce poate fi modificat prin operaiuni de actualizare: introducerea unor linii (tupluri) noi, tergerea unor linii, modificarea valorii unor atribute. Modelului relaional i este asociat teoria normalizrii, care are ca scop prevenirea comportamentului aberant al relaiilor n momentul actualizrii lor, eliminarea datelor redundante i nlesnirea nelegerii legturilor semantice dintre date. Dei IBM a fost prima care a iniial un proiect destinat elaborrii unui SGBD relaional (System/R, ncepnd cu 1974), prima firm care a lansat primul SGBDR comercial a fost Relational Software Inc., astzi Oracle. Infiinarea firmei a avut loc n 1977, iar lansarea produsului n 1979. Impunerea pe pia a SGBD-urilor grefate pe modelul relaional a fost mult mai dificil dect s-ar putea nelege astzi. Abia n deceniul 9, datorit vitezei ameliorate, securitii sporite i mai ales productivitii dezvoltatorilor de aplicaii, modelul relaional a ctigat supremaia. Exist o larg tipologie a SGBDR-urilor, aa nct orice categorisire i are riscul su. Cele mai accesibile i, implicit, cele mai utilizate sunt SGBD-urile dedicate iniial uzului individual: Access, Paradox, Visual FoxPro. Astzi, multe dintre acestea au caracteristici profesionale i pot fi folosite la dezvoltarea aplicaiilor pentru simultan a zeci de utilizatori.
Extrase din lucrarea [Codd70] se gsesc la adresa http://www.acm.org/classics/nov95/. De asemenea, o excelent analiz a articolelor lui Codd este n [Date98].
Pentru aplicaiile complexe din bnci, corporaii, organizaii i instituii de mari dimensiuni sau impus SGBDR-urile de "categoria grea": Oracle, DB2 (IBM), Informix (DB2), Sybase, SQL Server (Microsoft). Acestea sunt mult mai robuste, mult mai fiabile, dar i costisitoare. n ultimul timp i-au fcut apariia, ca alternative la marii coloi, aa zisele Free-DBMS-uri, precum PostgreSQL, MySQL, Interbase etc. Acestea ruleaz, de obicei, pe sisteme de operare de tip Linux (foarte ieftine) i se ntrevd ca adversari serioi ai marilor productori.
Do menii
Valoare atomic
Figura 1.1. Relaia (tabela) ANGAJAT ntre relaii (tabele) se stabilesc legturi prin intermediul unor atribute (coloane) comune. n figura 1.2 este prezentat un exemplu simplificat de baz de date pentru evidena personalului.
DEPARTAMENT CodDepart DenumireDepart 1 Resurse umane 2 Contabilitate 3 Aprovizionare NrPosturi 3 5 4
ANGAJAT Marca Nume 1001 Minculescu 1002 Roman 1003 Titulescu 1004 Porumb
Sex B B B F
CodDepart 1 3 1 2
PONTAJ Luna Anul Marca 9 2007 1001 9 2007 1002 9 2007 1003 9 2007 1004 10 2007 1001 10 2007 1002
Fig. 1.2 Exemplu de baz de date relaional n tabelul 1.1 sunt prezentate principalele noiuni utilizate n descrierea modelului relaional, precum i termenii corespondeni din teoria mulimilor i din domeniul prelucrrii datelor.
Tabel 1.1 Terminologia diferitelor domenii de lucru Baze de date Convenii din prelucrarea relaionale datelor Tabel Fiier Toate valorile Toate valorile posibile pe posibile pe care le poate care le poate avea un cmp avea o coloan Tuplu Linie nregistrare n modelul relaional, datele sunt stocate sub forma tabelelor, numite i relaii (de aici provine i numele de model relaional). Conceptul de relaie (tabel) permite reprezentarea unei entiti din universul modelat. n exemplul nostru din figura 1.2 se regsesc trei tabele: ANGAJAT, DEPARTAMENT i PONTAJ. Fiecare linie dintr-o tabel (relaie), numit tuplu, conine date despre un caz sau o instan a entitii reprezentate prin tabela respectiv. De exemplu, fiecare linie din tabela ANGAJAT conine datele necesare despre un anumit angajat al firmei. Prin urmare, tabela ANGAJAT va conine attea linii ci angajai are firma. Ordinea tuplurilor (liniilor) nu prezint importan din punctul de vedere al coninutul informaional al tabelei. Fiecare coloan (atribut) conine informaii despre o anumit caracteristic a entitii reprezentate, ele fiind cunoscute i sub numele de valori ale caracteristicii. Astfel, fiecare instan a entitii ANGAJAT este descris prin urmtoarele caracteristici: marca, numele, prenumele, CNP-ul, sexul, adresa, salariul tarifar i codul departamentului n care lucreaz. Atributele reinute ntr-o tabel depind de nevoile informaionale ale utilizatorilor. La intersecia fiecrei linii i coloane se va introduce o valoare atomic, adic o valoare care nu mai poate fi descompus. De exemplu, la intersecia coloanei SalarTarifar cu ultima linie din tabela ANGAJAT se regsete o singur valoare, 1900, care nu mai poate fi descompus (vezi figura 1.1). Totui, n exemplul nostru se poate considera c unele coloane nu conin valori atomice. Coloana Adresa din tabela ANGAJAT ar putea fi descompus cel puin n ora, strada i numr. Este adevrat ns, fr a intra n alte detalii legate de procesul de normalizare, trebuie s spunem c atomicitatea valorilor stocate ntr-o tabel este o noiune relativ. Ea depinde de nevoile informaionale ale utilizatorului. Astfel, dac utilizatorul va avea nevoie s extrag din baza de date i s prelucreze doar datele despre angajaii care locuiesc pe o anumit strad sau la un anumit numr indiferent de numele strzii, atunci se justific descompunerea atributului Adresa n mai multe atribute, precum Strada, Numar, Bloc, Scara, Apartament, Localitate. n cazul n care nu se solicit prelucrarea datelor despre angajai n funcie de pri ale adresei, atributul Adresa poate fi considerat atomic. Fiecare atribut este caracterizat printr-un nume i un domeniu de valori pe care le poate lua. Domeniul poate fi definit ca mulimea tuturor valorilor acceptate (autorizate) pentru un atribut (coloan) al relaiei: pentru atributul Sex, domeniul este alctuit din dou valori: Femeiesc (F) i Brbtesc (B); domeniul atributului Judet este alctuit din numele fiecrui jude (plus Bucureti). domeniul unui atribut precum SalarTarifar este cu mult mai larg, fiind alctuit din orice valoarea cuprins ntre 460 (salariul minim) i 99999 RON. n figura 1.1 pe a doua linie a tabelei n coloana Adresa apare o valoarea curioas notat NULL. Valoarea NULL este considerat o metavaloare i indic faptul c, n acel loc, informaia este 6 Teoria mulimilor Relaie Domeniu
necunoscut sau inaplicabil. Valoarea NULL este diferit, ns de valorile 0 sau spaiu. n exemplul nostru, valoarea NULL semnific faptul c nu se cunoate nc adresa angajatului cu marca 1002. Orice relaie (tabel) posed cel puin o cheie, adic un atribut sau un grup de atribute prin care se poate identifica n mod unic orice tuplu (linie). Cnd cheia este constituit dintr-un singur atribut, poart numele de cheie simpl, iar atunci cnd este format din mai multe atribute ea se numete cheie compus. Dac o tabel dispune de mai multe chei, una va fi aleas drept cheie primar. n figura 1.2, coloanele care reprezint cheia primar sunt evideniate cu caractere ngroate (bold). Tabelele ANGAJAT i DEPARTAMENT au cheie primar simpl, respectiv Marca i CodDepart, n timp ce tabela PONTAJ are o cheie compus, format din Luna, Anul i Marca. Remarcai n figura 1.1 c doar unul din cele trei atribute nu poate juca rolul de cheie deoarece exist valori care se pot regsi pe mai multe linii. n mulimile matematice nu este permis ca un obiect s apar de mai multe ori. Ct timp o relaie este o mulime de tupluri, teoretic nici o linie a unei relaii nu poate fi duplicatul altei linii (SQL admite existena unor linii duplicat ntr-un tabel, considerndu-se c exist modaliti de eliminare a lor, dac se dorete). Dac o coloan sau o combinaie de coloane nu poate s identifice n mod unic o linie, atunci trebuie inventat o coloan-cheie special. Oricum, fiecare relaie trebuie s dispun de o cheie primar. Vom reveni asupra noiunii de cheie n paragraful urmtor cnd vom discuta despre restricia de unicitate. Legtura ntre tupluri din tabele diferite se realizeaz prin intermediul unei coloane comune, utilizndu-se noiunea de cheie strin, ntlnit uneori n literatur i sub numele de cheie extern. O cheie strin este un atribut care apare ntr-o tabel i care este cheie primar ntr-o alt tabel cu care se afl n legtur. n exemplul nostru din figura 1.2 cheile strine sunt evideniate prin caractere nclinate (italic). Legtura dintre tabelele DEPARTAMENT i ANGAJAT este realizat prin intermediul atributului comun CodDepart. Acest atribut joac rolul de cheie primar n tabela-printe DEPARTAMENT i rolul de cheie strin n tabela-copil ANGAJAT. Legtura dintre tabelele ANGAJAT i PONTAJ se realizeaz prin intermediul atributului Marca, care este cheie primar n prima tabel i cheie strin n cea de-a doua. n legtur cu cheia strin se definete restricia de integritate referenial, asupra creia vom reveni n paragraful urmtor.
valori non-nule: valorile atributului (sau ale ansamblului de atribute) ce desemneaz cheia primar sunt ntotdeauna specificate, deci ne-nule i, mai mult, nici un atribut din compoziia cheii primare nu poate avea valori nule; aceast a treia condiie se mai numete i restricie a entitii. Dac ntr-o relaie exist mai multe combinaii de atribute care confer unicitate tuplului, acestea sunt denumite chei candidate. Proiectantul va alege una dintre ele drept cheie primar. O cheie candidat care nu a fost aleas cheie primar este referit ca i cheie alternativ. Revenind la exemplul nostru, tabela ANGAJAT conine dou atribute cu rol de identificator: marca, un cod unic atribuit n firm fiecrui angajat n momentul angajrii, i CNP, un cod unic atribuit fiecrei persoane din Romnia n momentul naterii i care rmne neschimbat pe tot parcursul vieii persoanei. Celelalte atribute ale tabelei nu pot avea rol de identificator. De exemplu, atributele Nume i Prenume nu poate fi cheie, deoarece chiar i ntr-o ntreprindere de talie mijlocie, este posibil s existe doi angajai cu acelai nume sau prenume. Nici mcar combinaia lor nu garanteaz unicitatea att timp ct pot exista dou persoane cu acelai nume i prenume. Din cele dou atribute, am ales marca drept cheie primar, iar CNP va fi cheie alternativ. Dup cum am spus i n paragraful anterior, unele tabele prezint o cheie primar compus. Tabela Pontaj are cheia format din Luna, Anul i Marca. Poate o discuie suplimentar ar fi binevenit. n primul rnd, se poate observa c nici un atribut al tabelei nu poate fi identificator, de unul singur. Atributele OreZi, OreSuplimentare i OreNoapte nu intr n discuie, deoarece este foarte probabil ca doi sau mai muli angajai s aib acelai numr de ore lucrate ntr-o lun; Luna i/sau Anul nici vorb, de vreme ce n orice firm exist doi sau mai muli angajai, nsemnnd c tabela va avea mai multe linii cu aceleai valori pentru cele dou atribute. Atributul Marca este singurul care se apropie de cerinele unui identificator, ns nici el nu rspunde ntrutotul acestor cerine, deoarece pentru fiecare lun se va aduga o linie pentru angajatul respectiv n tabela Pontaj. Dup cum se poate observa n figura 1.2, angajaii cu mrcile 1001 i 1002 se regsesc pe cte dou linii, una pentru luna septembrie i una pentru octombrie, anul 2007. Aadar, singura combinaie posibil pentru cheia primar este cea format din cele trei atribute. O alternativ la aceast soluie ar fi introducerea unui atribut artificial, s-i spunem IdPontaj, care s aib valori unice pentru fiecare linie din tabel.
lucreaz. Dac n ANGAJAT ar exista vreo linie n care valoarea atributului CodDepart ar fi, spre exemplu 9, este clar c acea linie ar fi orfan (nu ar avea linie corespondent n tabela printe DEPARTAMENT). Declararea restriciei refereniale presupune definirea aspectelor de comportament al datelor n cazul celor trei operaiuni de actualizare: adugarea, modificarea i tergerea de linii. n cazul operaiunii de adugare, nu este permis introducerea unei noi linii n tabela-copil care s nu aib corespondent n tabela-printe. De exemplu, nu este corect adugarea unui angajat n tabela ANGAJAT cu valoarea 9 pentru atributul CodDepart, att timp ct aceast valoare nu se regsete ntre valorile atributului CodDepart din tabela DEPARTAMENT. Ori este o greeal de introducere, ori trebuie adugat mai nti departamentul cu codul 9 n tabela DEPARTAMENT. Celelalte dou operaiuni privesc comportamentul datelor din tabela-printe. Astfel, nu se admite modificarea valorii cheii primare pentru o linie din tabela-printe dac aceasta are asociat cel puin o linie n tabela-copil. De exemplu, nu se admite modificarea valorii cheii primare pentru linia corespunztoare departamentului "Resurse umane" (valoarea 1 pentru coloana CodDepart) n tabela DEPARTAMENT deoarece n tabela ANGAJAT, nu una ci chiar dou linii fac referire la aceast valoare. n mod asemntor, nu este permis tergerea unei linii din tabela-printe dac exist cel puin o linie n tabela-copil care face referire la ea. Cu att mai mult, linia corespunztoare departamentului "Resurse umane" din tabela DEPARTAMENT nu poate fi eliminat. Dac nu ar fi existat cele dou lini n tabela ANGAJAT, atunci operaia de tergere ar fi putut avea loc. Majoritatea SGBD-urilor prezint mecanisme de declarare i gestionare automat a restriciilor refereniale, prin actualizri n cascad i interzicerea valorilor care ar nclca aceste restricii. Vom relua acest subiect n capitolul urmtor, dedicat ACCESS-ului.
1.3.5. Restricii-utilizator
Restriciile utilizator mai sunt denumite i restricii de comportament sau restricii ale organizaiei (termenul n limba englez este business rules). De obicei, aceste restricii iau forma unor reguli de validare la nivel de atribut, la nivel de linie/tabel sau a unor reguli implementate prin declanatoare (triggere). Reguli la nivel de atribut O restricie la nivel de atribut poate preveni introducerea n baza de date a unor valori din alte intervale dect cele stabilite, n alte formate dect cele acceptate etc. Forma clasic a unei restricii la nivel de atribut este o expresie n care apar constante, funcii-sistem i, nu n ultimul rnd, atributul respectiv. La orice editare a atributului cu pricina (declanat n cazul inserrii unei linii n tabela din care face parte, sau la modificarea sa) expresia este evaluat i dac rezultatul evalurii este TRUE (adevrat), atunci inserarea/modificarea este permis, iar dac rezultatul este FALSE, atunci inserarea/modificarea este blocat i, eventual, este afiat un mesaj de eroare. Iat cteva exemple de astfel de reguli: numrul orelor suplimentare s fie mai mic de 30 (a se evita surmenarea angajailor!); numele i prenumele angajailor s nceap cu majuscul; marca angajailor s aib valori cuprinse ntre 1001 i 9999; salariul tarifar s fie mai mare dect salariul minim pe economie.
10
Expresia care definete o restricie la nivel de nregistrare poate conine dou sau mai multe atribute i este evaluat la inserarea sau modificarea oricrei linii din tabel. Tabela PONTAJ conine, printre altele trei atribute numerice privind numrul orelor lucrate de un angajat ntr-o anumit lun, respectiv OreZi, OreSuplimentare i OreNoapte. Reinerea a trei cmpuri poate fi justificat de modul diferit de calcul al veniturilor lunare. Pentru a se evita greelile grave de editare a datelor din pontaje sau a asigura respectarea politicii firmei se poate impune regula ca numrul maxim de ore lucrate ntro lun de un angajat s fie mai mic de 250, adic OreZi + OreSuplimentare + OreNoapte < 250. Este lesne de observat c aceast regul implic trei atribute, deci trebuie instituit la nivel de nregistrare (linie). Alte tipuri de restricii utilizator Exist i alte tipuri de restricii a cror validare presupune citirea unor date aflate n tabele diferite. Acestea reclam ntrebuinarea unor proceduri speciale, numite declanatoare (triggere).
CAPITOLUL 2
meniul Start, selectnd din meniul Programs opiunea Microsoft Office ACCESS 2003,
Prelucrare dup Grama, A., Fotache, M., ugui, A., Dumitriu, F., Instrumente software pentru afaceri, Editura Universitii Alexandru Ioan Cuza, Iai, 2006
11
meniul rapid (apsarea butonului dreapta al maouse-ului pe Desktop, selectnd comanda New i apoi opiunea Microsoft Office ACCESS Application;
shortcut-ul de pe Desktop, accesnd pictograma de pe desktop, dac a fost creat o scurttur ACCESS 2003. Interfaa ACCESS Dialogul utilizator-sistem se realizeaz, prin intermediul interfeei ACCESS constituit, n principal, din bara de instrumente Database, bara meniu i panoul de activiti. Bara de instrumente Database, pe lng butoanele prezente n barele Standard ale altor produse MS Office, are n componen o serie de butoane specifice. Cel mai important este Relationships reprezint grafic relaiile existente i permite modificarea acestora sau crearea altora noi. La deschiderea sesiunii este activat, n dreapta ecranului, panoul de activiti Task Pane care ofer o serie de legturi, ce difer n funcie de operaia n curs de derulare (figura 2.1):
Connect to Microsoft Office online conectarea online la pagina Microsoft Office ; Search for... - cutarea n funcie de anumite criterii; Open deschiderea unuia dintre fiierele aflate n lista ultimelor fiiere cu care s-a lucrat, sau a unui alt fiier, cutat cu ajutorul butonului More...care deschide o fereastr Open; Create a new file... crearea unui nou fiier.
Afiarea sau ascunderea panoului de activiti se realizeaz din meniul View, prin comanda Task Pane.
Dac se opteaz pentru crearea unui nou fiier, Task Pane ofer mai multe variante (figura 2.2):
Blank database - crearea unei baze de date goale care nu conine nici o dat sau orice alte obiecte (opiunea cea mai des utilizat); From Existing File crearea unei baze de date noi folosind structura unei baze de date existente; On my computer construirea unei baze de date dintr-un fiier ablon;
Proiectele ACCESS permit dezvoltarea unor noi aplicaii client-server n urmtoarele situaii mai complexe: 12
datele sunt foarte importante; nu se accept nici un fel de pierderi da date i nici o indisponibilitate temporar a datelor; datele vor fi folosite simultan de mai multe persoane. ACCESS admite cel mult 255 de utilizatori, dar performanele pot fi mult diminuate dac utilizatorii sunt deosebit de activi; baza de date va avea dimensiuni foarte mari.
Configurarea sesiunii de lucru n ACCESS Ca i alte produse software, ACCESS permite stabilirea unor parametrii de lucru pentru sesiunea curent i, eventual, a sesiunilor urmtoare. n acest scop se activeaz din meniul Tools, comanda Options. Fereastra acestei comenzi este structurat pe numeroase cadre de pagin: View, General, Edit/Find, International etc. Vizm n continuare doar cadrul de pagin General care, printre altele, permite stabilirea unui director implicit n care vor fi salvate fiierele. Pentru exemplificare, din raiuni lesne de neles, n zona Default database folder:, s-a declarat ca director curent D:\feaa\isa_id\capitolul 4 (figura 2.3).
Figura 2.3 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 (aplicaiile) ACCESS Un proiect ACCESS se organizeaz n jurul unei baze de date, i poate conine urmtoarele tipuri de obiecte:
Tabele (Tables) reprezint locul n care sunt stocate datele brute ale unei baze de date; Interogri (Queries) tabele care conin rspunsuri la anumite ntrebri despre date; Formulare (Forms) componente care ofer o interfa de introducere i afiare a datelor; Rapoarte (Reports) faciliti care ofer diferite modaliti de afiare /tiprire a datelor coninute n tabele;
13
Pagini (Pages) sunt asemntoare formularelor, n plus ele pot fi afiate ntr-un browser Web. Astfel, ACCESS este prima baz de date care permite transferul datelor pe un site Web; Module (Modules) sunt obiecte care conin coduri de programare, scrise n VBA. Modulele ofer utilizatorilor avansai posibilitatea de a personaliza bazele de date i coninutul acestora.
PROBLEM
Pasul 1 Definirea problemei
Se cere crearea unei aplicaii privind gestiunea personalului, care s acopere urmtoarele cerine funcionale: Evidena angajailor pe locuri de munc, funcii i nivelul studiilor; Evidena posturilor de munc; Evidena orelor lucrate pe tipuri de ore; Evidena deciziilor de transfer, promovare etc.
Aplicaia va fi realizat n mediul Microsoft Access i va conine baza de date, formulare, rapoarte i rspunsuri la ntrebri (interogri).
Text este folosit pentru stocarea irurilor de cel mult 255 de caractere alfanumerice (litere, numere, simboluri etc.); Memo este indicat pentru a stoca iruri care depesc 255 de caractere, nu sunt structurate i /sau au un anumit caracter de confidenialitate; coninutul cmpurilor memo nu este vizualizat atunci cnd se afieaz coninutul tabelelor; Number accept doar date numerice (ntregi sau cu zecimale), cu un numr suficient de poziii, pentru aproape toate datele economice. La rndul lor datele numerice pot fi reprezentate n diferite formate: Byte, Long Integer, Integer, Single, Double, Decimal; 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;
14
Currency este asemntor datelor numerice, cu deosebirea c accept doar patru digii pentru partea zecimal. Este conceput pentru a evita erorile de rotunjire, astfel nct calculele cu bani s fie precise. i datele de acest tip pot avea mai multe formate: General number, Format Euro, Currency, Fexed, Standard, Percent, Scientific; AutoNumber este o variant special a datelor Number. Este recomandat n procedura de stabilire a cheii primare, atunci cnd din structura tabelei este dificil de ales un cmp reprezentativ. Formatele pentru AutoNumber sunt: Long Integer, Replication ID; Yes /No - este conceput pentru a pstra nregistrri simple On /off. Formatele pot fi: True /False, On/Off; Ole Object permite stocarea informaiilor ntr-un format accesibil altor programe (documente Word, foi de calcul Excel, imagini, fiiere cu muzic etc.) Hyperlink este un tip de date text special conceput pentru a stoca hyperlink-uri ctre site-uri Web sau alte resurse Internet; Lookup Wizard cmp special de cutare.
Remarcm disponibilitatea datelor de tip Lookup Wizard care folosite pentru a declara cmpuri de cutare. Majoritatea bazelor de date organizeaz dou tipuri de tabele: cele care includ date primare i cele care conin liste de valori folosite n tabele. Aceste tabele auxiliare se numesc tabele de cutare (lookup tables) i prezint dou avantaje: pun la dispoziia utilizatorului opiuni consecvente i simplu de utilizat i permit validarea datelor, acceptnd numai datele din tabel. Dac lista intrrilor posibile pentru un cmp este redus i are o perioad mare de valabilitate se poate crea un tabel de cutare bazat pe o lista de valori introduse, nu pe tabel (de exemplu, pentru cmpul stare civil, se poate introduce o list de valori Cstorit i Necstorit). Dac se opteaz pentru utilizarea unui cmp cu valori posibile, este necesar crearea unui tabel de cutare nainte de a putea folosi tabelul pentru a crea un cmp de cutare ntr-un alt tabel. Fiecare tip de date poate fi personalizat prin intermediul proprietilor. Aceste proprieti se stabilesc prin fereastra proiectantului de tabele Design View. Observaie n expresii, datele de tip text sunt incluse ntre ghilimele (de exemplu, Managementul Resurselor Umane), iar datele calendaristice sunt ncadrate de semnul # (de exemplu, #12/10/2008#).
15
Figura 2.4 Fereastra File New Database Pentru crearea unui tabel ACCESS ofer trei posibiliti (figura 2.5):
Obiectele unei BD
Create table in Design view - folosind modul de proiectare a tabelului; este cea mai puternic i mai flexibil modalitate fiind specificate detaliile fiecrui cmp; Create table using wizard - apelnd asistentul Table Wizard care precizeaz paii care trebuie urmai pentru construirea unor tabele obinuite; Create table by entering date introducnd datele n cmpurile create de ACCESS; aceast metod este apropiat de modul de lucru n Excel.
Crearea tabelelor prin introducerea datelor Cea mai confortabil pentru nceptori este crearea tabelelor prin introducerea datelor. Dac se alege aceasta opiune (Create table by entering date), n etapa imediat urmtoare se deschide o fereastr n care coloanele, reprezentnd cmpurile, au nume predefinite de tipul Field<n>. Pe rndurile tabelului se introduc nregistrrile /articolele (figura 2.6).
Figura 2.6 Fereastra Create table by entering date pentru tabela LocMunca 16
n continuare, se face salvarea tabelului i, implicit, precizarea numelui acestuia ntr-o fereastr Save As, prin utilizarea butonului creeaz tabela LocMunca (figura 2.7). . Pentru exemplificare, n baza de date Personal se
Figura 2.7 Ferastra Save As pentru tabela LocMunca La final, se vor redenumi cmpurile/coloanele pentru a sugera coninutul acestora. Se folosete comanda Rename Column apelat fie din meniul rapid (activat de pe antetul /header-ul cmpului /coloanei), fie din meniul Format (figura 2.8). Intrarea n modul de editare este posibil i prin dublu click de mouse de pe antetul cmpului al crui nume urmeaz a fi schimbat.
Figura 2.8 Comanda Rename Column Crearea tabelelor folosind Table Wizard Table Wizard este un instrument care permite crearea tabelelor prin parcurgerea unor pai prestabilii. Pentru exemplificare s-a dorit crearea tabelei Angajat. ntr-un prim pas sunt stabilite cmpurile care vor constitui structura noii tabele. ACCESS ofer variate abloane att pentru domeniul afacerilor (Business) ct i cu caracter personal, dup uzanele americane. Folosind butonul Rename Field se pot personaliza machetele pentru articole, n sensul c structurile pot fi adaptate la specificul aplicaiei ce se proiecteaz (figura 2.9).
17
Tipuri abloane
de
Structuri articole
de
Redenumire a unuic mp
Figura 2.9 Stabilirea cmpurilor ntr-o tabel creat cu Table wizard Dup stabilirea cmpurilor, n pasul urmtor se precizeaz numele sub care va fi salvat tabela i modalitatea n care va fi stabilit cheia primar (vezi capitolul anterior), de ctre utilizator sau, implicit, de ctre ACCESS (figurile 2.10 i 2.11). Dup stabilirea cheii primare se va alege modul de atribuire a valorilor pentru aceasta (figura 2.11). n aceast prezentare s-a optat pentru atribuirea valorilor pentru cmpul Marca de ctre utilizator, n momentul adugrii unui angajat nou, ns se putea opta i pentru varianta atribuirii valorilor automat, n mod consecutiv, de ctre ACCESS.
Numele tabelei
18
Figura 2.11 Stabilirea cheii primare Dup precizarea cheii primare se pot stabili eventualele legturi cu alte tabele (acest pas nu este prezentat!) i apoi se alege modul n care se va continua dup crearea tabelei, fiind disponibile opiunile (figura 2.12):
modificarea n Table Design; introducerea datelor direct n tabel; aceasta este varianta pentru care am optat n exemplificarea de mai jos; introducerea datelor n tabel folosind un formular creat de un asistent /wizard ACCESS.
4
Figura 2.12 Opiunea de introducere a datelor direct n tabel Dup parcurgerea acestor pai are loc introducerea datelor n tabel (figura 2.13). 5
Figura 2.13 Introducerea datelor n tabel Crearea tabelelor folosind Design View
19
Cea mai complex modalitatea de obinere a tabelelor unei baze de date o ofer Design View n a crui fereastr pot fi stabilite: numele cmpurilor, tipul datelor i proprietile acestora, cheia primar etc. Exemplificm obinerea tabelei Decizie din baza de date Personal.mdb.
Figura 2.14 Stabilirea cheii primare Primul cmp, IdDecizie, este de tip numeric-auto (valorile sunt atribuite automat de ctre ACCES) i este reprezentat n formatul Long Integer. Acest format a fost ales ca proprietate din lista General. n plus, acest cmp a fost desemnat cheie primar. Stabilirea acestei chei se poate realiza fie activnd pictograma Primary Key din bara cu instrumente Database, fie selectnd comanda Primary Key din meniul rapid activat de pe numele cmpului (figura 2.14). Din lista General se stabilesc proprietile i pentru celelalte cmpuri (figura 2.15).
formatului
20
Dup crearea celor trei tabele fereastra Database, pentru baza de date Personal este prezentat n figura 2.16. Pictogramele din bara cu instrumentele Database permit realizarea unor operaii specifice.
Figura 2.16 Fereastra Database pentru Personal.mbd Este posibil modificarea structurii unei tabele n sensul c pot fi adugate i /sau terse cmpuri sau pot fi modificate atributele acestora. Adugarea unui cmp se realizeaz fie din meniul Insert, fie din cel rapid, ambele selectate cnd prompterul este poziionat pe cmpul la stnga cruia se va insera unul nou (figura 2.17).
Figura 2.17. Comenzi pentru adugarea sau tergerea unui cmp tergerea unuia sau mai multor cmpuri presupune selectarea i apoi activarea comenzii Delete fie din meniul Edit, fie din cel rapid. Alte operaiuni de modifiare a structuri tabelelor pot fi realizate n fereastra Design View. n acest sens, dup deschiderea bazei de date, sunt suficiente trei click-uri mari i late pentru a (re)intra n proiectantul tabelei Angajat vezi figura 2.18. 21
3 1 2
PROBLEM
Pasul 2 Construirea tabelelor bazei de date
Se cere crearea tabelelor din schema bazei de date, conform datelor din tabelul de mai jos (cu excepia tabelelor create prin parcurgerea paragrafului curent, dac ele au fost create deja). Din coloana a treia se va lua n considerare numai cerinele privind cheia primar.
Tabelul 2.1 Schema bazei de date pentru aplicaia privind gestiunea personalului
Nume atribut Tip dat
Number, Long Integer Text, 50 Text, 50 Text, 13 Text, 1 Date/Time, Short Date Text, 50 Text, 10 Text, 50 Number, Double Number, Long Integer Number, Long Integer Number, Long Integer Autonumber Number, Integer Date/Time, Short Date Number, Long Integer Number, Long Integer Number, Long Integer Date/Time, Short Date Autonumber Text, 50
Alte observaii/Restricii
Cheie primar Nenul, prima liter s fie majuscul Nenul, prima liter s fie majuscul Cheie alternativ Se admit doar valorile M sau F S fie mai mic dect data curent
Tabela ANGAJAT
Marca Nume Prenume CNP Sex DataNastere Adresa TelefonAcasa Email SalarTarifar CodPostA CodLocMuncaA IdStudiiA
Cheie strin pentru tabela PostMunca Cheie strin pentru tabela LocMunca Cheie strin pentru tabela NivelStudii
Tabela DECIZIE
IdDecizie NrDecizie DataDecizie MarcaD CodPostNou CodPostVechi DataIntrVigoare Cheie primar Nenul Nenul, S fie mai mic sau egal cu data curent Cheie strin pentru tabela Angajat Cheie strin pentru tabela PostMunca Cheie strin pentru tabela PostMunca Nenul, S fie mai mare sau egal cu data curent Cheie primar Nenul
Tabela Functie
IdFunctie DenumireFunctie
22
IdStudiiCerut
Number, Long Integer Number, Long Integer Text, 50 Number, Long Integer Autonumber Text, 50 Autonumber Number, Integer Number, Integer Number, Long Integer Number, Long Integer Number, Long Integer Number, Long Integer Number, Long Integer Number, Long Integer Autonumber Text, 50 Number, Long Integer Number, Integer Number, Long Integer Number, Long Integer
Cheie strin pentru tabela NivelStudii Cheie primar Nenul, Cheie alternativ
Tabela LocMunca
CodLocMunca DenumireLocMunca NrPosturi
Tabela NivelStudii
IdStudii DenumireStudii Cheie primar Nenul, Cheie alternativ Cheie primar Nenul, Valori cuprinse ntre 1 i 12 Nenul, S fie mai mic sau egal cu anul curent Cheie strin pentru tabela Angajat Valori mai mici de 220 Valori mai mici de 30 Valori mai mici de 100 Valori mai mici de 16 Valori mai mici de 176 Cheie primar Nenul, cheie alternativ Cheie strin pentru tabela NivelStudii Cheie strin pentru tabela LocMunca Cheie strin pentru tabela Functie
Tabela Pontaj
IdPontaj Luna Anul MarcaP OreZi OreSuplimentare OreNoapte AbsenteMotiv AbsenteNemotiv
Tabela PostMunca
IdPost DenumirePost IdStudiiP Vechime CodLocMuncaP CodFunctieP
atributului CNP din tabela Angajat i se interzic valorile nule, prin setarea opiunii Required pe valoarea Yes, n timp ce atributul Adresa din aceeai tabel poate avea valori NULL, Required fiind setat pe valoarea No. Nu uitai c pentru atributele importante, ce in de identificarea sau caracterizarea unei entiti, proces, fenomen, precum i cele implicitate n calculul unor informaii importante, nu trebuie acceptate valorile nule. Restricia de unicitate Dup cum deja tim din capitolul anterior, ntr-o tabel nu pot exista dou linii identice (dou linii care prezint aceleai valori pentru toate atributele). Cu alte cuvinte, fiecare tabel trebuie s aib o cheie primar. n ACCESS, cheia primar poate fi: natural - cnd valorile atributelor care o compune se introduc de utilizator - i artificial - cnd se folosete un cmp de tip AutoNumber, n acest din urm caz ACCESS introducnd automat o valoare consecutiv la inserarea unei nregistrri (1 pentru prima nregistrare, 2 pentru a doua nregistrare s.a.m.d.). De exemplu, tabela Angajat are o cheie natural Marca, iar tabela Pontaj prezint o cheie artificial IdPontaj. Declararea cheilor primare i alternative n ACCESS se realizeaz prin crearea indecilor, acesta fiind motivul pentru care la aceste tipuri de atribute proprietatea Indexed este setat pe Yes (No Duplicates). Dac o cheie primar este compus, pentru fiecare atribut component se alege simbolul cheii primare din bara de intrumente. Un atribut de tip cheie primar are n dreptul su o cheie (de yal), iar modalitatea de declarare a sa a fost prezentat n figura 4.14. Cheile alternative sunt declarate prin setarea opiunii Indexed pe valoarea Yes (NoDuplicates). n figura 4.19, atributul CNP a fost declarat drept cheie alternativ pentru tabela Angajat, n timp ce atributul Adresa are setat opiunea Indexed pe valoarea No, deci nu este nici cheie primar, nici alternativ.
Restricia de nenulitate
Restricia de unicitate
24
Figura 2.19.Declararea restriciilor de nenulitate i de unicitate Restricia de integritate referenial tim c o baz de date relaional este alctuit din tabele aflate n legtur. Stabilirea legturii se bazeaz pe mecanismul cheii strine i, implicit, a restriciei refereniale, discutate de noi n capitolul anterior. Atributele Marca i MarcaD joac rolurile de agent de legtur ntre tabelele Angajat i Decizie (cele dou atribute pot avea acelai nume). Pentru tabela Angajat, atributul Marca este cheie primar, n timp ce n tabela Decizie, MarcaD reprezint coloana de referin sau cheia strin, deoarece numai pe baza valorilor sale se poate face legtura cu tabela Angajat. Tabela n care atributul de legtur este primar se numete tabel-printe (n cazul nostru, Angajat), iar cealalt tabel-copil (Decizie). Pentru declararea restriciilor refereniale, mai nti, trebuie stabilite legturile ntre tabele, scop n care se apas butonul Relationship din bara de instrumente. Efectul acestei comenzi va consta n deschiderea ferestrei Relationships (vezi figura 2.20). Dup adugarea tabelelor Angajat i Decizie din fereastra Show Table se nchide aceast fereastr i se stabilete legtura ntre cele dou tabele. n acest sens, se va trage cu mouseul atributul Marca din tabela Angajat (adic, cheia primar din tabela printe) peste atributul MarcaD din tabela Decizie (adic, cheia strin din tabela copil). Urmarea acestei operaiuni va fi afiarea ferestrei Edit Relationships, prezentat n figura 2.21, n care pot fi definite restriciile refereniale.
Figura 2.20 Stabilirea legturilor ntre tabele i definirea restriciilor refereniale Practic, restricia de integritate referenial se instituie abia la bifarea opiunii Enforce Referential Integrity, ACCESS-ul restricionnd adugarea, modificarea i /sau tergerea n tabelele printe i copil astfel: nu se permite modificarea valorii cheii primare din tabela printe dac exist n tabela copil mcar o nregistrare cu care este n legtur;
nu poate fi introdus nici o valoare a unei chei strine n tabela copil dac respectiva valoare nu exist deja ca i cheie primar n tabela printe. Dac se alege opiunea Cascade Update Related Fields orice modificarea a unei chei primare n tabela primare va atrage modificarea n cascad a tuturor cheilor strine n nregistrrile copil, iar bifnd opiunea Cascade Delete Related Records la tergerea unei nregistrri din tabela printe se vor elimina automat toate nregistrrile copil. Dup finalizarea operaiunii, prin apsarea butonului Create, n fereastra Relationships va fi afiat i legtura dintre cele dou tabele (vezi figura 2.21). Legtura evideniaz o relaie de tipul unu-la-multe ntre tabele. 25
Figura 2.21 Rezultatul stabilirii legturilor ntre tabele i a restriciilor refereniale Din fereastra Database pot fi realizate diverse operaii cu tabelele i nregistrrile ncrcate n acestea. Pentru a vizualiza coninutul unei tabele este suficient un dublu click de mouse de pe numele tabelei. La afiare, unele tabele au n stnga o coloan n care apare semnul plus (+) sau spaiu. Semnul plus n dreptul unei nregistrri semnific faptul c aceasta este legat prin chei strine de nregistrri aflate n alte tabele. Click pe semnul plus determin schimbarea n semnul minus (-) i afiarea nregistrrilor nrudite (copil) ntr-o subfoaie de date (figura 2.22).
Semnul - indic faptul c sunt afiate nregistrrile nrudite
Semnul + indic faptul c nregistrarea are cel puin o nregistrare nrudit ntr-o alt tabel
Figura 2.22 Afiarea nregistrrilor nrudite din tabela copil Pentru a vedea toate nregistrrile subordonate articolelor dintr-o tabel printe se poate lansa comanda Subdatasheet din meniul Format. Restricii utilizator n paragraful Restricii utilizator din capitolul anterior se spunea c , aceste restricii iau forma unor reguli de validare la nivel de atribut sau la nivel de linie/tabel. O restricie la nivel de atribut poate preveni introducerea n baza de date a unor valori din alte intervale dect cele stabilite, n alte formate dect cele acceptate etc. n partea stng a figurii 2.23 este ilustrat o regul de validare conform creia n tabela Angajat valorile atributului Marca trebuie s fie mai mari dect 1000. Rubrica Validation Rule este cea n care apare expresia-restricie [Marca]>1000 - (observai c numele atributului este scris ntre paranteze unghiulare), iar n rubrica Validation Text se indic mesajul care va aprea pe ecran atunci cnd se ncalc restricia - Cea mai mic valoare acceptat pentru MARCA este 1001 !.
26
Figura 2.23. Dou restricii la nivel de atribut n dreapta figurii apare o regul ceva mai impresionant, prin care prima liter din valorile atributului Nume este obligatoriu majuscul. Expresia este de-a dreptul impresionant StrComp(Left(UCase([Nume]);1);Left([Nume];1);0)=0. Exotismul expresiei ine nu att de folosirea funciei Ucase, care convertete literele unui ir de caractere (prima liter a atributului Nume, n cazul nostru) n majuscule, ct de funcia StrComp, prin care se compar dou iruri de caractere, dintre care unul (cel din dreapta) este prima liter din valoarea atributului, iar cellalt aceeai valoare, dar scris cu majuscule. Dac cele dou iruri difer ctui de puin, rezultatul evalurii expresiei este False (valoarea 1), iar modificarea atributului (sau inserarea liniei) este respins. Practic, regula accept numai valori n care prima liter este exclusiv majuscul (evaluarea expresiei este True valoarea 0). Funcia LEFT extrage primele n caractere de la stnga valorii argumentului. Expresia care definete o restricie la nivel de nregistrare poate conine dou sau mai multe atribute i este evaluat la inserarea sau modificarea oricrei linii din tabel. O astfel de regul se poate introduce n proiectantul de tabel apelnd butonul Properties din bara de instrumente. O regul de
validare la nivel de nregistrare pentru tabela Pontaj este ilustrat n figura 2.24. S-a stabilit ca numrul total al orelor lucrate (OreZi + OreSuplimentare + OreNoapte) s nu fie mai mare de 230.
27
PROBLEM
Pasul 3 Declararea restriciilor de integritate
1. S se declare restriciile de integritate la nivel de atribut specificate n tabelul 2.1. 2. S se declare urmtoarele restricii la nivel de nregistrare: OreZi + OreSuplimentare + OreNoapte mai mic dect 230 (Tabela Pontaj); AbsenteMotiv + AbsenteNemotiv mai mic dect 176 (Tabela Pontaj); DataIntrVigoare mai mare dect DataDecizie (Tabela Decizie).
3. S se stabileasc legturile ntre tabelele bazei de date, conform specificaiilor pentru cheile strine din coloana a treia a tabelului 2.1, i s se stabileasc restriciile de integritate referenial.
28
Figura 2.25 Adugarea i tergerea datelor dintr-o tabel Atunci cnd numrul de linii dintr-o tabel este imens, iar datele trebuie modificate dup criterii riguroase, este necesar recurgerea la interogri pe care le vom discuta n paragraful 2.4.
PROBLEM
Pasul 4 Popularea bazei de date
S se adauge nregistrri n tabelele bazei de date astfel: Angajat (minim 15), Decizie (minim 10), Funcie (minim 10), LocMunca (minim 5), NivelStudii (minim 5), Pontaj (minim 30) i PostMunca (minim 15).
datelor sub forma unei coloane. Dac se alege Tabular, formularul va cuprinde un numr mai mare de nregistrri n zona de detaliu i va semna cu o tabel. Apelarea la asistent/vrjitor (Form Wizard). Utilizatorul va construi formularul, pas cu pas, sub ndrumarea asistentului, singura sarcin a acestuia fiind s rspund la ntrebri prin selecia unei variante din mai multe posibile; Utilizarea ferestrei de proiectare (Design View). n acest mod de lucru, fomularul este creat de ctre utilizatori avansai. n prima etap, pentru oricare variant am opta din cele trei, trebuie s selectm din proiectantul bazei de date, de sub Object opiunea Forms, dup care s activm butonul New, ca n figura 2.26.
2 1
Figura 2.26. Lansarea n execuie a generatorului de formulare Urmare a aciunii 2 din figura precedent se va activa fereastra New Form, n care va trebui s selectm varianta de lucru pentru organizarea cmpurilor (1) i tabela pentru care se va crea formularul (2) aa cum se prezint n figura 2.27.
Figura 2.27. Fereastr de selecie a modului de organizare a datelor i a tabelei Vom parcurge n cele ce urmeaz variantele de lucru AutoForm Columnar i cea cu asistentul/vrjitorul (Form Wizard). 1. Utilizarea facilitii AutoForm n generarea de formulare Ne propunem s generm un formular pentru tabela LocMunca. n acest sens, se vor urma paii prezentai n figurile 2.24 i 2.25, iar apoi se va selecta tabela LocMunca. Dup selecia tabelei se apas butonul Ok (nu se vede n figura 2.27), moment n care se va genera automat formularul corespunztor tabelei noastre (figura 2.28.). 30
2 3 1
Figura 2.28. Formularul generat cu opiunea AutoForm: Columnar pentru tabela LocMunca Din figura precedent observm: 1. Titlul ferestrei este LocMunca, ca i numele tabelei (ulterior l vom modifica); 2. Suntem poziionai pe prima nregistrare din tabela LocMunca; 3. Pe ultimul rnd dispunem de un set de butoane de navigare de la o nregistrare la alta (vezi sgeata 1); 4. cheia primar a tabelei este marcat prin sgeata n dreptul codului locului de munc (vezi sgeata 2); 5. Putem modifica foarte uor, chiar prea uor, valorile oricrui cmp cu respectarea restriciilor de integritate declarate deja; 6. Putem realiza operaii de sortare, filtrare, cutare, tergere ( ) i adugare ( ) din butoanele din linia de instrumente (vezi sgeata 3). Adugarea este posibil i din butoanele de navigare cu acelai buton . Dup crearea formularului de mai sus este necesar s-l salvm cu un nume, n cazul nostru i vom da numele frmLocMunca. Acest lucru se realizeaz prin activarea opiunii Save din meniul File sau direct click pe butonul . Rezultatul va fi apariia ferestrei de salvare a formularului cu un nume
recomandat de ACCESS, dar care va fi modificat n frmLocMunca. Nu ne rmne dect s dm click pe butonul Ok. 2. Utilizarea asistentului n generarea de formulare Continum crearea unui formular pentru tabela Angajat, dar vom apela la asistent/vrjitor n generarea de formulare. Lansarea asistentului/vrjitorului se realizeaz prin parcurgerea pailor parcuri anterior i prezentai n figurile 2.26 i 2.27, doar c de aceast dat vom selecta opiunea Form Wizard n loc de AutoForm: Columnar i vom alege tabela Angajat n loc de LocMunca. Dup apsarea butonului Ok vom intra n fereastra din figura 2.29, din care va trebui s selectm cmpurile care s fie trimise n formular. n cazul nostru vom trimite toate cmpurile, ceea ce nseamn c vom da click pe butonul >>. Dac se dorete trimiterea unui anumit cmp, se va da dublu click pe acel cmp.
31
Figura 2.29. Fereastra de selectare a cmpurilor din tabela Angajat (nainte i dup selectare) 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 butonul Next (figura 2.30).
Figura 2.30 Selecia modului de organizare a datelor i a stilului Dup selectarea stilului se va solicita ataarea unui nume pentru formular. n cazul nostru i vom da numele frmAngajat i vom apsa butonul Finish, ce va avea ca efect afiarea formularului cu datele din prima nregistrare a tabelei Angajat (figura 2.31).
32
n cazul n care se dorete adugarea unei nregistrri se apas butonul din zona butoanelor de defilare sau din liniile de instrumente, ceea ce va determina golirea formularului, cu posibilitatea completrii datelor despre alt angajat. Modificarea datelor unui angajat cu ajutorul formularului frmAngajat se realizeaz n dou etape: a. cutarea nregistrrii de modificat, fie prin parcurgerea secvenial a nregistrrilor tabelei (se folosete butonul NEXT din linia de derulare a formularului), fie prin cutare
direct dup valorile unui cmp, de exemplu numele angajatului (se folosete butonul FIND din linia de instrumente);
b. efectuarea modificrii direct n formular. n mod similar modificrii se realizeaz i tergerea unei nregistrri cu ajutorul formularului, cu precizarea c dup cutarea nregistrrii de ters se d click pe butonul DELETE RECORD din linia de instrumente. Dup crearea celor dou formulare, fereastra FORMS, pentru baza de date Personal este prezentat n figura 2.32. Pictogramele din bara cu instrumente permit realizarea unor operaii specifice.
Figura 2.32 Fereastra Forms pentru Personal.mdb Din aceast fereastr orice formular poate fi utilizat (afiat) ulterior fie direct, prin dublu click pe numele acestuia, fie prin selectarea numelui formularului dorit (de exemplu, frmAngajat) i apsarea butonului Open.
PROBLEM
Pasul 5 Crearea formularelor pentru actualizarea bazei de date
S se creeze cte un formular pentru actualizarea tabelelor Pontaj, Decizie, Funcie i LocMunca.
33
Vis-a-vis de terminologie, n englez, verbul care desemneaz explorarea bazei de date pentru a obine informaiile necesare este to query pe care-l traducem prin a interoga. ntr-un proiect ACCESS, la loc de cinste ntre obiecte, imediat dup tabele (Tables) apar interogrile (Queries). Selectarea acestora, click-ul de rigoare pe butonul New i apoi a opiunii Design View determin afiarea pe ecran a proiectantului de interogri, un cadru foarte versatil prin care putem formula o cerin informaional (figura 2.33).
1 2
Figura 2.33 Proiectantul de interogri Partea de sus a ecranului (n spatele ferestrei de alegere a tabelelor) servete la afiarea tabelelor implicate n interogare, precum i a legturilor (restriciilor refereniale) dintre ele. n cadrul propriu zis, fiecare coloan corespunde unei coloane din lista ce se dorete a fi obinut, informaiile specificate fiind: numele atributului (Field), tabela n care se afl acesta (Table), dac valorile atributului vor fi ordonate cresctor sau descresctor (Sort) n list, dac respectiva coloan va fi afiat n list sau servete doar la precizarea filtrului de selecie a nregistrrilor (Show) i condiiile pe care trebuie s le ndeplineasc nregistrrile (liniile) pentru a fi incluse n raport, altfel spus, condiia a filtrate a liniilor n rezultat (Criteria). Ar mai trebui spus c putem include n rezultat nu numai atribute din tabele, ci i expresii de atribute, dup cum vom vedea imediat.
Pornind de la ceea ce dorim s obinem, s vedem cum se construiete macheta interogrii. Figura 2.34 ncearc s lmureasc lucrurile.
Coloana calculat
2 1 3
Expresiile filtrare
de
Figura 2.34 Macheta interogrii pentru obinerea listei orelor lucrate n partea de sus troneaz singura tabel necesar obinerii rezultatului Pontaj. Partea interesant este ns n partea de jos a figurii. Mai nti, sunt adugate n machet cmpurile care vor fi afiate n list, respectiv MarcaP, OreZi, OreSuplimentare, OreNoapte, TotalOre, Luna i Anul. Dou aspecte trebuie lmurite: primul dac primele patru cmpuri sunt selectate din tabel (se apas sgetua din prima linie a coloanei curente sau se trage cu mouseul atributul dorit ntr-o coloan a machetei), urmtorul cmp este calculat dup o expresie pe care o vom discuta cteva rnduri mai jos; ultimele dou coloane au fost adugate n macheta interogrii doar pentru specificarea criteriilor de filtrare, fr ca ele s fie afiate n list, motiv pentru care csuele din linia Show pentru cele dou coloane nu sunt activate. n linia Sort a coloanei MarcaP a fost aleas opiunea Ascending astfel nct datele din list s fie ordonate cresctor dup marca angajailor. n linia Criteria a coloanelor Luna i Anul este formulat criteriu de filtrare a liniilor din rezultat: = 9, respectiv = 2007. Este modalitate de a indica faptul c valorile de pe coloana Luna trebuie s fie egal cu 9 (adic luna spetembrie) i, cumulativ, coloana Anul s fie 2007. Dar cel mai captivant este ceea ce se petrece pe a cincea coloan a machetei. n prima faz pe linia Field se introduce expresia OreZI + OreSuplimentare + OreNoapte. Apoi se face un click discret pe butonul Properties (pasul 2) i se afieaz pe ecran fereastra Field Properties. Aici vom indica formatul de afiare fix (Format...Fixed) i numele coloanei calculate (Caption...TotalOre). Se salveaz macheta (celebra pictogram a dischetei din figura de mai sus) sub numele SituatieOreLucrate, iar rezultatul interogrii, prezentat n figura 2.35, se obine printr-un click pe butonul View din stnga-sus-ul ferestrei interogrii.
35
Figura 2.36. Interogare ce folosete trei tabele Spre deosebire de interogarea precedent, aceast interogare conine cteva coloane noi: DenumireLocMunca din tabela LocMunc; Marca, Nume, Prenume i SalarTarifar preluate din tabela Angajat; coloanele Anul i Luna din tabela Pontaj au rmas. De asemenea, a mai fost adugat un cmp calculat (n afar de TotalOre), VenitLunar, a crui expresie este ([OreZi] + [OreSuplimentare] + [OreNoapte]) * [SalarTarifar] / 168 (de dragul simplitii s-a optat pentru o formul simplist de calcul, n care s-a considerat numrul orelor lucrtoare din luna septembrie 2007 este 168). Condiiile de filtrare a liniilor din rezultat au rmas aceleai, ns acum avem trei criterii de ordonare a liniilor, respectiv valorile coloanelor DenumireLocMunca, Nume i Prenume, de fiecare dat alegndu-se modul cresctor (ASCENDING). Rezultatul interogrii este prezentat n figura 2.37.
36
Figura 2.37. Rezultatul interogrii din figura 4.36 Mai trebuie spus c pentru coloana VenitLunar, n fereastra Properties, s-a stabilit formatul Fixed i afiarea cu dou zecimale.
37
Buton ul de agregare
Figura 2.39. Cele dou ferestre pentru specificarea valorilor parametrilor Luna i Anul
Figura 2.40.Rezultatul interogrii din figura 2.38 Fiindc am ajuns deja la un nivel de performan destul de ridicat, ne vom opri aici cu problematica interogrii bazelor de date. Oricum, muli pai interesani mai pot fi efectuai pentru a merge mai departe. V urm succes! n continuare ne vom ocupa de punerea ntr-o form elegant a datelor extrase din baz.
PROBLEM
Pasul 6 construirea interogrilor asupra bazei de date
S se construiasc i s se execute urmtoarele interogri: 1. Obinei o situaie a orelor lucrate n luna septembrie 2007 (sau o alta, n funcie de datele din propria baz de date), care s conin marca angajatului, orele lucrate de zi, cele suplimentare i 38
cele de noapte, precum i totalul orelor lucrate, calculat prin nsumarea celor trei categorii de ore. Datele vor fi ordonate cresctor dup marca. 2. Obinei o list a angajailor care s conin marca, numele i prenumele, CNP, data naterii, adresa, telefonul i email-ul. Datele vor fi ordonate cresctor dup numele i prenumele angajailor. 3. Obinei o list a angajailor de sex feminin, care s conin marca, numele i prenumele, CNP, data naterii i telefonul. Datele vor fi ordonate descresctor dup data naterii. 4. Realizai o situaie a salariului tarifar care s conin marca, numele, prenumele i salariul tarifar, iar datele s fie ordonate descresctor dup salariul tarifar. 5. S se realizeze o situaie a veniturilor lunare pe luna septembrie 2007 (sau alta, n funcie de datele din propria baz de date), care s conin numele departamentului, marca, numele i prenumele angajatului, total ore lucrate, salariul tarifar i venitul lunar, calculat dupa expresia total ore lucrate * salar tarifar / 168. Date vor fi ordonate cresctor dup numele departamentului, numele i prenumele angajailor. 6. S se obin o list a posturilor de munc dintr-un anumit departament (denumirea locului de munc va fi parametru n interogare!), care s conin identificatorul i denumirea postului, denumirea funciei aferente, marca, numele i prenumele angajatului. 7. S se obin o situaie a deciziilor nregistrate ntr-o perioad anume (data iniial i data final vor fi parametri), n care s fie incluse numrul i data deciziei, marca, numele i prenumele angajatului, denumirile postului vechi i a celui nou, data intrrii n vigoare. Datele vor fi ordonate descresctor dup data deciziei. 8. S se obin o situaie centralizatoare pe departamente a veniturilor lunare aferente lunii septembrie 2007 (sau alta, n funcie de datele din propria baz de date), n care veniturile lunare ale angajailor s fie nsumate pe departamente. Situaia va conine numele departamentului i valoarea total a veniturilor lunare, iar datele rezultate vor fi ordonate descresctor dup totalul veniturilor. 9. S se afle valorile medii ale salariului tarifar pe sexe. Rezultatul va conine sexul, numrul angajailor i valoarea medie a salariului tarifar. 10. S se realizeze o situaie centralizatoare a absenelor pe departamente ntr-o perioad dat (data iniial i cea final a perioadei vor fi parametri), care s conin numele departamentului, numrul total al absenelor motivate pe departament, numrul total al absenelor nemotivate pe departament i numrul total al absenelor (calculat prin nsumarea celor motivate i a celor nemotivate). Datele vor fi ordonate alfabetic dup numele departamentului. 11. S se afle salariile maxime i cele minime pentru fiecare departament. Lista va conine numele departamentului, salariul tarifar minim i cel maxim pentru fiecare departament, iar datele vor fi ordonate alfabetic dup numele departamentului.
39
sunt (redm i denumirea lor n limba englez, pentru o mai bun recunoatere a lor n generatoarele de rapoarte): Antetul i sfritul (subsolul) raportului (Report Header i Report Footer). Antetul raportului conine elementele care vor apare o singur dat, la nceputul raportului. Aici se includ, de obicei, titlul raportului, data obinerii i numele destinatarului. n seciunea de sfrit (subsol) se prevd elementele care vor apare o singur dat n raport, la sfritul acestuia. Aici se pot include totalurile generale pentru cmpurile numerice i numele persoanelor care au generat i certificat raportul respectiv. Antetul i sfritul paginii (Page Header i Page Footer). n aceste seciuni vor fi incluse acele elemente ale raportului care vor apare o singur dat pe fiecare pagin, la nceputul sau la sfritul ei. De regul, numele coloanelor sunt prevzute n antetul paginii astfel nct ele s fie afiate la nceputul fiecrei pagini. Totalurile la nivel de pagin, dac sunt necesare, trebuie incluse n seciunea de sfrit (subsol) a paginii. Numrul paginii poate apare n oricare din cele dou seciuni. Seciunea de detaliu (Detail). Este seciunea principal a oricrui raport i conine valorile cmpurilor din baza de date i a expresiilor calculate ce vor forma o linie cu date. Pentru fiecare nregistrare prelucrat din baza de date se va crea cte o linie n raport. Antetul i sfritul grupului (Group Header i Group Footer). Aceste dou seciuni apar n rapoarte numai atunci cnd se dorete gruparea datelor. n exemplul din figura 4.51, datele privind veniturile lunare sunt grupate pe departamente, iar denumirea acestuia reprezint cmpul de control, adic acela dup valorile cruia se va face gruparea. Elementele incluse n aceste seciuni vor apare o singur dat pentru fiecare grup de date, deasupra primei linii cu date din grup, respectiv sub ultima linie. n antetul grupului se includ, de regul, datele de identificare ale grupului adic, n exemplul nostru, numele departamentului. n seciunea de sfrit se pot afia totaluri sau rezultatele altor operaiuni de agregare la nivelul grupului, precum numrul elementelor, valoarea total, valoarea medie, valoarea minim i valoarea maxim pentru cmpurile numerice. n ACCESS, rapoartele pot fi construite n trei moduri:
Crearea rapid a unui raport pe baza unei singure tabele sau interogri, prin utilizarea facilitii AutoReport (Columnar sau Tabular). Utilizatorul trebuie doar s specifice tabela din care se vor extrage datele, iar raportul va fi generat i afiat pe ecran imediat. Dac se opteaz pentru Columnar, raportul obinut va fi de tip coloan, adic datele unei linii din tabel vor fi aranjate pe o singur coloan. Dac se alege Tabular, raportul generat va fi de tip tabel, rezervndu-se cte o coloan pentru fiecare cmp din tabel. Apelarea la vrjitor (Report Wizard). Utilizatorul va construi raportul, pas cu pas, sub ndrumarea vrjitorului, rolul su constnd n furnizarea de rspunsuri la anumite ntrebri, care privesc sursa datelor (tabelele i/sau interogrile), cmpurile de date care vor fi reinute n raport, modul de grupare i ordonare a datelor, formatul i titlul raportului. Spre deosebire de cazul anterior, acum pot fi create rapoarte pe baza mai multor tabele i/sau interogri. Utilizarea ferestrei de proiectare (Design View). n acest mod de lucru, utilizatorul va avea posibilitatea s creeze rapoarte mai complexe, pe care s le personalizeze conform cerinelor sale. Ca i n primul caz, raportul poate conine date dintr-o singur tabel sau interogare.
40
Pentru crearea unui raport, indiferent de modalitatea dorit, se selecteaz opiunea Reports din fereastra bazei de date i apoi butonul New din linia de instrumente, situat n partea superioar a ecranului. n urma acestei aciuni se afieaz fereastra de dialog din figura 2.41.
Figura 2.41 Fereastra de dialog pentru alegerea modalitii de realizare a unui raport n continuare vom descrie numai ultimele dou moduri de lucru, ntruct acestea ne permit realizarea de rapoarte complexe i personalizate, prima fiind mult mai simpl de urmat. Apelarea la vrjitor presupune activarea ferestrei New Report, prezentat n figura 2.41, alegerea opiunii Report Wizard i selectarea interogrii SituatieVenituriLunare, construit n paragraful anterior, n csua combinat din partea de jos a ferestrei. Dup selectarea butonului OK va fi afiat fereastra din figura 2.42.
Figura 4.42 Fereastra de selecie a coloanelor raportului n Report Wizard n csua din stnga sunt afiate toate coloanele interogrii, din care utilizatorul le va selecta pe cele care vor apare n raport, printr-un dublu click cu mouseul pe fiecare coloan dorit. Coloanele selectate apar n csua din dreapta ferestrei. Se continu cu apsarea butonului Next, ce va avea ca efect afiarea urmtoarei ferestre, prezentat n figura 2.43.
41
Figura 2.43 Fereastra de selecie a grupurilor de date n Report Wizard n noua fereastr, utilizatorul are posibilitatea s specifice dac datele din raport vor fi grupate dup valorile uneia sau a mai multor coloane. n cazul n care se dorete gruparea datelor se vor selecta coloanele dorite din csua situat n partea stng a ferestrei cu acelai dublu click. n exemplul nostru am optat pentru gruparea datelor n funcie de valorile atributului DenumireLocMunc, iar n partea dreapt a ferestrei este sugerat forma raportului. Se continu prin apsarea butonului Next. Urmtorul pas const n stabilirea criteriilor de ordonare a datelor din raport, prin intermediul ferestrei din partea stng a figurii 2.44. n exemplu nostru am ales ca ordonarea dateelor s sa fac cresctor dup valorile coloanei Marca. Tot n cadrul acestui pas se pot alege opiunile de agregare a datelor, dac se dorete acest lucru. n acest sens se va activa butonul Summary Options ce va avea ca efect afiarea ferestrei din partea dreapt a figurii 4.44. n aceast fereastr sunt afiate toate coloanele numerice din raport, precum i funciile de agregare disponibile (Sum, Avg, Min, Max). n exemplul nostru exist o singur coloan cu date numerice, Expr2, aferent calculului venitului lunar n interogarea SituatieVenituriLunare, i am ales totalizarea ei prin selectarea funciei Sum. Prin apsarea butoanelor OK i apoi Next se trece la pasul urmtor.
Figura 2.44 Ferestrele de alegere a criteriilor de ordonare a datelor i a opiunilor de agregare n Report Wizard n cadrul urmtorilor doi pai se vor alege formatul raportului i stilul pentru afiarea coninutului raportului. Cei doi pai sunt redai n cele dou ferestre din figura 2.45. Trecerea de la unul la altul, precum i la pasul urmtor se realizeaz prin intermediul aceluiai buton Next.
42
Figura 2.45 Ferestrele de alegere a formatului raportului i a stilului pentru text n Report Wizard Deja am ajuns la pasul final n construirea raportului. Nu ne mai rmne dect s dm un nume raportului (care este sugerat dup numele interogrii sau tabelei care st la baza construirii raportului) i s alegem modalitatea de finalizare, adic afiarea raportului sau modificarea lui n modul de lucru Design View. Aceste elemente se regsesc n fereastra din figura 2.46. Deoarece noi am optat pentru afiarea raportului (opiunea Preview the report), dup apsarea butonului Finish am obinut pe ecran raportul dorit, identic cu cel prezentat n figura 2.47. Remarcai c datele sunt grupate pe fiecare loc de munc, adic mai nti sunt afiai angajaii din departamentul Aprovizionare, apoi cei de la Contabilitate i Resurse umane, iar pentru fiecare departament se efectueaz i afieaz totalul veniturilor lunare. Un total general este afiat la sfritul raportului. De asemenea, remarcai c n cadrul grupului de date sunt ordonate dup valorile coloanei Marca.
43
Figura 2.47 Forma final a raportului privind situaia veniturilor lunare Dei raportul a fost obinut foarte uor i rapid, se pot observa unele neajunsuri n forma sa final: apariia numelor atributelor din tabele n locul unor denumiri mai explicite ale coloanelor, existena unor titluri nu tocmai clare, cum ar fi cele din liniile de total, etc. Astfel de situaii sunt evitate dac se apeleaz la cel de-al treilea mod de construire a rapoartelor, respectiv fereastra Design View. Activarea ei se face ntr-un mod asemntor cu cel prezentat anterior pentru utilizarea vrjitorului (Report Wizard), doar c, de data aceasta, n fereastra de dialog din figura 2.41 se va alege opiunea Design View i apoi aceeai interogare SituaieVenituriLunare. Rezultatul este prezentat n figura 2.48. Ne propunem s construim un raport asemntor cu cel construit anterior, doar c vom mai introduce dou coloane, pentru numrul orelor lucrate i salariul tarifar.
44
Figura 2.48 Fereastra Design View pentru construirea rapoartelor Pentru mai mult claritate, relum etapele recomandate de ctre noi pentru crearea raportului: 1. Crearea interogrii pentru extragerea datelor necesare raportului din tabele. Aa cum spuneam anterior, n fereastra de proiectare pot fi construite rapoarte pe baza unei singure tabele sau interogri. Dac raportul solicit date din dou sau mai multe tabele se va crea o interogare care s extrag datele necesare. n exemplul nostru vom utiliza interogarea SituaieVenituriLunare. 2. Deschiderea ferestrei pentru construirea raportului. n acest sens, se activeaz fereastra de dialog New Report, prezentat anterior n figura 2.41, se selecteaz opiunea Design View, dup care, din csua combinat situat mai jos se alege interogarea sau tabela dorit. Dup apsarea butonului OK, se deschide fereastra pentru construirea rapoartelor, prezentat n fig. 4.48. n cadrul ferestrei se poate observa pagina raportului care, pentru nceput este goal, bara de instrumente i o mic fereastr ce conine numele cmpurilor tabelei sau interogrii selectate anterior. Se observ c pagina conine numai trei din cele cinci seciuni ale unui raport. Pentru adugarea celorlalte dou, Report Header i Report Footer, se va accesa meniul View i se va selecta opiunea Report Header/Footer. 3. Adugarea obiectelor n cele cinci seciuni ale raportului. Pentru includerea obiectelor n raport se utilizeaz bara de instrumente specifice construirii rapoartelor. n acest sens, vor fi utilizate urmtoarele butoane: etichet ,pentru specificarea titlului raportului, denumirii coloanelor sau a altor texte
cu rol explicativ; csu de text , pentru adugarea cmpurilor de date i a expresiilor de calcul ale cror
valori vor fi afiate la vizualizarea /tiprirea raportului. linie i dreptunghi , pentru trasarea liniilor i chenarelor necesare pentru
nfrumusearea raportului; sgeat , atunci cnd dorim selectarea unui obiect din raport.
45
Pentru adugarea unui text, se selecteaz butonul etichet, se poziioneaz mouse-ul n poziia din care dorim s nceap textul i se d clic, dup care se introduce textul. Pentru a continua textul pe linia urmtoare, dar n aceeai csu, se folosete combinaia de taste CTRL+ENTER. Mai nti se completeaz antetul raportului (Report header), n care se include data afirii sau tipririi, i antetul paginii (Page header). Pentru includerea datei curente se adaug o csu de text care va avea ca expresie de calcul funcia DATE(). Specificarea expresiei de calcul se face astfel: se selecteaz csua i se apas butonul Properties din linia cu instrumente. Efectul acestei aciuni const n afiarea ferestrei cu proprieti, prezentat n figura 2.49.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 2.49.b) se poate vedea coninutul acestei ferestre i modul n care a fost introdus expresia DATE(). Expresia de calcul poate fi introdus i de la tastatur, direct n csua de editare. Se revine n pagina raportului prin apsarea butonului OK i nchiderea ferestrei cu proprieti.
a) Fereastra cu proprieti
Figura 2.49 Ferestrele pentru introducerea expresiilor de calcul Pasul urmtor vizeaz introducerea cmpurilor Marca, Nume, Prenume, TotalOreLucrate (Expr1), SalarTarifar i VenitLunar (Expr2) n seciunea de detaliu (Detail). n acest sens, din lista cmpurilor se trag, pe rnd, cele patru cmpuri n locul dorit. Eticheta adugat automat pentru fiecare cmp introdus n raport poate fi tears deoarece rolul explicativ l ndeplinete numele coloanei n care acesta este plasat. Dedesubtul celor patru cmpuri se traseaz o linie pentru a delimita rndurile cu date n momentul vizualizrii /tipririi raportului. n subsolul paginii (Page Footer) se vor introduce numrul paginii curente i numrul total de pagini din raport. Se va aduga o csu de text, urmndu-se paii descrii anterior pentru data curent, a crei expresie va avea forma: = Pagina & [Page] & din & [Pages]. Variabila [Page] livreaz numrul paginii curente, iar variabila [Pages] numrul total de pagini. Operatorul & este utilizat pentru adunarea (concatenarea) irurilor de caractere. n subsolul raportului (seciunea Report Footer) se adaug o linie pentru totalul general, n care va fi totalizat venitul lunar. Formula de calcul se introduce tot prin intermediul csuelor de text i va avea forma: = SUM ([VenitLunar]) 4. Gruparea i ordonarea datelor. Liniile din raport pot fi ordonate sau grupate n funcie de mai multe criterii, iar pentru fiecare grup de date se pot introduce n raport alte dou seciuni: antetul i 46
subsolul grupului. Cele dou operaiuni sunt realizate din fereastra Sorting and Grouping. Deschiderea ei se face prin selectarea opiunii Sorting and Grouping din meniul View sau prin apsarea butonului din linia cu instrumente, situat n partea superioar a ecranului.
Fereastra (prezentat n figura 2.50) conine un grid (tabel), format din dou coloane, Field /Expression i Sort Order, i un grup de proprieti pentru definirea grupurilor de date, n partea sa inferioar. Coloana Field /Expression este utilizat pentru specificarea cmpurilor sau expresiilor dup care se face gruparea i /sau ordonarea datelor n raport. n raportul nostru datele trebuie grupate dup denumirea locului de munc i ordonate dup marca angajatului. De aceea, vom selecta n prima linie cmpul DenumireLocMunca, iar n cea de-a doua Marca. Aceast coloan poate conine cel mult zece nume de cmpuri i /sau expresii, adic pot fi utilizate cel mult zece criterii de grupare i sortare.
Figura 2.50 Fereastra Sorting and Grouping Coloana Sort Order permite alegerea modalitii de ordonare cresctoare (Ascending) sau descresctoare (Descending) pentru cmpul sau expresia din linia respectiv. n momentul completrii coloanei Field/Expression, n coloana Sort Order va fi atribuit implicit valoarea Ascending. Dac se dorete modificarea ordinii de sortare pentru un anumit cmp sau expresie, atunci se selecteaz printr-un click elementul respectiv, dup care n coloana Sort Order se alege valoarea Descending. n cazul n care pentru un cmp sau o expresie se dorete nu doar sortarea datelor, ci i gruparea lor, atunci se vor configura proprietile din jumtatea inferioar a ferestrei Sorting and Grouping. Aceste proprieti au urmtoarele semnificaii: Group Header prezint dou valori posibile Yes /No. Dac se alege valoarea Yes, atunci pentru cmpul sau expresia selectat din coloana Field /Expression se adaug n raport o seciune nou pentru antetul grupului. Valoarea implicit este No, adic nu se creeaz automat o seciune pentru antetul grupului. Group Footer este asemntoare cu proprietatea anterioar, numai c se refer la seciunea de sfrit (subsol) a grupului respectiv. Pentru includerea ei n raport se va alege valoarea Yes. Group On stabilete modul de grupare a valorilor cmpului selectat. Valorile posibile depind de tipul cmpului sau expresiei de grupare (text, numeric sau dat calendaristic). De exemplu, dac s-ar fi ales data pontajului drept cmp de grupare, atunci prin aceast proprietate se va stabili dac datele vor fi grupate pe fiecare valoare distinct (se alege valoarea Each Value), pe fiecare an (Year), lun (Month), sptmn (Week) s.a.m.d. Group Interval specific un interval sau un numr de caractere pe care se bazeaz gruparea liniilor din raport. n cazul unui cmp de grupare de tip Date/Time, stabilirea valorii 12 semnific gruparea liniilor care aparin aceleiai jumti de zi, dac pentru proprietatea Group On a fost stabilit valoarea Hour. 47
Keep together se refer la modul de tiprire a liniilor raportului care fac parte din acelai grup. Pentru aceast proprietate exist trei valori posibile: No permite tiprirea liniilor dintr-un grup i pe pagina urmtoare, dac s-a ajuns la sfritul paginii; Whole group (Grupul ntreg) are ca efect tiprirea tuturor seciunilor grupului (antetul, detaliile i subsolul) pe o singur pagin, dac este posibil; With First Detail (Cu prima linie de detaliu) antetul grupului va fi tiprit pe aceeai pagin cu prima linie a seciunii de detaliu. Dup adugarea tuturor cmpurilor i expresiilor de ordonare i grupare i configurarea proprietilor de grupare, se nchide fereastra Sorting and Grouping i se trece la completarea seciunilor nou introduse n pagina raportului. Cerinele raportului ales de noi ca exemplu impun crearea unui grup de date, n funcie de denumirea locului de munc. n seciunea de antet se introduce denumirea locului de munc, iar n cea de subsol se adaug totalul calculat pentru venitul lunar, n maniera descris pentru seciunea Report Footer. Forma final a raportului privind veniturile lunare, cu toate obiectele incluse, este prezentat n figura 2.51.
Figura 2.51 Fereastra pentru construirea raportului exemplificat forma final Acum se salveaz raportul (este recomandabil s salvai mai des, fr a atepta s finalizai construirea raportului), dup care se face vizualizarea acestuia, prin selectarea opiunii Print Preview din meniul View sau prin apsarea butonului din partea stng a liniei cu instrumente. n
continuare se poate configura pagina (dimensiune, orientare, margini etc.), folosind opiunea Page Setup din meniul File. De asemenea, se poate tipri raportul prin comanda Print din acelai meniu File. La vizualizare raportul va arta ca n figura 2.52. Odat salvat, raportul poate fi ulterior modificat. n acest sens, se alege obiectul Report din fereastra bazei de date, apoi se alege raportul dorit din fereastra din dreapta, ce conine rapoartele create deja, i se apas butonul din linia cu instrumente. Efectul acestei comenzi va consta
n deschiderea ferestrei de construire a raportului (figura 2.51), n care vor fi regsite toate obiectele raportului i care pot fi modificate n conformitate cu noile cerine.
48
Figura 2.52 Forma i coninutul raportului exemplificat la vizualizare Dac ai reuit s parcurgei toate etapele descrise anterior, probabil v-ai convins c facilitile interesante i puternice oferite de modul Design View i meritai sincere felicitri. n schimb, este de asemenea probabil ca rata de abandon n rndul temerarilor s fie foarte mare. Motivele ar putea consta n dificultile ntmpinate uneori n realizarea diferiteelor operaiuni, precum i timpul ndelungat de construire a raportului. n concluzie, poate cea mai eficient cale de construire a rapoartelor const n realizarea lui cu ajutorul vrjitorului (Report Wizard) i apoi personalizarea i completarea lui n modul Design View. V felicitm dac ai ajuns la acest rnd din acest capitol i v dorim succes pentru aprofundarea facilitilor de lucru neprezentate de noi.
PROBLEM
Pasul 7 Crearea rapoartelor
S se construiasc urmtoarele rapoarte: 1. Situaia veniturilor lunare prezentat n figura 2.52. 2. Lista angajailor de sex feminin pornind de la interogarea cu numrul 3 de la pasul 6. 3. Raportul posturilor de munc pornind de la interogarea cu numrul 6 de la pasul 6.
Baze de date
Aplicaia informatic va fi dezvoltat n Microsoft Access. Aplicaia va conine obligatoriu urmtoarele componente: 1. Baza de date. Numrul minim de tabele este 4. Se vor utiliza urmtoarele faciliti de lucu: specificarea valorilor implicite (default), a regulilor de validare i a mesajelor de eroare asociate, definirea cheii primare, stabilirea legturilor dintre tabele, definirea restriciilor refereniale n fereastra Edit relationship. 2. Interogarea bazei de date. Se vor crea minim 7 interogri, din care cel puin 2 vor include faciliti de agregare a datelor. 3. Formulare (ecrane pentru actualizarea i vizualizarea datelor). Se vor crea minim 2 formulare utiliznd Form wizard. 4. Rapoarte. Se vor crea minim 2 rapoarte utiliznd Design view, din care cel puin un raport va conine grupuri de date. Temele de realizare a proiectului vor fi alese exclusiv din domeniul economic.
50