Sunteți pe pagina 1din 149

Ioan Doro

Baze de date

Editura Cibernetica MC Bucureti 2010

Descrierea CIP a Bibliotecii Naionale a Romniei DOROS, IOAN Baze de date / Ioan Doros. - Bucureti : Cibernetica, 2010 ISBN 978-973-88451-6-9 004

Editur acreditat CNCSIS cu codul 73

Tehnoredactare i corectur: Arabela Andor Coperta: Adelina Muntean

CAPITOLUL I. DELIMITRI CONCEPTUALE ALE BAZELOR DE DATE .................... 6 1.1. Termeni specifici n lucrul cu bazele de date ........................................................... 6 1.2. Sisteme de gestiune a bazelor de date ...................................................................... 9 1.2.1. Noiuni generale privind sistemele de gestiune a bazelor de date ....................... 9 1.2.2. Funciuni ale sistemelor de gestiune a bazelor de date ...................................... 10 1.2.3. Caracteristicile sistemelor de gestiune a bazelor de date pentru o baz de date relaional ................................................................................................................ 11 1.2.4. Sistemul de gestiune a bazelor de date ACCESS .............................................. 13 1.3. Scopul unei baze de date ........................................................................................ 14 1.4. Componentele aplicaiei ACCESS .......................................................................... 15 1.5. Proiectarea bazelor de date..................................................................................... 16 1.5.1. Principii ale proiectrii bazelor de date ............................................................ 16 1.5.2. Normalizarea unei baze de date relaionale ...................................................... 18 1.5.3. Integritatea bazelor de date .............................................................................. 22 1.6. Operarea n mediul ACCESS .................................................................................. 24 1.6.1. Deschiderea aplicaiei. Crearea unei noi baze de date ....................................... 24 1.6.2. Moduri de vizualizare ..................................................................................... 26 1.6.3. Deschiderea, modificare a, salvarea i nchiderea unei baze de date existente ... 27 1.6.4. Folosirea funciei ajutor .................................................................................. 29 1.6.5. nchiderea aplicaiei ........................................................................................ 31 CAPITOLUL II. CREAREA I UTILIZAREA TABELELOR ............................................ 32 2.1. Crearea unei tabele ................................................................................................ 32 2.1.1. Proprietile cmpurilor ................................................................................... 33 2.1.2. Definirea unei chei primare ............................................................................. 37 2.1.3. Stabilirea unui index ....................................................................................... 37 2.1.4. Modificarea proprietilor unui cmp ............................................................... 38 2.2. Editarea datelor ntr - o tabel .................................................................................. 39 2.2.1. Introducerea de date n tabel .......................................................................... 39 2.2.2. Vizualizarea informaiilor dintr -o tabel .......................................................... 40 2.2.3. Modificarea datelor ntr -o tabel ..................................................................... 40 2.2.4. Adugarea de nregistrri ntr -o tabel ............................................................. 41 2.2.5. tergerea de date ntr -o tabel ......................................................................... 41 2.3. Crearea relaiilor ntre tabele ................................................................................. 43 CAPITOLUL III. UTILIZAREA INFORMAIILOR DINTR - O BAZ DE DATE .............. 45 3.1. Conectarea la o baz de date existent .................................................................... 45 3.2. Cutarea datelor cu ajutorul instrumentelor mediului Access .................................. 45 3.3. Crearea unei interogri simple ............................................................................... 46 3.4. Crearea interogrilor peste mai multe tabele ........................................................... 51 3.5. Selecia i sortarea d atelor ..................................................................................... 56 3.6. Salvarea unei interogri ......................................................................................... 57 3.7. Adugarea i eliminarea filtrelor ............................................................................ 57

3.8. Limbaj Structurat de Interogare SQL (Structured Query Language) ......................... 59 3.8.1. Limbajul SQL ................................................................................................. 59 3.8.2. Comenzi destinate tabelelor ............................................................................. 62 3.8.3. Instruciunile de selecie a datelor ................................................................... 63 3.8.4. Instruciunile pentru manipularea datelor ......................................................... 74 CAPITOLUL IV. CREAREA I UTIL IZAREA FORMULARELOR .................................. 77 4.1. Noiuni generale ................................................................................................... 77 4.2. Controale ............................................................................................................... 80 4.3. Proiectarea unui formular legat de o surs de nregistrri ........................................ 82 4.3.1. Proprietile eseniale ......................................................................................... 82 4.3.2. Obiectele simple ............................................................................................. 84 4.3.3. Culorile obiectelor .......................................................................................... 85 4.3.4. Aranjarea obiectelor ........................................................................................ 86 4.3.5. Alte faciliti .................................................................................................. 87 CAPITOLUL V. CREAREA I UTILIZAREA RAPOARTELOR ...................................... 91 5.1. Crearea unui raport ................................................................................................ 91 5.2. Particularizarea antetului i subsolului .................................................................. 94 5.3. Gruparea datelor ntr -un raport. Realizarea de totaluri i subtotaluri ....................... 97 CAPITOLUL VI. LIMBAJUL VISUAL BASIC .............................................................. 103 6.1 Editarea modulelor Visual Basic for Application ................................................... 103 6.2 Elemente de sintax .............................................................................................. 105 6.3 Casete de dialog predefinite .................................................................................. 106 6.4 Variabilele n VBA ............................................................................................... 109 6.4.1. Declararea variabilelor .................................................................................. 109 6.4.2. Tipurile variabilelor n VBA ......................................................................... 111 6.4.3. Iniializarea vari abilelor ................................................................................ 113 6.5. Tablouri .............................................................................................................. 113 6.6 Funcii i proceduri definite de utilizator ............................................................... 114 6.7 Structura alternativ ............................................................................................. 119 6.8 Structura repetitiv ............................................................................................... 120 6.8.1. Structura repetitiv cu numrtor ................................................................... 120 6.8.2. Structurile repetitive de tip Do Loop ......................................................... 122 6.8.3. Structura repetitiv pentru fiecare .............................................................. 124 6.9 Programarea recursiv .......................................................................................... 125 6.10 Obiecte ACCESS 2000 ........................................................................................ 126 6.11 Programarea dirijat de evenimente n ACCESS 2000 .......................................... 128 6.12 Accesul cu programele la obiectele bazei de date ................................................. 131 CAPITOLUL VII. NDRUMAR PENTRU REALIZAREA PROIECT ULUI LA DISCIPLINA BAZE DE DATE ........................................................................................................ 140 7.1. Cerine minimale ................................................................................................. 140 7.2. Baza de date ........................................................................................................ 141 7.3. Documentaia ...................................................................................................... 144

BIBLIOGRAFIE ............................................................................................................ 149

CAPITOLUL I. DELIMIT RI BAZELOR DE DATE

CONCEPTUALE

ALE

1.1. Termeni specifici n lucrul cu bazele de date


Gestiunea co lecii1or de date este una din cele mai importante probleme care se rezolv astzi cu ajutorul calculatoarelor existente, de la cele mai simple PC-uri (Personal Computers), pn la calculatoarele foarte puternice. Aceste colecii de date pot f i memorate n diferite fiiere, care sunt apoi gestionate cu ajutorul limbajelor de programa re, sau n baze de date, care sunt gestionate de Sistemele de Gestiune a Bazelor de date (SGBD). Lucrul cu voume tot mai mari de date i- a fcut pe oameni s sporeasc din ce n ce mai mult numrul calculatoarelor i s le mbunteasc caracteristicile p e zi ce trece, pentru a- i uura astfel munca . O baz de date poate fi definit ca fiind o colecie de tabele n care sunt stocate clase de entiti diferite. Elementele generice ale unei baze de date sunt: Coloanele, care se numesc cmpuri ( n en glez FIELDS); Nume Rndurile , care se numite nregistrri , tabel articole sau tupluri ( n englez

nregistri

Cmpuri

RECORDS). 6

Un tabel este de fapt o colecie a tuturor entitilor de date dintr -un singur tip de date (tip de entiti sau clas de date). nregistrrile dintr -un tabe l formeaz cardinalul , n vreme ce cmpurile definesc structura tabelului , numrul de cmpuri, tipul lor i dimensiunea lor. Cmpurile unui tabel pot fi de tipul: 1. Logic , putnd s suporte valorile Y, N, T, F; 2. Numeric , putnd fi definite cu ajutorul numerelor ntregi sau cu ajutorul zecimalelor; 3. Dat calendaristic , cmpurile putnd fi definite cu ajutorul unei date valabile; 4. ir de caractere , putnd fi de diferite lungimi; 5. Memo , cmpurile putnd conine articole de lungimi variabile. O baz de date are o structur care poate fi reprezentat sub forma unei colecii de descrieri statice ale diferitelor tipurilor de entiti, dar si a relaiilor logice dintre acestea. Aceste relaii logice reprezint de fapt, asociaiile dintre mai multe entiti. Astfel, o entitate poate fi definit ca o reprezentarea unic a unui obiect real. Aceasta corespunde unei nregistrri i este reprezentat prin luarea de valori pentru diferite atribute ale sale. Pentru a diferenia dou entiti este necesar ca mcar un atribut s aib valori diferite. Atributul este o proprietate important a unui obiect din lumea real, fiind necesar pentru a distinge entitile ntre ele. Atributul mai poate fi definit ca fiind o celul sau o csu dintr -un tabel. La fel ca i cmpurile, atributele pot fi de tip logic, numeric, dat calendaristic, ir de caractere sau memo. Domeniul de valori al atributului poate fi precizat la creearea bazei de date, cnd se vor specifica i intervalele de valori pentru fiecare cmp. Pentru identificar ea univoc a unei entiti este necesar crearea unui atribut sau a unei combinaii de atribute care poart denumirea de identificator sau cheie. n ACCESS identificatorii sunt cmpuri cheie principale, acetia fiind folosii pentru crearea indexului princ ipal al entitii. O baz de date este un ansamblu structurat de date evolutive, organizate pentru a fi prelucrate de programe informatice. Bazele de date sunt fiiere stocate pe suporturi magnetice, mpreun cu aplicaiile care le exploateaz (utilizeaz). Cele mai multe baze de date sunt relaionale (n proporie de 80% -90%). 7

Bazele de date relaionale sunt de fapt nite tabele cu relaii ntre ele. Aceste baze de date relaionale au redundan minim i controlat. Primul care a introdus noiunea de baz de date relaional a fost E. F. Codd 1, n anul 1970. Un exemplu de baz de date relaional ar putea fi prezentat cu ajutorul celor dou tabele, a cror structur este redat mai jos: Marc Nume Adres Salar nominal

Marc

Nume

Funcii

Salar nominal

Deduceri

Impozit

Faptul c urmtoarele coloane: marc, nume i salar nominal , apar de dou ori, nseamn c aceste coloane sunt redundante . Pentru a putea stabili relaii ntre tabele, cmpul care con ine marca trebuie s fie inclus n amb ele tabele. Nu este nevoie s fie denumit identic n ambele tabele, n schimb treb uie s aib acelai coninut. Rela iile ntre tabele pot fi stabilite i pe combina ii d e cmpuri (unele SGBD - uri permind i descrierea de astfel de combina ii prin expresii aritmetice). Astfel, s e pot stabili mai multe tipuri de relaii ntre tabele, dup cum urmeaz: Relaii de unu -la-unu; Relaii de unu -la- mai muli; Relaii de muli -la-unu; Relaii de muli -la- muli. Do u tabele aflate n rela ie de unu-la-unu, sun t interclasabile i pot fi privite ca unul singur, articolele rezultate cuprind reuniunea cmpurilor celor dou tabele. Relaiile de unu-la- muli i muli -la- unu, se refer la acelai lucru, dar privit din pr i diferite. n Access se utilizeaz rela iile de unu-la-mai- mul i. Relaiile de tipul muli la- muli , nu pot fi incluse n bazele de date rela ionale. Exemplificm, n figura de mai jos, 4 tabele cu rela ii de unu-la- mai mul i (scris 1- ), definite n A CCESS:

Edgar Frank Codd (23 august 1923, Insula Portland, Anglia 18 aprilie 2003, Williams Island,

Florida, SUA) a fost un informatician american de origine englez care, lucrnd pentru IBM, a inventat modelul relaional pentru gestiunea bazelor de date, model care constituie baza teoretic a bazelor de date relaionale. (conform wikipedia.com)

1.2. Sisteme de gestiune a bazelor de date


1.2.1. Noiuni generale privind sistemele de gestiune a bazelor de date
Aplicaiile care exploateaz aceste date sunt cunoscute sub denumirea de sisteme de gestiune a bazelor de date sau S.G.B.D.. Cteva astfel de sisteme de gestiune a bazelor de date ar fi: ORACLE . Compania ame rican cu acest nume, a oferit, nc de la nceputul anilor 80, cele mai robuste , rapide i eficiente variante de sisteme de gestiune a bazelor de date, pentru calculato are de toate tipurile (mari, mini, micro), de tip client- server, pentru re elele locale sau pe Internet. Pre ul ridicat, datorat standardelor de calitate ale produselor i s erviciilor, fac ca n ara noastr, recurgerea la solu iile Oracle s se fac doar pentru proiectele de sisteme informatice mari; FoxPro . C u aceast denumire Compania Microsoft a promovat un model de organizare a datelor, numit dBASE, existent din anul 1990. Acest program este foarte popular n ara noastr, deoarece crearea i evolu ia lui este sincron fenomenul ui exploziv din anii 1990, prin care firmele i-au dezvoltat proiecte proprii de informatizare. SQL Server . Cu acest nume, compania Microsoft promoveaz sistemele de gestiunea a bazelor de date, de tip client-server, pentru problemele care depesc capacit ile ACCESS sau FoxPro; 9

MySQL . Este un sistem de gestiune a bazelor de date foarte rspndit datorit faptului c este gratuit (de tip Open Source) ; Aplicaia Microsoft ACCESS , care este un sistem de gestiune a bazelor de date relativ nou, aceas aplicaie fcnd parte din suita de programe de birou Microsoft Office. Toate fiierele sunt n ultim instan un lung ir de bii, ceea ce face pn la urm diferena ntre ele, redarea sunetelor din fiierele tip .wav sau a imaginilor din fiierele .bmp sau .jpg, sunt programele dedicat e acestor meniri. Astfel, i un sistem de gestiune a bazelor de date are menirea de a conferi unor fiiere forma de tabele pentru ca informaiile coninute s fie accesibile utilizatori lor, care s poat efectua cele patru operaii (adugare, regsire, t ergere, modificare). Prin similitudine se poate spune c rolul unui sistem de gestiune a bazelor de date pentru o baz de date este asemntor rolului unui Sistem de O perare pentru un calculator. Principalul scop al unui sistem de gestiune a bazelor de dat e este acela de a pune la dispoziia utilizatorilor mijloacele necesare pentru crearea bazelor de date, dar i pentru crearea unor programe care s foloseasc aceste date.

1.2.2. Funciuni ale sistemelor de gestiune a bazelor de date


Un sistem de gestiune a bazelor de date are urmtoarele funciuni: 1. Definirea bazei de date , n principal a structurii tabelelor, vederilor, interogrilor, a relaiilor sau a altor obiecte specifice SGBD-urilor. Partea din limbaj specializat pentru aceste sarcini se constituie ntr -un Limbaj de Definire a Datelor ( abreviat n mod uzual: LDD), alctuit din diferite comenzi (dac un astfel de limbaj nu exist) , i/sau dintr - o interfa cu utilizatorul (variant mult utilizat). 2. Manipularea informaiilor din baza de dat e, este principalul scop al unui SGBD perceput de utilizatorii obinuii. Acetia i doresc s poat introduce, regs i i actualiza (modifica sau terge), date prin aplicaiile lor. Programatorii au la dispoziie , pentru a realiza acest lucru, un Limbaj de Manipulare a Datelor (abreviat n mod uzual: LMD), i/sau autorul unor comenzi (dac nu exist un astfel de limbaj). Este recomandabil ca n aplicaii, prile care implementeaz aceste prime dou funciuni s fie pe ct posibil distinct conturate , iar modificrile aduse uneia s nu afecteze bunul mers al celeilalte. Datele trebuie s aib o stabilitate mai mare dect programele. n plus , datele trebuie construite astfel nct s poat fi accesibile mai multor programe, care sunt scrise n limbaje diferite i care ruleaz pe mai multe calculatoare. Aceste programe, scrise cu ajutorul LMD-ului, folosesc structurile de 10

date luate din tabelele (dicionarele) , unde se afl descris e structurile virtuale ale bazei de date, precum i structur a logic la care va avea acces. 3. Administrarea bazei de date . O sarcin important a gestiunii bazei de date se refer la supravegherea datelor din baza de date i supervizarea programelor de acces la aceste date. Persoana (sau grupul de persoane) care are aceste sarcini, este numit administratorul bazei de date, iar atribuiile ndeplinite se constituie n funcia de administrare a bazei de date. Un SGBD trebuie s includ mijloace le prin care un administrator de baze de date s i poat ndeplini sarcinile (funciile) de baz, cum ar fi: a). Organizarea bazei de date prin stabilirea structurii i ncrcarea ei cu date iniiale ; b). Urmrirea funcionrii bazei de date prin: Pstrarea n baza de date a datelor corecte i la zi; Asigurarea integritii i confidenialitii datelor; Urmrirea performan elor bazei de date, cu ajutorul unor programe utilitare; Punerea la dispoziia utilizatorilor a unor programe sau proceduri; Informarea continu cu privire la observaiile utilizatorilor bazei de date. c). Reorganizarea bazei de date prin actualizri ale structurilor sau ale programelor de acces. 4. Protecia informaiilor din baza de date este o problem la ordinea zilei datorit generalizrii bazelor de date cu acces partajat al mai multor utilizatori. Un SGBD asigur protecia datelor prin asigurarea: Confidenia1itii , realiznd protecia mpotriva accesului neautorizat la date; Integritii , realiznd protecia mpotriva alterrii coninutului bazei de date, datorit unor erori de programare, defecte de echipament, distru geri ru intenionate, etc.

1.2.3. Caracteristicile sistemelor de gestiune a bazelor de date pentru o baz de date relaional
De-a lungul timpului au fost concepute mai multe tipuri de sisteme de gestiune a bazelor de date care s-au pretat diferitelor m omente de evoluie fizic a tehnicii de calcul. n momentul de fa sunt folosite tot mai des sistemele de gestiune a bazelor de date relaionale i , mai nou, ncearc s se impun pe pia i sistemele de gestiune a bazelor de date distribuite. Acelai E. F. Codd a detaliat, n anul 1985, caracteristicile care trebuie s fie ndeplinite de un sistem de gestiune a bazelor de 11

date pentru ca ace sta s fie considerat relaional, sub forma a 13 reguli . Aceste reguli pot fi sintetizate astfel: Regula 0. Princ ipiul de baz , conform cruia orice sistem de gestiune a bazelor de date relaional trebuie s gestioneze toat baza de date numai prin posibilitile modelului relaional. Regula 1. Stocarea informaiei , potrivit creia toate datele trebuie s fie cupr inse n tabele de date, i deci datele trebuie s fie memorate i prelucrate n acelai mod. n A CCESS de exemplu, acest lucru este posibil cu ajutorul aplicaiei Microsoft Jet. Regula 2. Garantarea accesului la date , potrivit creia fiecare element de d at trebuie s fie accesibil logic, printr - o combinaie de genul: cheie primar, nume tabel i nume cmp. n A CCESS spre exemplu, se pot defini chei primare. Regula 3. Lipsa informaiei, adic n tabele trebuie s poat exista valori nule (vide), astfel de valori trebuie s specific e faptul c ntr - o celul o valoare nu a fost compl etat i acest lucru nu trebuie s fie con fundat cu valori 0 pentru tipul numeric sau spa iu pentru tipul text . n aplicaia A CCESS exist astfel de valori care poart denumirea de Null . Regula 4. Catalogul de sistem, acest lucru nsemnnd c descrierea bazei de date trebuie s se fac tot n tabele. n A CCESS acest lucru e posibil cu ajutorul motorului Microsoft Jet. Regula 5. Limbajul cuprinztor, un sistem de gestiune a bazelor de date trebuie s conin un limbaj cuprinztor pentru definirea datelor, descrierea tabelelor, realizarea unor adugri, actualizri sa u tergeri de cmpuri. ACCESS -ul de exemplu, suport limbajul SQL. Regula 6. Actualizarea vederilor , nsemnnd c toate vederile trebuie s fie actualizate de sisteme. n acest sens A CCESS-ul a fost primul sistem de gestiune a bazelor de date pentru PC- uri, care a permis realizarea interogrilor pentru actualizare. Regula 7. Actualizri la nivel de mulime . n tabele este necesar ca modificrile i actualizrile s se fac la nivel de mulime de articole. n cadrul aplicaiei A CCESS acest lucru este posibil. Regula 8. Independena fizic a datelor, altfel spus datele trebuie s fie fizic independente fa de programul aplicaiei. O aplicaie nu trebuie s se modifice dac , spre exemplu, se adaug sau se terge un index. n A CCESS acest lucru se realizeaz cu ajutorul aplicaiei Microsoft Jet, care are motor logic de stocare. Regula 9. Independena logic a dat elor. Conform acestei reguli, schimbrile efectuate asupra relaiilor dintr - o baz de date nu trebuie s afecteze programul de aplicaie. 12

Regula 10. Independena integritii datelor, sau altfel spus restriciile de integritate trebuie s poat fi definite ntr -un limbaj i s poat fi stocate ntr -un catalog. n ACCESS se pot crea reguli de integritate cu ajutorul limbajului SQL. Regula 11. Independena distribuiei . Potrivit acestei reguli, capacitile sistemelor de gestiune a bazelor de date nu au v oie s fie limitate datorit distribuiei unor componente ale acestora n baze de date separate. Regula 12. Inexistena subminrilor, nsemnnd c dac un sistem de gestiune a bazelor de date relaional are un limbaj de manipulare al unei singure nregist rri, acest limbaj nu va putea fi folosit la ocolirea regulilor de integritate sau a constrngerilor modelului relaional. n ACCESS acest lucru nseamn c nu se pot nclca regulile de integritate. Folosindu-se de lucrrile lui E. F. Codd referitoare la modelul relaional i la limbajele bazate pe algebra relaional sau calculul relaional, din ce n ce mai muli oameni de tiin au ncercat s redefinineasc i s mbunteasc aceste concepte. S- a ajuns astfel la dezvoltarea i perfecionarea unor limbaje relaionale precum SQL (Structured Query Language), QBE (Query-By-Example) sau QUEL(Query Language). Limbajul SQL se bazeaz pe calculul relaional, avnd n vedere utilizarea de variabile constituite din tupluri. Pentru a ajuta la extinderea acest ui limbaj n ntreaga comunitate a productorilor de baze de date, Institutul Naional American pentru Standarde (ANSI) a elaborat i lansat standardele SQL, n 1986, potrivit crora acest limbaj folosete acelai set de comenzi i structuri de baz standa rdizate, indiferent de varianta de limbaj folosit.

1.2.4. Sistemul de gestiune a bazelor de date ACCESS


Unul dintre cele mai actuale sisteme de gestiune a bazelor de date este aplicaia Microsoft ACCESS , prima variant a acestei aplicaii fiind lansat pe pia de compania Microsoft n anul 1992, n cadrul suitei de programe de birou Microsof Office. Din cadrul programelor Microsoft Office mai fac parte i aplicaiile : Microsoft Word, Microsoft Excel sau Microsoft PowerPoint. Principalele caracteristici ale sistemului de gestiune a bazelor de date ACCESS sunt: Este componenta dedicat bazelor de date relaionale din Microsoft Office; Este deschis comunicrii cu alte sisteme de gestiune a bazelor de date cum ar fi FoxPro, Paradox sau SQL Server (i MSDE) , un alt SGDBR creat de Microsoft, obiectele ACCESS putnd fi folosite n aceste SGBD -uri dar i n alte aplicaii windows, sau invers, obiecte din aceste SGBD -uri pot fi folosite n A CCESS; 13

Beneficiaz de tehnologii avansate, deoarece este creat de firma Microsoft. Aceste tehnologii sunt: T ehnologia ActiveX, care permite realizarea aplicaiilor client/server; Permite accesul la baze de date din reeaua Internet, fiind un instrument util pentru publicarea informaiilor n paginile Web; Este autodocumenta t prin ajutor (help), scris n HTML compilat, ajutorul fiind apelabil contextual sau la cerere; Permite crearea foarte simpl a obiectelor bazei de date cu instrumentele expert (wizard); Bazele de date pot fi personalizate. P ermite protecia accesului la obiecte prin administrarea de drepturi de acces pentru utilizatorii ordonai n grupuri; P ermite crearea de grupuri de obiecte definite de utilizator n cadrul bazei de date; Limbajul propriu al SGBD- ului relaional ACCESS este Visual Basic; E foarte rspndit, utilizarea lui este intuitiv i este relativ uor de nvat . Pune la dispozi ia utilizatorilor un mediu prietenos pentru crearea, proiectarea, testarea i administrare obiectelor bazelor de date proprii. Aceste caracteristici, ne- au determinat s alegem pentru exemplificarea no iunilor despre baze de date aplicaiile r ealizate cu ajutorul mediului ACCESS , n capitolele urmtoare. Pe de alt parte este adevrat c SGBD Access nu poate concura cu Oracle, Informix, Microsoft SQL Server ca vitez sau concuren partajat de lucru. Din acest motiv pentru proiectele mari trebuiesc alese aceste sisteme de gestiune a bazelor de date, dar pentru proiectele mai mici avantajele de mai sus constituie argumente serioase pentru alegerea aplicaiei ACCESS.

1.3. Scopul unei baze de date


n mod intuitiv, atunci cnd avem de lucru cu colecii mari de date avem tendina de a realiz a tabele care s ne ajute s gestionm aceste date. Atunci cnd aceste colecii sunt prea mari pentru a le gestiona manual avem nevoie de calculator, cu ajutorul cruia s construim aplicaii care s gestioneze aceste baze de date. Aceste aplicaii trebuie s gestioneze bazele de date ntr - un mod mai eficient dect n cazul n care am gestiona aceste date manual. Printre cele mai importante avantaje n lucrul cu o baz de date electronic se numr: Viteza mrit i posibilitatea de a stoca un volum mare de date; Introducerea i editarea comod a datelor, precum i stocarea i cutarea uoar a acestora; 14

Posibilitatea de pregtire a unor rapoarte precise, n forma dorit i utiliznd datele de la un moment dat; Asigurarea partajrii datelor cu ajutorul altor aplicaii sau a altor calculatoare; Asigurarea securitii datelor mpotriva accidentelor. n cazul utilizrii aplicaiei ACCESS, principalele avantaje ar fi: Asigurarea unor posibiliti avansate de manipulare, stocare i selecie a datelor; Stabilitatea aplicaiei n contextul sistemului de operare; Aplicaia este uor de nvat; Aplicaia este foarte direct n ceea ce privete posibilitile de modificare a cmpurilor i a tabelelor; Aplicaia este foarte rspndit n ntreaga lume.

1.4. Componentele aplicaiei ACCESS


Aplicaiile n ACCESS se constituie n jurul unei baze de date dat. Acestea i stocheaz toate elementele de care are nevoie n containerul bazei de date. Astfel, o baz de date ACCESS poate fi definit ca fiind o colecie de obiecte: tabele (tables), cereri de interogare (queries), formulare (forms), rapoarte (reports), pagini Web (pages), comenzi macro (macros) i module (modules). Tabelele sunt obiecte definite de utilizator, n care sunt stocate datele primare . Formularele sunt obiecte care permit introducerea datelor, editarea sau afiarea acestora , sau controlul ntregii aplicaii. Un formular poate con ine:

15

Rapoartele sunt obiecte ale bazelor de date prin care sunt vizualizate sau tiprite informaii cu coninut i structur accesibil i conforme cerin elor utilizatorilor. Interogrile sunt obiecte care permit vizualizarea informaiilor obinute p rin prelucrarea datelor din una sau mai multe tabele, i/sau a altor cereri de interogare. Paginile Web de accesare a datelor reprezint obiecte care includ fiiere HTML i alte fiiere suport , n vederea furnizrii accesului la date prin intermediul browser-elor de Internet. Comenzile Macro reprezint obiecte care conin o definiie structurat a uneia sau mai multor aciuni pe care ACCESS -ul le realizeaz ca rspuns la un anumit eveniment. Modulele reprezint obiecte care conin proceduri definite de utilizator i sunt scrise n limbajul de programare Visual Basic for Applications (V.B.A.). n cadrul aplicaiei ACCESS utilizatorul poate apela la Vrjitori (Wizards) pentru a creea orice obiect (tabele, formulare, macro -uri etc). Aceste obiecte pot fi ns create i de ctre utilizator.

1.5. Proiectarea bazelor de date


1.5.1. Principii ale proiectrii bazelor de date
Metoda clasic, i de altfel singura metod de proiectare pentru persoanele care nu au experien n ceea ce privete utilizarea progra melor informatice, este recurgerea la hrti e i creion . Proiectarea unei baze de date presupune rspunderea la o serie de ntrebri, cum ar fi: 16

De ce se dorete realizarea bazei de date? (pentru a putea rspunde la aceast ntrebare se va porni mereu de l a rapoartele care ar trebui listate); Ce resurse avem la dispoziie? (cele mai importante resurse fiind n acest caz calculatoarele, oamenii, informaiile etc); Ce anume va fi de fcut? Abia apoi se va trece la proiectarea tabelelor, ceea ce presupune def inirea cmpurilor, a coninutului lor i a dimensiunilor acestora, dar i determinarea relaiilor dintre acestea. n demersul realizrii unei baze de date, exist trei niveluri de percepie a acesteia: nivelul extern , este nivelul n care sunt percepute b azele de date de utilizatori. Ei i exprim cerinele informaionale prin aa -numitele scheme exter ne. Pot exista o mulime de sub -scheme, fiecare sub- schem corespunznd viziunilor unui utilizator al bazei de date; nivelul conceptual , este nivelul afere nt administratorului bazei de date, n viziunea cruia baza de date este o abstractizare a unei p ri din lumea real. Aceast viziune se concretizeaz ntr - o schem conceptual; nivelul intern , corespunztor programatorului, care realizeaz modul de reprezentare a datelor pe suportul fizic. Determinarea structurii unei baze de date se poate aborda ascendent, realizndu - se descrierea schemelor externe, urmat de elaborarea schemei conceptuale, sau descendent, definind mai nti schema conceptual i deduc nd ulterior schemele externe posibil de obinut. n acest scop i vor da concursul un grup mai larg de persoane a cror activitate va fi influenat de modificarea acestei zone a sistemului informatic al instituiei. n momentul pr o iectrii unei baze de date se vor urmrii n primul rnd entitile, atributele i relaiile, indecii, machetele de introducere sau d e ieire, procedurile de calcul, precum i schemele logice sau interogrile, i abia apoi se va trece la ncercarea de nchegare a tabelelor, la normalizarea lor i stabilirea relaiilor dintre ele. Datele vor fi memorate n tabele i fiecare tabel va conine date doar despre un singur subiect (ex: elevi, discipline, etc). Redundana, adic apariia unei informaii de dou ori n baza de date, trebuie s fie minim i controlat. Proiectarea formularelor, a rapoartelor, a macrocomenzilor i a modulelor , este influenat n primul rnd de calitatea structurii datelor. ns trebuie s se in cont de faptul c, de cele mai multe ori, aceste forme de reprezentare extern a datelor se bazeaz pe interogri, nu direct pe tabele. O baz de date bine proiectat conine , de obicei, diferite tipuri de interogri care prezint informaiile necesare. 17

n ajutorul aplicaiei Microsoft Access (Help) sunt preze ntai paii care trebuie parcuri pentru proiectarea unei baze de date. Acetia sunt: Stabilirea scopului bazei de date, a utilizatorilor, a cerinelor lor . Pornind de la listele necesare (rapoarte), se schieaz formulare le de introducere a datelor. Se deduc apoi faptele ce trebuie memorate n baza de date i crui subiect i va aparine fiecare. Aceste fapte corespund cmpurilor (coloanelor) din baza de date, iar subiectele crora le aparin corespund tabelelor. Stabilirea cmpurilor necesare n baza d e date. Fiecare cmp este un fapt despre un anumit subiect. Nu trebuie s rmn vreun fapt fr un cmp corespondent , iar cmpurile trebuie s fie detaliate n cele mai mici pri logice. De exemplu, o adres trebuie s fie descompus n strad, numr, bloc, scar, etaj, apartament. De asemenea n cmpuri nu se nscriu liste sau valori calculate. Stabilirea tabelelor necesare n baza de date . Fiecare tabel trebuie s conin informaii despre un subiect . Stabilirea apartenenei fiecrui cmp la tabelul corespunztor . Identificare cmpurilor cu valori unice n fiecare nregistrare . Stabilirea relaiil or dintre tabele. mbuntirea proiectului . Introducerea datelor i crearea altor obiecte ale bazei de date . Utilizarea instrumentelor de analiz ale Mic rosoft ACCESS. Microsoft ACCESS conine dou instrumente cu care se poate mbuntii forma unei baze de date: 1. Analizatorul de Tabel , care poate analiza forma unui tabel la un moment dat i, dac este corespunztor, poate propune noi structuri de tabel i relaii, i poate scinda un tabel n noi tabele corelate, dac o astfel de corelaie are sens. 2. Analizatorul de Performan , care poate analiza ntreaga baz de date i poate efectua recomandri i sugestii pentru mbuntirea acesteia. Expertul poate i mplementa de asemenea aceste recomandri i sugestii.

1.5.2. Normalizarea unei baze de date relaionale


Normalizarea unei baze de date este o tehnic de transformare a a unei baze de date folosit pentru a elimina anomaliile de actualizare. n aplicare a acestei tehnici se ine cont de dependenel a funcional dintre cmpuri. Prin normalizare datele sunt cuprinse n mai multe tabele, cu rel a ie ntre ele , iar redundana lor este minim i controlat, astfel nct s conserve informaiile i dependenele funcionale din rela ia iniial (descompunerea fr pierderi). 18

E. F. Codd a demonstrat c ntr - o anumit form relaiile posed proprieti nedorite, pe care le-a numit anomalii de actualizare. Aceste anomalii sunt: Anomalia de tergere , care const n faptul c anumite date care urmeaz s fie terse fac parte din tupluri n care se gsesc i alte date care sunt necesare i n continuare, ori tergerea fcndu -se la nivelul tuplului, acestea se pierd; Anomalia de adugare , const 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; Anomalia de modificare , care rezult din faptul c este dificil de modificat o valoare a unui atribu t atunci cnd ea apare n mai multe tupluri ale relaiei. Pentru a nltura aceste anomalii , E. F. Codd a stabilit trei forme normale pentru relaii i a introdus procesul de normalizare care se bazeaz pe noiunea de dependen funcional (FD) ca relaie ntre atributele unei entiti cu caracter invariant. Procesul de normalizare a relaiilor se realizeaz n mai muli pai, ncepnd cu forma normal unu (1NF) i ajungnd (dup ultimele cercet ri) la forma normal cinci (5NF). Aceasta const n descompunerea unei relaii n conformitate cu mulimea dependenelor funcionale F, ntr - o colecie de relaii care s conserve informaiile i dependenele funcionale din relaia iniial (descompunerea fr pierderi). O baz de date este n forma normal 1 dac i numai dac toate cmpurile din tabelele ei nu sunt repetate i conin numai valori atomice. O baz de date este n forma normal 2 dac i numai dac a trecut de forma normal 1 i n tabelele ei orice cmp non - cheie este complet dependent funcio nal de cheia primar. O baz de date este n forma normal 3 dac i numai dac a trecut de forma normal 2 i n tabelele ei fiecare cmp non -cheie este dependent numai de cheia primar. Fie urmtorul set de date, referitoare la vnzri:
Dencli SC Secundul SRL SC Secundul SRL SC Secundul SRL SC Tera Parte SRL SC Tera Parte SRL SC Tera Parte SRL SC Secundul SRL SC First SRL SC First SRL SC First SRL Adrcli Str.Verii nr 2 Str.Verii nr 2 Str.Verii nr 2 Str.Toamnei nr 3 Str.Toamnei nr 3 Str.Toamnei nr 3 Str.Verii nr 2 Str Primaverii nr 1 Str Primaverii nr 1 Str Primaverii nr 1 Telcli Nrfact Datafact Delegat DenProd 0261222222 1 21.10.2009 Popescu Zahar 0261222222 1 21.10.2009 Popescu Ulei 0261222222 2 22.10.2009 Drago Lapte 0261333333 5 24.10.2009 Trandafir Zahar 0261333333 5 24.10.2009 Trandafir Ulei 0261333333 5 24.10.2009 Trandafir Lapte 0261222222 6 25.10.2009 Popescu Lapte 0261111111 3 22.10.2009 Anton Lapte 0261111111 4 23.10.2009 Anton Ulei 0261111111 4 23.10.2009 Anton Lapte UM Cant Pret Discount kg 15 3,1 Fl 20 3,27 l 30 2,9 5 kg 25 3,1 Fl 11 3,27 l 20 2,9 5 l 15 2,9 5 l 18 2,9 Fl 12 3,27 l 15 2,9

19

1. Prima form normal , spune c toate coloanele unui tabel trebuie s conin valori atomice (indivizibile). Aadar, nu trebuie s existe cmpuri ce conin liste de valori sau grupuri de date. Tabelul respect condiiile cerute pentru aceast form. Cmpul Adrcli ar putea fi considerat un cmp complex i divizat n strad i numr , dar deoarece valorile incluse sunt manipulate, de obicei, n mod agregat, foarte mul i practicieni stocheaz n acest mod informa iile despre adrese. 2. A doua form normal, conform creia un tabel este n aceast form dac a trecut de prima form normal i dac toate cmpurile care nu sunt chei sunt dependente de cheia primar. Pentru transformarea n 1NF a tabelelor se ncearc gsirea unui identificator (cheie primar) i cmpur ile care sunt dependente de identificator. S- a gsit Dencli de care sunt dependente cmpurile Adrcli , Telcli . Pentru legtur introducem cmpul Cocli. Acestea alctuiesc un tabel pe care l putem numi Clien i . n mod similar se procedeaz i cu grupul de c mpuri DenProd , UM , Pret , pentru care s-a introdus Codprod i le vom grupa n tabelul Produse . Restul cmpurilor, la care adugm i cele dou coduri pentru relaii, constituie mpreun un tabel pe care l putem numi Facturi, n care cheia o constituie com bina ia de cmpuri: Nrfact, Datafact i Codprod .
Codcli # Dencli Adrcli Str.Verii nr 2 Telcli 0261222222 0261333333

Nrfact

Datafact

Delegat CodProd CodCli 222222 222222 222222 333333 333333 333333 222222 111111 111111 111111

Cant Discount 15 20 30 25 11 20 15 18 12 15 5 5 5

111111 SC First SRL 222222 SC Secundul SRL

Str Primaverii nr 1 0261111111

1 21.10.2009 Popescu 1075 1 21.10.2009 Popescu 1009 2 22.10.2009 Dragos 7023 5 24.10.2009 Trandafir 1075 5 24.10.2009 Trandafir 1009 5 24.10.2009 Trandafir 7023

333333 SC Tera Parte SRL Str.Toamnei nr 3

Codprod # 1009 Ulei

DenProd Kg Fl L

UM

Pret 3,1 3,27 2,9

6 25.10.2009 Popescu 7023 3 22.10.2009 Anton 4 23.10.2009 Anton 4 23.10.2009 Anton 7023 1009 7023

1075 Zahar 7023 Lapte

La rndul lui, datorit nedependenei cmpurilor Delegat i CodCli de cheia compus, tabelul facturi se descompune n dou tabele: n primul pot fi trecute informa iile generale despre facturi cu cheia compus din :
Nrfact# 1 2 5 6 3 4 Datafact# Delegat 21.10.2009 Popescu 22.10.2009 Drago 24.10.2009 Trandafir 25.10.2009 Popescu 22.10.2009 Anton 23.10.2009 Anton CodCli 222222 222222 333333 222222 111111 111111

n al doilea pot fi trecute informaiile cu rndurile din facturi cu informa ii despre pro dusele vndute: 20

Nrfact# 1 1 2 5 5 5 6 3 4 4

Datafact# CodProd# 21.10.2009 1075 21.10.2009 1009 22.10.2009 7023 24.10.2009 1075 24.10.2009 1009 24.10.2009 7023 25.10.2009 7023 22.10.2009 7023 23.10.2009 1009 23.10.2009 7023

CodCli Cant Discount 222222 15 222222 20 222222 30 5 333333 25 333333 11 333333 20 5 222222 15 5 111111 18 111111 12 111111 15

3. A treia form normal, presupune ca tabelele s treac de a doua form i cmpurile ne -cheie s fie mutual independente pentru ca acestea s fie n aceast form normal. n bazele de date nu se pun cmpuri calculate. Primele trei tabele respect criteri ile pentru 3NF:
Clineti Codcli # Dencli Adrcli Str Primaverii nr 1 Str.Verii nr 2 Str.Toamnei nr 3 Produse Codprod # DenProd Fl L UM Kg Pret 3,1 3,27 2,9 1075 Zahar 1009 Ulei 7023 Lapte FactGen Telcli 0261111111 0261222222 0261333333 111111 SC First SRL 222222 SC Secundul SRL 333333 SC Tera Parte SRL

Nrfact# 1 2 5

Datafact# Delegat 21.10.2009 Popescu 22.10.2009 Popescu 24.10.2009 Trandafir

CodCli 222222 222222 333333

n cel de -al patrulea tabel, observm c exist cmpul Discount, care este dependent n mod tranzitiv de cheia primar. Drept urmare, din acest tabel, vor fi create dou tabele care vor fi n 3NF.
FactProd

Nrfact# 1 1 2 5 5 5 6 3 4 4

Datafact# CodProd# Cant 21.10.2009 1075 15 21.10.2009 1009 20 22.10.2009 7023 30 24.10.2009 1075 25 24.10.2009 1009 11 24.10.2009 7023 20 25.10.2009 7023 15 22.10.2009 7023 18 23.10.2009 1009 12 23.10.2009 7023 15

21

Discount Codprod # CodCli# 7023 333333 7023 222222 Discount 5 5

1.5.3. Integritatea bazelor de date


Integritatea bazelor de date se refer la anumite restricii care asigur corectitudinea datelor stocate. Astfel, la proiectarea bazelor de date se pot impune anumite restric ii pentru a se realiza i conserva integritatea bazelor de date, care are dou aspecte: 1. Integritatea n interiorul fiecrui tabel . Acest aspect se refer la impunerea unor restric ii de validare a datelor, specifice domeniului aplica iei. De exemplu: se va urmri ca datele calendaristice s fie stocate n cmpuri corespunztoare, domeniul de valori s fie respectat. Pe de alt parte, se urmre te i asigurarea integritii entitii, care presupune c orice component a cheii primare trebuie s ia o valoare unic , diferit de valoarea NULL, pentru fiecare nregistrare introdus n tabel. 2. Integritatea referenial . Conform integritii refereniale , pentru fiecare valoare a cheii externe din baza de date relaional, diferit de valoarea NULL, trebuie s existe o valoare corespunztoare din acelai domeniu de valori i de acelai tip, aceasta fiind cheia primar.

22

Relaiile dintre tabele se realizeaz prin referine 2, stabilite ntre nregistrrile tabelelor i cheile tabelelor. Viabilitatea acestor referine poate fi nfptuit prin integritatea referenial, a crei scop este de a mpiedica apariia nregist rrilor solitare i de a pstra sincronizate referinele, astfel nct s nu apar nregistrri care se refer la alte nregistrri care nu mai exist. n A CCESS , integritatea referenial poate fi impus atunci cnd se definesc relaiile dintre tabele, pr in precizarea actualizrilor i tergerilor n cascad a cmpurilor corelate, precum este redat n figura anterioar . Dup activarea acestei impuneri pentru o relaie dintre dou tabele, A CCESS nu va mai permite niciunei aplicaii care utilizeaz baza de date nclcarea integritii refereniale pentru acea relaie, adic nu sunt posibile actualizri care modific inta unei referine i nici tergeri care elimin inta unei referine. Mai mult chiar, orice modificare a cheii primare se va propaga, n cascad, i n cheile strine, sau tergerea unui articol dintr - un tabelul de iniiere a referinei, va provoca tergerea tuturor articolelor din tabelul int al referinei, pentru care cheia strin are valoarea pe care o are cheia primar a articolului ters. A CCESS permite chiar i afi area n cascad a rela iilor dintre tabe le, precum n figura de mai jos: De exemplu, n datele pe care le utilizm, modificarea n tabelul Clienti , a codului client ( Codcli ) pentru SC Secundul SRL la valoarea 999999 , va determina modificarea valorii cmpului Codcli , cu valoarea 999999, pentru articolele corelate din tabelul Factgen (3 articole care au valoarea Codcli =222222). Dac se terge din

tabelul Clieni , articolul care are valoarea pentru Codcli egal cu 22222 2, se va

de la verbul a referi

23

produce (bineneles dup o atenionare i acceptul utilizatorului) tergerea n cascad a celor 3 articole corelate din Factgen . Folosirea sintagmei n cascad este ndreptit n acest caz, deoarece cele 3 articole din tabelul Factgen , sunt corelate, la rndul lor, cu articole din tabelul Factprod , dup cheia compus din cmpurile Nrfact i Datafact (4 articole: dou corespunztoare facturii 1, unul corespunztor facturii 2 i unul corespunztor facturii 6). Rezumnd, n structura de cascad di n figur, tergerea unui articol din tabelul Clieni provoac tergerea a trei articole n tabelul Factgen , provocnd mai departe tergerea a 4 articole n tabelul Factprod .

1.6. Operarea n mediul ACCESS


1.6.1. Deschiderea aplicaiei. Crearea unei n oi baze de date
SGBD ACCESS face parte din pachetul de programe Microsoft Office, pachet care este proiectat s ruleze sub diverse versiuni ale sistemului de operare Windows. Desigur c ntr -un sistem friendly user , orice se poate face n cteva moduri, p entru ca utilizatorul s poat folosi metoda care i se pare cea mai natural. O posibilitate de a lansa SGBD-ul ACCESS este cea de la butonul Start pe calea programelor instalate: Start>All programs> Microsoft Office > Microsoft Access. La pornire, SGBD-ul ACCESS afieaz fesreastra din figur (numit sugestiv Pagina Introducere n Microsoft Office Access ), i utilizatorului i sunt oferite mai multe posibiliti. Pentru crearea unei noi baze de date trebuie aleas opiunea: Baz de date necompletat (Blank Access database) din partea a doua a panoului

24

Dup aceasta este afiat o fereastr cu titlul Fiier nou baz de date n care utilizatorul are de stabilit: directoru l n care va fi salvat fiierul; numele fiierului n care va fi stocat baza de date.

Creare director nou List cu foldere i Instrumente pentru fisiere fiiere Scrierea numelui fiierului Tipul fiierului Alegerea locului de stocare

n fereastra Fiier nou baz de date se procedeaz n felul urmtor: n caseta pentru alegerea tipului fiierului se specific extensia fiierului sau se alege un tip din lista ataat; Pentru a ajunge la directorul unde fiierul va fi stocat, ut ilizatorul se folosete de lista ascuns, din primul rnd al fesrestrei, unde alege unitatea de stocare i apoi alege directorul sau fiierul dorit din lista cu directoare i fiiere. Aceste operaii se repet pn cnd se ajunge la locaia dorit ; 25

n case ta Nume fiier se va trece numele fiierului. Dac numele fiierului dorit apare n list, se poate face un clic pe fiierul dorit i numele lui va fi trecut automat n caseta de scriere a numelui fiierului (Atenie , n acest caz se va suprascrie fiierul ales). Operaia se termin cnd se apas butonul OK . Dac se dore te, se poate crea un director nou sau se poate apela la instrumentele pentru fiiere pentru cutare a, ordonarea, modul de afi are, adugarea n lista de preferine sau afiarea proprieti lor. Intrarea n noua baz de date se face atunci cnd este afiat fereastra baz de date .

1.6.2. Moduri de vizualizare


Pentru a se lucra cu un obiect, acesta se alege din partea dreapt a ferestrei Baz de date , sau se realizeaz n succesiunea operaiilor pe care le execut aplicaia. Obiectele sunt afiate n diferite moduri de vizualizare prezentate n figur a de mai jos. Se observ c multe moduri sunt comune pentru majoritatea obiectelor. Modurile de viz ualizare se selecteaz apsnd butonul Vizualizare din panglic .

Vizualizarea n modul proiectare ( Design view ) este posibil pentru toate obiectele. n acest mod se configureaz coninutul i forma obiectelor. n modul Foaie de date ( Data view ) sunt afiate, pentru a putea fi modificate, datele legate de obiectul curent (tabele sau integogri) . n modul Vizualizare raport ( Report view ) sunt afiate, prin intermediul 26

formatrilor prevzute ntr -un raport, datele legate de raportul curent. n modul Vizualizare formular ( Form view ) sunt afiate, prin intermediul formatrilor prevzute ntr -un formular, datele legate de formularul curent, pentru a putea fi modificate. n modul Vizualizare aspect sunt afiate datele, prin intermediul formatrilor prevzute ntr -un formular sau raport i se pot face une le modificri intuitive aspra machetei obiectului prin care se expun datele. Vizualizare SQL este un mod specific interogrilor. Utilizatorii bazelor de date trebuie s neleag c o interogare este n primul rnd o comand SQL (Structured Query Language). Tabelele vzute n modul Foaie de date a interogrilor, conin datele rezultate n urma execuiei comenzilor SQL. O interogare, vizualizat n modul proiectare, mai este c unoscut i sub numele de gril QBE (acronim de la sinta gma din englez Query by Example ) i vizualizeaz grafic comanda SQL. Examinarea naintea imprimrii este o redare pe ecran a modului cum va fi tiprit documentul (raport) pe hrtia de imprimant. Vizualizare PivotTable : e un mod de vizualizare care sinte tizeaz i analizeaz datele dintr-o foaie de date sau dintr- un formular. Se utilizeaz diferite niveluri de detaliere sau se organizeaz datele prin glisarea de cmpuri i elemente, prin afiarea sau ascunderea elementelor din listele verticale pentru cm puri. Vizualizare PivotChart : este un mod de vizualizare care arat o analiz vizual a datelor dintr-o foaie de date sau dintr-un formular. Sunt vizibile diferite niveluri de detaliere sau se indic aspectul prin glisarea de cmpuri i elemente sau prin e xpunerea i ascunderea de elemente n listele verticale pentru cmpuri.

1.6.3. Deschiderea, modificarea, salvarea i nchiderea unei baze de date existente


Pentru deschiderea unei baze de date existente se poate proceda n mai multe moduri. Dac se dorete modificarea sau consultarea unei baze de date creat anterior, atunci cnd se lanseaz rularea aplicaiei A CCESS , n fereastra principal se acioneaz n partea dreapt, n caseta Deschidere baz de date recent a ferestrei de start a aplica iei, de obicei pe opiunea Mai multe i se va deschide o fereastr de dialog, cu titlul Deschidere , asemntoare cu fereastra de dialog Fiier nou baz de date , n care se selecteaz baza de date care se dorete s fie modificat. Spre deosebire de alte a plicaii din Office, n A CCESS se poate lucra, la un moment dat, doar cu o singur baz de date. 27

Dac aplicaia ACCESS este deja deschis, se poate aciona pe pictograma din meniul ascuns legat de Butonul Office sau se alege opiunea > Deschidere , sau se apas concomitent Ctrl + O. i n aceste trei ultime cazuri, se deschide automat fereastra cu titlu Deschidere , cu a crei elemente componente utilizatorul i alege fiierul cu care dorete s lucreze. n fine, este posibil ca documentul care se dorete a fi deschis s fi fost editat recent i s apar ntr - un istoric, coninut n partea dreapt a meniul ui ascuns legat de Butonul Office , sau n prima parte a panoului de activitate Fiier nou , de unde poate fi deschis. Dar o baz de date A CCESS , concomitent cu aplicaia Microsoft ACCESS, pot fi deschise dintr-un File Manager , printr- un dublu clic pe orice document de tip baz de date ACCESS cu extensia .mdb (versiuni anterioare anului 2007) sau .accdb (versiuni ulterioare anului 2007), dac aplicaia A CCESS este instalat pe calculator. Asupra unei baze de date deschise se pot face modificri ale obiectelor ncapsulate: se pot crea noi tabele, se pot modifica structurile sau coninutul datelor, se pot crea noi interogri, formulare, rapoarte, pagini Web, sau se pot face modificri asupra celor existente. ACCESS are opiuni de salvare a principalelor tipuri de obiecte compuse care apar n fereastra Baz de date . Salvarea se refer la obiectul curent, atunci cnd el este vizualizat n modul proiectare (pentru interogri i cnd sunt vizualizate n modul SQL). n restul modurilor de vizualizare, pentru toate obiectele, salvarea, dac are sens, se refer la datele pentru care obiectul este interfa. Pentru obiectele curente, se pot face salvri sub alt format: html, xml, pdf , xls, doc etc. Pentru prima salvare a unor obiecte nou create, se folosete una dintre comenzile: >Salvare ca sau > Salvare . Se ajunge la o fereastr de salvare unde se precizeaz numele sub care va fi salvat obiectul. Dac se apeleaz comanda >Salvare ca mai este afiat i o caset de editare text combinat cu o list ascuns din care se poate alege tipul obiectului, pe cnd, dac se apeleaz la coma nda > Salvare , aceast caset combinat nu mai apare. Aceast salvare se poate face i cu combinaia de taste Ctrl + S sau apsnd buton ul al treilea din bara de instrumente Standard cu pictograma: . Dac exist deja o versiune a obiectului, salvat n baza de date, cu comanda Salvare, versiunea veche se suprascrie. Dar, se poate salva noua versiune, cu un nou nume sau ca alt tip de obiec t bazat pe obiectul iniial prin comanda > Salvare ca . n modurile de vizualizare interactive, valorile stabilite pentru controalele dif eritelor obiecte se salveaz automat dup prsirea controalelor, de aceea cnd iese dintr- un obiect, dac nu s - au fcut modificri n modul proiectare, utilizatorul nu mai este atenionat s fac salvare. Dac utilizatorul a efectuat modificri asupra unu i 28

obiect n modul proiectare, chiar dac trece ntr -un mod interactiv, utilizatorul este atenionat cnd prsete obiectul s - i salveze modificrile efectuate n modul proiectare. Pentru nchiderea unei baze de date se alege opiunea >nchidere .

1.6.4 . Folosirea funciei ajutor


Utilizatorii aplicaiilor Microsoft sunt obinuii s beneficieze de un sistem complex de ajutor n lucru. De aceste faciliti beneficiaz i utilizatorii A CCESS. Probabil cel mai bun ajutor pentru utilizatori este realizarea interfeei n diverse limbi, altele dect limbile de circulaie internaional. Aa este de exemplu i versiunea n romnete a Microsoft Office, cu toate c nc se utilizeaz foarte multe neologisme forate. Aplicaiile Office au toate elementele traduse: de la opiunile de meniu, mesajele din diferite ferestre sau casete, pn la sistemul de ajutor (help) n amnun , sau chiar mesajele care apar atunci cnd poziionm cursorul mouse -ului pe unul din butoanele barelor de instrumente (text info control sau pe englez: Tool Tip). n Ajutorul din A CCESS, sunt traduse chiar i explicaiile pentru partea de programare in limbajele VBA sau SQL. Totui cea mai mare parte a funciunilor de ajutor pentru utilizatori este concentrat n meniul Ajutor. Ajutorul este sub form de documente hypertext. Opiunile componentei de Ajutor a aplica iei ACCESS sunt urmtoarele:
Rsfoire Ajutor Access
Activarea Access Nouti Accesibilitate Pagini de date Macrocomenzi i programabilitate Access Developer Extensions Particularizare Expresii Filtrarea i sortarea Interogri Securitate i confidenialitate Lucrul cu site-uri SharePoint Gestionarea fiierelor i datelor Colectarea datelor Pornirea Obinerea Ajutorului Atari Implementarea aplicaiei Conversie Proiectarea bazelor de date Date externe Formulare i rapoarte Salvare i imprimare Tabele Adugarea de diagrame, nomograme sau tabele Lucrul n alt limb

29

Get help? este o facilitate a Microsoft Office de a explica elementele de interfa din aplicaiile sale. Alegnd butonul care e plasat n col ul din dreapta sus, se deschide o fereastr cu explica ii dependente de context. Ajutor pentru Microsoft ACCESS este funciunea care poate fi lansat i apsnd tasta F1 sau cu clic pe butonul . Se afieaz o fereastr de ajutor asemntoare celei de mai jos cu posibilitatea de a vedea o list complex a termenilor d e ajutor. n partea de sus sunt cteva butoane folosite pentru rsfoirea convenabil a acestor pagini de ajutor. n partea de jos sunt dou cadrane de pagini. Prima are ca titlu Contents (contents nseamn cuprins), i conine lista de teme a documentaie i numit Ajutor Microsoft Access i este structurat arborescent. Temele explicate pot fi simple sau

compuse. O tem simpl are la nceputul rndului o pictogram cu semnul atunci cnd este selectat, se afieaz explicaia ei n partea dreapt.

i,

30

Temele care sunt compuse din alte subteme, pot avea la nceputul rndului unul dintre semnele sau . Dac au semnul , atunci nseamn c apar n lista din stnga fr detalierea subtemelor incluse. Aceste teme incluse, pentru fiecare tem complex, pot fi afiate printr -un clic pe semnul de la nceputul rndului. Cnd tema apare n tr-o list, expandat cu subtemele incluse, are la ncep utul rndului semnul . Deasupra cadranului din stnga are ca titlu Cutare ( n limba en glez Search ) un instruent folosit pentru cutarea unor termeni n manualul aplicaiei. Dup cutare, sunt afiate subiectele unde apar termenii c u tai, iar efectuare a unui clic pe un subiect are ca rezultat afiarea acestuia n partea dreapt a ferestrei de ajutor.

1.6.5 . nchiderea aplicaiei


ncheierea lucrului cu aplicaia A CCESS este similar cu nchiderea oricrei aplicaii Microsoft Office: din meniu se alege opiunea > nchidere baz de date . Ieirea din aplicaie provoac nchiderea tuturor obiectelor deschise n acel moment. Sistemul, nainte de nchiderea fiecrui obiect, testeaz dac s - a fcut salvarea ultime lor modificri n modul proiectare, pentru fiecare obiect n parte, iar dac nu s a realizat acest lucru se afieaz mesajul de atenionare, urmnd ca alegerea opiunilor de salvare fiier, nchidere fr salvare sau revocarea nchiderii aplicaiei s se fac de utilizator. Combinaia de taste pentru nchiderea aplicaiilor Windows, deci i a aplicaiei Microsoft ACCESS, este Alt + F4 . Totodat, avnd o fereastr a sistemului i ACCESS-ul poate fi nchis cu un clic pe butonul cu semnul X din colul din dreapta sus.

31

CAPITOLUL II. CREAREA I UTILIZAREA TABELELOR 2.1. Crearea unei tabele


ncepnd cu versiunile ulterioare anului 2007 ale programelor Microsoft Office, meniurile i grupurile de instrumente care erau plasate sub meniu n fereastra aplicaiilor, au fost nlocuite de aanumita p anglic . Aceast noutate a ferestrei aplicaiei este proiectat cu scopul de a ajuta utilizatorii n a gsi rapid comenzile de care au nevoie pentru a realiza o activitate. Comenzile sunt organizate n grupuri logice care sunt grupate n file. Fiecare fil are legtur cu un anumit tip de activitate, cum ar fi scrierea sau asamblarea unei pagini. Pentru a reduce aglomerarea de pe ecran, unele file sunt dependente de context, fiind afiate doar cnd sunt necesare. Este cazul, de obicei a ultimei file, care conine comenzi pentru obiectul curent n lucru, accesat sau selectat. Crearea unui tabel presupune crearea structurii sale. Acest lucru se poate realiza n fila Creare , n grupul de instrumente pentru tabele, recomandabil prin instrumentul Proiectare tabel :

Se mai poate apela la instrumentul abloane tabel . n ultimul timp se obinuiete ca s se promoveze nite structuri predefinite pentru a crea tabele sau chiar baze de date, pentru diferite probleme. Neajunsul const n faptul c structurile predefinite sunt greu pliabile pe o problem real. Pr obabil lipsesc cmpuri, sau sunt de tip necorespunztor i nu n ultimul rnd au denumiri greu de accep tat. Crearea tabelelor se poate face i cu instrumentul Tabel, prin introducerea de date. ntr - un format asemntor cu Excel se pot introduce date i apoi n modul proiectare (n limba englez: Design) se pot reboteza i restructura cmpurile. Structuri de tabele pot fi realizate i prin subprograme VBA, create de utilizatori.

32

Modul cel mai elegant, cel mai utili zat i convenabil de creare i apoi de modificare a structurilor tabelelor rmne utilizarea ferestrei de proiectare, precum n figura de mai jos , n care este vizibil a utomat u ltima fil cu instrumente de prelucrare a tabelelor, fila Proiectare .

2.1.1. Proprietile cmpurilor


n cadrul acestei ferestre se definesc numele cmpului (Field Name), tipul de date (Data Type) i, opional, o descriere a cmpului respectiv (Description). n panoul de jos al acestei ferestre se introduc celelalte propriet i ale cmpului: Numele cmpu lui , poate fi format, precum orice nume de obiecte ale unei baze de date ACCESS 3, din maximum 64 de caractere (chiar i diacritice!), poate s conin spaiu, dar nu poate s conin unele caractere, printre care: [ , ], . , ! . A tunci cnd n Microsoft ACCESS un nume de cmp este format din mai multe cuvinte, trebuie folosite parantezele drepte, de exemplu: [Cod numeric personal ]. n majoritatea limbajelor de programare sau a SGBD -urilor, pentru a forma nume de cmpuri complexe, n sintax se recurge la utilizarea caracterului _ (denumit n englez: unde rscore), scriindu-se Cod_numeric_personal.

vezi Specificaii pentru baze de date , http://office.microsoft.com/ro -

ro/access/HA100307391048.aspx?pid=CH100621861048

33

Microsoft ACCESS ide ntific un cmp prin numele su de cmp. Dup specificarea numelui de cmp, n Vizualizare proiect pentru tabel, numele poate fi utilizat n expresii, proceduri Visual Basic i instruciuni SQL. Setarea acestei proprieti se efectueaz n partea de sus a ferestrei deschise prin apelarea instrumentului Proiectare tabel din fila Creare , sau prin redenumirea unei coloane n fereastra deschis prin apelarea instrumentului Tabel din fila Creare, sau utiliznd un limbaj de programare (de obicei limbajul Visual Basic). Ca tipuri sau subtipuri de date se pot folosi: text, memo, numr, dat/or, moned, autonumerotare, da/nu, obiect OLE, etc. Proprietatea Tip de date se utilizeaz pentru a preciza tipul de date stocat n cmpul unui tabel. Fiecare cmp stocheaz date constnd dintr -un singur tip de date. Proprietatea Tip de date utilizeaz urmtoarele setri: Setare Tip de date Dimensiune (Implicit) Text sau combinaie de text i Pn la 255 de caractere sau o lungime Text numere, precum i numere care nu mai mic setat prin proprietatea necesit calcule, cum ar fi numerele de Dimensiune cmp. Microsoft ACCESS telefon. nu rezerv spaiu pentru poriuni neutilizate din cmpul text. Text lung sau combinaii de text i Pn la 65.535 de caractere. Memo numere. Noile versiuni ale ACCESS-ului nregistreaz istoricul revizuirilor. Date numerice utilizate n calcule 1, 2, 4 sau 8 octei (16 octei dac Numr matematice. proprietatea Dimensiune cmp este setat la ID reproducere). Valori de date calendaristice i ore pentru 8 octei. Dat/Or anii cuprini ntre 100 i 9999. Noile versiuni ale ACCESS-ului ofer asisten pentru alegerea datei ntr-un calendar interactiv ncorporat. Moned Valori monetare i date numerice 8 octei. utilizate n calcule matematice care implic date avnd ntre unul i patru poziii zecimale. Cu precizie de 15 cifre n stnga separatorului zecimal i de 4 cifre n dreapta lui. AutoNu- Un numr secvenial unic (incrementat 4 octei (16 octei dac proprietatea Dimensiune cmp este setat la ID merotare cu 1). reproducere). Valori i cmpuri Da i Nu care conin 1 bit. Da/Nu numai una din cele dou valori (Da/Nu, Adevrat/Fals sau Activat/Dezactivat). Un obiect (cum ar fi o foaie de date Pn la 1 gigaoctet (limitat la spaiul-disc Obiect Microsoft Excel, un document Microsoft disponibil). OLE Word, grafic, sunete sau alte date binare) legate sau ncorporate ntr-un tabel Microsoft ACCESS. 34

Hyperlink Text sau combinaie de text i numere stocate ca text i utilizate ca adres hyperlink. Permite stocarea de diferite tipuri de Atach documente i fiierele binare n baza de date fr a crete inutil dimensiunea bazei de date. Microsoft Access 2007 comprim automat atarile, cnd este posibil, pentru a minimiza utilizarea spaiului.

Fiecare din aceste trei pri ale tipului de date Hyperlink conine pn la 2048 de caractere. Limitat la spaiul de disc disponibil.

Cmpurile Memo, Hyperlink i Obiect OLE nu se indexeaz. Este bine s se utilizeze tipul de date Moned pentru un cmp care necesit multe calcule implicnd date cu una pn la patru zecimale. Cmpurile cu tipul de date Simpl precizie i Dubl precizie necesit calcule n virgul mobil. Tipul de date Moned utilizeaz un calcul n virgul fix, mai rapid. Proprietatea Dimensiune cmp se utilizeaz pentru a seta dimensiunea maxim pentru datele stocate ntr - un cmp avnd tipul de date Text, Numr sau AutoNumerotare. Setarea acestei proprieti se face n strns legtur cu setarea proprietii tip de dat a cmpului (data type). Pentru proprietatea Tip date setat la Text , dimensiunea poate fi un numr de la 0 la 255. Setarea implicit este 50. Pentru AutoNumerotare, proprietatea Dimensiune cmp se seteaz la ntreg lung sau ID reproducere . Pentru proprietatea Tip date setat la N umr , setrile proprietii Dimensiune cmp i valorile lor sunt corelate ca n tabelul de mai jos: Setare Descriere Precizie Dimensiune zecimal de stocare Numere de la 0 la 255 (fr fraciuni). Fr 1 octet Octet 38 38 Numere ntre -10 1 i 10 1. 28 12octei Zecimal Numere ntre -32.768 i 32.767 (fr fraciuni). Fr 2 octei ntreg Numere de la 2.147.483.648 la 2.147.483.647 Fr 4 octei ntreg lung (fr fraciuni). 7 4 octei Simpl precizie Numere de la 3,402823E38 la 1,401298E-45 pentru valori negative i de la 1,401298E45 la 3,402823E38 pentru valori pozitive. 15 8 octei Dubl precizie Stocheaz numere de la 1,79769313486231E308 la 4,94065645841247E324 pentru valori negative i de la 4,94065645841247E324 la 1,79769313486231E308 pentru valori pozitive. Identificator unic global (GUID). N/A 16 octei ID reproducere Setarea acestei proprieti se efectueaz numai din foaia de proprieti a tabelului. 35

Valorile implicite ale dimensiunilor de cmp pentru cmpurile Text i Numr se p ot seta prin modificarea valorilor de la opiunea Designeri de obiecte , din fereastra afiat la selecia Opiuni Access , dup ce se face clic pe Butonul Microsoft Office . Este bine s se utilizeze cea mai mic posibil setare pentru proprietatea Dimensiune cmp deoarece dimensiunile mai mici de date sunt prelucrate mai rapid i solicit mai puin memorie. Numrul de zecimale (n limba englez: Decimal places): n cadrul acestei proprieti se stabilete numrul cifrelor afiate la dreapta separatorului zecimal, pentru valorile cmpului. Aceast setare are sens doar la tipurile de date Numr i Moned i poate stabili ntre 0 i 15 cifre s au Auto pentru determinarea automat a numrului de cifre pentru partea fracionar. Format : formatul n care sunt afiate informaiile. Important este de reinut c proprietatea Format se utilizeaz pentru stabilirea modului n care numere, date calendaristice, timp i text vor fi afiate i tiprite i nu afecteaz introducerea datelor. Aceast sarcin revine proprietii Input mask . Formatul de introducere, masca de intrare (n limba englez: Input Mask) este ablonul de introducere a datelor Setarea f ormatului de afiare i al celui de intrare poate fi o operaie c omplex i anevoioas. Este recomandabil ca de ea s fac uz programatorii experimentai. Nenelegerea coninutului informaiei datorit unui format ambiguu poate duce la deteriorarea unor date. Legenda (n limba englez: Caption) , cu sensul pe care l are n general n programarea orientat pe obiecte, aceasta permite specificarea unui al doilea nume n situaiile n care primul nu este destul de semnificativ. El apare n antetul cererilor d e interogare, a formularelor i a rapoartelor. Valoarea implicit (n limba englez: Default Value): este o valoare care este atribuit automat de sistem, n momentul introducerii datelor, dac utilizatorul nu completeaz acel cmp. Regul de validare (n limba englez: Validation Rule): este o restricie de introducere a datelor care oblig datele s respecte expresia introdus la aceast proprietate. n expresie practic se folosesc regulile de sintax specifice A CCESSului. Textul de validare (n limba englez: Validation Text ): reprezint textul care va aprea pe bara de mesaje n cazul n care valoarea introdus nu respect criteriul impus de regul de validare. Obligatoriu (n limba englez: Required): oblig sau nu completarea respectivului cmp n fiecare nregistrare. Indexat (n limba englez: Indexed): poate suporta trei posibiliti: a) Nu; 36

b) Da (Cu dubluri); c) Da (Fr dubluri).

2.1.2. Definirea unei chei primare


Dup descrierea cmpurilor componente ale unei tabele este timpul s se stabileasc cheia primar a acesteia. Dac se uit, A CCESS avertizeaz utilizatorul de acest lucru i automat creeaz un nou cmp i -l propune ca i cheie primar. Un tabel care nu ar e cheie primar nu poate stabili relaii de tipul unu la mai muli cu alte tabele. O cheie primar poate fi format din unul sau mai multe cmpuri. Dac cheia primar este format dintr - un singur cmp, se selecteaz acesta, se face clic dreapta i apoi se activeaz butonul chei e primar. Dac cheia primar este format din mai multe cm puri (cheie compus)se selecteaz primul, iar celelalte se selecteaz n combinaie cu apsarea tastei CTRL, dup care se face clic dreapta pe unul dintre ele i apoi se activeaz butonul cheie primar. n Microsoft A CCESS cheia primar a unei tabelei trebuie s fie indexat i fr dubluri. ntr - un tabel poate exista o singur cheie primar. Dac mai exist i alte cmpuri, indexate, fr dubluri, acestea sunt numite chei candidate .

2.1.3. Stabilirea unui index


Indecii sunt utilizai pentru a mri vitez a de gsire a informaiilor. Un index este o structur n funcie de a crei valori sunt ordonate nregistrrile unui tabel. Un sistem de gestiune de baze de date se folosete de indecii existeni n diverse opera ii, de multe ori fr ca acest lucru s i fie evident utilizatorului. Este recomandabil s se fac indeci pe cmpurile dup care se sorteaz rapoarte, formulare, interogri sau foi de date sau pe cmpurile care apar n expresii pentru realizarea relaiilor dintre tabele. Un index pentru un singur cmp se poate face prin stabilirea proprietii indexat la Da (Cu dubluri) sau Da (Fr dubluri). Pentru crearea unui index bazat pe mai multe cmpuri se folosete instrumentul Indexuri, fila Instrumente tabel/ Proiectare . Aceast fil este accesibil, atunci cnd un tabel este accesat pentru prelucrare, n modul vizulaizare proiect . n fereastra cu titlul Indexuri sunt cuprini toi indecii tabelului curent. Fiecare index are un nume i poate utiliza pn la 10 cmpuri. Expresia de sortare este format prin concatenarea cmpurilor n ordinea n care apar n fereastr. De exemplu : indexul DenAdrTel este format din concatenarea cmpurilor [ Dencli ] ordonat ascendent, [ Adresa ] ordonat ascendent i [ Telcli ] 37

ordonat descendent, indexul Codcli este f ormat din cmpul [ Codcli ] ordonat ascendent, iar indexul PrimaryKey este format doar din cmpul [ Codcli ] n ordine ascendent.

2.1.4. Modificarea proprietilor unui cmp


Proprietile unui cmp se pot modifica uor n modul proiectare. Modificarea prop rietilor unui cmp nu afecteaz buna funcionare a obiectelor n care apar date din cmpul modificat. De exemplu, dac n tabelul C lieni, numele cmpului Adresa se modific n Adrcli , atunci formularele, rapoartele sau interogrile care folosesc dat e din acest cmp sunt n mod automat modificate, astfel nct, vor prelua datele din cmpul cu noul nume. Mrirea dimensiunii unui cmp nu duce neaprat la mrirea dimensiunii bazei de date, dar prelucrarea devine mai greoaie. Dac la un tabel, care deja conine date, se micoreaz dimensiunea unui cmp, este posibil pierderea unor date. Odat cu afiarea unei casete de atenionare, asemntoare celei de mai jos, utilizatorul poate s - i revoce aciunea. ns, dac utilizatorul selecteaz butonul Da n fereastra de mai jos, pierderea de informaii devine ireversibil. De exemplu, dac se modific setarea Dimensiune cmp a unui cmp de tip Text de la 100 la 50, partea de date care depete noua setare de 50 caractere se pierde. Dac ntr - un cmp de tip Numr, datele nu ncap n dimensiunea cmpului, numerele de dup virgul sunt rotunjite sau primesc valoarea Null. De exemplu, dac se modific o dimensiune de cmp de la Simpl precizie la ntreg , valorile fracionare vor fi rotunjite la cel mai apropiat numr ntreg, iar valorile mai mari dect 32.767 sau mai mici dect - 32.768 vor deveni valori nule. Aceste modificri de date sunt ireversibile.

Problema se complic atunci cnd se dorete schimbarea tipului unui cmp. Trebuie avut n vedere dac sunt posibile conversiile datelor din vechiul tip n noul tip. Conversia din tipul numr n tipul moned, sau invers, se face fr 38

probleme. i conversiile din numere n date/or i invers se fac fr probleme. Partea ntreag a numerelor se transform n dat iar p artea fracionar se transform n or. Numrul 0 se transform n #1.1.1900#. Pentru numerele negative, se scade din 1 ianuarie 1900, un numr de zile egal cu valoarea numrului. Pentru ore se face fracionar . De exemplu: ora 12 se transform n corespondena 0,5=12/24, ora 1 se transform n 0,04167=1/24, ora 14h45 devine 0,614583333=14 : 24, etc. Dac se dorete transformarea din text n numere cu format obinuit, este necesar ca n toate celulele s existe doar caractere le necesare pentru a scrie numere: cifre, marcatorul zecimal i semnele + i - .
ora partea 24

2.2. Editarea datelor ntr-o tabel


2.2.1. Introducerea de date n tabel
n cadrul aplicaiilor ACCESS datele pot fi introduse n tabele printr -o multitudine de metode, user-friendly, asig urate de nsi SGBD. Cea mai direct este printr-o fereastr Foaie de date (n limba englez: Datasheet). n cadrul acestei ferestre se pot vizualiza, i/sau modifica datele deja introduse sau se pot introduce date noi. Stilul de editare urmeaz de obicei conveniile din aplicaiile pachetului Office. Un exemplu de introducere de date n modul foaie de date este redat n exemplul figur.

Poziionarea n cadrul tabelului se poate face cu mouse -ul sau cu tastele pentru deplasare n cadrul foii (Tastele cu sgei, Insert, Home, PageUp, PageDown). n plus, trecerea la cmpul urmtor se face cu tasta TAB sau apsnd ENTER dup ce s au introdus date n celul. Trecerea la cmpul anterior se face cu ajutorul combinaiei de taste Shift + TAB.

39

Articolul pe care este poziionat cursorul este evideniat prin accent de culoare. La editare se ine cont de proprietile cmpurilor stabilite n modul proiectare, nepermindu -se violarea regulilor de integritate. n tabel se pot introduce date din alte zone ale tabel ului, din alte tabele sau chiar alte aplicaii (Word, Excel) prin intermediul ferestrei Clipboard, prin operaiile Decupare sau Copiere, cuplate cu operaia Lipire. Ca o particularitate generat de lucrul cu nregistrrile, n A CCESS este aproape omnipre zent grupul de butoane de navigare cu semnificaie similar butoanelor de pe aparatele audio sau video.

Pentru introducere/editare de informaii totui nu se obinuiete utilizarea ferestrei Datasheet. De obicei programatorii proiecteaz formulare, cu po sibilitile oferite de SGBD, pentru introducerea de date n tabele. Totui, pentru tabele mici, nu se justific efortul pentru a se crea formulare.

2.2.2. Vizualizarea informaiilor dintr - o tabel


Vizualizarea informaiilor dintr - o tabel se face selectnd din meniul generat prin aciunea asupra butonului Office , opiunea Imprimare > Examinare naintea imprimrii. ACCESS deseneaz automat un tabel i l vizualizeaz n pagini, n funcie de setrile imprimantei. Dar, n mod frecvent, vizualizarea informaiilor dintr - o tabel se face prin modul Foaie de date . n acest mod vizualizarea este nsoit de posibilitatea de modificare a inf ormaiilor. Tot cu actualizare, se pot vizualiza informaiile din tabele cu ajutorul unor formulare sau interogri create pe baza tabelului.

2.2.3. Modificarea datelor ntr - o tabel


Datele n tabele se modific la n modul Foaie de date la nivel de celule. Pentru a modifica date, nti trebuie s se ajung la celula n cauz. Nu este posibil editarea cmpurilor de grup i a cmpurilor calculate. Datele pot fi modificate numai n cmpurile unde exist posibilitatea s se insereze un cursor de introducer e de la tastatur; existena unui astfel de cursor semnific acceptarea editrii n coloana respectiv. Deplasarea n cadrul celulelor tabelului se face cu t astele sgei. Trecerea de la o celul, la celula vecin din dreapta sau la prima din rndul imedia t urmtor se face cu tasta TAB. Deplasarea n sens invers se face apsnd concomitent Shift + TAB. 40

Datele modificate dintr- o celul sunt salvate imediat dup prsirea ei. Revocarea modificrilor fcute n celula curent se face apsnd ESC. Pentru a re voca modificrile din ntreaga nregistrare, se face clic pe Anulare din bara de instrumente de navigare n nregistrri sau opiunea cu acelai nume din meniul Editare . Aceast anulare nu mai este posibil dac se mai fac alte modificri ntr - o alt nreg istrare.

2.2.4. Adugarea de nregistrri ntr - o tabel


n modul Foaie de date, de obicei, este afiat n plus un articol gol evideniat cu semnul *. Acest articol nu este socotit n totalul articolelor. Dac se poziioneaz cursorul pe acest articol, semnul * dispare pn cnd se ncepe editarea n articolul respectiv. n acel moment se adaug imediat un nou articol gol marcat cu *. De asemenea, un articol se adaug imediat n plus n tabel, cnd cursorul se gsete pe ultima celul din ultimul rnd i se apas tasta TAB sau Sgeat Dreapta. Din panglica ferestrei ACCESS , pentru a se aduga unui tabel o nregistrare nou, se poate utiliza instrumentul Nou , din grupul nregistr ri , fila Pornire . Combinaia de taste pentru realizarea acestei operai i este Ctrl + +. ntr - o tabel se pot aduga mai multe articole din alte zone ale tabelului, din alte tabele sau chiar alte aplicaii (Word, Excel) , prin intermediul ferestrei Clipboard , prin operaiile Decupare sau Copiere , cuplate cu operaia Lipire . Se lectarea mai multor nregistrri dintr - un tabel se face glisnd cu mouse -ul pe zona de selecie situat la nceputul rndurilor. Odat selectate articolele dorite de a fi adugate, se selecteaz fila Pornire a panglicii ACCESS , opiunea Decupare sau Copiere , se selecteaz rndul din tabel marcat cu * i apoi cu opiunea Lipire (din acela i grup de instrumente) se adaug articolele, nu nainte de a se cere confirmarea de la utilizator pentru a se realiza adugarea acestor articole.

2.2.5. tergerea de date ntr - o tabel


Pentru a etrge nregistrri ntr - o baz de date, mediul de dezvoltare A CCESS are prevzute instrumentul tergere n fila Pornire din Panglica Office a aplicaiei ACCESS . Instrumentul are trei funciuni, putnd fi folosit att pentru te rgerea coninutului celulei curente, a nregistrrii curente sau a cmpului curent. tergerea nregistrrii curente dintr - o tabel se poate face i alegnd di n meniul generat de sistem, dup ce s - a aci onat printr-un clic dreapta pe una sau mai multe nregistrri selectate opiunea tergere nregistrare .

41

Dac se selecteaz aceast opiune din meniu, dup ce sunt selectate mai multe nregistrri, atunci aceste nregistrri vor fi terse, mpreun cu nregistrrile n cascad, dac sunt definite relaii ntre tabele n bazele de adte . Pentru protecia datelor mpotriva tergerilor accidentale, operaia de tergere se revoc, dac operatorul nu confirm tergerea, ntr - o caset de forma celei de mai jos.

n mod similar, dac se selecteaz una sau mai multe coloane, i se face clic drepata pe selecie, se pot terge cmpuri din tabel. i aceast tergere necesit confirmarea operatorului. Cmpurile pot fi terse i cu instrumentul tergere din grupul Cmpuri i coloane , fila Instrumente tabel/Foaie de date.

Exerciii:
Concepei o structur pentru urmtorul set de date i realizai un tabel pe baza acesteia, n mediul Access, a crui denumire va fi ANG i n care se adaug, ca nregistrri, datele .
NrAng NumeA
2000 CHIVU 2049 DOROS 2956 NEGRU 2084 OSAN 2789 POPA 2396 POPAN 2553 RUSU 2024 TULIAN 2987 VUSCA 2643 ZIMAN

Fnc
SOFER INGINER INGINER ANALIST SOFER DIRECTOR

ANG Csf DataAnga Sal Rate NrDept


2956 23.02.1999 950 2553 31.10.2000 2975 2049 19.03.1999 3000 2553 11.01.1999 2850 2049 19.12.2000 3000 500 2084 13.01.1999 800 19.02.1999 5000 300 30 30 20 20 30 20 30 20 10 30 30 10

2555 CONTRA VANZATOR 2956 19.12.2000 1250 1400 2731 MARCU ANALIST

VANZATOR 2956 26.03.1999 1250

VANZATOR 2956 23.01.1999 1500 VANZATOR 2956 15.09.1999 1600 INGINER 2553 14.10.1999 2450

C oncepei structuri pentru tabelele din figura de ilustrare a relaiilor de la 1.2.

42

2.3. Crearea relaiilor ntre tabele


Relaiile dintre tabele pot fi percepute logic n cadrul schemei conceptuale 4 sau pot fi specificate i salvate n baza de date. Specificarea unei rela ii dintre tabele n baza de date , se realizeaz cu instrumentul din fila Instrumente baz de date din panglica Access. Pentru a putea stabili o relaie ntre dou tabele sunt necesare dou condiii: tabelul surs a relaiei s aib o cheie primar (un cmp de identificare cu valori unice i diferite de Null); tabelul destinaie trebuie s aib un cmp cheie strin, de acelai tip de dat i dimensiune cu cheia primar . Atunci cnd se acioneaz asupra instrumentului se deschide o fereastr de alegere a tabelelor ntre care se stabilesc rela iile. Se aleg tabelele de lucru cu dublu clic al mouse-ului iar apoi se nchide fereastra acionndu -se asupra butonului nchidere . Exemplificm acest lucru cu dou tabele Prod i FactProd . Stabilirea relaiei se poate face glisnd, n fereastra relaii, cmpul cheie primar peste cmpul cheie strin. Automat este afiat fesreastra Editare relaii , n care se precizeaz cmpurile prin care se realizeaz relaia i tipul de integritate referenial impus.

Dup apsarea butonului Creare, relaia este stabilit i afiat.


4

Schema conceptual reprezint descrierea fenomenelor din realitatea nconjurtoare cu ajutorul

entitilor i atributelor i a legt urilor dintre acestea.

43

O relaie ntre tabele este reprezentat printr - o linie de relaie trasat ntre tabelele din fereastra Relaii . O relaie care nu are impus integritatea referenial apare ca o linie subire ntre cmpurile comune care accept relaia. Cnd relaia este selectat, fcnd clic pe linia sa, linia este afiat ngroat. Cu dublu clic se pot re edita condiiile ei. Dac este impus integritatea referenial pentru o relaie, linia apare ngroat la fiecare capt. n plus, numrul 1 apare deasupra poriunii ngroate a liniei n partea unu a relaiei, iar simbolul infinit () apare deasupra liniei n cealalt parte .

Exerciiu:
Creai relaiile ntre tabelele create n ultimul exerciiu al subcapitolului precedent.

44

CAPITOLUL III. UTILIZAREA INFORMAIILOR DINTR-O BAZ DE DATE


3.1. Conectarea la o baz de date existent
Structurarea informaiilor n tabele le bazelor de date i modalitatea managementului ace stora e diferit n funcie de tipul bazelor de date, pstrnd particularitatea SGBD- ului n care a fost definit i creat colecia de date. n scopul utilizrii selective, ra ionale, distribuite, eficiente i securizate a datelor, interogrile asigur co nectarea la informa iile din tabelele bazelor de date. Prin intermediul interogrilor, informaiile din tabelele bazelor de date pot fi utilizate ca surs de nregistrri pentru formulare i rapoarte. Obiectele din ACCESS pot prelua informa ii din baze de date de tip Access, dar i de tip SQL-Server, MSDE, sau chiar MySQL i FoxPro . Preluarea informaiilor din tabele acestor baze de date presupune conectarea aplicaiei realizat de utilizator la aceste baze de date existente. O aplicaie Access poate inclu de tabele proprii, iar conectarea la acestea este automat. Conectarea la tabele din alte baze de date, chiar de tipul Access, neincluse n aplicaia curent, este o operaie dificil i se poate realiza cu ajutorul obiectelor de tip module Visual Basic for Application , care recurg, la rndul lor, la interogri.

3.2. Cutarea datelor cu ajutorul instrumentelor mediului Access


Cutarea informaiilor n bazele de date presupune localizarea cmpurilor i nregistrrilor n care sunt stocate. Pentru cuta rea sau modifcarea unei nregistrri, fie c se lucreaz ntr -un tabel, ntr - un formular sau interogare, se alege din meniu opiunea din fila Pornire a Panglicii Microsoft Office, unul dintre instrumentele de Cutare , Gsire i/sau nlocuire , sau Salt la .

45

Se afieaz fereastra cu titlul Cutare i nlocuire , existent n toate aplica iile pachetului Microsoft Office, cu cteva particularit i specifice pentru lucrul cu bazele de date. n caseta de text De cutat , se scrie textul care trebuie cutat. Ult imele iruri cutate, rmn n istoricul din lista ascuns ataat casetei, i la nevoie pot fi readuse. Ctarea se face doar n cmpul curent sau n ntreg tabelul, n funcie de opiunea aleas din lista Privire n : . irul cutat trebuie s se potriveasc cu nceputul cmpului, cu ntreg cmpul sau cu o parte oarecare din cmp, dup cum se alege din lista Potrivire: . De exemplu, dac se caut textul os ntr - un catalog de produse, dac se alege prima opiune, se pot gsi articole n care exist cmpuri care ncep cu textul os (osnz, os, ospen, etc); dac se alege a doua opiune, se pot gsi doar acele articole n care exist cmpuri care conin cuvntul os i nimic altceva; dac se alege a treia opiune, se pot gsi articole n care exist cmpuri care conin textul os (osnz, costume, costie, os, ospen, etc). Articolele n care se caut pot fi: de la articolul curent n sus, n jos sau printre toate articolele din tabel. n fine, se poate bifa caseta de selecie Potrivire litere mari i mici dac se dorete s se fac cutri insensibile la litere mari sau mici sau se poate bifa caseta de selecie Cutare n cmpuri dup format pentru a se ine cont de formatul de afiare a datelor din cmpuri.

3.3. Crearea unei interogri simple


Specific bazel or de date relaionale, cum sunt i bazele de date Access, este uurina de a crea interogri. Prin deschiderea pe care o au pentru a rspunde acestor interogri, bazele de date pot constitui obiectul aplicaiilor scrise n oricare limbaj de programare modern. Interogarea bazei de date permite, n principal, extragerea i afiarea unor informaii din nregistrrile din una sau mai multe tabele; nregistrri care verific anumite condiii, care sunt grupate n funcie de anumite criterii sau sunt ordonate cresctor sau descresctor. Termenul " interogare " este sensul principal al cuvntului englezesc " Query ". n bazele de date relaionale acest termen are un sens mai larg. Acest termen se refer, pe lng interogrile de extragere (selecie) i la aa -zis ele interogri de aciune (de creare, de tergere sau actualizare) pentru tabele le i elementele lor constitutive. Lucrul cu interogrile este posibil prin implementarea limbajului SQL ntr -un SGBD. Interogrile sunt n ultim instan, comenzi ale unui limbaj simplu, structurat de manevrare a informaiilor din tabelele unei baze de date relaionale. Acest limbaj 46

se numete SQL (abreviere pentru sintagma din limba englez: structured query language, care se traduce n limba romn: limbaj structurat de interogare ). Rezultatul execuiei unei cereri, n majoritatea limbajelor, se numete vedere, deoarece este un cadru n care sunt accesibile o anumit parte a informaiilor din baza de date. Cele mai importante moduri de vizualizare a interogrilor sunt: mo dul proiectare , foaie de date i vizualizare SQL . Important de re inut este faptul c e vorba despre acela i con inut, etalat n trei moduri diferite de vizualizare. Dintre aceste posibiliti, modul proiectare este cel mai recomandat pentru a crea inter ogri n mod eficient ( interogri simple ). Pentru a crea o cerere de interogare n modul proiectare se parcurg paii : Din fila Creare, din ultimul grup de instrumente se face clic pe butonul Proiectare interogare .

Sistemul deschide automat fereastra d e creare asistat a interogrilor. Se afieaz o caset de dialog cu titlul Afiare tabel care conine cadrele de pagini Tabele , Interogri i Ambele . n aceste cadre de pagin sunt afiate toate tabelele i interogrile din baza de date curent. Interogarea care va fi creat va conine rnduri i coloane derivate din tabelele sau interogrile pe care utilizatorul le va extrage din caseta Afiare tabel . Pentru a extrage obiecte, se face dublu clic pe numele fiecrui obiect care se dorete a fi folosit. Ace ast caset de afi are a tabelelor se ascunde printr-un clic pe butonul nchidere .

47

Automat apare vizibilil ultima fil cu instrumente de lucru pentru interogri, i anume fila Instrumente interogri/Proiectare . Fereastra de lucru are dou pri: n partea de sus sunt afiate casete le cu structuri de nregistrri ale tabelelor sau interogrilor selectate din caseta afiare tabel. Dac nu e vizibil caseta Afiare tabel , acest lucru se poate face selectnd din panglic instrumentul Afiare tabel sau fcnd clic dreapta i apoi selectare Afiare tabel . Partea de jos a ferestrei se numete gril de proiectare ( design grid ), i conine elemente cu ajutorul crora se pot construi interogri . Aceasta mai este cunoscut i sub numele de gril QBE (Prescurtare de la sintagma din limba englez: Query By Exemples care poate fi tradus n romne te Interogare prin exemple ). Cmpurile se pot prelua din structurile surs prin glisarea lor din casetele de structuri n primul rnd al grilei QBE (rndul Cmp), unde se nscriu cmpurile interogrii rezultate. Cmpurile pot fi nscrise i efectiv n aceast linie sau alese din lista ascuns ataat liniei cmp din gril. Dac se dorete aducerea tuturor cmpurilor dintr - o tabel, se scrie semnul * n rndul cmpuri lor , iar n rndul tabel se nscrie tabelul n cauz. Pe lng cmpurile preluate din tabele le sau interogrile disponibile, interogrile pot conine i cmpuri calculate. Calculele se pot face linie cu linie sau pe grupuri de nregistrri. Pentru a se obine o coloan n primul caz, se nscrie n linia Cmp formula de calcul care are forma general: Nume- rezultat: expresie_aritmetic_sau_logic De exemplu : Valoarea: cantitate*[Pret unitar] vrsta: (Date() - [data naterii])/365 NB: Expresia Date() se refer reprezint o funcie care returneaz data sistemului.

Exerciii:
1. S se extrag din tabelul PROD numele, unitatea de msur i pretul cu TVA. 2. n modul Vizualizare SQL observai comanda SQL construit.

48

Rezolvare: 1. n fila Creare a panglicii, se alege penultima op iune Proiectare interogare. n caseta Afiare tabel se selecteaz Prod, se apas Adugare i apoi nchidere. Se gliseaz apoi cmpurile DenProd i UM din caseta cu structura tabelului Clienti n rndul Cmp din grila QBE, iar pentru al treilea cmp se scrie expresia "pret cu TVA": [pret]*1,19. Lansarea n execuie a interogrii se face apsnd butonul cu semnul ! din fila special de instrumente de proiectare interogri din panglic. Pentru eventualele modificri se alege din nou modul proiectare din meniul primei op iuni, Vizualizare, din fila mai sus amintit. 2. Se alege din meniul Vizualizare din panglic, op iunea Vizualizare SQL i se obine comanda: SELECT CLIENTI.Dencli, CLIENTI.Adresa, CLIENTI.Telcli FROM CLIENTI; Plasm n figur interogarea n modurile foaie de date i SQL. Pentru a face calcule pe grupuri de nregistrri, trebuie adugat o linie, cu numele Total , n grila QBE, ac ionnd n panglic asupra butonului Totaluri . Celulele din aceast lin ie trebuie neaprat s conin ceva dac este bifat caseta din rndul afiare a coloanei la care se refer. n acest caz, pe rndul total trebuie s existe, fie expresia Grupare dup , fie o funcie de grup ( sum, medie, contor, min, max, etc). 49

Exerciiu:
1. S se extrag din tabela ANG , media vechimii tuturor angaja ilor. 2. S se extrag din tabela ANG , suma salariului angaja ilor pe departamente. 3. n modul Vizualizare SQL observai comanda SQL construit la punctul 2. Rezolvare: 1. Se creeaz o nou interogare, n modul proiect alegndu - se ca surs tabelul ANG. n grila QBE, prima coloan , n prima celul se face clic i apoi se nscrie : vechimea:(Date() - DataAnga)/365 n panglic se acioneaz asupra butonului Totaluri pentru a se ad uga rnd ul Total la gril. n acest rnd, la coloana vechimea se alege din lista ataat, funcia Medie . Se lanseaz n execuie interogarea. Comanda SQL corespunztoare este afiat n medalion n figur . i rezultatul execuiei interogrii este suprapus ntr -un medalion peste figur.

Dac se dorete ca s se partcilula rizeze rezultatul, este accesibil modificarea proprietilor, n Foaia de proprieti .

50

2. Se creeaz o nou interogare, n modul proiect , alegndu - se ca surs tabelul ANG . n grila QBE, prima coloan se alege cmpul NrDept , iar n a doua se alege cmpul Sal . Se adaug linia de total, n care se nscrie pentru prima coloan Grupare dup iar la a doua coloan se alege funcia Sum . Se lanseaz n execuie interogarea, iar rezultatul i comanda SQL corespunztoare sunt:
SELECT ANG.NrDept, Sum(ANG.Sal) AS [Suma salariu pe departamente] FROM ANG GROUP BY ANG.NrDept; NrDept
10 20 30

Suma salariu pe departamente


7450 9775 9400

3.4. Crearea interogrilor peste mai multe tabele


Pentru formularea unor cereri de interogare bazate pe mai multe tabele sau interogri, este necesar ca ntre acestea s existe legturi. Dac relaiile au fost create prin funciunea Relaii din fila Instrumente baz de date , precum s- a explicat n capitolul anteriror, relaiile pot fi considerate permanente. n afara acestora, exist unele relaii stabilite n timpul executrii interogrilor. Primul tip de relaii este vizibil , n mod automat, i n partea de sus a ferestrei pentru realizarea nregistrrilor. Atunci cnd se ncearc o interogare din mai multe tabele i/sau cereri de interogare, trebuie verificat natura real a relaiilor dintre acestea pentru ca datele din noua interogare s fie corespunztoare cerinelor problemei. O relaie care nu a fost definit c orect duce la rezultate inexplicabile. Dac se face o cerere de interogare din dou tabele cu un numr de n i respectiv m nregistrri, i nu se stabilete nici o relaie ntre tabelele surs, atunci rezultatul va conine m x n nregistrri. 51

Explicarea stabi lirii relaiilor n interogri, o vom exem plifica cu ajutorul a dou tabele: Prod i FactProd , care au structurile ce pot fi deduse din con inutul prezentat n figur:

ntre aceste dou tabele exist o relaie de 1 la n prin c mpul cod, de la Prod spre FactProd . Acest lucru trebuie neles prin faptul c fiecare produs poate fi con inut n mai multe facturi. Dac nu exist legturile necesare ntre tabele, acestea se pot stabili doar pentru interegarea curent, printr -o pr ocedur similar stabilirii relaiilor ntre tabelele bazelor de date, prin glisarea mouse- ului de pe cmpul de legtur din tabela principal spre cmpul de legtur din tabela secundar. Cele dou cmpuri trebuie s fie de acelai tip i dimensiune i pot fi chei primare sau externe. Dac deja exist o legtur, permanent sau propus de sistem, caracteristicile acesteia pot fi modificate sau pur i simplu legtura poate fi tears. n stabilirea relaiilor n interogri, exist trei posibiliti (vez i figura cu propriet i de asociere):

52

Pentru prima posibilitate, relaia este definit astfel nct, n asocierea celor dou tabele se iau nregistrrile pentru care cmpurile de relaie au valori egale. Este cel mai ntlnit tip de relaie, se numete echicompunere i, n exemplul nostru, se descrie n comanda SQL, astfel: FROM [Prod] INNER JOIN FactProd ON Prod.Codpro = FactProd.Codprod Pentru cea de a doua posibilitate, relaia este definit astfel nct, n asocierea celor dou tabele se iau toate nregistrrile din catalog, i nregistrrile din rulaj pentru care cmpurile de relaie au valori egale. Relaia se numete compunere extern stnga. n exemplul nostru, n comanda SQL, relaia este descris astfel: FROM [Prod] LEFT JOIN FactProd ON Prod.Codpro = FactProd.Codprod n cea de a treia posibilitate, relaia este definit astfel nct, n asocierea celor dou tabele, se iau toate nregistrrile din rulaj, i nregistrrile din catalog pentru care cmpurile de relaie au valori egale. Pentru exe mplul nostru, n comanda SQL, relaia este descris astfel: FROM [Prod] RIGHT JOIN FactProd ON Prod.Codpro = FactProd.Codprod

Exerciiu:
S se extrag din tabelele Prod i FactProd valoarea produselor pe facturi. S se verifice rezultatul ob inut p rin cele 4 posibilit i din punct de vedere al asocierii: cele 3 din figura de mai sus i ruperea legturii.

53

Rezolvare: Se creeaz o nou interogare, n modul proiect alegndu - se ca surs tabelele Prod i FactProd . Se gliseaz apoi cmpurile NrFact , DataFact , DenProd casetele cu structurile tabelelor n rndul Cmp din grila QBE , iar pentru al patrulea cmp se scrie expresia Pret*Cant . n primul caz vom verifica rezultatul dac nu exist nici o legtur ntre tabele, apoi se verific rezultatul n celelalte 3 posibilit i de asociere. Rezultatele ob inute sunt prezentate n tabelul urmtor:
DenProd DenProd DenProd DenProd Datafact Datafact Datafact Datafact Nrfact Nrfact Nrfact Nrfact

Val

Val

Val

1 1 1 1 1 1 1 1 2 2 2 2 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6

21.10.2009 Ulei

49,05

1 5 4 1 5 2 5 6 3 4

21.10.2009 Ulei 24.10.2009 Ulei 23.10.2009 Ulei 21.10.2009 Zahar 24.10.2009 Zahar 22.10.2009 Lapte 24.10.2009 Lapte 25.10.2009 Lapte 22.10.2009 Lapte 23.10.2009 Lapte

65,40 35,97 39,24 46,50 77,50 87,00 58,00 43,50 52,20 43,50

1 5 4 1 5 2 5 6 3 4

21.10.2009 Ulei 24.10.2009 Ulei 23.10.2009 Ulei

65,40 35,97 39,24

1 5 4 1 5 2 5 6 3 4

21.10.2009 Ulei 24.10.2009 Ulei 23.10.2009 Ulei

65,40 35,97 39,24

21.10.2009 Zahar 46,50 21.10.2009 Lapte 43,50 21.10.2009 Malai 33,75 21.10.2009 Ulei 65,40

21.10.2009 Zahar 46,50 24.10.2009 Zahar 77,50 22.10.2009 Lapte 24.10.2009 Lapte 25.10.2009 Lapte 22.10.2009 Lapte 23.10.2009 Lapte Malai 87,00 58,00 43,50 52,20 43,50

21.10.2009 Zahar 46,50 24.10.2009 Zahar 77,50 22.10.2009 Lapte 87,00 24.10.2009 Lapte 58,00 25.10.2009 Lapte 43,50 22.10.2009 Lapte 52,20 23.10.2009 Lapte 43,50

21.10.2009 Zahar 62,00 21.10.2009 Lapte 58,00 21.10.2009 Malai 45,00 22.10.2009 Ulei 98,10

22.10.2009 Zahar 93,00 22.10.2009 Lapte 87,00 22.10.2009 Malai 67,50 24.10.2009 Ulei 81,75

24.10.2009 Zahar 77,50 24.10.2009 Lapte 72,50 24.10.2009 Malai 56,25 24.10.2009 Ulei 35,97

24.10.2009 Zahar 34,10 24.10.2009 Lapte 31,90 24.10.2009 Malai 24,75 24.10.2009 Ulei 65,40

24.10.2009 Zahar 62,00 24.10.2009 Lapte 58,00 24.10.2009 Malai 45,00 25.10.2009 Ulei 49,05

25.10.2009 Zahar 46,50 25.10.2009 Lapte 43,50 25.10.2009 Malai 33,75

54

Val

DenProd

DenProd

DenProd

DenProd

Datafact

Datafact

Datafact

Datafact

Nrfact

Nrfact

Nrfact

Nrfact

Val

Val

Val

3 3 3 3 4 4 4 4 4 4 4 4

22.10.2009 Ulei

58,86

22.10.2009 Zahar 55,80 22.10.2009 Lapte 52,20 22.10.2009 Malai 40,50 23.10.2009 Ulei 39,24

23.10.2009 Zahar 37,20 23.10.2009 Lapte 34,80 23.10.2009 Malai 27,00 23.10.2009 Ulei 49,05

23.10.2009 Zahar 46,50 23.10.2009 Lapte 43,50 23.10.2009 Malai 33,75

n primul caz, atunci cnd nu au fost definite legturi ntre tabele, s -au f cut asocieri pentru fiecare dintre cele 4 tupluri din primul tabel (cu structura DenProd cmp individual i Pret ca parte component pe ntru Val ) cu fiecare dintre cele 10 tupluri din al doilea tabel (cu structura NrFact i DataFact cmpuri individuale i Cant ca parte component pentru Val ). Au rezultat 40 de articole. n cel de -al doilea caz s- au fcut asocieri doar petru tuplurile c are provin din articole n care Prod.Codpro = FactProd.Codprod, rezultnd 10 articole. Pentru cel de-al treilea caz s-a f cut adugare la rezultatul cazului doi, tuplurile din tabelul Prod care nu au corespondent n tabelul FactProd (e vorba de produsul Malai ). n cel de -al patrulea caz, s- ar fi fcut adugiri la rezultatul cazului al doilea, tupluri din tabelul FactProd care nu au corespondent n tabelul Prod , dar nu au fost gsite.

Exerciiu:
S se extrag din tabelele Clienti , FactGen , Prod i FactProd valorile din toate cmpurile i din toate nregistrrile, resp e ctnd rela iile dintre tabele. Rezolvare: Se creeaz o nou interogare, n modul proiect alegn du- se ca surs tabelele Clienti , FactGen , Prod i FactProd . Se gliseaz apoi c mpurile celor patru tabele, avndu - se grij ca dintre cmpurile de relaie s fie incluse doar o parte, 55

Val

salvm interogarea cu numele totul si toate .


totul si toate Codcli 222222 222222 222222 Dencli SC Secundul SRL SC Secundul SRL SC Secundul SRL Adresa Str.Verii nr 2 Str.Verii nr 2 Str.Verii nr 2 Telcli 0261222222 0261222222 0261222222 Nrfact 1 1 2 5 5 5 6 3 4 4 Datafact 21.10.2009 21.10.2009 22.10.2009 24.10.2009 24.10.2009 24.10.2009 25.10.2009 22.10.2009 23.10.2009 23.10.2009 Delegat Popescu Popescu Popescu Trandafir Trandafir Trandafir Popescu Anton Anton Anton Codprod DenProd UM Cant 1075 1009 7023 1075 1009 7023 7023 7023 1009 7023 Zahar Ulei Lapte Zahar Ulei Lapte Lapte Lapte Ulei Lapte kg Fl l kg Fl l l l Fl l 15 20 30 25 11 20 15 18 12 15 Pret 3,1 3,27 2,9 3,1 3,27 2,9 2,9 2,9 3,27 2,9

333333 SC Ter a Parte SRL 333333 SC Ter a Parte SRL 333333 SC Ter a Parte SRL 222222 111111 111111 111111 SC Secundul SRL SC First SRL SC First SRL SC First SRL

Str.Toamnei nr 3 0261333333 Str.Toamnei nr 3 0261333333 Str.Toamnei nr 3 0261333333 Str.Verii nr 2 0261222222

Str Primaverii nr 1 0261111111 Str Primaverii nr 1 0261111111 Str Primaverii nr 1 0261111111

3.5. Selecia i sortarea datelor


Datele rezultate pot fi ordonate cresctor sau descresctor, dup unul sau mai multe cmpuri. Pentru aceasta se realizeaz clic n celula de la intersecia coloanei cmpului cu caseta Sortare i apoi se alege ntre Asce ndent sau Descendent . n cazul n care se specific mai multe cmpuri de ordonare (chei de sortare), operaia se execut ncepnd cu primul cmp din stnga introdus n expresia de sortare i continund cu celelalte, spre dreapta. Dac succesiunea cmpurilor de sortare este alta dect la afiare, trebuie introduse cmpuri care nu se afieaz dar sunt intercalate n succesiunea de ordonare dorit. Succesiunea cmpurilor de sortare influeneaz rezultatul operaiei de sortare a articolelor. Operaia de selecie se refer att la selecia informaiilor din coloane, dar i la selecia informaiilor din rnduri. Pentru realizarea acestui aspect exist linia Criterii , unde se introduc criteriile de selecie. Criteriile se nscriu n formatul: Operator_relai onal expresie Operator_relaional poate fi =, >, <, >=, <=, !=, between, in etc. Dac nu se specific niciun operator se consider a fi semnul =. Criteriile se pot compune cu ajutorul operatorilor logici AND/OR i o serie de cuvinte rezervate i expresii definite de utilizatori.

Exerciiu:
S se extrag, din tabelul ANG , numele i func ia angaja ilor care au salariu ntre 1500 i 3000, ordonai descresctor dup vechime. 56

Rezolvare: Se creeaz o nou interogare bazat pe tabelul ANG . Se stabile sc ca i cmpuri ale interogrii: [NumeA], [Fnc], [DataAnga] i [Sal] . Cmpul DataAnga i Sal nu trebuie bifate la rndul Afiare i la Criterii trebuie nscris >10, iar n rndul Sortare pentru [DataAnga] se selecteaz Ascendent . Grila QBE este redat n figura de mai jos:

3.6. Salvarea unei interogri


Salvarea unei interogri se face la prsirea ei, sau prin alegerea opiunii de meniu Sal vare sau Salvare ca , din meniul Butonului Office . O interogare salvat poate fi folosit n obiecte ca i cum ar fi un tabel, n special ca surs de nregistrri pentru formulare sau rapoarte. De asemenea, interesant es te faptul c o interogare poate fi salvat sub form de raport sau interogare.

3.7. Adugarea i eliminarea f iltrelor


Filtrele au o menire asemntoare interogrilor de selecie deoarece ambele selecteaz o anumit parte din date, pot ordona aceste date , pot furniza surse de date pentru formulare sau rapoarte, permit modificarea informaiilor din cadrul rezultat. Chiar i formatul ecranului pentru construcie asistat a filtrului sau nregistrrilor sunt foarte asemntoare.

57

Alegerea filtrului n locul nregistrrilor este motivat atunci cnd operaia de extragere de informaii este mai simpl. Dac extragerea de informaii este mai laborioas, atunci este de preferat s se aleag interogrile. Exist mai multe categorii de filtre. Probabil, cel mai simplu este filtrul de selecie, stabilit prin ac ionarea instrumentului cu acela ii nume, din fila Pornire a panglicii Accesss. Dac un tabel sau o interogare este vizualizat n modul Foaie date , atunci cnd cursorul este ntr - o anumit celul i se face clic pe butonul Selec ie din grupu Sortare i selec ie , se selecteaz din foaia de date toate nregistrrile care au n cmpul curent o valoare care fa de valoarea aleas poate fi: aceea i; diferit; mai mic; mai mare; sau ntr -un interval. Filtrare a se mai poate efectua cu un clic dreapta aplicat unui cmp, ntr -un tabel se deschide un m eniu care are ca prime opiuni operaii de filtrare: Filtrare prin selecie; F iltrare cu excluderea seleciei; Filtrare pentru ; Eliminare Filtrare/sortare. Filtrar ea prin selecie e descris n alineatul precedent i redat n figura urmtoare.

58

Filtrarea cu excluderea seleciei extrage articolele care nu apar n cazul anterior. La Filtrare pentru se poate da un criteriu de cutare n cmpul curent. Dac pentru criteriu de selecie se d un text simplu, practic funcionarea este identic cu Filtrarea prin selecie . Dar acest filtru este mai complex deoarece n caseta pentru se pot introduce expresii, ca de exemplu: Mai mic < sau mai mare < dect anumite valo ri numerice sau literare; caracterul joker * pentru realizarea de expresii de forma contine text, ncepe cu textul, se termin cu textul, sau negarea acestor expresii etc. Filtrele se pot aplica prin suprapunere, mereu reducn du- se numrul nregistrrilor. Revenirea la situaia iniial se face selectnd din meniu opiunea Comutare filtrare . Filtrele mai complexe se pot executa cu opiunea Filtrare complex , prin care utilizatorul este ajutat s efectueze filtrri ale datelor cu ajutorul unei grile asemntoare grilei QBE (Vezi figura):

3.8. Limbaj Structurat de Interogare SQL (Structured Query Language)


3.8.1. Limbajul SQL
Probabil c limbajul SQL este astzi cel mai utilizat dintre limbajele structurate pentru interogarea bazelor de date relai onale. SQL a devenit chiar un standard pentru o gam din ce n ce mai larg de sisteme de gestiune a bazelor de date. Mai mult, toate limbajele de programare care vor s asigure utilizatorilor posibiliti de comunicare complex i rapid cu bazele de date , au ncorporat o 59

form mai mult sau mai puin dezvoltat de SQL. Pe lng manipularea i regsirea datelor, se efectueaz i operaii complexe privind actualizarea i administrarea bazei de date. SQL eare un set de comenzi n limba englez, simple i clare, care poate fi utilizat att de specialiti ct i de nespeciali ti. Nu este un limbaj procedural, nu are proceduri de control, fiecare SGBD avnd un motor care are printre func iuni sarcina optimizrii cererilor. Limbajul SQL f olosete cuvintele select, insert, delete ca pri ale setului de comenzi. SQL pune la dispoziia programatorilor comenzi pentru rezolvarea unor probleme ca: date interogate; inserarea, extragerea i tergerea rndurilor intr -un tabel; crearea, modificarea i tergerea obie ctelor de tip baza de date; controlul accesului la baza de date i la obiectele de tip baza de date; garantarea consistentei bazei de date. Limbajul SQL a fost dezvoltat ntr-un prototip de sistem de management a bazelor de date relaionale , System R, de ctre compania IBM, la mijlocul anilor 1970. n 1979, Corporaia Oracle introduce prima implementare a SQL n varianta comercial. Exist un anumit grad de standardizare a limbajului SQL, mai multe sisteme de gestiune a bazelor de date recunoscnd principalele instruciuni ale acestuia (de exemplu: Oracle, Access, Sysbase etc.). Pe plan mondial, standardul n domeniu este considerat ANSI (American National Standards Institute). SQL are n vedere att aspectele de definire, interogare, manipulare a dat elor, procesare a tranzaciilor, ct i caracteristicile complexe privind integritatea informaiilor, cursoarele derulante sau jonciunile externe. Muli productori de sisteme de gestiune a bazelor de date furnizeaz propriile extensii ale limbajului SQL, asigurndu - i astfel exclusivitatea. ACCESS utilizeaz versiuni standardizate ale SQL, prin setarea mediului la SQL ANSI-89 sau SQL ANSI-92. Mediul ACCESS ncurajeaz utilizarea limbajului SQL n scopul optimizrii i eficientizrii lucrului cu bazele de date. SGBD- urile manipuleaz , prin prisma instruc iunilor SQL, structuri de date, instruciunile SQL reprezentnd unul dintre modurile de vizualizare al diferitelor colec ii i structuri de date. Astfel comenzile SQL pot fi plasate n multe locuri din ACCESS , acolo unde se introduce numele unui tabel, al unei interogri sau al unui cmp. 60

n unele cazuri, A CCESS completeaz automat instruciunea SQL. De exemplu, atunci cnd se utilizeaz un expert pentru a crea un formular sau raport care preia date din mai multe tabele, ACCESS creeaz automat o instruciune SQL pe care o utilizeaz ca setare pentru proprietatea Surs nregistrri a formularului sau raportului. Atunci cnd trebuie creat o caset list sau combo cu un expert, A CCESS creeaz o instruciune SQL i o utilizeaz ca setare pentru proprietatea Surs nregistrri a casetei list sau a casetei combo. De asemenea, SQL poate fi utilizat n: Argumentul Instruciune SQL al aciunii de macrocomand ExecuieSQL . Aceast facilitate este uzitat i de limbaj ele clasice de programare pentru acces la bazele de date. n cod , ca ir de caractere literale sau ca instruciune SQL care conine variabile i controale. Proprietatea SQL a unui obiect QueryDef pentru a modifica instruciunea SQL subordonat unei interogri. n paragrafele anterioare ale acestui capitol au fost prezentate modalit i de concepere automat a interogrilor folosind tehnica grafic a grilei QBE, prin care informaia definit i apoi modificat pe grila QBE este automat transformat ntr -o in struciune SQL care este posibil de vizualizat sau actualizat n modul Vizualizare SQL . Grila QBE are limite n realizarea de interogri complexe, motiv pentru care nsuirea temeinic a clauzelor comenzilor limbajului SQL este indispensabil n realizarea unei activit i de proiectare, administrare i utilizare a bazelor de date. Implementrile n diferite limbaje SQL difer cte puin , f iecare prin sintax. n ACCESS principalele reguli sunt redate mai jos: o comand se ncheie cu ";" ; comenzile SQL pot fi pe una sau mai multe linii; clauzele sunt uzual plasate pe linii separate; comenzile SQL nu sunt 'case sensitive' ; ntr - o interogare unde se folosesc cmpuri din mai multe tabele, pentru a separa numele tabelului de numele cmpului, se va utiliza modelul: tabel.cmp ; dac se folosesc spaii sau diacritice n numele cmpurilor sau tabelelor, aceste nume trebuie s fie ncadrate ntre paranteze drepte; elementele din listele diferitelor clauze sunt separate prin virgul; valorile de tip ir de caractere sunt ncadrate nt re apostrof sau ghilimele; n expresiile din cadrul clauzelor se folosesc operatorii aritmetici, relaionali i logici obinuii din informatic;

61

simbolurile ? i * sunt folosite pentru a desemna unul sau mai multe caractere de nlocuire 5; valorile de tip dat/timp sunt ncadrate cu caracterul # . Pentru explicarea entit ilor i structurii unui limbaj de programare se utilizeaz metalimbajul. Cnd n descrierea unei instruciuni anumite pr i constitutive por s lipseasc, acestea sunt intercalate ntre paranteze 6 drepte [ ]. Dac dintre cteva elemente este necesar optarea penntru unul dintre ele, elementele sunt intercalate ntre acolade { }, separate de caracterul pipeline | . Dac un anumit tip de component se poate repeta, acest fapt se noteaz cu trei puncte .

3.8.2. Comenzi destinate tabelelor


Principalele comenzi SQL pentru definirea datelor sunt urmtoarele: CREATE TABLE, ALTER TABLE, DROP TABLE, CREATE INDEX. Pentru crearea unei tabele se utilizeaz comanda: CREATE TABLE table (field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...]] [, CONSTRAINT multifieldindex [, ...]]) . Printre cele mai importante tipuri de date folosite amintim: Character, Memo, Number, Integer, Decimal, Logical, Date, OLE Object etc. Numele tabelei trebuie s fie unic n cadrul bazei de date i s respecte cerin ele identificatorilor. Aceleai cerine apar i pentru numele cmpurilor, n plus exist posibilitatea duplicrii lor n cadrul bazei de date, dar se pstreaz unicitatea n tabel. Clauza NOT NULL arat c n cmpul respectiv nu se pot stoca valori de tip NULL. Un alt exemplu pentru crearea unei tabele ANG pe care o vom folosi n capitolele urmtoare, este comanda: CREATE TABLE ANG (NrAng integer NOT NULL, NumeA text(10 ), Fnc text(10), CSf integer, DataAnga DATE, Sal currency, Rate currency, NrDept integer NOT NULL) ;

5 6

Caractere jocker A nu se confunda cu utilizarea acestor paranteze n metalimbaj cu utilizarea lor n VBA pentru

delimitarea numelor de identificatori compuse din mai multe cuvinte

62

Pentru modificarea structurii unui tabel se utilizeaz comanda ALTER TABLE cu urmtoarea sintax (simplificat): ALTER TABLE table {ADD {COLUMN field type[(size)] [NOT NULL] [CONSTRAINT index] | ALTER COLUMN tip de cmp[(dimensiune)] | CONSTRAINT multifieldindex} | DROP {COLUMN field I CONSTRAINT indexname} } Exemplu: Se modific n tabel a ANG pentru ultimul cmp, tipul n Byte : ALTER TABLE ANG ADD ALTER COLUMN NrDept Byte . Comanda DROP TABLE nume_tabel este folosit pentru a terge complet o tabel dintr - o baz de date (structura i valorile asociate).

3.8.3. Instruciunile de selecie a datelor


Pentru selec ia datelor SQL are prevzut instruc iunea SELECT . Aceast instruc iune con ine mai multe clauze, dintre care doar primele dou sunt obligatorii. Pentru definirea interogrilor de selecie simple se utilizeaz urmtoarea sintax 7: SELECT [predicat] { * | tabel.* | [tabel.]cmp1 [AS alias1] [, [tabel.]cmp2 [AS alias2] [, ...]]} FROM expresie pentru tabele [IN baz de date extern] [WHERE... ] [GROUP BY... ] [HAVING... ] [ORDER BY... ] [WITH OWNERACCESS OPTION] Predicat permite stabilirea modalitii de manipulare a nregistrrilor din baza de date asupra creia se efectueaz selecia i poate fi: ALL : permite includerea tuturor nregistrrilor ce ndeplinesc condiiile impuse. Cum frazele SELECT tabel i SELECT ALL tabel au practic acelai rezultat, calificativul ALL este destul de rar utilizat; DISTINCT : are ca efect eliminarea nregistrrilor care conin duplicate n cmpurile selectate , astfel se va afia doar o apariie a datei multiple;
7

Conform ajutorului Access

63

DISTINCTROW : are n vedere nregistrrile duplicate n ansamblul lor, nu numai pe cele care au cmp uri duplicate; TOP : are ca efect prezentarea primelor articole rezultate, ca procent din total sau n numr absolut. Ceea ce urmeaz dup predicat n prima clauz formeaz o list de selec ie n care sunt cuprinse toate cmpurile care vor aprea n tabel cu rezultatele interogrii. Cmpurile adugate n rndul Field din grila Query a machetei grafice QBE, care au marcat caseta de validare Show , sunt aceleai cu cele menionate n lista de selecie. Simbolul * are rol de caracter jocker. De fapt n aceast list pot fi incluse i expresii care pot sau nu s fie sensibile la articolele din tabelele surs. De asemenea, n scrierea interogrilor de selecie simple SQL ACCESS este posibil i folosirea funciilor totalizatoare. Cele ma i importante funcii din aceast categorie sunt: COUNT : returneaz numrul de nregistrri care respect condiii le stabilite prin clauza WHERE ; SUM : red suma tuturor valorilor dintr- un cmp, op ereaz numai cu valori numerice; AVG : calculeaz valoarea medie a unui cmp nu meric; MAX : permite determinarea celei mai mari valori dintr- un cmp; MIN : duce la obinerea celei mai mici valori a unui cmp rmne valabil i aici restricia privind clauza WHERE . Aceste funcii se mai numesc i funcii de grupare , iar mulimea i valorile rezultatelor obinute sunt direct condiionate de clauza GROUP BY . n cadrul listei de selecie se pot defini i alias-uri . Acestea reprezint un pseudonim (nume) asociat unui cmp astfel: cmp AS alias al funciei agregat. Clauza FROM specific numele tabelei sau tabelelor care vor forma suportul interogrii. Dac n lista_selecie se includ cmpuri din mai multe tabele, n fa a numelui ac estora trebuie precizat tabela din care fac parte. Aa cum artam la regulile de sintax, pen tru separarea numelor de tabele se utilizeaz semnul , (virgul). Trebuie s precizm faptul c n cadrul acestei clauze se pot meniona pe lng tabele, ca surse de informaii pentru interogrile SQL, i interogri care au fost deja create. n continuare redm cte va exem plificri ale acestor precizri: Pentru a selecta toate coloanele dintr- o tabel se utilizeaz caracterul asterix ('*') dup cuvntul SELECT . 64

SELECT * FROM ANG; NrAng NumeA Fnc Csf DataAnga Sal Rate NrDept
2000 CHIVU SOFER 2956 23.02.1999 950 30 30 20 20 30 20 30 20 10 30 30 10

2555 CONTRA VANZATOR 2956 19.12.2000 1250 400 2049 2731 2956 2084 2789 2396 2553 2024 2987 2643 DOROS MARCU NEGRU OSAN POPA POPAN RUSU INGINER ANALIST INGINER ANALIST 2553 31.10.2000 2975 2049 19.03.1999 3000 2553 11.01.1999 2850 2049 19.12.2000 3000

VANZATOR 2956 26.03.1999 1250 500 SOFER DIRECTOR 2084 13.01.1999 800 19.02.1999 5000

TULIAN VANZATOR 2956 23.01.1999 1500 VUSCA VANZATOR 2956 15.09.1999 1600 300 ZIMAN INGINER 2553 14.10.1999 2450

Pentru a lista salariile angaja ilor este necesar comanda:


SELECT NUMEA, SAL FROM ANG; NUMEA
CHIVU CONTRA DOROS MARCU NEGRU OSAN POPA POPAN RUSU TULIAN VUSCA ZIMAN

SAL
950 1250 2975 3000 2850 3000 1250 800 5000 1500 1600 2450

Uneori dorim s crem noi coloane prin expresii. Regulile de sintax i de preceden sunt cele obinuite, funcie de tipurile de date ale operanzilor sau cmpurilor ce concur la realizarea expresiilor. n urmtorul exemplu se e valueaz prima dat nmulirile (Sal * 12 i Comp * 12); apoi cele dou valori produs sunt adunate. 65

SELECT NumeA, Sal *12 - Rate * 12 FROM ANG; NumeA


CHIVU CONTRA DOROS MARCU NEGRU OSAN POPA POPAN RUSU TULIAN VUSCA ZIMAN 15600 9000 10200

Expr1001

Cmpul se va numi Expr1001. Pentru ca sistemul s nu i atribuie o denumire implicit trebuie s se specifice un alias asemeni celui din exemplul de mai jos: SELECT NumeA, Sal*12-Rate*12 as VenitAnual FROM ANG; SQL trateaz corect valorile nule. Dac apar n expresii, valorile nule provoac rezultatul Null, indiferent de tipul celorlai operatori implicai. Din pcate, acest lucru se poate perpetua n obiectele n care aceste interogri vor fi folosite mai departe. Pentru aceasta exist funcia Nz , care nlocuiete expresiile Null cu o anumit valoare, de obicei 0 pentru expresii care n mod firesc ar trebui s fie numerice, "" pentru string, etc. Deci, p entru a face ca interogarea s funcioneze corect ea trebuie transformat sub urmtoarea form:
SELECT NumeA, Sal*12 -Nz(Rate,0)*12 as VenitAnual FROM NumeA
CHIVU CONTRA DOROS MARCU NEGRU OSAN POPA

ANG;I VenitAnual
11400 10200 35700 36000 34200 36000 9000

66

SELECT NumeA, Sal*12 -Nz(Rate,0)*12 as VenitAnual FROM NumeA


POPAN RUSU TULIAN VUSCA ZIMAN

ANG;I VenitAnual
9600 60000 18000 15600 29400

Prin clauza WHERE se pot selecta numai anumite articole, i anume acele a care ndeplinesc criteriul descris. Parametrul criteriul ui de selecie este o expresie care are rezultatul obligatoriu logic. n expresia clauzei WHERE obligatoriu trebuie s apar cel puin un cmp. Clauza WHERE este opional i nu opereaz cu funcii totalizatoare. n cadrul condiiei din clauza WHERE pot fi utilizai operatorii relaionali : (>, >=, <, <=, =, !=) , logici: (AND, OR, NOT) i SQL : (IN, BETWEEN, LIKE, IS NULL) . Apelnd la acetia, este posibil construirea unor condiii mai complexe. Redm n continuare cteva exemple de utilizare a acestei clauze: Pentru a afia angaja ii anterior datei 01.01.2000, se d comanda:
SELECT ANG.NumeA, ANG.DataAnga FROM ANG WHERE [DATAANGA]<=#1/1/2000#; NumeA
POPAN VUSCA POPA NEGRU ZIMAN MARCU RUSU TULIAN CHIVU

DataAnga
13.01.1999 15.09.1999 26.03.1999 11.01.1999 14.10.1999 19.03.1999 19.02.1999 23.01.1999 23.02.1999

Dac se dorete s se extrag angajaii ai cror salariu este ntre 1500 i 3 000:

67

SELECT ANG.NumeA, ANG.Fnc FROM ANG WHERE (((ANG.Sal)>1500 And (ANG.Sal)<3000)) ORDER BY ANG.DataAnga; NumeA
NEGRU VUSCA ZIMAN DOROS

Fnc
INGINER VANZATOR INGINER INGINER

Presupunem c dorim s gsim angajaii care sunt efi, au unul din numerele de marc apar innd (CSf):
SELECT WHERE NrAng
2049 2956 2553 2084

NrAng, NumeA, Sal, CSf FROM ANG Sal


2975 2850 5000 3000 2049

NrAng IN (2553, 2049, 2956, 2084); NumeA


DOROS NEGRU RUSU OSAN

CSf
2553 2553

Pentru a selecta toi INGINER ii cu salarii peste 1500 i toi vnztorii se folosete:
SELECT NrAng,NumeA,Fnc,Sal,NrDept FROM AND OR NrAng
2987 2789 2049 2555 2956 2643 2024

ANG Fnc = 'INGINER' Fnc = 'VANZATOR'; Fnc


VANZATOR VANZATOR INGINER VANZATOR INGINER INGINER VANZATOR

WHERE Sal > 1500

NumeA
VUSCA POPA DOROS CONTRA NEGRU ZIMAN TULIAN

Sal
1600 1250 2975 1250 2850 2450 1500

NrDept
30 30 20 30 30 10 30

Dac se dorete selectarea tuturor INGINERilor i a vnztorilor cu salarii peste 1500 se introduce:

68

SELECT FROM WHERE AND OR NrAng


2987 2049 2956 2643

NrAng,NumeA,Fnc,Sal,NrDept ANG Sal 1500 (Fnc = 'INGINER'

Fnc = 'VANZATOR'); Fnc


VANZATOR INGINER INGINER INGINER

NumeA
VUSCA DOROS NEGRU ZIMAN

Sal
1600 2975 2850 2450

NrDept
30 20 30 10

Parantezele specific ordinea n care operatorii vor fi evaluai. n al doilea exemplu operatorul OR este evaluat naintea operatorului AND . n astfel de operaii complexe trebuie avut mare atenie la precedena operatorilor de toate tipurile, pentru c altfel rezultatul poate fi imprevizibil. Sumar, regulile de preceden sunt redate n ceea ce urmeaz: Toi operatorii sunt aranjai ntr -o ierarhie, ceea ce le determin precedena. ntr - o expresie operaiile sunt executate n ordinea precedenei lor de la mare la mic. Cnd operatorii au precedena egal atunci ei se evalueaz de la stnga l a dreapta. 1. Toi operatorii de comparaie i SQL au precedena egal: =,!=,,<=,>=,BETWEEN...AND,IN,LIKE,IS NULL. 2. NOT(pentru a inversa rezultatul unei expresii logice. De ex: WHERE not(sal=2000)) 3. AND 4. OR. De fiecare dat cnd exist dubiu despre care dintre dou operaii vor fi executate mai nti cnd o expresie este evaluat, se recomand utilizarea parantezelor pentru clarificarea semnificaiei dorite i obinerii rezultatului scontat. Clauza ORDER BY se utilizeaz atunci cnd se dorete ca rezul tatele interogrii s fie ordonate dup unul sau mai multe cmpuri_criteriu (definite drept chei de sortare). Sortarea este opional i se poate realiza n mod cresctor (ASC) sau descresctor (DESC), separat pentru fiecare cmp din list. Exemplificare a folosirii acestei clauze este comanda prin care se extrag n ordine a cresctoare a vechimii (invers a valorilor coloanei DataAnga) date din tabelul ANG:

69

SELECT FROM NumeA


OSAN CONTRA DOROS ZIMAN VUSCA POPA MARCU CHIVU RUSU TULIAN POPAN NEGRU

NumeA,Fnc,DataAnga ANG Fnc DataAnga


19.12.2000 19.12.2000 31.10.2000 14.10.1999 15.09.1999 26.03.1999 19.03.1999 23.02.1999 19.02.1999 23.01.1999 13.01.1999 11.01.1999

ORDER BY DataAnga DESC;


ANALIST VANZATOR INGINER INGINER VANZATOR VANZATOR ANALIST SOFER DIRECTOR VANZATOR SOFER INGINER

Clauza GROUP BY precizeaz cmpul sau cmpurile pe baza crora se va efectua gruparea nregistrrilor. n acelai timp, prin intermediul acestei clauze, se pot executa funciile agregate descrise n lista de selecie pentru fiecare dintre grupri (constituite pe baza cmpurilor de grupare). Echivalentul acestei clauze n macheta grafic QBE de construcie a interogrii l reprezint rndul Total . Pentru a calcula totalul salariilor pe departamente, se utilizeaz comanda:
SELECT SUM(SAL) AS [TOTAL DEPARTAMENT], NRDEPT FROM ANG GROUP BY NRDEPT; TOTAL DEPARTAMENT NRDEPT
7450 9775 9400 10 20 30

Pentru a calcula suma salariulu i salariul mediu distribuite de ctre persoanele cu funcii de conducere, se utilizeaz comanda:
SELECT Sum(ANG.SAL) AS Sum, Avg(ANG.SAL) AS Medie, ANG.CSF AS Responsabil FROM ANG GROUP BY ANG.CSF; Sum Medie Responsabil
5000 6000 800 8275 6550 5000,00 3000,00 800,00 2758,33 1310,00 2049 2084 2553 2956

70

La prima vedere s- ar prea c clauza HAVING ar fi redundant. Din contr, ea este foarte necesar. Spre deosebire de WHERE , care acioneaz nainte de a se efectua gruparea nregistrrilor, HAVING va opera dup definirea acesteia. Pentru HAVING c riteriul va fi aplicat cmpului definit ca argument al funciei agregat. Altfel spus, cnd se folosete clauza GROUP BY i este necesar i o condiie, se va utiliza clauza HAVING . Un exemplu edificator ar fi extragerea funciilor pentru care toi angajaii au salariu mai mare dect 1 500:
SELECT Fnc, MIN(Sal) as [salariu minim] FROM ANG GROUP BY Fnc HAVING MIN(Sal) >= 1500 ORDER BY MIN(Sal); Fnc salariu minim
INGINER ANALIST DIRECTOR 2450 3000 5000

Rezultatul este diferit de cel care de obine prin mutarea condiiei la la clauza WHERE. Interpretarea unei astfel de nregistrri ar fi: extragerea pe funcii a salariului minim, pentru toi angajai i cu salarii mai mari sau egale dect 1500 :
SELECT Fnc, MIN(Sal) as [salariu minim] FROM ANG where Sal >= 1500 GROUP BY Fnc ORDER BY MIN(Sal); Fnc salariu minim
VANZATOR INGINER ANALIST DIRECTOR 1500 2450 3000 5000

De remarcat faptul c se admite utilizarea unei funcii agregat care nu apare n lista de selecie, precum i apelarea la mai multe criterii de grupare. Puterea limbajului SQL este pus n eviden atunci cnd se lucreaz cu mai multe tabele, cnd se exploateaz relaiile sau chiar asocierea dintre ele. Operaiile de asociere induse de clauza JOIN au ca rezultat producerea tuturor combinaiilor posibile, pentru coninutul informaional al fiecrei tabele. Noile nregistrri care rezult n urma jonciunii vor deveni disponibile pentru seleciile ulterioare. La o asociere pot participa mai mult de dou tabele. Principala modalitate de realizare a jonciunii este sintetizat de urmtoarea sint ax , a celei de-a doua clauze a comenzii SELECT : FROM nume_tabela1 {INNER|LEFT OUTER|RIGHT OUTER} JOIN nume_tabela2 ON criteriul_de_asociere 71

[{INNER|LEFT OUTER|RIGHT OUTER} JOIN nume_tabela3 ON criteriul_de_asociere]... Semnificaia elementelor de sintax descrise mai sus este urmtoarea: INNER, LEFT OUTER, RIGHT OUTER se refer la tipurile de jonciuni (INNER JOIN , intern de tip echivalent, LEFT OUTER JOIN , extern de stnga, RIGHT OUTER JOIN , extern de dreapta). De remarcat faptul c SQL ACCESS a ccept scrierea interogrilor externe fr specificarea explicit a lui OUTER . JOIN specific tabela care va fi asociat (nume_tabela2, nume_tabela3...) tabelei precizat n clauza FROM ,. ON este criteriul de asociere i arat relaia dintre cmpurile pe care se bazeaz jonciunea. Unul se afl n tabela asociat, iar cel lalt exist ntr - o alt tabel din lista cu numele tabelelor. Expresia criteriul_de_asociere conine un operator de comparaie (=,<,>,<>,<=,>=) i va returna valorile logice TRUE sau FALSE . Jonciunile tip INNER JOIN determin o asociere a nregistrrilor din tabele, astfel nct s rezulte doar informaii din nregistrrile din fiecare tabel care respect criteriul de asociere. Jonciunile externe (OUTER) sunt de dou tipuri: de stnga (LEFT OUTER JOIN) i de dreapta (RIGHT OUTER JOIN) , fiind destul de puin utilizate. Echivalentul QBE al acestor categorii de jonciuni este alegerea opiunilor 1, 2 sau 3, din caseta Join Properties , care au fost explicate ntr -un capitol precedent (3.4). Ca exemplu, fie urmtoarea interogare totul si toate : SELECT CLIENTI.Codcli, CLIENTI.Dencli, CLIENTI.Adresa, CLIENTI.Telcli, FactGen.Nrfact, FactGen.Datafact, FactGen.Delegat, FactProd.Codprod, Prod.DenProd, Prod.UM, FactProd.Cant, Prod.Pret FROM Prod INNER JOIN ((CLIENTI INNER JOIN FactGen ON CLIENTI.Codcli=FactGen.Codcli) INNER JOIN FactProd ON (FactGen.Nrfact=FactProd.Nrfact) AND (FactGen.Datafact=FactProd.Datafact)) ON Prod.Codpro=FactProd.Codprod; De observat c este este recomandabil scrierea complet din punct de vedere sintactic a numelui cmpurilor. Precedarea sintactic a numelui cmpurilor de numele tabelului i semnul . e obligatorie, n multimea cmpurilor tabelelor la care se face referire n clauza FROM , dac o denumire de cmpuri apare de cel puin dou ori . Acelai rezultat poate fi obinut fr a se recurgere la opiunile JOIN n clauza FROM , ci specificare condiiilor de legtur n clauza WHERE , precum n comanda de mai jo s : 72

SELECT CLIENTI.Codcli, CLIENTI.Dencli, CLIENTI.Adresa, CLIENTI.Telcli, FactGen.Nrfact, FactGen.Datafact, FactGen.Delegat, FactProd.Codprod, Prod.DenProd, Prod.UM, FactProd.Cant, Prod.Pret FROM Prod, Clienti, FactGen, FactProd WHERE (CLIENTI.Codcli=FactGen.Codcli) AND (FactGen.Nrfact=FactProd.Nrfact) AND (FactGen.Datafact=FactProd.Datafact)AND (Prod.Codpro=FactProd.Codprod) ; Opiunea JOIN a fost introdus n standardul SQL din 1992, pn atunci, specificarea relaiilor s - a fcut prin clauza WHERE . Prin parametrii RIGHT sau LEFT opiunea JOIN a adus i o simplificare a unor comenzi. Fie, de exemplu, interogarea de extragere a totalului valorii i cantitii pe produse:
SELECT Prod.DenProd, Prod.UM, Sum(FactProd.Cant) AS SumalCant, Prod.Pret, Sum([Cant]*[PRET]) AS SumValoare FROM Prod LEFT JOIN FactProd ON Prod.Codpro = FactProd.Codprod GROUP BY Prod.DenProd, Prod.UM, Prod.Pret; TOTAL VALOARE SI CANT DenProd UM SumalCant Pret SumValoare
Lapte Malai Ulei Zahar l kg Kg kg 98,00 43,00 40,00 2,9 2,25 3,27 3,1 284,20 140,61 124,00

Fr opiunea JOIN , trebuie s se recurg pentru relaii la clauza WHERE i, pentru adgarea produselor pentru care nu s - a facturat nimic, la opiunea UNION : SELECT Prod.DenProd, Prod.UM, Sum(FactProd.Cant) AS SumalCant, Prod.Pret, Sum([Cant]*[PRET]) AS SumValoare FROM Prod, FactProd WHERE Prod.Codpro=FactProd.Codprod GROUP BY Prod.DenProd, Prod.UM, Prod.Pret; UNION SELECT Prod.DenProd, Prod.UM, 0.00 AS SumalCant, Prod.Pret, 0.00 AS SumValoare FROM Prod, FactProd WHERE Prod.Codpro NOT IN (SELECT DISTINCT CodProd FROM FactProd) GROUP BY Prod.DenProd, Prod.UM, Prod.Pret;

73

Scrierea unei interogri n cadrul alteia duce la apariia unei subinterogri; setul de rezultate obinut de la o interogare va constitui argument pentru o alta. Utilizatorul poate astfel s creeze legturi ntre mai multe interogri SQL ACCESS, pe baza unor cmpuri unice, cu rol de cutare n structura tabelelor. Subinterog rile nlocuiesc interogrile imbricate din versiunile precedente, cu performan e mult mbuntite. Pot fi construite i pri n varianta de lucru a machetei grafice QBE ACCESS. Cea mai simpl subinterogare are sintaxa urmtoare: SELECT * FROM Tabela1 WHERE Tabela1.nume_ cmp operator (SELECT nume_cmp FROM Tabela2 WHERE criteriul_de_selecie); Tabela1 i Tabela2 vor avea un cmp comun (nume_cmp) care va reprezenta de fapt cmpul de legtur ce st la baza construirii subinterog rii. Clauza SELECT din subinterogare va avea acelai numr de cmpuri i de natur similar cu cele din clauza WHERE a interogrii externe. Operatorul poate fi unul relaional sau unul dintre BETWEEN...AND, IN, LIKE, IS NULL . Ca exemplu redm urmtoarea comand: SELECT DenProd FROM Prod WHERE Pret= (SELECT MAX(Pret) from Prod).

3.8.4 . Instruciunile pentru manipularea datelor


Cele mai importante instruciuni sunt: INSER; UPDATE; DELETE . Comanda INSERT se folosete pentru adugarea de nregistrri la o tabel. Ca surs a datelor pot fi o alte tabele, date fixe sau parametri. Sintaxa comenzii este urmtoarea: pentru un articol: INSERT INTO nume_ tabel [(cmp1[, cmp2[, ...]])] VALUES (valoare1,valoare2...) pentru mai multe articole: 74

INSERT INTO nume_tabel [IN baza_de_date_extern] [(cmp1[, cmp2[, ...]])] SELECT [surs.]cmp1[, cmp2[, ...] FROM listtabele n acest caz se adaug nregistrri ntr - o tabel, menionndu - se cmpurile i valorile asociate acestora. Dup lansarea n execuie a interogrii apare un mesaj de avertizare privind adugarea de noi nregistrri n baza de date i caracterul ireversibil al acestei operaii. n cadrul acestui tip de inserare a datelor trebuie s se respecte urmtoarele reguli: valorile menionate n clauza VALUES vor avea aceeai natur cu cmpu rile specificate n clauza INTO ; mrimea valorii corespunztoare fiecrui cmp va fi mai mic dect dimensiun ea cmpului; nu va fi obligatorie spec ificarea denumirii cmpurilor, deoarece SQL ACCESS va asocia listei de valori cmpurile n ordinea din structura nregistrrii (prima valoare se va introduce n primul cmp, a doua valoa re, n al doilea cmp s.a.m.d.) ; dac un cmp are definiia NOT NULL , va fi obligatorie introducerea unei valori pentru acesta. Exemplu: S se adauge un articol pentru un nou angajat, Paznic: INSERT INTO Ang values (8888, "VALCU" , "PAZNIC", 2553, #3/3/2009#,2000,null ,10) Comanda DELETE are urmtoarea sintax: DELETE FROM nume_tabel [WHERE criteriul_de_tergere] se materializeaz n interogarea aciune de tergere parial sau total a nregistrrilor din tabele. n acelai timp se va terge doar coninutul tabelei nu i aceas ta (pentru eliminarea tabelei se va apela la instruciunea DROP TABLE ). Exemplu: DELETE FROM ANG WHERE NrAng = 8888 Comanda UPDATE are urmtoarea sintax : UPDATE nume_tabel SET nume_cmp1 = valoare1 [,nume_cmp2 = valoare2]... [WHERE criteriul_de_actualizare] 75

Aceast comand are rolul i de a modifica valorile cmpurilor din nregistrrile existente. Ca i n cazul instruciunii INSERT , se va urmri dac n cmpul cu valori de actualizat sunt permise numai valori unice. Atunci cnd se dorete actualizarea datelor din mai multe cmpuri se folosete virgula ca separator ntre cmpuri i valorile acestora. Se pot utiliza mai multe condiii , WHERE apelnd la operatorul logic AND pentru a limita actualizarea la nregistrri mai bine specificate. Exemplu: S se mreasc salariile VANZATORilor cu 15%: UPDATE Ang SET Sal= Sal * 1,15 where Fnc=VANZATOR;

76

CAPITOLUL IV. FORMULARELOR 4.1. Noiuni generale

CREAREA

UTILIZAREA

Pentru introducerea n siguran a informaiilor n tabelele bazelor de da te se recurge la utilizarea formularelor (n limba englez: forms). Deoarece bazele de date trebuie s poat gestiona un numr de articole de ordinul miilor sau chiar milioanelor, la proiectarea formularelor trebuie s se gseasc soluii pentru ntreinerea datelor n siguran, introducerea eficient de date, posibilitatea de regsire a articolelor, n scopul modificrii, asigurarea concordanei datelor introduse cu datele existente, verificarea i partajarea accesului utilizatorilor la bazele de date, vizualizarea rapid a valorilor introduse i apoi tiprirea lor. Crearea formularelor necesit activiti complexe de analiz, proiectare i programare a sistemelor, care consum cea mai mare parte din bugetul de timp alocat crerii i implementrii aplicaiei de gestionare a bazei de date. Majoritatea formularelor sunt legate de unul sau mai multe tabele i interogri dintr- o baz de date. Datele cu care lucreaz formularul sau raportul sunt constituite n sursa de nregistrri a formularului n cmpurile din tabelele i interogrile pe care acesta se bazeaz. Un formular nu e obligatoriu s conin toate cmpurile din fiecare tabel sau interogare pe care se bazeaz. Un formular legat de date memoreaz sau regsete informaii din sursa de nregistrri de baz. Pe lng acestea formularele mai pot conine i alte informaii, cum ar fi: titlu, data i numrul paginii (vezi figura).

Elementele grafice, cum sunt liniile i dreptunghiurile, sunt memorate n forma formularului. 77

Datele provin din cmpurile provenite din sursa de nregistrri de baz. Un calcul provine dintr- o expresie, care este memorat n forma formularului. Textul descriptiv este i el memorat n forma formularului. Aceste elemente se numesc controale. Un control este un o biect grafic care poate fi poziionat pe un formular sau raport, putnd afia date, putnd fi legat de efectuarea unor aciuni declanate de evenimente intervenite n rularea aplicaiei sau pur i simplu sunt create pentru mai buna lizibilitate sau pentru scop estetic. Asupra controalelor acioneaz utilizatorii cu mouse - ul sau tastatura. Aciunea se poate face la un moment dat doar asupra unui singur obiect, aspect numit focalizare. Obiectul care a primit focalizarea este, n mod normal, indicat prin evid eniere grafic. Focalizarea poate fi setat de utilizator sau de aplicaie cu ajutorul metodei SetFocus . Mediile de proiectare a bazelor de date pun la dispoziia utilizatorilor diverse instrumente pentru crearea de formulare. n versiunea 2007 a Microsoft ACCESS au fost introduse instrumentele de creare formulare, grupate ntr - o zon cu acelai nume, n fila Creare a panglicii Access, prezentate n figura alturat. Crearea formularelor se poate face: prin salvarea unui tabel sau interogri ca for mular, creindu-se un formular care afieaz toate cmpurile i nregistrrile din sursa de date. n ACCESS 2007 a fost introdus un instrument nou n fila creare n acest scop; utiliznd expertul, caz n care utilizatorii sunt asistai de un expert care p une ntrebri i creeaz un formular bazat pe rspunsurile primite; prin apelarea la unul dintre noile instrumente introduse n mediul de proiectare i ntreinere: Scindare formulare , Elemente multiple sau Dialog Modal . Formularele astfel create pot fi pa rticularizate n modul dorit, n modul Vizualizare proiec t. n Formularul scindat sunt generate automat, n partea de sus, toate cmpurile unui tabel, iar n partea de jos, nregistrrile n modul de vizualizare Foaie de date . Un Formular cu elemente multiple , denumit i formular continuu , permite afiarea simultan a informaiilor mai multor nregistrri. Un formular cu elemente multiple ntr - o versiune iniial poate fi confundat cu un tabel n modul Foaie de date , dar fiind formular, poate fi particularizat. Un formular este de tip modal dac are setat proprietatea modal . Aceast proprietate face ca atunci cnd e terminat o sesiune de editare ntr - un astfel de formular, fereastra s trebuiasc nchis neaprat nainte de a fi posibil mutarea focalizri i la alt obiect. Aici programatorii 78

beneficiaz de tehnologii bazate pe obiecte i - pentru sarcinile mai dificile - de ajutorul limbajului Visual Basic. Ca i n cazul tabelelor, odat cu creterea experienei proiectanilor, munca n modul Vizualizare pr oiect va fi preponderent n crearea sau particularizarea formularelor. Spre exemplu formularul Produse este prezentat mai jos, n modul Proiectare (n limba englez: Design View ).

Panglica Access Instrumente pentru crearea controalelor formularelor Caset text Panou de navigare Caset combinat

Fereastra pentru proiectarea formularelor

Etichet

Subformular Foaia de proprieti

Dreptunghi Buton Linia de stare

n modul Vizualizare proiect, ntr -un formular, se pot particulariza ur mtoarele elemente: Pentru controlul i asistarea utilizatorului se pot seta proprietile formularului pentru a permite sau preveni utilizatorii de la adugarea, tergerea sau editarea nregistrrilor afiate ntr - un formular. De asemenea se poate aduga Ajutor particularizat unui formular pentru a asista utilizatorii la folosirea formularului. n fereastra Formular se pot aduga sau elimina butoanele Maximizare i Minimizare, butoanele de navigare, meniuri rapide i alte elemente ale ferestrei Formular. n s eciuni se poate aduga, elimina, ascunde sau redimensiona antetul, subsolul i seciunea detalii ale unui formular. De asemenea, se pot seta proprietile seciunii pentru a controla aspectul i imprimarea unui raport. Controale. Se pot muta, redime nsiona sau seta proprietile fonturilor unui control. De asemenea, se pot aduga controale pentru a afia valori calculate, 79

totaluri, data i ora curent i alte informaii folositoare ntr -un formular. Se pot crea proceduri particularizate de tratare a evenimentelor ocazionate de lucrul cu controalele.

4.2. Controale
Sistemul de gestiune a bazelor de date ACCESS ofer utilizatorilor un mediu de proiectare orientat pe obiecte, dezvoltat n special pentru realizarea elementelor de interfa. Obiectele a u diverse proprieti prin care se formateaz caracteristicile de stare, legtura cu datele sau modul de reacie la evenimente. Pentru a putea fi incluse n formulare, exist instrumente de creare a acestora, grupate ntr - o zon a Controalelor , n fila Instrumente proiectare formular , din panglica Access. Procedura de amplasare a acestora n formulare este urmtoarea: se face clic pe tipul de control dorit; se selecteaz o zon pe formular unde acest control va fi amplasat; cnd mouse - ul este lsat, controlul este ataat; configurarea parametrilor controlelor prin atribuirea de valori

Inserare sfrit pagin

Inserare pagin

Buton opiune

Control fil

Subformular/ subraport

corespunztoare n rubricile din Fila proprietilor 80

Culoare linie Selectare total Stabilire proprieti implicite control

Cadru obiect legat

Imagine

Caseta de selectare

Inserare hyperlink

Ataament

Caset list

Instrument selecie

Buton de comutare

Inserare diagram

Grup de opiuni

Cadru independent

Tip linie Efect special

Caset combo Dreptunghi Linie

Grosime linie

Toate aceste operaii se fac n modul vizualizare proiectare (DesignView), i constituie activitatea preponderent a proiectanilor de aplicaii de baze de date, munca programatorilor de interfee de lucru cu informaiile din baza de date. Miestria utilizrii controalelor se deprinde odat cu experiena, cu asimilarea accepiunii proprietilor i reaciei controalelor la evenimente. Instrumentele din fila Instrumente proiectare formular , din panglica Access destinate proiectrii controalelor pentru formulare, care nu sunt prezentate mpreun cu numele lor, le am prezentat n figura anterioar : Proprietile unui obiect sunt disponibile pentru modificare dac numele acelui obiect se gsete n titlul ferestrei de proprieti. Fereastra de proprieti este disponibil prin aplicarea unui clic pe instrumentul Foaie de Proprieti din panglica Access sau fcnd clic dreapta pe un obiect i alegnd ultima opiune (Proprie ti ) din meniul contextual. Poate pentru nceptori gsirea proprietilor formularului este mai dificil, dar clic- ul dreapta trebuie fcut n afara zonei unde se aeaz obiectele. Exist controale simple, nelegate de date, care nu au proprietatea Control source . Dintre acestea amintim: etichetele, liniile, dreptunghiurile sau unele imagini. Dar exist controale cu mult mai complexe dect cele de mai sus, chiar mai complexe dect casetele de text. Cele mai multe dintre ele, cnt sunt create n modul de sign, apeleaz automat la un expert (wizard). Aa sunt, de exemplu controalele tip: Caset combinat, Buton de comand, Caset cu list sau Control de pagini . Un regim oarecum diferit de cel al controalelor l au subformularele. Un subformular este un f ormular inclus ntr -un alt formular, pentru a permite afiarea datelor din mai multe tabele sau cereri de interogare, aflate n general n relaii de tip unu la unu sau unu la mai muli. Astfel, n formularul principal vor fi afiate datele din partea unu a relaiei, iar n subformular cele din partea mai muli. n mod implicit, legtura dintre un formular i un subformular reflect legtura dintre ta belele pe care se bazeaz. Prin urmare, la un moment dat n formular va fi afiat o nregistrare aflat de partea unu a relaiei iar n subformular nregistrrile corespondente din tabela aflat de partea mai muli a acesteia. ntr - un formular care conine un subformular se pot specifica criterii de filtrare numai asupra cmpurilor din formularul principal. Ca exemplu putem prezenta o relaie 1 n, dintre un catalog de materiale i documente de micare a acestor materiale astfel:

81

Un subformular poate fi nglobat ntr - un formular n dou moduri: foaie de date (n limba englez: Datasheet view ) sau formular (n limba englez: Form view ). Atunci cnd se include un subformular ntr -un formular principal trebuie realizate urmtoarele operaii: se creeaz formularul principal; se creeaz subformularul; se adaug obiectul subformular din ToolBox ntr -o manie r similar cu adugarea oricrui control. Dac tabelele pe baza crora sunt create formularele sunt ntr - o anumit relaie, ACCESS -ul propune stabilirea acestei relaii i ntre cele dou formulare. Odat nglobat un subformular ntr -un formular, se poate verifica rezultatul operaiunii n modul Vizualizare machet . Eventualele retuuri se pot face n modul Proiectare.

4.3. Proiectarea unui formular legat de o surs de nregistrri


4.3.1. Proprietile eseniale
Un formular este o fereastr de tip Windows. Acesta are obiecte ntlnite n ferestrele aplicaiilor Windows. Pentru introducerea datelor de la tastatur se folosesc de obicei casete de editare text. n aceste casete se folosesc foarte multe dintre regulile de scriere de text din editoarele Mic rosoft referitoare la deplasare, selectare, corectare, cutare, etc. Deoarece, cea mai important menire a formularelor este de introducere de date ntr - un formular, cele mai importante proprieti ale obiectelor sunt cele legate de date. Pentru formular aceast proprietate este Sursa nregistrri (n limba englez: Record Source) i reprezint tabelul sau interogarea de unde formularul i extrage datele. 82

Pentru casete de text, ca de altfel pentru majoritatea controalelor, legtura cu datele este realiz at de proprietatea Surs Control (n limba englez: Control Source) i reprezint de obicei cmpurile tabelului sau interogrii de unde sunt luate valorile pentru o nregistrare. Pentru formular " Record Source " se poate stabili proprietatea mai trziu, n modul Design view . Sunt disponibile pentru modificare proprietile unui obiect dac numele acelui obiect se gsete n titlul ferestrei de proprieti. Fie, de exemplu, tabelul CLIENTI, care are urmtoarea structur:

Cum se construiete un fo rmular pentru introducerea acestor date? Tabelul trebuie s existe n baza de date, mcar structura lui. Recomandm utilizarea instrumentului . Se deschide apoi o fereastr goal pentru crearea formularului, i este util s fie activat Foaie de pro prieti , prin instrumentul comutator , plasat ultimul n fila Instrumente proiectare formular a panglicii. Penultimul buton din aceeai fil este instrumentul comutator care face activ/inactiv Lista de cmpuri a bazei de date curente, pe locul Foii d e proprieti.

83

4.3.2. Obiectele simple


n continuare, trebuie ataate controalele. Casetele de text pot fi ataate prin mai multe posibiliti. O posibilitate este de a trage din fereastra cu lista de cmpuri (pe rnd), cmpurile n locul unde se dorete a fi ataate. O alt posibilitate este de a selecta din bara de instrumente, butonul ab|, pentru casete text. Cursorul mouse- ului, dac este plasat peste fereastra de creare a formularului, va avea forma unui semn + i ab|. Se fa ce clic n aria formularului, n locul unde se dorete s fie amplasat cursorul i se trage cursorul mouse -ului peste zona care va fi acoperit de caseta text. Cnd butonul mouse - ului este eliberat, caseta este amplasat i este nsoit de o etichet. n caseta text apare scris Nelegat(Unbound). Se modific textul etichetelor ataate (n cazul nostru Text0, Text2, Text4, Text6) cu mesajele logice (n cazul de fa Codul, Denumirea, Adresa, Telefonul ).

Aceast modificare se poate realiza dup dou clicuri pe etichet, atunci cnd cursorul mouse- ului devine |, sau dup selecia controlului (a etichetei, n cazul de fa), prin modificarea proprietii Legend a filei Format, din Foaia de proprieti . De altfel, prin acest procedeu se recomand s fie particularizate toate proprietile (caracteristicile) obiectelor plasate n formulare (inclusiv a formularului nsui): 84

culoare, dimensiune, plasament, font (tip, dimensiune, stil, culoare), efecte speciale, legend, nume etc. Cu ajutorul instrumentelor din fila Aranjare pot fi aranjate obiectele.

4.3.3. Culorile obiectelor


Majoritatea obiectelor au prevzut proprietatea prin care se poate stabili o nuan pentru fundal, care este Culoare fundal , sau proprietatea pentru fonturi numit Culoare prim plan s au proprietatea pentru contur numit Culoare chenar . Realizarea unei nuane de culoare pentru aceste propeieti se poate obine prin amestecul, n ponderi diferite, a celor trei culori fundamentale: rou, verde i albastru . Practic se pot obine 2563=16777216 nuane. Dac se cunoate codul culorii acesta se poate completa. Pentru a facilita intuiia codului, sistemul de redare a lui poate fi nscris printr - o triplet de perechi de cifre hexazecimale, precedate de semnul # (diez). Pentru codificarea n sistem intern, se formeaz o masc n care tripleta RGB se pune invers. Acest cod se obine prin nsumarea codificrilor cantitilor pentru cele trei culori (valori 0 255) corectate prin coeficieni, n funcie de locul lor n masc: cantitii de rou, fiind n dreapta i se aplic coeficientul 20=1, cantitii de verde i se aplic coeficientul 28=256 iar cantitii de albastru i se aplic coeficientul 216=65536. Dac exist dificulti n selectarea nuanei, atunci se apas pe , de la sfritul liniei proprietii culorii, i se alege o culoare dintr - o palet. Dac tot nu se gsete nuana dorit, se apas pe butonul Definire culori particularizate i se pot amesteca culori pe sistemul RGB (Red, Green, Blue). n funcie de amestecul realizat se obine un cod pentru nuan. Pentru culoarea negru, care este amestecul celor 3 culori RGB n cantitatea 0, scris #000000 n sistemul hexazecimal (se obine valoarea codului 0). Culoarea alb se obine prin amestecul celor 3 culori RGB n cantitate saturat, 256 -1, scris #FFFFFF n sistemul hexazecimal (se obine valoarea codului 2563 -1=16777216-1). Pentru rou se scrie #FF0000 n sistemul hexazecimal (codul este 255). Galbenul este amestec saturat de rou i verde, scris #FFFF00 n sistemul hexazecimal (se obine valoarea codului 256*256-1=65536- 1). Verde se scrie #00FF00 n sistemul hexazecimal (codul este este obinut nmulind 255*256 sau scond roul din galben: galben rosu =65535-255=65280). Pentru a se obine albastru se scrie #00FF00 n sistemul hexazecimal (codul este este obinut nmulind 255*65536, sau se scoate rou i verde din alb: 16711680=16777215-65280-255).

85

4.3.4. Aranjarea obiectelor


Aspectul formularului depinde n mare msur de aranjarea obiectelor n formulare, de poziia pe care o au unele fa de altele, de proporiile pe care le au, de ordinea de parcurgere a lor (momentul cnd primesc focusul). Atunci cnd se dorete ca unui grup de obiecte s i se aplice n mod unitar anumite proprieti, trebuie s se selecteze obiectele apsnd Shift + clic pe fiecare dintre ele sau trecnd cursorul mouse - ului peste ele i apoi se aplic modificarea modului de aranjare a obiectelor n formular. Operaiile care pot fi efectuate sunt legate de instrumetele grupate n fila Instrumente proi ectare formular/Aranjare din panglic:

Unul sau mai multe obiecte selectate se pot muta cu ajutorul tastelor cu sgei sau prin tragere cu mouse- ul atunci cnd cursorul este sub forma unei cruci de sgei. n mod similar, unul sau mai multe obiecte sele ctate se pot redimensiona cu ajutorul tastelor cu sgei apsate concomitent cu tasta Shift sau prin tragere cu mouse- ul de unul dintre cele opt puncte negre din coluri sau mijloace de laturi, atunci cnd cursorul este sub forma unei sgei cu vrfuri l a ambele capete. Atunci cnd sunt suprapuse obiecte, se poate uzita de opiunile: Aducere n prim plan sau Trimitere n ultimul plan pentru a stratifica corect obiectele. n fine, ordinea de parcurgere a controalelor se poate stabili cu opiunea Ordine de tabulare unde, n fereastra Ordine de tabulare se poate modifica, prin glisare cu mouse- ul, ordinea de parcurgere, existent la un moment dat. A mai rmas de legat formularul i controalele de date. Dup ce este selectat formularul (clic n zona din exteriorul grilei din fereastra formularului) se stabilete valoare Clienti prin modificarea proprietii Surs nregistrri (sau se alege din lista ascuns) a filei Date din Foaia de proprieti . Apoi, pe rnd, pentru fiecare caset de text n parte, dup ce se selecteaz, se alege cmpul corespunztor din lista ascuns a proprietii Surs control a filei Date din Foaia de proprieti . Dup efectuarea acestor operaii, formularul este funcional, precum este redat n modul 86

Vizualizare formular , n figura alturat :

4.3.5. Alte faciliti


ntr - un formular se pot plasa cmpuri calculate pe baza unor expresii. Plasarea expresiilor n controalele aflate pe un formular sau subformular se realizeaz prin scrierea acestora n proprietatea Control Source a unui control. Scrierea unei expresii se poate face cu asistena generatorului de expresii (Expression Builder) sau prin scriere direct. Dac se utilizeaz scrierea unei expresii n modul neasistat, aceasta trebuie precedat de semnul egal (=expresie). Expresiile pot conine orice funcie Access sau funcii definite de utilizator, referiri ctre controale aflate pe alte formulare (deschise), cmpuri din tabela sau interogarea stabilit, a proprietii Record Source a formularului, etc. Utilizarea n expresii a controalelor din acelai formular se realizeaz prin referirea numelui controalelor implicate n expresie. Astfel, se consider implicit referirea proprietii Value a controlului respectiv.

87

n exemplul de mai jos caseta Text25 , care va afia valoarea, va avea la proprietatea Control Source formula =[prettt]*[1.19] unde 'prettt' este numele unui control. n loc de 'prettt' se putea scrie 'prettt.value' ca referire complet a proprietii sau 'pret' ca referire a cmpului ' pret ' dintr- o tabel ' produs ' care este stabilit la proprietatea 'Record Source' a formularului. Exist controale mai complexe pentru plasarea crora n formulare mediul Access are prevzute instrumente expert i indic posibilitile lor cele mai frecvente de utilizare. Bu toanele de comand , sunt frecvent utilizate n formulare, instrumentele mediului Access propunnd utilizarea acestora pentru aciuni pe categorii, redate n figur: De exemplu, pentru a se crea un buton care face salt la nregistrarea anterioar celei curente a formularului, se stabilete aciunea Salt la nregistrarea anterioar din categoria Navigare nregistrri . Controalele de tip Caset combo sau Caset list ofer utilizatorilor posibilitatea de a selecta dintr- o list valori care pot fi introduse ntr - o baz de date. Diferena dintre cele dou tipuri de controale este dat de faptul c, prin

casetele combo valorile introduse pot fi preluate fie din lista controlului, fie prin tastarea lor ntr -o caset text , component a controlului. Sintagma Caset combo definete combinarea a dou tipuri de controale: Caseta text i Caseta list .

88

Valorile din liste pot fi preluate din cmpuri de tabele s au interogri i pot fi utilizate mai departe pentru a fi stocate sau pentru a cuta valori n tabele, precum se vede n figura de mai jos.

De exemplu, ntr - un formular al produselor, pentru unitatea de msur se pot introduce valori care p ot fi, la rndul lor, preluate dintr - o list. Valorire acestei liste pot fi preluate din interogarea pe care o putem salva cu denumirea UM, bazat pe comanda SQL: Select distict UM from Produs order by UM

. Alegerea interogrii sau a tabelului care furnizeaz informaiile, alegerea cmpurilor, a modului de sortare, a limii de afiare, a modului de stocare i utilizare a valorii selectate i Proprietatea Legend a etichetei cuplate de list, pot fi precizate n ferestre ale expertului Access, prin care utilizatorul e ghidat pentru a personaliza controalele de list. Opiunile alese de utilizator sunt nregistrate ca parametrii pentru proprietile casetei list , precum se vede n figura de mai jos:

89

Aceti parametrii pot fi modificai de utilizatori. De exemplu, dac se consider c ar fi mai portrivit pentru acest control o list de valori predefinit, nu o interogare, se poate modifica proprietatea Tip surs rnduri la valoarea List valori i se poate completa proprietatea Surs rnduri cu expres ia Fl; Kg; L . ntr - un formular pot fi folosite date i din diverse tabele, sau interog ri, altele dect cele precizate la proprietatea Surs nregistrri a formularului, prin folosirea unor proceduri de tratare a evenimentelor. Utilizarea n cont roale a expresiilor din alte formulare se face prin sintaxa: Forms![Nume formular]![Nume control]. Pentru a putea fi evaluate astfel de expresii, trebuie ca acele formulare de pe care sunt referite controale s fie deschise n acel moment. Utilizarea ntr-o expresie, de pe un formular, a unor controale din subformular, se realizeaz prin: [Nume subformular].Form![Nume control].

90

CAPITOLUL V. CREAREA I UTILIZAREA RAPOARTELOR 5.1. Crearea unui raport


Atunci cnd se proiecteaz o aplica ie de baze de date, to i parametrii acesteia, toate tabele i obiectele componente, sunt func ie de listele finale necesare, care constituie finalitatea aplica iei. Rapoartele sau situaiile finale reprezint forme mai accesibile de prezentare a informaiilor din bazele de date, coninutul lor putnd fi vizualizat pe ecran, listat la imprimant sau creat un fiier raport, de exemplu .RTF, ce poate fi prelucrat n continuare n Word. Mediile de proiectare a bazelor de date pun la dispozi ia utilizatorilor diverse instrumente pentru crearea rapoartelor. n versiunea 2007 a Microsoft A CCESS, au fost introduse instrumentele de creare rapoarte, grupate ntr - o zon cu acelai nume, n fila Creare a panglicii Access, prezentate n figura alturat. i n cazul rapoartelor, ca i pentru celelalte tipuri de obiecte Access, dintre posibilitatea de a le crea cu ajutorul expertului sau cea n modul proiectare , e recomandabil a doua. Crearea rapoartelor este foarte asemntoare cu crearea formularelor, fiind chiar puin mai simpl deoarece nu se folosesc controale prin care se introduc date. Utiliznd instrumentul , se deschide o fereastr goal pentru crearea raportului, i este util s fie activat Foaie de proprieti, prin instrumentul comutator , plasat ultimul n fila Instrumente proiectare formular a panglicii.

Penultimul buton din aceiai fil este instrumentul comutator care face activ/inactiv Lista de cmpuri a bazei de date curente, pe locul Foii de proprieti .

91

n continuare, trebuie ataate controalele. Procedura de ataare a controalelor este similar cu procedura plasare a acestora lor n formulare. Raportele constituie unul din tipurile de obiecte fundamentale ale ACCESS ului. Deoarece menirea lor de baz este de prezentare a informaiilor di n bazele de date, cele mai importante proprieti ale unui raport sunt proprietile referitoare la date. Stabilirea tabelului sau cererii de interogare de unde raportul i va extrage informaiile se face prin proprietatea surs de nregistrri (n limba englez: Record Source ). Precum la formulare, i la rapoarte, stabilirea cmpului de unde provin valorile afiate n controale, se face cu ajutorul proprietii surs control (n englez: Control source ). Informaiile provenite din celulele tabelelor vor fi afiate n seciunea de detaliu . Controalele inserate n aceast seciune vor fi afiate n raport, n mod repetat, pentru fiecare articol al sursei de nregistrri. n rapoarte mai pot fi create anteturi i subsoluri pe diferite niveluri: antet i s ubsol de raport, antet i subsol de pagin, antet i subsol de grup.

Exerciiu:
Pe baza informa iilor din interogarea totul i toate crea i un raport cu produsele vndute clien ilor. Rezolvare Utiliznd instrumentul , se deschide o fereastr goal pen tru crearea 92

raportului. Vom ncepe prin a lega raportul i controalele de date. Dup ce este selectat raportul (clic n zona din exteriorul grilei din fereastra raportului) , se stabile te valoarea totul i toate prin modificarea propriet ii Surs nregistrri (sau se alege din lista ascuns) a filei Date din Foaia de propriet i . Apoi, pe rnd, pentru fiecare valoare de expus n rndurile raportului, se plaseaz cte o caset text. Pentru fiecare caset text n parte, trebuie elimitat eticheta care e agat de mediu l Access, automat de caset (se face clic pe etichet i se apas tasta Delete ). Legarea casetelor de date se face dup ce se selecteaz prin alegerea cmpul ui corespunztor din lista ascuns a propriet ii Surs control a filei Date din F oaia de propriet i . Dup efectuarea acestor opera ii, raportul este func ional, precum este redat n modul Vizualizare proiect n figura de mai jos .

Raportul n modul Vizualizare raport este redat n figura de mai jos.

Dup ce s -au stabilit sursele d e date pentru ntreg raportul, trebuie stabilite controalele care vor fi coninute n raport, proprietile lor i, n mod special, pentru 93

fiecare control n parte, sursa datelor. Aceast activitate constituie particularizarea unui raport. ntr -un raport s e pot particulariza urmtoarele elemente: Sursa de nregistrri . Se modific tabelele i interogrile pe care se bazeaz un raport. Sortarea i gruparea datelor . Se pot sorta date n ordine ascendent sau descendent. De asemenea, se pot grupa nregistrri n unul sau mai multe cmpuri i afia subtotaluri i totaluri generale ntr -un raport. Fereastra Raport. Se pot aduga sau elimina butoanele Maximizare i Minimizare , modifica textul din bara de titlu i alte elemente ale ferestrei Raport . Seciuni . Se p ot aduga, elimina, ascunde sau redimensiona seciunile antet, subsol i detaliu ale unui raport. De asemenea, se pot seta proprietile seciunilor pentru a controla aspectul i imprimarea unui raport. Controale. Se pot muta, redimensiona sau seta proprie tile fonturilor unui control. De asemenea, se pot aduga controale pentru a afia valori calculate, totaluri, data i ora curente i alte informaii utile ntr -un raport.

5.2. Particularizarea antetului i subsolului


La fel ca i n cazul formularelor i rapoartele conin antet, detaliu i subsol. Dar, suplimentar fa de formulare, rapoartele pot conine aceast mprire i la nivel de pagin. i, mai mult dect att, rapoartele sunt fcute s treac peste mai multe nregistrri pentru a afia rezultate. Valorile afiate pot reda situaia dintr -o nregistrare sau din grupuri de nregistrri. De exemplu, pentru casetele care includ valori numerice, se poate seta pentru proprietatea " Executare sum " (n englez Running Sum) valoarea " Over All". Gruparea induce existena pn la nivel de grup a seciunilor: antet, detaliu i subsol. Antetul raportului este seciunea dintr - un raport utilizat pentru plasarea de informaii (cum ar fi titlul, data sau o prefaa) la nceputul unui raport. Subsolul de raport este acea seciune dintr - un raport care este utilizat pentru a plasa informaii ce n mod normal apar n partea final a unui raport, cum ar fi numrul total de pagini, semnturi, data crerii i sumele de raport. Antetul i subsolul unui raport apar la nceputul i sfritul unui raport imprimat.

94

A ntetul de pagin este utilizat pentru a afia titlul, titluri de coloane, date calendaristice sau numere de pagin n partea de sus a fiecrei pagini a unui formular sau raport. Subsolu l de pagin este u tilizat pentru a afia rezumate de pagin, date calendaristice sau numere de pagin n partea de jos a fiecrei pagini dintr -un formular sau raport A ntetul i s ubsolu l de pagin apar n partea superioar i cea inferioar a fiecrei pagini. Antet de grup este utilizat pentru a plasa informaii, cum ar fi numele de grup sau totalul de grup, la nceputul unui grup de nregistrri. Subsol grup se utilizeaz pentru a plasa informaii, cum ar fi numele de grup sau totalul de grup, la sfritul unui grup de nregistrri. A ntetul i s ubsolul de grup apar n partea superioar i cea inferioar a gruprilor articolelor. Adugarea sau eliminarea acestor elemente se face cu ajutorul instrumentelor din grupul Afiare/Ascundere din fila Instrumente proiectare rapoarte/Aranjare a panglicii. Antet/Subsol raport Antet/Subsol pagina

Cu excepia antetului i subsolului de grup, celelalte niveluri de anteturi i subsoluri sunt perechi. Ele pot fi disponibile doar mpreun. Dac este necesar doar o component, pentru cealalt se seteaz nlimea la dimen siunea 0. Eliminarea anteturilor i subsolurilor atrage dup sine si tergerea tuturor controalelor plasate pe suprafaa lor.

Exerciiu
Adugai antet i subsol raportului de la exerci iul precedent . n antetul raportului s se nscrie un antet de firm, i numele de coloane, iar la subsol s se scrie data listrii i semntura persoanei care a fcut listarea. Rezolvare: se deschide baza de date Facturi; se alege din panoul de navigare raportul Raport TEST; se comut n Vizualizare n mod proiectare ; se urmrete s existe setat Antet/subsol raport; 95

se gliseaz n antetul raportului, din bara de instrumente, etichet a pentru a se scrie firma, n partea stng sus i ca titlu: Lista produselor vndute pe clien i . Titlul se poate face cu un font mai mare i aldin; se mrete nlimea antetului i se adaug n antet etichete pentru antetul coloanelor, care se aliniaz n linie cu cea mai de sus ; se traseaz un dreptunghi, care s nconjoare etichetele, i pentru ca s nu acopere etichetele se seteaz propri etatea Stil fundal cu culoarea Ro u i se plaseaz n spatele etichetelor realizate cu instrumentul Trimitere n ultim plan din fila Aranjare ; la subsolul raportului se adaug etichet cu coninutul (legenda) Listat n data i o etichet ntocmit / Semntu ra; se ac ionez pe instrumentul Data i ora din panglic, i pentru c se adaug etichete cu data i ora sistemului n partea stng a antetului, data trebuie glisat n zona de subsol, lng Listat n data , iar eticheta cu ora se poate terge; se trase az o linie n partea de subsol, pentru a delimita elementele acestuia de articolele listate.

n modul Vizualizare raport rezultatul este urmtorul:

96

5 .3. Gruparea datelor ntr -un raport. Realizarea de totaluri i subtotaluri


Atunci cnd informaiile prezentate n rapoarte trebuie structurate grupat, pe anumite grade de centralizare, fiecare grup putnd s aib antet i subsol (partea de detaliu este una singur pentru ntreg raportul), pentru a aduga sau elimina aceste elemente de grup ntr -un raport se f olosete instrumentul Sortare i Grupare

(simbolul

) din fila Instrumente proiectare rapoarte din panglic.

n subsolul ferestrei mediului ACCESS apare caseta de dialog Grupare, sortare si totaluri , i se face clic pe butonul Adgare grup i automat este afiat un rnd n caset pentru a ajuta la precizarea Gruprii dup selectare Cmp sau Expresie .

Pentru particularizare se aleag parametrii dorii: modul de sortare, dac exit totaluri sau titluri, dac se afieaz sau ascunde seciunea de antet sau subsol la nivel de grup. Gruprile se nscriu n aceast caset n ordinea ariei lor de cuprindere. Pentru adugarea de controale care vor reda totalul tuturor valorilor unui cmp, la nivel de raport, se procedeaz n felul urmtor: 1. Se adaug o caset text n zona de subsol a raportului. Este de preferat ca aceast caset s fie o copie a unei casete pe care o totalizeaz (cu operaiile obinuite de copiere i lipire) ; 2. La proprietatea Surs control se seteaz: = Sum([expresie]) unde expresie poate lua valorile variabile, funcie de nregistrri, care vor fi totalizate ; 3. La proprietatea Execuie sum se seteaz valoarea Nu. Totalizarea unor valori pe grupuri (subtotaluri de raport) se face n mod similar cu totalurile generale pe raport cu diferena c ele se plaseaz n subsolurile de grup. Problema se pune n mod similar i pentru totalurile pe pagini.

Exerciii
1. S se adauge o grupare dup denumirea produselor n raportul construit 97

n exerciiu precedent. 2. S se gliseze n antetul gruprii produsului , din zona de detaliu, informa iile generale despre produse. 3. S se realizeze n zona de detaliu, o caset pentru valoarea fiecrei livrri i s se rectifice antetul coloanelor. 4. S se totalizeze valorile facturilor pe produse i pe ntreg raportul. Pent ru lizibiliate, totalurile produselor sunt precedate de o etichet Total pe produsul: i de o caset text ce va reda codul i numele produslui. Pentru raport, valoarea va fi precedat doar de o etichet Total general. Totalul pe produse i informa iile din antetul acestei grupri s fie incadrate ntr -un dreptunghi cu fond galben, iar cele de antet/suport - pe ntreg raportul - ntr -un dreptunghi ro u. Rezolvare: 1. Pentru adugarea gruprii dup cmpul furnizori se face clic Sortare i

Grupare (simbolul panglic.

) din fila Instrumente proiectare rapoarte din

2. n subsolul ferestrei mediului ACCESS apare caseta de dialog Grupare, sortare i totaluri , i se face clic pe butonul Adgare grup i automat este afiat un rnd n caset, cu o list din care se alege cmpul DenProd . Acionnd pe butonul Mai multe , se stabilete s fie vizibile seciunea antet i seciunea subsol. Se gliseaz din zona detaliu casetele text corespunztoare cmpurilor: Codprod , Denprod , Um i Pret . 3. Se face o copie a casetei text corespunztoare cmpului Cant . (Prin intermediul memoriei clipboard cu operaiile Copy (Ctrl + C) i Paste (Ctrl + V ). Acest control se mut n partea dreapt a benzii Detaliu . La proprietatea Surs control se scrie: = Cant * Pret , pentru a se specifica fa ptul c e vorba de produsul a dou valori (Semnul = este indispensabil). La proprietatea Format se alege Fix , iar la Zecimale se precizeaz 2 . Redm mai jos, n modul Vizualizare aspect, configurrile fcute. 98

4. n modul Vizualizare proiect , se selecteaz , cu un clic, caseta de text corespunztoare expresiei valoare , se copiaz n clipboard, cu Ctrl + C i se lipete cu Ctrl + V. Cu mouse- ul se gliseaz caseta copiat, n seciunea Subsol DenProd . Se face o nou lipire i se gliseaz caseta n seciunea Subsol raport . Se reajusteaz nlimea seciunii de detaliu. Pentru cele dou casete copiate se seteaz urmtoarele proprieti de dat: Surs control : =Sum (Cant * Pret); Execuie sum : Nu. Se traseaz un dreptunghi cu ajutorul instrumentului din fila Instrumente raport/ Proiectare din panglic, se coloreaz cu galben prin intermediul listei ascunse de culori, legat de instrumentu din panglic i se trimite, pentru a nu acoperi obiectele, n ultimul plan cu

ajutorul butonului , din fila Instrumente raport/ Aranjare . n mod similar se traseaz dreptunghi n subsolul raportului i antetul grupului.

99

R ezultatul este prezentat n modul Vizualizare proiectare , n figur:

Rezultatul este prezentat n modul Examinare naintea imprimrii , n figur:

Exerciii
1. S se adauge o grupare dup denumirea clien ilor n raportul construit n exerciiu precedent. 2. S se gliseze n antetul gruprii Clien ilor , din zona de detaliu, 100

informa iile generale referitoare la Clien i i s se rectifice antetul coloanelor. 3. S se totalizeze valorile facturilor pe Clieni . Pentru lizibiliate, totalurile produselor sunt precedate de o etichet Facturat clientului: , i de o caset text ce va reda codul i numele clientului. Totalul pe client i informa iile din antetul a cestei grupri s fie ncadrate ntr -un chenar albastru deschis, cu fond alb. S se elimine fondul controalelor din detaliu. 4. S se pun o caset care s redea numrul curent al ieirilor pe clieni. 5. S se salveze raportul ntr -un document Word. Rezolvare: 1. Operaii le sunt evidente, i se rezolv n mod similar exerci iului anterior. 2. Idem. 3. Idem. 4. O caset cu numr curent al articolelor se realizeaz prin urmtorii pai: din caseta cu instrumente se selecteaz caseta text i se gliseaz n p artea stng a z onei de detaliu; se terge eticheta lipit de caseta de text ; pentru proprietatea Surs control se seteaz: =1 ; pentru proprietate Execuie sum se seteaz Peste tot;. Rezultatul este prezentat n modul Vizualizare proiectare , n figur:

101

5. Pentru a salv a lista rezultat ntr - un document Word, n prealabil, documentul trebuie vizualizat n modul Examinare aspect i din linia cu instrumente proprie acestui mod de vizualizare se alege pictograma aplicaiei Microsoft Word i se produce deschiderea raportului cu procesorul de texte. Nu sunt importate elementele grafice. Rezultatul este redat mai jos:
SC DEPOZITUL SRL LISTA PRODUSELOR VANDUTE PE CLIENTI Cod Produs 7023 Lapte 111111 SC First SRL 1 2 Facturat clientului: 222222 SC Secundul SRL 1 2 Facturat clientului: 333333 SC Tera Parte SRL 1 Facturat clientului: Total pe produs: 1009 Ulei 111111 SC First SRL 1 Facturat clientului: 222222 SC Secundul SRL 1 Facturat clientului: 333333 SC Tera Parte SRL 1 Facturat clientului: Total pe produs: 1075 Zahar 222222 SC Secundul SRL 1 Facturat clientului: 333333 SC Tera Parte SRL 1 Facturat clientului: Total pe produs: Total pe produsul: Listat n data: 8 mai 2010 17:56:03 ntocmit Semntura Str.Toamnei nr 3 26133333 5 24.10.2009 Trandafir 333333SC Tera Parte SRL 1075Zahar 25 77,50 77,50 124,00 548,81 Str.Verii nr 2 26122222 1 21.10.2009 Popescu 222222SC Secundul SRL 15 46,50 46,50 Str.Toamnei nr 3 26133333 5 24.10.2009 Trandafir 333333SC Tera Parte SRL 1009Ulei 11 35,97 35,97 140,61 3,1 /kg Str.Verii nr 2 26122222 1 21.10.2009 Popescu 222222SC Secundul SRL 20 65,40 65,40 Str Primaverii nr 1 26111111 4 23.10.2009 Antonescu 111111SC First SRL 12 39,24 39,24 Str.Toamnei nr 3 26133333 5 24.10.2009 Trandafir 333333SC Tera Parte SRL 7023Lapte 20 58,00 58,00 284,20 3,27/Kg Str.Verii nr 2 26122222 6 2 25.10.2009 Popescu 22.10.2009 Popescu 222222SC Secundul SRL 15 30 43,50 87,00 130,50 Str Primaverii nr 1 26111111 4 3 23.10.2009 Antonescu 22.10.2009 Antonescu 111111SC First SRL 15 18 43,50 52,20 95,70 Denumire Produs Client Adresa Telefon Nr. factur Data factur Delegat Pre/UM UM Cantitate Val 2,9 /l

102

CAPITOLUL VI. LIMBAJUL VISUAL BASIC 6.1 Editarea modulelor Visual Basic for Application
Visual Basic for Application (abreviat VBA) este limbajul de programare intern al pachetului software pentru birouri Microsoft Office. Cu ajutorul VBA pot fi create modulele Access, obiecte ale baze de date care

Exploratorul proiectelor

Instrumente

Instrument e pentru depanare

Ferestra de editare cod

Ferestra proprietilor obiectelor

Ferestra afi are

Ferestra urm rire variabile

permit scrierea de rutine (subprograme, proceduri 8, funcii 9) pentru accesa i face particularizri n mod intim tabelele, formularele, rapoartele i interogrile din baza de date i funcionarea conjugat a acestora. VBA este un dialect al limbajului Visual Basic. n VBA nu pot fi create programe de sine stttoare ci proceduri a cro r execu ie poate fi iscat de interac iunea utilizatorului cu obiectele incluse n fi ierele Office (documente de tip Word, registre de tip Excel, prezentri de tip Power Point i baze de date Access). Aceste proceduri constituie o perfec ionare a unui limbaj de macrocomenzi a
8

metod de rezolvare a unei probleme, defalcat n etape succesive; func ie executat de un

subprogram, parte din sintaxa limbajelor evoluate, conform www.dexonline.ro preluat din Marele dicionar de neologisme, Florin Marcu, Editura Saeculum, 2000
9

ib idem

103

pachetului Office. Produsele pachetului Office, ele nsele, creaz n unele situa ii, module scrise n VBA, a cror prezen i rulare pot fi sesizate sau nu de utilizatori. Unitatea elemetar prin care programatorii scriu un algorit m ntr -un limbaj de programare este instruc iunea. Un grup de instruc iuni realizeaz o unitate de program; n cazul VBA, o procedur. Exist mai multe tipuri de proceduri: proceduri eveniment : O procedur executat automat ca rspuns la un eveniment ini iat de utilizator sau de codul program, sau activat de sistem prin adugarea de cod la un eveniment dintr -un formular sau raport. proceduri Function : Procedur care returneaz o valoare i care poate fi utilizat ntr - o expresie. Funcia se declar cu instruciunea Function i se sfrete cu instruciunea End Function. proceduri Sub : Procedur care ndeplinete o operaiune. Spre deosebire de o procedur Function, o procedur Sub nu returneaz valori. O procedur Sub se declar cu instruciunea Sub i se ncheie cu o instruciune End Sub. Procedurile sunt amplasate n module. Pentru crearea, testarea, depanarea i/sau rularea procedurilor utilizator, se recurge la instrumentele speciale asigurate de mediul Visual Basic, care se ini iaz prin butonul , care este a ezat n captul din stnga al filei Instrumente baza de date a panglicii. Procedurile sunt definite prin tastarea instruciunii Function sau Sub , eventual precedate de specificatorul de domeniu Public sau Private . Pe acela i prim rnd se scrie efectiv un nume de procedur (funcie sau subrutin) imediat urmat de toate argumentele ntre paranteze iar la funcie i de comutator funciei. De exemplu, urmtoarea declaraie pentru funcia ncrcat specific ir NumeForm ca argument: Function ncrcat (sirNumeForm As String) As Boolean Sau, urmtoarea declaraie pentru procedura Sub : AfiEveniment indic NumeEveniment ca argument: Sub AfiEveniment (NumeEveniment as String) Corpul definirii procedurilor con ine liniile de cod n limbaj Microsoft Visua l Basic care vor efectua operaiunile sau calculele necesare pentru realizarea algoritmilor i se termin cu linia de final End Sub sau End Function scris automat de editor cnd s -a declarat procedura. Pentru a facilita gestionarea obiectelor, a proceduri lor n module, n editor exist pentru programatori fereastre de afiare a propriet ilor i de exploarare a proiectelor, permi ndu -se crearea de proceduri i module, ctarea i actualizarea sau stergerea lor. Editorul mediului are faciliti de colorare a cuvintelor cheie, declaraiilor utilizator, frazelor eronate, comentariilor etc. Cea mai puternic facilitate a editorului 104

VBA este posibilitatea afirii contextuale n momentul scrierii instruc iunilor n limbajul VBA, a elementelor care caracterizea z un anumit context: n fine, dar nu mai puin important, este depanatorul , nelipsit din mediile de programare deja de aproape 20 de ani. n seciunile urmtoare ale acestui capitol vom prezenta elemente de limbaj VBA n scopul eviden ierii unor metode de access la obiectele bazei de date.

6.2 Elemente de sintax


Modulele VBA se bazeaz pe un set de instruc iuni care con in cuvinte preluate din limba englez. n afacra acestora se utilizeaz identificatorii. Un identificator este numele unui element dintr- un program, fie el variabil, constant, tip definit de utilizator, enumerare, procedur, funcie, obiect, metod, proprietate, control, form modul sau chiar proiectul nsui. Specific VBA este faptul c numele i con inutul acestor identificatori pot fi alctuite att din prima parte a codului ASCII (primele 128 caractere) ct i din codul ASCII extins (caractere speciale, care n funcie de modul de redare pot cpta diferite forme, de exemplu diacritice). Sintaxa a mprumutat multe reguli care constituie esen ialul regulilor limbajului natural: ntre cuvinte se intercaleaz spaiu, dup rnduri se tasteaz returul de car (enter), elementele de acela i tip sunt desprite de virgul, argumentele func iilor sunt delimitate de parantezele rotunde, irurile de caractere care se manipuleaz intacte sunt delimitate de ghilimele, numele variabilelor trebuie s nceap cu o liter, etc. n plus mai exist cteva reguli specifice. Caracterele interzise n denumiri sunt %!$&#@ . Nu e permis s existe doi identificatori identici cu acelai scop i exist o serie de identificatori standard, definii de Visual Basic. Nu este permis s fie numi i identificatorii prin cuvintele cheie ale limbajului, precum Dim, Private, Public, Array, For, Next, While, with, If, Then, Else, End, etc. Pentru a face codul ct mai lizibil muli programatori folosesc prefixe n definirea identificatorilor care indic tipul de date referit i scopul lor. Acesta regul nescris se numete scrierea ungar dup un angajat ungur al Microsof t care a promovat-o. Exemplu: iCod pentru un cod de tip integer; astrLuni pentru un masiv de iruri de caracter cu lunile anului; dbPersonal pentru o baz de date personal, etc. Comentariile sunt iruri de caractere care au n fa caracterul (') i au rolul de a face textul programului mai lizibil, nefiind compilate sau interpretate.

105

n general n Visual Basic dac se dorete s se scrie mai multe instruc iuni pe o linie, aceasta sunt separate prin caracterul (:) . Invers, dac o declaraie este prea mare se poate scrie pe mai multe linii, pentru continuare se folose te caracterul continuator de linie ( _)(un spaiu urmat de o linie jos). Algoritmii care sunt transforma i n programe pot fi concepu i ini ial prin scheme logice. Schemele logice pot s fie sub forma unui pseudocod - care este un limbaj mai pu in riguros dect un limbaj de programare, posibil i cu termeni din limba romn - sau sub form grafic . Cele mai utilizate dintre aceste simboluri sunt: start i final de algorim blocuri secve niale operaii de intrare - ieire bloc de decizie apel de subprograme conectori

6.3 Casete de dialog predefinite


n aproape toate limbajele care au form Visual se pot folosi dou funcii pentru a se putea realiza casete de dialog predefinite. Ev ident, formularele i rapoartele reprezint o form elegant de introducere i respectiv afiare a datelor care se bazeaz n principal pe structura bazei de date. n afar de acestea, exist n VBA instruciuni pentru introducerea unor date izolate i afi area de mesaje. Aceast necesitate se simte mai ales n faza de test a unei proceduri sau funcii, sau pentru afiarea de mesaje ctre utilizatorul bazei de date. i mai mult chiar nici posibilitatea Debug.Print nu este de nlturat n aceast faz. Pent ru aceasta Visual Basic pune la dispoziia programatorilor dou funcii: InputBox care afieaz o caset de dialog ce permite preluarea datelor de la utilizator i MsgBox ce permite afiarea diferitelor informaii. Funcia InputBox afieaz o caset de dialog modal care cere utilizatorului s introduc date. Funcia returneaz o valoare de tip String format din caracterele introduse de utilizator n caseta cu text din fereastra de dialog dac utilizatorul apas

106

butonul OK ; dac se apas butonul Cancel ir ul returnat este irul vid "". Sintaxa este: InputBox(prompt[,title] [,default] [,xpos] [,ypos] [,helpfile, context]) Dac nu se pun parantezele rotunde InputBox se transform n procedur . Elementele din sintax reprezint: prompt reprezint un ir de caractere afiat ca mesaj n caseta de dialog. Numrul maxim de caractere este de 1024; title, este un ir de caractere ce va fi afiat drept titlu n bara de titlu a casetei de dialog; default, reprezint un ir de caractere ce va fi afiat n caseta cu text i care va fi returnat de funcie n caz c utilizatorul nu introduce alte date; xpos, ypos, sunt expresii numerice care specific coordonatele colului stnga sus al casetei de dialog fa de colul stnga sus al ecranului; helpfile, este un ir de caractere ce specific fiierul Help ce va fi folosit pentru a oferi asisten n lucrul cu caseta de dialog; Exemplu: InputBox "Introducei forma de nvmnt:", _ "Form de dialog predefinit", "Zi", 1000, 1000 Funcia MsgBox se utilizeaz pentru a obine rspunsuri de tip Da / Nu de la utilizatori sau pentru a afia diferite mesaje de avertizare, erori, atenionri. Dup citirea mesajului utilizatorul va apsa un buton pentru a nchide fereastra. Funcia returneaz un Integer specificnd ce buton a fost apsat. Sintaxa este: MsgBox(prompt[, buttons] [, title] [, helpfile, context]) Unde: prompt - un ir de caractere afiat ca mesaj n caseta de dialog. Numrul maxim de caractere este de 1024; buttons o expresie numeric ce reprezint suma valorilor care specific numrul i tipul butoanelor afiate sau pictograma ; title un ir de caractere ce va fi afiat drept titlu n bara de titlu a casetei de dialog; helpfile - un ir de caractere ce specific fiierul Help ce va fi folosit pentru a oferi asiste n n lucrul cu caseta de dialog. Pentru setarea butoanelor exist predefinite urmtoarele constante specifice VisualBasic: 107

Constante vbOKOnly VbOKCancel VbAbortRetryIgnore VbYesNoCancel VbYesNo VbRetryCancel VbCritical VbQuestion VbExclamation VbInformation VbDefaultButton1 VbDefaultButton2 VbDefaultButton3 VbDefaultButton4 VbApplicationModal VbSystemModal

Valoare 0 1 2 3 4 5 16 32 48 64 0 256 512 768 0 4096

Descriere afiare Numai buton OK Butoanele OK i Cancel Butoan ele Abort, Retry i Ignore Butoanele Yes, No i Cancel Butoanele Yes i No Butoanele Retry i Cancel Pictograma Critical Message Pictograma Warning Query Pictograma Warning Message Pictograma Information Message Primul buton este implicit Al doilea buton este implicit Al treilea buton este implicit Al patrulea buton este implicit Modul de aplicaie; Aplicaia ateapt i utilizatorul trebuie s rspund la caseta de dialog Modul de sistem; Toate aplicaiile sunt suspendate pn la rspunsul la caseta de dialog

Primele constante cu valori (0 5) numrul i tipul de butoane afiate; grupul urmtor (16, 32, 48, 64) descrie stilul pictogramelor; apoi grupul urmtor (0, 256, 512, 768) determin care buton este implicit; n fine ultimul grup (0, 4096) d tipul modulului . Prin adunarea numerelor se obin efecte compuse, dar se adun exclusiv o singur valoare dintr -un grup. Valorile returnate de funcia MsgBox sunt: Constante vbOK vbCancel vbAbort vbRetry vbIgnore vbYes vbNo Valoare 1 2 3 4 5 6 7 Descriere OK Cancel Abort Retry Ignore Yes No

108

Exemplu: MsgBox "Mesaj de atenionare !", vbExclamation _ + vbOKCancel + vbDefaultButton1+vbsystemmodal, "Sistemul st!"

6.4 Variabilele n VBA


6.4.1. Declararea variabilelor
O variabil se caracterizeaz prin dou elemente: numele variabilei, care este un identificator cu ajutorul cruia putem s referim variabila pe parcursul programului i t ipul variabilei, care determin ce tip de dat poate stoca variabila. n funcie de tipul variabilei compilatorul aloc o zon mai mic sau mai mare de memorie pentru variabila respectiv. Ie ftinirea memoriilor face ca rigoarea gestionrii tipurilor de variabile s nu mai fie de actualitate, chiar declarrile devin desuete n limbajele de programare moderne. VBA permite utiliz area declarrii implicite a variabilelor la prima utilizare i utilizarea tipului implicit Variant, prin care este posibil ca o variabil s stocheze valori diferite n momente diferite. n schimb capt importan crescut locul unde se declar i spa iul unde este recunoscut o variabil i durata de existen . Declararea unei variabile se face astfel: {Public| Private| Dim} NumeVariabil [as TipVaribil] Unde: NumeVaribil este identificatorul variabilei; TipVariabil este numele unui tip de date din cele pe care le accept Visual Basic. Dac acesta lipsete se consider c variabila este de tipul Variant . Exemple: Dim iCant as Integer Dim dtZiSal as Date

definete variabila iCant de tip Integer definete variabila dtZiSal de tip date 109

Private sNume as String Public lstListaPret as ListBox

definete variabila sNume de tip String definete variabila lstListaPret ce va conine o referin ctre un obiect de tip ListBox

O caracteristic deosebit de important a variabilelor este do meniul de valabilitate i durata de existen. Astfel exist variabile locale la nivelul unei proceduri. Aceste variabile se declar n interiorul procedurii cu ajutorul cuvntului cheie Dim . Ele exist atta timp ct se execut procedura n care au fost declarate. De asemenea, ele pot fi utilizate numai n cadrul acelei proceduri neavnd nici o semnificaie n alt parte a programului. Au un domeniu de valabilitate doar la nivelul proceduri i au o durat de via temporar. Este recomandat s se folosea sc Dim doar pentru declararea acestui tip de variabile chiar dac Visual Basic permite folosirea lui i n alte contexte. Un alt tip de variabile sunt cele cu domeniu de vizibilitate la nivelul unui modul. Aceste variabile pot fi folosite oriunde n interiorul modulului n care au fost declarate i exist atta timp ct este folosit modulul respectiv. Este recomandabil ca declararea lor s se fac cu ajutorul cuvntului cheie Private n loc de Dim . Un al treilea tip de variabile sunt cele globale la nive lul ntregului program. Acestea sunt pot fi folosite oriunde n program, au un domeniu de valabilitate global i exist atta timp ct se execut programul. Declararea acestor variabile se face folosind cuvntul cheie Public . Un alt tip de variabile sunt cele statice . Acestea pot avea un domeniu de valabilitate local sau la nivelul unei proceduri , dar o durat de existen permanent. Declararea se face cu ajutorul cuvntului cheie Static . Chiar dac sunt definite la nivelul procedurilor, variabilele Sta tic i pstreaz valoarea i dup ce procedurile gazd i termin execuia. Dac procedura va fi din nou apelat variabila static nu va fi iniializat automat de Visual Basic, lucru ce se ntmpl cu variabilele care nu sunt statice, ci va avea valoare pe care a avut-o la ultima ei folosire. Variabilele locale la nivelul unui modul sau publice se declar n seciunea de declaraii a modulului (Declarations). n unele versiuni de Visual Basic se permite declararea variabilelor i implicit, adic o variabil este considerat declarat la prima ei folosire. Nu este necesar o declarare prealabil cu ajutorul cuvintelor cheie Dim, Private, Public . n mod implicit Visual Basic le consider de tip Variant pe toate. n VBA acest lucru nu este permis. Una dintr e cele mai periculoase erori ntlnite la declararea unei variabile este urmtoarea: 110

Dim a, b, c as Integer, care la prima impresie pare c sunt definite trei variabile a,b,c de tip Integer dar de fapt numai c este de tip Integer, celelalte fiind n mod implicit de tip Variant. Corect este Dim a as Integer, b as Integer, c as Integer

6.4.2. Tipurile variabilelor n VBA


n paragrafele precedente ne- am folosit de cteva tipuri de date folosite n Basic. Important n alegerea tipului de dat este natura d atelor i intervalul n care poate lua valori variabila. VBA accept dou categorii de tipuri de date: standard (predefinite); utilizator. Tipurile de date standard sunt: Tipul de Tipul informaiei dat Integer Numere ntregi Long Numere ntregi Single Numere reale Memoria Intervalul de valori necesar 2 bytes -32,768 la 32,767 4 bytes Aproximativ 2.1E9 la 2.1E9 4 bytes -3.402823E38 la 1.401298E-45 pentru valori negative i1.401298E -45 la 3.402823E38 pentru valori pozitive Numere reale 8 bytes -1.79769313486232E308 la ( dubl precizie) 4.94065645841247E-324 pentru valori negative i 4.94065645841247E -324 la 1.79769313486232E308 pentru valori pozitive Numere cu pn 8 bytes -922,337,203,685,477.5808 la la 15 cifre ntregi 922,337,203,685,477.5807 i 4 zecimale ir de caractere 1 byte / Pn la 65000 de caractere pentru irurile cu caracter lungime fix i pn la 2 miliarde de caractere pentru irurile dinamice Numere ntregi 1 byte 0 la 255 Valori logice 2 bytes True sau False Dat i timp 8 bytes 01.01.100 la 31.12.9999 Referine ctre 4 bytes N/A obiecte Oricare din 16 bytes N/A 111

Double

Currency

String

Byte Boolean Date Object Variant

tipurile precedente

+ 1 byte per caracter

Cu fiecare tip de dat sunt permise o serie de operaii. Ast fel: operaiile care se pot face cu valorile unui tip ntreg sunt: adunarea (+); scderea( - ); nmulirea(*); mprirea ntreag ( \) a \ b returneaz ctul mpririi lui a cu b; mprirea real(/); restul mpririi ntregi (mod); ridicarea la putere (^) de asemenea sunt permise operaiile relaionale: mai mic sau egal (<=); mai mic (<); egal (=); mai mare(>); mai mare sau egal (>=);Rezultatul unor astfel de operaii este de tip boolean , avnd valorile True sau False; operaiile care se pot face cu valori le unui tip real sunt: adunarea (+); scderea( - ); nmulirea(*); mprirea(/); ridicarea la putere (^); sunt permise operaiile relaionale prezentate la tipurile ntregi; irurile de caractere suport operaia de concatenarea (& sau uneori +) i operaiile de comparaie (<,<=,=,>=,>). Prin concatenare dou sau mai multe iruri de caractere pot fi lipite formnd un singur ir de caractere. Cu ajutorul operaiilor de comparaie se stabilete poziia alfabetic a irurilor de caractere; valorile logice, bool eene (True i False) suport urmtoarele operaii logice: negarea logic (Not); i logic (And); sau logic (Or); sau exclusiv logic (Xor); echivalena logic (Eqv); implicaia logic (Imp); tipurile de dat de tip obiect suport o singur operaie cea de comparaie (Is). Cu ajutorul acestei operaii se verific dac dou variabile de tip obiect refer acelai obiect sau nu. Un tip particular de date sunt constantele . n expresii, constantele au regim obinuit ca al oricror ali operanzi. O definiie de constant introduce un identificator ca sinonim al unei valori constante. n Visual Basic exist dou tipuri de constante: intrinseci sau definite de sistem. Visual Basic pune la dispoziie o serie ntreag de constante p entru culori, taste, figuri etc; simbolice sau definite de utilizator. Putei defini propriile dumneavoastr constante cu ajutorul cuvntului cheie Const astfel: [Public|Private] Const NumeConstanta[As type] = expresie Exemple: Const PI = 3.14159265358979 Const NR_CARACTERE = 256 Const ZI_DE_NASTERE = #02.04.1981# Const NUME_DE_COD = "acalul" 112

6.4.3. Ini ializarea variabilelor


Variabilele declarate sunt iniializate automat de compilator: cele numerice cu 0, text cu "", etc. Modificarea informaiilor stocate n variabile se face cu ajutorul instruciuni de atribuire. Sintaxa: variabil = expresie sau Set variabil = expresie Exemple: iOreLunar = 170 sNume ="Popescu"&" Ioan" dtDataAng=#13.06.2000# s=s+1

variabila a va stoca valoarea 170; variabila va stoca irul de caractere "Popescu Ioan" variabila va stoca data 13.06.2000 reprezint primul oc ntlnit de novicii n informatic, care nu sesizeaz c e vorba de operatorul de atribuire nu de comparare, n cazul de fa , n locaia de memorie s; va fi suprascris coninutul anterior incrementat cu 1

Unei variabile de tip obiect (tipul generic Object sau de tipul celorl alte obiecte Access 2000) nu i se poate atribui un obiect n varianta clasic : variabila=expresie sau variabila1=variabila2, ci utilizndu - se instruciunea Set : Set variabila_obiect = expresie_obiect . n urma apelului acestei instruciuni, variabila_obiect va referi obiectul returnat de expresia expresie_obiect. i numele de p roceduri pot fi considerate un caz particular de variabile.

6.5. Tablouri
n limbajele de programare se ncearc crearea de structuri de date complexe. n aproape toate exist posibilitatea de lucru cu tablouri sau masive. Un tablou este o structur de date percepute ca fiind adiacente, care poart un singur nume i au acelai tip, care poate s pstreze mai multe valori de acelai tip. Tabloul poate fi asimilat unui ir finit din matematic, Ca i irurile, tablourile pot fi uni-, bi-, tri- sau multi- dimensionale. Distincia ntre elemente se face cu ajutorul 113

indecilor care redau un numr de ordine al elementelor pe fiecare dimensiune. Bineneles, dac tabloul este de tip Variant atunci elementele acestuia pot s conin diferite tipuri de date (n umerice, iruri de caractere, date calendaristice, obiecte). De obicei un tablou unidimensional este numit vector iar unul bidimensional matrice. Tablourile sunt intuitiv create n programare implica ie a scopului declarat al calculatoarelor programabile, acela de a efectua cu vitez operaii de rutin, omogene i repetivive. Pentru gestionarea ct mai eficient a elementelor tablourilor sunt de mare folos structurile repetitive. Declararea unui tablou cu dimensiune fix se poate face astfel: Dim|Public|Private _ NumeTablou([[NrPrimElement to] NrUltimElement], _ [[NrPrimElement to] NrUltimElement], ...) [As TipDat] Dac nu se specific NrPrimElement to se consider a fi 0. Dac se specific NrUltimElement pentru toate dimensiunile, tabloul este considerat a fi de dimensiuni fix. Dac nu se specific NrUltimElement pentru o dimensiune, tabloul este considerat a fi dinamic i n interiorul procedurilor aceasta poate fi precizat cu instruc iunea Redim , care are aceia i sintax ca instruc iunea Redim . Ca de exemplu prin urmtoarea instruciune se declar un vector cu 7 elemente: Dim zi(6) As string Alte exemple ar fi: Dim PunctenPlan(10,10) As Byte matrice cu 121 elemente Private PunctenSpaiu( 1 To 30,1 To 30, 1 To 30) As Byte masiv cu 30 3 elemente Dup declaraie, elementele tabloului pot fi folosite n expresii sau n orice loc unde poate fi utilizat o variabil obinuit. Deci: zi(0)=Luni ncarc primul element al vectorului zi cu irulLuni

6.6 Funcii i proceduri def inite de utilizator


O funcie/procedur reprezint un bloc de instruciuni care realizeaz o prelucrare. Funciile i procedurile se aseamn ntructva i de aceia au o denumire comun: subprograme. Acestea pot fi apelate ori de cte ori este nevoie, fr a mai fi necesar rescrierea lor. n felul acesta se reduce considerabil efortul de programare. Aplicaiile mai complexe nu pot fi concepute fr a apela la proceduri. n plus programarea pe obiecte se poate realiza doar fcndu - se ca fiecrei posibiliti de 114

modificare a proprietilor obiectelor sau rspunsului acestora la diferite evenimente s - i corespund cte un subprogram. Pentru a da un grad de generalitate ct mai mare, funciile i/sau procedurile conin n definirea acestora o list de parametri formali. n momentul apelrii unei funcii i/sau proceduri se transmit ctre acestea valori pentru fiecare parametru al procedurii sau funciei (sau nimic dac nu exist parametri). Sintaxa pentru definirea unei proceduri este urmtoarea: [{Private|Pub lic}]Sub nume_procedur[([{ByRef|ByVal}] param_1 [as tip_date],)] [instruciuni] .... [Exit Sub] ... [instruciuni] End Sub Unde: Private i Public au semnifica ie similar cazului declarrii variabilelor. O procedur eveniment poate fi definit doar Private ; Sub permite ieirea forat dintr - o procedur; instruciunile care ncep cu Exit provoac ie irea for at din blocurile de instruc iuni ale anumitor structuri; Parametrii din definirea procedurii se numesc parametrii formali, ei precizeaz (implic it sau explicit) doar tipul parametrilor; {ByRef|ByVal} precizeaz modul de transmitere a parametrilor, care poate fi prin valoare sau referin . Implicit se consider a fi ByVal . Dac se utilizeaz ByVal modificrile fcute argumentelor transmise procedu rii se pierd dup ieirea din procedur, pe cnd, dac se utilizeaz ByRef modificrile fcute argumentelor transmise procedurii rmn i dup ie irea din procedur. Apelul unei proceduri se poate face astfel: [Call]nume_procedura [(valoare_param_1,valoare_param_2,....)] Parametrii din apelul procedurii se numesc parametrii reali , ei sunt purttori de valoare n momentul apelului, iar dac nu corespund ca tip cu parametrii formali, parametrii reali sunt converti i. Referitor la definirea i apelul proce durilor s considerm urmtorul exemplu: Sub test() v=7 transmit v 115

MsgBox v End Sub Sub transmit(ByVal a) a=a+3 End Sub Procedura test de tip Sub apeleaz procedura transmit de tip Sub . Modul de transmitere a parametrului este prin valoare. Prin rularea subrutinei test se afi eaz valoarea 7, cu toate c n interiorul subrutinei transmit parametrul este modificat, aceste transformri nu rmn la ieirea din subrutin. Dac se schmb modul de transmitere a parametrului prin ByRef , linia de definirea a subrutinei apelate fiind Sub transmit(ByVal a) , atunci rezultatul execu iei subrutinei test va fi afi area valorii 10. Sintaxa unei funcii este urmtoarea: [{Private|Public}]Function nume_funcie[([{ByRef|ByVal}]param_1 tip_date],)] _ [as tip_date] [instruciuni] [nume_funcie = expresie] ... [Exit Function] [instruciuni] [nume_funcie = expresie] End Function

[as

Unde precizrile de la explicarea sintaxei procedurilor de tip Sub , rmn valabile i pentru acest tip de proceduri. Diferen ele apar de la de la specificul capacit ii func iilor de a returna o valoare. Tipul valorii returnate este specificat n linia de antet a definirii func iilor, dup lista de parametrii. Valoarea se returneaz prin linia descris de sintaxa: nume_funcie = e xpresie Acest rezultat va fi returnat n momentul terminrii execuiei funciei. Apelul unei funcii se poate face astfel: Variabila=nume_funcie[(valoare_param_1,valoare_param_2,...)] , variabila preia rezultatul returnat de funcie. Dar, prin apelarea u nei func ii se returneaz o valoare, deci func ia apelat poate fi folosit ca un operand n orice expresie unde este permis tipul returnat. Referitor la definirea i apelul func iilor s considerm urmtorul exemplu : 116

Function test1() As Integer Dim v As Integer MsgBox increment(7) End Function Function increment(a As Integer) As Integer increment = a + 1 End Function Execu ia func iei afi eaz valoarea 8. Pentru a testa un subprogram fr parametri direct dintr -un modul, se poziioneaz cursorul n corpul subprogramului, apoi se selecteaz comanda: Run , Go/Continue F5 . Dac se dorete executarea subprogramului n modul Trace , se alege din meniul Debug , Step into F8 . Limbajul VBA cuprinde n plus o serie de funcii predefinite care faciliteaz scrierea procedurilor i funciilor utilizator. Unele mai des folosite dintre acestea sunt: Abs(expresie_numeric) : returneaz valoarea absolut a unei expresii numerice, sau a unui numr ; Asc(sir_caractere) : returneaz codul primului caracter din irul de caract ere specificat; CDate(expresie) : face conversia la tipul Date; CDbl(expresie) : face conversia la tipul Double; Dec(expresie) : face conversia la tipul Decimal; CInt(expresie) : face conversia la tipul Integer; CLng(expresie) : face conversia la tipul Long; CSng(expresie) : face conversia la tipul Single; CStr(expresie) : face conversia la tipul String; Cos(expresie_numeric) : returneaz cosinus dintr - o expresie numeric sau dintr- un numr. Valoarea returnat este de tip Double ; Chr(COD_CARACTER) : returneaz c aracterul ASCII cu codul specificat; Date() : Returneaz data calendaristic ; Day(data_calendaristic) : returneaz numrul zilei din luna ; Exp(expresie_numeric) : returneaz valoarea constantei e ridicat la o puter e (expresie numeric sau numr); Log(ex presie_numeric ): returneaz logaritmul natural dintr - un numr sau dintr- o expresie numeric; InStr ([intStart, ]strir, strCaut[, intCompar]) : verific dac un caracter sau un ir( strCaut) se gsete n interiorul altui ir (strir). n caz afirmativ funcia returneaz poziia primului caracter cutat n irul strir; 117

IsDate(expresie) : returneaz valoarea adevrat (TRUE) dac expresia dintre paranteze este compatibil cu o dat calendaristic ; IsEmpty(expresie) : returneaz valoarea adevrat (TRUE) dac expresia dintre paranteze nu conine o valoar e. Null este considerat valoare; IsNumeric(expresie) : returneaz valoarea adevrat (TRUE) dac expresia dintre parant eze poate fi evaluat ca numr; IsObject(expresie) : returneaz valoarea adevrat (TRUE) dac identificatorul dintre paranteze este de tip obiect; IsError(expresie) : returneaz valoarea adevrat (TRUE) dac expresia dintre parantez e conine o eroare; Lcase(ir_de_caractere) : transform literele mari dintr - un ir n litere mici ; Left(strir,intNr Caractere) : extrage dintr- un ir de caractere primele intNrCaractere din partea stng a irului; Len(ir_caractere/variabil) : returneaz numrul de caractere ale irului de caractere specificat sau numrul de octei necesari pentru a stoca coninutul unei variabile; Mid((ir_caractere, poziie_start[, lungimea])) : extrage un ir de caractere dintr- un alt ir de caractere ; Month(data_calendaristic) : returneaz numrul lunii din an ; Right(strir,intNrCaractere) : extrage dintr- un ir de caractere primele intNrCaractere din partea dreapt a irului ; Space(numr) : returneaz numrul de spaii specificate ; Str(expresie_numeric) : convertete rezultatul evalurii expresiei numerice dintre paranteze ntr - un ir de caractere ; Ucase(ir_de_caractere) : transform literele mici dintr- un ir n litere mari ; Val(ir_caractere) : returneaz conversia irului de caractere specificat, ntr un numr ; WeekDate(dat_calendaristic,prima_zi) : returneaz numrul zilei din saptmna datei calendaristice ; Year(dat_calendaristic): returneaz anul . Pentru scrierea programelor fiecare limbaj dispune de implementarea aaziselor structuri de control al execuiei programelor. S - a demonstrat c orice algoritm, fie el ct de complex, poate fi scris cu doar 3 sau 4 astfel de structu ri. Principalele structuri de control implementate n Visual Basic for Aplication sunt:

118

6.7 Structura alternativ


n Visual Basic for Aplication pentru implementarea structurii alternative se poate utiliza instruciunile IF i SELECT CASE. Sintaxa vari antei principale a instruciunii IF este urmtoarea: If condiie Then [secvena instruciuni A] [Else [secvena instruciuni B ]] End If Condiia unei structuri alternative poate fi o expresie numeric sau o expresie logic, care poate fi evaluat la adevrat ( True ) sau fals ( False ). Compilatorul evalueaz condiia i dac ea este " adevrat ", se execut secvena instruciuni A . Dac expresia este " fals ", instruciunea " If " are i parte de " Else " atunci se execut secvena instruciuni B . Dac condiia este o valoare numeric atunci dac este diferit de 0 este interpretat ca True iar valoarea 0 este interpretat ca False . Una i numai una dintre cele dou instruciuni se execut. Grafic, instruciunea este reprezentat astfel:

Da secvena instruciuni A

Condiie

Nu secvena instruciuni A

Un exemplu de utilizare a acestei instruciuni, este urmtorul subprogram, care calculeaz soluiile ecuaiei de gradul al doilea, pentru care prezentm schema logic i codul surs, scris n Visual Basic. '-----------------------Private Sub ec2(double a, _ double b, double c) Dim delta As Double Dim x As Double Dim x1 As Double Dim x2 As Double If a <> 0 Then delta = b ^ 2 - 4 * a * c If delta >= 0 Then x1=(-b+Sqr(delta))/(2*a) 119

x2=(-b-Sqr(delta))/(2*a) Sub ec2(a, b, c) MsgBox "x1 =" & x1 MsgBox "x2 =" & x2 Da Nu Else a0 MsgBox _ "ec. nu are solutii reale" Da 2 delta=b -4ac End If Else Da x=-c/b Nu delta>=0 If b <> 0 Then x = -c/b Scrie x MsgBox "x =" & x x 1 =(-b+ )/2a delta Else x 2 =(-b)/2a Nu exis t delta MsgBox_ soluii "ecuatia n- are sens" reale Scrie x 1 , x 2 End If End If End Sub
Terminare

b0

Nu

Ecuaia nu are sens

Schema logic a acestei probleme este redat alturat codului.

6.8 Structura repetitiv


Structura repetitiv, la modul general, presupune repetarea unei secvene de instruciuni de un anumit numr de ori, n funcie de o condiie. Fiecare limbaj implementeaz mai multe instruciuni pentru realizarea structurii repetitive. Structurile repetit ive ntlnite pot fi: cu numrtor, cu testarea condiiei naintea executrii unui ciclu, cu testarea condiiei dup executarea unui ciclu.

6.8.1. numrtor

Structura

repetitiv

cu

val c = val i
Operaii care

Cele mai multe limbaje folosesc pentru instruciunea repetitiv cu numrtor o form a instruc iunii FOR . n Visual Basic aceasta este numit n mod obinuit instruciunea FOR...NEXT . Sintaxa instruciunii FOR...NEXT este : 120

se repet

val c = val c + val p


Da

val c <= val f

For valc=vali To valf [Step valp] [secven instruciuni] [Exit For] [secven instruciuni ] Next [valc ] Schema logic de reprezentare a acestei structuri este redat alturat sintaxei . n descrierea sintaxei instruc iunii avem : val i , val f - reprezint valoarea iniial, respectiv valoarea final pentru o variabil contor val c ; val p - re prezint valoarea pasului de incrementare/decrementare pentru variabila contor, implicit are valoarea =1; val i , val f , val p - pot fi i rezultatul evalurii unor expresii. La ntlnirea acestei structuri, se repet secvena de instruciuni de un numr de ori, plecndu - se de la valoarea iniial a variabilei contor, pn la valoarea final a acesteia, incrementndu -se ntotdeauna variabila contor cu val p . Dac partea de [Step ...] lipsete, compilatorul consider val p egal +1. Pentru ieirea forat din structura repetitiv se poate uza de partea Exit Fo r a instruciunii care de obicei trebuie intercalat ntr - o structur alternativ. Prin execuia rndului Exit For , controlul instruciunii este transferat la prima instruciune dup Next. Redm mai jos, codul surs pentru algoritmul de ordonare al unui vector cu n elemente.

121

6.8.2. Structurile repetitive de tip Do Loop


Caracteristic limbajului Visual Basic este existena aanumitei instruciuni DO...LOOP . Aceast instruciune repet un bloc de instruciuni ct timp o condi ie este adevrat sau pn cnd o condiie devine adevrat. Mai clar spus, aceast struct ur suport mai multe forme, echivalente fie cu structura repetitiv cu condiie anterioar fie cu structura repetitiv cu condiie posterioar. Aceste structuri repet un bloc de instruciuni n funcie de valoarea de adevr a unei condiii. Structurile pot fi implementate prin mai multe forme, echivalente fie cu structura repetitiv cu condiie anterioar fie cu structura repetitiv cu condiie posterioar. Unele forme se repet atta timp ct condiia este adevrat, altele, din contr, un timp att ct i e necesar condiiei s devin adevrat. Limbajul Visual Basic, prin instruciunea Do...Loop are implemenate toate aceste 4 posibiliti. Sintaxa poate fi redat astfel: DO [{While | Until} con di ie] [instruciuni] [Exit Do] [instruciuni] Loop sau este valabil i sintaxa n forma urmtoare: Do [instruciuni] [Exit Do] [instruciuni] Loop [{While|Until} condiie] C ondiia este opional. Ea poate fi o expresie numeric sau o expresie logic, care poate fi evaluat la adevrat ( True ) sau fals ( False ). Compilatorul evalueaz condiia i n funcie de rezultatul obinut, mai execut sau nu instruciunile din corpul structurii. Dac condii a este o valoare numeric, atunci dac este diferit de 0 este interpretat ca True iar valoarea 0 este interpretat ca False . Dup evaluarea condiiei, controlul execuiei va fi transmis la una i numai una dintre cele dou ramuri cu cu ieire din ea. A tunci cnd se folosete While ciclarea continu dac condiia este adevrat , n schimb cnd se folosete Until ciclarea continu dac condiia este fals . n plus dac condiia este pe linia cu D o atunci structura este repetitiv cu condiie anterioar, deci e posibil ca instruciunile din corpul structurii s nu fie executate niciodat.

122

n schimb dac condiia este pe o linie cu Loop atunci structura este repetitiv cu condiie posterioar, deci instruciunile din corpul structurii vor fi executate ce l puin odat, indiferent de valoarea de adevr a condiiei. Existena acestei instruciuni pluriforme este fireasc deoarece n algoritmi sunt poate, ntotdeauna substituibile instruciunile repetitive Dac este ntlnit rndul cu Exit Do , atunci controlul programului este transmis forat n afara buclei, la prima instruciune care se gsete dup linia Loop . Redm mai jos, schema logic i codul surs pentru algoritmul de calcul al sumei primelor n numere naturale, folosind cele 4 variante ale instruc iunii. i) Cazul Do While cu condiie anterioar : '-----------------------Function sum(n As Integer)_ Function Sum (n) As Integer sum = 0 Dim i As Integer sum = 0 i=1 i=1 Da Do While i <= n i <= n sum = sum + i sum = sum + i Return i=i+1 Loop i=i+1 End Function ii) Cazul Do Until cu condiie anterioar: '-----------------------Function sum(n As Integer)_ As Integer Dim i As Integer sum = 0 i=1 Do Until i > n sum = sum + i i=i+1 Loop End Function

Function Sum (n) sum = 0 i=1 i>n Return Nu

sum = sum + i i=i+1

iii) Cazul Do While cu condiie posterioar: '-----------------------123

Function sum(n As Integer)_ As Integer Dim i As Integer sum = 0 i=1 Do sum = sum + i i=i+1 Loop While i <= n End Function
Function Sum (n) sum = 0 i=1 sum = sum + i i=i+1 i>n Ieire Nu

Function Sum (n) sum = 0 i=1 sum = sum + i i=i+1 i <= n Ieire Da

iv) Cazul Do Until cu condiie posterioar: '-----------------------Function sum(n As Integer)_ As Integer Dim i As Integer sum = 0 i=1 Do sum = sum + i i=i+1 Loop Until i > n End Function

6.8.3. Structura repetitiv pentru fiecare


Visual Basic mai are o instruciune specific, derivat din instruciunea FOR...NEXT numit instruciunea For...Each...Next . Aceast instruciune repet un grup de instruciuni pentru fiecare element al unui masiv sau al unei colecii de obiecte. Sintaxa este redat mai jos: For Each element In grup [instruciuni] [Exit For] [instruciuni] Next [element] Element poate fi o variabil utilizat n instruc iune pentru a itera toate elementele unui masiv sau a unei colecii referit prin variabila grup. Pentru colecii, element poate fi variabil de tipul variant, un obiect generic de variabil, sau un 124

obiect specif ic de variabil. Pentru masive element poate fi doar de tipul variant. grup este un nume de colecie sau masiv. Exemplul urmtor listeaz numele tuturor controalelor incluse n formularul Produse . Pentru a fi accesate controalele, formularul trebuie s fi e deschis. '-----------------------------------Sub Form() Dim f As Form Dim c As Control Set f = Forms("Produse") For Each c In f Debug.Print c.Name Next End Sub Redm n figura de mai jos, rularea n mediul VBA alturi de mediul Access cu formularul deschis.

6.9 Programarea recursiv


Sintagma Programare recursiv se refer la apelarea unei proceduri sau funcii de ctre ea nsi. Orice algoritm recursiv se poate transforma ntr -unul iterativ. 125

Un exemplu de funcie recursiv, scris n VBA, cal culeaz suma primelor n numere naturale: ------------------------Function sum_rec(n As Integer) If n > 0 Then sum_rec = n+sum_rec(n 1) End If End Function Apelul se poate face chiar din Debug Window prin linia: sum_rec(100). Pentru a nu se apel a la infinit, n subprogramele recursive trebuie plasat un bloc de instruciuni care s conin o secven de oprire, oarecum similar algoritmilor iterativi. n programare, recursivitatea este inspirat din recursivitatea sau recurena din matematic. Dac efectiv subprogramul se apeleaz direct pe el nsui atunci avem recursivitate direct, pe cnd dac un subprogram SP1 apeleaz un altul SP2 care apeleaz la rndul lui pe SP1 atunci avem recursivitate indirect. Prin aceasta se ajunge la realizarea re petabilitii unor blocuri de instruciuni. n general ns recursivitatea nu face economie de memorie, deoarece trebuie meninut o stiv cu valorile de prelucrat, putndu - se suprancrca stiva i memoria. n schimb pot subprogramele recursive sunt lizibi le i uor de depanat.

6.10 Obiecte ACCESS 2000


O baza de date Access este format dintr - o mulime de obiecte, care pot fi accesate din VBA. Fiecare obiect are o serie de proprieti i metode ataate. Reamintim c termenul de proprietate se refer la o dat ncapsulat ntr -un obiect, iar termenul de metod se refer la un subprogram ncapsulat ntr -un obiect. Invocarea unei metode sau proprieti a unui obiect se face prin prefixarea acesteia cu numele obiectului astfel: nume_obiect.nume_metod; nume_obiect.nume_proprietate. Specificarea unui obiect aparinnd unei colecii se poate face conform uneia din urmtoarele variante: 1. nume_obiect_colecie![nume_obiect] este nevoie de paranteze drepte numai dac numele obiectului conine spatii, 2. nume_obi ect_colecie("nume_obiect"),

126

3. nume_obiect_colecie(index_obiect) numr care indic poziia n colecie a unui obiect. Aceste numere de ordine ncep de la zero. Invocarea formularului sau raportului curent se poate face prin apelativul Me. Printre nume roasele obiectele care pot fi utilizate de programatori sunt i obiectele Applicaton i Form. Obiectul Application refer aplicaia Microsoft Access 2000. Principalele metode ale obiectului Application sunt: CurrentDb returneaz un obiect baza de date (D ataBase) care refera baza de date curent; CurrentUser returneaz utilizatorul curent, conectat la baza de date curent ; SysCmd se poate utiliza n principal pentru a afia un text n bara de stare ( Status Bar ) sau pentru gestionarea unui Progress Bar; SetOption stabilete valori pentru parametrii care se gsesc n meniul Tools, opiunea Options: ; obiect_Application.SetOption nume_opiune, setri ; GetOption returneaz valorile unor parametri care se gsesc n meniul Tools, opiunea Options:; obiect_Appl ication.GetOption(nume_opiune). Principalele proprieti ale obiectului Application sunt: DoCmd apeleaz obiectul DoCmd , descris n paragraful precedent; Forms permite accesul la colecia de formulare deschise dintr -o baza de date; Reports permite ac cesul la colecia de rapoarte deschise dintr -o baza de date; Screen permite accesul la obiectul Screen (va fi descris n paragrafele urmtoare). Obiectul Form refer un obiect de tip formular. Toate formularele deschise din baza de date se regsesc n colecia Forms , fiind identificate printr- un numr, alocat n ordinea deschiderii acestora. Primul formular deschis are numrul de ordine zero. Pentru a afla numrul de formulare deschise la un moment dat, trebuie citit proprietatea Count a coleciei Forms . Metodele obiectului Form sunt: Repaint redeseneaz pe ecran formularul pentru care a fost apelat aceast metod; Requery reactualizeaz nregistrrile din formular (dac formularul are ca surs o interogare se reface aceasta); 127

SetFocus se cedeaz controlul formularului specificat mpreun cu metoda; Undo - toate modificrile fcute datelor afiate n formular se pierd. Dintre proprietile acestui obiect amintim: OpenArgs - ir de caractere care poate fi transmis ca parametru la deschiderea unui formular; RecordSource - numele unei tabele, interogri sau o fraza SQL ce are ca rezultat un set de nregistrri de care este ataat formularul; RecordSelectors stabilete apariia marcatorului de nregistrare pe formular (TRUE) sau dezactivarea acestuia (FALSE); DataEntry - formularul este deschis numai pentru introducerea de nregistrri noi; AutoCenter - formularul este afiat pe centrul ecranului; AutoResize - formularul se redimensioneaz pe ecran automat, astfel nct sa se vad tot coninutul s u; Caption - ir de caractere afiat n bara de titlu a ferestrei formularului; ControlBox seteaz activarea (TRUE) sau dezactivarea (FALSE) butoanelor de control ale ferestrei formularului; NavigationButtons - seteaz activarea (TRUE) sau dezactivarea (FALSE) controlului pentru deplasarea ntre nregistrrile unui formular; Toolbar - indic bara de instrumente (Toolbar) afiat o dat cu formularul; Controls - reprezint colecia de controale de pe un formular.

6.11 Programa rea dirijat de evenimente n ACCESS 2000


Prin generalizarea utilizrii interfe elor user friend, puternic interactive, se poate vorbi de programare dirijat de evenimente n Access n contextul formularelor, rapoartelor i controalelor de pe un formular/raport sau seciunile acestora. Exemple de evenimente n Access 2000 pot fi: deschiderea unui formular/raport, nchiderea unui formular/raport, scrierea unei nregistrri ntr -o tabela, tergerea unei nregistrri dintr -o tabela, dublu clic pe mouse, activarea unui buton de comanda, o eroare etc. Pentru obiecte, pentru toate evenimentele din Access, sistemul prevede proceduri sau func ii. Ele pot fi particularizate de ctre programatorii de ineterfe e prin inserare de cod. Astfel de exemplu, la evenimentul de deschidere a unui for mular se poate ataa o procedur/funcie care sa testeze dac un anumit utilizator are drepturi de utilizare a acestuia sau nainte de salvarea unei nregistrri ntr - o tabel se poate ataa o procedura care sa verifice respectarea anumitor corelaii dintr e date etc. 128

Pentru a particulariza o procedur a unui eveniment legat de un obiect trebuie parcurse urmtoarele etape: se afiaz Foaia de proprieti ; se selecteaz seciunea Event ; se selecteaz evenimentul la care se dorete ataarea procedurii ; cli ck pe butonul pentru editarea procedurii respective. Sistemul deschide n editorul VBA o procedur de tip Sub sau Function cu numele compus din numele obiectului legat de numele evenimentului prin semnul _ . Pentru un obiect formular ( Form) principalele evenimente sunt: OnClose : se produce la nchiderea i tergerea de pe ecran a formularului, OnLoad : se produce la deschiderea formularului, n momentul n care o nregistrare din tabela sau interogarea ataata formularului (n proprietatea Record Sour ce) este afiat pe ecran, OnCurrent : se declaneaz atunci cnd o nregistrare din tabela sau interogarea ataat formularului devine nregistrare curent. Pentru controale dintre evenimentele caracteristice acestora se pot enumera: OnClick :se declaneaz n momentul n care se activeaz butonul mouse ului, OnDblClick : se declaneaz n momentul n care se activeaz de dou ori butonul mouse-ului (la dublu clic), OnMouseMove : se declaneaz n momentul n care utilizatorul mut mouse ul pe deasupra c ontrolului unde se trateaz acest eveniment, OnChange : se declaneaz atunci cnd coninutul unui control caset de text (Text Box) sau list derulant (Combo Box) se modific.

Exerci iu:
Redm un exemplu n care, ntr - un formular sunt plasate dou dre ptunghiuri: caset1 i caset2 . Pentru nceput colorm fondul pentru caset1 cu rosu, iar pentru caset2 cu albastru. Particularizm procedurile de evenimente astfel: la clic pe caset1 formularul s devin ro u; la clic pe caset2 formularul s devin al bastru; la clic pe formular , acesta s devin gri;

129

la dublu-clic pe caset1 , caseta s devin lila.

O alt grupare a principalelor evenimente ar putea fi redat in tabelul de mai jos: Tip de eveniment

Nume
Utilizatorul

Apare cnd
realizeaz o aciune cu formularul sau raportul Exit, Obiectul primete sau pierde focalizarea sau devine activ respectiv inactiv

de fereastr Close, Load, Open, Resize, Unload de focalizare Activate, Deactivate, Enter,

GotFocus, LostFocus AfterDelConfirm,AfterInsert, AfterUpdate,BeforeDelConfirm,

de date

BeforeInsert,BeforeUpdate, Change,Current,Delete, Update Click, DblClick, NotInList, MouseDown,

Se

fac

modificri

ale

datelor

sau

nregistrrilor

de mouse

MouseMove, MouseUp

Apare o aciune cu mouse -ul Utilizatorul apas taste sau folosete

de tastatur KeyDown, KeyPressed, KeyUp

funcia SendKeys pentru transmiterea unei aciuni Un raport este tiprit sau este formatat n vederea tipririi Creat de Access la intervale de timp definite de utilizator

de tiprire de ceas

Format, Print, Retreat Timer

130

de eroare

Error

Apare odat cu o eroare i d posibilitatea utilizatorului s o trateze

Atunci cnd utilizatorul deruleaz o operaie, Access - ul lanseaz o secven de evenimente. Aa se ntmpl pentru diversele operaii ca re pot fi executate de operatori. Programatorii pot s modifice sau nu aceste evenimente, VBA le ofer ca potenial de particularizare. n tabelul urmtor redm succesiunile de evenimente ocazionate de diferite operaii: Operaie Succesiune de evenimente
Deschiderea unui formular cu controale active Deschiderea unui formular fr controale active nchiderea unui formular cu controale active nchiderea unui formular fr controale active Intrarea ntr -un control Ieirea dintr -un control controale active Cumutarea ntre dou formulare F1 i F2 fr LostFocus(F1), Deactivate(F1), GotFocus(F2), controale active Modificarea unui text ntr - o caset combinat, pentru fiecare caracter introdus: Actuali zarea datelor ntr - un control sau nregistrare KeyDown, KeyPressed, Change, KeyUp, BeforeUpdate, AfterUpdate, Exit nserarea unei nregistrri, la intrarea n primul KeyDown, KeyPressed, BeforeInsert, Change, control control Stergerea uneinregistrri Delete, Current, BeforeDelConfirm i dac se apas Yes se mai face i AfterDelConfirm KeyUp nserarea unei nregistrri, la ieirea din ultimul BeforeUpdate, AfterUpdate, AfterInsert Activate(F2) text sau KeyDown, KeyPressed, Change, KeyUp Open, Load, Resize, Activate, Current Open, Current Unload, Deactivate, Close Unload, LostFocus, Deactivate, Close Enter, GotFocus Exit, LostFocus Load, Resize, Activate, GotFocus,

Cumutarea ntre dou formulare F1 i F2 cu Deactivate(F1), Activate(F2)

6.12 Accesul cu programele la obiectele bazei de date


Obiectele bazelor de date pot fi accesate cu ajutorul extensiilor API ale limbajelor de programare. n continuare vom prezenta cateva aspecte ale posibilitilor prin care se rezolv aceast problem cu VBA. 131

Deja am dat cteva exemple n acest sens n subcapitolele ante rioare. Obiectele bazelor de date Access sunt structurate n ierarhii: ADODB (ActiveX Data Objects), ADOX (Microsoft ADO Extensions for DLL and Security) i JRO (Microsoft Jet and replication Objects). Pentru exploatarea datelor se folosesc obiectele ADODB iar pentru definiia datelor se folosesc obiectele ADOX. ADODB este un model ierarhic de obiecte, Catalog redat n figura alturat. Tables Table Casetele gri reprezint obiecte, iar Columns Column Properties Propert casetele albe colecii de obiecte. y Indexes Index Specificarea unui obiect aparinnd unei Columns Column colecii se p oate face conform uneia dintre Properties Propert urmtoarele variante: Keys Key y nume_colecie![nume_obiect] fiind nevoie Columns Column Groups Group Properties Propert de paranteze drepte numai dac nu mele y Users User obiectului conine spa ii; User Users nume_colecie("nume_obiect") ; Groups Group nume_colecie(index_obiect) index care Procedure Procedur s e Commmand indic poziia n coleci e a unui obiect. Views View Aceste numere de ordine ncep de la zero. Commmand ADOX este o c olecie de obiecte produse de Microsoft pentru definirea i crearea structurilor bazelor de date i a securitii acestora, redat n figur. Specificarea unui obiect aparinnd unei colecii se poate face n mod similar specificrii obiectelor n cazul ierarhiei ADODB. Cel mai important obiect din ADODB este obiectul Connection care definete o sesiune de lucru pentru un utilizator al unei date particulare. Cum am mai spus, se pot folosi n principal, informa ii din baze de date Access, SQL Server sau MSDE. Pentru a ne conecta la baza de date, Data Source=C: \My Documents\ bdNelu.accdb, trebuie scris urmtorul cod: '--------------------------------------Public Sub conexiune() Dim con As ADODB.Connection ' realizeaz o conectare con.ConnectionString = "Provider=Microsoft.Access.OLEDB.10.0;" _ & "Data Provider=Microsoft.ACE.OLEDB.12.0"; & _ "Data Source=C:\My Documents\bdNelu.accdb " con.Open MsgBox con.ConnectionString set con= Nothing End Sub 132

Deci trebuie declarat o variabil pentru obiectul conexiune. Apoi trebuie precizat coninutul iniial al irului conexiunii, care conine valorile pentru proprietile conexiunii. Pentru a realiza conexiunea s unt obligatorii specificarea proprietii Provider, Data Source i User. ns de cele mai multe ori se lucreaz cu datele din baza de date curent. n consecin codul se simplific astfel: '--------------------------------------Public Sub conexiune() Dim con As ADODB.Connection ' realizeaz o conectare Set con = CurrentProject.Connection MsgBox con.ConnectionString set con= Nothing End Sub Se observ c nici mcar nu trebuie dat comanda Open pentru conexiunile la datele proiectului curent. Pn aici s - a prezentat doar prima chestiune care trebuie rezolvat n lucrul cu datele. Obiectul care conine informaiile care vor fi procesate de rutine este mulimea de nregistrri (n limba englez: RecordSet ). Pentru iniializarea lucrului cu o mulime de nregistrri se utilizeaz urmtoarea secven de instruciuni: Dim m as RecordSet set m = New ADODB.RecordSet m.Open Surs, Conexiune, TipCursor, TipBlocare, Opiuni " m " este numele variabilei prin care se face referire la mulimea de nregistrri, iar ultima linie, bineneles c este prezentat ca ca sintax pe care o vom explica. Parametrul " surs " poate fi numele unui tabel sau numele unei interogri, comenzi, intuciuni SQL sau procedur ce are rezultat o mulime de nregistrri. Despre " conexiune " am scris puin nainte. Parametrul " tipcursor " poate fi specificat cu urmtoarele constante predefinite: adOpenDynamic, adOpenKeyset, adOpenStatic sau adOpenForwardonly. Diferenele ntre aceste tipuri de cursoare apar de la modul cum e tr atat nregistrarea referit la un moment dat, deplasarea prin nregistrri sau posibilitatea de a se seziza modificrile fcute de ali utilizatori. Numele lor sugereaz oarecum despre ce e vorba. 133

Parametru "tipblocare" se refer la modul de tratare a nregistrrilor pe timpul editrii lor, posibilitatea de acces la ele a altor utilizatori. Constantele predefinite care stabilesc acest parametru sunt: adLockReadOnly, adLockPessimistic, adLockOptimistic i adLockBatchOptimistic. Implicit ultimii doi param etrii sunt dai de constantele: adOpenForwardonly i respectiv adLockReadOnly. Pentru parametrul opiuni se pot folosi urmtoarele constante VB: adCmdText, adCmdTable, adCmdTableDirect, adCmdStoredProc, adCmdUnknown i adCmdFile care precizeaz modul cum este evaluat parametrul "surs". Acestea fiind precizate putem s trecem la prezentarea unor exemple mai edificatoare. Pentru trecerea de la o nregistrare la alta ntr - o mulime de nregistrri (navigare) se folosesc metodele Move, MoveNext, MovePrevious, MoveFirst i MoveLast. '--------------------------------------Public Sub Navigare(tabel as string) Dim rs As ADODB.Recordset Dim con As ADODB.Connection Set con = CurrentProject.Connection Set rs = New ADODB.Recordset with rs .CursorType = adOpenStatic .CursorLocation = adUseClient .Open tabel, con, , , adCmdTable If .RecordCount > 0 Then .MoveFirst Do For i = 0 To .Fields.Count - 1 Debug.Print .Fields(i).Value; Next Debug.Print .MoveNext Loop Until .EOF End If End With rs.close con.close set rs=nothing set con=nothing 134

End Sub Acest exemplu afieaz valorile cmpurilor nregistrrilor unui tabel (dac exist cmpuri de tip obiect OLE rezultatul e imprevizibil). Apelul poate fi fcut din fereastra Immediate, acolo unde va afi a: S- a artat doar navigarea printre nregistrri, un proces ReadOnly. Pentru a se putea interveni cu actualizri trebuie s se fac apel la metodele .AddNew, .Update sau .Delete. Actualizrile practic sunt fcute dup o cutare prealabil a articolului n cauz. Fie un tabel "persoane" cu campurile marca i nume . Scriem o procedur care va cuta articolul cu marca 50. Dac tabelul este indexat ctarea se poate face cu metoda .Seek altfel cu metoda .Find. O vom folosi pe aceasta din urm, dar atenie este mai lent i folosirea ei repetat ncetinete lucrul. Metoda .Find are urmtoarea sintax: Recordset.Find condiie, articolesarite, sens, articolstart Parametrul "c ondiie" e evident. "articolesarite" specific un numr de articole din vecintatea articolului de unde se ncepe cutarea care nu sunt verificate (implicit 0). "sens" poate fi adSearchForward sau adSearchBackWard (implicit n fa). nceput poate fi primu l articol, ultimul sau articolul curent (implicit). Procedura este urmtoarea: '--------------------------------------Public Sub Modificare_Stergere() Dim rs As ADODB.Recordset Dim con As ADODB.Connection dim sirdate as String Set con = CurrentProject.Connection Set rs = New ADODB.Recordset with rs 135

.CursorType = adOpenStatic .CursorLocation = adUseClient .Open "persoane", con, adOpenStatic, _ adLockOptimistic, adCmdTable .Find "marca=50" If Not .Eof Then sirdate="" For i = 0 To .Fields.Count - 1 sirdate =sirdate & .Fields(i).Value Next Dim rasp rasp = InputBox("articolul cautat este" + vbCr _ +sirdate + vbCr + "m- modificare, d -stergere", "m") If lCase(rasp)="d" Then .Delete Else .Fields("Marca")=InputBox( _ "Alt valoare pentru Marca") .Fields("Nume")=InputBox( _ "Alt valoare pentru Nume") .Update End If End If End With rs.close con.close set rs=nothing set con=nothing End Sub Ce operaii se realizeaz? Dup iniializri se caut articolul cu marca = 50 si se afieaz coninutul lui. Apoi operatorul e ntrebat dac dorete s modifice sau s tearg articolul. Pentru tergere se utilizeaz metoda .Delete. Pentru modi ficare se citete valori noi pentru cele dou c \ mpuri i apoi se utilizeaz metoda .Update. Pentru adugarea unei noi nregistrri se poate folosi procedura: '--------------------------------------Public Sub adugare() Dim rs As ADODB.Recordset Dim con As ADODB.Connection 136

Set con = CurrentProject.Connection Set rs = New ADODB.Recordset with rs .CursorType = adOpenStatic .CursorLocation = adUseClient .Open "persoane", con, adOpenStatic, _ adLockOptimistic, adCmdTable .AddNew .Fields("Marca")=InputBox( _ "Alt valoare pentru Marca") .Fields("Nume")=InputBox( _ "Alt valoare pentru Nume") .Update End With rs.close con.close set rs=nothing set con=nothing End Sub Reamintim c la deschiderea unei mulimi de nregistrri ca surs se poate lua i o interogare de selecie ca i comand sau o interogare de selecie salvat, s.a.m.d. Din proceduri VBA se pot lansa i interogri de tergere, actualizare sau adgare cu ajorul comenzii .Execute. Pn acum, n aceast seciune am prezentat exemple de folosire a obiectelor ADODB. n continuare vom analiza folosirea obiectelor ADOX pentru definirea i crearea structurilor de baze de date. Procedura urmtoare creaz un tabel cu numele "colaboratori" ce are dou cmpuri "Marca" i "Nume" n baza de date: C: \doros\Ang.accdb Sub CreareTabelPrinVBA() On Error GoTo CreateTableError Dim tbl As New Table Dim cat As New ADOX.Catalog ' Deschide catalogul bazei de date cat.ActiveConnection = "Provider=Microsoft.Access.OLEDB.10.0;" _ & "Data Source=C:\doros\Ang.accdb;" _ & "Data Provider=Microsoft.ACE.OLEDB.12.0" tbl.Name = "colaboratori" tbl.Columns.Append "Marca", adInteger 137

tbl.Columns.Append "Nume", adVarWChar, 50 cat.Tables.Append tbl Debug.Print "Table 'MyTable' is added." 'eliberarea memoriei obiectelor Set cat.ActiveConnection = Nothing Set cat = Nothing Set tbl = Nothing Exit Sub CreateTableError: Set cat = Nothing Set tbl = Nothing If Err <> 0 Then MsgBox Err.Source & "-->" & Err.Description, , "Error" End If End Sub Odat create tabelele, structura lor poate fi modificat. Se pot aduga noi coloane, se pot terge dintre cele existente se pot modifica dintre atributele lor, etc. Pr incipalele tipuri de coloane care trebuie precizate la instruciunea .Column.Append sunt: Constant Codul Description
adBinary adBoolean adUnsignedTinyInt adCurrency adDate adDouble adGUID adInteger adLongVarBinary adLongVarChar adNumeric adSmallInt adSingle adVarWChar 128 11 17 6 7 5 72 3 205 201 131 2 4 202 Binary Boolean Byte Currency Date/Time Double GUID Long Long Binary (OLE Object) Memo Numeric Integer Single Text

ADOX conine obiecte i pentru creare sau modificare de indeci, creare sau modificare de interogri, creare de indeci. n fine, urmtorul exemplu modific comanda SQL a unei interogri stocate n baza de date: 138

'--------------------------------------Public Sub ADOXSchimbSQL() Dim cat As New ADOX.Catalog Dim cmd As New ADODB.Command ' Deschiderea catalogului de tabele ale bazei de date cat.ActiveConnection = CurrentProject.Connection ' Accesarea interogrii Set cmd = cat.Procedures(1).Command ' Modificarea comenzii cmd.CommandText = "SELECT * FROM ANG;" ' Salcvarea noii comenzi Set cat.Procedures(1).Command = cmd Set cat = Nothing Set cmd = Nothing End Sub

139

CAPITOLUL VII. NDRUMAR PENTRU REALIZAREA

PROIECTULUI LA DISCIPLINA BAZE DE DATE


7.1. Cerine minimale
Studenii anului II, de la specializrile Finane i bnci i Management, trebuie s ntocmeasc, la finalul semestrului I, anul II de studii, la disciplina Baze de date, un proiect prin care s demonstreze posibilitatea folosirii produsului MS ACCESS n gestionarea bazelor de date . Pentru disciplina Baze de date, nota final obinut de un student este compus din: 1 punct din oficiu; Max. 3 puncte pentru activitatea din timpul semestrului la aceast disciplin; Max. 3 puncte pentru susinerea proiectului; Max. 3 puncte pentru s usinerea examenului final. Dac un student nu susine corect acest proiect, va fi declarat restanier la aceast disciplin. Proiectul va conine o baz de date tip MS Access compus din urmtoarele obiecte: Cel puin 2 tabele ntre care s existe relaii; Formulare de introducere de date n aceste tabele; Diverse interogri bazate pe aceste tabele; Rapoarte pentru listarea informaiilor coninute n tabele. Baza de date va fi salvat pe un CD sau FD i obiectele precizate n paragraful anterior trebu ie s fie funcionale. Studentul va prezenta mpreun cu baza de date o documentaie a coninutului, listat i ndosariat (cca 10 - 15 pagini), structurat pe urmtoarele capitole: Motivaia lucrrii; Descrierea datelor i variabilelor utilizate; Descrierea machetelor pentru formularele de introducere de date; Descrierea machetelor pentru rapoartele de listare a informaiilor coninute n tabele; Listingul i explicaia diverselor interogri sau module utilizate; Concluzii trase dup realizarea proiectului i propuneri de perfecionare.

140

Cerinele prezentate mai sus pentru baza de date i pentru documentaia aferent sunt obligatorii i minimale.

7.2. Baza de date


a. Tabelele
Tabelele cuprinse n baza de date trebuie s se refere la un domeniu concret i s cuprind date necesare pentru rezolvarea unei probleme. Redm, n continuare, cteva exemple de posibile teme: gestiune depozit de materiale, ntocmire balan i fie ; eviden ncasri de la clieni, ntocmire balan i fie ; evidena plilor ctre furnizori, ntocmire balan i fie ; evidena numerarului, ntocmire registru de cas ; evidena contului curen t, reconstituire extras de cont; gestiune chioc de nchiriat filme ; evidena cheltuielilor de scar ; evidena bonurilor de materiale ; eviden a invitaiilor la un teatru ; evidena contribuiei artitilor la spectacole ; evidena vnzrilor biletelor de avion ; evidena vanzrilor biletelor de tren ; evidena articolelor contabile i ntocmirea balanei i fielor ; evidena mainilor dintr -un parc auto; evidena mijloacelor fixe ; evidena obiectelor de inventar ; eviden de oferte i cereri la o agenie imobiliar ; registru de intrri i ieiri la un secretariat ; evidena enoriailor unei parohii ; evidena notelor studenilor ; registru de nmatricu lare; fie de bibliotec ; ocuparea camerelor ntr -un hotel; ocuparea camerelor ntr - un cmin ; evidena bolnavilor ntr - o clinic ; evidena membrilor unui club

141

Tema problemei de rezolvat este aleas de student, nu neaprat din list i se va aprecia orig inalitatea. Este recomandabil, ca studenii s - i aleag teme cu care au avut tangen n experiena lor profesional. Bazele de date vor fi relaionale, normalizate mcar pn la forma normal 3 i vor conine informaii neredundante. Deci, este inc orect ca s existe dou tabele cu urmtoarea structur: Catalog Rulaj Cod Nume Pre Cod Nume Data Cantitate TipOperatie d eoarece al doilea tabel conine informaii redundante (cmpul Nume ) i nu respect a doua regul de normalizare care necesit ca fiecare coloan care nu este cheie s depind complet de cheia primar, nu doar de o parte a cheii. (cmpul Nume depinde numai de cmpul Cod , nu de combinaia Cod+Data , care constituie cheia primar). Nu este corect nici un tabel de forma: TaxeStuden i Nr. Matricol Nume Rata1 Rata2 deoarece conine o list de cmpuri i nu e n forma normal 1.

Rata2

b. Interogrile
Prin obiectele create, studentul va face dovada c nelege diversele tipuri de interogri: de extragere (SELECT cu toate clauzele), de inserare (INSERT), de modificare (UPDATE) i de tergere (DELETE). Cele mai importante interogri ale proiectului vor fi cele care se refer la datele din mai multe tabele, simultan.

c. Formularele
Formularele create trebuie s conin posibiliti de introducere a tuturor datelor definite n 142

tabele. Atunci cnd e necesar s se introduc date prin exploatarea unor relaii dintre tabele, se va apela la tehnica modulelor Visual Basic, a interogrilor (de tip join) sau a subformularelor. Mai mult de jumtate din numrul formularelor din proiect, trebuie s nu fie create cu expertul. n formulare se vor plasa controale de urmtoare tipuri: Etichete; Casete text; Casete combo; Imagini, linii sau dreptunghiuri; B utoane de comand. n figurile de mai sus sunt prezentate cteva exemple de formulare . Se va aprecia pozitiv, existena n proiect, a unui formular care monitorizeaz funcionarea obiectelor proiectului.

d. Rapoartele
Rapoartele trebuie s poat lista toate informaiile din tabele, sub diferit e forme, n diferite moduri ordonare sau de grupare. Mai mult de jumtate din numrul rapoartelor din proiect, trebuie s nu fie create cu expertul. Atunci cnd e necesar listeze date prin exploatarea unor relaii dintre tabele, se va apela la tehnica i nterogrilor (de tip join). n rapoarte se vor plasa controalele urmtoare: Etichete; Casete text; Imagini, linii sau dreptunghiuri. Cel puin ntr - un raport, se vor plasa cmpuri care vor conine valori rezultate ale funciilor de grupare. n figura de mai jos prezentm un exemplu de raport:

143

7.3. Documentaia
Studentul va prezenta mpreun cu baza de date o documentaie a coninutului, listat i ndosariat (cca 10 - 15 pagini), structurat pe urmtoarele seciuni: motivaia lucrrii; descrierea datelor i variabilelor utilizate; descrierea machetelor pentru formularele de introducere de date; descrierea machetelor pentru rapoartele de listare a informaiilor coninute n tabele; listingul i explicaia diverselor interogri sau module utilizate; concluzii trase dup realizarea proiectului i propuneri de perfecionare. Studenii vor trebui s respecte ntocmai structura acestei documentaii, dar n redarea ei nu este obligatoriu s se recurg la formulrile stricte redate mai jos, ca model. n documentaie nu vor fi redate elemente teoretice, ci vor fi prezentate succint elementele coninute n proiect. Prima pagin a dosarului va avea urmtorul format: 144

ACADEMIA COMERCIAL SATU MARE

PROIECT LA DISCIPLINA BAZE DE DATE Folosirea MS ACCESS n gestionarea unei baze de date coninutul bazei de date . Autor student:
numele studentului, anul i specializarea .

a. Motivaia lucrrii

- Satu Mare 2010

n aceast seciune se pot prezenta elemente precum cele redate n modelul de mai jos:
coninutul bazei de date Acest proiect este destinat gestionrii , menirea organizaiei ntr - o organizaie , pentru angajaii si de la numele compartimentului sau biroului compartimentul . Proiectul este realizat cu ajutorul aplicaiei MS Access Office 2003. Pentru funcionarea lui sunt necesare: numrul i pregtirea angajailor, numrul de calculatoare, alte resurse de hard sau soft, etc

b. Descrierea datelor i variabilelor utilizate


n aceast seciune vor fi prezentate sau explicate: toate cmpurile tabelelor, natura, tipul, dimensiunea i restriciile informaiilor pe care le stocheaz; cmpurile calculate ale interogrilor; variabilele calculate ale controalelor din formulare sau rapoarte. De exemplu, pentru un tabel cu numele Sahisti, cu informaii despre sportivii legitimai, se va explica structura, dup modelul urmtor: Structura de tabel pentru tabelul sahisti 145

Camp NrCarnet

Tip ntreg lung text (50)

Nul Explicaii despre coninut Da Numrul legitimaiei are 6 cifre, e necesar o variabil de tip ntreg lung, valori pozitive

Nume

Numele sportivului, nu depete 50 caractere, cu litere mari, Da fr diacritice. Dac sunt mai multe cuvinte, ntre ele se intercaleaz cratim Toate prenumele pe care le are sportivul, nu depete 70 Da caractere, cu litere mari, fr diacritice. Dac sunt mai multe cuvinte, ntre ele se intercaleaz cratim Una dintre valorile M pentru sexul masculin, sau respectiv, F pentru sexul feminine

text Prenume (70) Sex Nascut

text (1) Da date

Da Data neterii sportivului, n format zz.ll.aaaa

Titlu

Titlul sau categoria sportiv. Pentru sportivii de sex masculi ne sunt posibile valorile: NC neclasificat, III categoria a III- a, II categoria a II- a, I categoria a I-a, text (3) Da CM candidat de maestru, M maestru, FM maestru FIDE, MI maestru internaional, GM mare maestru internaional. Pentr u sportive sunt posibile valorile corespunztoare: WCM, WM, WFM, WMI, WGM. Coeficientul valoric al sportivului. Poate lua valori ntre 401 i 1400, cnd e calculat de federaia naional, sau valori Da ntre 1401 i 2900, cnd e calculat de federaia internaional, Valorile pot fi stocate ntr - un numr ntreg pozitiv (pe doi octei) Numele ntreg (inclusive calea de directoare) a fiierului acre Da conine imagine pozei sportivului. E recomandat s existe un camp cu l rgime considerabil. Codul acordat de federaia internaional pentru sportiv. Are Da 7 cifre, e necesar o variabil de tip ntreg lung, valori pozitive.

CIV

ntreg

Poza

text (100) ntreg lung

IdFide

c. Descrierea machetelor pentru formularele de introducere de date sau a rapoart elor de ieire
n aceste seciuni vor fi prezentate sau explicate formularele (sau rapoartele) folosite. n documentaie formularele i rapoartele vor fi prezentate distinct, n seciuni separate. 146

Machetele corespunztoare formularelor (sau rapoartele) vor fi captate cu ajutorul tastei PrintScreen i inserate n documentaie. Se vor prezenta toate controalele incluse n fiecare formular (sau raport). Se vor prezenta toate proprietile, metodele i evenimentele la care s - a intervenit cu modificri, la nivel global pentru formular (sau raport), sau pentru fiecare control n parte. De exemplu: Primul formular este destinat, dup cum are i numele, completrii tabelului CATALOG. Este un formular simplu, finisrile care s - au fcut sunt: scoaterea butoanelor de navigare; introducerea unui combobox pentru selectarea articolelor dup nume; introducerea a 4 butoane de comenzi pentru tergere, salvare, res taurare i adugare articole.

d. Listingul i explicaia diverselor interogri sau module utilizate


Pent ru fiecare dintre interogrile create se va explica ce realizeaz, se va afia comanda SQL i, n cazul interogrilor de selecie, se va prezenta schiat macheta rezultatului. De exemplu: Interogarea urmtoare listeaz numele i salariul oferilor din ta belul Ang: Select NumeA, Sal from Ang where fnc=SOFER Extragere SOFERI numeA Popan Matus Chivu sal 800 1100 950 147

Dac proiectul conine module VisualBasic, sursele acestora vor fi listate i explicate.

e. Concluzii trase dup realizarea proiectului i propuneri de perfecionare


n cteva fraze vor fi redate: limitele proiectului realizat; constrngerile pe care le suport; posibilitile de mbuntire i de extindere.

148

BIBLIOGRAFIE

Doros, I.. Societatea informaional. Oraul virtual-Editura Gutenberg Arad-2009 Doros, I., Popei, V. Dictionar pentru utilizatorii de calculatoare personale - Editura Dacia Cluj-Napoca-2007 Doros, I., Todor., L, Ardelean, A.E., Tulbure, C. Informatica pentru utilizatorii de calculatoare personale - Editura Dacia Cluj-Napoca-2005 Lungu, I., Sabu, Gh. ,s.a. Sisteme informatice. Analiz, proiectare i implementare, Editura Economic, Bucureti 2003 Muntean, D.V., Andreica, A., Todor, L.S., Doros, I. Bazele informaticii. Aplicaii- Editura Gutenberg Arad-2009 Nstase,P., Mihai,F. Baze de date Microsoft Access 2000 , Editura Teora, Bucureti 2003 Sabu,G.,Muntean,M., Dardal,M.,Bologa,R., Bologa, A.R. Baze de date, Editura MatrixRom, Bucureti 2008 Velicanu, M.-Baze de date prin exemple- Editura ASE Bucureti -2007

*** http://office.microsoft.com/ro-ro/access - pagin web a prodului Access

149

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