You are on page 1of 222

Cornel GIULVEZAN Gabriela MIRCEA Diana TRNVEANU

Timioara, 2008

REFERENI TIINIFICI: Prof. univ. dr. Mihaela MUNTEAN Prof. univ. dr. Ioan BANDU

CUPRINS
CUPRINS OBIECTIVELE CURSULUI PARTEA TEORETIC Cap.1. INTRODUCERE 1.1. Rezumatul capitolului 1.2. Conceptele de Dat i Fiier 1.3. De ce baze de date? 1.4. Autoevaluare Cap.2. BAZE DE DATE CONCEPTE 2.1. Rezumatul capitolului 2.2. Conceptul de baz de date 2.3. Modelarea baze de date 2.4. Obiectivele datelor n baze de date 2.5. Sisteme de gestiune a bazelor de date 2.6. Funciunile sistemului de gestiune al bazei de date 2.7. Componentele unui mediu SGBD 2.8. Limbaje pentru baze de date 2.9. Proiectarea bazei de date 2.10. Modelul de date relaional 2.11. ntrebri teoretice de auto-evaluare CAP.3. MICROSOFT ACCESS 3.1. Rezumatul capitolului 3.2. Noiuni generale privind bazele de date ACCESS 3.2. Tipuri de fiiere n ACCESS 3.3. Lucru cu ACCESS 3.4. Noiuni practice n ACCESS 3.5. ntrebri teoretice de auto-evaluare CAP.4. LIMBAJUL VISUAL BASIC PENTRU APLICAII 4.1. Rezumatul capitolului 4.2. Macro-comenzi sau VBA? 4.2. Mediul de dezvoltare pentru VBA (IDE) 4.3. Configurarea editorului VBA 4.4. Completarea automat a instruciunilor n editorul VBA 4.5. Modelul obiect din ACCESS 4.6. Principiile utilizrii obiectelor i coleciilor 4.7. Crearea de referine pentru obiecte 4.8. Crearea unei proceduri n VBA 5 9 11 11 11 11 15 17 19 19 19 21 24 27 30 32 34 35 39 48 51 51 51 55 55 57 81 83 83 83 84 89 89 91 94 98 98 6

4.9. Elementele limbajului VBA 100 4.9.1. Variabile, constante i tipuri de date 100 4.9.2. Structurile de decizie i selecie 107 4.9.3. Operatori n VBA 112 4.9.4. Instruciuni utilizate cu obiecte n VBA 114 4.9.5. Regulile de scriere a codului surs VBA 120 4.9.6. Numele procedurilor, variabilelor i constantelor 121 4.9.7. Clase de obiecte n VBA 122 4.9.8. Exploratorul de obiecte n ACCES 127 4.9.9. Gestionarea evenimentelor n ACCESS 130 4.9.10. Proprieti i metode ale obiectelor ACCESS 137 4.10. Recomandri pentru optimizarea codului VBA 146 4.11. ntrebri de auto-evaluare 146 CAP.5. LIMBAJUL SQL 149 5.1. Rezumatul capitolului 149 5.2. Prezentarea limbajului SQL 149 5.3. Limbajul SQL I VBA 150 5.4. Descrierea limbajului SQL 151 5.5. Exemple de utilizare a interogrilor SQL 158 5.6. Teste de auto-evaluare 160 CAP. 6. MANIPULAREA OBIECTELOR WORD I EXCEL N VBA 161 6.1. Rezumatul capitolului 161 6.2. Tehnologia OLE 161 6.3. Comunicarea cu Word 163 6.4. Comunicarea cu EXCEL 168 6.5. Protocolul DDE 172 6.6. ntrebri de auto-evaluare 176 PARTEA PRACTIC 177 Cap.7. Aplicaii practice rezolvate 177 7.1. Rezumatul capitolului 177 7.2. Aplicaia 1 177 7.2.1. Aplicaie propus 184 7.2.2. Aplicaie propus 185 7.3. Aplicaia 2 185 7.3.1. Aplicaie propus: 192 7.4. Aplicaia 3 192 7.4.1. Aplicaie propus 199 7.5. Aplicaia 4 199 7

7.5.1. Aplicaie propus 7.6. Aplicaia 5 7.6.1 Aplicaie propus GLOSAR DE TERMENI Bibliografie

202 202 206 207 213

OBIECTIVELE CURSULUI
Evoluia diferitelor metode i tehnici de organizare a datelor, pe suporturi tehnice adresabile (memorii externe), a fost determinat de necesitatea de a avea un acces ct mai rapid i mai uor la un volum ct mai mare de date. Sistemele de gestiune a bazelor de date reprezint modalitatea principal de structurare i organizare a datelor n cadrul sistemelor informatice. Obiectivul unei bazei de date este de a separa descrierea datelor fa de programele de aplicaii, ajungndu-se la abstractizarea datelor memorate. Obiectivele cursului sunt nsuirea noiunilor fundamentale i conceptelor de baz din domeniu, precum i capacitatea de a iniia, proiecta i implementa o baz de date. Ne propunem s rspundem la ntrebrile: ce este o baz de date, cum este structurat aceasta, cum se proiecteaz? Pentru aceasta considerm necesare: nelegerea impactului tehnologiilor informaiei i a comunicaiilor (TIC) n societate, a conexiunilor dintre informatic i alte obiecte de studiu, precum i identificarea posibilitilor de utilizare a SGBD-urilor n disciplinele specializrii de baz; familiarizarea cu instrumentele oferite de sistemele de gestiune a bazelor de date (tabele, formulare, interogri, rapoarte, macro-uri, proceduri VBA); dezvoltarea abilitii de a crea o aplicaie user-friendly, cu o interfa grafic atractiv; iniierea n limbajul SQL Structured Query Language; dezvoltarea unei culturi informatice.

10

11

PARTEA TEORETIC CAP.1. INTRODUCERE 1.1. Rezumatul capitolului


Organizarea datelor n vederea prelucrrii pe calculator este o activitate cel puin la fel de important ca i scrierea progamelor. n acest prim capitol vor fi prezentate noiuni legate de modul de organizare a datelor, plecnd de la conceptele de baz de dat i fiier, prezentnd o clasificare a datelor, a tipurilor de structuri de date existente i a organizrii datelor n fiiere. Sistemele informatice pot fi realizate fie cu ajutorul unor aplicaii care utilizeaz fiiere independente sau integrate, fie cu ajutorul unor aplicaii care acceseaz o structur complex numit baz de date. Sistemului informatic are dou componente principale i anume datele i programele, acestea fiind ntr-o strns interdependen. O baz de date are mijloace proprii pentru crearea i evoluia n timp a structurii, realiznd o departajare ntre datele stocate i programele care le acceseaz.

1.2. Conceptele de Dat i Fiier


Apariia i dezvoltarea rapid a bazelor de date se datoreaz unei multitudini de factori de natur tehnic i socio-economic. Creterea necesarului i implicit a consumului de informaie a avut ca prim rezultat creterea cantitii de informaie stocat pe suporturi de memorare extern i optimizarea tehnicilor de stocare i regsire a informaiei. Chiar de la primele aplicaii informatice realizate cu ajutorul calculatorului s-a pus problema utilizrii unor tehnici eficiente de organizare, stocare i regsire a datelor. O informaie codificat i stocat pe un suport de memorare reprezint ceea ce numim dat. Din punctul de vedere al prelucrrii de calculator, n cadrul aplicaiilor, datele se definesc cu ajutorul unui nume (identificator), a atributelor pe care le are i de o valoare. Rezolvarea problemelor concrete cu ajutorul calculatorului presupune definirea unui algoritm adecvat pentru rezolvarea fiecrei probleme. Un algoritm este definit ca fiind o succesiune finit, corect definit i fr ambiguiti de operaii elementare care se aplic asupra unei mulimi de date de intrare pentru a se obine un rezultat. Algoritmul trebuie sa conduc la acelai rezultat de fiecare

12

dat cnd se aplic asupra aceleai mulimi de date de intrare. Calculatorul prelucreaz doar date reprezentate cu ajutorului unui cod binar, motiv pentru care datele sunt din punctul de vedere al calculatorului iruri de cifre binare, de bii. Semnificaia irurilor de bii depinde de codul pentru codificarea informaiei, de modul de utilizare a acesteia de ctre programator n cadrul aplicaiei informatice i de limbajul de programare folosit. Fiecare limbaj de programare are reguli specifice pentru definirea i utilizarea datelor. Organizarea datelor reprezint procesul de identificare, definire, evaluare, structurare i memorare a informaiilor, n cadrul unui sistem informaional. Prin organizarea datelor se realizeaz gruparea datelor n colecii de date omogene, se stabilesc care sunt relaiilor dintre date, dintre elementele coleciilor i dintre colecii, precum i modul de stocare a datelor pe suportul fizic de memorare. Datele pot fi clasificate n funcie de modul de alocare al memoriei, astfel existnd date de tip static i date de tip dinamic. La datele de tip static, memoria este alocat la nceputul execuiei programului, rmnnd ocupat de respectivele date pe ntreaga durat a execuiei, pe cnd la datele de tip dinamic memoria este alocat n momentul execuiei programului, existnd instruciuni care permit alocarea memoriei atunci cnd datele sunt necesare i alte instruciuni care permit eliberarea respectivei zone de memorie n momentul n care datele nu mai sunt necesare. Datele trebuie privite sub dou aspecte: fizic i logic. Din punct de vedere fizic, n cazul stocrii i prelucrrii cu ajutorul calculatorului datele sunt iruri de bii. Din punct de vedere logic, datele au o anumit semnificaie i sunt de mai mult tipuri, funcie de semnificaia lor. Datele pot fi simple (elementare), respectiv compuse (structurate). Datele simple (elementare) sunt date independente unele de altele din punctul de vedere fizic, adic al reprezentrii pe suportul de memorare, chiar dac din punct de vedere logic exist interdependene. Tipul de dat precizeaz care sunt valorile datei. Dac pe parcursul procesului de prelucrare data pstreaz aceeai valoare este numit dat constant. Pentru datele constante se utilizeaz ca identificator valoarea acestora. Dac valorile datei sunt modificate n timpul procesului de prelucrare datele se numesc date variabile sau variabile. n mod uzual pentru date elementare se folosesc ca tipuri de dat: - tipul numeric include numerele ntregi, reale si complexe avnd diferite reprezentri (virgul fix, virgul mobil, precizie simpl, precizie dubl, etc.). Asupra lor se pot realiza operaii de adunare, scdere, nmulire, mprire etc.; - tipul logic (boolean) utilizat pentru reprezentarea valorilor logice Adevrat, respective Fals cu ajutorul unor valori numerice, asupra

13

acestora putndu-se efectua operaii logice precum negaia, conjuncia, disjuncia; - tipul caracter (text, string) permite reprezentarea unor succesiuni de caractere folosind mulimi de simboluri alfanumerice, reprezentarea pe suporturile de memorare utiliznd codul ASCII. Asupra acestora se pot defini operaii de cutare, concatenare, ordonare; - tipul dat calendaristic, timp (Date, Time, DateTime) reprezentarea intern a acestora fcndu-se de regul cu ajutorul unor valori numerice. Datele compuse numite i structuri de date sunt colecii (mulimi) de date elementare ntre care exist relaii structurale, omogene din punct de vedere al descrierii i al prelucrrii. Componentele unei structuri formeaz un ntreg astfel nct prelucrarea se poate face att la nivelul structurii de date ct i la nivelul fiecrei componente, care poart numele de cmp. Majoritatea limbajelor de programare opereaz cu dou categorii de structuri: structuri interne i structuri externe. Structurile de date interne se refer la modul de amplasare n memoria intern a datelor elementare aparinnd unei colecii. n aceast categorie sunt incluse structurile de tip tablou (masiv), nregistrare (articol), mulime, lista i arbore. Structurile externe se refer la modul de memorare a datelor pe suporturi de memorare extern. Din aceast categorie fac parte fiierele i bazele de date. Datele, vzute iniial ca iruri de caractere, care reproduceau caracteristicile unor obiecte, fenomene, fapte, evenimente, respectiv concepte din lumea real, datorit factorului de repetare au fost organizate n structuri care poart numele de fiier. Fiierul este o structur care grupeaz date dintr-un anumit domeniu care au anumite caracteristici comune. Fiierele pot fi cu organizare definit, respectiv nedefinit. Accesul la datele ce formeaz fiierul depinde de structura ce definete fiierul, adic de organizarea datelor i de suportul de memorare. Exist doi parametrii ce msoar performanele accesului la date: cantitatea de date transferat i timpul de rspuns. Suportul de memorare poate fi adresabil sau nu, poate fi reutilizabil sau nu, poate fi magnetic, optic sau de alt natur. Accesul la date poate fi secvenial sau direct. Accesul direct este permis doar de suporturile de memorare adresabile, adic acele suporturi de memorare care permit accesul direct pe baza unei adrese la o anumit zon de pe suportul de memorare, numit locaie sau bloc. Principiile de organizare a fiierelor i tehnicile de regsire a datelor stocate n fiiere reprezint o transpunere n cadrul aplicaiilor informatice a tehnicilor utilizate n sisteme de prelucrare manual a informaiei. Fiierul fiind o colecie de date

14

trebuie considerat ca avnd dou structuri distincte suprapuse, i anume, o structur fizic i una logic, cea logic fiind dat de semnificaia datelor. Din punct de vedere fizic fiierul este o colecie finit de nregistrri fizice, iar din punctul de vedere al semnificaiei, o colecie de nregistrri logice, numite i articole. Fiierul ocup un anumit spaiu pe suportul de memorare extern, spaiul alocat putnd fi continuu sau nu. Componentele sistemului de operare gestioneaz n mod transparent alocarea fizic pe suportul de memorare extern precum i accesul la fiiere. Din punctual de vedere al sistemului de operare fiierul are un nume i eventual o extensie de fiier, are asociat o mulime de atribute care depind de sistemul de operare (Read Only, Hidden, System, Archive, etc); informaii privind momentul crerii, al ultimei modificri, al ultimei accesri, privind dimensiunea ca numr de octei etc. Extensia ofer sistemului de operare informaii privind coninutul fiierului. Din punctul de vederea al aplicaiilor fiierul are un coninut informaional, un anumit mod de organizare, permite unul sau mai multe moduri de acces etc. Datele ntr-un fiier sunt structurate n nregistrri. Organizarea nregistrrilor ntr-un fiier poate fi privit att ca organizare logic ct i ca organizare fizic. Din punctul de vedere al organizrii fizice datele ce formeaz fiierul sunt structurate n nregistrri fizice. Organizarea fizic reprezint o organizare intern care depinde de resursele fizice ale calculatorului i este supus rigorilor sistemului de operare. nregistrarea fizic reprezint numrul de octei care se transfer ntre memoria intern a calculatorului i suportul de memorare extern (scriere), respectiv de pe suportul extern n memorie (citire). Pentru optimizarea transferului se folosesc zone de memorie numite zone tampon, sau buffer, prin intermediul crora se transfer mai multe nregistrri fizice vecine cu nregistrarea de care este nevoie. Din punct de vedere al organizrii logice datele coninute ntr-un fiier sunt structurate n nregistrri logice. n principiu, un fiier conine acelai tip de nregistrri logice, dispuse ntr-o anumit ordine. Mulimea nregistrrilor logice coninute ntr-un fiier reprezint o mrime finit i caracterizeaz, n mod direct, mrimea oricrui fiier. Din punct de vedere al utilizatorului, nregistrarea logic reprezint i unitatea de acces la datele coninute ntr-un fiier. Organizarea logic a nregistrrilor n fiier, ca mod de organizare extern a datelor, este impus de natura aplicaiilor i cerinele de prelucrare.

15

Datele coninute ntr-o nregistrare logic caracterizeaz o entitate informaional, se refer la o clas de obiecte, fenomene, procese etc., n timp ce datele ce formeaz o nregistrare fizic caracterizeaz o unitate de stocare fizic pe suportul de memorie a calculatorului. Utilizatorul opereaz cu concepte, privind organizarea datelor, la nivel logic, n vreme ce sistemul de operare stocheaz i manipuleaz datele, pe suportul de memorie, numai la nivel de nregistrare fizic. n funcie de natura i complexitatea datelor, lungimea unei nregistrri logice poate s corespund sau nu cu lungimea unei nregistrri fizice. O nregistrare fizic poate s conin mai multe nregistrri logice, respective o nregistrare logic poate fi stocat n mai multe nregistrri fizice.

1.3. De ce baze de date?


Totalitate informaiilor care definesc i menin n funciune un sistem real formeaz sistemul informaional al sistemului real, iar n cadrul sistemului informaional putem delimita sistemul informatic, care reprezint acea parte a sistemului informaional n care informaia este stocat i procesat cu ajutorul tehnicii de calcul. Sistemele informatice pot fi realizate fie cu ajutorul unor aplicaii care utilizeaz fiiere independente sau integrate, fie cu ajutorul unor aplicaii care acceseaz o structur complex numit baz de date. Baza de date are mijloace proprii pentru crearea i evoluia n timp a structurii. Organizarea datelor n fiiere aparinnd fiecrei aplicaii reprezint o metod rigid care are mai multe dezavantaje pentru utilizatori. Cel mai mare dezavantaj este acela c modificrile n structura unui fiier oblig la modificarea tuturor programelor care utilizeaz fiierul a crui structur a fost modificat. Din punctul de vedere al utilizatorului sistemele bazate pe fiiere reprezint un progres extraordinar fa de sistemele manuale, totui acestea fiind dependente de programele de aplicaie, orice interogare necesit scrierea unui program i integrarea acestuia n sistemul implementat, obinerea de noi informaii spontan fiind practic imposibil. Realizarea sistemelor informatice cu ajutorul aplicaiilor independente presupune ca fiecare astfel de aplicaie s defineasc i s ntrein propriile structuri de date organizate de regul n fiiere. n acest caz are loc separarea i izolarea datelor, precum i legarea acestora de fiecare aplicaie. Datorit modului de abordare descentralizat are loc o cretere a redundanei datelor, adic datele vor fi multiplicate necontrolat. Redundana reprezint o proprietate a unei colecii de date care se refer la faptul c unele componente ale coleciei

16

de date sunt memorate de mai multe ori pe suportul de memorare. Multiplicarea datelor implic costuri suplimentare i n plus, crete riscul alterrii integritii datelor, adic apariia de neconcordane. n cazul sistemelor reale complexe creterea redundanei are ca efect apariia de erori frecvente datorate neconcordanei informaiilor memorate n fiiere aparinnd unor aplicaii diferite, rezultnd costuri de actualizare mrite corespunztor. Sistemului informatic are dou componente principale i anume datele i programele, acestea fiind ntr-o strns interdependen. n codul program al fiecrei aplicaii creat ntr-un limbaj de programare clasic se definesc structurile de date, att cele interne ale aplicaiei respective ct i structura logic a fiierelor utilizate de aplicaia respectiv, mpreun cu modul de acces la datele stocate n aceste fiiere. n cazul n care structura logic a unei nregistrri este modificat prin adugarea unui cmp, sau schimbarea dimensiunii unui cmp, toate programele care opereaz cu fiierul a crui structur a fost modificat trebuie actualizate. De asemenea orice modificare a semnificaiei, respectiv a modului de reprezentarea a informaiei respective n sistemul real impune modificarea tuturor aplicaiilor care folosesc informaia respectiv, ceea ce reprezint n cazul sistemelor informatice complexe un efort de programare considerabil, precum i costuri ridicate. Aceast caracteristic a sistemelor bazate pe fiiere este cunoscut sub denumirea de dependen program-date. Deoarece structura fiierului este ncorporat n programele de aplicaie, ea este dependent de limbajul n care sunt scrise programele n este realizat aplicaia respectiv. Atunci cnd datele sunt izolate n fiiere aparinnd unor aplicaii independente, accesarea datelor de care este nevoie la un moment dat se realizeaz cu mare greutate deoarece programatorul trebuie s sincronizeze prelucrarea simultan a tuturor fiierelor aplicaiilor, dificultatea crescnd odat cu numrul de fiiere. Structura fiierelor este ncorporat n programele de aplicaie, fiind dependent de limbajul de programare folosit pentru fiecare aplicaie. Mai mult chiar, fiecare interogare a fondului de date stocate n fiierele independente se realizeaz doar prin intermediul programelor de aplicaie, interogarea fiind dependent de programatorul care a realizat aplicaia i chiar mai mult de limbajul de programare folosit. n sistemele complexe, odat cu creterea necesarului de informaie exist riscul ca satisfacerea necesarului de informaie prin noi programe s nu poat fi realizat ntr-un timp optim. Reducerea timpului alocat analizei precum i proiectrii de noi aplicaii are ca rezultat obinerea de programe inadecvate sau ineficiente pentru ndeplinire cerinelor utilizatorilor, de regul cu o documentaie limitat i greu de ntreinut. n astfel de condiii securitatea datelor devine limitat, iar integritatea datelor est practic imposibil de asigurat.

17

Limitele sistemelor bazate pe fiiere independente se datoreaz urmtorilor doi factori: - definiia datelor este ncorporat n programele de aplicaie, - controlul accesului i cel al manipulrii datelor se realizeaz exclusiv prin intermediul programelor de aplicaie. Pentru a fi eficient un sistem informatic este necesar o nou abordare care s scoat n afara programelor de aplicaie definirea, controlul i manipularea datelor. Aceasta se poate realiza cu ajutorul bazei de date i a sistemului de gestiune a bazelor de date.

1.4. Autoevaluare
1. Explicai: a. Noiunea de dat b. Organizarea datelor c. Date constante, date variabile d. Noiune de fiier e. Tipuri de date simple f. Date compuse g. Redundana datelor

h. nregistrare fizic i nregistrare logic i. Dependena date-program


2. Analizai critic noiunile de dat elementar i dat compus.

18

19

CAP.2. BAZE DE DATE CONCEPTE 2.1. Rezumatul capitolului


Baza de date realizeaz separarea definiiei datelor de programele de aplicaie. Ne propunem o trecere n revist a avantajelor ce decurg din organizarea datelor n baze de date, precum i a principalelor concepte din teoria bazelor de date. Vom prezenta mai multe puncte de vedere legate de definiia bazei de date, insistnd asupra principalelor caracteristici ale bazelor de date, modelarea bazei de date, obiectivele datelor n baze de date, definiia, funciunile i componentele unui sistem de gestiune a bazelor de date. Am considerat necesare prezentarea conceptelor de limbaje pentru baze de date, principalele principii pe care se bazeaz proiectarea bazelor de date i modelul de date relaional.

2.2. Conceptul de baz de date


Pentru conceptul de baz de date exist un numr foarte mare de definiii, adesea contradictorii, cu att mai mult cu ct conceptul a fost n continu evoluie. Baza de date: reprezint o colecie partajat de date, ntre care exist relaii logice (i o descriere a acestor date), proiectat pentru a satisface necesitile informaionale ale unei organizaii; este o colecie de date operaionale folosite de ctre aplicaiile sistem ale unei organizaii; este un ansamblu structurat de date coerent, fr redundan inutil, astfel nct aceasta pot fi prelucrate eficient de mai muli utilizatori ntr-un mod concurent; reprezint un ansamblu de date nregistrate pe suporturi accesibile calculatorului pentru a satisface simultan mai muli utilizatori de o manier selectiv i ntr-un timp oportun; se definete ca un ansamblu de date elementare sau structurate, accesibile unei comuniti de utilizatori. Baza de date este un ansamblu structurat de date legate structural ntre ele, un depozit de date unic definit o singur dat i utilizat simultan de mai muli utilizatori. Baza de date este o resurs comun i partajat. Baza de date

20

conine nu numai date ci i descrierea acestora. Descrierea datelor este cunoscut sub denumirea de dicionar de date (catalog de sistem, sau meta-date) i reprezint date despre date. Prin faptul ca baza de date conine i descrierea datelor se realizeaz independena program - date. Baza de date realizeaz separarea definiiei datelor de programele de aplicaie. Prin aceast abstractizare a datelor devine posibil modificarea definiiei unei date fr a afecta utilizatorii acesteia cu condiia ca semnificaia datei respective, adic definiia extern a acesteia, s rmn aceeai. Ceea ce este important de reinut referitor la conceptul de baz de date este aceea c el nu poate fi definit complet dect dac se au n vedere dou unghiuri de vedere diferite i legtura dintre acestea: caracteristicile bazei de date din punctul de vedere al utilitii n cadrul sistemului real n care se implementeaz, respectiv locul i rolul bazei de date n cadrul sistemului informaional-decizional, schema extern, nivelul extern (viziunea extern); caracteristicile tehnice ale bazei de date, respectiv locul i rolul bazei de date n cadrul sistemului de prelucrarea datelor, schema intern, nivelul intern (viziunea intern); legtura dintre cele dou viziuni, cea extern i cea intern este realizat de schema conceptual (nivelul conceptual), care are rolul de a constitui schema logic a ntregii baze de date, adic reprezint o imagine complet a cerinelor organizaiei privind datele, fiind independent de orice consideraii privind stocarea. Standardizarea n domeniul bazelor de date s-a impus de la nceputul anilor 70 impunndu-se pentru baza de date trei niveluri de abstractizare, adic trei niveluri distincte la care pot fi descrise datele. Aceasta formeaz o arhitectur cu trei niveluri, cuprinznd un nivel extern, unul conceptual i unul intern. Pentru fiecare nivel se definete o schem corespunztoarea a bazei de date. Obiectivul arhitecturii cu trei niveluri este separarea vederii fiecrui utilizator asupra bazei de date de modul n care ea este reprezentat fizic. Viziunea utilizatorului individual se numete vedere extern sau model extern, la nivel extern existnd o mulime de vederi externe, de sub-scheme externe, corespunztoare fiecrui utilizator individual. O vedere extern poate fi considerat ca fiind din punctul de vedere al utilizatorului individual coninutul bazei de date, adic ceea ce vede el din baza de date. Acest nivel descrie acea parte a bazei de date care este relevant pentru fiecare utilizator schema extern fiind format din mulimea de sub-schemelor externe. Schema conceptual este o reprezentare a tuturor informaiilor coninute de baza de date ntr-o form abstract. Ea reprezint o viziune, o vedere a datelor aa cum sunt ele n realitate, fr a ine cont de modul n care vede datele

21

fiecare utilizator. Nivelul conceptual reprezint o vedere general a bazei de date. Acest nivel descrie ce date sunt stocate n baza de date i relaiile dintre acestea. Pentru o baz de date exist o singur schem conceptual. Vederea intern precizeaz modul n care se memoreaz efectiv datele ce formeaz baza de date i este descris de schema intern a bazei de date. Nivelul intern este reprezentarea fizic a bazei de date pe calculator. Acest nivel descrie cum sunt stocate datele n baza de date precum i metodele de acces, criteriile de ordonare i regsire pe baza unor criterii de performan i flexibilitate care asigur performane optime. Pentru baza de date exist o singur schem extern. Pentru a stabili corespondena ntre fiecare schem extern i schema intern, n cadrul bazei de date exist mecanisme care folosesc informaiile din schema conceptual. Fiecare sub-schem extern este o imagine a schemei conceptuale. Trebuie s se fac distincie ntre descrierea bazei de date, care constituie schema bazei de date i baza de date nsi. Schema bazei de date este definit n cursul procesului de proiectare a bazei de date, modificrile ulterioare fiind nesemnificative. Datele reale din baza de date pot fi modificate frecvent. Mulimea de valori concrete stocate, la un moment dat, se numete instan a bazei de date. Descrierea general a bazei de date se numete schema bazei de date i vizeaz structurile de date, legturile dintre date i regulile care asigur coerena datelor. Pentru o baz de date exist trei tipuri diferite de scheme care sunt n concordan cu nivelurile de abstractizare ale arhitecturii bazei de date.

2.3. Modelarea baze de date


Numim model de date o colecie integrat de concepte, necesare descrierii datelor, a relaiilor dintre date i a constrngerilor asupra datelor dintr-o organizaie. Modelul de date este o reprezentare abstract a obiectelor i a evenimentelor lumii reale i a asocierilor dintre acestea, cu ajutorul cruia se reprezint o organizaie. Un model de date este definit sub trei aspecte, i anume o component structural, care cuprinde regulile de definire a datelor, o component de manipulare datelor, care definete tipurile de operaii permise asupra datelor i o mulime de reguli care garanteaz integritatea i coerena datelor. Pentru modelarea datelor la nivel conceptual i extern se folosesc modele de date bazate pe obiecte i modele de date bazate pe nregistrri, iar la nivel fizic modele de date fizice. Modelele de date bazate pe obiecte

22

utilizeaz conceptele: entitate, atribut i relaie. Cele mai cunoscute tipuri de modele de date bazate pe obiecte sunt modelul Entitate - Relaie, modelul semantic, modelul funcional i modelul orientat spre obiecte. Modelul Entitate Relaie reprezint un model de date conceptual de nivel nalt, neformalizat, care descrie structura bazei de date, precum i tranzaciile de regsire, respectiv de reactualizare asociate. Acest model, permite o reprezentare a unui sistem real, grupnd elementele sistemului real n entiti i asocieri (legturi) ntre entiti. Modelul de date orientat spre obiecte extinde definiia conceptului entitate n sensul c se descrie att starea prin atribute, ct i comportamentul prin aciunile asociate. Obiectul ncapsuleaz starea i comportamentul. Modelarea conceptual presupune realizarea unui model de date pentru informaiile care exist n cadrul unei organizaii independent de detaliile de implementare. Analiza necesitilor informaionale ale unei organizaii presupune identificarea entitilor, a atributelor acestora i a relaiilor dintre entiti. O Entitate (entity) este un obiect care poate fi identificat n mod distinctiv (persoan, loc, concept, activitate, eveniment), care este semnificativ pentru sistemul real, un obiect despre care dorim s nregistrm informaii. Un atribut (attribute) este o proprietate care descrie un aspect oarecare al obiectului pe care dorim s l definim. Entitile similare care pot fi descrise prin aceleai atribute formeaz un tip de entitate (entity type), iar colecia format din toate entitile de acelai tip formeaz o mulime de entiti (entity set). Entitatea este descris de atributele sale relevante. Fiecare atribut reprezint o caracteristic semnificativ, atributele avnd rolul de a defini coninutul unei identiti. Pentru fiecare atribut exist o mulime de valori posibile, poteniale, care formeaz un domeniu de valori. Atributele pot fi simple sau compuse. Atributul simplu are o singur component cu existen independent. Atributul compus este format din mai multe componente, fiecare avnd o existen independent. Prin valori concrete date atributelor ce definesc o entitate se obine o realizare, o apariie, o instan a respectivei entiti. Un atribut poate avea o singur valoare, sau mai multe valori pentru o anumit entitate. Este posibil ca valoarea unui atribut s fie derivabil din valoarea unui alt atribut sau din valorile mai multor atribute ale respectivei entiti sau ale altor entiti. Numim cheie candidat atributul sau mulimea de atribute ale unei entiti care identific n mod unic apariiile individuale ale unui tip de entitate. Un tip de entitate poate avea mai multe chei candidat. Pe baza unor consideraii privind pricind caracterul unic, precum i de structura cheilor candidat din mulimea de chei candidat se alege o cheie candidat care va fi numit cheie primar, iar celelalte vor fi numire chei alternative. O cheie candidat format din mai multe atribute va fi numit cheie compus.

23

Numim tip de relaie o asociere semnificativ ntre tipuri de entiti. Un tip de relaie are asociat o anumit funcie. Fiecare prezen unic identificabil a unui tip de relaie se numete relaie. Numim relaie (relationship) o asociere, o comunicare, o coresponden ntre dou sau mai entiti. Relaia exprim raportul existent ntre respectivele entiti i exist doar dac entitile exist. O valoare a unei relaii este o comunicare ntre valorile entitilor pe care le leag. Entitile implicate ntr-o anumit relaie se numesc participani n relaie. O relaie n care o anumit entitate particip mai mult dect o dat avnd roluri diferite se numete relaie recursiv. O relaie este caracterizat prin gradul relaiei, care exprim numrul de entiti participante. Din punctul de vedere al numrului de mulimi de entiti participante entitile pot fi binare, respectiv multiple. Asocierile binare sunt de trei tipuri dup numrul elementelor din fiecare dintre cele dou mulimi puse n coresponden: asocierea unul - la - unul (one-to-one);

asocierea unul la - mai multe (one-to-many) i mai multe la unul (many-to-one);

asocierea mai multe la - mai multe (many-to-many)

. Constrngerile care pot fi impuse entitilor participante ntr-o relaie trebuie s reflecte restriciile asupra relaiilor, aa cum sunt ele n sistemul real. Exist dou tipuri de constrngeri asupra relaiilor, numire constrngeri de cardinalitate i constrngeri de participare. Regulile care definesc cardinalitatea sunt numite reguli de afaceri. Toate regulile de afaceri din

24

sistemul real trebuie identificate i reprezentate n modelul de date. Prin constrngerile de participare se stabilete Atunci cnd existena unei entiti depinde de o alt entitate de care este legat printr-o relaie spunem c exist o constrngere de participare. Constrngerea de participare poate fi total (obligatorie) atunci cnd existena unei entiti necesit existena unei entiti asociate printr-o relaie, respectiv constrngere de participare este parial (opional) atunci cnd constrngerea nu condiioneaz cnd existena entitii. Baza de date este o transpunere fizic, n calculator, a modelului de date, care conine entitile, atributele ce definesc entitile i relaiile dintre entiti.

2.4. Obiectivele datelor n baze de date


Datele reprezint suportul real pentru informaia necesar subsistemului de decizie. Datele sunt stocate n structuri complexe numite baze de date. Utilizarea bazelor de date n cadrul sistemelor informatice are urmtoarele obiective fundamentale din punctul de vedere al datelor: 1. Independena fizic reprezint obiectivul esenial, i anume, realizarea independenei structurilor de stocare n raport cu structurile de date din sistemul real. n baza de date mulimea de date se definete fr a ine cont de forma datelor n sistemul real, lund n considerare doar accesul rapid la date cu performane prestabilite. Aceasta se realizeaz prin asigurarea independenei fizice a datelor fa de programele de aplicaie, adic orice modificare organizrii interne a datelor i a structurilor de nregistrare nu va afecta programele de aplicaie. 2. Independena logic presupune c fiecare utilizator, respectiv grup de utilizatori are o sub-schem extern particular proprie fr a afecta schema general a bazei de date. Fiecare grup poate s cunoasc doar o parte a semanticii datelor, s vad doar o submulime a datelor i numai n forma de care are nevoie. Schema conceptual a bazei de date fiind o sintez a schemelor externe nu va fi afectat de evoluia n timp a unei sub-scheme particulare, fiecare grup de utilizatori putnd s-i modifice propria sub-schem fr a afecta schema conceptual. 3. Manipularea datelor direct de ctre utilizatorul final face ca datele s fie vzute de utilizatori independent de implementarea 25

datelor n baza de date i pot manipula datele cu ajutorul unor limbaje ne-procedurale foarte apropiate de limbajul natural. Utilizatorul poate obine informaii din baza de date fr s cunoasc n ntregime organizarea complex a bazei de date. Realizarea acestui obiectiv are ca rezultat mbuntirea accesibilitii datelor i a capacitii de rspuns. Utilizatorul va putea accesa baza de date cel mai adesea prin intermediul unei interfee prietenoase n asociere cu un limbaj ne-procedural, care permit un dialog simplu i eficient pentru actualizarea i exploatarea bazei de date. Utilizatorii nu cunosc structura ntregii baze de date, dar pot, prin utilizarea un limbaj apropiat de limbajul natural s acceseze procedurile de actualizare, interogare i afiarea datelor din baza de date. Sistemul informaional are o mult mai mare funcionalitate potenial deoarece prin utilizarea unor instrumente adecvate devine posibil interogarea ad-hoc a coleciei de date de ctre utilizatorul final, consumatorul de informaie, eliminndu-se astfel intermediarul, adic personalul calificat care are menirea de a crea aplicaia informatic. 4. Asigurarea unei redundane minime i controlate a datelor este al doilea obiectiv major al organizrii datelor n baze de date. Aceasta nseamn c se urmrete pe ct posibil ca fiecare dat s apar numai o singur dat n baza de date, indiferent de numrul de utilizatori care o acceseaz . Duplicarea datelor se pstreaz doar pentru a asigura coerena bazei de date, redundana, trebuie redus la minim i meninut sub control. Redundana minim se asigur prin tehnicile de proiectare a bazei de date. 5. Creterea cantitii de informaii disponibile prin stocarea n baza de date a datelor generate de un departament al unei organizaii devine posibil accesarea lor de toi membrii organizaiei. Prin utilizarea bazei de date, aceasta fiind o colecie unic de date mpreun cu legturile logice existente ntre date, utilizatorul poate obine toate datele legate logic de o anumit dat pe care acesta o folosete. Prin integrarea datelor devine posibil accesul la date pentru toi membrii unei organizaii pentru care o anumit date este semnificativ. 6. Coerena i integritatea datelor coerena datelor se realizeaz prin verificarea tuturor dependenelor existente ntre date n sistemul real. Consistena datelor este asigurat prin faptul c actualizarea datelor va fi perceput de fiecare utilizator al bazei de 26

date nu doar de utilizatorii care au realizat actualizarea n plus datorit unicitii datei stocate n baza de date orice actualizare a valorii sale trebuie efectuat o singur date, iar noua valoare va fi disponibil instantaneu pentru toi utilizatorii. Integritatea datelor se refer la validarea i coerena datelor stocate i se realizeaz prin unicitatea datelor, precum i prin validarea datelor introduse sau actualizate n baza de date. Informaia trebuie s satisfac constrngeri statice sau dinamice, locale sau generale. 7. Administrarea i controlul centralizat al datelor administrarea datelor presupune definirea structurii datelor i a modului de stocare a datelor. Administrarea este centralizat i permite o organizare coerent i eficace a informaiei. Fiecare utilizator are propriile cerine care pot intra n conflict cu ale altor utilizatori. Administrarea centralizat are rolul de a optimiza performanele pentru organizaie luat n ansamblu. 8. Partajabilitatea datelor permite ca datele s fie partajate ntre membrii unei organizaii fiecare utilizator va accesa datele ca i cum ar fi singur, fr a ti c n acelai timp un alt utilizator va accesa pentru a le modifica. Prin mecanisme proprii de control baza de date va permite accesul concurent la date meninndu-se n acelai timp coerena datelor. Acest obiectiv face posibil dezvoltarea de noi aplicaii ce necesit poate chiar extinderea, respectiv modificarea aplicaiilor aflate deja n funciune. 9. Securitatea datelor baza de date trebuie s fie protejat pentru distrugeri logice prin actualizri eronate, respectiv distrugeri fizice. Securitatea va fi asigurat prin mecanisme proprii care permit refacerea bazei de date n cazul apariiei unei erori. Prevenirea distrugerii accidentale a datelor, oblig la instituirea unui set de proceduri de autorizare, dar i de confirmare a operaiilor de tergere, adugare, precum i realizarea unor copii de siguran, a unor jurnale de urmrire a actualizrilor i proceduri de refacere a bazei de date, de restaurare a acesteia, n caz de incidente. 10. Confidenialitatea datelor - datele vor fi protejate de accesul neautorizat. Baza de date are mecanisme proprii care permit identificarea i autentificarea utilizatorilor, precum i accesul autorizat i difereniat. Accesul depinde de date i de utilizatori.

27

2.5. Sisteme de gestiune a bazelor de date


n cadrul oricrei organizaii este necesar ca resursa de date s fie bine definit i documentat, bine organizat i controlat, partajabil i relevant pentru deciziile luate n cadrul organizaiei. Sistemul de Gestiune al Bazei de Date (SGBD) reprezint un pachet de programe specializat pentru definirea, crearea, ntreinerea i accesul controlat la baza de date. Obiectivul principal al unui SGBD este de a separa datele de programele de aplicaie. SGBD constituie o interfa ntre utilizatori i baza de date i const din programe care interacioneaz cu programele de aplicaie ale utilizatorului i cu baza de date. Un SGBD are o structur complex i include module program specializate pentru a ndeplini anumite funciuni: - gestionarea bazei de date; - definirea datelor (descrierea datelor); - manipularea datelor (actualizare i interogarea bazei de date); - controlul i securitatea datelor (controlul integritii, accesul concurenial i securitatea datelor); - utilitare. SGBD trebuie s asigure trecerea de la un nivel de abstractizare la altul, adic s poat interpreta comenzile exprimate n termen de schem extern, pentru a le transpune prin intermediul schemei conceptuale n operaii de intrare-ieire la nivel fizic. SGBD gestioneaz la nivel conceptual un dicionar de date. Modulele program de gestiune a bazei de date realizeaz accesul fizic la date n conformitate cu cerinele exprimate printr-o comand. Modulele program de definirea datelor permit traducerea unui limbaj specializat care realizeaz descrierea naturii datelor i a legturii logice dintre date la nivel global conform schemei conceptuale, precum i schemelor externe specifice fiecrei aplicaii program externe. Modulele program de manipulare a datelor permit utilizatorilor prin intermediul unui limbaj specializat s gseasc, s insereze, s modifice, respectiv s elimine datele din baza de date. Modulele program pentru controlul i securitate datelor au rolul de a asigura confidenialitate a i integritatea datelor, precum i rezolvarea problemelor de concuren. Modulele program utilitare permit ntreinerea, manipularea exploatarea corect i facil a bazei de date. Sistemele SGBD evolueaz continuu i trebuie s se extind pentru a rezolva eficient noile cerine ale utilizatorilor.

28

Istoria sistemelor de gestiune a bazelor de date delimiteaz trei generaii care sunt caracterizate de modelele logice folosite: - sisteme de tip ierarhic i de tip reea, - sisteme relaionale; - sisteme avansate, care se reper la sistemele orientate obiect, la cele deductive, multimedia, active, etc. SGBD de tip ierarhic (hierarchical database) i reea (network database) reprezint din punct de vedere istoric primele generaii de SGBD. n modelele ierarhice i reea datele sunt reprezentate la nivel de articol prin legturi ierarhice de tip arbore, respectiv de tip graf. Structurile de date corespunztoare acestor modele pot fi descrise la nivel logic cu ajutorul unei structur de date abstract numit diagram. Diagrama este n acest caz un graf orientat prin care se reprezint tipuri de entiti i legturile funcionale dintre acestea. Sistemele de gestiune a bazelor de date bazate pe modelul de date reea, respectiv cel ierarhic, poart numele de sisteme navigaionale i au fost dezvoltate n perioada 1960-1970. A doua generaie de SGBD o reprezint modelul relaional care trateaz entitile ca relaii. Sistemele de Gestiunea Bazelor de Date Relaionale sunt caracterizate de structuri de date simple i intuitive, de operatori care se aplic relaiilor pentru a defini, cuta, i reactualiza datele. Bazele de date relaionale asigur independena complet a descrierii logice a datelor n termeni de relaii i n descrierea fizic a datelor n termen de fiiere. n prezent exist cteva sute de sisteme SGBD relaionale pentru toate tipurile de calculatoare. Modelul relaional asigur o independen complet n ceea ce privete descrierea logic i fizic a datelor. n plus SGBD relaionale pun includ limbaje specializate pentru descrierea i manipularea datelor. Modelul relaional are capaciti limitate de modelarea datelor. SGBD relaionale nu folosesc obiecte complexe i dinamice, nu realizeaz gestiunea distribuit a datelor i nici gestiunea de cunotine. Conceptul de programare orientat obiect sau programarea calculatoarelor cu ajutorul obiectelor utilizeaz conceptele de obiect i clas de obiecte. Obiectul este definit de o mulime de proprieti numite atribute i are un anumit comportament care n cazul obiectelor folosite n programare se concretizeaz prin metode, care sunt programe care se execut n mod automat atunci cnd n mediul extern sau cel extern al obiectului apare un anumit eveniment. Numim obiect o entitate unic identificabil, care conine att atributele care definesc starea unui obiect din lumea real, ct i aciunile asociate acestuia. Obiectele de acelai tip formeaz o clas de obiecte care reprezint o generalizare a noiunii de tip de dat. Clasa include definiia datelor i a metodelor. Conform principiului ncapsulrii datelor, datele clasei

29

sunt vizibile doar metodelor clasei, iar conform principiului motenirii sau al derivrii o clas poate fi definit folosind o clas existent. Conceptul de ncapsulare presupune c un obiect conine att structura de date, ct i mulimea de operaii care pot fi utilizate pentru al manipula. Ascunderea informaiilor semnific separarea aspectelor externe ale unui obiect de detaliile sale interne, care sunt ascunse de lumea exterioar. n acest mod, detaliile interne ale unui obiect pot fi modificate fr a afecta aplicaiile care l utilizeaz cu condiia ca detaliile externe s rmn neschimbate. Includerea tehnicilor de programare orientat obiect n domeniul bazelor da date a condus la apariia Sistemelor de Gestiune a Bazelor de Date Orientate Obiect, care realizeaz o modelare superioar a informaiei lund n considerare aspectele dinamice i integrarea descrierii structurale i comportamentale. Prin utilizarea principiului programrii orientate obiect n domeniul bazelor de date relaionale a aprut Sistemele de Gestiune a Bazelor de Date Relaionale Orientate Obiect. O relaia este o mulime de nregistrri ce reprezint fapte. Cunotinele sunt aseriuni generale i abstracte asupra faptelor. Pe baza cunotinelor se deduc fapte noi prin deducie plecnd de la fapte cunoscute. Pentru a rezolva problema gestiunii de cunotine au aprut bazele de date deductive, care utiliznd programarea logic gestioneaz cunotine relativ la baze de date. Un Sistem de Baze de Date Deductiv posed un limbaj de definire a datelor care permite definirea structuri predicatelor sub form de relaii i constrngeri de integritate asociate, un limbaj de manipulare a datelor care permite pe lng actualizarea datelor i formularea de cereri, un limbaj de reguli de deducie care s permit construirea predicatelor derivate. Sistemele distribuite reprezint calculatoare interconectate printr-o reea de comunicaie utilizate pentru un scop global. Gestionarea datelor aflate pe calculatoare diferite, eterogene din punctul de vedere al sistemului de operare folosit se realizeaz cu ajutorul unei baze de date distribuite. Bazele de date distribuite sunt sisteme de baze de date cooperante care sunt rezidente pe calculatoare diferite i situate n locuri n locaii diferite. Sistemul de gestiune al unei baze de date distribuite face posibil accesul programelor de aplicaie la date rezidente pe mai multe calculatoare fr ca localizarea datelor s fie cunoscut. Bazele de date distribuite folosesc ca instrument principal pentru prelucrarea datelor distribuite modelul relaional. Integrarea mai multor baze de date autonome i eterogene conform unei scheme globale cu scopul de a realiza accesul uniform i integrat la fiecare din bazele de date componente a condus al conceptul de sistem multibaz de date. Avantajul major al acestui model const n faptul c printr-o singur interogare pot fi accesate date din mai multe baze de date fr a afecta aplicaiile care

30

manipuleaz datele din fiecare baz de date component a sistemului integrat. Fiecare baz de date din sistemul integrat poate folosi propriile limbaje de interogare. Bazele de date permit stocarea unei cantiti foarte mari de informaie, care poate fi folosit n mod pentru elaborarea deciziilor operative, dar i a celor strategice. Pentru elaborarea deciziilor operative se folosesc date aferente activitii curente, date aferente unei perioade scurte de timp. Acestea sunt generate i preluate n sistem n mod dinamic pentru optimizarea procesului de decizie. Prelucrarea acestor date se realizeaz n pe baza unor scenarii de tip procesarea de tranzacii n timp real (OLTP On Line Transaction Processing). Necesitatea analizrii unor cantiti foarte mari de date a condus la conceptul de magazie de date (Data Warehouse), care utilizeaz pentru atingerea acestui scop scenarii de tip procesare analitic n timp real (OLAP On Line Analytical Processing). Baza de date analitic permite realizarea de interogri multidimensionale instantanee, fr a fi necesar ca acestea sa fie definite anterior. Magazia de date este proiectat pentru a facilita analiza multidimensional a datelor i reprezint un sistem care include informaii despre o organizaie structurate n mai multe baze de date, numite n acest caz rafturi de date (Data Marts). Data Warehouse reprezint o baz de date proiectat pentru a facilita analiza datelor fiind orientat spre dimensiuni. Structurile de date multidimensionale sunt vizualizate cel mai bine sub forma unor cuburi de date i a unor cuburi n cadrul cuburilor. Fiecare fa a unui cub reprezint o dimensiune. Bazele de date multidimensionale reprezint o modalitate compact pentru vizualizarea i manipularea elementelor de date care pot avea multe inter-relaii.

2.6. Funciunile sistemului de gestiune al bazei de date


Sistemul de gestiune al bazei de date (SGBD) reprezint o interfa ntre utilizatori i baza de date, care permite crearea, actualizarea i consultarea bazei de date. n 1982 E.F. Codd a enunat opt servicii list completat ulterior cu nc dou servicii pe care trebuie s le furnizeze un SGBD complet: 1. Stocarea, regsirea i reactualizarea datelor reprezint funcia fundamental a unui SGBD. SGDB trebuie sa ascund fa de utilizator detaliile privind implementarea fizic intern. 2. Un catalog sistem accesibil utilizatorului. SGBD va asigura utilizatorului i a SGBD la un catalog sistem integrat (dicionar de date - Data Dictionary) care va conine date despre scheme, utilizatori, aplicaii i reprezint un depozit de informaii care descrie datele din baza de date, date

31

despre date. Catalogul sistem conine descrierea i localizarea datelor, denumirile, tipurile i dimensiunile articolelor de date, denumirile relaiilor, constrngerile de integritate asupra datelor, numele utilizatorilor autorizai care au acces la date, schemele externe, conceptuale i interne, precum i transpunerile dintre ele, statistica utilizrii. Catalogul sistem permite ca informaiile despre date s fie colectate i gestionate central, permite ca definiia datelor s fie accesibil tuturor posibililor utilizatori, comunicarea fiind simplificat deoarece de sensul exact al datelor este stocat. 3. Asigurarea tranzaciilor. Tranzacia reprezint o mulime de aciuni, realizate de un utilizator sau un program de aplicaie prin care se acceseaz sau se modific coninutul bazei de date. Dac o tranzacie eueaz n timpul execuiei baza de date va intra ntr-o stare de incoeren, motiv pentru care este necesar ca baza de date baza de date s fie readus n stare de coeren care a precedat lansarea n execuie a tranzacia. Acesta se realizeaz printr-un mecanism propriu al SGBD care este capabil s anuleze modificrile efectuate asupra bazei de date de tranzacia euat, care nu a fost efectuat n ntregime ci doar parial. 4. Servicii de control concurente. SGBD trebuie s furnizeze un mecanism care s garanteze c baza de date este corect reactualizat atunci cnd mai muli utilizatori efectueaz simultan tranzacii asupra bazei de date. Interogarea concurent trebuie sa fie capabil s asigure simultan tuturor utilizatorilor aceeai informaie, chiar i n cazul reactualizrii datelor i s garanteze c nu vor avea loc interferene atunci cnd mai muli utilizator acceseaz baza de date. 5. Servicii de reconstituire. SGBD trebuie s furnizeze un mecanism propriu de reconstituire a bazei de date n cazul deteriorrii datorit unei cauze interne sau externe. 6. Servicii de autorizare. SGBD trebuie s furnizeze un mecanism prin care s garanteze c doar utilizatorii autorizai pot accesa datele. Termenul de securitate se refer la protecia bazei de date mpotriva accesului ne-autorizat intenionat sau accidental. Fiecare utilizator trebuie sa acceseze doar datele care i sunt necesare i pentru care are definit accesul autorizat. 7. Suport pentru comunicarea datelor. SGBD trebuie sa poat fi integrat ntr-un pachet de programe de comunicaie din care va primi cereri sub form de mesaje i va rspunde n acelai mod. 8. Servicii de integritate. SGBD trebuie sa furnizeze mijloace care s asigure c att datele din baza de date, ct i modificrii acestora respect anumite reguli. Integritatea bazei de date se refer la corectitudinea i coerena datelor stocate i se exprim n termeni de constrngeri, care reprezint reguli de coeren pe care baza de date trebuie s le respecte.

32

9. Servicii pentru promovarea independenei de date. SGBD trebuie s permit ca programele de aplicaie s fie independente de structura real a bazei de date. Pentru realizarea acestui obiectiv se utilizeaz mecanisme de vizualizare, sau sub-scheme externe. 10. Servicii utilitare. Serviciile utilitare asigur suport pentru administrare efectiv a bazei de date. Prin acestea se asigur suport pentru importul i exportul de date, faciliti de monitorizare, analiz statistic, reorganizarea datelor, realocarea spaiului, eliminarea informaiei perimate etc.

2.7. Componentele unui mediu SGBD


Un mediu SGBD este un sistem informatic care folosete baze de date. n structura unui astfel de sistem n se pot delimita cinci componente principale: hardware, software, date, proceduri i persoane. 1. Hardware. Reprezint suportul fizic pentru SGBD i poate fi format de un singur calculator personal, un calculator mainframe, sau chiar o reea de calculatoare. Elementele specifice de hardware depind de cerinele organizaiei i de SGBD utilizat. Fiecare SGBD impune cerine minimale pentru echipamentele fizice necesare funcionrii optime. 2. Software. Componenta software include programele ce formeaz SGBD, programele de aplicaie, sistemul de operare local i atunci cnd este cazul software de reea. Programele de aplicaie se realizeaz folosind limbaje de programare de generaia treia sau chiar a patra, ele nu fac parte din SGBD, dar acceseaz baza de date prin intermediul SGBD. Programele de aplicaie nu au rolul de a gestiona datele ci doar de a prezenta informaia n termeni specifici aplicaiei prin intermediul unei interfee. 3. Date. Reprezint cea mai important component a unui mediu SGBD i include att meta-datele ct i datele propriu-zise. 4. Proceduri. Procedurile includ regulile care guverneaz proiectarea i utilizarea bazei de date. Activitatea utilizatorilor sistemului i a personalul care administreaz baza de date se desfoar conform unor proceduri documentate privind modul de folosire i funcionare a sistemului. Aceste instruciuni se refer la deschiderea i nchiderea unei sesiuni de lucru, utilizarea unor faciliti SGBD i a programelor de aplicaie, activarea i dezactivarea SGBD, arhivarea datelor, utilizarea copiilor de siguran, tratarea defeciunilor hardware,

33

respectiv software, refacerea bazei de date n caz de incident, modificarea i reorganizarea bazei de date. 5. Persoane. n mediul SGBD se identific patru tipuri distincte de persoane implicate: administratorii, proiectanii, programatorii de aplicaie i utilizatorii finali. - Baza de date reprezint o resurs n cadrul organizaiei care este gestionat de doi administratori: administratorul de date i de administratorul bazei de date. Administratorul de date (Data Administrator) gestioneaz resursele de date, fiind responsabil de proiectarea conceptual i logic a bazei de date, de planificarea bazei de date, de realizarea i ntreinerea standardelor, a politicilor i a procedurilor bazei de date. Este persoana sau grupul de persoane responsabil de dezvoltarea bazei de date n direcia susinerii obiectivelor generale ale organizaiei, fiind un foarte bun cunosctor al organizaiei. El determin cerinele organizaiei privind datele, rspunde de proiectarea conceptual i logic a bazei de date, dezvolt modelul general de date conform cu progresul din domeniul tehnologiei informaiei i al afacerilor, creeaz standarde de colectarea datelor, stabilete necesitile i protecia privind accesul la date, gestioneaz dicionarul de date i rspunde de asigurarea unei documentaii complete care va include modelul de date, standardele, politicile, procedurile, utilizarea dicionarului de date i controlul asupra utilizatorilor finali. Administratorul bazei de date (Database Administrator) este persoana sau grupul de persoane responsabil de proiectarea, implementarea i realizarea fizic a bazei de date, de securitatea i controlul integritii, de ntreinerea ntregului sistem. El monitorizeaz performanele sistemului i reorganizarea baze de date, atunci cnd este cazul, definete constrngerile de securitate i integritate, rspunde de selectarea SGBD i de implementarea proiectului de baz de date, de instruirea utilizatorilor i de realizarea copiilor de siguran. Este persoana care trebuie sa cunoasc foarte bine SGBD folosit precum i mediul sistemelor de operare. - Proiectanii bazei de date sunt persoanele implicate n proiectarea logic i cea fizic a bazei de date. Proiectarea conceptual i logic presupune identificarea entitilor, a relaiilor dintre entiti, a constrngerilor asupra datelor ce vor fi stocate n baza de date. Proiectantul de baz de date conceptuale i logice trebuie sa cunoasc amnunit i complet toate datele din cadrul organizaiei, precum i a regulilor interne i externe conform crora funcioneaz organizaia. Aceste reguli descriu principalele caracteristici ale datelor aa cum sunt ele n cadrul organizaiei respective. n etapa de proiectare a bazei de date proiectantul va implica toi presupuii utilizatori. Proiectarea conceptual este independent de detaliile privind implementarea, iar proiectarea logic este presupune utilizarea unui model de date. Proiectantul

34

de hibaz de date fizice preia modelul logic de date i l implementeaz folosind un anumit SGBD, el alege strategia de stocare adecvat innd cont de modul de utilizare. - Programatorii de aplicaie realizeaz i implementeaz programele de aplicaie care confer funcionalitatea cerut de utilizatorii finali. Programele de aplicaie se realizeaz n conformitate cu documentaia elaborat n etapa de proiectare. Fiecare program de aplicaie este realizat fie cu ajutorul unu limbaj extern sau cu unul propriu SGBD i efectueaz o anumit operaie asupra bazei de date: extragere, inserare, reactualizare i tergere de date. - Utilizatorii finali reprezint clienii bazei de date i pot fi grupai n dou categorii: utilizatori simpli i utilizatori specialiti. Utilizatorii simpli nu percep baza de date i nici SGBD ci doar acceseaz baza de date prin intermediul programelor de aplicaie. Utilizatorii specialiti cunosc structura bazei de date i facilitile oferite de SGBD. Ei sunt capabil s efectueze instantaneu interogri ale bazei de date, pentru aceasta folosind fie un limbaj extern, fie unul intern al SGBD pentru a efectua anumite operaii asupra bazei de date, fiind capabili s realizeze chiar propriile programe de aplicaie.

2.8. Limbaje pentru baze de date


n limbajele de programare clasice declaraiile de date i instruciunile executabile aparin limbajului respectiv. Limbajele de programare sunt grupate n generaii de limbaje. Limbajele de programare clasice sunt incluse n generaia a treia de limbaje (3GL 3 Generation Language) fiind limbaje de programare procedurale. Generaia a patra de limbaje de programare (4GL) reprezint limbaje de programare ne-procedurale i au fost create pentru a mrii productivitatea n programarea calculatoarelor folosind instrumente de tip generator (de formulare, de rapoarte, de structuri de interogare, de grafice, de aplicaii) care permit ca n mod interactiv fr a scrie cod program s fie generate n mod automat programe complexe. Limbajele procedurale precizeaz ce date sunt necesare i cum trebuie s fie obinut rezultatul unei aciuni tratnd nregistrrile n mod individual, iar cele neprocedurale precizeaz doar ce trebuie obinut, opernd asupra unor mulimi de nregistrri. n sistemele de gestiune a bazelor de date funciile de declarare, de manipulare i de control al datelor sunt realizate cu ajutorul unor limbaje diferite. Acestea sunt numite sub-limbaje de date deoarece includ doar facilitii specifice funciei pe care o au. Ele pot fi ncorporate ntr-un limbaj gazd de nivel nalt. SGBD asigur suport pentru utilizarea n mod interactiv a acestor limbaje proprii.

35

Limbajul pentru definirea datelor (LDD Data Description Language) este un limbaj specific pentru fiecare SGBD fiind utilizat pentru a specifica schema bazei de date. Este un limbaj descriptiv care permite administratorului bazei de date, respectiv utilizatorului final sa descrie i s defineasc entitile din baza de date precum i relaiile existente ntre entiti, adic s defineasc o schem sau s o modifice. Nu include faciliti pentru manipularea datelor. Prin compilarea instruciunilor limbajului de definirea datelor se obin tabele, care vor fi incluse n catalogul sistem (dicionar de date, sau director de date) i care descriu datele, relaiile, strategiile de acces la date, criteriile de confidenialitate i de validare a datelor. Teoretic pot fi identificate limbaje de definire a datelor aferente fiecrei scheme din arhitectura bazei de date: intern, conceptual i extern. Limbajul pentru manipularea datelor (LMD Data Manipulation Language) este un limbaj care asigur un set de procedee ce permit operaiile de baz pentru manipularea datelor din baza de date. Operaiile executate n cadrul bazei de date presupun existena unui limbaj specializat n care comenzile se exprim prin fraze ce descriu aciuni asupra bazei de date. Manipulrile de date se efectueaz la cele trei niveluri extern, conceptual i intern. O comand va preciza operaia, criteriul de selecie, modul de acces i forma de editare. Operaia poate fi de calcul aritmetic sau logic, deschidere-nchidere, cutare, extragere, adugare, tergere, reactualizare i chiar de editare. Cele mai importante comenzi sunt cele de regsire. Limbajele de manipulare a datelor sunt de dou tipuri: procedurale i neprocedurale (declarative). Setul de instruciuni din cadrul limbajului de manipulare a datelor responsabil de regsirea datelor de numete limbaj de interogare. Limbajul pentru controlul datelor (LCD Data Control Language) este un limbaj specific care include comenzi pentru asigurarea confidenialitii i integritii datelor, pentru salvarea informaiei cu scopul meninerii integritii bazei de date i chiar pentru rezolvarea problemelor de acces concurenial la date.

2.9. Proiectarea bazei de date


Sistemul informaional cuprinde totalitatea resurselor care permit colectarea, administrarea, controlul i propagarea informaiilor n cadrul unei organizaii. Datele reprezint o resurs important din cadrul organizaiei i trebuie gestionat similar celorlalte resurse. Sistemul informatic poate fi realizat cu ajutorul unei baze de date i reprezint cea mai important component a sistemului informaional din cadrul organizaiei, baza de date

36

fiind o component fundamental a sistemului informaional. Sistemul informaional evolueaz n timp, parcurge anumite etape, are un ciclu de via. Etapele din ciclul de via al unui sistem informaional sunt: planificarea, colectarea i analiza cerinelor, proiectarea, realizarea prototipului, implementarea, testarea i ntreinerea operaional. n practic, ns, aceste etape nu sunt rigide. Pot exista ntreptrunderi importante i proiectul poate repeta unele etape nainte de a trece la altele. Aceste etape sunt parcurse i n cazul sistemelor ce folosesc baze de date. n fiecrei etap a ciclului de via sunt desfurate anumite activiti. 1. Planificarea bazei de date, este prima etap a ciclului de via i include activitile care permit realizarea eficient a etapelor din ciclul de via. Planificarea bazei de date trebuie s fie integrat n strategia general a organizaiei stabilind prin aceasta care sunt cerinele informaionale viitoare ale organizaiei pentru a susine planurile de afaceri i scopul organizaiei. Pentru a susine planificarea bazei de date se va realiza un model general de date, care va include datele importante, relaiile dintre acestea, precum i legtura cu componentele funcionale ale organizaiei. n aceast etap vor fi dezvoltate de standarde pentru modul de colectare a datelor i de specificare a formatelor, pentru documentaia necesar, fiind stabilite modalitile de realizare a proiectrii i implementrii. Utilizarea standardelor asigur suport pentru controlul calitii. Cerinele organizaiei cu privire la date fi documentate corespunztor. 2. Definirea sistemului este a etapa n care se identific scopul i limitele noului sistem, inclusiv domeniile de aplicaie i grupurile de utilizatori. La definirea noului sistem va fi precizat n mod necesar i modul n care se va realiza interfaa cu celelalte componente ale sistemului informaional din cadrul organizaiei. 3. Colectarea i analiza cerinelor (Analiza) este etapa de cea mai mare importan n care, folosind diferite metode i tehnici adecvate, vor fi colectate i analizate cerinele informaionale ale organizaiei cu privire baza data. Informaiile necesare proiectrii bazei de date vor fi colectate folosind metoda interviului individual, metoda interviului de grup, metoda chestionarelor, observarea organizaiei n funciune, examinarea documentelor din cadrul organizaiei, toate asociate cu experiena anterioar a echipei de analiz. Fr o analiz adecvat nu se va putea determina ceea ce utilizatorul dorete de la noul sistem, infrastructura tehnic n cadrul creia se va implementa, respectiv care sunt constrngerile impuse datele. O analiz inadecvat, la un moment ulterior, poate fi foarte costisitoare sau poate conduce chiar la ncetarea proiectului. O cerin reprezint o caracteristic care trebuie inclus n noul sistem. Informaiile colectare pentru fiecare domeniu de

37

aplicaie i grup de utilizatori se vor concretiza sun forma unui set de documente care descriu activitile i sub-activitile din diferite puncte de vedere i va include documentaia folosit i elaborat, detaliile privind tranzaciile, precum ordinea de prioritate a cerinelor. Cantitate de date colectat depinde de politica organizaiei i de aria de cuprindere a noului sistem. Colectarea i analiza cerinelor reprezint etapa preliminar a proiectrii conceptuale a bazei de date. Pentru structurarea cerinelor se folosesc tehnici speciale de specificare a cerinelor cum sunt analiza i proiectarea structurat, diagramele de flux de date, proiectarea asistat de calculator. 4. Proiectarea bazei de date (Design-ul) este procesul de realizare a proiectului de baz de date care va trata toate operaiile i obiectivele organizaiei, este etapa n care se va realiza proiectare conceptual, logic i fizic a bazei de date. Se va realiza reprezentarea datelor i a relaiilor dintre ele conform specificaiilor stabilite n etapa de analiz, va fi elaborat un model de date care va fi capabil s accepte efectuarea tuturor tipurilor de tranzacii necesare asupra datelor, se va realiza o structurare adecvat pentru realizarea cerinelor inclusiv cele privind performanele noului sistem i a sistemului informaional n ansamblu. Modelul de date este optim atunci cnd este simplu, expresiv, extensibil, nonredundant, permite validarea structural, permite partajarea datelor, asigur integritatea datelor i ofer posibilitatea unei reprezentri schematice. Unul din scopurile principale a procesului de design este stabilirea de scheme pe baza creia se poate construi baza de date. Proiectarea se poate realiza folosind o metod de tip de jos n sus, de sus n jos, din interior spre exterior, respectiv strategia compus care combin primele dou metode. Metoda de proiectare de jos n sus se folosete n cazul bazelor de date simple i ncepe de la nivelul fundamental al atributelor ce definesc entitile car sunt grupate n relaii care reprezint tipuri de entiti i asociaii ale acestora, dup care prin procesul numit normalizare se identific atributele necesare i dependena funcional a acestora. Strategia de proiectare de tip de sus n jos se folosete pentru baze de date complexe i ncepe cu realizarea unor modele de date care conin entiti i relaii relevante, dup care prin rafinri succesive de sus n jos se identific toate entitile i relaiile existente ntre acestea. Tratarea de tip din interior spre exterior este folosete proiectarea de jos n sus pentru entitile principale, care apoi se extinde pentru a cuprinde toate entitile i relaiile. Sub-etapa de proiectare fizic a bazei de date presupune cunoaterea SGBD care va fi utilizat, motiv pentru pe baza cerinelor curente i viitoare ale organizaiei va fi alea cel mai potrivit SGBD. Alegerea SGBD poate fi considerat o etap din ciclul de via a sistemului informatic, care se poate

38

parcurge n orice faz, dar nainte de proiectarea fizic. n aceast etapa se vor elabora n mod obligatoriu i toate documentaiile aferente. 5. Realizarea prototipului este etapa n care se construiete un model de lucru, care nu are toate caracteristicile cerute i nu acoper ntreaga funcionalitate. Scopul crerii prototipului este de a oferi utilizatorilor posibilitatea de a utiliza un sistem apropiat de cel real pentru identifica caracteristicile incluse deja, de a le verifica cu scopul de a clarifica cerinele utilizatorilor. 6. Implementarea este etapa care include realizarea fizic a bazei de date prin utilizarea limbajului de definire a datelor al SGBD i implementarea programelor de aplicaie realizate n limbajul ales de echipa de proiectare. Tranzaciile din baza de date vor fi efectuate cu ajutorul limbajului de manipularea datelor. n aceast etap pot fi folosite instrumentele de tip interactiv ale SGBD pentru definirea i accesarea datelor. Transferarea datelor din vechiul sistem are o foarte mare importan pentru reducerea timpului necesar pentru implementare. Acest transfer face ca datele preluate s fie corecte chiar dac este necesar conversia datelor n formatul cerul de noul sistem. n etapa de implementare vechiul sistem i noul sistem funcioneaz n paralel, iar echipa de implementare poate reduce semnificativ efortul utilizatorilor prin preluarea datelor pentru noul sistem din vechil sistem cu ajutorul unor proceduri automate. 7. Testarea este etapa n care vor fi detectate eventualele erori ale nolui sistem. Exist un numr de practici pentru asigurarea calitii, pe care le putem aplica proiectului, dar cea mai bun este testarea. Testarea trebuie fcut conform unui plan de testare bine pus la punct, care este esenial att pentru sistem ct i pentru verificarea reaciei utilizatorului. Baza acestui plan trebuie s fie documentarea obinut n timpul etapei de analizare a cerinelor. Acest plan de testare trebuie s defineasc nu doar exact ceea ce trebuie verificat ci i ce rezultate trebuie generate de noul sistem inclusiv de programele de aplicaie. Testarea poate fi fcut de sus n jos, de jos n sus, pe fir, sau la suprasolicitare. Testarea de de sus n jos permite testare la nivel de subsistem i permite detectarea erorilor n fazele iniiale ele proiectului. Testarea de jos n sus pleac de la fiecare modul individual. Testarea pe fir este folosit pentru testarea sistemelor care funcioneaz n timp real, testndu-se rspunsul sistemului la fiecare eveniment. Testele la suprasolicitare au menirea de a testa componentele sistemului n toate situaiile posibile. 8. ntreinerea operaional reprezint procesul de monitorizare i ntreinere a noului sistem. Sunt monitorizate performanele sistemului i se ncorporeaz noi cerine atunci cnd este cazul. Este etapa care se ntinde pe

39

ntreaga durat de via a sistemului. Monitorizarea presupune urmrireqa sistematic a performanelor i nregistrarea eventualelor anomali de funcionare.

2.10. Modelul de date relaional


Modelul relaional a fost propus de E. F. Codd n 1970 care prin articolul Un model relaional de date pentru bnci de date partajate de dimensiuni mari a stabilit cerinele teoretice pentru modelul de date relaional. Modelul relaional este un model formal de organizare conceptual a datelor, destinat reprezentrii legturilor dintre date i bazat pe teoria matematic a relaiilor. Modelul relaional a fost definit cu rigoare matematic deosebit, fiind un mijloc performant de studiu al proprietilor logice ale unui sistem de baze de date. Modelul relaional este orientat spre mulimi n timp ce sistemele ierarhice i reea sunt orientate spre fiiere. n modelul relaional relaiile sunt utilizate pentru a reprezenta informaiile despre obiectele reprezentate n baza de date. Conform modelului relaional datele sunt structurate logic sub form de tabele care definesc relaii. Fiecare relaie are o denumire i este definit prin atribute care sunt coloanele tabelei. O relaie este reprezentat printr-un tabel bidimensional, n care coloanele corespund atributelor, iar liniile corespund nregistrrilor individuale. Ordinea coloanelor (atributelor) este arbitrar, relaia fiind invariant la modificarea ordinii atributelor. Pentru fiecare atribut exist un domeniu de valori posibile. Domeniile pot fi diferite pentru fiecare atribut, dar este posibil ca mai multe atribute s aib acelai domeniu. Conceptul de domeniu permite definirea sensului i a sursei de valori pentru fiecare atribut. Un element unei relaii este numit tuplu, i corespunde unei linii a tabelei. Tuplurile pot aprea n orice ordine fr a modifica semnificaia relaiei fiind formate din valori concrete pentru toate atribute ce definesc relaia. Numim intensitate a relaiei componenta fix, invariant, n timp a unei relaii, format din structura relaiei mpreun cu domeniile de valori pentru atribute i eventualele restricii asupra valorilor posibile. Numim extensie (stare) a relaiei partea care se modific n timp, adic tuplurile. Gradul relaiei reprezint numrul de coloane (atribute), iar cardinalitatea relaiei numrul de linii (tupluri) pe care le are tabela ce definete relaia. Gradul relaiei este o parte a intensitii relaiei. Cardinalitatea exprim starea relaiei la un moment dat i se modific prin adugarea, respectiv tergerea de tupluri. Spunem c o relaie este normalizat dac este structurat adecvat. Baza de date relaional este o mulime de relaii normalizate. Numim

40

schem a relaiei denumirea relaiei urmat de o mulime de perechi atribut, domeniu. Un domeniu este o mulime de valori care poate fi definit fie enumernd elementele componente, fie definind o proprietate distinct a domeniului valorilor. Fie atributele A1, A2, . . ., An i domeniile finite D1, D2, . . ., Dn, nu neaprat disjuncte. Mulimea {A1:D1, A2:D2, . . ., An:Dn} reprezint schema de relaie. Numim tuplu, sau n-tuplu, un element (V1,V2, . . .,Vn) al produsului cartezian D1 D2 . . . Dn al domeniilor D1, D2, . . ., Dn, unde V1 D1, , Vn Dn. O relaie R pe mulimile D1, D2, . . ., Dn este o submulime a produsului cartezian D1 D2 . . . Dn, adic o mulime de tupluri. Mulimea numelor atributelor corespunztoare unei relaii o numim schem relaional i o notm cu R (A1, A2, . . ., An). Putem reprezint o relaie printr-un tabel bidimensional n care fiecare linie corespunde unui tuplu, iar fiecare coloan unui domeniu din produsul cartezian, de fapt unui atribut. Atunci cnd se reprezint o relaie sub forma unui tabel n care antetul coloanelor sunt nscrise numele atributelor, iar fiecare linie reprezint tuplurile (V1,V2, . . .,Vn) n care fiecare valoare este luat din domeniul corespunztor. Numele atributului exprim semnificaia valorilor din calcul coloanei respective. Numrul atributelor definete gradul relaiei, iar numrul de tupluri din relaie definete cardinalitatea relaiei. O relaie are urmtoarele proprieti: are o denumire care identific relaia n mod unic; fiecare element (celul) al relaiei conine exact o valoarea atomic (singular); fiecare atribut are o denumire unic n cadrul relaiei; toate valorile unui tribut aparin domeniului de valori al atributului; ordinea atributelor nu este semnificativ; fiecare tuplu este distinct; nu exist tupliri duplicate; ordinea tuplurilor nu este semnificativ, dar poate optimiza accesul individual la fiecare tuplu. Atunci cnd inserm tupluri ntr-o relaie, este posibil ca un atribut s fie necunoscut sau nedefinit. Pentru a reprezenta acest tip de atribut a fost introdus o valoare convenional n relaie, i anume valoarea null, care reprezint o modalitate de a trata datele incomplete sau deosebite. Exist sistemele relaionale care nu accept conceptul de null, care nu are corespondent n logica boolean, din care face parte calculul predicatelor folosit pentru modelul relaional.

41

Numim relaie de baz o relaie caracterizat printr-o denumire, care corespunde unei entiti din schema conceptual, ale crei tupluri sunt memorate n baza de date. O vizualizare este rezultatul dinamic al mai multor operaii relaionale, care acioneaz asupra relaiilor de baz pentru a realiza o alt relaie. Numim relaie virtual o vizualizare. Spunem c un tabel este de tip virtual (view, vizualizare, vedere), dac reprezint o relaie virtual. Relaia virtual nu exist fizic ca tabel n baza de date, ci doar ca definiie a relaiei, deoarece datele pe care le conine nu sunt n realitate memorate, ele fiind incluse n alte tabele reale care reprezint relaii reale. Tabelul de tip view (vizualizare, filtru, relaie virtual) reprezint o filtrare a unui tabel iniial, sau mai multor tabele legate ntre ele, necesar unei anumite abordri, unei anumite aplicaii. Utilizarea vizualizrilor asigur securitatea tabelelor iniiale i permite prezentarea informaiei n conformitate cu drepturile de acces al fiecrui utilizator, asigur accesul la date personalizat pentru fiecare utilizator i n plus simplific operaiile complexe asupra relaiilor de baz. Deoarece vizualizrile sunt relaii virtuale toate reactualizrile efectuate asupra relaiilor de baz care sunt folosite la definirea relaiilor virtuale trebuie s fie imediat reflectate imediat de toate vizualizrile afectate. Pentru o relaie trebuie s fie posibil identificarea n mod unic a fiecrui tuplu prin valorile atributelor ce definesc relaia. Numim supercheie un atribut sau o mulime de atribute care identific n mod unic fiecare tuplu relaiei. Numim cheie candidat o supercheie pentru care nici o submulime de atribute nu este supercheie. Cheia candidat are dou proprieti: unicitatea i ireductibilitatea. Numim cheie primar cheia candidat selectat pentru a identifica n mod unic tuplurile din cadrul relaiei. Cheile candidat care nu sunt cheie principal se numesc chei alternative. Numim cheie strin un atribut sau o mulime de atribute care sunt identice cu cele din cheia candidat ale unei alte relaii. Model relaional este caracterizat de trei elemente: structura relaional a datelor; operatorii de tip relaional folosii n model; regulile de integritate care se aplic asupra cheilor n model. n anul 1985, E.F. Codd a publicat un set de 13 reguli de fidelitate pe baza crora se apreciaz dac un sistem de gestiune de baze de date poate fi considerat relaional. Majoritatea sistemelor de gestiune de baze de date considerate ca fiind de tip relaional nu respect absolut toate regulile definite de Codd, mai mult, n prezent, lista este reformulat i cuprinde 100 de regulii. Regula 0 regula gestionrii datelor: Un SGBD considerat ca fiind relaional trebuie s fie capabil s gestioneze o baz de date prin posibilitile sale relaionale. Aceasta nseamn c SGBD nu va folosi pentru definirea i

42

manipularea datelor operaii care nu sunt de tip relaional. Practic, majoritatea implementrile existente de SGBD nu respect aceast regul. Regula 1 regula reprezentrii datelor: ntr-o baz de date relaional, informaia este reprezentat explicit la nivel logic sub forma unor tabele ce poart numele de relaii. Este regula cea mai important i conform lui E.F. Codd i n cazul n care un SGBD care nu respect aceast regul, nu poate fi considerat relaional. Referirea la nivelul logic precizeaz c elemente de construcii logice, cum sunt indeci, nu au obligatoriu o reprezentare sub form de tabele. Regula 2 regula accesului garantat la date: Fiecare valoare de dat (valoare atomic) dintr-o baz de date trebuie s poat fi adresat n mod logic printr-o combinaie format din numele relaiei, valoarea cheii primare i numele atributului. Se poate regsi orice valoare aparinnd oricrui atribut al unei relaii, dac sunt specificate numele relaiei, numele atributului i valoarea cheii primare. Regula 3 regula reprezentrii informaiei necunoscute (tratarea sistematic a valorilor null): Un sistem relaional trebuie s permit utilizatorului definirea unui tip de date numit null pentru reprezentarea unei informaii necunoscute la momentul respectiv indiferent de tipul de dat. ntr-un SGBD relaional trebuie s putem face diferena ntre valoarea zero, un ir vid de caractere i o valoare necunoscut. Regula 4 regula dicionarelor de date (catalog dinamic on-line, bazat pe modelul relaional): Asupra descrierii bazelor de date (informaii relative la relaii, vizualizri, indeci, etc) trebuie s se poat aplica aceleai operaii ca i asupra datelor din baza de date. Descrierea bazei de date este reprezentat la nivel logic sub forma unor tabele care pot fi accesate n acelai mod ca i datele efective. Regula 5 regula limbajului de interogare (sub-limbaje de date cuprinztoare): Trebuie s existe cel puin un limbaj care s permit: (1) definirea datelor, (2) definirea vizualizrilor, (3) manipularea datelor (interactiv sau prin intermediul programului), (4) constrngerile de integritate, (5) autorizarea, (6) limitele tranzaciilor (nceput, execuie, reluare). n general, toate implementrile SQL respect aceast regul. Limbajul permite utilizatorilor s defineasc relaii i vizualizri, s regseasc informaia i s o poat actualiza, s verifice i s corecteze datele de intrare etc. Regula 6 regula de reactualizare a vizualizrii: Toate vizualizrile care sunt teoretic reactualizabile pot fi reactualizate de sistem. Un SGBD trebuie s poat determina dac o vizualizare poate fi actualizat i s stocheze rezultatul interogrii ntr-un dicionar de tipul unui catalog de sistem. Trebuie s existe un mecanism prin care s se poat determina dac anumite vizualizri

43

pot fi actualizate sau nu. Majoritatea implementrilor SQL stabilesc aceasta, n funcie de variantele instruciunii de selecie utilizate. Regula 7 regula limbajului de nivel nalt (operaiile de inserare, reactualizare i tergere de nivel nalt): Regulile de manipulare asupra unei relaii luat ca ntreg sunt valabile att pentru operaiile de regsire a datelor, ct i asupra operaiilor de inserare, actualizare i tergere a datelor. Un SGBD relaional nu trebuie s oblige utilizatorul s caute ntr-o relaie, tuplu cu tuplu, pentru a regsi informaia dorit. Operaiile de manipulare a datelor pot fi aplicate att n mod interactiv ct i prin program, ntr-un limbaj gazd. Regula 8 regula independenei fizice a datelor: Programele de aplicaie i activitile utilizatorilor nu depind de modul de stocare a datelor sau de modul de acces la date. ntr-un SGBD relaional trebuie s se separe aspectul fizic al datelor (stocare sau acces la date) de aspectul logic al datelor. Regula 9 regula independenei logice a datelor: Programele de aplicaie i activitile utilizatorilor trebuie s fie transparente la modificrile de orice tip efectuate asupra datelor. Orice modificare efectuat asupra unei relaii, nu trebuie s afecteze operaiile de manipulare a datelor, programele de aplicaie i mecanismele de interogare direct nu sunt afectate de modificrile fcute asupra datelor. Regula 10 regula independenei datelor din punct de vedere al integritii: Constrngerile de integritate specifice unei baze de date relaionale nu vor fi definite programele de aplicaie ci de sub-limbajul relaional de date, urmnd a fi memorate n catalogul sistem. (Regulile de integritate trebuie s fie definite ntr-un sub-limbaj relaional, nu n programul de aplicaie). Limbajul SQL permite definirea de restricii privind integritatea datelor i stocarea lor n catalogul de sistem prin aceasta asigurndu-se controlul centralizat asupra constrngerilor. Regula 11 regula independenei datelor din punct de vedere al distribuirii: Sub-limbajul de manipulare a datelor trebuie s permit utilizarea acelorai programe de aplicaie i interogri (s fie invariante din punct de vedere logic)pentru a accesa date centralizate sau distribuite (Distribuirea datelor pe mai multe calculatoare dintr-o reea de comunicaii de date, nu trebuie s afecteze programele de aplicaie i interogrile, dac i ori de cte ori datele sunt centralizate sau distribuite fizic). Independena de distribuie presupune ca un program de aplicaie care acceseaz sistemul SGBD pe un singur calculator trebuie s funcioneze fr modificri i ntr-o reea chiar dac datele sunt mutate de pe un calculator pe altul, utilizatorul percepnd datele fr a cunoate locul n care sunt stocate. Programele de aplicaie trebuie s funcioneze fr modific i ntr-o reea, chiar dac datele sunt transferate de pe un calculator pe altul.

44

Regula 12 regula versiunii procedurale a SGBD (nonsubversiune): Orice component procedural a unui SGBD trebuie s respecte aceleai reguli de integritate ca i componenta relaional (orice limbaj de nivel inferior trebuie s respecte aceleai reguli de integritate exprimate n limbajul relaional de nivel nalt). Cele 13 reguli pot fi grupate n cinci domenii de funcionalitate: - reguli fundamentale (regula 0 i regula 12); - reguli structurale (regula 1 i regula 6); - reguli de integritate (regula 3 i regula 10); - reguli de manipulare a datelor (regula 2, regula 4, regula 5, regula 7); - reguli privind independena de date (regula 8, regula 9 i regula 11). Un SGBD este minimal relaional dac datele din cadrul bazei de date sunt reprezentate prin valori n tabele, nu exist pointeri observabili de ctre utilizatori, iar sistemul suport operatorii relaionali de proiecie, selecie i compunere natural, fr limitri impuse din considerente interne. Un SGBD este complet relaional dac este minimal relaional i, n plus, sistemul suport restriciile de integritate de baz (unicitatea cheii primare, constrngerile de referin, integritatea entitii) i precum i toate operaiile de baz ale algebrei relaionale. Un SGBD relaional ndeplinete funciile unui SGBD, cu anumite particulariti care decurg din concepia de organizare a datelor, respectiv din modelul relaional. Fiecare SGBD relaional implementeaz modelul relaional ntr-o manier proprie care l difereniaz de restul sistemelor relaionale. Caracterizarea unui SGBD relaional se poate realiza la nivelul clasei de SGBD relaionale, n sensul caracterizrii globale, unitare n raport cu celelalte tipuri de SGBD, sau la nivelul unui SGBD relaional individual n sensul caracterizrii particularitilor sale, n raport cu alte SGBD de tip relaional. Realizarea funciilor unui SGBD relaional se face cu ajutorul unor instrumentele i mecanisme de lucru specifice de tip relaional, care le separ de sistemele considerate ca fiind nerelaionale: - un limbaj relaional pentru descrierea datelor la nivel fizic, logic i conceptual; - un limbaj relaional pentru manipularea datelor; - mecanisme pentru controlul integritii semantice a datelor; - mecanisme pentru optimizarea cererilor de date; - mecanisme pentru asigurarea coerenei datelor n condiiile accesului la date;

45

- utilitare pentru generarea de formulare i rapoarte, utilitare pentru generarea de aplicaii, utilitare pentru generarea unor statistici referitoare la starea i activitatea bazei de date, etc. Un obiectiv important a proiectrii unei baze de date de tip relaional l reprezint gruparea atributelor n relaii astfel nct redundana datelor s fie minim. Relaiile care conin date redundante pot crea probleme, denumite anomalii de reactualizare, care clasificate n: anomalii de tergere constau n faptul c anumite date care urmeaz s fie terse, fac parte din tupluri n care se gsesc i alte date care mai sunt necesare n continuare, ori tergerea fcndu-se la nivelul tuplului, acestea se pierd; anomalii de inserare (adugare) constau n faptul c anumite date care urmeaz s fie adugate fac parte din tupluri incomplete (pentru care nu se cunosc toate datele), ceea ce face ca acestea s nu poat fi adugate; anomalii de modificare rezult din faptul c este dificil de modificat o valoare a unui atribut atunci cnd ea apare n mai multe tupluri ale relaiei. Spunem c un atribut B al unei relaii R depinde funcional de un alt atribut A, atunci cnd fiecrei valori a atributului A i corespunde exact o anumit valoare atributului B (A B). Dependena funcional este o proprietate a semnificaiei sau a semanticii atributelor. Semantica indic modul n care atributele sunt legate unele de altele i specific dependenele funcionale ale acestora. Dependena funcional este specificat ca o constrngere ntre atribute. Dac atributul B depinde funcional de atributul A, spunem c atributul A este determinatul atributului B. Spunem c o dependen funcional este total sau complet dac cele dou atribute au o dependen funcional n ambele sensuri (A B i B A). Pentru trei atribute A, B i C, n care A B i B C spunem c C este dependent tranzitiv de A prin intermediul atributului B, dac avem i A C. n acest caz spunem c exist o dependen tranzitiv. Eliminarea acestor anomalii se realizeaz cu ajutorul operaiei numite normalizare, care este o tehnic formal care se bazeaz pe cheile primare, respectiv cheile candidat ale relaiilor i pe dependenele funcionale. Tehnica include o mulime de reguli care pot fi utilizate pentru testarea relaiilor individuale. Dac o anumit cerin nu este ndeplinit pentru o anumit relaie, atunci relaia n cauz va fi descompus n relaii care satisfac n mod individual cerinele normalizrii. Normalizarea presupune parcurgerea unei succesiuni de pai, fiecare pas corespunznd unei forme normale. Prin

46

parcurgerea etapelor de normalizare relaiile devin progresiv mai restrictive ca format i mai puin vulnerabile la anomaliile de actualizare. Procesul de normalizare a relaiilor se realizeaz n mai muli pai, ncepnd cu forma normal unu (1NF) i ajungnd la forma normal cinci (5NF). Pentru modelul relaional doar prima form normal (1NF) este de importan critic, celelalte forme normale fiind opionale. Pentru a nltura aceste anomalii, E.F. Codd a stabilit iniial trei forme normale pentru relaii i a introdus procesul de normalizare care se bazeaz pe noiunea de dependen funcional ca relaie ntre atributele unei entiti care are un caracter invariant. Teoria normalizrii se ocup cu mbuntirea succesiv a schemei conceptuale, fiind satisfcute, n acelai timp, urmtoarele condiii: conservarea datelor, adic n schema conceptual final s existe toate datele din cadrul schemei iniiale; conservarea dependenelor dintre date, adic s se pstreze tipurile de relaii dintre entiti; descompunerea minimal a relaiilor iniiale, adic n schema conceptual final nici o relaie nu trebuie s fie coninut ntr-alta. O relaie este n forma normal unu (1NF), dac i numai dac toate atributele ei conin numai valori atomice, adic o sigur valoare i numai una. n plus, un tuplu nu trebuie s conin atribute sau grupuri de atribute repetitive. Este forma de baz a relaiilor, care figureaz ca cerin minimal la majoritatea sistemelor de gestiune a bazelor de date de tip relaional. O relaie este n a doua form normal (2NF), dac este n forma normal unu i oricare dintre atributele non-cheie este dependent funcional complet de cheia primar a relaiei. O relaie este n a treia form normal (3NF), dac se gsete n forma normal doi i toate atributele non-cheie sunt dependente tranzitiv de cheia primar. n afara primelor trei forme normale au fost introduse i formele normale: forma normal Boyce Codd (BCNF), a patra form normal (4NF) i a cincia form normal (5NF) care conduc la diminuarea redundanei n baza de date. Trecerea de la forma 3FN la 4FN i 5FN se face opernd asupra cheilor compuse ntre ale cror atribute apar relaii care genereaz dependene ce nu sunt funcionale, numite dependene multi-valoare. O relaie este n forma normal Boyce Codd (BCNF), dac fiecare determinant este o cheie candidat. A patra form normal (4NF) elimin redundanele datorate relaiilor de tip n:m, adic a dependenelor multiple. A cincia form normal (5NF) elimin dependenele multiple de tip ciclic, avnd ca rezultat o descompunerea a relaiilor de tip uniune fr

47

pierderi, din relaiile rezultate n urma descompunerii putnd fi reconstituit relaia iniial. Dependena de tip uniune fr pierderi este o proprietate a operaiei de descompunere, care garanteaz c nu sunt introduse linii false atunci cnd relaiile rezultare n urma descompunerii sunt reunite printr-o operaie de uniune natural.

Operatorii modelului relaional Operatorii modelului relaional definesc operaiile care pot fi efectuate asupra relaiilor, pentru realizarea funciilor de prelucrare asupra datelor din baza de date. Modelul relaional folosete operatori relaie din algebra relaional i calculul relaional. Algebra relaional i calculul relaional sunt limbaje formale utilizate pentru bazele de date relaionale ca suport pentru limbajul de manipulare a datelor, de nivel nalt. Algebra relaional a fost introdus de E.F. Codd n 1971 ca o mulime de operaii formale n care operanii i rezultatul sunt relaii i care acioneaz asupra uneia sau a mai multor relaii pentru a defini o nou relaie, fr a modifica relaiile iniiale. Cei cinci operatorii fundamentali ai algebrei relaionale sunt fie operatori folosii pentru operaiile de regsire: selecia (sau restricia), proiecia, produsul cartezian, reuniunea i diferena, i ali trei operatori pentru operaiile de uniune, intersecie i mprire, adic operatori tradiionali pe mulimi (UNION, INTERSECT, PRODUCT, DIFFERENCE) i operatori relaionali speciali (PROJECT, SELECT, JOIN, DIVISION). Operatorii de selecie i proiecie sunt unari, opernd asupra unei singure relaii, iar ceilali sunt operatori binari, acionnd asupra unei perechi de relaii. n algebra relaional se specific n mod explicit o anumit ordine pentru evaluarea oricrei expresii, ceea ce implic o anumit strategie de evaluare a interogrii bazei de date. n calculul relaional o interogare precizeaz ce va fi extras din baza de date fr a se preciza modul de evaluare a unei interogri. Calculul relaional este o adaptare a calculului predicatelor din logica simbolic aplicat pentru interogarea bazelor de date. n logica simbolic, un predicat este o funcie de mai multe variabile, care are o valoare de adevr. nlocuind variabile cu valori se obine o expresie numit propoziie, care poate fi adevrat sau fals. Variabilele iau valori dintr-un domeniu dat. Calculul relaional se prezint sub dou forme: orientat spre tupluri i orientat spre domenii. Pe baza unor predicate iniiale, prin aplicarea unor operatori ai calculului cu predicate (conjuncia, disfuncia, negaia, cuantificatorul existenial i cuantificatorul universal) se pot defini noi predicate, noi relaii.

48

J.D. Ullmann a demonstrat echivalena dintre algebra relaional i calculul relaional. Motiv pentru care orice relaie posibil de definit n algebra relaional poate fi definit i n cadrul calculului relaional, i reciproc.

49

Integritatea referenial Constrngerile de domeniu sunt restricii care se aplic asupra mulimi de valori permise pentru atributele relaiilor. Regulile de integritate sunt constrngeri sau restricii ce se aplic tuturor instanelor din baza de date, adic aseriuni pe care datele coninute n baza trebuie s le satisfac i prin care se asigur corectitudinea datelor. Se face distincie ntre regulile structurale, care sunt inerente modelrii datelor i regulile de funcionare (comportament), care sunt specifice unei aplicaii particulare. Exist trei tipuri de constrngeri structurale (de cheie, de referin, de entitate) ce constituie mulimea minimal de reguli de integritate pe care trebuie s le respecte un SGBD relaional i care sunt definite n raport cu noiunea de cheie a unei relaii. Integritatea entitilor impune ca ntr-o relaie de baz (care corespunde unei entiti n schema conceptual) nici un atribut al unei chei primare nu poate fi null. Conform reguli de integritate refereniale dac o relaie are o cheie extern atunci orice valoare a cheii externe va coincide cu valoarea unei chei candidat a unui tuplu n relaia de baz a acesteia sau este o valoare null. Sunt formulate trei reguli de integritate structural: - unicitatea cheii: cheia primar trebuie s fie unic i minimal; - integritatea entitii: atributele cheii primare trebuie s fie diferite de valoarea null; - integritatea referirii: o cheie extern trebuie ori s fie null n ntregime, ori s corespund la o valoare a cheii primare asociate.

2.11. ntrebri teoretice de auto-evaluare


1. Explicai: a. Conceptul de baz de date b. Noiunea de model de date c. Modelul Entitate-Relaie d. Tipurile de chei n cadrul modelrii bazei de date e. Obiectivele datelor n baze de date f. Sistemele de gestiune a bazelor de date. Obiective g. Funciunile sitemelor de gestiune a bazelor de date h. Componentele unui mediu SGBD 2. Analizai diferenele dintre limbajele pentru definirea datelor, limbajele pentru manipularea datelor i limbajele pentru controlul datelor.

50

3. Prezentai principalele concepte din cadrul proiectrii bazelor de date. 4. Modelul de date relaional. Baza de date relional. 5. Detaliai cele 13 reguli ale lui Codd. 6. Operatorii modelului relaional. Integritate referenial.

51

52

CAP.3. MICROSOFT ACCESS 3.1. Rezumatul capitolului


Capitolul curent i propune deprinderea noiunilor i operaiilor specifice pentru crearea bazelor de date Access. Datele sunt salvate n tabele. Acestea pot fi actualizate sau consultate prin intermediul cererilor (interogrilor) i/sau a rapoartelor. Pentru a crea o interfa grafic cu utilizatorul (GUI Graphical User Interface) este necesar crearea formularelor. Aciunile pe care Access le realizeaz ca rspuns la un anumit eveniment constituie o definiie structurat salvat sub forma unui macro. Procedurile definite de utilizator scrise n limbajul de programare Visual Basic poart numele de module. Un obiect care conine un obiect HTML i alte fiiere suport n vederea furnizrii accesului la date prin intermediul unui browser Internet poart numele de Pages (pagini web).

3.2. Noiuni generale privind bazele de date ACCESS


Sistemul de gestiune a bazelor de date (SGBD) Microsoft Access face parte din pachetul de aplicaii Microsoft Office exploatabil sub sistemele de operare Windows 2000 i Windows XP. Microsoft Access are caracteristicile specifice unui sistem de gestiune a bazelor de date relaionale; care reprezint totodat un instrument complex de dezvoltare a aplicaiilor de baze de date. Microsoft Access include facilitile oferite de sistemul de operare Microsoft Windows; n plus, permite i faciliti de tipul drag and drop. Microsoft Access este compatibil cu tehnicile de legare i ncapsulare din tehnologia OLE Microsoft. Caracteristicile definitorii ale SGBD Access sunt urmtoarele: 1. Posibilitatea crerii unei baze de date care poate fi utilizat de ctre un utilizator sau mai muli utilizatori n mod partajat; 2. Interogarea bazei de date se poate realiza n mod grafic prin interfaa QBE (Query By Example), sau prin limbajul SQL (Standard Query Language); 3. Automatizarea unor activiti/aciuni prin macro-comenzi sau prin aplicai program n limbajul VBA; 4. Realizarea importului/exportului de date ctre alte aplicaii ale pachetului Microsoft Office sau alte SGBD de tip relaional; 5. Interfaa utilizator este uor de folosit i respect principiile de utilizare caracteristice tuturor aplicaiilor pachetului MS Office; 6. Asisten n dezvoltarea aplicaiilor i utilizarea bazei de date;

53

7. Existena componentei Help i a facilitilor de ajutor de tip contextual; 8. Instrumente de lucru interactiv pe baze model de tip Wizard pentru a ajuta utilizatorii n dezvoltarea de aplicaii; O baz de date ACCESS este baz de date relaional orientat spre obiecte, o colecie de informaii memorate ntr-un fiier avnd extensia .MDB sau .MDE, coninnd diferitele obiecte. Prin utilizarea formatului .MDE pentru baza de date ACCESS devine imposibil modificarea obiectelor bazei de date i este ascuns codul program Visual Basic. Obiecte pe care le poate conine o baz de date ACCESS sunt:

Tabelele
Tabelele conin datele propriu-zise corespunztoare entitilor din baza de date, organizate sub forma unei matrice n care coloane reprezint atribute (cmpuri), iar liniile apariiile, realizrile entitii (nregistrri). O nregistrare este o linie dintr-un tabel, n care fiecare cmp conine o valoare concret dintr-un domeniu de valori i conine informaii care identific o anumit realizare concret a entitii; persoan, loc sau obiect. Un cmp este o informaie individual din componena unei nregistrri, iar fiecare coloan din tabelul Access reprezint un cmp diferit. O baz de date Microsoft Access poate cuprinde cel mult 32.768 de tabele, dintre care 254 pot fi deschise simultan, dac exist suficiente resurse disponibile. Tabelele unei baze de date au unul sau mai multe cmpuri ce identific n mod unic fiecare nregistrare din acel tabel i formeaz cheia primar pentru tabela respectiv. Cmpurile din tabele ACCESS sunt definite ca fiind de un anumit tip de dat cu care se va ncrca fiecare cmp: - AutoNumber nu poate fi modificat manual. Dei este incrementat secvenial n mod implicit, se poate stabili i o incrementare aleatoare; - Text este destinat informaiei de tip ir de caractere (maxim 255 caractere); - Lookup permite stocarea unei valori, dar afieaz textul ce nsoete valoarea respectiv. Acest tip de cmp poate fi legat de fapt de un alt tabel sau interogare, de unde i extrage informaiile pe care le afieaz sub forma unui combo box; - Number are mai multe sub-tipuri, determinate de proprietatea field size: Byte cu interval valoric ntre 0 i 255; Integer cu interval valoric ntre32.768 i 32.767; Long Integer cu interval valoric ntre 2.147.483.648 i 2.147.483.647;

54

38 38 Single cu interval valoric ntre3,4*10 i 3,4*10 ; 308 308 Double cu interval valoric ntre1,797*10 i 1,797*10 ; Decimal cu interval valoric ntre 22337203685477.5808 i 922337203685477.5808; - Memo este utilizat pentru text de lungime ce poate depi 255 de caractere; - Obiecte OLE este tot un cmp pentru obiecte predefinite; - Date/Time conine informaii de dat calendaristic i/sau timp; - Yes/No conine date de tip logic una din cele dou stri: yes/no, on/off, true/false. Interogrile Interogrile sunt obiecte virtuale de tip tabel, adic vizualizri, care nu au corespondent fizic, fiind definite cu ajutorul tabelelor definite deja n baza de date. Tabelele virtuale definite cu ajutorul interogrilor permit efectuarea: seleciilor i sortrilor n tabele; calculelor simple i analizelor ncruciate; aciunilor (adugarea, tergerea, actualizarea nregistrrilor); operaiilor SQL.

Formularele
Formularele sunt obiecte folosite pentru a consulta sau actualiza datele dintr-un tabel sau o structur de interogare.

Rapoartele
Rapoartele sunt obiecte folosite pentru a sintetiza datele stocate ntr-o tabela real sau virtual i a oferi un rezultat tiprit al informaiilor din baza de date un raport ACCES, de la cea mai simpl list a unui tabel pn la rapoartele cele mai complexe ce conin regrupri de nregistrri i calcule.

Paginile de prezentare
Paginile de prezentare reprezint obiecte specifice ACCESS care permit afiarea ntr-un format accesibil care permite transmiterea rapid a datelor prin Internet sau Intranet.

55

Macro-urile
Macro-comenzile ACCESS reprezint o modalitate optim de acces la date, care permit automatizarea mai multor sarcini folosind un limbaj specific. Pentru a rezolva o sarcin mai complex se poate construi un macro (format dintr-o mulime de aciuni) sau o procedur (format dintr-o succesiune de instruciuni n Visual Basic).

Modulele
Modulele program conin o parte a codului VBA al aplicaiei, i anume declaraiile de variabile i constante, funciile i procedurile globale ale ntregii aplicaii. VBA reprezint un mediu de programare orientat obiect. Structura unui obiect: Un obiect este o entitate autonom ce prezint caracteristici (proprieti: mrime, culoare, valoare etc.) i comportamente (metode) proprii. Unele obiecte au o reprezentare vizual (Formular, Raport, etc.) n timp ce altele nu sunt accesibile dect n cod VBA (DBEngine, Container etc.) Marea majoritate a obiectelor vizuale au posibilitatea de a reaciona la evenimente (deschidere, actualizare etc.). Programarea VBA permite declanarea evenimentelor, comportamentelor specifice asupra obiectelor prin intermediul codului program: metode, proceduri i funcii. Astfel VBA permite o mare flexibilitate de funcionare i o ntreinere mai uoar. Evenimentul reprezint aciunea utilizatorului sau a sistemului asupra unui obiect ceea ce declaneaz execuia codului program corespunztor. Metoda const n codul program predefinit ce se raporteaz la un tip de obiect i care se execut n momentul apariiei unui eveniment. Procedura este alctuit dintr-un set de instruciuni (un modul program) ce nu returneaz nici o valoare ci execut o anumit aciune. Funcia const dintr-un set de instruciuni (un modul program) care n urma execuiei returneaz o valoare de un anumit tip.

56

OBIECT

COMPORTAMENTE
COD DATE

CARACTERISTICI
LISTA DE EVENIMENTE

METODE (PREDEFINITE)

PROPRIETI

3.2 . Ti pu ri de

fiiere n

PROCEDURI I FUNCII

ACCESS

Micrsosoft Access folosete mai multe tipuri de fiiere: fiierul .MDB este fiierul Database/Baz de date propriu-zis. Aici se regsete ntreg coninutul bazei de date, i anume, datele (Tabele), legturi (Relations/Relaii), interfaa vizual (Formulare i Rapoarte) i codul (Interogri, Macro-uri i Module); fiierul .ADP este un proiect Access ce permite crearea unei aplicaii client-server cu SQL Server 2000. fiierul .MDE este un fiier ce poate fi generat pornind de la un fiier .MDB i care nu mai permite utilizatorului nici s modifice formularele i rapoartele nici s vad codul. fiierul .MDW (system.mdw) este o baz de date Work Group ce stocheaz informaiile de siguran despre utilizatori i grupe, la fel ca i despre opiunile Access. fiierul .MDA este o baz de date Biblioteca/Library i poate avea un cod ce poate fi pus la dispoziia altor baze de date, la fel ca i complemente pentru a extinde posibilitile ACCESS. fiierul .LBD conine informaii despre securizarea fiierului i este administrat automat de Access.

3.3. Lucru cu ACCESS


Ca majoritatea programelor Windows, Access poate fi lansat n execuie prin navigarea meniului butonului Start. Pentru a porni, click pe butonul Start > meniul All Programs >meniul MS Office > Microsoft Access . Meniul MS Office este artat mai jos.

57

Access se deschide pe ecran: Bara de instrumente Access

Panoul cu sarcini

Utilizarea barei meniu Bara meniu este similara celorlalte programe Microsoft Office. Ea conine meniurile: File - cu opiunile New, Open, Close, Save i Print care sunt folosite pentru aciuni asupra fiierelor baze de date i asupra coninutului acestr fiiere. Acest meniu conine i opiunea Exit pentru ncheierea unei sesiuni de lucru Access. Edit - Cut, Copy, Paste, Delete View - Vizualizarea diferitelor obiecte datatabase (tables, queries, forms, reports) Insert - Inserarea unui nou tabel, interogare, formular, raport (Insert a new Table, Query, Form, Report, etc.)

58

Tools - Conine o varietate de instrumente pentru verificare spelling, crearea de relaii intre tabele, realizarea de analize i diferite utiliti asupra coninutului unei baze de date. Window - Switch ntre bazele de date deschise. Help - Obinerea care activeaz un ansamblu de ferestre help n Access. Meniul File. 1. Se deschide opiunea File. 2. Se executa click pe comanda Open, punctele de suspensie indica faptul ca selectarea comenzii va determina deschiderea unei casete de dialog care va solicita informaii suplimentare. 3. Se deschide caseta de dialog Open. Aici putei selecta directorul care conine fiierul pe care dorii s-l deschidei, dup care putei selecta fiierul. Executai click pe Cancel (revocare) pentru a nchide caseta de dialog fr a deschide un fiier. Meniul View 1. Executai click pe opiunea View dine bara de meniuri. Se deschide meniul View. 2. Executai click pe intrarea Database Objects (obiecte de tip baza de date). Este afiat un sub-meniu, n care sunt enumerate comenzi suplimentare; executai click pe oricare dintre aceste comenzi, pentru a o selecta. 3. Apsai tasta ESC de pe tastatura sau executai click oriunde n afara meniului deschis. Procednd astfel, nchidei meniul fr a selecta ceva.

3.4. Noiuni practice n ACCESS


Crearea bazelor de date i a tabelelor Modul de vizualizare Design View introducerea cmpurilor cu tipul de dat asociat i descrierea corespunztoare (modul n care se definete structura tabelelor din baza de date). Utilizatorul poate crea o baza de date nou (fie fr nregistrri - de tip blank, fie cu cteva tabele create interactiv cu database wizard), sau poate s deschid o baza de date existent. n general, la nceputul unui proiect, trebuie creat o baz de date nou, de tip blank. Dup ce este creat o baz de date, aceasta se deschide

59

utiliznd opiunea Open existing database pentru a redeschide baza de date creat anterior. Observaie - Dac este creat o baza de date i dup aceea creai o alta folosind acelai nume, noua baza se va suprascrie peste cea veche. 1. Daca nu este afiat panoul cu sarcini New File, deschidei meniul File i selectai New. 2. n zona New din caseta de dialog New File, executai click pe legtura Blank database (baza de date vid). 3. se deschide caseta de dialog File New Databases. Parcurgei calea de acces pn la directorul n care dorii s salvai noua baz de date. 4. n cmpul File name (nume de fiier) tastai un nume descriptiv pentru noua baz de date. 5. executai click pe butonul Create. 6. Access creeaz o noua baza de date i afieaz fereastra bazei de date: Bara de instrumente Tables

Butonul Tables

Bara de instru-m ente Objects

Fereastra bazei de date

Crearea tabelelor 1. Dup ce ai creat sau deschis baza de date pentru care dorii s creai un table executai click pe optiunea Tables de pe bara Objects din fereastra bazei de date 2. Executai dublu-click pe opiunea Create table in Design view (reprezint modul cel mai eficient de creare a tabelelor) sau click pe butonul Design situate in bara de instrumente Tables. Crearea unei tabele utiliznd instrumentul wizard permite adugarea unor cmpuri predefinite ce se afla n cadrul bibliotecilor de tabele standard ACCESS. Nu se recomand aceasta modalitate deoarece cmpurile din cadrul tabelelor standard au fost create pentru sistemul de lucru

60

anglo-saxon. Create table by entering data, permite crearea tabelelor prin introducerea de date i reprezint o forma rapida de a introduce datele. Ea poate fi aplicata eficient n cadrul realizrii unei aplicaii complexe. 3. n fereastra design se deschide un tabel gol, coninnd coloanele Field Name (Nume cmp), Data Type (Tip de date) i Description (descriere). n coloana Field Name se tasteaz un nume pentru primul cmp, dup care apsai tasta Tab. La definirea cmpurilor unui tabel, este important s se foloseasc nume de cmpuri sugestive, care s ofere un neles clar al datelor coninute.

Numele cmpurilor n Access poate avea lungimea de pn la 64 caractere; este recomandat s nu fie folosite spaii, n locul acestora, pentru desprirea cuvintelor folosindu-se caracterul liniu de subliniere (underscore). 4. Pentru a schimba tipul de date prestabilit, Text, cu altul, executai click pe sgeata n jos din cmpul Data Type, i selectati un nou tip de dat din lista care apare pe ecran. Dup care apsai tasta Tab. 5. Opional tastai o descriere de cmp n coloana description. Acest text apare pe bara de stare a ferestrei Table atunci cnd introducei date i acest cmp este selectat. 6. Repetai pentru a continua s adugai cmpuri. 7. Pentru salvarea tabelului, deschidei meniul File si selectai Save. 8. Se deschide caseta de dialog Save As. Tastai un nume pentru table si executai click pe OK. 9. acces pa solicita s stabilii o cheie primar. 10. tabelul este salvat. Pentru a nchide fereastra tabelului i a reveni n fereastra bazei de date, executai click pe butonul Close.

61

Vizualizarea structurii unei tabele n fereastra Design


11. Executai click pe tabelul pe care dorii s-l deschidei, pentru a-l selecta. 12. Executai click pe butonul Design situate n bara cu instrumente din fereastra bazei de date. 13. Tabelul este deschis n fereastra Design i v permite s efectuai modificri n structura bazei de date: Adugarea i tergerea unui nou cmp Adugarea unei descrieri a cmpului Schimbarea unui nume de cmp Schimbarea tipului de date pentru un cmp Stabilirea dimensiunii unui cmp de text/numeric Stabilirea cheii principale(executai click pe butonul Primary Key situate n bara de instrumente Standard din fereastra principal a programului Access sau click dreapta i Primary key. Editarea structurii tabelelor din baza de date Fie tabela angajat cu urmtoarea structur:

Afiarea proprietilor unui cmp 1. Executai click pe un cmp pentru a-i vizualiza proprietile; 2. Fereastra de proprieti aflat la baza ferestrei afieaz diverse proprieti pentru cmpul selectat n fereastra de structur. 3. executai click pe un alt cmp pentru ai vizualiza proprietile 4. se observa c proprietile difer n funcie de tipul de cmp. Pe lng proprietile comune, cmpurile au o mulime de proprieti asociate care pot fi afiate i modificate. La orice modificare executat asupra bazei de date, trebuie s salvai baza de date. n acest scop, executai click pe butonul Save situat n bara cu instrumente Standard a programului Access.

62

5. n cazul n care dorim s adugm un nou cmp se deschide tabelul in vederea Design 6. ne poziionm cu cursorul pe cmpul naintea cruia dorim s inserm o nou linie i din meniului asociat evenimentului click dreapta sau meniu Insert > Rows (bara de instrumente Standard a programului Access). 7. apoi se introduce cmpul, tipul de date, descrierea (opional) i stabilirea proprietilor pentru respectivul cmp: Utilizarea formatului de afiare 1. n fereastra proprieti click pe cmpul Format . 2. apare pe ecran o sgeat n jos, n dreapta cmpului 3. executai click pe sgeata n jos i selectai din lista afiat pe ecran formatul pe care dorii s-l utilizai. 4. dup selecia formatului executai click pe butonul Save (bara Standard), pentru a salva modificarea n tabel.

Utilizarea unei mti de intrare Validarea datelor folosind mtile de intrare deoarece mtile de intrare necesit introducerea unui anumit numr de caractere. 1. dup selecia tabelului (angajat) n fereastra Design executai click in cmpul cruia dorii s-i aplicai o masc de intrare; 2. n fereastra de proprieti, executai click n cmpul Input Mask (masca de intrare). La dreapta cmpului apare un buton pe care se afla puncte de suspensie; 3. executai click pe punctele de suspensie; 4. Access va solicita s salvai baza de date nainte de a continua. Executai click pe YES; 5. Access lanseaz n execuie Input Mask Wizard; primul ecran afieaz o lista de mti de intrare disponibile. Selectai masca de intrare pe care dorii sa o aplicai acestui cmp. Daca selectam Edit list

63

6.

7.

8. 9.

10. 11.

este posibil crearea unei noi intrri, utiliznd sistemul de asistenta al programul Access pentru instruciuni specifice; pentru a testa masca tasai o valoare n caseta de text Try It. Dac suntei mulumit de ceea ce ai obinut, executai click pe Next pentru a continua. Apare pe ecran urmtoarea fereastr a aplicaie expert. n lista Placeholder character (caracter de nlocuire), executai click pe caracterul care dorii sa fie afiat de Access ca marcaj de rezervare in masca de intrare. Caracterul de nlocuire sunt acele care apar n foaia de date atunci cnd introducei date n cmpul de intrare. executai click Next. Input Mask Wizard permite salvarea modificrii cu sau fr simbolurile utilizate in masca de intrare. Selectai opiunea dorit i executai click pe Next. executai click Finish. noua masc de intrare este adugat la foaia de proprieti:

12. salvam (Save) 13. ne comutam la fereastra Datasheet 14. toate intrrile vide din acest cmp conin masca de intrare. Realizarea unui format personalizat 1. click cmpul Format 2. se tasteaz operatorul >

3. click Save.

64

n urma introducerii operatorului > toate caracterele introduce vor fi transformate automat n majuscule. Datele existente vor fi i ele afectate de aceasta modificare. Introducerea unei valori prestabilite Daca introducei frecvent aceeai valoare ntr-un cmp, putei defini o valoare prestabilita, datele existente nu sunt afectate de aceasta modificare. Doar noile nregistrri vor fi utiliza valoarea prestabilit. Valoarea prestabilit poate fi oricnd modificat. 1. pentru a introduce o valoare prestabilit executai click pe cmpul Default Value (Valoarea prestabilita) 2. se tasteaz valoarea prestabilit nscris ntre ghilimele. 3. valoare prestabilita este inclusa n structura tabelei baza de date 4. click Save.

Reguli de validare Regulile de validare testeaz conform criteriului furnizat sub forma unei expresii Access, valoarea introdus ntr-un cmp. 1. n fereastra de proprieti click n cmpul Validation Rule. 2. executai click pe punctele de suspensie 3. apare ce ecran fereastra Expression Builder i aici construii interactiv regula de validare folosind operatori, identificatori, funcii i constante. 4. Ok 5. expresia este adugat la lista de proprieti:

65

6. Save. Textul de validare(Validation Text) reprezint textul care va aprea n cazul in care valoarea introdus nu respecta criteriul impus de regula de validare. Cmpuri care nu pot fi null Pentru anumite cmpuri dorim s ne asigurm c se vor introduce date. Introducerea unei valori pentru un cmp este impus prin activarea proprietii Required pentru cmpul respectiv, astfel c utilizatorul va fi obligat s specifice o valoare. 1. n foaia de proprieti click n cmpul Required (obligatoriu). 2. click sgeat n jos i selectai Yes (imaginea de mai sus) 3. acest cmp necesit acum o intrare. 4. Save Indexarea dup un cmp Dac la definirea structurii unei tabele nu se specific pentru un cmp anume c reprezint cheie primar, ACCESS include n structura tabelei un cmp cu numele ID care reprezint numrul de nregistrare i care va fi desemnat de sistem ca fiind cheie primar. Tabela poate avea mai multe chei alternante, sau cmpuri care reprezint chei de indexe. Aceste sunt necesare pentru a accelera optimiza interogarea bazei de date. Deoarece indexarea cmpurilor crete timpul necesar pentru operaiile de actualizare, este necesar ca numrul de indeci s fie minim. Cnd se specific un cmp ca fiind cheie de index se poate preciza c respectivul cmp conine o intrare unica (adic nu conine valori duplicat) sau sunt permise valori duplicat. Lucru util pentru cmpurile care conin valori care ar trebui sa fie unice. Dac ncercai s introducei o

66

noua nregistrare cu o valoare care se repet ntr-un cmp indexat care nu accepta dubluri, vei vedea pe ecran un mesaj de eroare. 1. click campul Indexed 2. click sageata n jos i din lista care apare pe ecran executai Click Yes (Duplicates OK) sau No (No Duplicates). 3. Save. Pentru a stabili care este cheia principal se selecteaz cmpul dup care se selecteaz butonul primary key .

Selectarea unei valori dintr-o lista predefinita de valori n cazul n care pentru un cmp exit o list de valori prestabilite se poate asocia lista respectiv cmpului i astfel la introducerea datelor valoarea va fi selectat din list. Ordonarea elementelor listei nu se realizeaz automat, fiind sarcina utilizatorului. 1. Se deschide fereastra Design View de definire a structurii tabelei; 2. Se selecteaz cmpul; 3. n seciunea Field Properties se selecteaz opiunea Lookup; 4. n lista ascuns Display Control, se selecteaz Combo Box; 5. n Row Source Type, se selecteaz Value List; 6. n Row Source, se introduc valorile separate prin virgula.

Introducerea datelor n tabele


Modul de vizualizare Datasheet View permite introducerea de date n tabel. 1. Dup de ai deschis baza de date care conine tabelul pe care dorii s-l deschidei, executai click pe opiunea Tables din bara Objects pentru a afia tabelele disponibile in respective baza de date. 2. Executai click pe butonul Open situate n bara cu instrumente din fereastra bazei de date, sau dublu-click mouse. 3. Tabelul se deschide n vederea Datasheet. Dac ai introdus nregistrri n tabel, acestea sunt vizibile n caz contrar, tabelul este vid. 4. n aceast fereastr, cmpurile (coloanele) apar ca i cap de tabel n partea superioara a ferestrei, iar imediat sub ele se completeaz nregistrrile propriu-zise ale tabelului. n partea de jos a ecranului observai numrul afiat de nregistrri coninute de tabel. Pentru un tabel vid apare afiat doar o singur linie goal. 5. Pentru a aduga nregistrri n tabel (liniile tabelei reprezint date propriu-zise), se tasteaz simplu valorile corespunztoare fiecrui cmp n parte. Pentru deplasarea printre cmpurile unei nregistrri se

67

folosete tasta Tab, iar pentru deplasarea printre nregistrrile tabelului tastele sgeat sus i jos. 6. Salvarea datelor introduse se face automat la nchiderea ferestrei. 7. Pentru a naviga printre nregistrrile tabelului se folosete bara navigation bar din partea inferioara a ecranului:

8. Pentru a modifica datele existente, se navigheaz pe nregistrarea dorita, se deplaseaz n cmpurile de interes i se modifica valorile existente cu alte valori noi. 9. Pentru a terge o nregistrare se navigheaz pe nregistrarea de interes i apoi se folosete fie comanda Delete din meniul Edit, fie aceeai comand Delete din meniul asociat evenimentului click dreapta mouse. 10. Pentru a aduga o nou nregistrare, executai click pe butonul New Record (bara de navigare) a ferestrei tabelului sau click dreapta New record. Cnd se apas tasta Tab, dup ce ai completat ultimul cmp al liniei curente, Access salveaz nregistrarea din acea linie i creeaz o nregistrare nou i goal, pregtit pentru a primi noi nregistrri. Fixarea coloanelor Dac o tabl are multe coloane, astfel nct nu le putem vedea pe toate n fereastra de vizualizare. n acest caz se poate fixa coloana de care avem nevoie, astfel nct aceasta s rmn pe ecran. 1. selectarea coloanei pe dorii s o fixai. 2. se deschide meniul Format > Freeze Columns. 3. coloana este fixat. n momentul in care am fixat coloana, Access o mut pe primul luc n fereastra de vizualizare. 4. pentru a anula, deschidei meniul Format > Unfreeze All Columns. Ascunderea coloanelor O modalitate simpl de a va concentra pe anumite cmpuri din tabel este ascunderea coloanelor, care nu sunt relevante pentru ceea ce lucrai n acel moment. 1. executai click pe coloana pe care dorii sa o ascundeti. 2. deschidei meniul Format i selectai Hide Columns 3. coloana este ascunsa. Pentru a afia din nou coloana ascuns, deschidei meniul Format > Unhide Columns

68

4. se deschide caseta de dialog Unhide Columns, afind coloanele din tabel. Fiecare coloana este nsoit de o caseta de validare. Coloanele nsoite de o caseta de validare sunt ascunse. Executai click pentru a o bifa i a afia coloana. 5. Close. 6. coloanele ascunse vor fi afiate. Redimensionarea coloanelor Toate coloanele unui tabel au aceeai mrime. Totui, le putem re-dimensiona n funcie de necesiti. 1. plasai cursorul mouse pe marginea din dreapta a coloanei pe care dorii s o redimensionai. Cursorul mouse-ului i sugernd poziionare pe marginea coloanei. 2. executai click pe marginea coloanei i dup fixare innd butonul mouse apsat deplasai mutai marginea spre stnga, respectiv dreapta, pentru a micora, respectiv mri coloana. 3. coloana este redimensionat. 4. pentru a redimensiona liniile se procedeaz similar. Rearanjarea coloanelor Schimbarea structurii tabelului propriu-zisa nu este afectata de schimbarea ordinii coloanelor n fereastra de vizualizare. 1. selectai coloana pe care dorii s o mutai; 2. tragei coloana n noua poziie. In timp ce tragei, se afieaz o linie vertical; 3. cnd linia vertical a ajuns n poziia dorit, eliberai butonul mouse; 4. coloana este mutat. tergerea unei nregistrri O tergere nu poate fi anulata, adic nregistrarea tears nu poate fi refcut. 1. selectai nregistrarea pe care dorii sa o tergei 2. deschidei meniul Edit i selectai Delete Records 3. Access v solicit s confirmai tergerea. Executai click pe Yes 4. nregistrarea este tears. Copierea unei nregistrri 1. selectai nregistrarea pe care dorii sa o copiai 2. deschidei meniul Edit i selectai Copy 3. executai click n linia goal de la baza tabelului 4. deschidei meniul Edit i selectai Paste Append

69

5. nregistrarea copiat este scris i poate fi editat funcie de necesiti. Procedeul poate fi utilizat i pentru a muta o nregistrare dintr-un loc n altul, dar n loc s utilizai Edit > Copy utilizai Edit > Cut. Sortarea nregistrrilor n fereastra Datasheet 1. executai click n cmpul sau coloana dup care dorii sa se realizeze sortarea; 2. executai click pe butonul Sort Ascending/Sort Descending; 3. nregistrarea a fost sortat. Daca dorii s avei posibilitatea de a reveni la ordinea iniial, includei n structura tabelului un cmp de tip Autonumber, care numeroteaz n mod automat nregistrrile din tabel. Dup aceea putei sorta nregistrrile din tabel dup acest cmp, pentru a reveni la ordinea iniial. Pentru sortare se poate utiliza comenzile din meniul Records > Sort > Sort Ascending sau Sort Descending. Regsirea datelor i nlocuirea datelor 1. executai click pe coloana sau cmpul dup care dorii s efectuai cutarea; 2. deschidei meniul Edit i selectai Fiind; 3. caseta de dialog Find and Replace se deschide, afind rubrica fiind. n cmpul Find What tastai valoare de cutat i atunci cnd este cazul noua valoare pentru nlocuire; 4. opional pentru a cuta n tabel, executai click pe sgeata n jos de lng cmpul Look in i selectai numele de tabel care apare pe ecran. 5. executai click pe sgeata n jos de lng cmpul Match i selectai Whole Field, Any Part of Field sau Start of Field; 6. executai click pe butonul Find Next; 7. Access localizeaz i selecteaz nregistrarea care conine prima intrare care corespunde datelor cutate. Dac nu este nregistrarea de dcare este nevoie, executai click pe butonul Find Next pentru a gsi urmtoarea apariie a valorii cutate. Se repet operaia de care ori este necesar. 8. Access anuna cnd nu mai gsesc alte apariii. Executai click pe OK. Pentru a nchide caseta de dialog Find and Replace, executai click Cancel. Formatarea coninutului ferestrei Datasheet 1. deschidem meniul Format > Datasheet 2. apare pe ecran caseta de dialog Datasheet Formatting

70

3. selectati Flat (plat), Raised (reliefat) sau Sunken (adancit) din zona Cell Effect pentru a preciza cum ar trebui s arate celulele din tabel; 4. pentru a aplica o culoare de fundal tabelului, executai click sageata in jos de lng cmpul Background Color i selectai o culoare din lista care apare pe ecran. 5. pentru a schimba culoarea liniilor de grila din tabel, executai click pe sgeata n jos de lng cmpul Gridline Color i selectai o culoare din lista care apare pe ecran. 6. pentru a schimba stilul de linie al chenarului tabelei, al liniilor de grila sau al sublinierii titlului de coloan, selectai articolul de schimbat din lista derulanta din partea stng, din zona Border and Line Styles 7. executai click sgeata n jos de lng cmp situate n extremitatea dreapta n zona Border and Line Styles i selectai un stil de linie pentru chenarul tabelei, liniile de grila, respectiv sublinierea titlurilor de coloan. 8. Zona Sample din caseta de dialog Datasheet Formatting afieaz o imagine n care putei vedea schimbrile nainte de aplicarea acestora. Daca suntei mulumit de noul aspect al tabelei, executai click pe OK; 9. inversarea ordinii coloanelor - pentru a inverse ordinea coloanelor, selectai butonul de opiune Right-to-left al casetei de dialog Datasheet Formatting 10. tabelul este formatat cu elementele selectate. Pentru exemplificri folosim o baz de date numit Aprovizionare care are patru tabele cu urmtoarea structur: Furnizor Denumire Semnificaie Tip cmp Codfz Codul furnizorului Number(Long Integer) PK Denfz Denumirea furnizorului Text(50) Adrs Adresa furnizorului Text(50) Codf Codul fiscal al furnizorului Number(Long Integer) Banca Banca unde are deschis cont Text(30) furnizorul Cont Numarul contului in banca Text(24) Factura Denumire cmp

Semnificaie

Tip

71

Nrfact Datafact Codfz Linie_factura Denumire cmp Nrlinie Nrfact Codp Cant Produs Denumire cmp Codp Denp Um Pretu

Numarul facturii Data la care a fost emisa factura Codul furnizorului

Number(Long Integer) PK Date/Time Text(50) FK

Semnificaie Numar linie factura Numarul facturii Codul produsului Cantitatea intrata

Tip Number(Long Integer) PK Number(Long Integer) FK Number(Long Integer) FK Number(Long Integer)

Semnificaie Codul produsului Denumirea produsului Unitatea de masura Pretul unitar

Tip Number(Long Integer) PK Text(50) Number(Long Integer) Number(Long Integer)

Crearea de relatii ntre tabele(Relationships) Din punct de vedere al momentului crerii relaiilor, exista 2 tipuri de relaii ntre tabelele unei baze de date Access i anume: 1. Relaii permanente care se stabilesc dup definirea tabelelor i sunt considerate de modelul relaional ca fcnd parte din structura bazei de date. Acestea se realizeaz de obicei prin corespondentele cheie primar cheie extern i sunt memorate n baza de date. 2. Relaii temporare se stabilesc ntre tabele cu ocazia definirii unor cereri de interogare, nefiind nregistrate n structura bazei de date. n baza de date nu este obligatoriu ca ntre tabele s existe relaii. Relaiile care se pot stabili ntre tabele sunt de 3 tipuri: unu la unu (one to one); unu la mai muli (one to many); mai muli la mai muli (many to many). Dup definirea mai multor tabele n baza de date, acestea pot fi relaionate pe baza cmpurilor comune. O relaie funcioneaz pe baza unor cmpuri comune ale tabelelor, astfel nct s se poat proiecta pe baza lor structuri de interogare, formulare i rapoarte care s extrag date din tabelele bazei de date. n majoritatea cazurilor, aceste cmpuri comune sunt: cheia primara a unui tabel

72

(primary key care furnizeaz o identificare unic a fiecrei nregistrri din tabelul respectiv) i cheia externa (foreign key) a unui alt tabel. Explicitarea acestei relaii in Access se face prin intermediul ferestrei Relationships. Access va utiliza aceasta informaie atunci cnd va proiecta rapoarte, formulare si structuri de interogare care vor avea folosi mai multe tabele. Se urmeaz paii de mai jos pentru crearea relaiei ntre doua tabele: n fereastra bazei de date meniul Tools > Relationships sau de pe bara de instrumente Standard butonul :

sau
1. se deschide caseta de dialog Show Table, cu rubrica Tables in prim-plan. Executai click pe primul tabel pentru care dorii sa stabilii o relaie pentru a fi selectat; 2. executai click pe butonul Add; Daca adugai din greeala un tabel n fereastra Relationships, l putei terge din fereastra executnd click dreapta pe fereastra tabelului si selectand Hide Table din meniul rapid care este afiat. 3. pe ecran este afiata o fereastra reprezentnd tabelul (tabelele) adaugate:

4. dup ce tabelele au fost selectate click pe butonul Close; 5. pentru a stabili legtura dintre doua tabele se trage (drag) cmpul primary key al tabelului printe (furnizor n acest caz), i se elibereaz peste (drop) acelai cmp din tabelul copil (factura in acest caz);

73

6. se deschide caseta de dialog Edit Relationships, unde se pot stabili opiuni privind funcionarea relaiei pe care a-i stabilit-o. Verificai sa fie enumerate drept cmpuri legate cmpurile corecte. 7. Select Enforce Referential Integrity

Aceasta opiune are o aciune de constrngere astfel nct o nregistrare din tabelul furnizor nu poate fi creat fr a avea un client valid in codfz, iar Access va preveni de asemenea utilizatorul n momentul n care ar dori s tearg o nregistrare din tabelul furnizor care are nregistrari relaionate n tabelul factura. - Atunci cnd opiunea Update Related Fields este bifat, orice schimbare in tabela primara va determina modificarea automata a valorilor corespunztoare din nregistrrile relaionate. - Atunci cnd opiunea Cascade Delete Related Records este bifat, tergerea unei nregistrri din tabela printe va determina tergerea automata a tuturor nregistrrilor corespondente din tabelul relaionat. 8. Click pe Create i salvai relaia. Ecranul Relationships va reapare astfel:

74

Simbolul "1" indic partea "One" a relaiei i simbolul infinit indic partea "Many" a relaiei. Pentru a terge o relaie vom da click pe linia creat pentru a o selecta i apoi se apas tasta Delete de pe tastatur. 9. executai click pe butonul Save ca sa salvai relaia. 10. executai click pe butonul Close din fereastra Relationships, ca s o nchidei. Utilizarea sub-foilor de date Atunci cnd sunt legate dou tabele avem posibilitatea ca n fereastra de vizualizare a tabelei printe s activm o sub-fereastr prin intermediu creia putei consulta nregistrarea fiic cu care este legat. Datele din sub-foaie pot fi editate. Dac ai configurat relaia impunnd integritatea referenial, modificrile vor fi efectuate i salvate n tabelul original, legat. 1. se deschide tabel printe, se d click pe semnul plus de lng nregistrarea a crei sub-foaie de date dorii s o vedei.

2. datele din tabelul corelat cu acesta sunt afiate. Pentru a ascunde sub-foaia de date, se execut click pe semnul minus de lng nregistrare.

75

3. sub-foaia de date este ascuns.

Structuri de interogare (Query) O interogare (query) este o definiie unei tabele virtuale care folosete date din tabele reale. Aceast structur include cmpuri din tabele legate, criteriile de selecie, ordinea de sortare. Structura unei interogri indic datele care se vor extrage, Microsoft Access oferind urmtoarele posibiliti: selectarea anumitor cmpuri semnificative din nregistrrile unei tabele; selectarea nregistrrilor care satisfac anumite criterii; sortarea nregistrrilor ntr-o ordine precizat de utilizator; interogarea mai multor tabele; o interogare permite combinarea nregistrrilor din mai multe tabele i afiarea rezultatului ntr-un singur tabel virtual; interogarea altor baze de date existente n sisteme de gestiune a bazelor de date cum sunt FoxPro, Paradox, dBase, Btrieve, Microsoft SQL Server; crearea de cmpuri pentru afiarea rezultatelor unor calcule; crearea de rapoarte, formulare sau alte interogri. Rolul fundamental al structurilor de interogare (Queries) este acela de a accesa i afia date din tabele. Interogrile pot accesa un tabel sau mai multe tabele. Fereastra de definire a structurii de interogare Query Design view are dou seciuni principale. n seciunea superioar va afia tabelul (tabelele) folosit(e) de interogare mpreun cu cmpurile respective disponibile, iar seciunea inferioar este o gril care va conine acele cmpuri selectate pentru a fi afiate. Fiecare cmp are cteva opiuni asociate: Field - Numele cmpului din tabel Table - Tabelul din care provine cmpul selectat Sort - Ordinea de sortare n cadrul cmpului (Ascending, Descending sau Not Sorted) Show - Se bifeaz sau nu dup cum se dorete sau nu afiarea cmpului respectiv ca rezultat al rulrii interogrii.

76

Criteria - Indic criteriul dup care sunt filtrate nregistrrile - criteriul se specific n cmpul (cmpurile) n care se aplic filtrarea valorilor respective. Odat construit, o structur de interogare poate fi surs de nregistrri pentru crearea unui formular sau a unui raport. Interogrile afieaz datele coninute n cel mult 16 tabele. Cu ajutorul lor se poate indica modul n care s fie prezentate datele, alegnd tabelele care conin interogarea i cel mult 255 de cmpuri ale acestora. n Access se pot crea urmtoarele tipuri de interogri: interogri de selecie, interogri de aciune, interogri ncruciate, interogri parametrice. Interogrile de selecie extrag informaii din unul sau mai multe tabele i le afieaz sub form de list. Ele permit i modificarea rezultatului afiat, modificare ce va fi vzut i n tabelul surs. De asemenea, permit i folosirea de parametri, cum este reuniunea de cmpuri din tabele ntre care nu exist nici o legtur. Interogrile uni-tabel sunt utilizate pentru vizualizri de date dintr-un tabel, care: afieaz doar anumite cmpuri (coloane); sorteaz nregistrrile ntr-o ordine particular; efectueaz calcule folosind expresii de anumite tipuri; filtreaz nregistrrile folosind anumite criterii; Realizarea de interogri asupra mai multor tabele folosind relaiile stabilite ntre tabele pentru a manipula astfel datele care satisfac cerinele interogrii. Interogrile de aciune creeaz un nou tabel n baza de date sau realizeaz modificri majore ale unui tabel existent. n general, toate interogrile de aciune pot fi realizate pe baza unei interogri de selecie. Ele permit adugarea, modificarea sau tergerea de nregistrri ntr-un tabel. Exist patru tipuri de interogri de aciune: interogri de generare a unui nou tabel din datele coninute n setul de rezultate al interogrii; interogri de adugare a noi nregistrri ntr-un tabel; interogri de tergere a unor nregistrri dintr-un tabel; interogri de actualizare a unor nregistrri dintr-un tabel, conform cu o condiie ce trebuie ndeplinit. Aciunile acestora sunt ireversibile asupra datelor din tabelele surs, iar n cazul ultimelor trei dintre ele, trebuie urmrit pstrarea integritii refereniale atunci cnd prin intermediul lor se acioneaz asupra mai multor tabele legate. Interogrile ncruciate centralizeaz n formatul unei foi de calcul tabelar datele din unul sau mai multe tabele. Datele rezultate dup execuia unei astfel

77

de interogri sunt prezentate ntr-un format potrivit pentru analiza datelor i crearea de grafice.

Interogrile parametrice nu sunt un tip special de interogri, o funcie parametru putnd fi folosit pentru toate celelalte interogri prezentate mai
sus; ele folosesc n mod repetat o interogare, efectund modificri n criteriile de selecie. Crearea manual a interogrilor se realizeaz prin intermediul utilitarului Query Design care folosete o interfaa grafic de tip Query by Example (QBE). Aceasta permite utilizatorilor s gseasc i s afieze informaiile de care au nevoie. Alegerea tipului de interogare se face selectnd opiunea corespunztoare din meniul Query. Pentru a crea o nou structur de interogare n modul Query Design, se vor parcurge urmtorii pai: 1. selectarea tabelelor din care se doresc a fi afiate/prelucrate datele; 2. selectarea cmpurilor care se vor transforma n coloanele tabelului virtual rezultat al interogrii; 3. stabilirea criteriilor de selecie i a cmpurilor asupra crora vor fi aplicate; se poate apela la un singur criteriu de selecie sau la mai multe criterii, aplicate fie unor cmpuri diferite, fie formnd un criteriu compus aplicat aceluiai cmp; 4. stabilirea parametrilor de selecie. Parametrii funcioneaz pentru interogri asemntor criteriilor de selecie, cu deosebirea c la fiecare execuie trebuie specificat valoarea parametrului n funcie de care se va realiza selecia; 5. stabilirea tipului de sortare a datelor afiate ca rezultat i a cmpurilor asupra crora va aciona; 6. specificarea expresiilor de calcul pentru cmpurile care sunt rezultatul unor operaii executate asupra unora dintre cmpurile deja existente. Acest lucru se poate face fie prin scrierea direct a formulei, fie prin apelarea constructorul de expresii un utilitar inclus n ACCESS; 7. alegerea tipului de interogare prin selectarea din meniul Query a uneia dintre opiunile: de selecie, ncruciat, de generare a unui tabel, de adugare ntr-un tabel, de tergere dintr-un tabel, de actualizare a unui tabel. n funcie de opiunea aleas, Access modific designul interogrii i cere informaii suplimentare astfel: pentru generarea unui tabel numele tabelului ce urmeaz a fi creat;

78

pentru adugarea ntr-un tabel numele tabelului ce urmeaz a fi ncrcat cu date, precum i cmpurile destinaie; pentru actualizare condiiile de actualizare i valoarea la care se dorete actualizarea; pentru tergere numele tabelului din care se va terge i condiia de tergere. Pentru a rula interogarea avem la dispoziie butonul din bara de instrumente pe care este desenat semnul exclamrii de culoare roie sau, n mod echivalent, putem folosi opiunea Run a meniului Query.

Formulare ACCES

Formularele (formele) sunt machete (ferestre) folosite pentru consultarea i reactualizarea datelor. Formularul are ca destinai ecranul, dar poate fi tiprit i la imprimant. Este folosit pentru un acces aleator la nregistrri. Spre deosebire de rapoarte, dac se tiprete un formular la imprimant apar i culorile de fundal, mpreun cu butoanele de comand, casetele de text i alte controale. Formularul se definete pentru un tabel real sau virtual. n funcie de modul de afiare, sunt disponibile urmtoarele tipuri de
formulare: - Single form afieaz doar nregistrarea curent; - Continuous form permite vizualizarea mai multor nregistrri; - Datasheet form afieaz datele sub form de linii i coloane, la fel ca o foaie de calcul tabelar; Chart form afieaz datele sub form grafic. Formularele din Access creeaz interfaa utilizatorului cu tabelele. Ele permit realizarea unor obiective ce nu pot fi ndeplinite prin lucrul n mod direct cu tabelele. Prin intermediul lor se poate opere direct asupra datelor fie dintr-un tabel. Formularele sunt compuse din obiecte de control, care sunt o colecie de elemente specifice de proiectare destinate fie afirii datelor.

Crearea formularelor
ACCESS ofer urmtoarele metode de realizarea a formularelor: Design View permite crearea manual a formularelor. Utilizatorului i se pune la dispoziie un tabel liber i caseta cu instrumente Toolbox; Form Wizard genereaz un formular pe baza cmpurilor selectate din unul sau mai multe tabele sau interogri;

79

AutoForm: Columnar creeaz un formular n care fiecare cmp apare pe o linie separat avnd n stnga numele, fiecare nregistrare reprezentnd un nou tabel; AutoForm: Tabular creeaz un formular n care numele cmpurilor apare o singur dat n captul de sus al formularului, iar nregistrarea datelor se face pe linie; AutoForm: Datasheet creeaz un formular n care datele sunt afiate sub forma foilor de calcul tabelar; AutoForm: PivotTable creeaz un formular n care sunt afiate date calculate vezi punctul 9 pentru mai multe detalii; AutoForm: PivotChart creeaz un formular n care sunt afiate sub form grafic date calculate; Chart Wizard creeaz un formular n care datele sunt afiate sub forma unui grafic; Pivot Table Wizard creeaz un formular n care sunt afiate datele calculate; programul folosete aplicaia Microsoft Excel pentru a crea tabelul pivot, n timp ce n Microsoft Access se creeaz formularul n care acesta va fi inclus. Sunt numite astfel pentru c li se poate schimba n mod dinamic aranjarea astfel nct s analizeze datele selectate n diverse moduri. Crearea manual a formularelor cu Design View realizeaz n mod interactiv folosind o surs de date (tabel real sau virtual) care va conine date pentru care se definete formularul folosind o fereastr, de definire formular (form), n care vor fi inserate diverse tipuri de obiecte. Lista obiectelor ce pot fi inserate n formular este pus la dispoziia utilizatorului prin intermediul grupului de butoane Toolbox. n formularele Access se pot insera trei tipuri de obiecte de control: 1. obiecte de control asociate sunt obiecte ataate unui cmp din sursa de date a formularului, ele afind i actualiznd valorile datelor cmpului asociat din nregistrarea curent. Toate obiectele de acest fel sunt nsoite de etichete ce afieaz titlul cmpului cruia i sunt ataate; 2. obiecte de control neasociate sunt obiecte care afieaz datele independente de sursa de date a formularului; ele pot sau nu s fie nsoite de etichete; 3. obiecte de control calculate sunt obiecte ce folosesc expresiile calculate, ca surs de date. Principalele obiecte de control vizibile pe caseta Toolbox sunt:

80

- caseta de text Text Box creeaz o caset ce afieaz i permite editarea datelor de tip text; - caseta de list List Box creeaz o caset ce cuprinde o list derulant de opiuni; - caseta combinat Combo Box creeaz o caset combinat for-mat dintr-o caset de text editabil i o caset de list. Poate avea ca surs chiar un alt tabel dect sursa de date; - caset de validare Check Box creeaz o caset de validare care comut ntre strile on i off; - buton comutator Toggle Button creeaz un buton cu dou stri on/off, corespunztoare strilor - yes (-1), respectiv no (0); - buton de opiune Option Button creeaz un buton rotund cu un comportament identic cu cel al unui buton comutator; - grup de opiune Option Group creeaz o caset n care se pot plasa butoane comutatoare, de opiune sau casete de validare. n cadrul unui astfel de grup poate fi activ un singur obiect de control; - buton de comand Command Button creeaz un buton care la selectare comut un eveniment ce execut o macroinstruciune sau o procedur VBA; - etichet Label creeaz o caset ce conine un text; - submachet Subform ataeaz unei machete o sub-machet deja existent. Pentru a crea manual un formular se parcurg urmtorii pai: 1. stabilirea surselor de date care pot fi unul sau mai multe tabele/interogri; 2. stabilirea tipului de formular dorit, n funcie de forma de afiare; 3. alegerea obiectelor de control necesare i configurarea lor conform cu necesitile de afiare i editare n cadrul formularului; 4. configurarea zonelor de antet i de subsol att la nivelul ntregului raport ct i la nivelul fiecrei pagini; 5. crearea unui sub-formular dac este necesar; 6. adugarea sub-formularului i crearea legturilor cu formularul de origine.

Rapoarte ACCES

Raportul este formatul extern, final, de prezentare a informaiilor extrase din baza de date n form tiprit. Raportul constituie cea mai bun modalitate de a tipri informaiile extrase din baza de date. n ACCESS exist ase tipuri de rapoarte de baz: 1. rapoartele cu o singur coloan afieaz pentru fiecare nregistrri din sursa de date toate cmpurile plasate unul sub altul; 81

2. rapoartele dispuse pe linii furnizeaz cte o coloan pentru fiecare cmp al sursei de date, plasnd valoarea fiecrui cmp al nregistrrii pe linii plasate sub capul de coloan. Dac exist mai multe coloane i nu ncap pe o pagin, se tipresc mai multe pagini suplimentare, n ordine pn la epuizarea numrului de coloane; apoi, se tiprete urmtorul grup de nregistrri; 3. rapoartele multi-coloan se obin din rapoartele cu o singur coloan, prin divizarea paginii n mai multe coloane asemntor tipririi ziarelor; 4. rapoartele cu grupare/totalizare sunt similare rapoartelor create de alte aplicaii de gestiune a bazelor de date. Ele nsumeaz datele pe grupuri de nregistrri i adaug la sfritul raportului informaii statistice de tip total general; 5. etichetele pentru coresponden constituie un tip deosebit de raport multicoloan, proiectat pentru a tipri n mod grupat nume i adrese sau alte informaii provenite din mai multe cmpuri; 6. rapoartele neasociate conin subrapoarte care au la baz surse de date nelegate, cum ar fi tabele sau interogri. Primele patru tipuri de rapoarte utilizeaz ca surs de date o tabel sau o structur de interogare. Ele se numesc rapoarte asociate sursei de date. Raportul principal al unui raport neasociat nu este legat la o tabel sau structur de interogare. ns subrapoartele coninute ntr-un raport neasociat trebuie s fie asociate unei surse de date. Raportul parcurge secvenial nregistrrile sursei de date, tabel real sau virtual, pentru a tipriri datele oferind posibilitatea de a insera totaluri, subtotaluri i rezumate, de a grupa datele pe un numr de pn la 10 niveluri diferite i subrapoarte imbricate pe maxim trei niveluri. Raportul nu permite editarea i modificarea datelor. Machetele de raport pot fi stocate pe disc pentru a fi tiprite ulterior. Raportul este structurat pe urmtoarele seciuni: Report Header zon rezervat nceputului de raport; Page Header zon rezervat nceputului de pagin; Detail zon rezervat pentru descrierea linilor curente (de detaliu) din cadrul raportului, putnd fi grupate 10 nivele; Page Footer zon rezervat pentru sfritul de pagin; Report Footer zon rezervat sfritului de raport. Crearea rapoartelor

82

Modul de generare a unui raport prin folosirea programelor Wizard este asemntor cu cel prin care se genereaz formularele folosind ReportWizard: - Opiunine AutoReport realizeaz un raport ntr-un singur pas, limitrile constau dint posibilitatea selectrii datelor dintr-o singur surs. - Opiunea Design View permite construirea manual a unui raport. Prin selectarea acestei opiuni se va deschide o fereastr de proiectare raport i instrumentele de lucru. Crearea unui nou raport este asemntoare cu cea de creare a formularelor, trecnd prin aceleai etape i folosind aceleai obiecte de control. Spre deosebire de formulare, rapoartele au mai multe posibiliti de sortare, grupare i calculare a datelor. Access permite manipularea rapoartelor prin programele de aplicaie, ns nu i crearea acestora. Pot fi modificate proprietile obiectelor de control din cadrul unui raport astfel nct s fie actualizat n mod dinamic.

83

3.5. ntrebri teoretice de auto-evaluare


1. Explicai: a. Caracteriticile definitorii ale SGBD-ului Access b. Pe scurt noiunile de tabel, interogri, rapoarte, pagini de prezentare macro-uri i module c. Tipurile de fiiere n Access d. Bara de meniuri 2. S se explice fiecare tip de interogare suportat de Access. 3. Formulare Access i tipuri de controale utilizabile. 4. Rapoarte Access.

84

85

CAP.4. LIMBAJUL VISUAL BASIC PENTRU APLICAII 4.1. Rezumatul capitolului


Limbajul Visual Basic for Application (VBA) este un limbaj orientat pe obiecte i pe evenimente. n acest capitol ne propunem prezentarea avantajelor folosirii VBA, prezentarea mediului de dezvoltare pentru VBA, configurarea editorului VBA, modelul obiect din Access i principiile utilizrii obiectelor i coleciilor. Pentru nceput se creaz o procedur VBA utiliznd variabile, constante, tipuri speciale de date, folosind mai multe tipuri de structuri de decizie i selecie, precum i structuri interative. Ulterior se pot crea clase de obicte. Este prezentat gestionarea evenimentelor n Access, proprietile i metodele obiectelor Access precum i unele recomandri privind optimizarea codului VBA.

4.2. Macro-comenzi sau VBA?


VBA Access este un limbaj de programare orientat obiect, dezvoltat de Microsoft folosind limbajul Visual BASIC adaptat la cerinele specifice ale sistemelor de gestiune de baze de date. De ce folosim VBA ? Avantajele VBA sunt urmtoarele: VBA permite furnizarea unor funcionaliti complexe, VBA faciliteaz ntreinerea bazelor de date deoarece procedurile eveniment Visual Basic pot fi sunt integrate n definiia formelor (fomularelor), respectiv a rapoartelor), permite realizarea aciunilor la nivelul sistemului, Se pot intercepta i prelucra erorile cu ajutorul VBA, VBA este mai rapid de executat dect macro-comenzile, Utilizarea VBA face baza de date mai uor de ntreinut, Utilizarea VBA permite interaciunea cu alte aplicaii, Utilizarea VBA confer controlul programrii, VBA este mai uor de citit, VBA este comun pentru majoritatea aplicaiilor Microsoft. Macro-comenzile (Macro-uri) reprezint un mod simplu de a administra nlnuiri de aciuni simple, de exemplu deschiderea i nchiderea formularelor.

86

Ele sunt recomandate pentru utilizatorii specialiti. Programele de aplicaie vor fi realizate ntotdeauna de programatori care folosesc VBA. Macro-urile pot fi convertite n module program VBA: Conversia macro-urilor ntr-un fomular sau un raport deschidei obiectul n modul Design i, n meniul Tools, deschidei opiunea Macro i Convert Macros to Visual Basic. Conversia macro-urilor globale facei clic pe Macros pe bara de obiecte a ferestrei Databases, n meniul File, alegeti optiunea Save As, n csua de dialog Save As, facei clic pe Module apoi pe OK. Majoritatea elementelor manipulate n Access sunt obiecte de tip tabel real sau virtual, formular, raport etc. Obiectele, respectnd principiile programrii orientate spere obiecte, sunt organizate dup un model ierarhic, adic anumite obiecte conin altele care la rndul lor conin altele. De exemplu, obiectul Application este alctuit din mai multe obiecte Form (formulare de aplicaie), care conin mai multe obiecte Control (controalele unui formular). Un ansamblu de obiecte de aceeai natur constituie o colecie (colecia Forms: ansamblu de formulare sau obiecte Form ale aplicaiei). Un obiect dispune de un ansamblu de caracteristici numite proprieti (ex: dimensiune, culoare pentru un control dintr-un formular) i de compartimente sau aciuni numite metode (ex: metoda Close al obiectului Form permite nchiderea acestuia). Obiectul rspunde unor evenimente provocate de ctre utilizator (ex: clic pe un buton de comand) sau de ctre sistem. Clasele sunt modele ce permit crearea obiectelor de aceeai natur. Obiectele provenite din aceeai clas motenesc caracteristici de la toate metodele, proprietile i evenimente clasei lor originare. Se pot crea clase de obiecte cu VBA Access utiliznd modulele de clas predefinite. Exist mai multe tipuri de obiecte n Access: - obiecte generale (formulare, rapoarte, etc.), - obiecte de acces la date (model DAO), - obiecte de date ActiveX (model DAO).

Fiecare ansamblu poate fi reprezentat sub forma unui model ierarhic.

4.2. Mediul de dezvoltare pentru VBA (IDE)


IDE (Integrated Development Environment) este mediul n care se poate crea, modifica i testa codul VBA. Acest mediu este de numit i VBE (Visual Basic Editor). IDE pune la dispoziie numeroase instrumente ce

87

faciliteaz programarea i punerea la punct a codului VBA: instrumente de Debugg (folosit n procesul de depanare a aplicaiilor), asisten pentru crearea de obiecte, explorator de obiecte, etc. Exist mai multe modaliti de a deschide IDE din Access: - folosind combinaia de taste Alt+F1, - fcnd clic pe icoana din bara de instrumente Database, Formulare i Rapoarte, - fcnd clic pe un modul i apoi selectnd opiunea Code din meniul View, fcnd dublu clic pe un modul, - selectnd o procedur eveniment dintr-un formular sau un raport, - fcnd clic pe icoana New sau Modify din lista de module a ferestrei Database. Ferestre ale mediului IDE

Toate ferestrele mediului IDE pot fi afiate din meniul View

Bara de instrumente Standard:

View Microsoft Access Insert/Inserare modul, modul de clas sau procedur (Funcie sau Sub)

88

Save/Salvare Cut/Tiere Copy/Copiere Paste/Lipire Find/Cutare Undo/Anulare Redo Run Macro Break End Design Mode Project Explorer/Exploratorul de proiecte Properties Window/Fereastra Proprieti Object Browser/Exploratorul de obiecte Controlul Toolbox Microsoft Visual Basic He Exploratorul de proiecte

Toate modulele bazelor de date sau ale proiectului VBA sunt afiate n exploratorul de proiecte ntr-o structur arborescent i sunt organizate n trei grupe: modulele de formulare sau de rapoarte, modulele standard,

89

modulele independente de clas. Fereastra Proprieti

Aceasta permite afiarea proprietilor diferitelor module. Pentru afiarea proprietilor unui formular sau ale unui raport, acesta trebuie deschis n Access; dac nu este cazul, se selecteaz un formular sau un raport n exploratorul de proiect i se alege opiunea Object/Obiect din meniul Display/Afiare. Fereastra de Cod program

n aceast fereastr se gsesc dou zone de liste derulante: zona obiect obiecte ale modului, afieaz lista de

zona procedur afieaz procedurile sau evenimentele obiectului selectat n zona obiect. Evenimentele folosite deja apar ngroate.

90

Auto List

O list derulant se afieaz automat cnd se tasteaz numele obiectului urmat de punct, i conine lista de metode, proprieti i constante disponibile pentru acest obiect. Fereastra Variabile locale

Aceasta conine toate valorile variabilelor accesibile n timpul aplicaiei n curs. Fereastra Watches

Aceasta afieaz valorile variabilelor ce au fost definite drept variabile de urmrit, watches. Exploratorul de obiecte

91

Permite vizualizarea proprietilor, metodelor i constantelor fiecrui obiect.

4.3. Configurarea editorului VBA


Parametrii pentru culorilor implicite folosite de editorul VBA Cuvintele cheie, funciile i instruciunile VBA sunt afiate n albastru, obiectele, metodele i proprietile n negru, iar comentariile n verde. Instruciunile ce conin erori sunt afiate n rou. Stilul (culoare, font, mrime) diferitelor pri de cod se poate modifica prin selectarea Options/Opiuni din meniul Tools i activarea seciunii Format Editor. Parametrii pentru prezentarea codului program Generarea i reactualizarea codului program VBA sunt realizate cu ajutorul unor instrumente care asist programatorul, acestea realizeaz n plus verificarea automat a sintaxei, declararea obligatorie a variabilelor, Auto List Members, etc. Pentru activarea acestor instrumente, se selecteaz Options/Opiuni din meniul Tools i se face clic pe seciunea Editor.

4.4. Completarea automat a instruciunilor n editorul VBA


Editorul VBA dispune de o tehnologie ce i permite s asiste utilizatorul n manipularea obiectelor. n momentul scrierii unui nume de obiect recunoscut de VBA, urmat de un punct, lista derulant a metodelor i proprietilor acestui obiect este afiat. Dac se selecteaz o metod, asistentul ajut n generarea diferitelor argumente pe care acesta le conine. Exemplu: Dac se scrie numele de obiect Docmd urmat de un punct, este derulat urmtoarea fereastr:

92

Pictograma reprezint metodele, icoana reprezint proprietile. Elementele listei derulante pot fi definite tastnd primele litere ale metodei, proprietii sau coleciei cutate. Pentru a selecta un element din list, se face dublu clic pe el. Se tasteaz un punct dac s-a selectat un obiect i se dorete vizualizarea listei de proprieti ataate. Dac s-a selectat o metod, se apasa tasta spaiu pentru generarea listei de parametrii ai metodei. Drept exemplu, selectai metoda OpenForm apoi lsai un spaiu:

Lista de argumente a metodei este apoi afiat pe msur ce sunt scrise argumentele. Argumentele facultative se gsesc ntre paranteze drepte. Argumentul curent este ngroat. Dac pentru un argument dat exist o list de valori predefinite, lista derulant a constantelor corespunztoare este afiat. Drept exemplu, generai numele parametrilor transmii de funcie, i anume, StrFormName, urmat de trei virgule (pentru cei doi parametrii opionali)

93

n exemplu, este afiat lista de valori posibile pentru argumentul DataMode. Asistentul poate fi activat i n modul urmtor: se plaseaz cursorul n urma punctului, se face clic dreapta pentru a afia meniul contextual, se selecteaz opiunea List Proprieties /Methods, se utilizeaz combinaia de taste: CTRL+J

4.5. Modelul obiect din ACCESS


Diagrama de alturi permite distingerea principalelor obiecte globale din Access. Notaia utilizat n diagram face distincie ntre: Colecii, Obiecte

94

Application Forms (Form) Controls(Contro) Proprieties(Control) Module Proprieties(Form) Reports(Report) Controls(Control) Proprieties(Control) Module Proprieties(Form) Modules(Module) References(Reference) Printers(Printer) DataAccessPages WebOptions Screen DoCmd VBE DefaultWebOption Assistant CommandBars(CommandBar) Assistant DBEngine FileSearch FileDialog COMAddIns(COMAddln) AnswerWizard LanguageSettings CurrentProject AllForms(AccessObject) AllMacros(AccessObject) AllModules(AccessObject) AllReports(AccessObject) AllDataAccessPages(AccessObject) AccessObjectProprieties) CurrentData AllTables(AccessObject) AllQueries(AccessObject) AllView(AccessObject) AllStoredProcedures(AccessObject AllFunctions(AccessObject) AllDatabaseDiagrams(AccesObject CodeProject AllForms(AccessAbject) AllMacros(AccessObject) AllModules(AccessObject) AllReports(AccessObject) AllAccessPages(AccessObject) AccessObjectProprieties CodeData AllTables(AccessObject) AllQueries(AccessObject) AllViews(AccessObject) AllStoredProcedures(AccessObject) AllFunctions(AccessObject) AlldatabaseDiagrams(AccessObject)

Tabelul de mai jos reia rolul principalelor obiecte i colecii ale diagramei.

95

Obiect Application Forms

Descriere Obiect care se refer la aplicaia activ Microsoft Access. Colecie ce conine toate formularele (obiecte Form) deschise n baza de date activ. Pentru a inventaria toate formularele bazei de date, fie ele deschise sau nchise, se folosete colecia AllForms al obiectului CurrentProject. Colecie ce conine toate rapoartele (obiecte Report) deschise n baza de date activ. Pentru inventarierea tuturor rapoartelor, deschise sau nchise, se folosete colecia AllReports al obiectului CurrentProject. Colecie ce conine toate modulele standard i de clas deschise n baza de date activ. Colecie ce conine toate referinele la bibliotecile obiectelor altor aplicaii (fiiere dll, controale ActiveX) selectate n acel moment (referinele sunt selectate din csua de dialog Reference din meniul Tools). Colecie ce conine obiectele Printer reprezentnd toate imprimantele disponibile n sistem. Colecie ce conine toate paginile de acces la datele deschise ntr-un proiect Microsoft Access (.adp) sau ntr-o baz de acces (mdb). Obiectele ce permit accesul la formular, raport sau control activat. Obiect ce permite conversia aciunilor Macro n Visual Basic. Marea majoritate a macro-urilor pot fi astfel convertite n VBA. Obiect ce conine caracteristicile aplicaiilor globale utilizate de ctre Microsoft Accesss n timpul nregistrrii unei pagini de acces la date ca i o pagin Web sau n timpul deschiderii unei pagini Web. Obiect ce reprezint asistentul Office pus la dispoziie de Microsoft. Proprietatea Visible se folosete pentru a afia asistentul iar proprietatea On pentru a activa asistentul.

Reports

Modules References

Printers DataAccessPage

Screen DoCmd

DefaultWeb Options

Assistant

96

CommandBars FileSearch FileDialog COMAddIns AnswerWizard Language Settings CurrentPage CurrentData

Colecie de obiecte CommandBar ce reprezint barele de comand a aplicaiei active. Obiect ce permite cutarea fiierelor dintr-un document File. Obiect ce permite accesarea unor fiiere similare celor din csua de dialog Open i Save. Colecie de obiecte ComAddIn ce furnizeaz informaii despre complementul COM nscris n registrul Windows. Obiect ce reprezint ajutorul intuitiv Microsoft Office. Obiect ce returneaz informaii despre parametrii limbajului aplicaiei. Obiect ce conine mai multe colecii de obiecte Access specifice (AllForms: coleciile tuturor tabelelor bazei). Obiecte ce conine mai multe colecii de obiecte Access de accesare a datelor (AllTables: colecie a tuturor tabelelor bazelor de date).

4.6. Principiile utilizrii obiectelor i coleciilor


Proprieti Acestea servesc la descrierea obiectelor. Anumite proprieti sunt Read Only i nu pot fi modificate de codul VBA. Sintax:
{<obiect>| <obiect variabil>}.<proprietate>

Proprietile referitoare la obiecte Obiectele globale i cele scrise n cod pornind de la clasele furnizate de VBA, posed proprieti a cror valoare este actualizat automat de sistem.
Proprietate ActiveControl ActiveForm ActiveData AccessPage ActiveReport Obiect Screen Screen Screen Screen Coninut Control activ. Formular activ. Pagin activ sau coninnd un control activ. Raport activ.

97

Application DBEngine Form Me Module Parent PreviousControl RecordsetClone Report Section Metode

Obiecte multiple Application Control subformular Form sau Report Form sau Report Obiecte multiple Screen Form Control subraport Form, Report

Obiectul aplicaie Access. Obiectul DBEngine. Obiect Form asociat controlrii unui subformular. Obiect Form sau Report al crui cod este n curs de executare. Modulul obiectului Form sau Report. Obiect sau colecie coninnd obiectul. Obiectul control activ anterior. Un Recordset clon a setului de nregistrare subadiacent formularului. Obiect Report asociat controlului subraportului. Seciune a unui formular sau raport.

Acestea permit efectuarea aciunilor proprii obiectelor. Codul program VBA este scris n uniti de program denumite proceduri. O procedur conine o serie de instruciuni VBA care efectueaz o operaie sau calculeaz o valoare. O procedur eveniment este o procedur care se execut ca rspuns la un eveniment iniiat de un cod al utilizatorului sau al programului, sau lansat de sistem. Un eveniment este o aciune specific care are loc n sau cu un anumit obiect. Evenimentele sunt n general rezultatul aciunilor utilizatorilor dar pot fi i ale sistemului. Cu ajutorul unei proceduri eveniment, avem posibilitatea de a aduga propriile rspunsuri particularizate ca rspuns la un eveniment care are loc ntr-un formular, raport sau control. O procedur este o parte de cod program care conine o succesiune de instruciuni. Metodele se prezint ca i proceduri: pot sau nu folosi argumente, anumite metode pot returna o valoare (la fel ca i procedurile Function), altele nu (ca i procedurile Sub). Sintaxa unei metode ce nu returneaz o valoare:
{<object> | <obiect variabil>} . <metode> [ <liste de argumente>]

98

Sintaxa unei metode ce returneaz o valoare:


Variabila = {<object> | <obiect variabil>} . <metode> [<liste de argumente>]

Evenimentele Un eveniment este o aciune specific un obiect. Microsoft Access este n msur s rspund la mai multe tipuri de evenimente: deschiderea sau nchiderea formularelor, clic mouse, modificarea datelor etc. Utilizarea unei proceduri eveniment permite asocierea propriului cod ca rspuns la un eveniment ce are loc ntr-un formular, raport sau control. Exemplu: Cnd utilizatorul d clic pe butonul de comand Quit, este afiat o csu de dialog cernd o confirmare.
Private Sub cmdTerminare_Click() If MsgBox (Prompt:=Dorii s prsii aplicaia ?, _ + vbQestion + vbYesNo,_Then DoCmd.Quit End If End Sub

Colecii Pentru a face o referin la obiectul unei colecii, se poate folosi una din sintaxele urmtoare:
NameCollection! NameObject NameCollection! [NameObject] NameCollection! (NameObject) NameCollection (var)

unde var reprezint o variabil de tipul String ce conine numele obiectului.


NameCollection (index)

unde index reprezint numrul de index n colecie al obiectului. Pentru a asigura o mai bun lizibilitate a codului se recomand folosire aceleiai sintaxe.

99

Observaie: Atenie la primul element din majoritatea coleciilor care are indexul 0. Indexul nu se folosete dect pentru parcurgerea unei colecii. Se recomand evitarea, de exemplu, Me.controls (5) pentru a face referin la un control fiindc indexul unui control se poate schimba dac formularul este modificat. Exemple: Referina la controlul txtDataDeb al formularului Formation (Collections Forms and Controls):
MsgBox Forms (Formations).Controls (txtDateDeb).Value sau MsgBox Forms! Formations.Controls! [txtDateDeb].Value

Data crerii unui tabel al bazei curente (Collection AllTabels):


MsgBox CurrentData.AllTables![Formations].DataCreated MsgBox CurrentData.AllTables(Formations).DataCreated

Parcurgerea unei colecii. Acest cod modific fontul i culoarea zonelor control din text:
Dim Ctl As Control Dim intI As Integer For intI = 0 To Me.Controls.Count 1 Set Ctl = Me.Controls(intI) If TypeOf Ctl Is TextBox Then Ctl.ForeColor = vbBlue Ctl.FontItalic = True Ctl.FontBold = True End If Next intI

Coleciile by default Definiie: O colecie by default (implicit) conine obiecte la care se poate face referin prin intermediul obiectului coleciei, adic fr a face referin direct la colecie. Obiecte ce posed o colecie by default
Obiect Container Database DBEngine Form Colecie Documents TableDefs Workspace Controls

100

Group Index QueryDef RecordSet Relation Report TableDef User Workspace

Users Fields Parameters Fields Fields Controls Fields Groups Databases

Exemplu: Referin la controlul txtDateDeb al formularului Formations (colecia Controls este colecia by default a unui formular).
Forms! [Formulations].[txtDateDeb].Value Sau Forms! Formulations.txtDateDeb.Value sau Forms! Formulations! txtDateDeb.Value

4.7. Crearea de referine pentru obiecte


Pentru a putea utiliza un obiect de acces la date, un obiect de automatizare sau un control ActiveX specific, trebuie create referine pentru bibliotec, corespunztoare obiectului. n general, o bibliotec de obiecte este un fiier .DLL sau .OCX care conine codul obiectului. Se pot aduga referine fcnd clic pe butonul de comand Browse.

4.8. Crearea unei proceduri n VBA


Etapa 1: Crearea unui nou modul Pornind de la fereastra Baz de date/Database: se face clic pe butonul Module face clic pe butonul New Etapa 2: Crearea unei proceduri de pe bara de obiecte, apoi se n partea superioar a ferestrei.

101

n fereastra VBA activat pe ecran se va introduce secvena de program corespunztoare, dup care se salveaz secvena introdus folosind butonul Save , sau opiunea Save dup care codul program poate fi lansat n execuie.

Etapa 3: testarea procedurii


Pentru realizarea codului procedurii: se poziioneaz cursorul pe codul procedurii introduse, se face clic pe butonul Run Macro de pe bara de instrumente standard sau se folosete tasta F5, dup care pentru exemplul de program de mai sus se va introduce o dat calendaristic n caseta de dialog afiat i se d clic pe butonul de comand OK, conform instruciunilor programului:

i se continu pentru exemplul nostru cu afiarea urmtorul mesajul va fi afiat:

102

dup care se d clic pe OK.Dac ziua introdus este luni, de exemplu, va aprea urmtorul mesaj: Succes la Seminarul de Info.

4.9. Elementele limbajului VBA


4.9.1. Variabile, constante i tipuri de date
Tipuri de variabile Variabilele permit stocarea valorilor intermediare n orice moment al execuiei codului VBA pentru a putea fi folosite ulterior pentru a efecua calcule, comparaii, teste etc. Variabilele sunt identificate printr-un nume ce le permite s fac referin la valoarea pe care o au, i printr-un tip ce determin natura datelor pe care le pot stoca. Tipuri NUMERICE Tip

Domeniu

Byte (octet) Integer (ntreg) Long (ntreg lung) Single (simpl precizie)

Double precizie)

(dubl

0 la 255 -32768 la 32767 -2 147 483 648 la 2 147 483 647 -3,402823E38 la 1,401298E-45 (valori negative) 1,401298E-45 la 3,40282E38 (valori pozitive) -1,79769313486231E308 la 4,94065645841247E-324 (valori negative) 4,9406545841247E-324 la

Dimensiun e (n octei) 1 2 4 4

103

Currency (valut cu virgul fix)

1,979769313486231E308 (valori pozitive) -922 337 203 685 477,5808 la 922 337 203 685 477,5807

Tip

Domeniu

Decimal

+/-79 228 162 514 264 337 593 543950335 far separator zecimal +/-7,92281625142643375935439503 35 cu 28 cifre n dreapta separatorului zecimal; cel mai mic numr diferit de zero este +/-0.00000000000000000000000000 01

Dimensiun e (n octei) 12

Tipul IR DE CARACTERE: Tipul String: exist dou tipuri de astfel de iruri: irurile de lungime variabil pot conine n jur de 2 miliarde de caractere, irurile de lungime fix pot conine de la 1 la aproximativ 64 Ko de caractere Exemplu:
sir de lungime variabila Dim Adresa As String sir de lungime fixa(20 caractere) Dim Nume As String*20

Tipul BOOLEAN: variabila poate lua valoarea True (Adevrat) sau False (Fals) care este valoarea sa implicit. Ocup doi octei. Tipul DATE: variabila poate lua valori de dat i or ncepnd cu 1 ianuarie 100 pn n 31 decembrie 9999. Ocup opt octei. Tipul VARIANT: variabila permite stocarea valorilor de date diferite: date, numere cu virgul mobil, iruri de caractere, referine la obiecte,

104

etc. Ocup 16 octei plus unul pentru fiecare caracter dac valoarea este un ir. Tipul OBJECT: variabila permite stocarea referinei la un obiect sub forma unei adrese cu 4 octete. Acesta este un tip generic, ns pentru a obine performane superioare este preferabil folosirea unui nume de obiect aa cum acesta este definit n zona Classes al Exploratorului de obiecte. Exemplu: Deschiderea bazelor de date Access folosind tipul generic Object sau pornind de la obiectul Database.
Dim dbsEmp As Object Dim dbsArt As Database Set dbsEmp = OpenDatabase(D:\Carte_VBA & Angajati.mdb) Set dbsArt = OpenDatabase(D:\Carte_VBA & _ Articole.mdb)

Tipul DEFINIT DE UTILIZATOR (USER DEFINED): este folosit n special pentru declararea variabilelor ce conin mai multe tipuri de informaii. Definirea acestui tip nu se poate face dect n seciunea de declarare a modulului. Exemplu: Declararea unui nou tip definit de utilizator, Angajai:
Public type Angajati Matricola As String*5 Nume As String*30 Varsta As Integer Departamentul*10 End Type

Utilizarea tipului Angajai:


Dim NouAngajat As Angajat NouAngajat.Matricola= 15235 NouAngajat.Nume= Popescu ...

Declararea variabilelor Exist dou modaliti de a declara variabilele: implicit i explicit. Declararea implicit

105

n momentul n care VBA ntlnete o variabil care nu face obiectul unei declaraii explicite, o va declara n mod implicit, oferindu-i un tip Variant. Tipul Variant permite stocarea succesiv a unor valori de tip diferit n aceeai variabil. Tipul variabilelor evolueaz n funcie de valoarea care i este atribuit. Exemplu:
Private Sub Atribuire() Tipul variabilei devine String var = Buna ziua MsgBox TypeName(var) Tipul variabilei devine Integer var = 12 MsgBox TypeName(var) Tipul variabilei devine Double var = 6.55957 MsgBox TypeName(var) Tipul variabilei devine Boolean var = True MsgBox TypeName(var) EndSub

Declararea explicit Variabila este declarat nainte da a fi folosit. Este posibil s se impun declararea explicit a variabilelor folosind instruciunea Option Explicit din seciunea de declarare a fiecrui model. Pentru ca aceast instruciune s fie definit by default n VBA, se activez opiunea Declararea obligatorie a variabilelor din meniul Tools Options Edit. Declararea explicit a variabilelor se poate face n seciunea de declarare a modulelor sau n cadrul unei proceduri sau funcii. Declararea este realizat de ctre una dintre urmtoarele patru instruciuni ce folosesc aceeai sintax: la nivelul unei proceduri sau funcii sintaxa este urmtoarea:
Dim <Numevariabila> [As Type] Static <Numevariabila> [As Type]

la nivelul unui modul, sintaxa este urmtoarea:


Private <Numevariabila> [As Type]

106

Public <Numevariabila> [As Type]

De fiecare dat cnd instruciunea Dim este executat, variabila este reiniializat (0 pentru tipul numeric, mulime vid pentru tipul String, Empty pentru tipul Variant). Dac este necesar pstrarea valorii precedente, trebuie folosit Static n locul instruciunii Dim. Observaie: Dac nu se precizeaz nici un tip (ex: dim var), tipul Variant este atribuit implicit variabilei. Domeniul variabilelor O variabil este numit local, a unei funcii sau proceduri dac este declarat n cadrul unei funcii sau proceduri cu Dim sau Static. Aceasta nu este recunoscut n afara funciei sau procedurii. O variabil poate fi vizibil din toate procedurile sau funciile unui modul (standard, de clas, formular sau raport) dac este declarat n seciunea de declarare a modulului Private (sau Dim). O variabil este public ntregii aplicaii, adic este vizibil din orice loc al apliciei, dac este declarat n seciunea de declarare a modulului Public. Observaie: Pentru a se face referin unei variabile publice ce se gsete ntr-un alt modul, trebuie folosit sintaxa urmtoare:
Forms! <NumeFormular>.<NumeVariabila> Reports! <NumeRaport>.<NumeVariabila>

Tipul TABLOU Un tablou se declar n acelai mod ca i variabilele, cu ajutorul instruciunilor Dim, Static, Private sau Public. Un tablou este o variabil ce prezint mai multe compartimente ceea ce i permite s stocheze tot attea valori. Un tablou poate avea pn la 60 de dimensiuni. Se poate face referin la un tablou n mod global sau n mod individual, atribuind elementelor sale notaia cu indici. Oricare ar fi tipul elementelor, un tablou necesit 20 de octei de memorie, crora li se adaug 4 octei pentru fiecare dimensiune i numrul de octei ocupai de ctre date. Dac tipul de date nu este specificat, elementele tabloului declarat primesc tipul Variant.

107

Primul element al unui tabel i atribuie indicele 0, implicit. Este posibil ns stabilirea acestei valori implicit la 1 folosind instruciunea Option Base 1 din seciunea de declarare. n acelai timp, folosire unei clauze, To, permite definire explicit a indicilor de la nceput la sfrit. Exemple: Declararea unor tablouri diferite:
12 elemente indexate de la 0 la 11 Dim Cheltuieli (11) As Single 12 elemente indexate de la 1 la 12 Dim Plati (1 To 12) As Single 2 dimensiuni: prima indexata de la 0 la 10 si a doua de la 1 la 15 Dim Facturi (10, 1 To 15) As String Option Base 1 12 elemente indexate de la 1 la 12 Dim Plati (12)

Folosirea unui tablou bidimensional. Exemplul urmtor permite crearea unui tabel de nmulire: fiecare element din tabelul Multiply este egal cu rezultatul nmulirii indicilor si.
Dim Multiply(1 To 10, 1 To 10) As Integer Dim i,j As Integer Initializarea tabloului For i = 1 To 10 For j = 1 To 10 Multiply(i,j) = i*j Next j Next i MsgBox (Multiply(4,7) MsgBox (Multiply(7,4)

Tablouri dinamice Este vorba de tablourile ale cror dimensiuni sunt definite n momentul execuiei. Aceasta permite optimizarea spaiului de memorie ocupat. Declararea tablourilor:
Dim Table ()

108

Utilizare: naintea utilizrii, tabloul trebuie dimensionat cu ajutorul instruciunii ReDim:


ReDim Table (15 To 50)

Instruciunea ReDim se poate folosi pentru a modifica tabloul dinamic de attea ori ct este nevoie. Implicit, valorile prezentate, n tablou sunt anulate. Instruciunea ReDim Preserve permite ntinderea unui tablou n acelai timp pstrnd valorile existente.
ReDim Preserve Table (15 To 70)

Constante n VBA O constant reprezint o valoare numeric sau de tip ir, ce nu trebuie modificat. Instruciunea Const permite declararea unei constante i definirea valorii sale fixe. Odat declarat, o constant nu mai poate fi modificat, nici nu mai poate primi o valoare nou. Declararea unei constante se realizeaz ntr-o procedur sau n seciunea de declarare a unui modul. Constantele la nivelul modulului sunt private, implicit. Pentru a declara o constant public, este necesar ca instruciunea Const s fie precedat de cuvntul cheie Public. Exemple: Declarare:
Public Const Societate = Editura Mirton Const Black = &Ho&

Utilizare:
NameSocietate= Societate Form!Angajati!Prenume.BlackColor = Black

Constantele intrinseci Acestea sunt constante puse la dispoziie chiar de ctre aplicaii. Astfel, Access 2002 posed propriile sale constante intrinseci care sunt vizibile n exploratorul de obiecte. O constant intrinsec poate fi folosit ntr-un macro sau n codul VBA. Constantele intrinseci sunt caracterizte de un prefix de 2 litere ce identific biblioteca de obiecte unde constanta este definit. Constantele bibliotecii Microsoft Access primesc Prefixul ac; constantele bibliotecii Visual Basic au ca prefix vb. Exemple:
acForm

109

vbCurrency

Exist mai multe categorii de constante intrinseci: constante de aciune, constante de proceduri eveniment, etc.

4.9.2. Structurile de decizie i selecie


Deseori este necesar testare condiiilor specifice naintea executrii instruciunilor. Structurile de decizie sunt numite i alternative, permit alegerea alternativei, la sfritul unei evaluri. Se disting dou structuri de decizie i selecie:
IF...THEN...ELSE SELECT...CASE

Funcia IIF poate fi utilizat i pentru a defini o valoare n funcie de o condiie. INSTRUCIUNEA IF IF Permite executarea instruciunilor n funcie de rezultatul unei condiii. n general, instruciunile IF...THEN...ELSE pot conine alte structuri de decizie de attea ori ct este necesar. Sintaxa multilinie cu indentarea corespunztoare este mai uor de utilizat. Sintaxa 1 (pe o singur linie)
If <conditie> Then <instructiuni> [Else <instructiuni>]

poate fi alctuit de mai multe instruciuni separate de : Sintaxa 2 (pe mai multe linii)
<instructiuni> If <conditie 1 > Then <secventa de instructiuni 1> [ElseIf <conditie 2 > Then <secventa de instructiuni 2>] [Else <secventa de instructiuni 3>] EndIf

Alte posibiliti:
If <conditie 1 > Then <secventa de instructiuni 1> [Else If <conditie 2 > Then <secventa de instructiuni 2>] [Else <secventa de instructiuni 3>]

110

EndIf] EndIf

Exemplu: Afiarea rezultatului comparaiei ntre A i B:


If A>B Then MsgBox A>B Else If A=B Then MsgBox A=B Else MsgBox A<B EndIf EndIf

INSTRUCIUNEA SELECT...CASE Select Case Execut secvenele de instruciuni specificate n funcie de valoarea unei expresii. Permite nlocuirea lui ELSE IF n instruciunile IF...THEN...ELSE n timpul comparaiei ntre o expresie i mai multe valori. Sintaxa:
Select Case <expresia de testat> [Case <lista de expresii 1> <secvena de instruciuni 1>] [Case <lista de expresii 2> <secvena de instruciuni 2>] [Case Else <secvena de instruciuni 3>] End Select

<list de expresii> poate lua formele urmtoare: Valoare (Ex. Case 10) list de valori (Ex. Case 1, 5, 10) plaj de valori (Ex. Case 1 To 5) expresie condiionat(Ex. Case Is >= 5) Exemplu: Afiarea unui comentariu despre temperatur

111

Select Case Temperatura Case 0 MsgBox(Ger) Case 1 to 10 MsgBox(Frig) Case 10 to 16 MsgBox(Rcoare) Case 17, 18, 19 MsgBox(Temperatura interioar iarna) Case 20 to 25 MsgBox(Agreabil) Case Is > 25 MsgBox(Cald) Case Else MsgBox(Temperatura nerefereniat) End Select

FUNCIA IIF IIf Returneaz o valoare n funcie de o condiie. Sintaxa:


IIf (<conditie>, <valoare dac Adevrat>, _ <valoare dac Fals>)

Exemplu:
Dim bln As Boolean Bln = IIF(A=B, True, False)

Este posibil utilizarea mai multor imbricri ale funciei IIF. Exemplu:
Dim IntI As Integer IntI = IIf(A = B, IIf(B = C, 1, 0),0)

STRUCTURI ITERATIVE Structurile iterative sau repetitive permit repetarea execuiei unui ansamblu de aciuni. Se pot distinge mai multe tipuri de structuri iterative:
Do...Loop While...Wend For..Next For Each...Next

112

Do...Loop i While...Wend repet o prelucrare a datelor pn cnd o anumit condiie este realizat, n timp ce For..Next efectueaz o prelucrare de un numr stabilit de ori, n funcie de contor. For Each...Next permite parcurgerea elementelor unei colecii. INSTRUCIUNEA DO...LOOP
Do ...Loop

Execut o secven de instruciuni n timp ce (While) sau pn cnd (Until) condiia specificat este verificat. Sintaxa 1: secven de instruciuni neexecutat (condiia a fost testat naintea secvenei).
Do [{While|Until}<conditions>] <Secventa de instructiuni> [Exit Do] <Secventa de instructiuni> Loop

Sintaxa 2: secven de instruciuni executat cel puin odat (condiie testat dup secven).
Do <Secventa de instructiuni> [Exit Do] <Secventa de instructiuni> Loop [{While|Until}<conditions>]

Observaie: Exit Do este deseori folosit dup evaluarea unei condiii interne iteraiei i permite ieirea din aceasta fr verificarea condiiei de control. Exemplu: Calcularea i afiarea cheltuielilor anuale:
Dim intCpt Integer Dim CheltAn As Currency CheltAn = 0 IntCpt = 0 Do IntCpt = IntCpt + 1 CheltAn = CheltAn + CheltTot(IntCpt) Loop Until IntCpt = 12 MsgBox (Cheltuieli Anuale = & CheltAn)

113

INSTRUCIUNEA WHILE...WEND
While...Wend

Execut o secven de instruciuni atta timp ct condiia specificat este verificat. Sintax:
While <conditie> < secven de instruciuni> Wend

Exemplu: Calcularea i afiarea cheltuielilor anuale. Dim intCpt Integer Dim CheltAn As Currency CheltAn = 0 IntCpt = 1 While IntCpt <= 12 CheltAn = CheltAn + CheltTot(IntCpt) IntCpt = IntCpt + 1 Wend MsgBox (Cheltuieli Anuale = & CheltAn INSTRUCIUNEA FOR...NEXT
For...Next

Permite repetarea executrii unei secvene de instruciuni n funcie de un contor. Sintax:


For <contor> = <inceput> to <sfarsit> [Step p] <secventa de instructiuni> [Exit For] <secventa de instructiuni> Next <contor> [, <contor 2>] [,...]]

Observaie: Exit For, deseori amplasat dup evaluarea unei condiii, permite ieirea forat dintr-o iteraie. Exemplu: Calcularea i afiarea cheltuielilor anuale
Dim intCpt Integer Dim CheltAn As Currency

114

CheltAn = 0 For IntCpt 1 To 12 CheltAn = CheltAn + CheltTot(IntCpt) Next MsgBox (Cheltuieli Anuale = & CheltAn)

Cuvntul cheie Step permite incrementarea i decrementarea printr-un pas specificat a variabilei contor. Exemplu: Variabila contor j este incrementat cu 5 la fiecare iteraie. La sfrirea iteraiilor, totalul corespunznd sumei de la 5 la 10, 15 i 20.
Dim j As Integer Dim total As Integer total = 0 For j =5 To 20 Step 5 Total = total + j Next j MsgBox (Totalul este de & total)

INSTRUCIUNEA FOR EACH...NEXT


For Each...Next

Permite parcurgerea tuturor elementelor unui tablou (sau a unei colecii). Sintax:
For Each <element> In <tablou>/<colecie> <secven de instruciuni> [Exit For] <secven de instruciuni> Next [element]

Exemplu: Afiarea cheltuielilor lunare (conform exemplului For...Next):


Dim Cheltuieli As Currency For Each Cheltuieli In CheltLunare MsgBox (Cheltuieli) Next

4.9.3. Operatori n VBA


Operatorii permit efectuarea operaiilor aritmetice cu variabile i/sau constante, comparaia variabilelor ntre ele, testarea mai multor condiii, etc. Se disting mai multe categorii de operatori:

115

Operatori aritmetici Operatori relaionali Operatori logici Operatori de concatenare

Observaie: Operatorul de atribuire este semnul egal =. Valoarea expresiei din dreapta semnului este atribuit variabilei situate la stnga semnului (ex: IntA=12, IntA=IntB*12). OPERATORII ARITMETICI Permit efectuarea calculelor aritmetice pornind de la variabile i/sau de la constantele numerice. Operator Operaie + Adunare Scdere / mprire avnd ca rezultat un numr cu virgul mobil Mod Restul mpririi dintre dou numere \ mprire avnd ca rezultat un numr ntreg. * nmulire ^ Ridicare la putere OPERATORI RELAIONALI Permit compararea a dou valori numerice sau a dou iruri de caractere. Operator Operaie < Mai mic dect... <= Mai mic sau egal cu... > Mai mare dect... >= Mai mare sau egal cu... = Egal cu... <> Diferit de... Instruciunea Option Compare utilizat la nivelul modulului permite definirea metodei de comparare implicit, care este cea mai potrivit pentru compararea irurilor de caractere. Aceasta poate lua trei valori: Compare Binary (opiune implicit) furnizeaz compararea ntre iruri bazate pe un ordin de triere provenit din reprezentarea binar intern a caracterelor. Compare Text furnizeaz comparaii ntre iruri bazate pe un ordin de triere ce nu face distincia dintre literele mari i cele mici.

116

furnizeaz comparaii ntre iruri bazate pe un ordin de triere determinat de ctre identificatorul de parametrii ai bazei de date curente.
Compare Database

117

OPERATORI LOGICI Permit testarea simultan a dou (sau mai multe) valori logice sau expresii ce returneaz acest tip de valoare. De obicei, aceti operatori sunt folosii cu instruciunea IF. Operator And Operaii Dac toate expresiile au valoarea True, rezultatul este True. Dac una din expresiile are valoarea False, rezultatul este False. Dac cel puin una dintre valori are valoarea True, rezultatul este True. Dac doar una dintre expresii are valoarea True, rezultatul este True (sau exclusiv). Returneaz contrariul expresiei. Returneaz True dac cele dou expresii sunt identice.

Or Xor Not Eqv

OPERATORUL DE CONCATENARE Operatorul de concatenare este semnul &. Aceasta permite alipirea irurilor de caractere, valori i expresii. Rezultatul este un ir de caractere. Prioritatea operatorilor Atunci cnd mai muli operatori apar n aceeai expresie, fiecare este evaluat ntr-o ordine predefinit, numit prioritatea operatorilor. Operatorii sunt evaluai n ordinea urmtoare: operatori aritmetici, operatori relaionali, operatori logici. Operatorii relaionali au aceeai prioritate, adic sunt evaluai n ordinea apariiei lor, de la stnga la dreapta. Operatorii aritmetici i logici sunt evaluai n ordinea urmtoare de prioritate (de la stnga la dreapta): aritmetici: ^, *, /, Mod, +, logici: Not, And, Or, Xor, Eqv

4.9.4. Instruciuni utilizate cu obiecte n VBA


INSTRUCIUNEA WITH Permite accesul repetat la acelai obiect numindu-l doar o singur dat. Ofer mai multe avantaje. - optimizeaz timpul de executare a codului, - ctig timp n scriereea codului,

118

- face codul mai lizibil. Sintaxa:


With <object> <cod utiliznd metode i proprieti> <ce se raporteaz la obiect> EndWith

Exemplu: Obiect formular activ


With Screen.ActiveForm .Caption = Formular de plata .Controls(CmdValidare).Enabled = False GoToPage2 EndWith

INSTRUCIUNEA FOR EACH...NEXT Permite trecerea n revist a obiectelor unei colecii sau a elementelor unui tabel. Sintax:
For Each <element> In <tabel>|<colecie> <secven de instruciuni> [Exit For] <secven de instruciuni> Next <element>

Exemplu: Exemplul urmtor permite atribuirea unei culori de font fiecrui Control al formularului Angajat, n funcie de tipul su (proprietate ControlType). De asemenea, acesta folosete colecia by default al obiectului Form (Screen .ActiveForm .Controls)
Dim ctl As Control For Each ctl In Screen.ActiveForm `Parcurgerea controalelor formularului activ With ctl Select Case.Control Type ` Etichete .ForeColor = vbBlue ` Zone de text Case acTextBox .Forecolor = vbYellow Case acLabel

119

` Liste derulante Case acListBox, acComboBox .ForeColor =vbRed EndSelect EndWith Nextctl

3.4.3. INSTRUCIUNEA IF...TYPE OF Permite testarea tipului de obiect. Sintax:


If TypeOf <object> Is <TypeObject> Then <cod ce folosete metode i proprieti> <ce se raporteaz la obiect> EndIf

Exemplu:
If TypeOf ctl Is acListBox Then...

INSTRUCIUNEA SET Permite atribuirea unei referine de obiect unei variabile, numite variabil obiect. Aceast instruciune poate fi utilizat pentru crearea unei referine spre un obiect nou (utiliznd eventual o metod ce permite crearea unui obiect) sau pentru atribuire unei referine unui obiect deja existent. Sintax: Crearea unei referine la un obiect nou
Set <NameObject> = sau Set <NameObject> = <metode ce permit crearea unui obiect> New <expression object>

<NameObject> numele variabilei obiect <expression object> numele unui obiect sau a unei variabile obiect de acelai tip. Cuvntul cheie New permite crearea unei noi instane de clas. Dac variabila obiect conine deja o referin, aceasta este tears. Observaie: Nu se poate folosi cuvntul cheie New pentru a face referin la un obiect dect dac componenta ActiveX a obiectului furnizeaz o bibiliotec (ex: obiecte ADO, obiecte Excel).

120

Atribuirea unei referine unui obiect existent:


Set <NameObject> = <expresie obiect>

<NameObject> numele variabilei obiect <expression object> numele unui obiect sau a unei variabile obiect de acelai tip. Reiniializarea variabilelor obiect
Set <NameObject> = Nothing

permite reiniializarea variabilei obiect i eliberarea totalitii resurselor sistem i memorie asociate obiectului. Exemple: Crearea referinelor la un obiect nou. Exemplele 1 i 2 permit crearea unui index nou sau completarea bazei de date curente. Pentru efectuarea acestor exemple, trebuie selectat referina proiectului Microsoft DAO 3.6 Object Library. (Tools-References)
Nothing

Exemplul 1: Utilizarea cuvntului cheie New


Dim tdfClient As DAO.tabledef Dim fld As DAO.Field ` Creeaz definiia tabelului Set tdfClient = New DAO.tabledef tdfClient.Name = Clienti ` Creeaz primul camp Set fld = New DAO.Field With fld .Name = Cli_Nume .Type = dbText .Size = 40 End With tdfClient.Fields.Append fld ` Creeaz al doilea cmp Set fld = New DAO.Field With fld .Name = Cli_Efectivi .Type = dbInteger End With tdfClient.Fields.Append fld

121

`Adaug tabelul la baza de date curent Application.CurrentDb.TableDefs.Append tdfClient `Reiniializeaz variabila obiect Set tdfClient = Nothing Set fld = Nothing

Exemplul 2: Aceeai prelucrare a datelor, utiliznd metodele


Dim tdfClient As DAO.tabledef Dim fld As DAO.Field ` Creaz definiia tabelului Set tdfClient = CurrentDb.CreateTableDef(Clieni) With tdfClient ` Creaz primul cmp Set fld =.CreateField(Clieni_Nume,dbText,40) .Fields.Append fld ` Creaz al doilea cmp Set fld =.CreateField(Clieni_efectiv,dbInteger) End With `Adaug tabelul la baza de date curent CurrentDb.TableDefs.Append tdfClient `Reiniializeaz variabila obiect Set fld = Nothing Set tdfClient = Nothing

Exemplul 3: Crearea unui formular cu o zon de texte i etichet.


`Obiect formular Dim frmEmploye As Form `Numele formularului Dim strName As String `Obiect control Dim ctl As Control `Crearea unui formular nou Set frmEmploye = Application.CreateForm With frmEmploye `Titlul formularului .Caption = Total `Limea i lungimea formularului .Width = 5000 .Section(acDetail).Height = 2000 `tergerea butoanelor de depalsare

122

.NavigationButtons =False `terge selectorul de nregistrare .RecordSelectors =False `Centreaz formularul n aplicaie .AutoCenter = True `Numele aplicaiei strName =frmEmploye.Name End With `Adugarea zonei de text numele angajatului Set ctl = Aplication.CreateControl(strName,_ acTextBox, , , 2000, 500, 2500,300) `Redactarea zonei de text With ctl `Numele zonei de text .name =txtNom `Culori .BackColor = vbWhite .ForeColor = vBlack .FontBold = True EndWith `Adugarea etichetei numele angajatului Set ctl = Application.CreateControl(strName,_ acLabel, , , ,500, 500, 1500, 300) `Redactarea etichetei With ctl `Numele etichetei .Name = lblNom `Titlul etichetei .Caption = Numele angajatului: `Culori .BackColor = vbWhite .ForeColor = vbBlue End With `Salvarea formularului DoCmd.Save, Angajai Docmd.close

4.9.5. Regulile de scriere a codului surs VBA 123

COMENTARIILE Permit explicarea unui program pentru a-l face mai uor de neles. Sintax:
Rem <commentariu> sau <commentariu>

Exemplu:
Rem Procedura ce permite comparatia zonei de txtA cu txtB Private Sub cmdRezultat_Click() If txtA > txtB Then labelRezultat.caption = A>B Else If txtA = txt B Then labelRezultat.caption = A = B Else labelRezultat.caption = A<B EndIf EndIf End Sub

CARACTERUL DE CONTIUARE (LINIUA DE SUBLINIERE) O instruciune VBA poate fi scris pe mai multe linii cu ajutorul liniuei de subliniere precedat de un spaiu ( _ ) Exemplu:
If a _ > _ b then _

Bineneles acest exemplu nu necesit o programare structurat, ns atrage atenia asupra faptului c o linie de cod poate fi scindat n orice loc. INDENTAREA Este important ca instruciunile de acelai nivel s se gseasc n acelai aliniat. nceputul i sfritul procedurii fiind aliniate la stnga, coninutul trebuie decalat puin n interior, la dreapta. Aceste indentri permit structurii procedurii s devin mai uor de citit.

4.9.6. Numele procedurilor, variabilelor i constantelor 124

Numele procedurilor, variabilelor i constantelor trebuie s respecte urmtoarele reguli: s nceap cu o liter, s nu fie alctuit din mai mult de 225 de caractere, pot fi compuse din litere, cifre i din liniua de subliniere ( _ ), nu pot include semne de punctuaie sau spaii, s nu corespund cuvintelor rezervate, s fie unice ntr-un program. CONVENIILE DE DENUMIRE N VBA Se recomand folosirea conveniilor de denumire pentru variabile, controale i obiecte. Acestea permit standardizarea codului. CONVENIILE DE DENUMIRE A VARIABILELOR Se recomand folosirea a dou prefixe: primul pentru a preciza domeniul variabilei: g global, m modul, nici un prefix pentru o variabil local, al doilea, pentru a preciza tipul variabilei. Exemplu:
gstrName intQuantity

- variabil global de tip String. variabil local de tip Integer. Tip de variabil Boolean Byte Currency Date, Ora Double Error Integer Long Object Single String User Defined Variant Prefix Bin Byt Cur Dtm Dbl Err int lng obj sng str udt var

CONENIILE DE DENUMIRE A CONTROALELOR

125

Ca i pentru variabile, numele controalelor, formularelor i rapoartelor trebuie prefixate dup tipul lor. Control Prefix ADO Data ado CheckBox chk Zon de list cbo modificabil Command Button cmd Frame fra Option Group grp Image img Label lbl Option Button opt Zona de text txt CONVENIILE DE DENUMIRE A OBIECTELOR Obiectele Access pot fi de asemenea prefixate. Control Prefix Table tbl Query qry Form frm Report rpt Macro mac Index adx Camp fld Colectie col Property pty Pagin de acces la date pag

4.9.7. Clase de obiecte n VBA


O clas este un fel de tipar de unde provin obiectele. Obiectele din aceeai clas motenesc sistematic trsturi din toate metodele (coduri), proprieti (date) i evenimentele claselor lor de origine. Prin urmare, caracteristicile i comportamentul fiecruia vor putea fi adaptate n funcie de necesitile aplicaiei. De fapt, orice obiect Acess provine dintr-o clas. MODULELE DE CLAS

126

Modulele de clas permit crearea i manipularea propriilor tipuri de obiecte n aplicaii. Prezint caracteristicile urmtoare: poart numele obiectului, cuprind procedurile Sub i Function ce corespund metodelor proprii obiectului, includ procedurile Property Get ce permit citirea valorilor proprietilor obiectului i procedurlor Property Set/Property Let permind fixarea valorilor acestor proprieti. Odat ce ansamblul acestor proceduri sunt descrise n cadrul modulului de clas, este posibil crearea unui nou obiect de tipul definit mai sus. Pentru aceasta, este suficient crearea unei noi instane de clas prin intermediul unei variabile obiect de tipul clasei:
Dim <object name> As New <class name>.

Modulele de clas sunt rar utilizate n programarea VBA, adresndu-se n special specialitilor. EXEMPLE DE MODULE DE CLASE Acest exemplu este un ghid pas cu pas n crearea i utilizarea unui modul de clas. Modulul creat va permite afiarea mesajelor utilizatorului. Acest modul prezint urmtoarele elemente: o metod Confirmation ce afieaz o csu de dialog care invit utilizatorul s rspund Da sau Nu la o ntrebarea i primete rspunsul utilizatorului, dou proprieti: proprietatea IsBeep indic dac un beep trebuie emis naintea afirii mesajului; proprietatea Title ce conine titlul csuei de dialog. Exemplu: Pentru a crea un modul de clas, se selecteaz opiunea Class Module (modul de clas) al meniul Insert.

127

Se definete numele clasei n cmpul Name.

Dac fereastra Properties nu este afiat, se alege opiunea Window Properties din meniul View sau se folosete tasta F4. Pentru utilizarea proprietilor n modulul de clas Message, se definesc variabilele necesare. Variabila strTitle este asociat proprietii Title, iar variabila blnBeep proprietii IsBeep.
Option Compare Database Option Explicit `Emiterea beep-ului Dim blnBeep As Boolean `Titlul ferestrei MsgBox Dim strTitle As String

Proprietile IsBeep i Title sunt create folosind opiunea Procedure din meniul Insert.

128

Sunt create pentru fiecare proprietate procedurile Property Get i Property Set; pentru obinerea codului urmtor, acestea sunt modificate:
Public Property Get IsBeep() As Boolean Is Beep = blnBeep End Property Public Property Let Is Beep(ByVal blnNewValue As Boolean) blnBeep = blnNewValue End Property Public Property Get Title() As String Title = strTitle End Property Public Property Let Title(ByVal strNewValue As String) StrTitle = strNewValue End Property

Apoi se creaz metoda confirmrii folosind opiunea Procedure al meniului Insert.

129

Se modific procedura Confirmation pentru obinerea codului urmtor:


Public Function Confirmation(strMsg) As Boolean Is MsgBox(strMsg, vbYesNo, strTitle) = vbYes Then Confirmation = True Else Confirmation = False EndIf If blnBeep Then Beep EndFunction

Se poate observa c aceast metod folosete cele dou variabile, strTitle i blnBeep. Metoda a fost creat ca o funcie deoarece returneaz rspunsul utilizarului sub forma unei variabile logice (boolean). Odat creat, aceast clas va fi utilizat pornind de la un formular. n acest scop, se va crea un formular Angajai cu dou butone de comand cmdClose i cmdQuit. Se atribuie codul de mai jos evenimentelor click:
Private Sub CmdInchidere_Click() `Obiect mesaj Dim Msg as New Message `Fr emiterea unui beep msg.IsBeep = False

130

`Titlul csuei de dialog msg.Title = Aplicatie gestiunea personalului `Cerere de confirmare If msg.Confirmation(Doriti inchiderea formularului & ?) Then DoCmd.Close EndIf EndSub Private Sub CmdTerminare_Click() `Obiect mesaj Dim msg As New Message `Emiterea unui beep msg.IsBeep = True ` Titlul casutei de dialog msg.Title = Aplicatie `Cerere de confirmare If msg.Confirmation(Doriti sa parasiti aplicatia ? Then _ DoCmd.Quit EndIf EndSub gestiunea personalului _

Apoi se tasteaz formularul. Csua de mesaj afiat de metoda Confirmation utilizeaz cele dou proprieti i returneaz rspunsul utilizatorului. Modulul de clas Message poate fi mbuntit definind proprietile i metodele noi (ex: mesajele n caz de eroare).

4.9.8. Exploratorul de obiecte n ACCES


innnd cont de numrul important de obiecte Access i de diversitatea lor, este util cutarea rapid a informaiilor despre acestea. Exploratorul de obiecte permite afiarea informaiilor referitoare la obiecte, metode, proprieti, evenimente i constante. Exploratorul poate fi afiat n moduri diferite: alegnd opiunea Object Browser din meniul View, folosind tasta F2, fcnd dublu clic pe icoana .

131

unde: - list de biblioteci de obiecte. -elemente cutate: obiect, proprietate, colecie, eveniment, metod, etc.

- rezultatul cutrii: lista claselor de obiecte (obiecte i colecii) i a componentelor sale (obiect, colecie, proprietate, eveniment sau metod). Cuvntul cutat se poate gsi n lista claselor sau n aceea a componentelor.

132

- obiecte ale bibliotecii, clasa obiectului selectat este inclus n lista Result.

- metode, proprieti, evenimente i constante raportndu-se la obiectul selectat sau inclus n lista din stnga. Componentul selectat este inclus n lista Result.

- detaliu al elementului selectat. CUTAREA CU EXPLORATORUL DE OBIECTE Pentru a efectua o cutare n exploratorul de obiecte, se procedeaz astfel: se tasteaz cuvntul cutat n a doua linie derulant, se face clic pe icoana Search , dac fereastra Results afieaz mai multe linii, deplasai-v pe aceea care v intereseaz i partea de jos a ferestrei este actualizat.

133

4.9.9. Gestionarea evenimentelor n ACCESS


ASOCIEREA CODULUI VBA LA UN EVENIMENT Un cod VBA poate fi atribuit unui obiect n dou modaliti: pornind de la compartimentul Eveniment al ferestrei de proprieti al obiectului n Acces

pornind de la listele derulante de obiecte i evenimente editorul Visual Basic

CATEGORII DE EVENIMENTE Listele urmtoare de evenimente sunt clasate dup tip, i cuprind: numele evenimentului, numele proprietii corespunztoare din fereastra de proprieti ale obiectului (ntre paranteze), descrierea evenimentului, coloana din dreapta (Anulare) arat dac evenimentul poate fi anulat. Anularea unui eveniment face obiectul paragrafului 6.3.

134

EVENIMENTELE DE TIP FORM (FEREASTR) Anulare Open Are loc la deschiderera formularului dar naintea afirii primei nregistrri. Are loc la deschiderea unu raport dar naintea listarii (la ncrcare) Are loc la deschiderea formularului cnd este afiat prima nregistrare. (la redimensionare) Are loc la prima afiare a formularului i la modificrile aduse mrimii acestuia. (la descrcare) Are loc la nchidere cnd nregistrrile sunt descrcate, ns nainte ca formularul s dispar. (la nchidere) Are loc atunci cnd formularul sau raportul dispar la nchidere. DA NU NU DA NU

Load Resize UnLoad Close

EVENIMENTE DE TIP FOCUS Aceste evenimente se pot aplica formularelor (Activate, Deactivate, GotFocus, LostFocus) sau controalelor (Enter, Exit, SetFocus, LostFocus). Se spune despre obiect c are focus atunci cnd poate accepta schimbri n urma aciunilor utilizatorului prin intermediul mouse-ului sau a tastaturii. Obiectele care au focus sunt numite obiecte active (ActiveForm sau ActiveControl). Anulare Activate Deactivate (la activare) Are loc atunci cnd fereastra formularului sau a raportului este activat. (la dezactivare) Are loc att la activarea unei alte ferestre, (ns nainte ca aceasta s fie activat), ct i la nchiderea ferestrei. (la intrare) Are loc nainte ca un control s primeasc focus, pornind de la un alt control, sau la deschiderea formularului. (la ieire) Are loc nainte ca un control s i piard focus-ul n faa unui alt control din acelai formular sau din altul. (la primirea focusului) Are loc atunci cnd un control sau un formular fr control activ primete un focus. (la pierderea focus-ului) Are loc atunci cnd un NU NU

Enter

NU

Exit

DA

GotFocus

NU NU

LostFocus

135

control sau un formular pierde focus-ul. EVENIMENTE DE TIP DATE Se aplic formularelor asociate unei surse de date (proprietatea RecordSource pornind de la numele unui tabel sau de la o interogare). Acest tip de evenimente se mai aplic controalelor asociate unui cmp al sursei de date a formularului (proprietatea ControlSource). Anulare AfterInsert AfterUpdate (dup inserare) Are loc dup adugarea unei noi nregistrri n tabel. (dup MAJ) Are loc dup actualizarea unui control sau a unei nregistrri cu date modificate. (dup tergere) Are loc dup ce utilizatorul a rspuns cererii de tergere a nregistrtilor. (naintea inserrii) Are loc cnd se tasteaz primul caracter al unei noi nregistrri, ns naintea nregistrrii propriu-zise. (nainte de MAJ) Are loc naintea actualizrii unui control sau a unei nregistrri cu date modificate. (naintea tergerii) Are loc dup ce utilizatorul a a ters nregistrrile dar nainte ca Access s cear confirmare. (la absena din list) Are loc atunci cnd tastarea unei valori nu se gsete pe list i proprietatea limitat la list este adevrat. (n momentul activrii) Are loc atunci cnd focus-ul trece dintr-o nregistrare n alta. De asemenea, are loc la deschidere nainte ca prima nregistrare s devin cea curent. (n momentul efecturii unei schimbri) Are loc n momentul modificrii coninutului unei zone text sau list (tastatur sau macro/Visual Basic). (la MAJ) Are loc atunci cnd datele unui obiect OLE au fost modificate. (la tergere) Are loc naintea tergerii NU NU NU DA

AfterDel Confirm BeforeInsert

BeforeUpdate

DA

BeforeDel Confirm NotInList

DA

NU

Current

NU

Change

NU

Updated Delete

NU DA

136

propriu-zise. Anulare Dirty Se produce atunci cnd coninutul unui formular sau a prii text al unei zone de list se schimb i la trecerea de la o pagin n alta a unui control. DA

EVENIMENTE DE TIP MOUSE Anulare Click DblClick MouseDown MouseMove MouseUp Are loc cnd de efectueaz clic stnga pe un control sau o zon nou a unui formular. Are loc cnd se efectueaz dublu clic stnga pe un control sau o zon nou a unui formular. Are loc la apsarea unui buton al mouse-ului pe un control sau un formular. Are loc atunci cnd utilizatorul deplaseaz mouse-ul pe un formular sau un control. Are loc atunci cnd utilizatorul nu mai apas cu mouse-ul pe un control sau formular. NU DA DA NU NU

EVENIMENTELE DE TIP TASTATUR Anulare KeyDown Are loc la apsarea unei taste sau la executarea instruciunii SendKeys. ns obiectul poate fi mpiedicat s fie afectat de tastatur atribuind valoarea 0 argumentului Keycode al procedurii KeyDown al obiectului. Are loc la apsarea unei taste ce genereaz un caracater ANSI standard Obiectul poate fi mpiedicat s fie afectat de aciunea tastei atribuind valoarea 0 argumentului KeyAscii al procedurii KeyPress al obiectului. Are loc atunci cnd utilizatorul nu mai apas tasta sau cnd se execut SendKeys. Obiectul poate fi mpiedicat s fie afectat de aciunea

NU

KeyPress

DA(cu macro sau VBA) NU

KeyUp

137

tastei atribuind valoarea 0 argumentului KeyCode al procedurii KeyUp al obiectului. Proprietatea KeyPreview a unui formular determin dac procedurile eveniment de tastatur la nivelul formularului sunt apelate naintea celor de la nivelul controalelor. Proprietatea KeyPreview poate fi folosit pentru a crea o procedur de gestionare la nivelul unui formular. Exemplu: Exemplul urmtor demonstreaz cum se afieaz un formular cnd utilizatorul acioneaz pe tasta F1, oricare ar fi controlul activ.
Private Sub Form_Load() KeyPreview = True End Sub Private Sub Form_KeyDown(KeyCode As Integer, _ Shift As Integer) `Dac tasta este F1, formularul Find este afiat `KeyCode este reiniializat pentru a afia Microsoft _ `Access Help If KeyCode = vbKeyF1 Then DoCmd.OpenFormAfisare KeyCode = 0 End If End Sub

EVENIMENTELE DE TIP PRINT Aceste evenimente se aplic rapoartelor Access: Anulare Format Print Retreat (la formatare) Are loc cnd Microsoft Access determin care date aparin cror seciuni. (la listare) Are loc atunci cnd se redacteaz o seciune pentru listare. (la reformatare) Are loc cnd Microsoft Access revine la o seciune precedent n timpul redactrii unui raport. Are loc atunci cnd Microsoft Access a redactat un raport n scopul listrii sale i cnd acesta nu conine data. Are loc dup ce Microsoft Access a redactat o pagin a unui raport pentru listarea acestuia, dar naintea listrii propriu-zise a paginii. DA DA NU

NoData

DA NU

Page

138

Observaie : Evenimentele Format, Print i Retreat se aplic seciunilor rapoartelor. EVENIMENTELE DE TIP FILTRU Anulare Are loc atunci cnd utilizatorul aplic un filtru. DA ApplyFilter Are loc cnd utilizatorul creaz un filtru. DA Filter EVENIMENTELE DE TIP ERROR I TIMER Anulare Error Timer Are loc cnd survine o eroare. Are loc cnd o ntrziere specific s-a scurs. NU NU

ANULAREA UNUI EVENIMENT n anumite cazuri, este indicat anularea unui eveniment. Exist dou modaliti de a realiza aceasta: Specificnd numele unui macro ce conine aciunea CancelEvent, ca i parametrul proprietii de tip eveniment corespunztoare, de exemplu, pentru a anula actualizarea unui control sau pentru a plasa numele macro-ului ce conine aciunea CancelEvent pe proprietatea sa Before MAJ. Aciunea CancelEvent n VBA folosete aciunea identic din obiectul Docmd. Conferind valoarea True argumentului Cancel a unei proceduri. Exemplu: Dac data este incorect, evenimentul Exit este anulat: cursorul este poziionat pe cmp.
Private Sub txtDateSfarsit_Exit(Cancel As Integer) If IsNull(txtDateSfarsit) Then Exit Sub `Data trebuie s fie corect If Not IsDate(txtDateFin) Then MsgBox(Date incorecte), vbCritical Cancel = True Exit Sub End If `Data de srit trebuie s fie >= ca data de nceput If DateValue(txtDateFin) < DateValue(txtDateDeb) Then MsgBox(Data de sfarsit trebuie sa fie mai _ mare decat data de inceput:), vbCritical

139

Cancel = True Exit Sub End If End Sub

Observaie: Nu toate evenimentele pot fi anulate (vezi tablourile precedente de categorii de evenimente).

SECVENE TIPURI DE EVENIMENTE O aciune utilizator sau sistem genereaz un eveniment n mod direct, ns, n acelai timp, pot fi activate mai multe evenimente subordonate. Urmeaz o suit de secvene tipuri de evenimente: Deschiderea unui formular: Open Load Resize Activate Current nchiderea unui formular: UnLoad Deactivate Close

Intrarea ntr-un control: Enter GotFocus Trecerea dintr-un formular n altul: Exit Lost Focus Modificarea unei zone de text: Deactivate Form1 Activate Form2 Actualizarea unei zone de text: KeyDown KeyPress Change KeyUp Exit (zona1) LostFocus (zona2) GotFocus (zona2) Actualizarea unei nregistrri: KeyDown KeyPress Change KeyUp Before Update (Zone de texte) AfterUpdate (Zone de Texte) BeforeUpdate (Zone de Texte) Before (Formulare) AfterUpdate(Formulare) Introducerea unei nregistrri n primul cmp: KeyDown KeyPress BeforeUpdate (Formular) Change

140

KeyUp tergerea nregistrrilor: Delete Current BeforeDelConfirm AfterDelConfirm EVENIMENTE DE ACTUALIZARE n Microsoft Access evenimentele de actualizare intervin la dou nivele: actualizarea unui control, actualizarea unei nregistrri. n cazul actualizrii unui control, sunt executate evenimentele BeforeUpdate i AfterUpdate ale controlului n cauz. n cazul actualizrii unei nregistrri, sunt executate evenimentele BeforeUpdate i AfterUpdate ale formularului. Evenimentele de actualizare a controlalelor sunt executate naintea evenimentelor de actualizare a formularului.

4.9.10. Proprieti i metode ale obiectelor ACCESS


Aceast parte descrie proprietile i metodele obiectelor utilizate n Access. Obiectele Form i Report vor fi descrise n capitolul 8. Pentru a obine lista exhaustiv a obiectelor, proprietilor i metodelor, se folosete asistentul VBA sau se utilizeaz exploratorulde obiecte. OBIECTUL APPLICATION Obiectul Application face referin la aplicaia activ Microsoft Access. Proprieti: Returneaz obiectul n care un macro sau un alt cod CodeContextObject VBA este n curs de execuie. Returneaz numele obiectului baz de date activ CurrentObjectName (tabel, interogare, formular, raport, macro, modul). Returneaz tipul obiectului de baz de date activ. CurrentObjectType Specific sau determin felul n care Microsoft FeatureInstall Access administreaz apelrile metodelor i proprietilor ce necesit instalare. Returneaz o valoare de tip boolean care indic dac IsCompiled proiectul Visual Basic se gsete ntr-un raport compilat. Determin bara de meniuri de folosit pentru baza de MenuBar date.

141

Name Parent ProductCode ShortcutMenuBar UserControl Visible Metode: AccessError AddToFavorites BuildCriteria CloseCurrentDatabase

Identific numele obiectului. Permite realizarea referinei la obiectul printe. Determin identificatorul universal, unic lui Microsoft Access. Specific meniul contextual ce apare atunci cnd utilizatorul face clic dreapta. Determin dac aplicaia Microsoft Access n curs a fost lansat de utilizator sau de o alt aplicaie. Permite ascunderea aplicaiei.

DefaultWorkspaceClone Echo FollowHyperLink GetOption NewCurrentDataBase OpenCurrentDatabase Quit RefreshDataBase Window

RefreshTitleBar Run

Returneaz irul descriptiv asociat unei erori Microsoft Access sau a unei erori DAO. Adaug o adres de legtur hypertext n dosarul Favorite (Documents). Permite construirea uoar a criterilor unui filtru. nchide baza de date n curs pornind de la o alt aplicaie care a deschis o baz de date cu ajutorul Automation. Creaaz un nou obiect Workspace fr a obliga utilizatorul s se reconecteze. Specific dac Microsoft Access trebuie s redescrie ecranul. Deschide documentul sau pagina Web specificat de o adres hyperlink. Returneaz valoarea n curs a unei opiuni a csuei de dialog Options. Creaz o nou baz de date n fereastra Microsoft Access. Deschide o baz existent ca baz de date curent. Permite prsirea Access. Permite actualizarea ferestrei Database atunci cnd un tabel, o interogare, un formular, raport, macro sau modul au fost creai, teri sau redimensionai. Actualizeaz bara de titlu a Microsoft Access. Permite executarea unei proceduri Function sau Sub specificate de Microsoft Access sau definite de utilizator.

142

RunCommand SetOption

Permite executarea unei comenzi integrate din meniu sau bara de instrumente. Definete valoarea n csua de dialog Options.

Exemplu: Buton de comand ce permite prsirea Access salvnd toate obiectele.


Sub cmdQuit_Click() Application.Quit acSaveYes End Sub

Exemplu: Codul urmtor permite modificarea culorilor implicite a paginilor de date (coninut n DataSheet al csuei de dialog Options din Access).
`Culoarea fontului: albastru nchis Application.SetOption Default Font color, 4 ` Culoarea backgraund-ului: alb Application.SetOption Default Background Color, 15 `Culoarea bordurilor: albastru Application.SetOption Default Gridlines Color, 12

OBIECTUL DOCMD Obiectul DoCmd permite executarea majoritii aciunilor pornind din Visual Basic, via macro-uri. Fiecrei aciuni macro i corespunde o metod. Argumentele aciuni devin argumentele metodei. Obiectul DoCmd nu dispune de proprieti proprii. Observaie: Aciunile macro ce corespund metodelor sunt indicate ntre paranteze.

Executarea aciunii: CancelEvent OpenQuery Quit RunCommand RunMacro RunSql

Anuleaz un eveniment Deschide o interogare. Prsete Access. Execut o comand dintr-un meniu sau din bara de meniuri. Execut un macro. Execut o interogare SQL.

Datele formularelor i rapoartelor:

143

ApplyFilter FindNext FindRecord GotoControl GotoPage GotoRecord

Aplic un filtru unui tabel, formular sau raport. Continu cutarea. Cutarea unei nregistrri. Deplasarea focus-ului asupra unui control. Deplasarea focus-ului asupra primului control al paginii indicate din formularul activ. Gsete nregistrarea.

Importarea/Exportarea datelor: Permite exportarea unui obiect Access (tabel, formular) OutputTo ntr-o alt baz Access sau un alt tip de fiier (Excel, XML). Trimiterea unui obiect. SendObject TransferDatabas Import sau export o baz de date. e Import sau export o foaie de calcul. TransferSpread Sheet Import sau export codul ASCII. TransferText Manipularea obiectelor: nchide un obiect (formular, raport,etc.). Close Permite copierea unui obiect Accesss n aceeai sau n CopyObject alt baz. terge un obiect. DeleteObject Mrete o fereastr. Maximize Micoreaz o fereastr sau o icoan. Minimize Deplaseaz sau redimensioneaz o fereastr. MoveSize Deschide un formular. OpenForm Deschide un modul VBA. OpenModule Deschide o interogare. OpenQuery Deschide un tabel. OpenTable Deschide o pagin de acces la datele bazei. OpenView Listeaz. PrintOut Redenumete un obiect. Rename RepaintObject Actualizeaz datele (relanseaz interogarea surs a Requery obiectului). Red mrimea normal ferestrei. Restore Salveaz obiectul specificat sau cel activat. Save Selecteaz un obiect al bazei de date. SelectObject Dezactiveaz un filtru i reafieaz toate nregistrrile. ShowAllRecords

144

Diverse: AddMenu Beep Echo Hourglass SetMenuItem SetWarnings ShowToolbar

Permite crearea unei bare de meniu sau a unui meniu contextual. Emite un sunet. Mascheaz sau afieaz rezultatul unui macro n momentul executrii sale. Clepsidra cursorului de mouse. Permite definirea raportului (activat sau neactivat, bifat sau nu), elementelor din meniul personlizat sau global. Activeaz / Dezactiveaz afiarea mesajelor standard de avertizare. Afieaz/Ascunde o bar de instrumente.

Aciuni de care obiectul DoCmd nu ine cont: Funcia cutie de mesaje. MsgBox Executarea aplicaiei. Shell Apelarea direct a funciei n Visual Basic. ExecuteCode SendKeys Utilizarea instruciunii SendKeys. Aciunile StopAllMacros i StopMacro nu au un echivalent n Visual Basic. OBIECTUL SCREEN Face referin la un obiect activat fie c este vorba de un formular, o pagin de acces la date, un raport sau un control. Este folosit n principal n procedurile eveniment ale diferitelor obiecte. Acest obiect nu conine dect proprieti. Proprieti: Asigur o referin la un control activ. ActiveControl Asigur o referin la o pagin de acces la datele ActiveDataPage active. Asigur o referin la o foaie activ de date. ActiveForm Asigur o referin la raportul activ. ActiveReport Application Permite accesul la obiectul Application i proprietile acestuia. Permite specificarea tipului de cursor de mouse. MousePointer Asigur o referin la obiectul cadru al unui control, Parent unei aciuni, unui subformular, etc. Asigur o referin la ultimul control activat naintea PreviousControl controlului curent.

145

Exemplu:
`Afieaz numele controlului precedent Dim ctl As Control Set ctl = Screen.PreviousControl MsgBox ctl.Name `Transform cursorul de mouse n clepsidr Screen.MousePointer = 11 `Reafieaz cursorul by default Screen.MousePointer = 0 `Afieaz numele formularului activ Dim frm As Form Set frm = Screen.ActiveForm MsgBox frm.Name `Modific titlul formularului frm.Caption = Formular de plat

OBIECTUL FILESEARCH Acest obiect permite cutarea fiierelor n funcie de un ansamblu de criterii i obinerea informaiilor relevante despre aceste fiiere. Proprieti: Returneaz codul de 4 caractere al aplicaiei n care Creator obiectul specificat a fost creat (nu se poate folosi dect n mediul Macintosh). Returneaz sau definete numele fiierului ce trebuie FileName cutat. Returneaz sau definete tipul fiierului ce trebuie FileType cutat. Returneaz sau definete o constant care indic LastModified timpul scurs de la ultima modificare a fiierului. Returneaz sau definete folderul care se bazeaz LockIn cutarea specificat. Arat dac cutarea specificat nu se bazeaz dect MatchText pe fiierele ale cror corp de texte sau proprieti Exactly conine exact cuvntul sau fraza specificat. Arat dac cutarea include toate subfolderele SearchSubFolders folderului specificat. Returneaz sau definete cuvntul sau fraza de cutat TextOrProperty n corpul de texte sau n proprietile fiierului. Obiecte i colecii:

146

FoundFiles PropertyTests SearchFolders

Obiect reprezentnd lista de fiiere returnate de cutare Colecie de obiecte PropertyTests reprezentnd ansamblul criteriilor cutrii. Colecie de obiecte ScopeFolder reprezentnd ansamblul folderelor cutare.

Metode: Execute NewSearch RefreshScopes

Lanseaz cutarea fiierelor specificate Stabilete valorile implicite a tuturor criteriilor de cutare. Actualizeaz lista de obiecte ScopeFolder (foldere) disponibile.

Exemplu: Codul urmtor permite stocarea ntr-un tablou a listei de fiiere Excel ntr-un director din My Documents.
Dim strFileName()As String Dim i,j As Integer With Application.FileSearch .NewSearch .LookIn = C:\My Documents .SearchSubFolders = True .FileName = xls .MatchTextExactly = True .Execute j = .FoundFiles.Count ReDim strFileName(j) For i = 1 To j strFileName(i) = .FoundFiles(i) Next i End With

COLECIA REFERENCES Colectia References conine obiectele References ce corespund biblotecilor de obiecte provenite din alte aplicaii. Pentru a aduga (sau terge) o referin la o bibliotec de obiecte, se alege opiunea References din meniul Tools. Fereastra urmtoare permite selectarea referinelor dorite:

147

Proprieti: Count Parent Metode: AddFromFile AddFromGuid

Determin numrul obiectelor refereniate Nu este folosit.

Item Remove

Creeaz o referin la o bibliotec pornind de la numele unui fiier. Creeaz o referin la o bibliotec pornind de la GUID-ul su (identificator global unic n registrul Windows). Returneaz o referin n funcie de poziia sa n colecia References. terge un obiect referin din colecia References.

Proprietile obiectului Reference Arat dac o referin implicit este necesar pentru buna BuiltIn funcionare n Access. Returneaz o cale de acces i numele fiierului bibliotecii FullPath refereniate. Returneaz GUID-ul, identificatorul bibliotecii n registrul Guid Windows. Arat dac o referin valid este atribuit obiectului n IsBroken registrul Windows. Indic tipul de referin. Kind Indic principalul numr de versiune al aplicaiei creia i Major

148

Minor Name Exemplu:

este asociat o referin. Indic numrul minor de versiune al aplicaiei. Numele referinei.

Dim Ref As References `Afieaz numrul total de referine MsgBox(Nr. total de referinte este: & references.Count `Parcurge referinele, afieaz numele i calea de acces ale acestora For Each ref In Application.References MsgBox(nume: ref.FullPath `terge referinele neobligatorii pentru Access If Not ref.BuiltIn Then References.Remove ref EndIf Next ref `Adaug biblioteca de obiecte Excel Application.References.AddFromFile Excel9.olb `Adaug biblioteca de obiecte Word Application.References.AddFromFile MsWord.olb & ref.name & vbCr & vbCr & _

COLECIA PRINTERS Conine obiectele Printer ce reprezint fiecare imprimant disponibil n sistem. Observaie: Obiectul Printer nu exist n versiunile precedente ale Access. Proprietile obiectului Printer: mpreun cu proprietile TopMargin, RightMargin i BottomMargin LeftMargin, aceast proprietate permite specificarea marginilor unei pagini. Arat dac imprimanta trebuie s listeze n culori ColorMode (acPRCMColor) sau alb-negru (acPRCMMonochrome) Indic dispunerea pe vertical a seciunilor Detail a unui ColumnSpacing formular. Indic numrul copiilor de listat. Copies Permite doar listarea datelor unui tabel sau interogarea n DataOnly modul DataSheets. Indic numele perifericului. DeviceName

149

DriverName Duplex Orientation PaperBin PaperSize Port PrintQuality

Indic numele driverului utilizat de imprimant. Indic felul n care imprimanta administreaz listarea fa-verso. Indic orientare imprimrii (acPRORPortrait sau acPRORLandscape). Indic PaperBin ce trebuie folosit de ctre imprimant. Indic mrimea hrtiei. Indic portul la care este conectat imprimanta. Indic rezoluia folosit de imprimant pentru listare.

Celelate proprieti (ColumnSpacing, RowSpacing, ItemSizeHeight, etc.) permit formatarea din seciunea Detail a unui formular sau raport.

4.10. Recomandri pentru optimizarea codului VBA


Pentru a optimiza funcionarea VBA, unele comenzi pot accelera viteza de execuie a codului creat. ntotdeauna variabilele trebuie s fie declarate n mod explicit. Tipul de variabile trebuie s fie ntotdeauna ct mai explicit posibil. Pentru a crea referina proprietilor, controalelelor i obiectelor de acces la date, se preconizeaz variabilele. Cuvntul rezervat Me trebuie folosit pentru a se face referin la un formular sau un raport n cadrul procedurii eveniment. Se recomand folosirea constantelor ct de frecvent posibil. Modulele trebuie s fie organizate pentru a nu suprancrca memoria. Un modul este salvat doar dac una din procedurile sale este apelat de alte coduri. Codul trebuie compilat regulat.

4.11. ntrebri de auto-evaluare


1. Explicai: a. Avantajele utilizrii VBA b. Modelul obiect din Access c. Proprietile referitoare la obiecte d. Evenimente e. Proceduri in VBA f. Noiunile de variabile, constante i tipuri de date g. Instruciunea If. Exemple h. Instruciunea Select... Case. Exemple

150

i. j. k. l. m. n. o. p. q. r. s.

Instruciunea Do...Loop. Exemple Instruciunea While... Wend. Exemple Instruciunea For... Next. Exemple Instruciunea For Each... Next. Exemple Operatori n VBA Instruciunea With... End with. Exemple Instruciunea For Each... Next. Exemple Instruciunea If.. Type Of. Exemple Instruciunea Set. Exemple Categoriile de evenimente existente n VBA Obiectul DoCmd. Exemple

2. Descriei mediul de dezvoltare pentru VBA (IDE-ul). 3. Reguli de scriere a codului surs VBA. 4. Module de clas. 5. Proprietile i metodele obiectelor Access. 6. Recomandri pentru optimizarea codului Vba.

151

152

CAP.5. LIMBAJUL SQL 5.1. Rezumatul capitolului


Unul dintre cele mai puternice limbaje structurate pentru interogarea datelor, SQL (Structured Query Language), a devenit un standard pentru o gam din ce n ce mai larg de sisteme pentru gestiunea bazelor de date. Vom prezenta comanda Select care permite realizarea interogrii bazelor de date, precum i instruciunile care permit actualizarea datelor (adugarea, modificarea i tergerea datelor prin comenzi SQL).

5.2. Prezentarea limbajului SQL


Limbajul SQL (Structured Query Language sau limbajul structurat de interogri) este un limbaj de interogri i gestionare a bazelor de date relaionale. Access folosete SQL ca limbaj de interogare. n momentul crerii unei interogri n modul de interogare Design, Access construiete n paralel instruciunile SQL echivalente. De altfel, majoritatea proprietilor interogrilor n modul de interogare Design prezint clauze echivalente i opiuni accesibile n limbajul SQL. Exemplu: Dechidei o interogare n modul Design View:

Facei clic pe opiunea Mode SQL al icoanei View

153

Se va obine instruciunea SQL corespunztoare interogrii

Observaie: Aceast operaie este foarte interesant n special pentru cei nefamiliarizai cu limbajul SQL: se poate crea interogarea n Access i recupera instruciunea SQL astfel generat pentru a o include n codul VBA. Anumite interogri SQL, numite interogri specifice limbajului SQL, nu pot fi create n grila de generare a interogrilor, ci trebuie s fie scrise direct n modul SQL. Este vorba de: interogrile directe ce permit operarea direct cu tabele n server, interogrile definiii de date ce permite crearea, tergerea sau modificarea structurilor tabelelor, interogrile Union ce permit regruparea cmpurilor de dou tabele (sau mai multe) n acelai cmp rezultat din interogare. Aceste interogri sunt foarte utile n fuzionarea nregistrrilor ce provin din tabele diferite.

5.3. Limbajul SQL I VBA


Interogrile SQL se integreaz perfect n VBA i pot fi utilizate pornind de la metodele diverselor obiecte: metoda OpenRecordset a obiectelor DataBase i Connection,

154

metoda CreateQueryDef a obiectelor DataBase i Connection, metoda Execute a obiectelor Command i Connection, etc. Interogrile SQL sunt de asemenea foarte des utilizate n formulare: proprietatea RecordSource a unui formular sau raport, proprietatea RowSource a unei liste derulante, etc. Majoritatea acestor proprieti pot fi modificate de codul VBA. Avantajele utilizrii instruciunii SQL n VBA sunt urmtoarele: Viteza de execuie: o instruciune Select este mai rapid dect parcurgerea secvenial a unui tabel. Performan mai bun: n modul client/server, interogrile sunt compilate de SGBD care le optimizeaz performaele. ntreinere mai uoar: codul de instruciuni SQL este mai scurt, deci mai uor de citit, dect echivalentul su n VBA. Standardizare: limbajul SQL este standardul de interogare al bazelor de date relaionale.

5.4. Descrierea limbajului SQL


INSTRUCIUNEA SELECT SELECT este cea mai folosit instruciune, corespunznd interogrii Selection din Access. Permite extragerea cmpurilor unui ansamblu de nregistrri ce corespund unor criterii. Sintax:
SELECT [ALL |DISTINCT <list de cmpuri> FROM <list de tabele> [WHERE ...] [GROUP BY...] [HAVING...] [ORDER BY] ALL Distinct <list de cmpuri> *

Sunt luate n considerare toate nregistrrile ce corespund criteriilor. Sunt omise toate nregistrrile pentru care cmpurile selectate conin date n dublu exemplar. List de cmpuri selectate, separate de virgule Indic faptul c toate cmpurile tabelului/tabelelor specifcat(e) sunt selectate.

155

alias1, alias2

<list de tabele>

Indic numele ce trebuie folosite drept antete de coloan n locul numelor coloanelor originale din tabel. Numele tabelului sau tabelelor ce conin datele care trebuie extrase.

CLAUZA FROM Aceasta specific tabelele sau interogrile din care sunt extrase datele. Sintax:
FROM table 1 [LEFT|RIGHT|INNER JOIN table2 ON TABLE1.camp1 <operator de comparare> TABLE2.cmp2 [LEFT|RIGHT| INNER] LEFT JOIN

Aceti operatori permit definirea tipului de imbricare ntre tabele. Se folosete pentru a crea o imbricare extern de stnga. Rezultatul acesteia cuprinde toate nregistrrile provenite din primul tabel (cel din stnga: <tabel1>) i pe acelea pentru care exist o valoare corespunztoare n al doilea tabel (cel din dreapta: <tabel2>). Se folosete pentru a crea o imbricare extern de dreapta. Rezultatul acesteia cuprinde toate nregistrrile provenite din al doilea tabel (cel din dreapta: <tabel2>) i pe acelea pentru care nu exist valoare corespunztoare n primul tabel (cel din stnga: <tabel1>). Se folosete pentru a crea o imbricare ce nu cuprinde dect nregistrrile n care datele cmpurilor sunt identice. Toi operatorii de comparare relaional ce sunt utilizai (=, <, >, < =, > =).

RIGHT JOIN

INNER JOIN

<operator de comparare> Exemple:

Select Clients.Cli_societate, Commandes.Cde_DateCde From Clients INNER JOIN Commandes ON Clients.Cli_CodeCli =Commandes.Cde_CodeCli

156

List de comenzi lansate de societate. n primul exemplu, sunt selectai doar clienii care au facut deja comenzi.
Select Clients.Cli_societate, Commandes.Cde_DateCde From Clients LEFT JOIN Commandes ON Clients.Cli_CodeCli =Commandes.Cde_CodeCli

n al doilea exemplu, sunt selectai toi clienii. CLAUZA WHERE Permite filtrarea nregistrrilor dup anumite criterii. Condiiile clauzei WHERE se exprim cu ajutorul operatorilor urmtori: operatori de comparare: =, <, >, < =, > =, Is [Not] Null,
[Not] In, Between.

operatori logici: And, Or, Not. Exemplu:


SELECT * From Produse WHERE [Prod_Pret] = 500000 SELECT * From Produse WHERE [Prod_Pret] BETWEEN 100000 AND 200000 SELECT * FROM Clienti WHERE [Cli_plata] In (`France, `Italia, `Spania)

CLAUZA GROUP BY Clauza GROUP BY corespunde Totalului interogrilor Access (numite Regrupri n versiunile anterioare). Permite regruparea datelor ntr-unul sau mai multe cmpuri. n principal, clauza este folosit pentru executarea funciilor de agregare SQL, ca i Sum (sum), Count (calcul), Avg (medie). Exemple: Aceast interogare returneaz numrul comenzilor lansate de client.
SELECT Clienti.Cli_Societate, Count(Comenzi.Cde_DateCde AS NbComenzi FROM Clienti LEFT JOIN Comenzi ON Clienti.Cli_CodeCli = Comenzi.Cde_CodeCli GROUP BY Clienti.Cli_Societate

157

Aceast interogare returneaz totalul fiecrei comenzi.


SELECT Comenzi.Cde_NumCde, Sum([Cde_Pret]*[Cde_Buc] AS TotalCde FROM Comenzi INNER JOIN [Detalii Comenzi] ON Comenzi.Cde_NumCde = [Detalii Comenzi].Cde_NumCde GROUP BY Comenzi.Cde_NumCde

CLAUZA HAVING Specific nregistrrile regrupate ce trebuie afiate ntr-o instruciune SELECT dotat cu o clauz GROUP BY. Odat ce regruparea este efectuat se afieaz lista de cmpuri a clauzei GROUP BY i sunt selectate doar nregistrrile care respect condiia specificat n clauza HAVING. Exemplu: Aceast interogare extrage comenzile ale cror total este mai mare de 2 000 000.
SELECT Comenzi.Cde_NumCde, Sum([Cde_Pret]*[Cde_Buc] AS TotalCde, Commandes.Cde_DateCde FROM Comenzi INNER JOIN [Detalii Comenzi] ON Comenzi.Cde_NumCde = [Detalii Comenzi].Cde_NumCde GROUP BY Comenzi.Cde_NumCde, Comenzi.Cde_DateCde HAVING (Sum(Cde_Pret*Cde_Buc)> 2 000 000)

CLAUZA ORDER BY Aceast clauz determin sortarea (aranjarea n ordine cresctoare sau descresctoare), nregistrrile rezult dintr-o interogare n funcie de cmpul/cmpurile specificat(e). Sintax:
[ORDER BY camp1 [ASC|DESC][, camp2 [ASC|DESC]][,. . . ]] ASC DESC

Ordine cresctoare. Ordine descresctoare.

Exemplu:
SELECT Clienti.Cli_Soc, Count(Comenzi.Cde_DateCde) AS NbComenzi FROM Clienti LEFT JOIN Comenzi

158

ON Clienti.Cli_CodeCli =Comenzi.Cde_CodeCli GROUP BY Clienti.Cli_Soc ORDER BY Count (Comenzi.Cde_DateCde) DESC

Instruciunea UPDATE Corespunde unei interogri de actualizare care modific valorile cmpurilor ntr-un tabel specificat, pentru nregistrrile ce corespund criteriului dat (facultativ). Sintax:
UPDATE table SET cmp1=valoarenou1,[cmp2=valoarenou2] ... [WHERE criteriu]

Observaie: Dac nu se specific nici o clauz WHERE, toate nregistrrile sunt actualizate. Exemple: Aceast interogare modific codul rii din toate nregistrrile tabelului Clieni.
UPDATE Clients SET Clients.Cli_Pays = RO

Aceast interogare modific n tabelul Clieni codul de ar al nregistrrilor clienilor al cror ora este Timioara.
UPDATE Clients SET Clients.Cli_Pays = RO Where Clienti.Cli_oras =Timisoara

INSTRUCIUNEA DELETE Corespunde unei interogri DELETE ce terge nregistrrile din tabelul menionat n clauza FROM, dup criteriile date (facultativ). Sintax:
DELETE FROM tabel [Where criteriu]

Observaie: Dac nu este specificat nici o caluz WHERE, toate nregistrrile sunt terse.

159

Exemplu: Aceast interogare terge comezile de dinainte de 1997.


DELETE Comenzi.Cde_DateCde FROM Comenzi WHERE (( Comenzi.Cde_DateCde) < #1/1/1997#)

INSTRUCIUNEA INSERT INTO Instruciunea SQL INSERT INTO corespunde unei interogri Add care adaug nregistrri ntr-un tabel. Sintaxa: Interogare Add de adugare a unei singure nregistrri :
INSERT INTO <TabelDestinatie>[( cmp1 [, cmp2 [ ...] ] ) ] VALUES ( valoare1 [, valoare2 [, ...]])

Observaie: Trebuie s existe tot attea valori cte coloane de valorificat, de acelai tip i n aceeai ordine. Interogare Add cu una sau mai multe nregistrri:
INSERT INTO <TabelDestinatie>[( cmp1 [, cmp2 [ ...] ] ) ] SELECT [<TabelSursa>.]cmp1 [, cmp2 [,...] ] FROM <lista de tabele>

Observaie: Instruciunea SELECT trebuie s returneze attea valori n aceeai ordine i de acelai tip ctre coloanele de valorificat (cmpul instruciunii INSERT). Exemple: Adugarea unei nregistrri n tabelul Clieni
INSERT INTO Clienti (Cli_CodCli, Cli_societate, Cli_oras, Cli_plata) VALUES( `Mirton`, `Editura Mirton`, `Timisoara~, `RO`)

Adugarea unei nregistrri din tabelul Prospecte n tabelul Clieni.


INSERT INTO Clienti SELECT Prospecte.* FROM Prospecte

160

ALTE INSTRUCIUNI Interogare Creaz o interogare imbricat. TRANSFORM UNION Creaz o interogare ce fuzioneaz rezultatele a dou sau mai multe tabele sau interogri.

Crearea i gestiunea de tabele Creaz un nou tabel. CREATE TABLE CREATE INDEX ALTER TABLE DROP TABLE DROP INDEX Creaz un nou index pentru un tabel existent. Modific structura unui tabel. terge tabelul din baza de date. terge indexul unui tabel.

Crearea i gestiunea utilizatorilor i a grupurilor Creaz unul sau mai muli utilizatori. CREATE USER ADD USER Adaug unul sau mai muli utilizatori grupului de utilizatori existeni terge unul sau mai muli utilizatori. Creaz una sau mai multe grupe de utilizatori. terge una sau mai multe grupe de utilizatori. Ofer privilegii specifice unui utilizator sau a unui grup de utilizatori existent. Retrage privilegiile specifice ale unui utilizator sau a unui grup de utilizatori existent.

DROP USER CREATE GROUP DROP GROUP GRANT

REVOKE

161

5.5. Exemple de utilizare a interogrilor SQL


Pentru a demonstra rezultatele limbajului SQL, exemplele urmtoare propun dou proceduri echivalente, una folosind limbajul SQL, cealalt nu. Pentru a realiza aceste exemple, se creaz un tabel Clieni avnd cmpurile Cli_Societate, Cli_ar i Cli_Ora i se tasteaz cteva nregistrri n acest tabel. ACTUALIZAREA NREGISTRRILOR Codul din exemplul urmtor permite modificarea coninutului unui cmp dintr-un tabel pentru nregistrrile ce corespund criteriilor. Codul VBA ce utilizeaz o interogare SQL de tip UPDATE
Private Sub Maj_Plati() Dim cncDeviz As ADODB.Connection Dim strSQL As Sring `Actualizarea codului rii din tabelul Clieni Set CncDeviz = CurrentProject.Connection strSQL = UPDATE Clients SET Clients.Cli_Plati = `RO` _ & WHERE Clienti.Cli_Oras = Timisoara cncDeviz.Execute strSQL END SUB

Codul VBA echivalent fr interogarea SQL


Private Sub Maj_Plati() Dim cncDeviz As ADODB.Connection Dim rstClient As ADODB.RecordSet ` Deschidere pentru nregistrare Set CncDeviz = CurrentProject.Connection Set rstClient = New ADODB.RecordSet rstClient.Open Clienti, cncDeviz, adOpenForwardOnly,_ adLockOptimistic `Parcurgerea secvenial a tabelului Clieni Do While Not rstClient.EOF If rstClienti(Cli_Oras)= Timisoara Then rstClient(Cli_Plata)= RO rstClient.Update EndIf rstClient.MoveNext Loop

162

End Sub

NCRCAREA UNEI LISTE DERULANTE Codul exemplului de mai jos permite afiarea ntr-o list derulant (controlul zon de list) a numelui clienilor a cror nume de Societate ncepe cu o list dat (litera este scris ntr-o zon de text). Pentru a testa acest exemplu: se creaz un formular numit Clieni se adaug controalele urmtoare n acest formular: - o zon de text (txtNameSoc), - o zon de list (IstSoc), - un buton de comand (cmdLista1). Codul VBA ce utilizeaz interogarea SQL de tipul SELECT. Coninutul listei este rezultatul interogrii SQL.
Private Sub cmdListe1_Click() Dim strSQL As Sring `Controlul numelui scris If txt numeSoc = Then MSGBOX(Trebuie s tastai cel puin o liter, _ txtNumeSoc.SetFocus Exit Sub End If `Proprieti ale listei derulante `Lista conine o interogare Me.lstSoc.RowSourceType = Table/Interogare strSQL = SELECT Clienti.Cli_Societate Like `& _ Me.txtNumeSoc & *` Me.lstSoc.RowSource = strSQL `Reactualizarea datelor listei Me.lstSoc.Interogare End Sub

Codul VBA echivalent fr interogarea SQL.


Private Sub cmdListe1_Click() Dim cncDeviz As ADODB.Connection Dim rstClient As ADODB.RecordSet Dim strNumeSoc as String `Controlarea numelui scris If txtNumeSoc = Or IsNull(txtNumeSoc) Then

163

MSGBOX(Numele acesta a mai fost introdus, vbExclamation) txtNumeSoc.SetFocus Exit Sub End If `Iniializarea listei derulante `Lista conine o suit de valori Me.lstSoc.RowSourceType = Lista de valori Me.lstSoc.RowSource = Me.lstSoc.Requery `Deschiderea unui set de nregistrri Set cncDeviz = CurrentProject.Connection Set rstClient = New ADODB.Recordset rstClient.Open Clienti, cncDeviz, adOpenForwardOnly, _ adLockOptimistic ` Parcurgere secvenial a tabelului i adugarea elementelor n list Do While Not rstClienti.EOF If Left(rst(Client(Cli_Societate),1) = _ Left(MetxtNumeSoc, Len(Me.txtNumeSoc)) Then strNumeSoc = rstClient(Cli_Societate) Me.LstSoc.AddItem strNumeSoc End If rstClient.close End Sub

Observaie: 1. Exemplele precedente constat faptul c codul ce utilizeaz SQL este mai scurt i execuia sa este mai rapid n special dac tabelul client conine un numr important de nregistrri.

5.6. Teste de auto-evaluare


1. Explicai: a. Instruciunea Select. Exemple b. Instruciunea Update c. Instruciunea Delete d. Instruciunea Insert Into 2. Actualizarea nregistrrilor. 3. ncrcarea unei liste derulante.

164

165

CAP. 6. MANIPULAREA OBIECTELOR WORD I EXCEL N VBA


6.1. Rezumatul capitolului Uneori este necesar manipularea obiectelor unei alte aplicaii (n special cele care fac parte din pachetul Microsoft Office cele mai uzuale fiind MS Word i MS Excel) direct din Access. Acest lucru se realizeaz cu ajutorul tehnologiei OLE Automation. n acest capitol va fi prezentat modul de comunicare cu cu cele dou aplicaii, modelele obiect asociate, obiectele i coleciile specifice fiecreia precum i protocolul de schimb dinamic de date dintre cele dou aplicaii, cu exemple. 6.2. Tehnologia OLE Automation, numit i OLE (Object Linking and Embedding) sau OLE Automation, este tehnologia care permite manipularea obiectelor unei alte aplicaii, direct din Access sau din VBA Access. Pentru a putea funciona, Automation are nevoie de un client i un server numit server OLE. Serverul este aplicaia sau componentul care furnizeaz servicii clientului. Clientul, numit i controlor, utilizeaz aceste serviciii pentru a pilota aplicaia server i manipula obiectele sale. Access este clientul i Word este serverul OLE. O bibliotec de obiecte este un fiier prevzut de obicei cu o extensie .olb, furniznd informaii ce permit maipularea obiectelor puse la dispoziia utilizatorului de un server. Se poate folosi Exploratorul de obiecte pentru a examina coninutul unei biblioteci de obiecte. Pentru a accesa obiectele unei alte aplicaii, se face referin la biblioteca acesteia de obiecte n modul urmtor: ntr-un modul, se selecteaz meniul Tools-References, se va afia o csu de dialog References cu toate serverele OLE nregistrate se activeaz referina dorit. Cu ajutorul exploratorului de obiecte, consultarea listei de obiecte, metode i proprieti ale unui server OLE este mai simpl. Utilizarea tehnologiei Automation Pentru a putea manipula obiectele altei aplicaii, se procedeaz astfel: se definete o variabil obiect n codul VBA, se folosesc funciile CreateObject sau GetObject pentru a face referin la obiect.

166

Exemple:
Dim AppWord As Object Set AppWord CreateObject( Word.Application)

Sau,
Dim AppWord As NewWord.Application

Referire la un document Word existent:


Dim DocWord As New Word.Application Set DocWord = GetObject(C:\Clienti\Gabi.doc)

Urmtoarele paragrafe descriu modul n care se poate pilota diferite softuri ale Microsoft Office utiliznd tehnologia Automation. Observaie: Obiectele, coleciile, metodele i proprietile modelelor obiect din Microsoft Office fiind foarte numeroase, doar cele mai des folosite sunt descrise n cele ce urmeaz.

167

6.3. Comunicarea cu Word


MODELUL OBJECT WORD Extrase din modelul Object Word.( Collections si Object).
Application
AddIns Answer Wizard Assistant AutoCaption AutoCorrect Browser CaptionLabels COMAddIns CommandBars DefaultWebOptions Dialogs Dictionaries Documents EmailOptions FileConverters FileDialog FileSearch FontName Languages LanguageSettings ListGalleries MaillingLabel MailMessage NewFile Options RecentFile Selection SynonymInfo System TaskPanes Tasks Templates Windows

OBIECTE I COLECII WORD

168

Documents Dictionaries

Colecia tuturor claselor (obiecte Document) deschise. Colecia tuturor dicionarelor personale active (obiectele Dictionary). Obiect ce conine caracteristicile globale pe care Microsoft Word le folosete cnd utilizatorul creaz sau modific mesaje electornice i rspunsurile la acestea. Colecia tuturor conversiilor de fiiere (obiecte FileConvert) disponobile pentru deschiderea i nregistrarea fiierelor. Obiect ce conine lista numelor tuturor fonturilor disponibile. Colecia limbilor (obiecte Languages) utilizate n Word pentru verificrile lingvistice i pentru redactare. Colecia obiectelor ListGallery Obiect reprezentnd mesajul electronic activ dac Word este editorul e-mailului. Reprezint opiunile aplicaiei i documentului Word. Majoritatea proprietilor obiectului Options corespund elementelor csuei de dialog (meniul Tools). Reprezint selectarea n curs a unei ferestre. Conine informaii despre calculatorul Colecia tuturor modelelor (obiecte Template) disponibile la un moment dat.

E-Mail Options

File Converters FontNames Languages

ListGalleries MailMessage

Options

Selections System Templates

169

COLECIA DOCUMENTS Metode: Colecia Documents este compus din toate obiectele Document deschise n Word: Add Creaz un nou Document i altur colecia Documents. Exemplu: Documents.Add Template:=Normal nchide toate documentele Word deschise Exemplu: Documents.Close Deschide documetul specificat i l altur coleciei Documents. Exemplu: Documents.Open
FileName:=C:\Clienti\Balanta.doc

Close

Open

Save

Salveaz toate documnetele deschise. Exemplu: Documents.Save

OBIECTELE DOCUMENT Un obiect Document permite cearea unei referine la un document Word. Active Document desemneaz documentul activ. Metode: Activeaz un document deja deschis. Activate Exemplu: Documents( Cumprtori.doc).Activate Close nchide un document Word. Exemplu: Documents( Cumprtori.doc).Close
Sau ActiveDocument.close

PrintPrevie Afieaz un document n Print Preview naintea printrii. Exemplu: ActiveDocument.PrintPreview w Range Returneaz un obiect Range. Exemplu: ActiveDocument.Range(0, 50).Bold =True Salveaz un document. Exemplu: ActiveDocument.Save

Save

170

SaveAs

Salveaz un document sub un nou nume i/sau ntr-un nou format. Exemplu: ActiveDocument.SaveAs FileName:=strDocName

Obiecte i colecii: Characters MailMerge PageSetup Colecii de caractere dint-un document. Fuziune n Word. Descrierea setrii n pagin Exemplu: ActiveDocument.PageSetup.RightMargin =
InchesToPoint(1)

Paragraphs SmartTags

Colecia paragrafelor unui document. Colecia butoanelor active (obiecte SmartTag) al unui document sau a unei plaje de text n cadrul unui document. Colecia de cuvinte a unui document. Exemplu: ActiveDocument.Words.Count ngroarea caracterelor unui document

Words

Exemplu:

Private Sub Word_Bold() Dim appWord As New Word.Application With appWord .Documents.OpenC:\Clienti\gabi.doc .ActiveDocument.Select .Selection.Font.Bold = True .ActiveDocument.Close wdSaveChange .Quit End With End Sub

171

Lansarea unui MailMerge.


Private Sub Relatii() Dim appWord As Word.Application Dim docWord As Word.Document `lansarea n Word Set AppWord = New Word.Application appWord.Visible = True `deschiderea unei scrisori tip Set docWord = appWord.documents.Open (C:\clienti\gabi.doc) `pregtirea unei scrisori tip pentru toi clienii With docWord.MailMerge .Destination = wdSendNewDocument .SuppressBlankLines = True With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With `lansarea unei scrisori tip .Execute End With End Sub

172

6.4. Comunicarea cu EXCEL


MODELUL OBJECT EXCEL Extras din modelul Object Excel ( Collections i Object).
Application AddIns Answer Assistant AutoCorrect AutoRecover CellFormat COMAddIns CommandBar Debug Dialogs DefaultWebOptions Names FileSearch SmartTagOptions Languages Names RecentFiles SmartTagRecognizers WorkSheetFunction WebOptions Windows WorkBook Workshets Charts DocumentProperties CustomViews CommandBar Styles Borders Font Interior

OBIECTELE I COLECIILE EXCEL

173

Workbooks Worksheets

Colecia tutror claselor (obiectele Workbook) deschise. Colecia tuturor foilor de calcul (obiecte Worksheet) ale unei clase. Colecia tuturor obiectelor Name din aplicaie. Fiecare obiect Name reprezint un nume definit pentru o plaj de celule. Obiect reprezentnd opiunile referitoare la butoanele active. Exemplu: activarea tuturor butoanelor ActivateWorkBook.SmartTagOptions_
.EmbedSmarttags = True

Charts

SmartTag Options

Styles CustomViews

Colecia tuturor descrierilor de stil (obiecte Style) Colecia de obiecte personalizate (obiecte CustomView).

COLECIA WORKBOOKS Se compune din: Add Creaz un nou Workbook, care devine cel activ, i l altur coleciei Workbooks. Exemplu: WorkBook.add Close nchide Workbook-ul Excel deschis. Exemplu: WorkSheets.Close Deschide Workbook-ul specificat care devine activ i l altur coleciei Workbooks. Exemplu:
WorkBook.Open Filename:=C:\gabi\gabi1.xls

Open

Save

Salveaz toate Workbook-urile deschise. Exemplu: WoorkBooks.Save

174

OBIECTELE WORKBOOK Un obiect Workbook permite crearea unei referine la o clasa Excel. Proprietatea Active Workbook desemneaz o clasa activ. Activate Close Activeaz un fiier deja deschis. Exemplu: Documents(Cumprtori.xls).Activate nchide un fiier Excel deschis. Exemplu: Documents(Cumprtori.xls).Close Afieaz foaia activ n modul PrintPreview niantea listrii. Exemplu: ActiveWorkbook.PrintPreview Salveaz un Workbook. Exemplu: ActiveWorkbook.Save Salveaz un Workbook sub un nou nume i/sau sub un nou format. Exemplu: ActiveWorkbook.SaveAs
FileName:=Gabi.xlt

PrintPreview

Save

SaveAs

SCRIEREA DATELOR N CELULELE EXCEL Exemplu: Acest exemplu demonstreaz cum se afieaz coninutul unui tabel Access n Excel (Exportul datelor din Access in Excel):

Private Sub ExportXLS_Client() `Obiecte Access Dim dbsGabi as DAO.database Dim stClient As DAO.RecordSet Dim fld As DAO.Field `Obiecte Excel Dim appExcel As Excel.application Dim wkbClient As Excel.Workbook Dim wksClient As Excel.Woorksheet `Variabile ciclice Dim intLig As Integer Dim intCol As Integer

175

` crearea unei mape Excel Set appExcel = CreateObject(Excel.Application) Set wkbclient = appExcel.Workbook.Add Set wksClient = appExcel.ActiveSheet appExcel.Visible = True `Deschiderea tabelului Clieni Set dbsGabi = DbEngine.OpenDatabase(C:\gabi\gabi1.mdb) Set rstClient = dbsOpenRecordSet(Clienti, dbOpenDynaset) `Actualizarea unei foi active With wksClient `Antetele coloanelor completate de numele cmpurilor intCol = 1 For Each fld In rstClient.Fields .Cells(1,intCol).Value = fld.Name intCol =IintCol + 1 Next fld `Parcurgerea nregistrrilor `Adugarea unei linii pentru fiecare nregistrare intLig = 2 Do While Not rstClient.Fields Intcol =1 For Each fld In rstClient.Fields .Cells(intLig, intCol).Value = fld.Value intCol = intCol + 1 Next fld intLig = intLig +1 rstClient.MoveNext Loop `Atribuirea unui nume foii Excel .Name = lista de clienti End With `nregistrarea mapei de lucru wkbClient.SaveAs C:\Clienti\Clienti.xls `nchide Excel appExcel.Quit End Sub

176

6.5. Protocolul DDE


DDE (Dynamic Data Exchange) este un protocol de schimb dinamic de date ntre dou aplicaii Windows, una denumit Clinei sau Destinaie, cealalt denumit Server sau Surs. Legtura este ntrerupt dac una dintre cele dou aplicaii este nchis. O legtur DDE cuprinde 3 faze principale: - iniierea: aplicaia destinaie caut aplicaia surs i stabilete un canal (legtur) de comunicare, - conversie: datele sunt schimbate prin acest canal, - nchidere: canalul de comunicare este nchis. INIIEREA Funcia DDEInitiate permite iniierea conversaiei ntre dou aplicaii, returnnd numrul de canal dac comunicarea a fost stabilit. Dac aceasta nu s-a ntmplat, are loc o eroare. Sintax:
DDEInitiate(<application>,<subject>) Application Subject

Numele aplicaiei surs. Grupul de date care sunt folosite.

Exemplu:
`creaz o legtur DDE cu foaia Excel canal = DDEInitiate(Excel,Foaie)

LEGTURA DDE Funcia DDE permite stabilirea unei conversaii DDE cu o alt aplicaie, de la care se cere informaii pentru a fi afiate ntr-un control al unui formular sau raport. Sintax:
DDE (<Application>, <Rubrica>, <Element>) Application Rubrica Element

Exemplu:

Expresie de tip ir ce identific o aplicaie. Fiier document sau fiier de date. Referin la o dat a aplicaiei Surs. Atribuie coninutul celulei L1C1 unei zone de text via proprietatea Source Control.

=DDE (Excel, Mapa1, L1C1)

177

DDESend Funcia DDESend permite stabilirea unei conversaii DDE cu o alt aplicaie i trimiterea unui element de informaie acestei aplicaii dintr-un control situat ntr-un formular sau raport. Sintax:
DDESend (<Application>, <Rubrica>, <Element>, <Date>

Application Rubric Element Date Exemplu:

Expresie ir ce identific o aplicaie. Fiier document sau fiier de date. Referin la o dat a aplicaiei surs. ir sau expresie coninnd datele care sunt transmise aplicaiei. Atribuie coninutului controlului celulei L1C1 unei zone de text

=DDESend(Excel,Mapa1, L1C1, [oras])

DDEPoke Instruciunea DDEPoke trimite informaii aplicaiei Surs print-un canal deschis.
Sintax: DdePoke <Numrul de canal>, <Element>, <Date>

ChannelNumber Element Date

Exemplu:

Numrul de canal returnat de ctre funcia DDEInitiate. Referin la o dat a aplicaiei Surs. Dat trimis aplicaiei Surs. Trimite valoarea 15 n celula L1C1

DDEPoke canal, L1C1, 15

DDERequest Funcia DDERequest cere informaii aplicaiei Surs. Sintax:


DDERequest ( <Numar canal>, <Element>) ChannelNumber Element

Numrul de canal returnat de ctre funcia DDEInitiate. Referin la o dat a aplicaiei Surs.

Exemplu:

Atribuie coninutul celulei L1C1 variabilei sum.

Suma = DDEReqest (canal, L1C1)

178

DDEExecute Instruciunea DDEExecute returneaz un ir de comenzi unei alte aplicaii n curs de execuie Sintax:
DDEExecute (<Numar de canal>, <Comand>) ChannelNumber Comand

Exemplu:

Numrul de canal returnat de ctre funcia DDEInitiate. ir coninnd o comand recunoscut de cealalt aplicaie. Creaz o nou foaie de calcul

DDEExecute Canal,[New(1)]

NCHIDEREA DDETerminate Instruciunea DDETerminate nchide un canal de comunicare DDE. Sintax:


DDETerminate <Numar de canal> ChannelNumber

Numrul de canal returnat de ctre funcia DDEInitiate.

Exemplu: DDETerminate canal DDETerminateAll Aceast instruciune nchide toate canalele de comunicare DDE. Sintax:
DDETerminateAll

EXEMPLU GLOBAL
Arat cum se afieaz coninutul unui tabel Access n Excel. Exemplu:
Private Sub TransferXLS_Clienti( ) `Variabilele Access Object Dim dbs As DAO.Database Dim rstClient As DAO.RecordSet Dim fld As DAO.Field `Variabile pentru utilizarea DDE Dim Canal As Variant Dim intLig As Integer Dim intColas Integer

179

Dim strPozitie As String `Variabile Excel Dim strExcel as String Dim blnRes As Boolean On Error resume Next Set dbs = CurrentDb Set rstClient = dbs.OpenRecordSet(Clienti, dbOpenTable) `Deschiderea unui canal DDE cu Excel canal = DDEInitiate(Excel, Foaie) `n caz de eroare se lanseaz aplicaia Excel If Err Then Err = 0 `Caut aplicaia Excel With Application.FileSearch .NewSearch .LookIn = C:\ .SearchSubFolders = True .FileName = Excel.exe .FileType = *.exe If .Execute( ) > 0 Then strExcel = .FoundFiles(1) End If `Lansarea Excel blnRes = Shell(strExcel, vbNormalFocus) If Not blnRes Then MsgBox vbExclamation) Exit Sub End If Canal = DDEInitiate(Excel, Foaie) End If `Activarea ferestrei Excel intLin = 1 intCol =1 `Antetul coloanelor coninnd numele cmpurilor For Each fld In rstClient.Fields strPositon = L & intLin & C & intCol DDEPoke Canal, strPosition, rstClient.Fields _ (IntCol -1).Name intCol = intCol + 1 (Aplicaia Excel nu a fost gsit, _

180

Next fld `Parcurgerea nregistrrilor de transferat Do While Not rstClient.EOF intLin = intLin + 1 intCol =1 For Each fld In rstClient.Fields strPosition = L & intLin & C & intCol DDEPoke Canal, strPozitia, rstClient(intCol 1) intCol = intCol + 1 Next fld rstClient.MoveNext Loop EndSub

6.6. ntrebri de auto-evaluare


1. Explicai: a. Conceptul OLE Automation. b. Protocolul DDE.

181

PARTEA PRACTIC CAP.7. APLICAII PRACTICE REZOLVATE 7.1. Rezumatul capitolului


Acest capitol propune un ndrumtor pentru orele de laborator, n vederea nsuirii deprinderilor practice de utilizare a programului Microsoft Access 2003. Acesta va cuprinde att aplicaii rezolvate ct i aplicaii propuse studenilor pentru munca individual. Suntem contieni c noiunile prezentate prin exemple n acest capitol nu acoper toate facilitile de prelucrare oferite de Microsoft Access. Propunerea noastr este prezentarea unora dintre cele mai utile instrumente de utilizare a SGBD-ului studiat n partea teoretic.

7.2. Aplicaia 1
1. S cere informatizarea activitii unei firme. Furnizorii sunt identificai prin cod furnizor, denumire furnizor (numele i prenumele furnizorului), localitatea, adresa, email, banca furnizor i cont furnizor. Despre produse se cunosc cod produs, denumire produs, unitate de msur, stoc, pre unitar. Produsele sunt depozitate n magazii, pentru care se cunosc cod magazie, denumire magazie, gestionar (numele persoanei care are n gestiune depozitul respectiv). Operaiunile se desfoar pe baza unor facturi, care trebuie s conin numrul facturii i data facturii. Fiecare factur va avea detaliate liniile facturii n tabelul LiniiFact, care va conine numr factur, cod produs i cantitate. 2. Se cere afiarea tuturor produselor n ordinea alfabetic a denumirii acestora. 3. S se afieze toate produsele cu unitatea de msur buci care au cantitatea strict mai mare dect 2, ordonate alfabetic dup denumirea produsului.

182

Obiective: Crearea unei baze de date. Crearea tabelelor n Design View. Analiza informaiilor i stabilirea structurii tabelelor. Stabilirea cheilor primare i a indecilor. Crearea relaiilor dintre tabele. Afiarea unei liste ordonate i aplicarea filtrelor pentru afiarea datelor dup anumite criterii.

Rezolvare 1. Propunem urmtoarea schem de structurare a datelor:

n tabela LiniiFact se observ faptul c pentru cmpul nr_f nu poate fi definit o cheie primar, de aceea vom aduga cmpul ID. Se tie c un furnizor va apare pe mai multe facturi. Deci relaia dintre tabelele Furnizori i Facturi este de tipul one-to-many. Pentru a crea aceast relaie, este necesar adugarea cmpului cod_f n tabela Facturi. ntr-o magazie se gsesc mai multe produse, deci relaia dintre tabela Magazii i tabela Produse este de tipul one-to-many. Pentru aceasta este necesar adugarea cmpului cod_m n tabela Produse. n acelai timp un produs se regsete de mai multe ori (posibil) pe liniile unei facturi, sau pe liniile mai multor facturi. Deci relaia dintre tabela Produse i tabela Liniifact este one-to-many. Pentru a o crea este necesar adugarea cmpului cod_p n tabela Liniifact. n final, o factur are mai multe linii, deci relaia dintre tabelele Facturi i Liniifact este de tipul one-to-many. Pentru a realiza aceste leagturi, unele tabele trebuie completate cu anumite cmpuri suplimentare, care s permit crearea ulterioar a relaiilor. Pentru aceasta, n tabela copil, se adaug cmpul pe care a fost creat cheia primar din tabela printe. Cmpurile de tip cheie primar alese vor fi: Furnizori (cod furnizor), Produse (cod produs), Magazii (cod magazin), Facturi

183

(nr fact) i Liniifact (ID). Deci tabelele printe sunt: Furnizori, Magazii i Facturi, iar Produse i Liniifact sunt tabele Copil. Adugnd i rearanjnd tabelele, acestea vor arta ca n figura urmtoare:

Primul pas este crearea bazei de date. Aceasta va purta numele Firme. Pentru a crea baza de date, din meniul File se alege opiunea New, iar din Task Pane-ul New File se alege opiunea Blank Database. Primul pas este alegerea locaiei n care va fi salvat fiierul, apoi denumirea propriu-zis a acestuia. Dup crearea bazei de date se trece la analiza fiecrui tabel n parte i alegerea tipului de cmp cel mai potrivit datelor care vor fi salvate n acesta. Propunem urmtoarele: n tabela Furnizori: cod_f (codul furnizorului) cheie primar, de tip Number, Field Size: Integer, Decimal Places:0, Caption: cod furnizor, Validation Rule: <=200, Validation Text: Maxim 200 de furnizori, Required: Yes; den_f (denumirea furnizorului) de tip Text, Field Size: 30, Format: >, Caption: denumire furnizor, Required: Yes, Allow Zero Length: No, Indexed: Yes (Duplicates OK); loc_f (localitate) de tip Text, Field Size: 30, Caption: localitate, Default Value: Timisoara; adresa de tip Memo; email de tip Hyperlink; banca de tip Text, Field Size: 30, Format: >, Required: Yes, Allow Zero Length: No; cont (contul din banc, IBAN) de tip Text, Fields Size: 24, Input Mask: "RO"99>AAAA0000099999999999.

Dup ce toate cmpurile au fost create, se salveaz tabela alegnd butonul Save, apoi se apas sgeata de pe butonul View, de unde se alege Datasheet View, pentru a introduce datele a trei furnizori n tabel.

184

n tabela Magazii: cod_m (cod magazin) Primary key, de tip Number, Field Size: Byte, Caption: Cod magazin, Required: Yes; den_m de tip Text, Field Size: 15, Caption: Denumire magazie, Indexed: Yes (Duplicates OK), gest de tip Text, Field Size: 30, Caption: Gestionar. Vom introduce n continuare 3 magazii, cu codurile magazilor 111, 112 i 113;

n tabela Produse: cod_p Primary key, de tip Number, Field Size: Long Integer, Caption: Codul produsului, Required: Yes; den_p (denumirea produsului) tipul cmpului Text, Field Size:15, Caption: denumirea produsului; um (unitate de msur) de tipul Lookup Wizard, apoi selectm I will type in the values that I want, la opiunea Number of Columns lsm 1, iar n lista col1 vom tasta pe rnd, una sub alta, valorile dorite: kg, l, cm, buc, selectnd butonul Next, apoi Finish; stoc (stocul disponibil n magazie) de tip Number, Field Size: Long Integer, Caption: unitate de masura, Required: Yes; pret_u, de tip Currency, Caption: Pret unitary; cod_m (cod magazie) un cmp de tip Lookup Wizard vom selecta opiunea I want the lookup column to lookup the values in a table or query, apoi se allege tabela Magazii; selectm cmpul cod_m (cod magazie):

185

Ordonarea va fi fcut dup acelai camp cod_m, putndu-se observa valorile introduse anterior n tabela Magazii:

n continuare se selecteaz butonul Next, apoi Finish. ntre cele dou tabele (Magazii (tabela printe) i Produse (tabela copil) va fi creat automat o relaie). Pentru ca aceast relaie s fie de tipul one-to-many, vom introduce minim 4 produse, 2 dintre ele gsindu-se n aceeai magazine, de exemplu cea cu codul 113;

tabela Facturi: nr_f (numrul facturii) Primary key, de tip Number, Field Size: Long integer, Caption: Numarul facturii, Required: Yes; data_f de tip Date/Time, Caption: Data Facturii, Required: Yes, Format: Short date, cod_f (cod furnizor) tipul de date Lookup Wizard, ne legm de tabela Furnizori, cmpul cod_f, Caption: Cod furnizor. Tabela Facturi este copilul tabelei Furnizori. Avnd 3 furnizori n tabela printe, vom introduce minim 4 facturi, codul furnizorului 125 repetndu-se de 2 ori:

186

tabela Liniifact: ID Primary Key, un cmp de tip Autonumber, Caption: Numar curent; nr_f (numrul facturii) un cmp de tip Lookup Wizard, ne legm de tabela Facturi, cmpul nr_f, Caption: Numarul facturii; cod_p (codul produsului) un cmp de tip Lookup Wizard, ne legm de tabela Produse, cmpul cod_p i cant un cmp de tip Number, Field Size: Integer, Caption: Cantitate. Acest tabel fiind copilul tabelelor Produse i Facturi, vom introduce minim 5 nregistrri:

Pentru a verifica relaiile i a seta regulile de integritate referenial, se selecteaz butonul Relationships de pe bara de unelte: :

Pentru fiecare relaie n parte, se apeleaz meniul contextual, se alege opiunea Edit Relationship... Pentru a seta regulile de integritate referenial se selecteaz opiunea Enforce Referential Integrity, bifnd opiunea Cascade Update Related Field. Dac se dorete modificarea tipului de relaie dintre cele dou tabele, se selecteaz butonul Join Type..., alegnd una dintre cele trei tipuri de relaii.

187

Selectnd pentru fiecare relaie n parte opiunile respective, se obine urmtoarea situaie:

2. Pentru a vizualiza datele ntr-o anumit ordine se pot folosi butoanele de pe bara de unelte , sau:

Pentru aceasta trebuie s fim poziionai pe o anumit coloan din tabel, n modul de vizualizare Datasheet View. 3. Pentru a filtra datele dintr-o anumit tabel putem selecta fie unul dintre butoanele: Filter by selection, respectiv Filter by form, i Apply/Remove filter, fie una dintre opiunile din urmtoarea figur. Opiunea

188

Filter by Form ascunde nregistrrile, permind fie selectarea valorii dorite utiliznd combo-box-ul corespunztor coloanei dorite, fie introducerea unei sau mai multor valori, operatorul dintre condiiile multiple fiind AND. Pentru a vedea rezultatul, se selecteaz butonul Apply Filer de pe bara de unelte Table Datasheet. Opiunea Filter by selection permite selectarea cu mouse-ul a valorii cutate (efectundu-se un click n celula respectiv), rezultatul fiind vizibil atunci cnd se apas butonul Apply Filter. Dac se dorete anularea filtrului, se selecteaz butonul Remove Filter (acest buton este un buton de tip On/Off). Filter excluding selection funcioneaz exact ca i opiunea Filter by selection, diferena fiind operatorul NON pus n faa condiiei.

Ultima opiune Advanced Filer/Sort permite deschiderea unei ferestre cu ajutorul creia putem sorta i compune condiii compuse, putndu-se utiliza operatorul OR ntre condiii:

7.2.1. Aplicaie propus


Se cere informatizarea activitii unei societi de asigurri. Clienii pot fi persoane fizice sau juridice caracterizate printr-un numr unic, nume i 189

prenume/denumire, adres i telefon. Acetia pot s ncheie diferite tipuri de asigurri (de bunuri, de via etc). Asigurrile sunt ncheiate de agenii ce sunt identificai printr-un cod unic, nume i prenume. Contractul de asigurare este caracterizat printr-un numr, data ncheierii, obiectul asigurrii, perioada (n luni), valoarea asigurat i prima ce va trebui s fie pltit n fiecare lun de client. Clienii efectueaz plata primelor prin ordin de plat (persoane juridice) sau direct la casierie (persoane fizice), eliberndu-se chitane. Documentul de plat conine: numrul documentului, data la care a fost ntocmit i suma pltit. n momentul producerii riscului pentru care a fost ntocmit asigurarea, societatea pltete clientului despgubiri. La plata despgubirilor se ntocmete un proces verbal care este caracterizat prin nume, data ncheierii, descrierea cauzei ce a generat despgubirea i procentul n care este despgubit clientul.

7.2.2. Aplicaie propus


Se cere informatizarea activitii la o filial CEC. Clienii filialei sunt identificai prin seria i numrul de buletin, data eliberrii buletinului, nume, prenume i adres. Fiecare client poate s dein unul sau mai multe cecuri. Pentru fiecare cec se cunoate: seria, numrul, data la care a fost eliberat, suma depus n momentul eliberrii i tipul cecului (poate fi la termen i la vedere). De asemenea, fiecare cec poate s aib unul sau mai muli titulari. Fiecare client poate efectua depuneri i restituiri. Depunerile se efectueaz prin intermediul unei foi de depunere (FD) caracterizat prin: numr, data i suma depus. Restituirile se efectueaz prin intermediul foilor de restituire (FR) caracterizate prin: numr, data i suma restituit. Fiecare cec se poate lichida de ctre unul din titulari prin intermediul unei foi de lichidare (FL) caracterizat prin: numr, data i suma din momentul lichidrii. Dobnda acordat pentru cecuri se modific de la o zi la alta i este diferit pentru cecurile la termen fa de cele la vedere.

7.3. Aplicaia 2
1. S se paroleze baza de date. 190

2. Pentru a vizualiza ct mai sugestiv relaiile dintre tabele, se vor crea formulare cu subformulare. 3. Formularele create vor fi modificate pentru a aduga titluri, butoane de comand i controale de tip Textbox pentru afiarea i calcularea valorilor TVA i VALOARE. 4. Se cere crearea unei forme de meniu. Aceasta va apela cu ajutorul butoanelor de comand alte forme, cte una pentru fiecare table, pentru vizualizarea datelor. 5. Se dorete crearea unui panou de comand (Switchboard) pentru crearea unui meniu care s conin toate formele.

191

Obiective:

Protejarea bazei de date. Vizualizarea datelor cu posibilitatea efecturii unor operaii elementare asupra acestora. Afiarea unor valori calculate dup anumite formule. Crearea unei interfee vizuale cu utilizatorul.
Rezolvare 1. Pentru a proteja baza de date cu o parol, aceasta trebuie deschis n mod Exclusive. Pentru aceasta, vom nchide baza de date, alegem opiunea Open, dup selectarea bazei de date se apas sgeata din dreptul butonului Open, pentru a alege opiunea Open Exclusive.

Apoi, pentru a seta o parol, Tools/Security/Set Database Password:

192

2. Pentru a crea un formular pentru fiecare tabel n parte, se selecteaz tabelul, apoi din meniul Insert se alege opiunea Autoform. De exemplu, pentru tabela Facturi, fiind tabela printe tabelei Liniifact, automat se va crea un formular cu un subformular.

3. Pentru a aduga un titlu n antet i butoane de comand acestei forme, vom utiliza butonul View pentru a trece n Design View:

Pentru a aduga un antet/subsol, din meniul Insert vom alege opiunea Form Header/Footer. Pentru a aduga controale pe form este necesar afiarea barei de unelte Toolbox, prin apsarea butonului Toolbox de pe bara de unelte.

193

Pentru a aduga un titlu n partea de antet (Header), se utilizeaz controlul Label de pe bara de unelte, , se tasteaz textul dorit, apoi se formateaz folosind butoanele de pe bara de unelte. Pentru a aduga un control de tip buton de comand, trebuie ca butonul Control Wizards s fie selectat. Apoi, se alege butonul Command

Button , dnd un click n zona de subsol. Aceasta va porni asistentul care permite construirea butonului. Aciunile pe care le putem ataa butonului de comand sunt grupate n mai multe categorii. De exemplu, pentru a nchide o form, se selecteaz categoria Form Operations, selectnd apoi aciunea Close Form. La apsarea butonului Next asistentul v ghideaz pentru a alege fie o imagine grafic asociat butonului, fie un text. Ultimul pas este dat de denumirea butonului. Dup conveniile cunoscute, orice buton de comand are un antet de 3 litere, cmd, deci numele acestuia va fi cmdIesire. Analog se construiesc restul butoanelor dorite. Forma se va salva cu numele Facturi-Liniifact. Analog se construiesc restul formelor.

Vom construi o form care s conin datele din tabelele Produse i Liniifact. Pentru aceasta, vom selecta opiunea Create Form in Design View. Vom deschide fereastra Properties pentru a selecta tabelele de unde vor fi

194

preluate datele. Pentru aceasta, fiind poziionai pe form, apelm meniul contextual (click-dreapta) i alege Properties:

Dac se alege obiectul Form, prima opiune pe pagina All este Record Source. Dac dorim s extragem datele dintr-o singur tabel, alegem una dintre cele afiate atunci cnd este selectat combo-box-ul. Dac se dorete extragerea datelor din mai multe tabele, se apas butonul cu trei puncte. Din fereastra Show Table vom alege cele dou tabele, Liniifact i Produse.

Vom alege din cele dou tabele cmpurile nr_f, den_p, um, pret_u i cant. La nchiderea ferestrei se salveaz interogarea. Pentru a putea utiliza cmpurile, dac acestea nu apar implicit, se apas butonul drag-and-drop, aceste cmpuri vor fi aezate pe form. . Prin

195

Pentru a calcula un cmp, acesta trebuie creat cu ajutorul controlului Text-box de pe bara de unelte Toolbox. Selectnd controlul i dnd un click pe form, vom observa o etichet cu numele Text urmat de un numr, i un text-box n care apare completat Unbound. n locul textului se completeaz: TVA, iar n locul lui Unbound se tasteaz =0,19*[cant]*[pret_u]. Pentru a formata aceast caset de text, din fereastra Properties, opiunea Format, se alege Currency.

Analog se calculeaz cmpul Valoare. 4. Pentru a crea o form de meniu, se creaz o form cu ajutorul opiunii Create a Form in Design View, apoi se creeaz butoanele de comand (cu ajutorul asistentului Control Wizards), selectndu-se de la categoria Form Operation, aciuneaOpen a form, urmnd a selecta numele formei care se dorete a fi deschis atunci cnd se execut click pe buton. 6. Pentru a construi un panou de comand (Switchboard):

Dac apare acest mesaj de eroare, se alege opiunea Yes:

196

Din fereastra Switchboad Manager se alege opiunea Edit, pentru a edita panoul de comand principal (Main).

Pentru a crea o nou opiune (un nou buton pe panoul de comand) se alege butonul New:

Analog se creaz pentru fiecare form o nou opiune. Pentru a crea un buton care permite prsirea aplicaiei:

Putem alege oricare aciune dintre urmtoarele:

197

Forma poate fi regsit oricnd n cadrul formularelor:

7.3.1. Aplicaie propus:


S se creeze o interfa grafic cu utilizatorul cu ajutorul opiunii Switchboard, fiind create formulare cu subformulare, mbogite cu butoane de comand i cmpuri calculate, pentru baza de date de la Aplicaia 7.2.1. i 7.2.2.

7.4. Aplicaia 3
1. S se creeze o interogare care s permit afiarea informaiilor de pe toate facturile (nr_f, data_f, den_p, cant i pre unitar) pentru data curent. 198

2. S se creeze o interogare pentru tabela Produse, afindu-se pentru fiecare nregistrare TVA-ul i Valoarea (cant*pret). 3. S se creeze o interogare care s permit citirea interactiv n momentul execuiei a unui numr de factur i afiarea informaiilor legate de aceasta. 4. S se creeze o interogare care s permit afiarea tuturor facturilor eliberate ntre 2 date calendaristice (operatorii Between cu And). 5. S se creeze prin intermediul unei interogri un nou cmp cu numele Observaii care va conine textul Produs eficient dac valoarea este mai mare dect o anumit valoare sau Produs ineficient daca valoarea este mai mic dect acea valoare. 6. S se afieze toate facturile eliberate luna aceasta. 7. Operatorul Like: a. S se afieze toate produsele care ncep cu litera p. b. S se afieze doar produsele care sunt din 5 litere si ncep cu litera p. 8. S se afieze toate produsele care au preurile 3 i 5 lei. 9. S se afieze toate produsele care nu au completat cmpul denprodus. 10. S se determine pentru fiecare factur valoarea total. 11. S se creeze un nou tabel pe baza tabelelor Facturi, Produse i LiniiFact, rezultatul unei interogri, care s conin toate datele din toate tabele, suprimnd apariia dublat a cmpurilor de legtur, tabelul fiind ordonat alfabetic dup denumirea produselor. 12. S se numere cte produse au preul mai mic dect 100 lei. S se salveze interogarea cu numele Minim. 13. S se calculeze valoarea total a facturii cu numrul citit de la tastatur. S se salveze interogarea cu numele ValoareTot. 14. S se calculeze valoarea medie a valorii tuturor facturilor. S se salveze interogarea cu numele Medie.
Obiective:

Crearea interogrilor de selecie. Funcii pentru date calendaristice. Crearea unor cmpuri calculate. Interogri cu parametru. Operatorii Between, Like, In, Is Null.
Funcia IIF.

199

Interogri de tip Totals. Interogri de tip Make Table. Rezolvare: 1. Pentru a crea o interogare, se alege obiectul Query, selectnd apoi opiunea Create Query In Design View. n fereastra Show table vom selecta pe rnd tabelele Facturi, Liniifact i Produse, apsnd apoi butonul Add, apoi se nchide fereastra. Pentru a alege cmpurile dorite, acestea se selecteaz prin dublu-click. Pentru a selecta condiia ne poziionm sub coloana data_f, pe linia Criteria, unde tastm =Date(). Se salveaz interogarea apsnd pe butonul Save. Pentru a vizualiza rezultatul interogrii, de pe butonul View se alege Datasheet View.

Observaie: Dac nterogarea nu returneaz nici un rezultatul, nseamn c nici o nregistrare nu a verificat condiia ca data facturii s fie data curent. 2. Pentru a crea a doua interogare, se alege tabela Produse din fereastra Show Tables, apoi se calculeaz cmpurile TVA i valoare, pe rnd, pe linia Field, prima coloan liber: TVA: [pret_u]*[cant]*0,19, respectiv Valoare: [pret_u]*[cant]*1,19. Se salveaz i vizualizez rezultatul interogrii. Pentru a formata o anumit coloan din interogare (TVA i Valoare), n Design View se selecteaz coloana, se apeleaz meniul contextual opiunea Properties, iar la opiunea Format se alege Currency. Analog se procedeaz i cu coloana Valoare.

200

Se salveaz interogarea i se vizualizeaz rezultatele. 3. Se selecteaz tabelele Facturi, Produse i Liniifact, cmpurile: nr_f, data_f, den_p, pret_u i cant. Pentru a crea o interogare cu parametru, care s permit citirea interactiv a numrului facturii de pe tastatur, pe coloana nr_f, linia Criteria se tasteaz [Introduceti numarul facturii].

201

4. Se selecteaz tabela Facturi, Liniifact i Produse, cmpurile: nr_f, data_f, den_p, pret_u i cant:

5. Se deschide interogarea de la punctul 2, n Design View, se salveaz cu alt nume (Save as). Se apeleaz meniul contextual asociat unui nou cmp, se alege opiunea Build Event:

Se selecteaz funcia IIF, modificnd-o astfel: IIf([valoare]>50;"Produs eficient";"Produs ineficient").

Observatii:

6. Vom folosi 2 funcii care pot fi aplicate unor date calendaristice: Datepart (o parte dintr-o dat calendaristic) i funcia Month (extrage luna dintr-o dat calendaristic).

202

7. a). Se alege tabela Produse, cmpurile: den_p, pret_u, stoc, um i cod_m. Pe coloana den_p, linia Criteria se tasteau condiia: LIKE "p*". b) Se deschide interogarea de la punctul a), se salveaz cu alt nume, se trece n modul de vizualizare Design View i se modific condiia: LIKE "p????". 8. Se alege tabela Produse, coloana pret_u, utilizndu-se operatorul IN.

9. Tabela aleas va fi Produse, cmpurile: den_p, cant, cod_m. Pe coloana den_p, linia Criteria se tasteaz IS NULL. 10. Deschidem interogarea de la punctul 2, unde avem calculat valoarea. Salvm interogarea cu un alt nume, trecem n Design View i tergem sau modificm restul cmpurilor, lsnd doar urmtoarele: nr_f i valoare.

203

Se selecteaz butonul Totals de pe bara de unelte, iar sub valoare, pe linia Total, se alege funcia SUM. 11. Pentru a crea o nou tabel cu toate nregistrrile din tabelele Facturi, Produse i Liniifact, se adaug toate cmpurile din aceste tabele, fr a duplica respectivele cmpuri, iar din meniul Query se alege opiunea Make Table Query, se d un nume tabelei noi create, apoi se salveaz interogarea, i apas butonul Run pentru a executa aciunea:

Mesajul urmtor este doar unul de avertizare, i anume datele salvate n tabele vor fi adugate n tabelul nou creat. Deci vom apsa butonul Yes.

204

12. Din fereastra Show Table se alege tabela Produse, utilizndu-se funcia COUNT:

13. Pentru a calcula valoarea total pe fiecare factur n parte, se grupeaz datele dup numrul facturii (interogri de tip Totals) i se alege funcia SUM:

14. Pentru a calcula media se aplic funcia AVG:

205

7.4.1. Aplicaie propus


S se ncerce toate tipurile de interogri din exemplul anterior pe problemele propuse 7.2.1 i 7.2.2.

7.5. Aplicaia 4
1. S se creeze un raport pentru tabelul Furnizori, datele fiind grupate dup localitate. 2. S se creeze un raport pentru afiarea datelor de pe fiecare factur n parte, calculndu-se valoarea facturii i valoarea total a tuturor facturilor. 3. S se creeze rapoarte pentru fiecare tabel i interogare create anterior.
Obiective: Crearea rapoartelor cu ajutorul Wizard-ului. Crearea rapoartelor cu datele provenind din mai multe tabele. Adugarea unor cmpuri calculate. Rezolvare: 1. Pentru a crea un raport cu ajutorul asistentului, se alege opiunea Create Report by Using Wizard. La primul pas se alege tabela sau interogarea pe baza creia se va crea raportul (Tables/Forms). Din caseta Available Fields se selecteaz cmpurile dorite, apoi se apas butonul Next.

206

La pasul 2 se selecteaz criteriul de grupare, n cazul de fa vom grupa furnizorii dup localitate. Dac se apas butonul Grouping Options se pot alege mai multe variante de grupare: dup prima iniial, a doua, etc...

La pasul urmtor se selecteaz ordinea n care vor fi afiate nregistrrile n raport:

207

n continuare se selecteaz orientarea paginii (vertical, orizontal), precum i modul de afiare al informaiilor pe pagin:

La pasul urmtor se alege un stil din lista afiat. Ultimul pas permite modificarea titlului raportului (nu este vorba de numele cu care va fi salvat raportul, ci doar textul care va apare n antentul raportului), apoi putem alege ntre a vizualiza raportul i a modifica raportul. Pentru a ncheia crearea raportului se alege opiunea Finish.

Raportul n modul Design va apare ca n figura urmtoare:

208

Dac datele care dorim s apar provin din mai multe tabele, sau avem nevoie de unele cmpuri calculate, putem crea o interogare n care s selectm tabelele, calculnd cmpurile dorite, apoi crem raportul pe baza interogrii. Dac se dorete adugarea unui cmp care va fi calculat, se alege de pe bara de unelte Toolbox controlul TextBox. n caseta n care apare Unboand, se ncepe cu simbolul =, apoi se tasteaz funcia sau formula dorit. Numele cmpurile vor fi trecute ntre paranteze drepte. De exemplu, un cmp valoare ar putea fi calculat astfel =[cant]*[pret_u]*0,19. 2. Pentru a crea raportul, vom alege ca surs a datelor interogarea cu numele Valoare. Dac n aceast interogare avem cmpuri de tip Numeric, la pasul 3 se selecteaz butonul Summary Option, bifnd check-box-urile de sub funcia SUM pentru cmpurile TVA i Valoare.

Pentru a vizualiza raportul, de pe butonul View se alege opiunea Print Preview.

209

7.5.1. Aplicaie propus


S se creeze rapoarte cu ajutorul Wizard-ului i cu ajutorul opiunii Create Report in Design View pentru problemele propuse 7.2.1 i 7.2.2.

7.6. Aplicaia 5
1. S se creeze urmtoarea form de meniu.

Obiective: Crearea butoanelor de comand fr ajutorul asistentului. Utilizarea ferestrei Properties pentru a customiza butonul. Prezentarea mediului de programare VBA. Utilizarea comenzii DoCmd cu metodele OpenTable, RunSQL i Quit. Instruciuni VBA citirea de la tastatur a datelor prin InputBox. Instruciuni SQL inserarea unei noi nregistrri, modificarea valorii unui cmp, selecia datelor. Rezolvare: n acest caz se va folosi facilitatea Create form in Design View. De pe bara de unelte Toolbox se verific dac butonul Control Wizard este selectat. Acesta trebuie s fie deselectat pentru a permite crearea manual a controalelor, fr ajutorul asistentului. n continuare se alege butonul de

210

comand Command Button , acesta fiind depozitat pe form. Apelnd meniul contextual asociat butonului de comand creat pe form, se selecteaz opiunea Properties i se modific proprietile Name: cmdDesPr i Caption: Produse Design. Analog se procedeaz pentru restul butoanelor. Pentru a introduce instruciuni ataate butoanelor trebuie s apelm editorul Visual Basic. Pentru aceasta, se apeleaz meniul contextual al fiecrui buton n parte, se alege Build event, Code builder, OK. Mediul de programare Visual Basic Application arat ca n figura urmtoare:

n zona de declarare a variabilelor se tasteaz:

Butonul 1 Private Sub cmdDesPr_Click() ' se deschide tabela Produse pt. vizualizare in Design

211

DoCmd.OpenTable "Produse", acViewDesign End Sub Toate liniile care ncep cu caracterul apostrof sunt comentarii, ele vor fi ignorate de compilatorul Visual Basic. Butonul 2 Private Sub cmdDescPr2_Click() ' se deschide tabela Produse pt. vizualizare in Datasheet View DoCmd.OpenTable "Produse" End Sub Butonul 3 Private Sub cmdInsPr_Click() 'adaugarea unei noi inregistrari DoCmd.RunSQL "insert into produse values (cod_produs, den_produs, um_produs, stoc_produs, pret_produs, cod_mag)" End Sub Butonul 4 Private Sub cmdModDen_Click() 'modificarea denumirii unui produs la care este cunoscut codul v_cod = InputBox("Introduceti codul produsului la care doriti sa ii modificati denumirea:") DoCmd.RunSQL "update produse set den_p=denumire where cod_p=" & v_cod End Sub Butonul 5 Private Sub cmdCrTNou_Click() 'selectarea produselor cu stoc 0 si crearea unei tabele cu aceste produse DoCmd.RunSQL "Select cod_p, den_p, um, stoc, pret_u, cod_m into StocNul from produse where stoc=0" DoCmd.OpenTable "StocNul" End Sub Butonul 6 Private Sub cmdViz_Click() 'vizualizarea produselor cu codul >= o valoare introdusa de la tastatura v_cod = InputBox("Introduceti un cod pentru a fi afisate produsele cu codul mai mare decat aceasta valoare")

212

DoCmd.RunSQL "Select cod_p,den_p,um,stoc, pret_u, cod_m into Temp1 from produse where cod_p>=" & v_cod DoCmd.OpenTable "Temp1" End Sub Butonul 7 Private Sub cmdValoare_Click() DoCmd.RunSQL "select cod_p, den_p, um, categorie, pret, cant, cant*pret as valoare into Valoare from produse" DoCmd.OpenTable "Valoare" End Sub

213

Butonul 8 Private Sub cmdIesire_Click() DoCmd.Quit End Sub

7.6.1 Aplicaie propus


S se creeze un formular cu opiuni corespunztoare tabelelor existente create pentru problemele propuse 7.2.1 i 7.2.2.

214

GLOSAR DE TERMENI

Dat

Organizarea datelor

Fiierul

Redundana datelor

Baza de date

Modelul de date

o informaie codificat i stocat pe un suport de memorare. Din punctul de vedere al prelucrrii de calculator, n cadrul aplicaiilor, datele se definesc cu ajutorul unui nume (identificator), a atributelor pe care le are i de o valoare. reprezint procesul de identificare, definire, evaluare, structurare i memorare a informaiilor, n cadrul unui sistem informaional. Prin organizarea datelor se realizeaz gruparea datelor n colecii de date omogene, se stabilesc care sunt relaiilor dintre date, dintre elementele coleciilor i dintre colecii, precum i modul de stocare a datelor pe suportul fizic de memorare. este o structur care grupeaz date dintr-un anumit domeniu care au anumite caracteristici comune. Din punct de vedere fizic fiierul este o colecie finit de nregistrri fizice, iar din punctul de vedere al semnificaiei, o colecie de nregistrri logice, numite i articole. Din punctual de vedere al sistemului de operare fiierul are un nume i eventual o extensie de fiier. reprezint o proprietate a unei colecii de date care se refer la faptul c unele componente ale coleciei de date sunt memorate de mai multe ori pe suportul de memorare. Creterea redundanei are ca efect apariia de erori frecvente datorate neconcordanei informaiilor memorate n fiiere aparinnd unor aplicaii diferite, rezultnd costuri de actualizare mrite corespunztor. este un ansamblu structurat de date legate structural ntre ele, un depozit de date unic definit o singur dat i utilizat simultan de mai muli utilizatori. Baza de date este o resurs comun i partajat. Baza de date conine nu numai date ci i descrierea acestora. este o colecie integrat de concepte, necesare descrierii datelor, a relaiilor dintre date i a constrngerilor asupra datelor dintr-o organizaie, o reprezentare abstract a obiectelor i a evenimentelor lumii reale i a asocierilor dintre acestea, cu ajutorul cruia se reprezint o organizaie.

215

Modelul Entitate Relaie

Cheie candidat

Cheie primar Chei alternative Cheie compus Relaie (relationship)

Sistemul de Gestiune al Bazei de Date (SGBD) Administratoru l de date (Data Administrator)

reprezint un model de date conceptual de nivel nalt, neformalizat, care descrie structura bazei de date, precum i tranzaciile de regsire, respectiv de reactualizare asociate. Acest model, permite o reprezentare a unui sistem real, grupnd elementele sistemului real n entiti i asocieri (legturi) ntre entiti. este atributul sau mulimea de atribute ale unei entiti care identific n mod unic apariiile individuale ale unui tip de entitate. Un tip de entitate poate avea mai multe chei candidat. din mulimea de chei candidat se alege un singur care va fi numit cheie primar. se numesc celelalte chei candidat, rmase nealese. este o cheie candidat format din mai multe atribute. este o asociere, o comunicare, o coresponden ntre dou sau mai entiti. Relaia exprim raportul existent ntre respectivele entiti i exist doar dac entitile exist. reprezint un pachet de programe specializat pentru definirea, crearea, ntreinerea i accesul controlat la baza de date. gestioneaz resursele de date, fiind responsabil de proiectarea conceptual i logic a bazei de date, de planificarea bazei de date, de realizarea i ntreinerea standardelor, a politicilor i a procedurilor bazei de date. este persoana sau grupul de persoane responsabil de proiectarea, implementarea i realizarea fizic a bazei de date, de securitatea i controlul integritii, de ntreinerea ntregului sistem. sunt persoanele implicate n proiectarea logic i cea fizic a bazei de date. Proiectarea conceptual i logic presupune identificarea entitilor, a relaiilor dintre entiti, a constrngerilor asupra datelor ce vor fi stocate n baza de date.

Administratoru l bazei de date (Database Administrator) Proiectanii bazei de date

216

Limbajul pentru definirea datelor (LDD Data Description Language) Limbajul pentru manipularea datelor (LMD Data Manipulation Language) Limbajul pentru controlul datelor (LCD Data Control Language) Tabelele

este un limbaj specific pentru fiecare SGBD fiind utilizat pentru a specifica schema bazei de date. Este un limbaj descriptiv care permite administratorului bazei de date, respectiv utilizatorului final sa descrie i s defineasc entitile din baza de date precum i relaiile existente ntre entiti, adic s defineasc o schem sau s o modifice. este un limbaj care asigur un set de procedee ce permit operaiile de baz pentru manipularea datelor din baza de date. Operaiile executate n cadrul bazei de date presupun existena unui limbaj specializat n care comenzile se exprim prin fraze ce descriu aciuni asupra bazei de date. este un limbaj specific care include comenzi pentru asigurarea confidenialitii i integritii datelor, pentru salvarea informaiei cu scopul meninerii integritii bazei de date i chiar pentru rezolvarea problemelor de acces concurenial la date. conin datele propriu-zise corespunztoare entitilor din baza de date, organizate sub forma unei matrice n care coloane reprezint atribute (cmpuri), iar liniile apariiile, realizrile entitii (nregistrri). este o linie dintr-un tabel, n care fiecare cmp conine o valoare concret dintr-un domeniu de valori i conine informaii care identific o anumit realizare concret a entitii; persoan, loc sau obiect este o informaie individual din componena unei nregistrri, iar fiecare coloan din tabelul Access reprezint un cmp diferit. sunt obiecte virtuale de tip tabel, adic vizualizri, care nu au corespondent fizic, fiind definite cu ajutorul tabelelor definite deja n baza de date. sunt obiecte folosite pentru a consulta sau actualiza datele dintr-un tabel sau o structur de interogare.

nregistrarea

Cmpul

Interogrile

Formularele

217

sunt obiecte folosite pentru a sintetiza datele stocate ntr-o tabela real sau virtual i a oferi un rezultat tiprit al informaiilor din baza de date un raport ACCES, de la cea mai simpl list a unui tabel pn la rapoartele cele mai complexe ce conin regrupri de nregistrri i calcule. Paginile de reprezint obiecte specifice ACCESS care permit afiarea ntr-un format accesibil care permite prezentare transmiterea rapid a datelor prin Internet sau Intranet. reprezint o modalitate optim de acces la date, care Macro-urile permit automatizarea mai multor sarcini folosind un limbaj specific. Pentru a rezolva o sarcin mai complex se poate construi un macro (format dintr-o mulime de aciuni) sau o procedur (format dintr-o succesiune de instruciuni n Visual Basic).

Rapoartele

Modulele

conin o parte a codului VBA al aplicaiei, i anume declaraiile de variabile i constante, funciile i procedurile globale ale ntregii aplicaii. VBA reprezint un mediu de programare orientat obiect.
reprezint aciunea utilizatorului sau a sistemului asupra unui obiect ceea ce declaneaz execuia codului program corespunztor. const n codul program predefinit ce se raporteaz la un tip de obiect i care se execut n momentul apariiei unui eveniment. este alctuit dintr-un set de instruciuni (un modul program) ce nu returneaz nici o valoare ci execut o anumit aciune. const dintr-un set de instruciuni (un modul program) care n urma execuiei returneaz o valoare de un anumit tip. este un limbaj de programare orientat obiect, dezvoltat de Microsoft folosind limbajul Visual BASIC adaptat la

Evenimentul

Metoda

Procedura

Funcia

Visual Basic Application

218

(VBA) Access IDE (Integrated Development Environment) Limbajul SQL (Structured Q u e r y Language) Instruciunea SELECT

cerinele specifice ale sistemelor de gestiune de baze de date. este mediul n care se poate crea, modifica i testa codul VBA.

este un limbaj de interogri i gestionare a bazelor de date relaionale.

este cea mai folosit instruciune, corespunznd interogrii Selection din Access. Permite extragerea cmpurilor unui ansamblu de nregistrri ce corespund unor criterii. Clauza FROM specific tabelele sau interogrile din care sunt extrase datele. (SELECT) C l a u z a W H E R E (SELECT) Clauza GROUP BY (SELECT) C l a u z a H A V I N G (SELECT) permite filtrarea nregistrrilor dup anumite criterii.

este folosit pentru executarea funciilor de agregare SQL, ca i Sum (sum), Count (calcul), Avg (medie). specific nregistrrile regrupate ce trebuie afiate ntr-o instruciune SELECT dotat cu o clauz GROUP BY. Odat ce regruparea este efectuat se afieaz lista de cmpuri a clauzei GROUP BY i sunt selectate doar nregistrrile care respect condiia specificat n clauza HAVING. Clauza ORDER determin sortarea (aranjarea n ordine cresctoare sau descresctoare), nregistrrile rezult dintr-o interogare BY (SELECT) n funcie de cmpul/cmpurile specificat(e). Instruciunea corespunde unei interogri de actualizare care modific valorile cmpurilor ntr-un tabel specificat, pentru UPDATE nregistrrile ce corespund criteriului dat (facultativ). Instruciunea corespunde unei interogri DELETE ce terge DELETE nregistrrile din tabelul menionat n clauza Instruciunea INSERT INTO

FROM, dup criteriile date (facultativ). corespunde unei interogri ADD care adaug nregistrri ntr-un tabel. 219

OLE (Object este tehnologia care permite manipularea obiectelor Linking and unei alte aplicaii, direct din Access sau din VBA Embedding) sau Access. O L E Automation Bibliotec obiecte de un fiier prevzut de obicei cu o extensie .olb, furniznd informaii ce permit maipularea obiectelor puse la dispoziia utilizatorului de un server. Se poate folosi Exploratorul de obiecte pentru a examina coninutul unei biblioteci de obiecte. este un protocol de schimb dinamic de date ntre dou aplicaii Windows, una denumit Clinei sau Destinaie, cealalt denumit Server sau Surs. Legtura este ntrerupt dac una dintre cele dou aplicaii este nchis.

DDE (Dynamic Data Exchange)

220

BIBLIOGRAFIE
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. T.Connolly, C.Beg, A.Strachan, Baze de date proiectare, implementare, gesionare, Ed. Teora, Bucureti, 2001; S.Biriescu, Baze de date n mediul Acces, Ed. Mirton, Timioara, 2006; D.Dnia, C.Margea, D.Mogoanu, A.Popovici, Baze de date n mediul Acces, Editura Mirton, Timioara, 2001; I.Despi, G.Petrov, R.Reisz, A.Stepan, Teoria general a bazelor de date, Ed. Mirton, Timioara, 2000; C.Fehily, SQL visual quickstart guide, Ed. All, Bucureti, 2004; V. Florescu, P.Nstase, F.Berbec, Baze de date fundamente teoretice i practice, Ed. Infomega, Bucureti, 2002; C.Giulvezan, G.Mircea, Baze de date. Teorie i practic. Acces i VBA, Ed.Universitii de Vest, Timioara, 2006; M.J.Hernandez, Proiectarea bazelor de date, Ed. Tora, Bucureti, 2003; L.Hurbean, Baze de date. Concepte teoretice i abordare practic n Microsoft Access, Ed. Mirton, Timioara, 2006; F. Ionescu, Baze de date relaionale i aplicaii, Ed. Tehnic, Bucureti, 2004; M.Lupulescu, M.Muntean, C.Giulvezan, FoxPro de la iniiere la performan, Ed. de Vest, Timioara, 1994; M.Miloescu, Baze de date n Visual FoxPro, Ed. Teora, Bucureti, 2003; G.Mircea, Access 2002. Tehnici de programare n VBA, Ed. Mirton, Timioara, 2003 M.Muntean, Note de curs Baze de date, 2007-2008;

221

15. 16. 17. 18. 19. 20. 21.

M.Muntean, Baze de date n sisteme informatice economice, Ed. Mirton, Timioara, 2002; P.Nstase .a. Baze de date Microsoft Access 2000, Ed. Teora, Bucureti, 1999; J.V.Petersen, Baze de date pentru nceptori, Ed. All, Bucureti, 2002; I.Popescu, Modelarea bazelor de date, ed. Tehnic, Bucureti, 2001; R.Smith, D.Sussman, Programare n ACCESS 97 VBA, pentru nceptori, Ed. Tora, Bucureti, 1999; M.Velicanu, I.Lungu, M.Muntean, Dezvoltarea aplicaiilor cu Visual FoxPro, Ed. All, Bucureti, 2001; ***, Microsoft Visual Basic 6.0 ghidul programatorului, Ed. Teora, Bucureti, 1999.

222

You might also like