+ All Categories
Home > Documents > Carte Baze de Date

Carte Baze de Date

Date post: 05-Jul-2015
Category:
Upload: livia-butiu
View: 1,298 times
Download: 8 times
Share this document with a friend
222
Cornel GIULVEZAN Gabriela MIRCEA Diana T ÂRN ĂVEANU Timişoara, 2008
Transcript
Page 1: Carte Baze de Date

Cornel GIULVEZANGabriela MIRCEADiana TÂRNĂVEANU

Timişoara, 2008

Page 2: Carte Baze de Date

2

Page 3: Carte Baze de Date

3

REFERENŢI ŞTIINŢIFICI:Prof. univ. dr. Mihaela MUNTEANProf. univ. dr. Ioan BANDU

Page 4: Carte Baze de Date

4

Page 5: Carte Baze de Date

5

Page 6: Carte Baze de Date

6

CUPRINS

CUPRINS 5OBIECTIVELE CURSULUI 9PARTEA TEORETICĂ 11Cap.1. INTRODUCERE 11

1.1. Rezumatul capitolului 111.2. Conceptele de Dată şi Fişier 111.3. De ce baze de date? 151.4. Autoevaluare 17

Cap.2. BAZE DE DATE – CONCEPTE 192.1. Rezumatul capitolului 192.2. Conceptul de bază de date 192.3. Modelarea baze de date 212.4. Obiectivele datelor în baze de date 242.5. Sisteme de gestiune a bazelor de date 272.6. Funcţiunile sistemului de gestiune al bazei de date 302.7. Componentele unui mediu SGBD 322.8. Limbaje pentru baze de date 342.9. Proiectarea bazei de date 352.10. Modelul de date relaţional 392.11. Întrebări teoretice de auto-evaluare 48

CAP.3. MICROSOFT ACCESS 513.1. Rezumatul capitolului 513.2. Noţiuni generale privind bazele de date ACCESS 513.2. Tipuri de fişiere în ACCESS 553.3. Lucru cu ACCESS 553.4. Noţiuni practice în ACCESS 573.5. Întrebări teoretice de auto-evaluare 81

CAP.4. LIMBAJUL VISUAL BASIC PENTRU APLICAŢII 834.1. Rezumatul capitolului 834.2. Macro-comenzi sau VBA? 834.2. Mediul de dezvoltare pentru VBA (IDE) 844.3. Configurarea editorului VBA 894.4. Completarea automată a instrucţiunilor în editorul VBA 894.5. Modelul obiect din ACCESS 914.6. Principiile utilizării obiectelor şi colecţiilor 944.7. Crearea de referinţe pentru obiecte 984.8. Crearea unei proceduri în VBA 98

Page 7: Carte Baze de Date

7

4.9. Elementele limbajului VBA 1004.9.1. Variabile, constante şi tipuri de date 1004.9.2. Structurile de decizie şi selecţie 1074.9.3. Operatori în VBA 1124.9.4. Instrucţiuni utilizate cu obiecte în VBA 1144.9.5. Regulile de scriere a codului sursă VBA 1204.9.6. Numele procedurilor, variabilelor şi constantelor 1214.9.7. Clase de obiecte în VBA 1224.9.8. Exploratorul de obiecte în ACCES 1274.9.9. Gestionarea evenimentelor în ACCESS 1304.9.10. Proprietăţi şi metode ale obiectelor ACCESS 1374.10. Recomandări pentru optimizarea codului VBA 1464.11. Întrebări de auto-evaluare 146

CAP.5. LIMBAJUL SQL 1495.1. Rezumatul capitolului 1495.2. Prezentarea limbajului SQL 1495.3. Limbajul SQL ŞI VBA 1505.4. Descrierea limbajului SQL 1515.5. Exemple de utilizare a interogărilor SQL 1585.6. Teste de auto-evaluare 160

CAP. 6. MANIPULAREA OBIECTELOR WORD ŞI EXCEL ÎNVBA 161

6.1. Rezumatul capitolului 1616.2. Tehnologia OLE 1616.3. Comunicarea cu Word 1636.4. Comunicarea cu EXCEL 1686.5. Protocolul DDE 1726.6. Întrebări de auto-evaluare 176

PARTEA PRACTICĂ 177Cap.7. Aplicaţii practice rezolvate 177

7.1. Rezumatul capitolului 1777.2. Aplicaţia 1 1777.2.1. Aplicaţie propusă 1847.2.2. Aplicaţie propusă 1857.3. Aplicaţia 2 1857.3.1. Aplicaţie propusă: 1927.4. Aplicaţia 3 1927.4.1. Aplicaţie propusă 1997.5. Aplicaţia 4 199

Page 8: Carte Baze de Date

8

7.5.1. Aplicaţie propusă 2027.6. Aplicaţia 5 2027.6.1 Aplicaţie propusă 206

GLOSAR DE TERMENI 207Bibliografie 213

Page 9: Carte Baze de Date

9

Page 10: Carte Baze de Date

10

OBIECTIVELE CURSULUI

Evoluţia diferitelor metode şi tehnici de organizare a datelor, pesuporturi tehnice adresabile (memorii externe), a fost determinată denecesitatea de a avea un acces cât mai rapid şi mai uşor la un volum cât maimare de date. Sistemele de gestiune a bazelor de date reprezintă modalitateaprincipală de structurare şi organizare a datelor în cadrul sistemelorinformatice. Obiectivul unei bazei de date este de a separa descrierea datelorfaţă de programele de aplicaţii, ajungîndu-se la abstractizarea datelormemorate. Obiectivele cursului sunt însuşirea noţiunilor fundamentale şiconceptelor de bază din domeniu, precum şi capacitatea de a iniţia, proiecta şiimplementa o bază de date. Ne propunem să răspundem la întrebările: ce este obază de date, cum este structurată aceasta, cum se proiectează? Pentru aceasta considerăm necesare:

înţelegerea impactului tehnologiilor informaţiei şi a comunicaţiilor(TIC) în societate, a conexiunilor dintre informatică şi alte obiecte destudiu, precum şi identificarea posibilităţilor de utilizare a SGBD-urilorîn disciplinele specializării de bază;familiarizarea cu instrumentele oferite de sistemele de gestiune abazelor de date (tabele, formulare, interogări, rapoarte, macro-uri,proceduri VBA);dezvoltarea abilităţii de a crea o aplicaţie user-friendly, cu o interfaţăgrafică atractivă;iniţierea în limbajul SQL – Structured Query Language;dezvoltarea unei culturi informatice.

Page 11: Carte Baze de Date

11

Page 12: Carte Baze de Date

12

PARTEA TEORETICĂ

CAP.1. INTRODUCERE

1.1. Rezumatul capitolului

Organizarea datelor în vederea prelucrării pe calculator este o activitatecel puţin la fel de importantă ca şi scrierea progamelor. În acest prim capitolvor fi prezentate noţiuni legate de modul de organizare a datelor, plecând de laconceptele de bază de „dată” şi „fişier”, prezentând o clasificare a datelor, atipurilor de structuri de date existente şi a organizării datelor în fişiere.

Sistemele informatice pot fi realizate fie cu ajutorul unor aplicaţii careutilizează fişiere independente sau integrate, fie cu ajutorul unor aplicaţii careaccesează o structură complexă numită bază de date. Sistemului informatic aredouă componente principale şi anume datele şi programele, acestea fiindîntr-o strânsă interdependenţă. O bază de date are mijloace proprii pentrucrearea şi evoluţia în timp a structurii, realizând o departajare între datelestocate şi programele care le accesează.

1.2. Conceptele de Dată şi Fişier

Apariţia şi dezvoltarea rapidă a bazelor de date se datorează uneimultitudini de factori de natură tehnică şi socio-economică. Creştereanecesarului şi implicit a consumului de informaţie a avut ca prim rezultatcreşterea cantităţii de informaţie stocată pe suporturi de memorare externă şioptimizarea tehnicilor de stocare şi regăsire a informaţiei.

Chiar de la primele aplicaţii informatice realizate cu ajutorulcalculatorului s-a pus problema utilizării unor tehnici eficiente de organizare,stocare şi regăsire a datelor. O informaţie codificată şi stocată pe un suport dememorare reprezintă ceea ce numim „dată”. Din punctul de vedere alprelucrării de calculator, în cadrul aplicaţiilor, datele se definesc cu ajutorulunui nume (identificator), a atributelor pe care le are şi de o valoare.Rezolvarea problemelor concrete cu ajutorul calculatorului presupune definireaunui algoritm adecvat pentru rezolvarea fiecărei probleme. Un algoritm estedefinit ca fiind o succesiune finită, corect definită şi fără ambiguităţi de operaţiielementare care se aplică asupra unei mulţimi de date de intrare pentru a seobţine un rezultat. Algoritmul trebuie sa conducă la acelaşi rezultat de fiecare

Page 13: Carte Baze de Date

13

dată când se aplică asupra aceleaşi mulţimi de date de intrare. Calculatorulprelucrează doar date reprezentate cu ajutorului unui cod binar, motiv pentrucare datele sunt din punctul de vedere al calculatorului şiruri de cifre binare, debiţi. Semnificaţia şirurilor de biţi depinde de codul pentru codificareainformaţiei, de modul de utilizare a acesteia de către programator în cadrulaplicaţiei informatice şi de limbajul de programare folosit. Fiecare limbaj deprogramare are reguli specifice pentru definirea şi utilizarea datelor.

Organizarea datelor reprezintă procesul de identificare, definire,evaluare, structurare şi memorare a informaţiilor, în cadrul unui sisteminformaţional. Prin organizarea datelor se realizează gruparea datelor în colecţiide date omogene, se stabilesc care sunt relaţiilor dintre date, dintre elementelecolecţiilor şi dintre colecţii, precum şi modul de stocare a datelor pe suportulfizic de memorare.

Datele pot fi clasificate în funcţie de modul de alocare al memoriei,astfel existând date de tip static şi date de tip dinamic. La datele de tip static,memoria este alocată la începutul execuţiei programului, rămânând ocupată derespectivele date pe întreaga durată a execuţiei, pe când la datele de tip dinamicmemoria este alocată în momentul execuţiei programului, existând instrucţiunicare permit alocarea memoriei atunci când datele sunt necesare şi alteinstrucţiuni care permit eliberarea respectivei zone de memorie în momentul încare datele nu mai sunt necesare.

Datele trebuie privite sub două aspecte: fizic şi logic. Din punct devedere fizic, în cazul stocării şi prelucrării cu ajutorul calculatorului datele suntşiruri de biţi. Din punct de vedere logic, datele au o anumită semnificaţie şi suntde mai mult tipuri, funcţie de semnificaţia lor.

Datele pot fi simple (elementare), respectiv compuse (structurate).Datele simple (elementare) sunt date independente unele de altele din

punctul de vedere fizic, adică al reprezentării pe suportul de memorare, chiardacă din punct de vedere logic există interdependenţe. Tipul de dată precizeazăcare sunt valorile datei. Dacă pe parcursul procesului de prelucrare datapăstrează aceeaşi valoare este numită dată constantă. Pentru datele constante seutilizează ca identificator valoarea acestora. Dacă valorile datei sunt modificateîn timpul procesului de prelucrare datele se numesc date variabile sauvariabile. În mod uzual pentru date elementare se folosesc ca tipuri de dată:

- tipul numeric – include numerele întregi, reale si complexe avânddiferite reprezentări (virgulă fixă, virgulă mobilă, precizie simplă,precizie dublă, etc.). Asupra lor se pot realiza operaţii de adunare,scădere, înmulţire, împărţire etc.;- tipul logic (boolean) – utilizat pentru reprezentarea valorilor logice“Adevărat”, respective “Fals” cu ajutorul unor valori numerice, asupra

Page 14: Carte Baze de Date

14

acestora putându-se efectua operaţii logice precum negaţia, conjuncţia,disjuncţia;- tipul caracter (text, string) – permite reprezentarea unor succesiuni decaractere folosind mulţimi de simboluri alfanumerice, reprezentarea pesuporturile de memorare utilizând codul ASCII. Asupra acestora se potdefini operaţii de căutare, concatenare, ordonare;- tipul dată calendaristică, timp (Date, Time, DateTime) –reprezentarea internă a acestora făcându-se de regulă cu ajutorul unorvalori numerice.Datele compuse numite şi structuri de date sunt colecţii (mulţimi) de

date elementare între care există relaţii structurale, omogene din punct devedere al descrierii şi al prelucrării. Componentele unei structuri formează unîntreg astfel încât prelucrarea se poate face atât la nivelul structurii de date câtşi la nivelul fiecărei componente, care poartă numele de câmp.

Majoritatea limbajelor de programare operează cu două categorii destructuri: structuri interne şi structuri externe.

Structurile de date interne se referă la modul de amplasare în memoriainternă a datelor elementare aparţinând unei colecţii. În această categorie suntincluse structurile de tip tablou (masiv), înregistrare (articol), mulţime, lista şiarbore.

Structurile externe se referă la modul de memorare a datelor pesuporturi de memorare externă. Din această categorie fac parte fişierele şibazele de date.

Datele, văzute iniţial ca şiruri de caractere, care reproduceaucaracteristicile unor obiecte, fenomene, fapte, evenimente, respectiv conceptedin lumea reală, datorită factorului de repetare au fost organizate în structuricare poartă numele de fişier. Fişierul este o structură care grupează datedintr-un anumit domeniu care au anumite caracteristici comune. Fişierele pot ficu organizare definită, respectiv nedefinită. Accesul la datele ce formeazăfişierul depinde de structura ce defineşte fişierul, adică de organizarea datelor şide suportul de memorare. Există doi parametrii ce măsoară performanţeleaccesului la date: cantitatea de date transferată şi timpul de răspuns. Suportulde memorare poate fi adresabil sau nu, poate fi reutilizabil sau nu, poate fimagnetic, optic sau de altă natură. Accesul la date poate fi secvenţial sau direct.Accesul direct este permis doar de suporturile de memorare adresabile, adicăacele suporturi de memorare care permit accesul direct pe baza unei adrese la oanumită zonă de pe suportul de memorare, numită locaţie sau bloc. Principiilede organizare a fişierelor şi tehnicile de regăsire a datelor stocate în fişierereprezintă o transpunere în cadrul aplicaţiilor informatice a tehnicilor utilizateîn sisteme de prelucrare manuală a informaţiei. Fişierul fiind o colecţie de date

Page 15: Carte Baze de Date

15

trebuie considerat ca având două structuri distincte suprapuse, şi anume, ostructură fizică şi una logică, cea logică fiind dată de semnificaţia datelor. Dinpunct de vedere fizic fişierul este o colecţie finită de înregistrări fizice, iar dinpunctul de vedere al semnificaţiei, o colecţie de înregistrări logice, numite şiarticole.

Fişierul ocupă un anumit spaţiu pe suportul de memorare extern, spaţiulalocat putând fi continuu sau nu. Componentele sistemului de operaregestionează în mod transparent alocarea fizică pe suportul de memorare externăprecum şi accesul la fişiere.

Din punctual de vedere al sistemului de operare fişierul are un nume şieventual o extensie de fişier, are asociată o mulţime de atribute care depind desistemul de operare (Read Only, Hidden, System, Archive, etc); informaţiiprivind momentul creării, al ultimei modificări, al ultimei accesări, privinddimensiunea ca număr de octeţi etc. Extensia oferă sistemului de operareinformaţii privind conţinutul fişierului.

Din punctul de vederea al aplicaţiilor fişierul are un conţinutinformaţional, un anumit mod de organizare, permite unul sau mai multemoduri de acces etc.

Datele într-un fişier sunt structurate în înregistrări. Organizareaînregistrărilor într-un fişier poate fi privită atât ca organizare logică cât şi caorganizare fizică.

Din punctul de vedere al organizării fizice datele ce formează fişierulsunt structurate în înregistrări fizice. Organizarea fizică reprezintă o organizareinternă care depinde de resursele fizice ale calculatorului şi este supusărigorilor sistemului de operare. Înregistrarea fizică reprezintă numărul de octeţicare se transferă între memoria internă a calculatorului şi suportul de memorareextern (scriere), respectiv de pe suportul extern în memorie (citire). Pentruoptimizarea transferului se folosesc zone de memorie numite zone tampon, saubuffer, prin intermediul cărora se transferă mai multe înregistrări fizice vecinecu înregistrarea de care este nevoie.

Din punct de vedere al organizării logice datele conţinute într-un fişiersunt structurate în înregistrări logice. În principiu, un fişier conţine acelaşi tipde înregistrări logice, dispuse într-o anumită ordine. Mulţimea înregistrărilorlogice conţinute într-un fişier reprezintă o mărime finită şi caracterizează, înmod direct, mărimea oricărui fişier.

Din punct de vedere al utilizatorului, înregistrarea logică reprezintă şiunitatea de acces la datele conţinute într-un fişier. Organizarea logică aînregistrărilor în fişier, ca mod de organizare externă a datelor, este impusă denatura aplicaţiilor şi cerinţele de prelucrare.

Page 16: Carte Baze de Date

16

Datele conţinute într-o înregistrare logică caracterizează o entitateinformaţională, se referă la o clasă de obiecte, fenomene, procese etc., în timpce datele ce formează o înregistrare fizică caracterizează o unitate de stocarefizică pe suportul de memorie a calculatorului. Utilizatorul operează cuconcepte, privind organizarea datelor, la nivel logic, în vreme ce sistemul deoperare stochează şi manipulează datele, pe suportul de memorie, numai lanivel de înregistrare fizică. În funcţie de natura şi complexitatea datelor,lungimea unei înregistrări logice poate să corespundă sau nu cu lungimea uneiînregistrări fizice. O înregistrare fizică poate să conţină mai multe înregistrărilogice, respective o înregistrare logică poate fi stocată în mai multe înregistrărifizice.

1.3. De ce baze de date?

Totalitate informaţiilor care definesc şi menţin în funcţiune un sistemreal formează sistemul informaţional al sistemului real, iar în cadrul sistemuluiinformaţional putem delimita sistemul informatic, care reprezintă acea parte asistemului informaţional în care informaţia este stocată şi procesată cu ajutorultehnicii de calcul. Sistemele informatice pot fi realizate fie cu ajutorul unoraplicaţii care utilizează fişiere independente sau integrate, fie cu ajutorul unoraplicaţii care accesează o structură complexă numită bază de date. Baza de dateare mijloace proprii pentru crearea şi evoluţia în timp a structurii. Organizareadatelor în fişiere aparţinând fiecărei aplicaţii reprezintă o metodă rigidă care aremai multe dezavantaje pentru utilizatori. Cel mai mare dezavantaj este acela cămodificările în structura unui fişier obligă la modificarea tuturor programelorcare utilizează fişierul a cărui structură a fost modificată. Din punctul de vedereal utilizatorului sistemele bazate pe fişiere reprezintă un progres extraordinarfaţă de sistemele manuale, totuşi acestea fiind dependente de programele deaplicaţie, orice interogare necesită scrierea unui program şi integrarea acestuiaîn sistemul implementat, obţinerea de noi informaţii spontan fiind practicimposibilă.

Realizarea sistemelor informatice cu ajutorul aplicaţiilor independentepresupune ca fiecare astfel de aplicaţie să definească şi să întreţină propriilestructuri de date organizate de regulă în fişiere. În acest caz are loc separarea şiizolarea datelor, precum şi legarea acestora de fiecare aplicaţie. Datoritămodului de abordare descentralizat are loc o creştere a redundanţei datelor,adică datele vor fi multiplicate necontrolat. Redundanţa reprezintă o proprietatea unei colecţii de date care se referă la faptul că unele componente ale colecţiei

Page 17: Carte Baze de Date

17

de date sunt memorate de mai multe ori pe suportul de memorare. Multiplicareadatelor implică costuri suplimentare şi în plus, creşte riscul alterării integrităţiidatelor, adică apariţia de neconcordanţe. În cazul sistemelor reale complexecreşterea redundanţei are ca efect apariţia de erori frecvente datorateneconcordanţei informaţiilor memorate în fişiere aparţinând unor aplicaţiidiferite, rezultând costuri de actualizare mărite corespunzător.

Sistemului informatic are două componente principale şi anume dateleşi programele, acestea fiind într-o strânsă interdependenţă.

În codul program al fiecărei aplicaţii creat într-un limbaj de programareclasic se definesc structurile de date, atât cele interne ale aplicaţiei respectivecât şi structura logică a fişierelor utilizate de aplicaţia respectivă, împreună cumodul de acces la datele stocate în aceste fişiere. În cazul în care structuralogică a unei înregistrări este modificată prin adăugarea unui câmp, sauschimbarea dimensiunii unui câmp, toate programele care operează cu fişierul acărui structură a fost modificată trebuie actualizate. De asemenea oricemodificare a semnificaţiei, respectiv a modului de reprezentarea a informaţieirespective în sistemul real impune modificarea tuturor aplicaţiilor care folosescinformaţia respectivă, ceea ce reprezintă în cazul sistemelor informaticecomplexe un efort de programare considerabil, precum şi costuri ridicate.Această caracteristică a sistemelor bazate pe fişiere este cunoscută subdenumirea de dependenţă program-date. Deoarece structura fişierului esteîncorporată în programele de aplicaţie, ea este dependentă de limbajul în caresunt scrise programele în este realizată aplicaţia respectivă.

Atunci când datele sunt izolate în fişiere aparţinând unor aplicaţiiindependente, accesarea datelor de care este nevoie la un moment dat serealizează cu mare greutate deoarece programatorul trebuie să sincronizezeprelucrarea simultană a tuturor fişierelor aplicaţiilor, dificultatea crescând odatăcu numărul de fişiere. Structura fişierelor este încorporată în programele deaplicaţie, fiind dependentă de limbajul de programare folosit pentru fiecareaplicaţie. Mai mult chiar, fiecare interogare a fondului de date stocate înfişierele independente se realizează doar prin intermediul programelor deaplicaţie, interogarea fiind dependentă de programatorul care a realizataplicaţia şi chiar mai mult de limbajul de programare folosit. În sistemelecomplexe, odată cu creşterea necesarului de informaţie există riscul casatisfacerea necesarului de informaţie prin noi programe să nu poată fi realizatăîntr-un timp optim. Reducerea timpului alocat analizei precum şi proiectării denoi aplicaţii are ca rezultat obţinerea de programe inadecvate sau ineficientepentru îndeplinire cerinţelor utilizatorilor, de regulă cu o documentaţie limitatăşi greu de întreţinut. În astfel de condiţii securitatea datelor devine limitată, iarintegritatea datelor est practic imposibil de asigurat.

Page 18: Carte Baze de Date

18

Limitele sistemelor bazate pe fişiere independente se datoreazăurmătorilor doi factori:

- definiţia datelor este încorporată în programele de aplicaţie,- controlul accesului şi cel al manipulării datelor se realizează exclusivprin intermediul programelor de aplicaţie.Pentru a fi eficient un sistem informatic este necesară o nouă abordare

care să scoată în afara programelor de aplicaţie definirea, controlul şimanipularea datelor. Aceasta se poate realiza cu ajutorul bazei de date şi asistemului de gestiune a bazelor de date.

1.4. Autoevaluare

1. Explicaţi:a. Noţiunea de datăb. Organizarea datelorc. Date constante, date variabiled. Noţiune de fişiere. Tipuri de date simplef. Date compuseg. Redundanţa datelorh. Înregistrare fizică şi înregistrare logicăi. Dependenţa date-program

2. Analizaţi critic noţiunile de dată elementară şi dată compusă.

Page 19: Carte Baze de Date

19

Page 20: Carte Baze de Date

20

CAP.2. BAZE DE DATE – CONCEPTE

2.1. Rezumatul capitolului

Baza de date realizează separarea definiţiei datelor de programele deaplicaţie. Ne propunem o trecere în revistă a avantajelor ce decurg dinorganizarea datelor în baze de date, precum şi a principalelor concepte dinteoria bazelor de date. Vom prezenta mai multe puncte de vedere legate dedefiniţia bazei de date, insistând asupra principalelor caracteristici ale bazelorde date, modelarea bazei de date, obiectivele datelor în baze de date, definiţia,funcţiunile şi componentele unui sistem de gestiune a bazelor de date. Amconsiderat necesare prezentarea conceptelor de limbaje pentru baze de date,principalele principii pe care se bazează proiectarea bazelor de date şi modelulde date relaţional.

2.2. Conceptul de bază de date

Pentru conceptul de bază de date există un număr foarte mare dedefiniţii, adesea contradictorii, cu atât mai mult cu cât conceptul a fost încontinuă evoluţie.

Baza de date:reprezintă o colecţie partajată de date, între care există relaţiilogice (şi o descriere a acestor date), proiectată pentru asatisface necesităţile informaţionale ale unei organizaţii;este o colecţie de date operaţionale folosite de către aplicaţiilesistem ale unei organizaţii;este un ansamblu structurat de date coerent, fără redundanţăinutilă, astfel încât aceasta pot fi prelucrate eficient de maimulţi utilizatori într-un mod concurent;reprezintă un ansamblu de date înregistrate pe suporturiaccesibile calculatorului pentru a satisface simultan mai mulţiutilizatori de o manieră selectivă şi într-un timp oportun;se defineşte ca un ansamblu de date elementare sau structurate,accesibile unei comunităţi de utilizatori.

Baza de date este un ansamblu structurat de date legate structural întreele, un depozit de date unic definit o singură dată şi utilizat simultan de maimulţi utilizatori. Baza de date este o resursă comună şi partajată. Baza de date

Page 21: Carte Baze de Date

21

conţine nu numai date ci şi descrierea acestora. Descrierea datelor estecunoscută sub denumirea de dicţionar de date (catalog de sistem, saumeta-date) şi reprezintă date despre date. Prin faptul ca baza de date conţine şidescrierea datelor se realizează independenţa program - date. Baza de daterealizează separarea definiţiei datelor de programele de aplicaţie. Prin aceastăabstractizare a datelor devine posibilă modificarea definiţiei unei date fără aafecta utilizatorii acesteia cu condiţia ca semnificaţia datei respective, adicădefiniţia externă a acesteia, să rămână aceeaşi.

Ceea ce este important de reţinut referitor la conceptul de bază de dateeste aceea că el nu poate fi definit complet decât dacă se au în vedere douăunghiuri de vedere diferite şi legătura dintre acestea:

caracteristicile bazei de date din punctul de vedere al utilităţii încadrul sistemului real în care se implementează, respectiv locul şirolul bazei de date în cadrul sistemului informaţional-decizional,schema externă, nivelul extern (viziunea externă);caracteristicile tehnice ale bazei de date, respectiv locul şi rolulbazei de date în cadrul sistemului de prelucrarea datelor, schemainternă, nivelul intern (viziunea internă);legătura dintre cele două viziuni, cea externă şi cea internă esterealizată de schema conceptuală (nivelul conceptual), care arerolul de a constitui schema logică a întregii baze de date, adicăreprezintă o imagine completă a cerinţelor organizaţiei privinddatele, fiind independentă de orice consideraţii privind stocarea.

Standardizarea în domeniul bazelor de date s-a impus de la începutulanilor 70 impunându-se pentru baza de date trei niveluri de abstractizare, adicătrei niveluri distincte la care pot fi descrise datele. Aceasta formează oarhitectură cu trei niveluri, cuprinzând un nivel extern, unul conceptual şi unulintern. Pentru fiecare nivel se defineşte o schemă corespunzătoarea a bazei dedate. Obiectivul arhitecturii cu trei niveluri este separarea vederii fiecăruiutilizator asupra bazei de date de modul în care ea este reprezentată fizic.

Viziunea utilizatorului individual se numeşte vedere externă saumodel extern, la nivel extern existând o mulţime de vederi externe, desub-scheme externe, corespunzătoare fiecărui utilizator individual. O vedereexternă poate fi considerată ca fiind din punctul de vedere al utilizatoruluiindividual conţinutul bazei de date, adică ceea ce „vede” el din baza de date.Acest nivel descrie acea parte a bazei de date care este relevantă pentru fiecareutilizator schema externă fiind formată din mulţimea de sub-schemelor externe.Schema conceptuală este o reprezentare a tuturor informaţiilor conţinute debaza de date într-o formă abstractă. Ea reprezintă o viziune, o vedere a dateloraşa cum sunt ele în realitate, fără a ţine cont de modul în care vede datele

Page 22: Carte Baze de Date

22

fiecare utilizator. Nivelul conceptual reprezintă o vedere generală a bazei dedate. Acest nivel descrie ce date sunt stocate în baza de date şi relaţiile dintreacestea. Pentru o bază de date există o singură schemă conceptuală. Vedereainternă precizează modul în care se memorează efectiv datele ce formează bazade date şi este descrisă de schema internă a bazei de date. Nivelul intern estereprezentarea fizică a bazei de date pe calculator. Acest nivel descrie cum suntstocate datele în baza de date precum şi metodele de acces, criteriile deordonare şi regăsire pe baza unor criterii de performanţă şi flexibilitate careasigură performanţe optime. Pentru baza de date există o singură schemăexternă. Pentru a stabili corespondenţa între fiecare schemă externă şi schemainternă, în cadrul bazei de date există mecanisme care folosesc informaţiile dinschema conceptuală. Fiecare sub-schemă externă este o imagine a schemeiconceptuale. Trebuie să se facă distincţie între descrierea bazei de date, careconstituie schema bazei de date şi baza de date însăşi. Schema bazei de dateeste definită în cursul procesului de proiectare a bazei de date, modificărileulterioare fiind nesemnificative. Datele reale din baza de date pot fi modificatefrecvent. Mulţimea de valori concrete stocate, la un moment dat, se numeşteinstanţă a bazei de date.

Descrierea generală a bazei de date se numeşte schema bazei de dateşi vizează structurile de date, legăturile dintre date şi regulile care asigurăcoerenţa datelor. Pentru o bază de date există trei tipuri diferite de scheme caresunt în concordanţă cu nivelurile de abstractizare ale arhitecturii bazei de date.

2.3. Modelarea baze de date

Numim model de date o colecţie integrată de concepte, necesaredescrierii datelor, a relaţiilor dintre date şi a constrângerilor asupra datelordintr-o organizaţie. Modelul de date este o reprezentare abstractă a obiectelor şia evenimentelor lumii reale şi a asocierilor dintre acestea, cu ajutorul căruia sereprezintă o organizaţie. Un model de date este definit sub trei aspecte, şianume o componentă structurală, care cuprinde regulile de definire a datelor, ocomponentă de manipulare datelor, care defineşte tipurile de operaţii permiseasupra datelor şi o mulţime de reguli care garantează integritatea şi coerenţadatelor. Pentru modelarea datelor la nivel conceptual şi extern se folosescmodele de date bazate pe obiecte şi modele de date bazate pe înregistrări,iar la nivel fizic modele de date fizice. Modelele de date bazate pe obiecte

Page 23: Carte Baze de Date

23

utilizează conceptele: entitate, atribut şi relaţie. Cele mai cunoscute tipuri demodele de date bazate pe obiecte sunt modelul Entitate - Relaţie, modelulsemantic, modelul funcţional şi modelul orientat spre obiecte. ModelulEntitate – Relaţie reprezintă un model de date conceptual de nivel înalt,neformalizat, care descrie structura bazei de date, precum şi tranzacţiile deregăsire, respectiv de reactualizare asociate. Acest model, permite oreprezentare a unui sistem real, grupând elementele sistemului real în entităţi şiasocieri (legături) între entităţi. Modelul de date orientat spre obiecte extindedefiniţia conceptului entitate în sensul că se descrie atât starea prin atribute, câtşi comportamentul prin acţiunile asociate. Obiectul încapsulează starea şicomportamentul. Modelarea conceptuală presupune realizarea unui model dedate pentru informaţiile care există în cadrul unei organizaţii independent dedetaliile de implementare.

Analiza necesităţilor informaţionale ale unei organizaţii presupuneidentificarea entităţilor, a atributelor acestora şi a relaţiilor dintre entităţi. OEntitate (entity) este un obiect care poate fi identificat în mod distinctiv(persoană, loc, concept, activitate, eveniment), care este semnificativ pentrusistemul real, un obiect despre care dorim să înregistrăm informaţii. Un atribut(attribute) este o proprietate care descrie un aspect oarecare al obiectului pecare dorim să îl definim. Entităţile similare care pot fi descrise prin aceleaşiatribute formează un tip de entitate (entity type), iar colecţia formată din toateentităţile de acelaşi tip formează o mulţime de entităţi (entity set). Entitateaeste descrisă de atributele sale relevante. Fiecare atribut reprezintă ocaracteristică semnificativă, atributele având rolul de a defini conţinutul uneiidentităţi. Pentru fiecare atribut există o mulţime de valori posibile, potenţiale,care formează un domeniu de valori. Atributele pot fi simple sau compuse.Atributul simplu are o singură componentă cu existenţă independentă. Atributulcompus este format din mai multe componente, fiecare având o existenţăindependentă. Prin valori concrete date atributelor ce definesc o entitate seobţine o realizare, o apariţie, o instanţă a respectivei entităţi. Un atribut poateavea o singură valoare, sau mai multe valori pentru o anumită entitate. Esteposibil ca valoarea unui atribut să fie derivabilă din valoarea unui alt atribut saudin valorile mai multor atribute ale respectivei entităţi sau ale altor entităţi.Numim cheie candidat atributul sau mulţimea de atribute ale unei entităţi careidentifică în mod unic apariţiile individuale ale unui tip de entitate. Un tip deentitate poate avea mai multe chei candidat. Pe baza unor consideraţii privindpricind caracterul unic, precum şi de structura cheilor candidat din mulţimea dechei candidat se alege o cheie candidat care va fi numită cheie primară, iarcelelalte vor fi numire chei alternative. O cheie candidat formată din maimulte atribute va fi numită cheie compusă.

Page 24: Carte Baze de Date

24

Numim tip de relaţie o asociere semnificativă între tipuri de entităţi.Un tip de relaţie are asociată o anumită funcţie. Fiecare prezenţă unicidentificabilă a unui tip de relaţie se numeşte relaţie. Numim relaţie(relationship) o asociere, o comunicare, o corespondenţă între două sau maientităţi. Relaţia exprimă raportul existent între respectivele entităţi şi existădoar dacă entităţile există. O valoare a unei relaţii este o comunicare întrevalorile entităţilor pe care le leagă. Entităţile implicate într-o anumită relaţie senumesc participanţi în relaţie. O relaţie în care o anumită entitate participă maimult decât o dată având roluri diferite se numeşte relaţie recursivă. O relaţieeste caracterizată prin gradul relaţiei, care exprimă numărul de entităţiparticipante. Din punctul de vedere al numărului de mulţimi de entităţiparticipante entităţile pot fi binare, respectiv multiple. Asocierile binare sunt detrei tipuri după numărul elementelor din fiecare dintre cele două mulţimi puseîn corespondenţă:

asocierea unul - la - unul (one-to-one);

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

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

.

Constrângerile care pot fi impuse entităţilor participante într-o relaţietrebuie să reflecte restricţiile asupra relaţiilor, aşa cum sunt ele în sistemul real.Există două tipuri de constrângeri asupra relaţiilor, numire constrângeri decardinalitate şi constrângeri de participare. Regulile care definesccardinalitatea sunt numite reguli de afaceri. Toate regulile de afaceri din

Page 25: Carte Baze de Date

25

sistemul real trebuie identificate şi reprezentate în modelul de date. Princonstrângerile de participare se stabileşte Atunci când existenţa unei entităţidepinde de o altă entitate de care este legată printr-o relaţie spunem că există oconstrângere de participare. Constrângerea de participare poate fi totală(obligatorie) atunci când existenţa unei entităţi necesită existenţa unei entităţiasociate printr-o relaţie, respectiv constrângere de participare este parţială(opţională) atunci când constrângerea nu condiţionează când existenţa entităţii.

Baza de date este o transpunere fizică, în calculator, a modelului dedate, care conţine entităţile, atributele ce definesc entităţile şi relaţiile dintreentităţi.

2.4. Obiectivele datelor în baze de date

Datele reprezintă suportul real pentru informaţia necesarăsubsistemului de decizie. Datele sunt stocate în structuri complexenumite baze de date. Utilizarea bazelor de date în cadrul sistemelorinformatice are următoarele obiective fundamentale din punctul de vedereal datelor:

1. Independenţa fizică – reprezintă obiectivul esenţial, şi anume,realizarea independenţei structurilor de stocare în raport custructurile de date din sistemul real. În baza de date mulţimea dedate se defineşte fără a ţine cont de forma datelor în sistemul real,luând în considerare doar accesul rapid la date cu performanţeprestabilite. Aceasta se realizează prin asigurarea independenţeifizice a datelor faţă de programele de aplicaţie, adică oricemodificare organizării interne a datelor şi a structurilor deînregistrare nu va afecta programele de aplicaţie.

2. Independenţa logică – presupune că fiecare utilizator, respectivgrup de utilizatori are o sub-schemă externă particulară propriefără a afecta schema generală a bazei de date. Fiecare grup poatesă cunoască doar o parte a semanticii datelor, să vadă doar osubmulţime a datelor şi numai în forma de care are nevoie.Schema conceptuală a bazei de date fiind o sinteză a schemelorexterne nu va fi afectată de evoluţia în timp a unei sub-schemeparticulare, fiecare grup de utilizatori putând să-şi modificepropria sub-schemă fără a afecta schema conceptuală.

3. Manipularea datelor direct de către utilizatorul final – face cadatele să fie văzute de utilizatori independent de implementarea

Page 26: Carte Baze de Date

26

datelor în baza de date şi pot manipula datele cu ajutorul unorlimbaje ne-procedurale foarte apropiate de limbajul natural.Utilizatorul poate obţine informaţii din baza de date fără săcunoască în întregime organizarea complexă a bazei de date.Realizarea acestui obiectiv are ca rezultat îmbunătăţireaaccesibilităţii datelor şi a capacităţii de răspuns. Utilizatorul vaputea accesa baza de date cel mai adesea prin intermediul uneiinterfeţe prietenoase în asociere cu un limbaj ne-procedural, carepermit un dialog simplu şi eficient pentru actualizarea şiexploatarea bazei de date. Utilizatorii nu cunosc structura întregiibaze de date, dar pot, prin utilizarea un limbaj apropiat delimbajul natural să acceseze procedurile de actualizare, interogareşi afişarea datelor din baza de date. Sistemul informaţional are omult mai mare funcţionalitate potenţială deoarece prin utilizareaunor instrumente adecvate devine posibilă interogarea ad-hoc acolecţiei de date de către utilizatorul final, consumatorul deinformaţie, eliminându-se astfel intermediarul, adică personalulcalificat care are menirea de a crea aplicaţia informatică.

4. Asigurarea unei redundanţe minime şi controlate a datelor –este al doilea obiectiv major al organizării datelor în baze de date.Aceasta înseamnă că se urmăreşte pe cât posibil ca fiecare dată săapară numai o singură dată în baza de date, indiferent de numărulde utilizatori care o accesează . Duplicarea datelor se păstreazădoar pentru a asigura coerenţa bazei de date, redundanţa, trebuieredusă la minim şi menţinută sub control. Redundanţa minimă seasigură prin tehnicile de proiectare a bazei de date.

5. Creşterea cantităţii de informaţii disponibile – prin stocarea înbaza de date a datelor generate de un departament al uneiorganizaţii devine posibilă accesarea lor de toţi membriiorganizaţiei. Prin utilizarea bazei de date, aceasta fiind o colecţieunică de date împreună cu legăturile logice existente între date,utilizatorul poate obţine toate datele legate logic de o anumitădată pe care acesta o foloseşte. Prin integrarea datelor devineposibil accesul la date pentru toţi membrii unei organizaţii pentrucare o anumită date este semnificativă.

6. Coerenţa şi integritatea datelor – coerenţa datelor se realizeazăprin verificarea tuturor dependenţelor existente între date însistemul real. Consistenţa datelor este asigurată prin faptul căactualizarea datelor va fi percepută de fiecare utilizator al bazei de

Page 27: Carte Baze de Date

27

date nu doar de utilizatorii care au realizat actualizarea în plusdatorită unicităţii datei stocate în baza de date orice actualizare avalorii sale trebuie efectuată o singură date, iar noua valoare va fidisponibilă instantaneu pentru toţi utilizatorii. Integritatea datelorse referă la validarea şi coerenţa datelor stocate şi se realizeazăprin unicitatea datelor, precum şi prin validarea datelor introdusesau actualizate în baza de date. Informaţia trebuie să satisfacăconstrângeri statice sau dinamice, locale sau generale.

7. Administrarea şi controlul centralizat al datelor –administrarea datelor presupune definirea structurii datelor şi amodului de stocare a datelor. Administrarea este centralizată şipermite o organizare coerentă şi eficace a informaţiei. Fiecareutilizator are propriile cerinţe care pot intra în conflict cu ale altorutilizatori. Administrarea centralizată are rolul de a optimizaperformanţele pentru organizaţie luată în ansamblu.

8. Partajabilitatea datelor – permite ca datele să fie partajate întremembrii unei organizaţii fiecare utilizator va accesa datele ca şicum ar fi singur, fără a şti că în acelaşi timp un alt utilizator vaaccesa pentru a le modifica. Prin mecanisme proprii de controlbaza de date va permite accesul concurent la date menţinându-seîn acelaşi timp coerenţa datelor. Acest obiectiv face posibilădezvoltarea de noi aplicaţii ce necesită poate chiar extinderea,respectiv modificarea aplicaţiilor aflate deja în funcţiune.

9. Securitatea datelor – baza de date trebuie să fie protejată pentrudistrugeri logice prin actualizări eronate, respectiv distrugerifizice. Securitatea va fi asigurată prin mecanisme proprii carepermit refacerea bazei de date în cazul apariţiei unei erori.Prevenirea distrugerii accidentale a datelor, obligă la instituireaunui set de proceduri de autorizare, dar şi de confirmare aoperaţiilor de ştergere, adăugare, precum şi realizarea unor copiide siguranţă, a unor jurnale de urmărire a actualizărilor şiproceduri de refacere a bazei de date, de restaurare a acesteia, încaz de incidente.

10. Confidenţialitatea datelor - datele vor fi protejate de accesulneautorizat. Baza de date are mecanisme proprii care permitidentificarea şi autentificarea utilizatorilor, precum şi accesulautorizat şi diferenţiat. Accesul depinde de date şi de utilizatori.

Page 28: Carte Baze de Date

28

2.5. Sisteme de gestiune a bazelor de date

În cadrul oricărei organizaţii este necesar ca resursa de date să fie binedefinită şi documentată, bine organizată şi controlată, partajabilă şi relevantăpentru deciziile luate în cadrul organizaţiei.

Sistemul de Gestiune al Bazei de Date (SGBD) reprezintă un pachetde programe specializat pentru definirea, crearea, întreţinerea şi accesulcontrolat la baza de date.

Obiectivul principal al unui SGBD este de a separa datele deprogramele de aplicaţie. SGBD constituie o interfaţă între utilizatori şi baza dedate şi constă din programe care interacţionează cu programele de aplicaţie aleutilizatorului şi cu baza de date. Un SGBD are o structură complexă şi includemodule program specializate pentru a îndeplini anumite funcţiuni:

- gestionarea bazei de date;- definirea datelor (descrierea datelor);- manipularea datelor (actualizare şi interogarea bazei de date);- controlul şi securitatea datelor (controlul integrităţii, accesulconcurenţial şi securitatea datelor);- utilitare.

SGBD trebuie să asigure trecerea de la un nivel de abstractizare la altul,adică să poată interpreta „comenzile” exprimate în termen de schemă externă,pentru a le transpune prin intermediul schemei conceptuale în operaţii deintrare-ieşire la nivel fizic. SGBD gestionează la nivel conceptual un dicţionarde date. Modulele program de gestiune a bazei de date realizează accesul fizicla date în conformitate cu cerinţele exprimate printr-o „comandă”. Moduleleprogram de definirea datelor permit traducerea unui limbaj specializat carerealizează descrierea naturii datelor şi a legăturii logice dintre date la nivelglobal conform schemei conceptuale, precum şi schemelor externe specificefiecărei aplicaţii program externe. Modulele program de manipulare a datelorpermit utilizatorilor prin intermediul unui limbaj specializat să găsească, săinsereze, să modifice, respectiv să elimine datele din baza de date. Moduleleprogram pentru controlul şi securitate datelor au rolul de a asiguraconfidenţialitate a şi integritatea datelor, precum şi rezolvarea problemelor deconcurenţă. Modulele program utilitare permit întreţinerea, manipulareaexploatarea corectă şi facilă a bazei de date.

Sistemele SGBD evoluează continuu şi trebuie să se extindă pentru arezolva eficient noile cerinţe ale utilizatorilor.

Page 29: Carte Baze de Date

29

Istoria sistemelor de gestiune a bazelor de date delimitează treigeneraţii care sunt caracterizate de modelele logice folosite:

- sisteme de tip ierarhic şi de tip reţea, - sisteme relaţionale;- sisteme avansate, care se reperă la sistemele orientate obiect, la celedeductive, multimedia, active, etc.SGBD de tip ierarhic (hierarchical database) şi reţea (network

database) reprezintă din punct de vedere istoric primele generaţii de SGBD. Înmodelele ierarhice şi reţea datele sunt reprezentate la nivel de articol prinlegături ierarhice de tip arbore, respectiv de tip graf. Structurile de datecorespunzătoare acestor modele pot fi descrise la nivel logic cu ajutorul uneistructură de date abstract numit diagramă. Diagrama este în acest caz un graforientat prin care se reprezintă tipuri de entităţi şi legăturile funcţionale dintreacestea. Sistemele de gestiune a bazelor de date bazate pe modelul de datereţea, respectiv cel ierarhic, poartă numele de sisteme navigaţionale şi au fostdezvoltate în perioada 1960-1970.

A doua generaţie de SGBD o reprezintă modelul relaţional caretratează entităţile ca relaţii. Sistemele de Gestiunea Bazelor de DateRelaţionale sunt caracterizate de structuri de date simple şi intuitive, deoperatori care se aplică relaţiilor pentru a defini, căuta, şi reactualiza datele.Bazele de date relaţionale asigură independenţa completă a descrierii logice adatelor în termeni de relaţii şi în descrierea fizică a datelor în termen de fişiere.În prezent există câteva sute de sisteme SGBD relaţionale pentru toate tipurilede calculatoare. Modelul relaţional asigură o independenţă completă în ceea cepriveşte descrierea logică şi fizică a datelor. În plus SGBD relaţionale puninclud limbaje specializate pentru descrierea şi manipularea datelor. Modelulrelaţional are capacităţi limitate de modelarea datelor. SGBD relaţionale nufolosesc obiecte complexe şi dinamice, nu realizează gestiunea distribuită adatelor şi nici gestiunea de cunoştinţe.

Conceptul de programare orientată obiect sau programareacalculatoarelor cu ajutorul obiectelor utilizează conceptele de obiect şi clasă deobiecte. Obiectul este definit de o mulţime de proprietăţi numite atribute şi areun anumit comportament care în cazul obiectelor folosite în programare seconcretizează prin metode, care sunt programe care se execută în mod automatatunci când în mediul extern sau cel extern al obiectului apare un anumiteveniment. Numim obiect o entitate unic identificabilă, care conţine atâtatributele care definesc starea unui obiect din lumea reală, cât şi acţiunileasociate acestuia. Obiectele de acelaşi tip formează o clasă de obiecte carereprezintă o generalizare a noţiunii de tip de dată. Clasa include definiţiadatelor şi a metodelor. Conform principiului încapsulării datelor, datele clasei

Page 30: Carte Baze de Date

30

sunt vizibile doar metodelor clasei, iar conform principiului moştenirii sau alderivării o clasă poate fi definită folosind o clasă existentă. Conceptul deîncapsulare presupune că un obiect conţine atât structura de date, cât şimulţimea de operaţii care pot fi utilizate pentru al manipula. Ascundereainformaţiilor semnifică separarea aspectelor externe ale unui obiect de detaliilesale interne, care sunt ascunse de lumea exterioară. În acest mod, detaliileinterne ale unui obiect pot fi modificate fără a afecta aplicaţiile care îlutilizează cu condiţia ca detaliile externe să rămână neschimbate. Includereatehnicilor de programare orientată obiect în domeniul bazelor da date a condusla apariţia Sistemelor de Gestiune a Bazelor de Date Orientate Obiect, carerealizează o modelare superioară a informaţiei luând în considerare aspecteledinamice şi integrarea descrierii structurale şi comportamentale. Prin utilizareaprincipiului programării orientate obiect în domeniul bazelor de date relaţionalea apărut Sistemele de Gestiune a Bazelor de Date Relaţionale OrientateObiect.

O relaţia este o mulţime de înregistrări ce reprezintă fapte. Cunoştinţelesunt aserţiuni generale şi abstracte asupra faptelor. Pe baza cunoştinţelor sededuc fapte noi prin deducţie plecând de la fapte cunoscute. Pentru a rezolvaproblema gestiunii de cunoştinţe au apărut bazele de date deductive, careutilizând programarea logică gestionează cunoştinţe relativ la baze de date. UnSistem de Baze de Date Deductiv posedă un limbaj de definire a datelor carepermite definirea structuri predicatelor sub formă de relaţii şi constrângeri deintegritate asociate, un limbaj de manipulare a datelor care permite pe lângăactualizarea datelor şi formularea de cereri, un limbaj de reguli de deducţie caresă permită construirea predicatelor derivate.

Sistemele distribuite reprezintă calculatoare interconectate printr-oreţea de comunicaţie utilizate pentru un scop global. Gestionarea datelor aflatepe calculatoare diferite, eterogene din punctul de vedere al sistemului deoperare folosit se realizează cu ajutorul unei baze de date distribuite. Bazelede date distribuite sunt sisteme de baze de date cooperante care sunt rezidentepe calculatoare diferite şi situate în locuri în locaţii diferite. Sistemul degestiune al unei baze de date distribuite face posibil accesul programelor deaplicaţie la date rezidente pe mai multe calculatoare fără ca localizarea datelorsă fie cunoscută. Bazele de date distribuite folosesc ca instrument principalpentru prelucrarea datelor distribuite modelul relaţional.

Integrarea mai multor baze de date autonome şi eterogene conform uneischeme globale cu scopul de a realiza accesul uniform şi integrat la fiecare dinbazele de date componente a condus al conceptul de sistem multibază de date.Avantajul major al acestui model constă în faptul că printr-o singură interogarepot fi accesate date din mai multe baze de date fără a afecta aplicaţiile care

Page 31: Carte Baze de Date

31

manipulează datele din fiecare bază de date componentă a sistemului integrat.Fiecare bază de date din sistemul integrat poate folosi propriile limbaje deinterogare.

Bazele de date permit stocarea unei cantităţi foarte mari de informaţie,care poate fi folosită în mod pentru elaborarea deciziilor operative, dar şi acelor strategice. Pentru elaborarea deciziilor operative se folosesc date aferenteactivităţii curente, date aferente unei perioade scurte de timp. Acestea suntgenerate şi preluate în sistem în mod dinamic pentru optimizarea procesului dedecizie. Prelucrarea acestor date se realizează în pe baza unor scenarii de tipprocesarea de tranzacţii în timp real (OLTP – On Line TransactionProcessing). Necesitatea analizării unor cantităţi foarte mari de date a condusla conceptul de magazie de date (Data Warehouse), care utilizează pentruatingerea acestui scop scenarii de tip procesare analitică în timp real (OLAP– On Line Analytical Processing). Baza de date analitică permite realizarea deinterogări multidimensionale instantanee, fără a fi necesar ca acestea sa fiedefinite anterior. Magazia de date este proiectată pentru a facilita analizamultidimensională a datelor şi reprezintă un sistem care include informaţiidespre o organizaţie structurate în mai multe baze de date, numite în acest cazrafturi de date (Data Marts). Data Warehouse reprezintă o bază de dateproiectată pentru a facilita analiza datelor fiind orientată spre dimensiuni.Structurile de date multidimensionale sunt vizualizate cel mai bine sub formaunor cuburi de date şi a unor cuburi în cadrul cuburilor. Fiecare faţă a unui cubreprezintă o dimensiune. Bazele de date multidimensionale reprezintă omodalitate compactă pentru vizualizarea şi manipularea elementelor de datecare pot avea multe inter-relaţii.

2.6. Funcţiunile sistemului de gestiune al bazei de date

Sistemul de gestiune al bazei de date (SGBD) reprezintă o interfaţăîntre utilizatori şi baza de date, care permite crearea, actualizarea şi consultareabazei de date. În 1982 E.F. Codd a enunţat opt servicii listă completată ulteriorcu încă două servicii pe care trebuie să le furnizeze un SGBD complet:

1. Stocarea, regăsirea şi reactualizarea datelor reprezintă funcţiafundamentală a unui SGBD. SGDB trebuie sa ascundă faţă de utilizatordetaliile privind implementarea fizică internă.

2. Un catalog sistem accesibil utilizatorului. SGBD va asigurautilizatorului şi a SGBD la un catalog sistem integrat (dicţionar de date - DataDictionary) care va conţine date despre scheme, utilizatori, aplicaţii şireprezintă un depozit de informaţii care descrie datele din baza de date, date

Page 32: Carte Baze de Date

32

despre date. Catalogul sistem conţine descrierea şi localizarea datelor,denumirile, tipurile şi dimensiunile articolelor de date, denumirile relaţiilor,constrângerile de integritate asupra datelor, numele utilizatorilor autorizaţi careau acces la date, schemele externe, conceptuale şi interne, precum şitranspunerile dintre ele, statistica utilizării. Catalogul sistem permite cainformaţiile despre date să fie colectate şi gestionate central, permite cadefiniţia datelor să fie accesibilă tuturor posibililor utilizatori, comunicareafiind simplificată deoarece de sensul exact al datelor este stocat.

3. Asigurarea tranzacţiilor. Tranzacţia reprezintă o mulţime de acţiuni,realizate de un utilizator sau un program de aplicaţie prin care se accesează sause modifică conţinutul bazei de date. Dacă o tranzacţie eşuează în timpulexecuţiei baza de date va intra într-o stare de incoerenţă, motiv pentru care estenecesar ca baza de date baza de date să fie readusă în stare de coerenţă care aprecedat lansarea în execuţie a tranzacţia. Acesta se realizează printr-unmecanism propriu al SGBD care este capabil să anuleze modificările efectuateasupra bazei de date de tranzacţia eşuată, care nu a fost efectuată în întregime cidoar parţial.

4. Servicii de control concurente. SGBD trebuie să furnizeze unmecanism care să garanteze că baza de date este corect reactualizată atuncicând mai mulţi utilizatori efectuează simultan tranzacţii asupra bazei de date.Interogarea concurentă trebuie sa fie capabilă să asigure simultan tuturorutilizatorilor aceeaşi informaţie, chiar şi în cazul reactualizării datelor şi săgaranteze că nu vor avea loc interferenţe atunci când mai mulţi utilizatoraccesează baza de date.

5. Servicii de reconstituire. SGBD trebuie să furnizeze un mecanismpropriu de reconstituire a bazei de date în cazul deteriorării datorită unei cauzeinterne sau externe.

6. Servicii de autorizare. SGBD trebuie să furnizeze un mecanism princare să garanteze că doar utilizatorii autorizaţi pot accesa datele. Termenul desecuritate se referă la protecţia bazei de date împotriva accesului ne-autorizatintenţionat sau accidental. Fiecare utilizator trebuie sa acceseze doar datele careîi sunt necesare şi pentru care are definit accesul autorizat.

7. Suport pentru comunicarea datelor. SGBD trebuie sa poată fiintegrat într-un pachet de programe de comunicaţie din care va primi cereri subformă de mesaje şi va răspunde în acelaşi mod.

8. Servicii de integritate. SGBD trebuie sa furnizeze mijloace care săasigure că atât datele din baza de date, cât şi modificării acestora respectăanumite reguli. Integritatea bazei de date se referă la corectitudinea şi coerenţadatelor stocate şi se exprimă în termeni de constrângeri, care reprezintă regulide coerenţă pe care baza de date trebuie să le respecte.

Page 33: Carte Baze de Date

33

9. Servicii pentru promovarea independenţei de date. SGBD trebuie săpermită ca programele de aplicaţie să fie independente de structura reală a bazeide date. Pentru realizarea acestui obiectiv se utilizează mecanisme devizualizare, sau sub-scheme externe.

10. Servicii utilitare. Serviciile utilitare asigură suport pentruadministrare efectivă a bazei de date. Prin acestea se asigură suport pentruimportul şi exportul de date, facilităţi de monitorizare, analiză statistică,reorganizarea datelor, realocarea spaţiului, eliminarea informaţiei perimate etc.

2.7. Componentele unui mediu SGBD

Un mediu SGBD este un sistem informatic care foloseşte baze de date. Înstructura unui astfel de sistem în se pot delimita cinci componente principale:hardware, software, date, proceduri şi persoane.

1. Hardware.Reprezintă suportul fizic pentru SGBD şi poate fi format de un singur

calculator personal, un calculator mainframe, sau chiar o reţea de calculatoare.Elementele specifice de hardware depind de cerinţele organizaţiei şi de SGBDutilizat. Fiecare SGBD impune cerinţe minimale pentru echipamentele fizicenecesare funcţionării optime.

2. Software.Componenta software include programele ce formează SGBD,

programele de aplicaţie, sistemul de operare local şi atunci când este cazulsoftware de reţea. Programele de aplicaţie se realizează folosind limbaje deprogramare de generaţia treia sau chiar a patra, ele nu fac parte din SGBD, daraccesează baza de date prin intermediul SGBD. Programele de aplicaţie nu aurolul de a gestiona datele ci doar de a prezenta informaţia în termeni specificiaplicaţiei prin intermediul unei interfeţe.

3. Date.Reprezintă cea mai importantă componentă a unui mediu SGBD şi

include atât meta-datele cât şi datele propriu-zise.4. Proceduri.Procedurile includ regulile care guvernează proiectarea şi utilizarea bazei

de date. Activitatea utilizatorilor sistemului şi a personalul care administreazăbaza de date se desfăşoară conform unor proceduri documentate privind modulde folosire şi funcţionare a sistemului. Aceste instrucţiuni se referă ladeschiderea şi închiderea unei sesiuni de lucru, utilizarea unor facilităţi SGBDşi a programelor de aplicaţie, activarea şi dezactivarea SGBD, arhivareadatelor, utilizarea copiilor de siguranţă, tratarea defecţiunilor hardware,

Page 34: Carte Baze de Date

34

respectiv software, refacerea bazei de date în caz de incident, modificarea şireorganizarea bazei de date.

5. Persoane.În mediul SGBD se identifică patru tipuri distincte de persoane implicate:

administratorii, proiectanţii, programatorii de aplicaţie şi utilizatorii finali.- Baza de date reprezintă o resursă în cadrul organizaţiei care este

gestionată de doi administratori: administratorul de date şi de administratorulbazei de date. Administratorul de date (Data Administrator) gestioneazăresursele de date, fiind responsabil de proiectarea conceptuală şi logică a bazeide date, de planificarea bazei de date, de realizarea şi întreţinerea standardelor,a politicilor şi a procedurilor bazei de date. Este persoana sau grupul depersoane responsabil de dezvoltarea bazei de date în direcţia susţineriiobiectivelor generale ale organizaţiei, fiind un foarte bun cunoscător alorganizaţiei. El determină cerinţele organizaţiei privind datele, răspunde deproiectarea conceptuală şi logică a bazei de date, dezvoltă modelul general dedate conform cu progresul din domeniul tehnologiei informaţiei şi al afacerilor,creează standarde de colectarea datelor, stabileşte necesităţile şi protecţiaprivind accesul la date, gestionează dicţionarul de date şi răspunde deasigurarea unei documentaţii complete care va include modelul de date,standardele, politicile, procedurile, utilizarea dicţionarului de date şi controlulasupra utilizatorilor finali. Administratorul bazei de date (DatabaseAdministrator) este persoana sau grupul de persoane responsabil de proiectarea,implementarea şi realizarea fizică a bazei de date, de securitatea şi controlulintegrităţii, de întreţinerea întregului sistem. El monitorizează performanţelesistemului şi reorganizarea baze de date, atunci când este cazul, defineşteconstrângerile de securitate şi integritate, răspunde de selectarea SGBD şi deimplementarea proiectului de bază de date, de instruirea utilizatorilor şi derealizarea copiilor de siguranţă. Este persoana care trebuie sa cunoască foartebine SGBD folosit precum şi mediul sistemelor de operare.

- Proiectanţii bazei de date sunt persoanele implicate în proiectarealogică şi cea fizică a bazei de date. Proiectarea conceptuală şi logică presupuneidentificarea entităţilor, a relaţiilor dintre entităţi, a constrângerilor asupradatelor ce vor fi stocate în baza de date. Proiectantul de bază de dateconceptuale şi logice trebuie sa cunoască amănunţit şi complet toate datele dincadrul organizaţiei, precum şi a regulilor interne şi externe conform cărorafuncţionează organizaţia. Aceste reguli descriu principalele caracteristici aledatelor aşa cum sunt ele în cadrul organizaţiei respective. În etapa de proiectarea bazei de date proiectantul va implica toţi presupuşii utilizatori. Proiectareaconceptuală este independentă de detaliile privind implementarea, iarproiectarea logică este presupune utilizarea unui model de date. Proiectantul

Page 35: Carte Baze de Date

35

de hibază de date fizice preia modelul logic de date şi îl implementeazăfolosind un anumit SGBD, el alege strategia de stocare adecvată ţinând cont demodul de utilizare.

- Programatorii de aplicaţie realizează şi implementează programelede aplicaţie care conferă funcţionalitatea cerută de utilizatorii finali.Programele de aplicaţie se realizează în conformitate cu documentaţia elaboratăîn etapa de proiectare. Fiecare program de aplicaţie este realizat fie cu ajutorulunu limbaj extern sau cu unul propriu SGBD şi efectuează o anumită operaţieasupra bazei de date: extragere, inserare, reactualizare şi ştergere de date.

- Utilizatorii finali reprezintă clienţii bazei de date şi pot fi grupaţi îndouă categorii: utilizatori simpli şi utilizatori specialişti. Utilizatorii simpli nupercep baza de date şi nici SGBD ci doar accesează baza de date prinintermediul programelor de aplicaţie. Utilizatorii specialişti cunosc structurabazei de date şi facilităţile oferite de SGBD. Ei sunt capabil să efectuezeinstantaneu interogări ale bazei de date, pentru aceasta folosind fie un limbajextern, fie unul intern al SGBD pentru a efectua anumite operaţii asupra bazeide date, fiind capabili să realizeze chiar propriile programe de aplicaţie.

2.8. Limbaje pentru baze de date

În limbajele de programare clasice declaraţiile de date şi instrucţiunileexecutabile aparţin limbajului respectiv. Limbajele de programare sunt grupateîn generaţii de limbaje. Limbajele de programare clasice sunt incluse îngeneraţia a treia de limbaje (3GL – 3 Generation Language) fiind limbaje deprogramare procedurale. Generaţia a patra de limbaje de programare (4GL)reprezintă limbaje de programare ne-procedurale şi au fost create pentru a măriiproductivitatea în programarea calculatoarelor folosind instrumente de tipgenerator (de formulare, de rapoarte, de structuri de interogare, de grafice, deaplicaţii) care permit ca în mod interactiv fără a scrie cod program să fiegenerate în mod automat programe complexe. Limbajele proceduraleprecizează ce date sunt necesare şi cum trebuie să fie obţinut rezultatul uneiacţiuni tratând înregistrările în mod individual, iar cele neproceduraleprecizează doar ce trebuie obţinut, operând asupra unor mulţimi de înregistrări.

În sistemele de gestiune a bazelor de date funcţiile de declarare, demanipulare şi de control al datelor sunt realizate cu ajutorul unor limbajediferite. Acestea sunt numite sub-limbaje de date deoarece includ doarfacilităţii specifice funcţiei pe care o au. Ele pot fi încorporate într-un limbajgazdă de nivel înalt. SGBD asigură suport pentru utilizarea în mod interactiv aacestor limbaje proprii.

Page 36: Carte Baze de Date

36

Limbajul pentru definirea datelor (LDD – Data DescriptionLanguage) este un limbaj specific pentru fiecare SGBD fiind utilizat pentru aspecifica schema bazei de date. Este un limbaj descriptiv care permiteadministratorului bazei de date, respectiv utilizatorului final sa descrie şi sădefinească entităţile din baza de date precum şi relaţiile existente între entităţi,adică să definească o schemă sau să o modifice. Nu include facilităţi pentrumanipularea datelor. Prin compilarea instrucţiunilor limbajului de definireadatelor se obţin tabele, care vor fi incluse în catalogul sistem (dicţionar de date,sau director de date) şi care descriu datele, relaţiile, strategiile de acces la date,criteriile de confidenţialitate şi de validare a datelor. Teoretic pot fi identificatelimbaje de definire a datelor aferente fiecărei scheme din arhitectura bazei dedate: internă, conceptuală şi externă.

Limbajul pentru manipularea datelor (LMD – Data ManipulationLanguage) este un limbaj care asigură un set de procedee ce permit operaţiilede bază pentru manipularea datelor din baza de date. Operaţiile executate încadrul bazei de date presupun existenţa unui limbaj specializat în carecomenzile se exprimă prin fraze ce descriu acţiuni asupra bazei de date.Manipulările de date se efectuează la cele trei niveluri extern, conceptual şiintern. O comandă va preciza operaţia, criteriul de selecţie, modul de acces şiforma de editare. Operaţia poate fi de calcul aritmetic sau logic,deschidere-închidere, căutare, extragere, adăugare, ştergere, reactualizare şichiar de editare. Cele mai importante comenzi sunt cele de regăsire. Limbajelede manipulare a datelor sunt de două tipuri: procedurale şi neprocedurale(declarative). Setul de instrucţiuni din cadrul limbajului de manipulare a datelorresponsabil de regăsirea datelor de numeşte limbaj de interogare.

Limbajul pentru controlul datelor (LCD – Data Control Language)este un limbaj specific care include comenzi pentru asigurarea confidenţialităţiişi integrităţii datelor, pentru salvarea informaţiei cu scopul menţineriiintegrităţii bazei de date şi chiar pentru rezolvarea problemelor de accesconcurenţial la date.

2.9. Proiectarea bazei de date

Sistemul informaţional cuprinde totalitatea resurselor care permitcolectarea, administrarea, controlul şi propagarea informaţiilor în cadrul uneiorganizaţii. Datele reprezintă o resursă importantă din cadrul organizaţiei şitrebuie gestionată similar celorlalte resurse. Sistemul informatic poate firealizat cu ajutorul unei baze de date şi reprezintă cea mai importantăcomponentă a sistemului informaţional din cadrul organizaţiei, baza de date

Page 37: Carte Baze de Date

37

fiind o componentă fundamentală a sistemului informaţional. Sistemulinformaţional evoluează în timp, parcurge anumite etape, are un ciclu de viaţă.Etapele din ciclul de viaţă al unui sistem informaţional sunt: planificarea,colectarea şi analiza cerinţelor, proiectarea, realizarea prototipului,implementarea, testarea şi întreţinerea operaţională. În practică, însă, acesteetape nu sunt rigide. Pot exista întrepătrunderi importante şi proiectul poaterepeta unele etape înainte de a trece la altele. Aceste etape sunt parcurse şi încazul sistemelor ce folosesc baze de date. În fiecărei etapă a ciclului de viaţăsunt desfăşurate anumite activităţi.

1. Planificarea bazei de date, este prima etapă a ciclului de viaţă şiinclude activităţile care permit realizarea eficientă a etapelor din ciclul de viaţă.Planificarea bazei de date trebuie să fie integrată în strategia generală aorganizaţiei stabilind prin aceasta care sunt cerinţele informaţionale viitoare aleorganizaţiei pentru a susţine planurile de afaceri şi scopul organizaţiei. Pentru asusţine planificarea bazei de date se va realiza un model general de date, careva include datele importante, relaţiile dintre acestea, precum şi legătura cucomponentele funcţionale ale organizaţiei. În această etapă vor fi dezvoltate destandarde pentru modul de colectare a datelor şi de specificare a formatelor,pentru documentaţia necesară, fiind stabilite modalităţile de realizare aproiectării şi implementării. Utilizarea standardelor asigură suport pentrucontrolul calităţii. Cerinţele organizaţiei cu privire la date fi documentatecorespunzător.

2. Definirea sistemului este a etapa în care se identifică scopul şilimitele noului sistem, inclusiv domeniile de aplicaţie şi grupurile de utilizatori.La definirea noului sistem va fi precizat în mod necesar şi modul în care se varealiza interfaţa cu celelalte componente ale sistemului informaţional din cadrulorganizaţiei.

3. Colectarea şi analiza cerinţelor (Analiza) este etapa de cea maimare importanţă în care, folosind diferite metode şi tehnici adecvate, vor ficolectate şi analizate cerinţele informaţionale ale organizaţiei cu privire bazadata. Informaţiile necesare proiectării bazei de date vor fi colectate folosindmetoda interviului individual, metoda interviului de grup, metodachestionarelor, observarea organizaţiei în funcţiune, examinarea documentelordin cadrul organizaţiei, toate asociate cu experienţa anterioară a echipei deanaliză. Fără o analiză adecvată nu se va putea determina ceea ce utilizatoruldoreşte de la noul sistem, infrastructura tehnică în cadrul căreia se vaimplementa, respectiv care sunt constrângerile impuse datele. O analizăinadecvată, la un moment ulterior, poate fi foarte costisitoare sau poate conducechiar la încetarea proiectului. O cerinţă reprezintă o caracteristică care trebuieinclusă în noul sistem. Informaţiile colectare pentru fiecare domeniu de

Page 38: Carte Baze de Date

38

aplicaţie şi grup de utilizatori se vor concretiza sun forma unui set dedocumente care descriu activităţile şi sub-activităţile din diferite puncte devedere şi va include documentaţia folosită şi elaborată, detaliile privindtranzacţiile, precum ordinea de prioritate a cerinţelor. Cantitate de datecolectată depinde de politica organizaţiei şi de aria de cuprindere a nouluisistem. Colectarea şi analiza cerinţelor reprezintă etapa preliminară a proiectăriiconceptuale a bazei de date. Pentru structurarea cerinţelor se folosesc tehnicispeciale de specificare a cerinţelor cum sunt analiza şi proiectarea structurată,diagramele de flux de date, proiectarea asistată de calculator.

4. Proiectarea bazei de date (Design-ul) este procesul de realizare aproiectului de bază de date care va trata toate operaţiile şi obiectiveleorganizaţiei, este etapa în care se va realiza proiectare conceptuală, logică şifizică a bazei de date. Se va realiza reprezentarea datelor şi a relaţiilor dintre eleconform specificaţiilor stabilite în etapa de analiză, va fi elaborat un model dedate care va fi capabil să accepte efectuarea tuturor tipurilor de tranzacţiinecesare asupra datelor, se va realiza o structurare adecvată pentru realizareacerinţelor inclusiv cele privind performanţele noului sistem şi a sistemuluiinformaţional în ansamblu. Modelul de date este optim atunci când este simplu,expresiv, extensibil, nonredundant, permite validarea structurală, permitepartajarea datelor, asigură integritatea datelor şi oferă posibilitatea uneireprezentări schematice. Unul din scopurile principale a procesului de designeste stabilirea de scheme pe baza căreia se poate construi baza de date.Proiectarea se poate realiza folosind o metodă de tip „de jos în sus”, „de sus înjos”, „din interior spre exterior”, respectiv „strategia compusă” carecombină primele două metode. Metoda de proiectare de jos în sus se foloseşteîn cazul bazelor de date simple şi începe de la nivelul fundamental al atributelorce definesc entităţile car sunt grupate în relaţii care reprezintă tipuri de entităţişi asociaţii ale acestora, după care prin procesul numit normalizare seidentifică atributele necesare şi dependenţa funcţională a acestora. Strategia deproiectare de tip de sus în jos se foloseşte pentru baze de date complexe şiîncepe cu realizarea unor modele de date care conţin entităţi şi relaţii relevante,după care prin rafinări succesive de sus în jos se identifică toate entităţile şirelaţiile existente între acestea. Tratarea de tip din interior spre exterior estefoloseşte proiectarea de jos în sus pentru entităţile principale, care apoi seextinde pentru a cuprinde toate entităţile şi relaţiile.

Sub-etapa de proiectare fizică a bazei de date presupune cunoaştereaSGBD care va fi utilizat, motiv pentru pe baza cerinţelor curente şi viitoare aleorganizaţiei va fi alea cel mai potrivit SGBD. Alegerea SGBD poate ficonsiderată o etapă din ciclul de viaţă a sistemului informatic, care se poate

Page 39: Carte Baze de Date

39

parcurge în orice fază, dar înainte de proiectarea fizică. În această etapa se vorelabora în mod obligatoriu şi toate documentaţiile aferente.

5. Realizarea prototipului este etapa în care se construieşte un modelde lucru, care nu are toate caracteristicile cerute şi nu acoperă întreagafuncţionalitate. Scopul creării prototipului este de a oferi utilizatorilorposibilitatea de a utiliza un sistem apropiat de cel real pentru identificacaracteristicile incluse deja, de a le verifica cu scopul de a clarifica cerinţeleutilizatorilor.

6. Implementarea este etapa care include realizarea fizică a bazei dedate prin utilizarea limbajului de definire a datelor al SGBD şi implementareaprogramelor de aplicaţie realizate în limbajul ales de echipa de proiectare.Tranzacţiile din baza de date vor fi efectuate cu ajutorul limbajului demanipularea datelor. În această etapă pot fi folosite instrumentele de tipinteractiv ale SGBD pentru definirea şi accesarea datelor. Transferarea datelordin vechiul sistem are o foarte mare importanţă pentru reducerea timpuluinecesar pentru implementare. Acest transfer face ca datele preluate să fiecorecte chiar dacă este necesară conversia datelor în formatul cerul de noulsistem. În etapa de implementare vechiul sistem şi noul sistem funcţionează înparalel, iar echipa de implementare poate reduce semnificativ efortulutilizatorilor prin preluarea datelor pentru noul sistem din vechil sistem cuajutorul unor proceduri automate.

7. Testarea este etapa în care vor fi detectate eventualele erori alenolui sistem. Există un număr de practici pentru asigurarea calităţii, pe care leputem aplica proiectului, dar cea mai bună este testarea. Testarea trebuie făcutăconform unui plan de testare bine pus la punct, care este esenţial atât pentrusistem cât şi pentru verificarea reacţiei utilizatorului. Baza acestui plan trebuiesă fie documentarea obţinută în timpul etapei de analizare a cerinţelor. Acestplan de testare trebuie să definească nu doar exact ceea ce trebuie verificat ci şice rezultate trebuie generate de noul sistem inclusiv de programele de aplicaţie.Testarea poate fi făcută „de sus în jos”, „de jos în sus”, „pe fir”, sau la„suprasolicitare”. Testarea de „de sus în jos” permite testare la nivel desubsistem şi permite detectarea erorilor în fazele iniţiale ele proiectului.Testarea „de jos în sus” pleacă de la fiecare modul individual. Testarea „pefir” este folosită pentru testarea sistemelor care funcţionează în timp real,testându-se răspunsul sistemului la fiecare eveniment. Testele la„suprasolicitare” au menirea de a testa componentele sistemului în toatesituaţiile posibile.

8. Întreţinerea operaţională reprezintă procesul de monitorizare şiîntreţinere a noului sistem. Sunt monitorizate performanţele sistemului şi seîncorporează noi cerinţe atunci când este cazul. Este etapa care se întinde pe

Page 40: Carte Baze de Date

40

întreaga durată de viaţă a sistemului. Monitorizarea presupune urmărireqasistematică a performanţelor şi înregistrarea eventualelor anomali defuncţionare.

2.10. Modelul de date relaţional

Modelul relaţional a fost propus de E. F. Codd în 1970 care prinarticolul „Un model relaţional de date pentru bănci de date partajate dedimensiuni mari” a stabilit cerinţele teoretice pentru modelul de date relaţional.Modelul relaţional este un model formal de organizare conceptuală a datelor,destinat reprezentării legăturilor dintre date şi bazat pe teoria matematică arelaţiilor. Modelul relaţional a fost definit cu rigoare matematică deosebită,fiind un mijloc performant de studiu al proprietăţilor logice ale unui sistem debaze de date. Modelul relaţional este orientat spre mulţimi în timp ce sistemeleierarhice şi reţea sunt orientate spre fişiere. În modelul relaţional relaţiile suntutilizate pentru a reprezenta informaţiile despre obiectele reprezentate în bazade date. Conform modelului relaţional datele sunt structurate logic sub formăde tabele care definesc relaţii. Fiecare relaţie are o denumire şi este definităprin atribute care sunt coloanele tabelei. O relaţie este reprezentată printr-untabel bidimensional, în care coloanele corespund atributelor, iar liniilecorespund înregistrărilor individuale. Ordinea coloanelor (atributelor) estearbitrară, relaţia fiind invariantă la modificarea ordinii atributelor. Pentrufiecare atribut există un domeniu de valori posibile. Domeniile pot fi diferitepentru fiecare atribut, dar este posibil ca mai multe atribute să aibă acelaşidomeniu. Conceptul de domeniu permite definirea sensului şi a sursei de valoripentru fiecare atribut. Un element unei relaţii este numit tuplu, şi corespundeunei linii a tabelei. Tuplurile pot apărea în orice ordine fără a modificasemnificaţia relaţiei fiind formate din valori concrete pentru toate atribute cedefinesc relaţia. Numim intensitate a relaţiei componenta fixă, invariantă, întimp a unei relaţii, formată din structura relaţiei împreună cu domeniile devalori pentru atribute şi eventualele restricţii asupra valorilor posibile. Numimextensie (stare) a relaţiei partea care se modifică în timp, adică tuplurile.Gradul relaţiei reprezintă numărul de coloane (atribute), iar cardinalitatearelaţiei numărul de linii (tupluri) pe care le are tabela ce defineşte relaţia.Gradul relaţiei este o parte a intensităţii relaţiei. Cardinalitatea exprimă starearelaţiei la un moment dat şi se modifică prin adăugarea, respectiv ştergerea detupluri. Spunem că o relaţie este normalizată dacă este structurată adecvat.Baza de date relaţională este o mulţime de relaţii normalizate. Numim

Page 41: Carte Baze de Date

41

schemă a relaţiei denumirea relaţiei urmată de o mulţime de perechi atribut,domeniu.

Un domeniu este o mulţime de valori care poate fi definită fieenumerând elementele componente, fie definind o proprietate distinctă adomeniului valorilor. Fie atributele A1, A2, . . ., An şi domeniile finite D1, D2,. . ., Dn, nu neapărat disjuncte. Mulţimea {A1:D1, A2:D2, . . ., An:Dn}reprezintă schema de relaţie. Numim tuplu, sau n-tuplu, un element (V1,V2, . ..,Vn) al produsului cartezian D1 D2 . . . Dn al domeniilor D1, D2, . . .,Dn, unde V1є D1, …, Vn є Dn.

O relaţie R pe mulţimile D1, D2, . . ., Dn este o submulţime aprodusului cartezian D1 D2 . . . Dn, adică o mulţime de tupluri. Mulţimeanumelor atributelor corespunzătoare unei relaţii o numim schemă relaţională şio notăm cu R (A1, A2, . . ., An). Putem reprezintă o relaţie printr-un tabelbidimensional în care fiecare linie corespunde unui tuplu, iar fiecare coloanăunui domeniu din produsul cartezian, de fapt unui atribut. Atunci când sereprezintă o relaţie sub forma unui tabel în care antetul coloanelor sunt înscrisenumele atributelor, iar fiecare linie reprezintă tuplurile (V1,V2, . . .,Vn) în carefiecare valoare este luată din domeniul corespunzător. Numele atributuluiexprimă semnificaţia valorilor din calcul coloanei respective. Numărulatributelor defineşte gradul relaţiei, iar numărul de tupluri din relaţie defineştecardinalitatea relaţiei.

O relaţie are următoarele proprietăţi:are o denumire care identifică relaţia în mod unic;fiecare element (celulă) al relaţiei conţine exact o valoarea atomică(singulară);fiecare atribut are o denumire unică în cadrul relaţiei;toate valorile unui tribut aparţin domeniului de valori al atributului;ordinea atributelor nu este semnificativă;fiecare tuplu este distinct; nu există tupliri duplicate;ordinea tuplurilor nu este semnificativă, dar poate optimiza accesulindividual la fiecare tuplu.

Atunci când inserăm tupluri într-o relaţie, este posibil ca un atribut săfie necunoscut sau nedefinit. Pentru a reprezenta acest tip de atribut a fostintrodusă o valoare convenţională în relaţie, şi anume valoarea null, carereprezintă o modalitate de a trata datele incomplete sau deosebite. Existăsistemele relaţionale care nu acceptă conceptul de null, care nu arecorespondent în logica booleană, din care face parte calculul predicatelorfolosit pentru modelul relaţional.

Page 42: Carte Baze de Date

42

Numim relaţie de bază o relaţie caracterizată printr-o denumire, carecorespunde unei entităţi din schema conceptuală, ale cărei tupluri suntmemorate în baza de date. O vizualizare este rezultatul dinamic al mai multoroperaţii relaţionale, care acţionează asupra relaţiilor de bază pentru a realiza oaltă relaţie. Numim relaţie virtuală o vizualizare. Spunem că un tabel este detip virtual (view, vizualizare, vedere), dacă reprezintă o relaţie virtuală. Relaţiavirtuală nu există fizic ca tabel în baza de date, ci doar ca definiţie a relaţiei,deoarece datele pe care le conţine nu sunt în realitate memorate, ele fiindincluse în alte tabele reale care reprezintă relaţii reale. Tabelul de tip view(vizualizare, filtru, relaţie virtuală) reprezintă o filtrare a unui tabel iniţial, saumai multor tabele legate între ele, necesară unei anumite abordări, unei anumiteaplicaţii. Utilizarea vizualizărilor asigură securitatea tabelelor iniţiale şi permiteprezentarea informaţiei în conformitate cu drepturile de acces al fiecăruiutilizator, asigură accesul la date personalizat pentru fiecare utilizator şi în plussimplifică operaţiile complexe asupra relaţiilor de bază. Deoarece vizualizărilesunt relaţii virtuale toate reactualizările efectuate asupra relaţiilor de bază caresunt folosite la definirea relaţiilor virtuale trebuie să fie imediat reflectateimediat de toate vizualizările afectate.

Pentru o relaţie trebuie să fie posibilă identificarea în mod unic afiecărui tuplu prin valorile atributelor ce definesc relaţia. Numim supercheieun atribut sau o mulţime de atribute care identifică în mod unic fiecare tuplurelaţiei. Numim cheie candidat o supercheie pentru care nici o submulţime deatribute nu este supercheie. Cheia candidat are două proprietăţi: unicitatea şiireductibilitatea. Numim cheie primară cheia candidat selectată pentru aidentifica în mod unic tuplurile din cadrul relaţiei. Cheile candidat care nu suntcheie principală se numesc chei alternative. Numim cheie străină un atributsau o mulţime de atribute care sunt identice cu cele din cheia candidat ale uneialte relaţii. Model relaţional este caracterizat de trei elemente:

structura relaţională a datelor;operatorii de tip relaţional folosiţi în model;regulile de integritate care se aplică asupra cheilor în model.

În anul 1985, E.F. Codd a publicat un set de 13 reguli de fidelitate pebaza cărora se apreciază dacă un sistem de gestiune de baze de date poate ficonsiderat relaţional. Majoritatea sistemelor de gestiune de baze de dateconsiderate ca fiind de tip relaţional nu respectă absolut toate regulile definitede Codd, mai mult, în prezent, lista este reformulată şi cuprinde 100 de regulii.

Regula 0 – regula gestionării datelor: Un SGBD considerat ca fiindrelaţional trebuie să fie capabil să gestioneze o bază de date prin posibilităţilesale relaţionale. Aceasta înseamnă că SGBD nu va folosi pentru definirea şi

Page 43: Carte Baze de Date

43

manipularea datelor operaţii care nu sunt de tip relaţional. Practic, majoritateaimplementările existente de SGBD nu respectă această regulă.

Regula 1 – regula reprezentării datelor: Într-o bază de daterelaţională, informaţia este reprezentată explicit la nivel logic sub forma unortabele ce poartă numele de relaţii. Este regula cea mai importantă şi conformlui E.F. Codd şi în cazul în care un SGBD care nu respectă această regulă, nupoate fi considerat relaţional. Referirea la nivelul logic precizează că elementede construcţii logice, cum sunt indecşi, nu au obligatoriu o reprezentare subformă de tabele.

Regula 2 – regula accesului garantat la date: Fiecare valoare dedată (valoare atomică) dintr-o bază de date trebuie să poată fi adresată în modlogic printr-o combinaţie formată din numele relaţiei, valoarea cheii primare şinumele atributului. Se poate regăsi orice valoare aparţinând oricărui atribut alunei relaţii, dacă sunt specificate numele relaţiei, numele atributului şi valoareacheii primare.

Regula 3 – regula reprezentării informaţiei necunoscute (tratareasistematică a valorilor null): Un sistem relaţional trebuie să permităutilizatorului definirea unui tip de date numit null pentru reprezentarea uneiinformaţii necunoscute la momentul respectiv indiferent de tipul de dată.Într-un SGBD relaţional trebuie să putem face diferenţa între valoarea zero, unşir vid de caractere şi o valoare necunoscută.

Regula 4 – regula dicţionarelor de date (catalog dinamic on-line,bazat pe modelul relaţional): Asupra descrierii bazelor de date (informaţiirelative la relaţii, vizualizări, indecşi, etc) trebuie să se poată aplica aceleaşioperaţii ca şi asupra datelor din baza de date. Descrierea bazei de date estereprezentată la nivel logic sub forma unor tabele care pot fi accesate în acelaşimod ca şi datele efective.

Regula 5 – regula limbajului de interogare (sub-limbaje de datecuprinzătoare): Trebuie să existe cel puţin un limbaj care să permită: (1)definirea datelor, (2) definirea vizualizărilor, (3) manipularea datelor(interactiv sau prin intermediul programului), (4) constrângerile de integritate,(5) autorizarea, (6) limitele tranzacţiilor (început, execuţie, reluare). Îngeneral, toate implementările SQL respectă această regulă. Limbajul permiteutilizatorilor să definească relaţii şi vizualizări, să regăsească informaţia şi să opoată actualiza, să verifice şi să corecteze datele de intrare etc.

Regula 6 – regula de reactualizare a vizualizării: Toate vizualizărilecare sunt teoretic reactualizabile pot fi reactualizate de sistem. Un SGBDtrebuie să poată determina dacă o vizualizare poate fi actualizată şi să stochezerezultatul interogării într-un dicţionar de tipul unui catalog de sistem. Trebuiesă existe un mecanism prin care să se poată determina dacă anumite vizualizări

Page 44: Carte Baze de Date

44

pot fi actualizate sau nu. Majoritatea implementărilor SQL stabilesc aceasta, înfuncţie de variantele instrucţiunii de selecţie utilizate.

Regula 7 – regula limbajului de nivel înalt (operaţiile de inserare,reactualizare şi ştergere de nivel înalt): Regulile de manipulare asupra uneirelaţii luată ca întreg sunt valabile atât pentru operaţiile de regăsire a datelor,cât şi asupra operaţiilor de inserare, actualizare şi ştergere a datelor. UnSGBD relaţional nu trebuie să oblige utilizatorul să caute într-o relaţie, tuplu cutuplu, pentru a regăsi informaţia dorită. Operaţiile de manipulare a datelor potfi aplicate atât în mod interactiv cât şi prin program, într-un limbaj gazdă.

Regula 8 – regula independenţei fizice a datelor: Programele deaplicaţie şi activităţile utilizatorilor nu depind de modul de stocare a datelorsau de modul de acces la date. Într-un SGBD relaţional trebuie să se separeaspectul fizic al datelor (stocare sau acces la date) de aspectul logic al datelor.

Regula 9 – regula independenţei logice a datelor: Programele deaplicaţie şi activităţile utilizatorilor trebuie să fie transparente la modificărilede orice tip efectuate asupra datelor. Orice modificare efectuată asupra uneirelaţii, nu trebuie să afecteze operaţiile de manipulare a datelor, programele deaplicaţie şi mecanismele de interogare directă nu sunt afectate de modificărilefăcute asupra datelor.

Regula 10 – regula independenţei datelor din punct de vedere alintegrităţii: Constrângerile de integritate specifice unei baze de daterelaţionale nu vor fi definite programele de aplicaţie ci de sub-limbajulrelaţional de date, urmând a fi memorate în catalogul sistem. (Regulile deintegritate trebuie să fie definite într-un sub-limbaj relaţional, nu în programulde aplicaţie). Limbajul SQL permite definirea de restricţii privind integritateadatelor şi stocarea lor în catalogul de sistem prin aceasta asigurându-secontrolul centralizat asupra constrângerilor.

Regula 11 – regula independenţei datelor din punct de vedere aldistribuirii: Sub-limbajul de manipulare a datelor trebuie să permităutilizarea aceloraşi programe de aplicaţie şi interogări (să fie invariante dinpunct de vedere logic)pentru a accesa date centralizate sau distribuite(Distribuirea datelor pe mai multe calculatoare dintr-o reţea de comunicaţii dedate, nu trebuie să afecteze programele de aplicaţie şi interogările, dacă şi oride câte ori datele sunt centralizate sau distribuite fizic). Independenţa dedistribuţie presupune ca un program de aplicaţie care accesează sistemulSGBD pe un singur calculator trebuie să funcţioneze fără modificări şi într-oreţea chiar dacă datele sunt mutate de pe un calculator pe altul, utilizatorulpercepând datele fără a cunoaşte locul în care sunt stocate. Programele deaplicaţie trebuie să funcţioneze fără modifică şi într-o reţea, chiar dacă datelesunt transferate de pe un calculator pe altul.

Page 45: Carte Baze de Date

45

Regula 12 – regula versiunii procedurale a SGBD (nonsubversiune):Orice componentă procedurală a unui SGBD trebuie să respecte aceleaşireguli de integritate ca şi componenta relaţională (orice limbaj de nivelinferior trebuie să respecte aceleaşi reguli de integritate exprimate în limbajulrelaţional de nivel înalt).

Cele 13 reguli pot fi grupate în cinci domenii de funcţionalitate:- reguli fundamentale (regula 0 şi regula 12);- reguli structurale (regula 1 şi regula 6);- reguli de integritate (regula 3 şi regula 10);- reguli de manipulare a datelor (regula 2, regula 4, regula 5, regula 7);- reguli privind independenţa de date (regula 8, regula 9 şi regula 11).

Un SGBD este minimal relaţional dacă datele din cadrul bazei de datesunt reprezentate prin valori în tabele, nu există pointeri observabili de cătreutilizatori, iar sistemul suportă operatorii relaţionali de proiecţie, selecţie şicompunere naturală, fără limitări impuse din considerente interne.

Un SGBD este complet relaţional dacă este minimal relaţional şi, înplus, sistemul suportă restricţiile de integritate de bază (unicitatea cheiiprimare, constrângerile de referinţă, integritatea entităţii) şi precum şi toateoperaţiile de bază ale algebrei relaţionale.

Un SGBD relaţional îndeplineşte funcţiile unui SGBD, cu anumiteparticularităţi care decurg din concepţia de organizare a datelor, respectiv dinmodelul relaţional. Fiecare SGBD relaţional implementează modelul relaţionalîntr-o manieră proprie care îl diferenţiază de restul sistemelor relaţionale.

Caracterizarea unui SGBD relaţional se poate realiza la nivelul claseide SGBD relaţionale, în sensul caracterizării globale, unitare în raport cucelelalte tipuri de SGBD, sau la nivelul unui SGBD relaţional individual însensul caracterizării particularităţilor sale, în raport cu alte SGBD de tiprelaţional.Realizarea funcţiilor unui SGBD relaţional se face cu ajutorul unorinstrumentele şi mecanisme de lucru specifice de tip relaţional, care le separăde sistemele considerate ca fiind nerelaţionale:

- un limbaj relaţional pentru descrierea datelor la nivel fizic, logic şiconceptual;- un limbaj relaţional pentru manipularea datelor;- mecanisme pentru controlul integrităţii semantice a datelor;- mecanisme pentru optimizarea cererilor de date;- mecanisme pentru asigurarea coerenţei datelor în condiţiile accesuluila date;

Page 46: Carte Baze de Date

46

- utilitare pentru generarea de formulare şi rapoarte, utilitare pentrugenerarea de aplicaţii, utilitare pentru generarea unor statisticireferitoare la starea şi activitatea bazei de date, etc.

Un obiectiv important a proiectării unei baze de date de tip relaţional îlreprezintă gruparea atributelor în relaţii astfel încât redundanţa datelor să fieminimă. Relaţiile care conţin date redundante pot crea probleme, denumiteanomalii de reactualizare, care clasificate în:

anomalii de ştergere constau în faptul că anumite date careurmează să fie şterse, fac parte din tupluri în care se găsesc şi altedate care mai sunt necesare în continuare, ori ştergerea făcându-sela nivelul tuplului, acestea se pierd;anomalii de inserare (adăugare) constau în faptul că anumite datecare urmează să fie adăugate fac parte din tupluri incomplete(pentru care nu se cunosc toate datele), ceea ce face ca acestea sănu poată fi adăugate;anomalii de modificare rezultă din faptul că este dificil demodificat o valoare a unui atribut atunci când ea apare în mai multetupluri ale relaţiei.

Spunem că un atribut B al unei relaţii R depinde funcţional de un altatribut A, atunci când fiecărei valori a atributului A îi corespunde exact oanumită valoare atributului B (A B). Dependenţa funcţională este oproprietate a semnificaţiei sau a semanticii atributelor. Semantica indică modulîn care atributele sunt legate unele de altele şi specifică dependenţelefuncţionale ale acestora. Dependenţa funcţională este specificată ca oconstrângere între atribute. Dacă atributul B depinde funcţional de atributul A,spunem că atributul A este determinatul atributului B. Spunem că odependenţă funcţională este totală sau completă dacă cele două atribute au odependenţă funcţională în ambele sensuri (A B şi B A). Pentru trei atributeA, B şi C, în care A B şi B C spunem că C este dependent tranzitiv de Aprin intermediul atributului B, dacă avem şi A C. În acest caz spunem căexistă o dependenţă tranzitivă.

Eliminarea acestor anomalii se realizează cu ajutorul operaţiei numitenormalizare, care este o tehnică formală care se bazează pe cheile primare,respectiv cheile candidat ale relaţiilor şi pe dependenţele funcţionale. Tehnicainclude o mulţime de reguli care pot fi utilizate pentru testarea relaţiilorindividuale. Dacă o anumită cerinţă nu este îndeplinită pentru o anumită relaţie,atunci relaţia în cauză va fi descompusă în relaţii care satisfac în modindividual cerinţele normalizării. Normalizarea presupune parcurgerea uneisuccesiuni de paşi, fiecare pas corespunzând unei forme normale. Prin

Page 47: Carte Baze de Date

47

parcurgerea etapelor de normalizare relaţiile devin progresiv mai restrictive caformat şi mai puţin vulnerabile la anomaliile de actualizare. Procesul denormalizare a relaţiilor se realizează în mai mulţi paşi, începând cu formanormală unu (1NF) şi ajungând la forma normală cinci (5NF). Pentru modelulrelaţional doar prima formă normală (1NF) este de importanţă critică,celelalte forme normale fiind opţionale. Pentru a înlătura aceste anomalii, E.F.Codd a stabilit iniţial trei forme normale pentru relaţii şi a introdus procesul denormalizare care se bazează pe noţiunea de dependenţă funcţională ca relaţieîntre atributele unei entităţi care are un caracter invariant. Teoria normalizăriise ocupă cu îmbunătăţirea succesivă a schemei conceptuale, fiind satisfăcute, înacelaşi timp, următoarele condiţii:

conservarea datelor, adică în schema conceptuală finală să existetoate datele din cadrul schemei iniţiale;conservarea dependenţelor dintre date, adică să se păstreze tipurilede relaţii dintre entităţi;descompunerea minimală a relaţiilor iniţiale, adică în schemaconceptuală finală nici o relaţie nu trebuie să fie conţinută într-alta.

O relaţie este în forma normală unu (1NF), dacă şi numai dacă toateatributele ei conţin numai valori atomice, adică o sigură valoare şi numai una.În plus, un tuplu nu trebuie să conţină atribute sau grupuri de atribute repetitive.Este forma de bază a relaţiilor, care figurează ca cerinţă minimală la majoritateasistemelor de gestiune a bazelor de date de tip relaţional.

O relaţie este în a doua formă normală (2NF), dacă este în formanormală unu şi oricare dintre atributele non-cheie este dependent funcţionalcomplet de cheia primară a relaţiei.

O relaţie este în a treia formă normală (3NF), dacă se găseşte în formanormală doi şi toate atributele non-cheie sunt dependente tranzitiv de cheiaprimară.

În afara primelor trei forme normale au fost introduse şi formelenormale: forma normală Boyce – Codd (BCNF), a patra formă normală (4NF)şi a cincia formă normală (5NF) care conduc la diminuarea redundanţei în bazade date. Trecerea de la forma 3FN la 4FN şi 5FN se face operând asupra cheilorcompuse între ale căror atribute apar relaţii care generează dependenţe ce nusunt funcţionale, numite dependenţe multi-valoare.

O relaţie este în forma normală Boyce – Codd (BCNF), dacă fiecaredeterminant este o cheie candidat.

A patra formă normală (4NF) elimină redundanţele datorate relaţiilorde tip n:m, adică a dependenţelor multiple.

A cincia formă normală (5NF) elimină dependenţele multiple de tipciclic, având ca rezultat o descompunerea a relaţiilor de tip uniune fără

Page 48: Carte Baze de Date

48

pierderi, din relaţiile rezultate în urma descompunerii putând fi reconstituitărelaţia iniţială. Dependenţa de tip uniune fără pierderi este o proprietate aoperaţiei de descompunere, care garantează că nu sunt introduse linii falseatunci când relaţiile rezultare în urma descompunerii sunt reunite printr-ooperaţie de uniune naturală.

Operatorii modelului relaţional

Operatorii modelului relaţional definesc operaţiile care pot fi efectuateasupra relaţiilor, pentru realizarea funcţiilor de prelucrare asupra datelor dinbaza de date. Modelul relaţional foloseşte operatori relaţie din algebrarelaţională şi calculul relaţional. Algebra relaţională şi calculul relaţional suntlimbaje formale utilizate pentru bazele de date relaţionale ca suport pentrulimbajul de manipulare a datelor, de nivel înalt. Algebra relaţională a fostintrodusă de E.F. Codd în 1971 ca o mulţime de operaţii formale în careoperanţii şi rezultatul sunt relaţii şi care acţionează asupra uneia sau a maimultor relaţii pentru a defini o nouă relaţie, fără a modifica relaţiile iniţiale. Ceicinci operatorii fundamentali ai algebrei relaţionale sunt fie operatori folosiţipentru operaţiile de regăsire: selecţia (sau restricţia), proiecţia, produsulcartezian, reuniunea şi diferenţa, şi alţi trei operatori pentru operaţiile deuniune, intersecţie şi împărţire, adică operatori tradiţionali pe mulţimi(UNION, INTERSECT, PRODUCT, DIFFERENCE) şi operatori relaţionalispeciali (PROJECT, SELECT, JOIN, DIVISION). Operatorii de selecţie şiproiecţie sunt unari, operând asupra unei singure relaţii, iar ceilalţi suntoperatori binari, acţionând asupra unei perechi de relaţii. În algebra relaţionalăse specifică în mod explicit o anumită ordine pentru evaluarea oricărei expresii,ceea ce implică o anumită strategie de evaluare a interogării bazei de date.

În calculul relaţional o interogare precizează ce va fi extras din baza dedate fără a se preciza modul de evaluare a unei interogări. Calculul relaţionaleste o adaptare a calculului predicatelor din logica simbolică aplicat pentruinterogarea bazelor de date. În logica simbolică, un predicat este o funcţie demai multe variabile, care are o valoare de adevăr. Înlocuind variabile cu valorise obţine o expresie numită propoziţie, care poate fi adevărată sau falsă.Variabilele iau valori dintr-un domeniu dat. Calculul relaţional se prezintă subdouă forme: orientat spre tupluri şi orientat spre domenii. Pe baza unorpredicate iniţiale, prin aplicarea unor operatori ai calculului cu predicate(conjuncţia, disfuncţia, negaţia, cuantificatorul existenţial şi cuantificatoruluniversal) se pot defini noi predicate, noi relaţii.

Page 49: Carte Baze de Date

49

J.D. Ullmann a demonstrat echivalenţa dintre algebra relaţională şicalculul relaţional. Motiv pentru care orice relaţie posibil de definit în algebrarelaţională poate fi definită şi în cadrul calculului relaţional, şi reciproc.

Page 50: Carte Baze de Date

50

Integritatea referenţială

Constrângerile de domeniu sunt restricţii care se aplică asupramulţimi de valori permise pentru atributele relaţiilor.

Regulile de integritate sunt constrângeri sau restricţii ce se aplicătuturor instanţelor din baza de date, adică aserţiuni pe care datele conţinute înbaza trebuie să le satisfacă şi prin care se asigură corectitudinea datelor. Se facedistincţie între regulile structurale, care sunt inerente modelării datelor şiregulile de funcţionare (comportament), care sunt specifice unei aplicaţiiparticulare. Există trei tipuri de constrângeri structurale (de cheie, de referinţă,de entitate) ce constituie mulţimea minimală de reguli de integritate pe caretrebuie să le respecte un SGBD relaţional şi care sunt definite în raport cunoţiunea de cheie a unei relaţii. Integritatea entităţilor impune ca într-o relaţiede bază (care corespunde unei entităţi în schema conceptuală) nici un atribut alunei chei primare nu poate fi null. Conform reguli de integritate referenţialedacă o relaţie are o cheie externă atunci orice valoare a cheii externe vacoincide cu valoarea unei chei candidat a unui tuplu în relaţia de bază a acesteiasau este o valoare null. Sunt formulate trei reguli de integritate structurală:

- unicitatea cheii: cheia primară trebuie să fie unică şi minimală;- integritatea entităţii: atributele cheii primare trebuie să fie diferite devaloarea null;- integritatea referirii: o cheie externă trebuie ori să fie null înîntregime, ori să corespundă la o valoare a cheii primare asociate.

2.11. Întrebări teoretice de auto-evaluare

1. Explicaţi:a. Conceptul de bază de dateb. Noţiunea de model de datec. Modelul Entitate-Relaţied. Tipurile de chei în cadrul modelării bazei de datee. Obiectivele datelor în baze de datef. Sistemele de gestiune a bazelor de date. Obiectiveg. Funcţiunile sitemelor de gestiune a bazelor de dateh. Componentele unui mediu SGBD

2. Analizaţi diferenţele dintre limbajele pentru definirea datelor, limbajelepentru manipularea datelor şi limbajele pentru controlul datelor.

Page 51: Carte Baze de Date

51

3. Prezentaţi principalele concepte din cadrul proiectării bazelor de date.

4. Modelul de date relaţional. Baza de date relţională.

5. Detaliaţi cele 13 reguli ale lui Codd.

6. Operatorii modelului relaţional. Integritate referenţială.

Page 52: Carte Baze de Date

52

Page 53: Carte Baze de Date

53

CAP.3. MICROSOFT ACCESS

3.1. Rezumatul capitolului

Capitolul curent îşi propune deprinderea noţiunilor şi operaţiilorspecifice pentru crearea bazelor de date Access. Datele sunt salvate în tabele.Acestea pot fi actualizate sau consultate prin intermediul cererilor(interogărilor) şi/sau a rapoartelor. Pentru a crea o interfaţă grafică cuutilizatorul (GUI – Graphical User Interface) este necesară creareaformularelor. Acţiunile pe care Access le realizează ca răspuns la un anumiteveniment constituie o definiţie structurată salvată sub forma unui macro.Procedurile definite de utilizator – scrise în limbajul de programare VisualBasic poartă numele de module. Un obiect care conţine un obiect HTML şi altefişiere suport în vederea furnizării accesului la date prin intermediul unuibrowser Internet poartă numele de Pages (pagini web).

3.2. Noţiuni generale privind bazele de date ACCESS

Sistemul de gestiune a bazelor de date (SGBD) Microsoft Access faceparte din pachetul de aplicaţii Microsoft Office exploatabil sub sistemele deoperare Windows 2000 şi Windows XP. Microsoft Access are caracteristicilespecifice unui sistem de gestiune a bazelor de date relaţionale; care reprezintătotodată un instrument complex de dezvoltare a aplicaţiilor de baze de date.Microsoft Access include facilităţile oferite de sistemul de operare MicrosoftWindows; în plus, permite şi facilităţi de tipul drag and drop. Microsoft Accesseste compatibil cu tehnicile de legare şi încapsulare din tehnologia OLEMicrosoft. Caracteristicile definitorii ale SGBD Access sunt următoarele:

1. Posibilitatea creării unei baze de date care poate fi utilizată de cătreun utilizator sau mai mulţi utilizatori în mod partajat;2. Interogarea bazei de date se poate realiza în mod grafic prin interfaţaQBE (Query By Example), sau prin limbajul SQL (Standard QueryLanguage);3. Automatizarea unor activităţi/acţiuni prin macro-comenzi sau prinaplicaţi program în limbajul VBA;4. Realizarea importului/exportului de date către alte aplicaţii alepachetului Microsoft Office sau alte SGBD de tip relaţional;5. Interfaţa utilizator este uşor de folosit şi respectă principiile deutilizare caracteristice tuturor aplicaţiilor pachetului MS Office;6. Asistenţă în dezvoltarea aplicaţiilor şi utilizarea bazei de date;

Page 54: Carte Baze de Date

54

7. Existenţa componentei Help şi a facilităţilor de ajutor de tipcontextual;8. Instrumente de lucru interactiv pe baze model de tip Wizard pentru aajuta utilizatorii în dezvoltarea de aplicaţii;

O bază de date ACCESS este bază de date relaţională orientată spreobiecte, o colecţie de informaţii memorate într-un fişier având extensia .MDBsau .MDE, conţinând diferitele obiecte. Prin utilizarea formatului .MDE pentrubaza de date ACCESS devine imposibilă modificarea obiectelor bazei de date şieste ascuns codul program Visual Basic. Obiecte pe care le poate conţine obază de date ACCESS sunt:

Tabelele

Tabelele conţin datele propriu-zise corespunzătoare entităţilordin baza de date, organizate sub forma unei matrice în care coloane reprezintăatribute (câmpuri), iar liniile apariţiile, realizările entităţii (înregistrări). Oînregistrare este o linie dintr-un tabel, în care fiecare câmp conţine o valoareconcretă dintr-un domeniu de valori şi conţine informaţii care identifică oanumită realizare concretă a entităţii; persoană, loc sau obiect. Un câmp este oinformaţie individuală din componenţa unei înregistrări, iar fiecare coloană dintabelul Access reprezintă un câmp diferit. O bază de date Microsoft Accesspoate cuprinde cel mult 32.768 de tabele, dintre care 254 pot fi deschisesimultan, dacă există suficiente resurse disponibile. Tabelele unei baze de dateau unul sau mai multe câmpuri ce identifică în mod unic fiecare înregistrare dinacel tabel şi formează cheia primară pentru tabela respectivă.

Câmpurile din tabele ACCESS sunt definite ca fiind de un anumit tipde dată cu care se va încărca fiecare câmp:- AutoNumber nu poate fi modificat manual. Deşi este incrementat secvenţial înmod implicit, se poate stabili şi o incrementare aleatoare;- Text este destinat informaţiei de tip şir de caractere (maxim 255 caractere);- Lookup permite stocarea unei valori, dar afişează textul ce însoţeşte valoarearespectivă. Acest tip de câmp poate fi legat de fapt de un alt tabel sauinterogare, de unde îşi extrage informaţiile pe care le afişează sub forma unuicombo box;- Number are mai multe sub-tipuri, determinate de proprietatea field size:

Byte cu interval valoric între 0 şi 255;Integer cu interval valoric între–32.768 şi 32.767;Long Integer cu interval valoric între –2.147.483.648 şi2.147.483.647;

Page 55: Carte Baze de Date

55

Single cu interval valoric între–3,4*1038

şi 3,4*1038

;

Double cu interval valoric între–1,797*10308

şi 1,797*10308

;Decimal cu interval valoric între –22337203685477.5808 şi922337203685477.5808;

- Memo este utilizat pentru text de lungime ce poate depăşi 255 de caractere;- Obiecte OLE este tot un câmp pentru obiecte predefinite;- Date/Time conţine informaţii de dată calendaristică şi/sau timp;- Yes/No conţine date de tip logic una din cele două stări: yes/no, on/off,true/false.

Interogările

Interogările sunt obiecte virtuale de tip tabelă, adică vizualizări,care nu au corespondent fizic, fiind definite cu ajutorul tabelelor definite dejaîn baza de date. Tabelele virtuale definite cu ajutorul interogărilor permitefectuarea:

selecţiilor şi sortărilor în tabele;calculelor simple şi analizelor încrucişate;acţiunilor (adăugarea, ştergerea, actualizarea înregistrărilor);operaţiilor SQL.

Formularele

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

Rapoartele

Rapoartele sunt obiecte folosite pentru a sintetiza datele stocateîntr-o tabela reală sau virtuală şi a oferi un rezultat tipărit al informaţiilor dinbaza de date – un raport ACCES, de la cea mai simplă listă a unui tabel până larapoartele cele mai complexe ce conţin regrupări de înregistrări şi calcule.

Paginile de prezentare

Paginile de prezentare reprezintă obiecte specifice ACCESS carepermit afişarea într-un format accesibil care permite transmiterea rapidă adatelor prin Internet sau Intranet.

Page 56: Carte Baze de Date

56

Macro-urile

Macro-comenzile ACCESS reprezintă o modalitate optimă deacces la date, care permit automatizarea mai multor sarcini folosind un limbajspecific. Pentru a rezolva o sarcină mai complexă se poate construi un macro(format dintr-o mulţime de acţiuni) sau o procedură (formată dintr-osuccesiune de instrucţiuni în Visual Basic).

Modulele

Modulele program conţin o parte a codului VBA al aplicaţiei, şianume declaraţiile de variabile şi constante, funcţiile şi procedurile globale aleîntregii aplicaţii. VBA reprezintă un mediu de programare orientat obiect.

Structura unui obiect: Un obiect este o entitate autonomă ce prezintăcaracteristici (proprietăţi: mărime, culoare, valoare etc.) şi comportamente(metode) proprii. Unele obiecte au o reprezentare vizuală (Formular, Raport,etc.) în timp ce altele nu sunt accesibile decât în cod VBA (DBEngine,Container etc.) Marea majoritate a obiectelor vizuale au posibilitatea de areacţiona la evenimente (deschidere, actualizare etc.). Programarea VBApermite declanşarea evenimentelor, comportamentelor specifice asupraobiectelor prin intermediul codului program: metode, proceduri şi funcţii.Astfel VBA permite o mare flexibilitate de funcţionare şi o întreţinere maiuşoară.

Evenimentul reprezintă acţiunea utilizatorului sau a sistemului asupraunui obiect ceea ce declanşează execuţia codului program corespunzător.

Metoda constă în codul program predefinit ce se raportează la un tip deobiect şi care se execută în momentul apariţiei unui eveniment.

Procedura este alcătuită dintr-un set de instrucţiuni (un modulprogram) ce nu returnează nici o valoare ci execută o anumită acţiune.

Funcţia constă dintr-un set de instrucţiuni (un modul program) care înurma execuţiei returnează o valoare de un anumit tip.

Page 57: Carte Baze de Date

57

3.2.Tipuride

fişiere în ACCESSMicrsosoft Access foloseşte mai multe tipuri de fişiere:

fişierul .MDB este fişierul Database/Bază de date propriu-zisă. Aici seregăseşte întreg conţinutul bazei de date, şi anume, datele (Tabele),legături (Relations/Relaţii), interfaţa vizuală (Formulare şi Rapoarte) şicodul (Interogări, Macro-uri şi Module);fişierul .ADP este un proiect Access ce permite crearea unei aplicaţiiclient-server cu SQL Server 2000.fişierul .MDE este un fişier ce poate fi generat pornind de la un fişier.MDB şi care nu mai permite utilizatorului nici să modifice formulareleşi rapoartele nici să vadă codul.fişierul .MDW (system.mdw) este o bază de date Work Group cestochează informaţiile de siguranţă despre utilizatori şi grupe, la fel caşi despre opţiunile Access.fişierul .MDA este o bază de date Biblioteca/Library şi poate avea uncod ce poate fi pus la dispoziţia altor baze de date, la fel ca şicomplemente pentru a extinde posibilităţile ACCESS.fişierul .LBD conţine informaţii despre securizarea fişierului şi esteadministrat automat de Access.

3.3. Lucru cu ACCESSCa majoritatea programelor Windows, Access poate fi lansat în execuţie

prin navigarea meniului butonului Start.Pentru a porni, click pe butonul Start > meniul All Programs

>meniul MS Office > Microsoft Access . Meniul MS Office estearătat mai jos.

OBIECT

COMPORTAMENTE CARACTERISTICI

DATE LISTA DE EVENIMENTECOD

METODE(PREDEFINITE)

PROCEDURI ŞI FUNCŢII

PROPRIETĂŢI

Page 58: Carte Baze de Date

58

Access se deschide pe ecran:

Utilizarea barei meniuBara meniu este similara celorlalte programe Microsoft Office. Ea

conţine meniurile:File - cu opţiunile New, Open, Close, Save şi Print care sunt folositepentru acţiuni asupra fişierelor baze de date şi asupra conţinutuluiacestr fişiere. Acest meniu conţine şi opţiunea Exit pentru încheiereaunei sesiuni de lucru Access.Edit - Cut, Copy, Paste, DeleteView - Vizualizarea diferitelor obiecte datatabase (tables, queries,forms, reports)Insert - Inserarea unui nou tabel, interogare, formular, raport (Insert anew Table, Query, Form, Report, etc.)

Bara deinstru-menteAccess

Panoulcusarcini

Page 59: Carte Baze de Date

59

Tools - Conţine o varietate de instrumente pentru verificare spelling,crearea de relaţii intre tabele, realizarea de analize şi diferite utilităţiasupra conţinutului unei baze de date. Window - Switch între bazele de date deschise.Help - Obţinerea care activează un ansamblu de ferestre help înAccess.

Meniul File.1. Se deschide opţiunea File.2. Se executa click pe comanda Open, punctele de suspensie indica faptul

ca selectarea comenzii va determina deschiderea unei casete de dialogcare va solicita informaţii suplimentare.

3. Se deschide caseta de dialog Open. Aici puteţi selecta directorul careconţine fişierul pe care doriţi să-l deschideţi, după care puteţi selectafişierul. Executaţi click pe Cancel (revocare) pentru a închide caseta dedialog fără a deschide un fişier.

Meniul View1. Executaţi click pe opţiunea View dine bara de meniuri. Se deschide

meniul View.2. Executaţi click pe intrarea Database Objects (obiecte de tip baza de

date). Este afişat un sub-meniu, în care sunt enumerate comenzisuplimentare; executaţi click pe oricare dintre aceste comenzi, pentru ao selecta.

3. Apăsaţi tasta ESC de pe tastatura sau executaţi click oriunde în afarameniului deschis. Procedând astfel, închideţi meniul fără a selecta ceva.

3.4. Noţiuni practice în ACCESS

Crearea bazelor de date şi a tabelelor

Modul de vizualizare Design View introducerea câmpurilor cutipul de dată asociat şi descrierea corespunzătoare (modul în care se defineştestructura tabelelor din baza de date).

Utilizatorul poate crea o baza de date nouă (fie fără înregistrări - de tipblank, fie cu câteva tabele create interactiv cu database wizard), sau poate sădeschidă o baza de date existentă.

În general, la începutul unui proiect, trebuie creată o bază de datenouă, de tip blank. După ce este creată o bază de date, aceasta se deschide

Page 60: Carte Baze de Date

60

utilizând opţiunea Open existing database pentru a redeschide baza de datecreată anterior.

Observaţie - Dacă este creată o baza de date şi după aceea creaţi o altafolosind acelaşi nume, noua baza se va suprascrie peste cea veche.

1. Daca nu este afişat panoul cu sarcini New File, deschideţi meniul Fileşi selectaţi New.

2. în zona New din caseta de dialog New File, executaţi click pe legăturaBlank database (baza de date vidă).

3. se deschide caseta de dialog File New Databases. Parcurgeţi calea deacces până la directorul în care doriţi să salvaţi noua bază de date.

4. în câmpul File name (nume de fişier) tastaţi un nume descriptiv pentrunoua bază de date.

5. executaţi click pe butonul Create.6. Access creează o noua baza de date şi afişează fereastra bazei de date:

Crearea tabelelor1. După ce aţi creat sau deschis baza de date pentru care doriţi să creaţi un

table executaţi click pe optiunea Tables de pe bara Objects dinfereastra bazei de date

2. Executaţi dublu-click pe opţiunea Create table in Design view(reprezintă modul cel mai eficient de creare a tabelelor) sau click pebutonul Design situate in bara de instrumente Tables. Crearea uneitabele utilizând instrumentul wizard permite adăugarea unor câmpuripredefinite ce se afla în cadrul bibliotecilor de tabele standardACCESS. Nu se recomandă aceasta modalitate deoarece câmpurile dincadrul tabelelor standard au fost create pentru sistemul de lucru

Fereastrabazeide date

Bara deinstru-menteTables

Bara deinstru-menteObjects

ButonulTables

Page 61: Carte Baze de Date

61

anglo-saxon. Create table by entering data, permite crearea tabelelorprin introducerea de date şi reprezintă o forma rapida de a introducedatele. Ea poate fi aplicata eficient în cadrul realizării unei aplicaţiicomplexe.

3. În fereastra design se deschide un tabel gol, conţinând coloanele FieldName (Nume câmp), Data Type (Tip de date) şi Description(descriere). În coloana Field Name se tastează un nume pentru primulcâmp, după care apăsaţi tasta Tab. La definirea câmpurilor unui tabel,este important să se folosească nume de câmpuri sugestive, care săofere un înţeles clar al datelor conţinute.

Numele câmpurilor în Access poate avea lungimea de până la 64caractere; este recomandat să nu fie folosite spaţii, în locul acestora, pentrudespărţirea cuvintelor folosindu-se caracterul liniuţă de subliniere (underscore).

4. Pentru a schimba tipul de date prestabilit, Text, cu altul, executaţi clickpe săgeata în jos din câmpul Data Type, şi selectati un nou tip de datădin lista care apare pe ecran. După care apăsaţi tasta Tab.

5. Opţional tastaţi o descriere de câmp în coloana description. Acest textapare pe bara de stare a ferestrei Table atunci când introduceţi date şiacest câmp este selectat.

6. Repetaţi pentru a continua să adăugaţi câmpuri.7. Pentru salvarea tabelului, deschideţi meniul File si selectaţi Save. 8. Se deschide caseta de dialog Save As. Tastaţi un nume pentru table si

executaţi click pe OK.9. acces pa solicita să stabiliţi o cheie primară.10. tabelul este salvat. Pentru a închide fereastra tabelului şi a reveni în

fereastra bazei de date, executaţi click pe butonul Close.

Page 62: Carte Baze de Date

62

Vizualizarea structurii unei tabele în fereastra Design11. Executaţi click pe tabelul pe care doriţi să-l deschideţi, pentru a-l

selecta.12. Executaţi click pe butonul Design situate în bara cu instrumente din

fereastra bazei de date.13. Tabelul este deschis în fereastra Design şi vă permite să efectuaţi

modificări în structura bazei de date:Adăugarea şi ştergerea unui nou câmpAdăugarea unei descrieri a câmpuluiSchimbarea unui nume de câmpSchimbarea tipului de date pentru un câmpStabilirea dimensiunii unui câmp de text/numericStabilirea cheii principale(executaţi click pe butonul Primary Keysituate în bara de instrumente Standard din fereastra principală aprogramului Access sau click dreapta şi Primary key.

Editarea structurii tabelelor din baza de dateFie tabela angajat cu următoarea structură:

Afişarea proprietăţilor unui câmp1. Executaţi click pe un câmp pentru a-i vizualiza proprietăţile;2. Fereastra de proprietăţi aflată la baza ferestrei afişează diverse

proprietăţi pentru câmpul selectat în fereastra de structură.3. executaţi click pe un alt câmp pentru ai vizualiza proprietăţile4. se observa că proprietăţile diferă în funcţie de tipul de câmp. Pe lângă

proprietăţile comune, câmpurile au o mulţime de proprietăţi asociatecare pot fi afişate şi modificate. La orice modificare executată asuprabazei de date, trebuie să salvaţi baza de date. În acest scop, executaţiclick pe butonul Save situat în bara cu instrumente Standard aprogramului Access.

Page 63: Carte Baze de Date

63

5. în cazul în care dorim să adăugăm un nou câmp se deschide tabelul invederea Design

6. ne poziţionăm cu cursorul pe câmpul înaintea căruia dorim să inserăm onouă linie şi din meniului asociat evenimentului click dreapta saumeniu Insert > Rows (bara de instrumente Standard a programuluiAccess).

7. apoi se introduce câmpul, tipul de date, descrierea (opţional) şistabilirea proprietăţilor pentru respectivul câmp:

Utilizarea formatului de afişare1. în fereastra proprietăţi click pe câmpul Format .2. apare pe ecran o săgeată în jos, în dreapta câmpului3. executaţi click pe săgeata în jos şi selectaţi din lista afişată pe ecran

formatul pe care doriţi să-l utilizaţi.4. după selecţia formatului executaţi click pe butonul Save (bara

Standard), pentru a salva modificarea în tabel.

Utilizarea unei măşti de intrareValidarea datelor folosind măştile de intrare – deoarece măştile de intrarenecesită introducerea unui anumit număr de caractere.

1. după selecţia tabelului (angajat) în fereastra Design executaţi click incâmpul căruia doriţi să-i aplicaţi o mască de intrare;

2. în fereastra de proprietăţi, executaţi click în câmpul Input Mask(masca de intrare). La dreapta câmpului apare un buton pe care se aflapuncte de suspensie;

3. executaţi click pe punctele de suspensie;4. Access va solicita să salvaţi baza de date înainte de a continua.

Executaţi click pe YES;5. Access lansează în execuţie Input Mask Wizard; primul ecran

afişează o lista de măşti de intrare disponibile. Selectaţi masca deintrare pe care doriţi sa o aplicaţi acestui câmp. Daca selectam Edit list

Page 64: Carte Baze de Date

64

este posibilă crearea unei noi intrări, utilizând sistemul de asistenta alprogramul Access pentru instrucţiuni specifice;

6. pentru a testa masca tasaţi o valoare în caseta de text Try It. Dacăsunteţi mulţumit de ceea ce aţi obţinut, executaţi click pe Next pentru acontinua.

7. Apare pe ecran următoarea fereastră a aplicaţie expert. În listaPlaceholder character (caracter de înlocuire), executaţi click pecaracterul care doriţi sa fie afişat de Access ca marcaj de rezervare inmasca de intrare. Caracterul de înlocuire sunt acele care apar în foaiade date atunci când introduceţi date în câmpul de intrare.

8. executaţi click Next.9. Input Mask Wizard permite salvarea modificării – cu sau fără

simbolurile utilizate in masca de intrare. Selectaţi opţiunea dorită şiexecutaţi click pe Next.

10. executaţi click Finish.11. noua mască de intrare este adăugată la foaia de proprietăţi:

12. salvam (Save)13. ne comutam la fereastra Datasheet14. toate intrările vide din acest câmp conţin masca de intrare.

Realizarea unui format personalizat1. click câmpul Format2. se tastează operatorul >

3. click Save.

Page 65: Carte Baze de Date

65

În urma introducerii operatorului “ >” toate caracterele introduce vor fitransformate automat în majuscule. Datele existente vor fi şi ele afectatede aceasta modificare.

Introducerea unei valori prestabiliteDaca introduceţi frecvent aceeaşi valoare într-un câmp, puteţi defini o valoareprestabilita, datele existente nu sunt afectate de aceasta modificare. Doar noileînregistrări vor fi utiliza valoarea prestabilită. Valoarea prestabilită poate fioricând modificată.

1. pentru a introduce o valoare prestabilită executaţi click pe câmpulDefault Value (Valoarea prestabilita)

2. se tastează valoarea prestabilită înscrisă între ghilimele.3. valoare prestabilita este inclusa în structura tabelei baza de date4. click Save.

Reguli de validareRegulile de validare testează conform criteriului furnizat sub forma uneiexpresii Access, valoarea introdusă într-un câmp.

1. în fereastra de proprietăţi click în câmpul Validation Rule.2. executaţi click pe punctele de suspensie3. apare ce ecran fereastra Expression Builder şi aici construiţi interactiv

regula de validare folosind operatori, identificatori, funcţii şi constante.4. Ok5. expresia este adăugată la lista de proprietăţi:

Page 66: Carte Baze de Date

66

6. Save.Textul de validare(Validation Text) reprezintă textul care va apărea în cazul incare valoarea introdusă nu respecta criteriul impus de regula de validare.

Câmpuri care nu pot fi nullPentru anumite câmpuri dorim să ne asigurăm că se vor introduce date.Introducerea unei valori pentru un câmp este impusă prin activarea proprietăţiiRequired pentru câmpul respectiv, astfel că utilizatorul va fi obligat săspecifice o valoare.

1. în foaia de proprietăţi click în câmpul Required (obligatoriu).2. click săgeată în jos şi selectaţi Yes (imaginea de mai sus)3. acest câmp necesită acum o intrare.4. Save

Indexarea după un câmpDacă la definirea structurii unei tabele nu se specifică pentru un câmp anume căreprezintă cheie primară, ACCESS include în structura tabelei un câmp cunumele ID care reprezintă numărul de înregistrare şi care va fi desemnat desistem ca fiind cheie primară. Tabela poate avea mai multe chei alternante, saucâmpuri care reprezintă chei de indexe. Aceste sunt necesare pentru a acceleraoptimiza interogarea bazei de date. Deoarece indexarea câmpurilor creştetimpul necesar pentru operaţiile de actualizare, este necesar ca numărul deindecşi să fie minim. Când se specifică un câmp ca fiind cheie de index sepoate preciza că respectivul câmp conţine o intrare unica (adică nu conţinevalori duplicat) sau sunt permise valori duplicat. Lucru util pentru câmpurilecare conţin valori care ar trebui sa fie unice. Dacă încercaţi să introduceţi o

Page 67: Carte Baze de Date

67

noua înregistrare cu o valoare care se repetă într-un câmp indexat care nuaccepta dubluri, veţi vedea pe ecran un mesaj de eroare.

1. click campul Indexed2. click sageata în jos şi din lista care apare pe ecran executaţi Click Yes

(Duplicates OK) sau No (No Duplicates).3. Save.

Pentru a stabili care este cheia principală se selectează câmpul după care se

selectează butonul primary key .

Selectarea unei valori dintr-o lista predefinita de valoriÎn cazul în care pentru un cîmp exită o listă de valori prestabilite se poateasocia lista respectivă cîmpului şi astfel la introducerea datelor valoarea va fiselectată din listă. Ordonarea elementelor listei nu se realizează automat, fiindsarcina utilizatorului.

1. Se deschide fereastra Design View de definire a structurii tabelei;2. Se selectează câmpul;3. În secţiunea Field Properties se selectează opţiunea Lookup;4. În lista ascunsă Display Control, se selectează Combo Box;5. În Row Source Type, se selectează Value List;6. În Row Source, se introduc valorile separate prin virgula.

Introducerea datelor în tabele

Modul de vizualizare Datasheet View permite introducerea de date întabel.

1. După de aţi deschis baza de date care conţine tabelul pe care doriţi să-ldeschideţi, executaţi click pe opţiunea Tables din bara Objects pentrua afişa tabelele disponibile in respective baza de date.

2. Executaţi click pe butonul Open situate în bara cu instrumente dinfereastra bazei de date, sau dublu-click mouse.

3. Tabelul se deschide în vederea Datasheet. Dacă aţi introdus înregistrăriîn tabel, acestea sunt vizibile în caz contrar, tabelul este vid.

4. În această fereastră, câmpurile (coloanele) apar ca şi cap de tabel înpartea superioara a ferestrei, iar imediat sub ele se completeazăînregistrările propriu-zise ale tabelului. În partea de jos a ecranuluiobservaţi numărul afişat de înregistrări conţinute de tabel. Pentru untabel vid apare afişată doar o singură linie goală.

5. Pentru a adăuga înregistrări în tabel (liniile tabelei reprezintă datepropriu-zise), se tastează simplu valorile corespunzătoare fiecărui câmpîn parte. Pentru deplasarea printre câmpurile unei înregistrări se

Page 68: Carte Baze de Date

68

foloseşte tasta Tab, iar pentru deplasarea printre înregistrările tabeluluitastele săgeată sus şi jos.

6. Salvarea datelor introduse se face automat la închiderea ferestrei.7. Pentru a naviga printre înregistrările tabelului se foloseşte bara

navigation bar din partea inferioara a ecranului:

8. Pentru a modifica datele existente, se navighează pe înregistrareadorita, se deplasează în câmpurile de interes şi se modifica valorileexistente cu alte valori noi.

9. Pentru a şterge o înregistrare se navighează pe înregistrarea de interesşi apoi se foloseşte fie comanda Delete din meniul Edit, fie aceeaşicomandă Delete din meniul asociat evenimentului click dreaptamouse.

10. Pentru a adăuga o nouă înregistrare, executaţi click pe butonul NewRecord (bara de navigare) a ferestrei tabelului sau click dreapta Newrecord. Când se apasă tasta Tab, după ce aţi completat ultimul câmp alliniei curente, Access salvează înregistrarea din acea linie şi creează oînregistrare nouă şi goală, pregătită pentru a primi noi înregistrări.

Fixarea coloanelorDacă o tablă are multe coloane, astfel încât nu le putem vedea pe toate înfereastra de vizualizare. În acest caz se poate fixa coloana de care avem nevoie,astfel încât aceasta să rămână pe ecran.

1. selectarea coloanei pe doriţi să o fixaţi.2. se deschide meniul Format > Freeze Columns.3. coloana este fixată. În momentul in care am “fixat” coloana, Access o

mută pe primul luc în fereastra de vizualizare.4. pentru a anula, deschideţi meniul Format > Unfreeze All Columns.

Ascunderea coloanelorO modalitate simplă de a va concentra pe anumite câmpuri din tabel esteascunderea coloanelor, care nu sunt relevante pentru ceea ce lucraţi în acelmoment.

1. executaţi click pe coloana pe care doriţi sa o ascundeti.2. deschideţi meniul Format şi selectaţi Hide Columns3. coloana este ascunsa. Pentru a afişa din nou coloana ascunsă,

deschideţi meniul Format > Unhide Columns

Page 69: Carte Baze de Date

69

4. se deschide caseta de dialog Unhide Columns, afişând coloanele dintabel. Fiecare coloana este însoţită de o caseta de validare. Coloaneleînsoţite de o caseta de validare sunt ascunse. Executaţi click pentru a obifa şi a afişa coloana.

5. Close.6. coloanele ascunse vor fi afişate.

Redimensionarea coloanelorToate coloanele unui tabel au aceeaşi mărime. Totuşi, le putem

re-dimensiona în funcţie de necesităţi.1. plasaţi cursorul mouse pe marginea din dreapta a coloanei pe care doriţi

să o redimensionaţi. Cursorul mouse-ului îşi sugerând poziţionare pemarginea coloanei.

2. executaţi click pe marginea coloanei şi după fixare ţinând butonulmouse apăsat deplasaţi mutaţi marginea spre stânga, respectiv dreapta,pentru a micşora, respectiv mări coloana.

3. coloana este redimensionată.4. pentru a redimensiona liniile se procedează similar.

Rearanjarea coloanelorSchimbarea structurii tabelului propriu-zisa nu este afectata de schimbareaordinii coloanelor în fereastra de vizualizare.

1. selectaţi coloana pe care doriţi să o mutaţi;2. trageţi coloana în noua poziţie. In timp ce trageţi, se afişează o linie

verticală;3. când linia verticală a ajuns în poziţia dorită, eliberaţi butonul mouse;4. coloana este mutată.

Ştergerea unei înregistrăriO ştergere nu poate fi anulata, adică înregistrarea ştearsă nu poate fi refăcută.

1. selectaţi înregistrarea pe care doriţi sa o ştergeţi2. deschideţi meniul Edit şi selectaţi Delete Records3. Access vă solicită să confirmaţi ştergerea. Executaţi click pe Yes4. înregistrarea este ştearsă.

Copierea unei înregistrări1. selectaţi înregistrarea pe care doriţi sa o copiaţi2. deschideţi meniul Edit şi selectaţi Copy3. executaţi click în linia goală de la baza tabelului4. deschideţi meniul Edit şi selectaţi Paste Append

Page 70: Carte Baze de Date

70

5. înregistrarea copiată este scrisă şi poate fi editată funcţie de necesităţi.Procedeul poate fi utilizat şi pentru a muta o înregistrare dintr-un loc în altul,dar în loc să utilizaţi Edit > Copy utilizaţi Edit > Cut.

Sortarea înregistrărilor în fereastra Datasheet1. executaţi click în câmpul sau coloana după care doriţi sa se realizeze

sortarea;2. executaţi click pe butonul Sort Ascending/Sort Descending;3. înregistrarea a fost sortată.

Daca doriţi să aveţi posibilitatea de a reveni la ordinea iniţială, includeţi înstructura tabelului un câmp de tip Autonumber, care numerotează în modautomat înregistrările din tabel. După aceea puteţi sorta înregistrările din tabeldupă acest câmp, pentru a reveni la ordinea iniţială.Pentru sortare se poate utiliza comenzile din meniul Records > Sort > SortAscending sau Sort Descending.

Regăsirea datelor şi înlocuirea datelor1. executaţi click pe coloana sau câmpul după care doriţi să efectuaţi

căutarea;2. deschideţi meniul Edit şi selectaţi Fiind;3. caseta de dialog Find and Replace se deschide, afişând rubrica fiind.

În câmpul Find What tastaţi valoare de căutat şi atunci când este cazulnoua valoare pentru înlocuire;

4. opţional pentru a căuta în tabel, executaţi click pe săgeata în jos delângă câmpul Look in şi selectaţi numele de tabel care apare pe ecran.

5. executaţi click pe săgeata în jos de lângă câmpul Match şi selectaţiWhole Field, Any Part of Field sau Start of Field;

6. executaţi click pe butonul Find Next;7. Access localizează şi selectează înregistrarea care conţine prima intrare

care corespunde datelor căutate. Dacă nu este înregistrarea de dcareeste nevoie, executaţi click pe butonul Find Next pentru a găsiurmătoarea apariţie a valorii căutate. Se repetă operaţia de care ori estenecesar.

8. Access anunţa când nu mai găsesc alte apariţii. Executaţi click pe OK.Pentru a închide caseta de dialog Find and Replace, executaţi click Cancel.

Formatarea conţinutului ferestrei Datasheet1. deschidem meniul Format > Datasheet2. apare pe ecran caseta de dialog Datasheet Formatting

Page 71: Carte Baze de Date

71

3. selectati Flat (plat), Raised (reliefat) sau Sunken (adancit) din zonaCell Effect pentru a preciza cum ar trebui să arate celulele din tabelă;

4. pentru a aplica o culoare de fundal tabelului, executaţi click sageata injos de lângă câmpul Background Color şi selectaţi o culoare din listacare apare pe ecran.

5. pentru a schimba culoarea liniilor de grila din tabel, executaţi click pesăgeata în jos de lângă câmpul Gridline Color şi selectaţi o culoare dinlista care apare pe ecran.

6. pentru a schimba stilul de linie al chenarului tabelei, al liniilor de grilasau al sublinierii titlului de coloană, selectaţi articolul de schimbat dinlista derulanta din partea stângă, din zona Border and Line Styles

7. executaţi click săgeata în jos de lângă câmp situate în extremitateadreapta în zona Border and Line Styles şi selectaţi un stil de liniepentru chenarul tabelei, liniile de grila, respectiv sublinierea titlurilorde coloană.

8. Zona Sample din caseta de dialog Datasheet Formatting afişează oimagine în care puteţi vedea schimbările înainte de aplicarea acestora.Daca sunteţi mulţumit de noul aspect al tabelei, executaţi click pe OK;

9. inversarea ordinii coloanelor - pentru a inverse ordinea coloanelor,selectaţi butonul de opţiune Right-to-left al casetei de dialogDatasheet Formatting

10. tabelul este formatat cu elementele selectate.

Pentru exemplificări folosim o bază de date numită Aprovizionare care arepatru tabele cu următoarea structură:Furnizor

Denumirecâmp Semnificaţie Tip

Codfz Codul furnizorului Number(Long Integer) PKDenfz Denumirea furnizorului Text(50)Adrs Adresa furnizorului Text(50)Codf Codul fiscal al furnizorului Number(Long Integer)Banca Banca unde are deschis cont

furnizorulText(30)

Cont Numarul contului in banca Text(24)

FacturaDenumire

câmp Semnificaţie Tip

Page 72: Carte Baze de Date

72

Nrfact Numarul facturii Number(Long Integer) PKDatafact Data la care a fost emisa factura Date/TimeCodfz Codul furnizorului Text(50) FK

Linie_facturaDenumire

câmp Semnificaţie Tip

Nrlinie Numar linie factura Number(Long Integer) PKNrfact Numarul facturii Number(Long Integer) FKCodp Codul produsului Number(Long Integer) FKCant Cantitatea intrata Number(Long Integer)

ProdusDenumire

câmp Semnificaţie Tip

Codp Codul produsului Number(Long Integer) PKDenp Denumirea produsului Text(50)Um Unitatea de masura Number(Long Integer) Pretu Pretul unitar Number(Long Integer)

Crearea de relatii între tabele(Relationships)Din punct de vedere al momentului creării relaţiilor, exista 2 tipuri de relaţiiîntre tabelele unei baze de date Access şi anume:

1. Relaţii permanente – care se stabilesc după definirea tabelelor şi suntconsiderate de modelul relaţional ca făcând parte din structura bazei dedate. Acestea se realizează de obicei prin corespondentele cheieprimară – cheie externă şi sunt memorate în baza de date.

2. Relaţii temporare – se stabilesc între tabele cu ocazia definirii unorcereri de interogare, nefiind înregistrate în structura bazei de date.

În baza de date nu este obligatoriu ca între tabele să existe relaţii. Relaţiile care se pot stabili între tabele sunt de 3 tipuri:

unu la unu (one to one);unu la mai mulţi (one to many);mai mulţi la mai mulţi (many to many).

După definirea mai multor tabele în baza de date, acestea pot fi relaţionate pebaza câmpurilor comune. O relaţie funcţionează pe baza unor câmpuri comuneale tabelelor, astfel încât să se poată proiecta pe baza lor structuri de interogare,formulare şi rapoarte care să extragă date din tabelele bazei de date. Înmajoritatea cazurilor, aceste câmpuri comune sunt: cheia primara a unui tabel

Page 73: Carte Baze de Date

73

(primary key care furnizează o identificare unică a fiecărei înregistrări dintabelul respectiv) şi cheia externa (foreign key) a unui alt tabel. Explicitareaacestei relaţii in Access se face prin intermediul ferestrei Relationships.Access va utiliza aceasta informaţie atunci când va proiecta rapoarte, formularesi structuri de interogare care vor avea folosi mai multe tabele.Se urmează paşii de mai jos pentru crearea relaţiei între doua tabele:În fereastra bazei de date meniul Tools > Relationships sau de pe bara de

instrumente Standard butonul :

sau

1. se deschide caseta de dialog Show Table, cu rubrica Tables inprim-plan. Executaţi click pe primul tabel pentru care doriţi sastabiliţi o relaţie pentru a fi selectat;

2. executaţi click pe butonul Add;Daca adăugaţi din greşeala un tabel în fereastra Relationships, îl puteţi ştergedin fereastra executând click – dreapta pe fereastra tabelului si selectand HideTable din meniul rapid care este afişat.

3. pe ecran este afişata o fereastra reprezentând tabelul (tabelele)adaugate:

4. după ce tabelele au fost selectate click pe butonul Close;5. pentru a stabili legătura dintre doua tabele se trage (drag) câmpul

primary key al tabelului părinte (furnizor în acest caz), şi seeliberează peste (drop) acelaşi câmp din tabelul copil (factura inacest caz);

Page 74: Carte Baze de Date

74

6. se deschide caseta de dialog Edit Relationships, unde se pot stabiliopţiuni privind funcţionarea relaţiei pe care a-ţi stabilit-o. Verificaţisa fie enumerate drept câmpuri legate câmpurile corecte.

7. Select Enforce Referential Integrity

Aceasta opţiune are o acţiune de constrângere astfel încât o înregistrare dintabelul furnizor nu poate fi creat fără a avea un client valid in codfz, iar Accessva preveni de asemenea utilizatorul în momentul în care ar dori să şteargă oînregistrare din tabelul furnizor care are înregistrari relaţionate în tabelulfactura.- Atunci când opţiunea Update Related Fields este bifată, orice schimbare intabela primara va determina modificarea automata a valorilor corespunzătoaredin înregistrările relaţionate. - Atunci când opţiunea Cascade Delete Related Records este bifată, ştergereaunei înregistrări din tabela părinte va determina ştergerea automata a tuturorînregistrărilor corespondente din tabelul relaţionat.

8. Click pe Create şi salvaţi relaţia. Ecranul Relationships va reapareastfel:

Page 75: Carte Baze de Date

75

Simbolul "1" indică partea "One" a relaţiei şi simbolul infinit indică partea"Many" a relaţiei. Pentru a şterge o relaţie vom da click pe linia creată pentru ao selecta şi apoi se apasă tasta Delete de pe tastatură.

9. executaţi click pe butonul Save ca sa salvaţi relaţia.10. executaţi click pe butonul Close din fereastra Relationships, ca să

o închideţi.

Utilizarea sub-foilor de dateAtunci când sunt legate două tabele avem posibilitatea ca în fereastra devizualizare a tabelei părinte să activăm o sub-fereastră prin intermediu căreiaputeţi consulta înregistrarea fiică cu care este legată. Datele din sub-foaie pot fieditate. Dacă aţi configurat relaţia impunând integritatea referenţială,modificările vor fi efectuate şi salvate în tabelul original, legat.

1. se deschide tabel părinte, se dă click pe semnul plus de lângăînregistrarea a cărei sub-foaie de date doriţi să o vedeţi.

2. datele din tabelul corelat cu acesta sunt afişate. Pentru a ascundesub-foaia de date, se execută click pe semnul minus de lângăînregistrare.

Page 76: Carte Baze de Date

76

3. sub-foaia de date este ascunsă.

Structuri de interogare (Query)O interogare (query) este o definiţie unei tabele virtuale care foloseşte datedin tabele reale. Această structură include câmpuri din tabele legate, criteriilede selecţie, ordinea de sortare. Structura unei interogări indică datele care sevor extrage, Microsoft Access oferind următoarele posibilităţi:

selectarea anumitor câmpuri semnificative din înregistrările unei tabele;

selectarea înregistrărilor care satisfac anumite criterii;sortarea înregistrărilor într-o ordine precizată de utilizator;interogarea mai multor tabele; o interogare permite combinareaînregistrărilor din mai multe tabele şi afişarea rezultatului într-un singurtabel virtual;interogarea altor baze de date existente în sisteme de gestiune a bazelorde date cum sunt FoxPro, Paradox, dBase, Btrieve, Microsoft SQLServer;crearea de câmpuri pentru afişarea rezultatelor unor calcule;crearea de rapoarte, formulare sau alte interogări.

Rolul fundamental al structurilor de interogare (Queries) este acela de a accesaşi afişa date din tabele. Interogările pot accesa un tabel sau mai multe tabele.Fereastra de definire a structurii de interogare Query Design view are douăsecţiuni principale. În secţiunea superioară va afişa tabelul (tabelele) folosit(e)de interogare împreună cu câmpurile respective disponibile, iar secţiuneainferioară este o grilă care va conţine acele câmpuri selectate pentru a fiafişate.

Fiecare câmp are câteva opţiuni asociate:Field - Numele câmpului din tabelTable - Tabelul din care provine câmpul selectatSort - Ordinea de sortare în cadrul câmpului (Ascending, Descendingsau Not Sorted)Show - Se bifează sau nu după cum se doreşte sau nu afişarea câmpuluirespectiv ca rezultat al rulării interogării.

Page 77: Carte Baze de Date

77

Criteria - Indică criteriul după care sunt filtrate înregistrările - criteriulse specifică în câmpul (câmpurile) în care se aplică filtrarea valorilorrespective.

Odată construită, o structură de interogare poate fi sursă de înregistrăripentru crearea unui formular sau a unui raport. Interogările afişează dateleconţinute în cel mult 16 tabele. Cu ajutorul lor se poate indica modul în care săfie prezentate datele, alegând tabelele care conţin interogarea şi cel mult 255 decâmpuri ale acestora. În Access se pot crea următoarele tipuri de interogări:interogări de selecţie, interogări de acţiune, interogări încrucişate,interogări parametrice. Interogările de selecţie extrag informaţii din unul sau mai multe tabele şi leafişează sub formă de listă. Ele permit şi modificarea rezultatului afişat,modificare ce va fi văzută şi în tabelul sursă. De asemenea, permit şi folosireade parametri, cum este reuniunea de câmpuri din tabele între care nu există nicio legătură.

Interogările uni-tabel sunt utilizate pentru vizualizări de date dintr-un tabel,care:

afişează doar anumite câmpuri (coloane);sortează înregistrările într-o ordine particulară;efectuează calcule folosind expresii de anumite tipuri;filtrează înregistrările folosind anumite criterii;

Realizarea de interogări asupra mai multor tabele folosind relaţiile stabiliteîntre tabele pentru a manipula astfel datele care satisfac cerinţele interogării.Interogările de acţiune creează un nou tabel în baza de date sau realizeazămodificări majore ale unui tabel existent. În general, toate interogările deacţiune pot fi realizate pe baza unei interogări de selecţie. Ele permit adăugarea,modificarea sau ştergerea de înregistrări într-un tabel. Există patru tipuri deinterogări de acţiune:

• interogări de generare a unui nou tabel din datele conţinute însetul de rezultate al interogării;

• interogări de adăugare a noi înregistrări într-un tabel; • interogări de ştergere a unor înregistrări dintr-un tabel; • interogări de actualizare a unor înregistrări dintr-un tabel,

conform cu o condiţie ce trebuie îndeplinită. Acţiunile acestora sunt ireversibile asupra datelor din tabelele sursă, iar în cazulultimelor trei dintre ele, trebuie urmărită păstrarea integrităţii referenţialeatunci când prin intermediul lor se acţionează asupra mai multor tabele legate.Interogările încrucişate centralizează în formatul unei foi de calcul tabelardatele din unul sau mai multe tabele. Datele rezultate după execuţia unei astfel

Page 78: Carte Baze de Date

78

de interogări sunt prezentate într-un format potrivit pentru analiza datelor şicrearea de grafice.Interogările parametrice nu sunt un tip special de interogări, o funcţieparametru putând fi folosită pentru toate celelalte interogări prezentate maisus; ele folosesc în mod repetat o interogare, efectuând modificări în criteriilede selecţie.

Crearea manuală a interogărilor se realizează prin intermediul utilitaruluiQuery Design care foloseşte o interfaţa grafică de tip Query by Example(QBE). Aceasta permite utilizatorilor să găsească şi să afişeze informaţiile decare au nevoie. Alegerea tipului de interogare se face selectând opţiuneacorespunzătoare din meniul Query. Pentru a crea o nouă structură deinterogare în modul Query Design, se vor parcurge următorii paşi:

1. selectarea tabelelor din care se doresc a fi afişate/prelucrate datele;2. selectarea câmpurilor care se vor transforma în coloanele tabeluluivirtual rezultat al interogării;3. stabilirea criteriilor de selecţie şi a câmpurilor asupra cărora vorfi aplicate; se poate apela la un singur criteriu de selecţie sau la maimulte criterii, aplicate fie unor câmpuri diferite, fie formând un criteriucompus aplicat aceluiaşi câmp;4. stabilirea parametrilor de selecţie. Parametrii funcţionează pentruinterogări asemănător criteriilor de selecţie, cu deosebirea că la fiecareexecuţie trebuie specificată valoarea parametrului în funcţie de care seva realiza selecţia;5. stabilirea tipului de sortare a datelor afişate ca rezultat şi acâmpurilor asupra cărora va acţiona;

6. specificarea expresiilor de calcul pentru câmpurile care suntrezultatul unor operaţii executate asupra unora dintre câmpurile dejaexistente. Acest lucru se poate face fie prin scrierea directă a formulei,fie prin apelarea constructorul de expresii un utilitar inclus înACCESS;

7. alegerea tipului de interogare prin selectarea din meniul Query auneia dintre opţiunile: de selecţie, încrucişată, de generare a unuitabel, de adăugare într-un tabel, de ştergere dintr-un tabel, deactualizare a unui tabel.

În funcţie de opţiunea aleasă, Access modifică designul interogăriişi cere informaţii suplimentare astfel:

pentru generarea unui tabel – numele tabelului ceurmează a fi creat;

Page 79: Carte Baze de Date

79

pentru adăugarea într-un tabel – numele tabelului ceurmează a fi încărcat cu date, precum şi câmpuriledestinaţie;pentru actualizare – condiţiile de actualizare şi valoarea lacare se doreşte actualizarea;pentru ştergere – numele tabelului din care se va şterge şicondiţia de ştergere.

Pentru a rula interogarea avem la dispoziţie butonul din bara de instrumente pecare este desenat semnul exclamării de culoare roşie sau, în mod echivalent,putem folosi opţiunea Run a meniului Query.

Formulare ACCES

Formularele (formele) sunt machete (ferestre) folosite pentru consultareaşi reactualizarea datelor. Formularul are ca destinaţi ecranul, dar poate fitipărit şi la imprimantă. Este folosit pentru un acces aleator la înregistrări.Spre deosebire de rapoarte, dacă se tipăreşte un formular la imprimantăapar şi culorile de fundal, împreună cu butoanele de comandă, casetele detext şi alte controale. Formularul se defineşte pentru un tabel real sauvirtual. În funcţie de modul de afişare, sunt disponibile următoarele tipuri deformulare:

- Single form afişează doar înregistrarea curentă;- Continuous form permite vizualizarea mai multor înregistrări;- Datasheet form afişează datele sub formă de linii şi coloane, la fel cao foaie de calcul tabelar;Chart form afişează datele sub formă grafică.Formularele din Access creează interfaţa utilizatorului cu tabelele. Ele

permit realizarea unor obiective ce nu pot fi îndeplinite prin lucrul în moddirect cu tabelele. Prin intermediul lor se poate opere direct asupra datelor fiedintr-un tabel. Formularele sunt compuse din obiecte de control, care sunt ocolecţie de elemente specifice de proiectare destinate fie afişării datelor.

Crearea formularelorACCESS oferă următoarele metode de realizarea a formularelor:

Design View permite crearea manuală a formularelor.Utilizatorului i se pune la dispoziţie un tabel liber şi casetacu instrumente Toolbox;Form Wizard generează un formular pe baza câmpurilorselectate din unul sau mai multe tabele sau interogări;

Page 80: Carte Baze de Date

80

AutoForm: Columnar creează un formular în care fiecarecâmp apare pe o linie separată având în stânga numele,fiecare înregistrare reprezentând un nou tabel;AutoForm: Tabular creează un formular în care numelecâmpurilor apare o singură dată în capătul de sus alformularului, iar înregistrarea datelor se face pe linie;AutoForm: Datasheet creează un formular în care datele suntafişate sub forma foilor de calcul tabelar;AutoForm: PivotTable creează un formular în care suntafişate date calculate – vezi punctul 9 pentru mai multedetalii;AutoForm: PivotChart creează un formular în care suntafişate sub formă grafică date calculate;Chart Wizard creează un formular în care datele sunt afişatesub forma unui grafic;Pivot Table Wizard creează un formular în care sunt afişatedatele calculate; programul foloseşte aplicaţia MicrosoftExcel pentru a crea tabelul pivot, în timp ce în MicrosoftAccess se creează formularul în care acesta va fi inclus. Suntnumite astfel pentru că li se poate schimba în mod dinamicaranjarea astfel încât să analizeze datele selectate în diversemoduri.

Crearea manuală a formularelor cu Design View realizează în modinteractiv folosind o sursă de date (tabel real sau virtual) care va conţine datepentru care se defineşte formularul folosind o fereastră, de definire formular(formă), în care vor fi inserate diverse tipuri de obiecte. Lista obiectelor ce potfi inserate în formular este pusă la dispoziţia utilizatorului prin intermediulgrupului de butoane Toolbox. În formularele Access se pot insera trei tipuri deobiecte de control:

1. obiecte de control asociate sunt obiecte ataşate unui câmp din sursade date a formularului, ele afişând şi actualizând valorile datelorcâmpului asociat din înregistrarea curentă. Toate obiectele de acest felsunt însoţite de etichete ce afişează titlul câmpului căruia îi suntataşate;2. obiecte de control neasociate sunt obiecte care afişează dateleindependente de sursa de date a formularului; ele pot sau nu să fieînsoţite de etichete;3. obiecte de control calculate sunt obiecte ce folosesc expresiilecalculate, ca sursă de date.

Principalele obiecte de control vizibile pe caseta Toolbox sunt:

Page 81: Carte Baze de Date

81

- caseta de text Text Box creează o casetă ce afişează şi permite editarea datelorde tip text;- caseta de listă List Box creează o casetă ce cuprinde o listă derulantă deopţiuni;- caseta combinată Combo Box creează o casetă combinată for-mată dintr-ocasetă de text editabilă şi o casetă de listă. Poate avea ca sursă chiar un alt tabeldecât sursa de date;- casetă de validare Check Box creează o casetă de validare care comută întrestările on şi off;- buton comutator Toggle Button creează un buton cu două stări on/off,corespunzătoare stărilor - yes (-1), respectiv no (0);- buton de opţiune Option Button creează un buton rotund cu un comportamentidentic cu cel al unui buton comutator;- grup de opţiune Option Group creează o casetă în care se pot plasa butoanecomutatoare, de opţiune sau casete de validare. În cadrul unui astfel de gruppoate fi activ un singur obiect de control;- buton de comandă Command Button creează un buton care la selectarecomută un eveniment ce execută o macroinstrucţiune sau o procedură VBA;- etichetă Label creează o casetă ce conţine un text;- submachetă Subform ataşează unei machete o sub-machetă deja existentă.

Pentru a crea manual un formular se parcurg următorii paşi:1. stabilirea surselor de date care pot fi unul sau mai multe tabele/interogări;2. stabilirea tipului de formular dorit, în funcţie de forma de afişare;3. alegerea obiectelor de control necesare şi configurarea lor conform cunecesităţile de afişare şi editare în cadrul formularului;4. configurarea zonelor de antet şi de subsol atât la nivelul întregului raport câtşi la nivelul fiecărei pagini;5. crearea unui sub-formular dacă este necesar;6. adăugarea sub-formularului şi crearea legăturilor cu formularul de origine.

Rapoarte ACCES

Raportul este formatul extern, final, de prezentare a informaţiilor extrasedin baza de date în formă tipărită. Raportul constituie cea mai bunămodalitate de a tipări informaţiile extrase din baza de date.

În ACCESS există şase tipuri de rapoarte de bază:1. rapoartele cu o singură coloană afişează pentru fiecare înregistrări dinsursa de date toate câmpurile plasate unul sub altul;

Page 82: Carte Baze de Date

82

2. rapoartele dispuse pe linii furnizează câte o coloană pentru fiecarecâmp al sursei de date, plasând valoarea fiecărui câmp al înregistrării pelinii plasate sub capul de coloană. Dacă există mai multe coloane şi nuîncap pe o pagină, se tipăresc mai multe pagini suplimentare, în ordinepână la epuizarea numărului de coloane; apoi, se tipăreşte următorul grupde înregistrări;3. rapoartele multi-coloană se obţin din rapoartele cu o singură coloană,prin divizarea paginii în mai multe coloane asemănător tipăririi ziarelor;4. rapoartele cu grupare/totalizare sunt similare rapoartelor create de alteaplicaţii de gestiune a bazelor de date. Ele însumează datele pe grupuri deînregistrări şi adaugă la sfârşitul raportului informaţii statistice de tip totalgeneral;5. etichetele pentru corespondenţă constituie un tip deosebit de raportmulticoloană, proiectat pentru a tipări în mod grupat nume şi adrese saualte informaţii provenite din mai multe câmpuri;6. rapoartele neasociate conţin subrapoarte care au la bază surse de datenelegate, cum ar fi tabele sau interogări.

Primele patru tipuri de rapoarte utilizează ca sursă de date otabelă sau o structură de interogare. Ele se numesc rapoarte asociatesursei de date. Raportul principal al unui raport neasociat nu este legat lao tabelă sau structură de interogare. Însă subrapoartele conţinute într-unraport neasociat trebuie să fie asociate unei surse de date.

Raportul parcurge secvenţial înregistrările sursei de date, tabelăreală sau virtuală, pentru a tipăriri datele oferind posibilitatea de a inseratotaluri, subtotaluri şi rezumate, de a grupa datele pe un număr de până la10 niveluri diferite şi subrapoarte imbricate pe maxim trei niveluri.Raportul nu permite editarea şi modificarea datelor. Machetele de raportpot fi stocate pe disc pentru a fi tipărite ulterior.

Raportul este structurat pe următoarele secţiuni:Report Header zonă rezervată începutului de raport;Page Header zonă rezervată începutului de pagină;Detail zonă rezervată pentru descrierea linilor curente(de detaliu) din cadrul raportului, putând fi grupate 10nivele;Page Footer zonă rezervată pentru sfârşitul de pagină;Report Footer zonă rezervată sfârşitului de raport.

Crearea rapoartelor

Page 83: Carte Baze de Date

83

Modul de generare a unui raport prin folosirea programelor Wizard esteasemănător cu cel prin care se generează formularele folosindReportWizard:- Opţiunine AutoReport realizează un raport într-un singur pas, limitărileconstau dint posibilitatea selectării datelor dintr-o singură sursă. - Opţiunea Design View permite construirea manuală a unui raport. Prinselectarea acestei opţiuni se va deschide o fereastră de proiectare raport şiinstrumentele de lucru. Crearea unui nou raport este asemănătoare cu ceade creare a formularelor, trecând prin aceleaşi etape şi folosind aceleaşiobiecte de control. Spre deosebire de formulare, rapoartele au mai multeposibilităţi de sortare, grupare şi calculare a datelor. Access permitemanipularea rapoartelor prin programele de aplicaţie, însă nu şi creareaacestora. Pot fi modificate proprietăţile obiectelor de control din cadrulunui raport astfel încât să fie actualizat în mod dinamic.

Page 84: Carte Baze de Date

84

3.5. Întrebări teoretice de auto-evaluare

1. Explicaţi:a. Caracteriticile definitorii ale SGBD-ului Accessb. Pe scurt noţiunile de tabel, interogări, rapoarte, pagini de

prezentare macro-uri şi modulec. Tipurile de fişiere în Accessd. Bara de meniuri

2. Să se explice fiecare tip de interogare suportat de Access.

3. Formulare Access şi tipuri de controale utilizabile.

4. Rapoarte Access.

Page 85: Carte Baze de Date

85

Page 86: Carte Baze de Date

86

CAP.4. LIMBAJUL VISUAL BASIC PENTRUAPLICAŢII

4.1. Rezumatul capitolului

Limbajul Visual Basic for Application (VBA) este un limbaj orientatpe obiecte şi pe evenimente. În acest capitol ne propunem prezentareaavantajelor folosirii VBA, prezentarea mediului de dezvoltare pentru VBA,configurarea editorului VBA, modelul obiect din Access şi principiile utilizăriiobiectelor şi colecţiilor. Pentru început se crează o procedură VBA utilizândvariabile, constante, tipuri speciale de date, folosind mai multe tipuri destructuri de decizie şi selecţie, precum şi structuri interative. Ulterior se potcrea clase de obicte. Este prezentată gestionarea evenimentelor în Access,proprietăţile şi metodele obiectelor Access precum şi unele recomandăriprivind optimizarea codului VBA.

4.2. Macro-comenzi sau VBA?

VBA Access este un limbaj de programare orientat obiect, dezvoltat deMicrosoft folosind limbajul Visual BASIC adaptat la cerinţele specifice alesistemelor de gestiune de baze de date.

De ce folosim VBA ?Avantajele VBA sunt următoarele:

VBA permite furnizarea unor funcţionalităţi complexe,VBA facilitează întreţinerea bazelor de date deoarece procedurileeveniment Visual Basic pot fi sunt integrate în definiţia formelor(fomularelor), respectiv a rapoartelor),permite realizarea acţiunilor la nivelul sistemului,Se pot intercepta şi prelucra erorile cu ajutorul VBA,VBA este mai rapid de executat decât macro-comenzile,Utilizarea VBA face baza de date mai uşor de întreţinut,Utilizarea VBA permite interacţiunea cu alte aplicaţii,Utilizarea VBA conferă controlul programării,VBA este mai uşor de citit,VBA este comun pentru majoritatea aplicaţiilor Microsoft.

Macro-comenzile (Macro-uri) reprezintă un mod simplu de a administraînlănţuiri de acţiuni simple, de exemplu deschiderea şi închiderea formularelor.

Page 87: Carte Baze de Date

87

Ele sunt recomandate pentru utilizatorii specialişti. Programele de aplicaţie vorfi realizate întotdeauna de programatori care folosesc VBA. Macro-urile pot ficonvertite în module program VBA:Conversia macro-urilor într-un fomular sau un raport

deschideţi obiectul în modul Design şi, în meniul Tools, deschideţiopţiunea Macro şi Convert Macros to Visual Basic.

Conversia macro-urilor globalefaceţi clic pe Macros pe bara de obiecte a ferestrei Databases,în meniul File, alegeti optiunea Save As,în căsuţa de dialog Save As, faceţi clic pe Module apoi pe OK.

Majoritatea elementelor manipulate în Access sunt obiecte de tip tabelreal sau virtual, formular, raport etc.

Obiectele, respectând principiile programării orientate spere obiecte,sunt organizate după un model ierarhic, adică anumite obiecte conţin altelecare la rândul lor conţin altele. De exemplu, obiectul Application este alcătuitdin mai multe obiecte Form (formulare de aplicaţie), care conţin mai multeobiecte Control (controalele unui formular). Un ansamblu de obiecte deaceeaşi natură constituie o colecţie (colecţia Forms: ansamblu de formulare sauobiecte Form ale aplicaţiei). Un obiect dispune de un ansamblu decaracteristici numite proprietăţi (ex: dimensiune, culoare pentru un controldintr-un formular) şi de compartimente sau acţiuni numite metode (ex: metodaClose al obiectului Form permite închiderea acestuia). Obiectul răspunde unorevenimente provocate de către utilizator (ex: clic pe un buton de comandă) saude către sistem. Clasele sunt modele ce permit crearea obiectelor de aceeaşinatură. Obiectele provenite din aceeaşi clasă moştenesc caracteristici de la toatemetodele, proprietăţile şi evenimente clasei lor originare. Se pot crea clase deobiecte cu VBA Access utilizând modulele de clasă predefinite. Există maimulte tipuri de obiecte în Access:

- obiecte generale (formulare, rapoarte, etc.),- obiecte de acces la date (model DAO),- obiecte de date ActiveX (model DAO).

Fiecare ansamblu poate fi reprezentat sub forma unui model ierarhic.

4.2. Mediul de dezvoltare pentru VBA (IDE)

IDE (Integrated Development Environment) este mediul în care sepoate crea, modifica şi testa codul VBA. Acest mediu este de numit şi VBE(Visual Basic Editor). IDE pune la dispoziţie numeroase instrumente ce

Page 88: Carte Baze de Date

88

facilitează programarea şi punerea la punct a codului VBA: instrumente deDebugg (folosită în procesul de depanare a aplicaţiilor), asistenţă pentru creareade obiecte, explorator de obiecte, etc.

Există mai multe modalităţi de a deschide IDE din Access:- folosind combinaţia de taste Alt+F1,

- făcând clic pe icoana din bara de instrumente Database,Formulare şi Rapoarte,- făcând clic pe un modul şi apoi selectând opţiunea Code din meniulView, făcând dublu clic pe un modul,- selectând o procedură eveniment dintr-un formular sau un raport,- făcând clic pe icoana New sau Modify din lista de module a ferestreiDatabase.

Ferestre ale mediului IDEToate ferestrele mediului IDE pot fi afişate din meniul View

Bara de instrumente Standard:

View Microsoft Access

Insert/Inserare modul, modul de clasă sau procedură (Funcţie sauSub)

Page 89: Carte Baze de Date

89

Save/Salvare

Cut/Tăiere

Copy/Copiere

Paste/Lipire

Find/Căutare

Undo/Anulare

Redo

Run Macro

Break

End Design Mode

Project Explorer/Exploratorul de proiecte

Properties Window/Fereastra Proprietăţi

Object Browser/Exploratorul de obiecte

Controlul Toolbox

Microsoft Visual Basic He

Exploratorul de proiecte

Toate modulele bazelor de date sau ale proiectului VBA sunt afişate înexploratorul de proiecte într-o structură arborescentă şi sunt organizate în treigrupe:

modulele de formulare sau de rapoarte,modulele standard,

Page 90: Carte Baze de Date

90

modulele independente de clasă.

Fereastra Proprietăţi

Aceasta permite afişarea proprietăţilor diferitelor module. Pentruafişarea proprietăţilor unui formular sau ale unui raport, acesta trebuie deschisîn Access; dacă nu este cazul, se selectează un formular sau un raport înexploratorul de proiect şi se alege opţiunea Object/Obiect din meniulDisplay/Afişare.

Fereastra de Cod program

În această fereastră se găsesc două zone de liste derulante:

zona obiect afişează lista deobiecte ale modului,

zona procedură afişează procedurilesau evenimentele obiectului selectat în zona obiect. Evenimentelefolosite deja apar îngroşate.

Page 91: Carte Baze de Date

91

Auto List

O listă derulantă se afişează automat când se tastează numele obiectuluiurmat de punct, şi conţine lista de metode, proprietăţi şi constante disponibilepentru acest obiect.

Fereastra Variabile locale

Aceasta conţine toate valorile variabilelor accesibile în timpul aplicaţiei în curs.

Fereastra Watches

Aceasta afişează valorile variabilelor ce au fost definite drept variabile

de urmărit, watches.

Exploratorul de obiecte

Page 92: Carte Baze de Date

92

Permite vizualizarea proprietăţilor, metodelor şi constantelor fiecăruiobiect.

4.3. Configurarea editorului VBA

Parametrii pentru culorilor implicite folosite de editorul VBACuvintele cheie, funcţiile şi instrucţiunile VBA sunt afişate în albastru,

obiectele, metodele şi proprietăţile în negru, iar comentariile în verde.Instrucţiunile ce conţin erori sunt afişate în roşu.

Stilul (culoare, font, mărime) diferitelor părţi de cod se poate modificaprin selectarea Options/Opţiuni din meniul Tools şi activarea secţiunii FormatEditor.Parametrii pentru prezentarea codului program

Generarea şi reactualizarea codului program VBA sunt realizate cuajutorul unor instrumente care asistă programatorul, acestea realizează în plusverificarea automată a sintaxei, declararea obligatorie a variabilelor, Auto ListMembers, etc.

Pentru activarea acestor instrumente, se selectează Options/Opţiuni dinmeniul Tools şi se face clic pe secţiunea Editor.

4.4. Completarea automată a instrucţiunilor în editorulVBA

Editorul VBA dispune de o tehnologie ce îi permite să asisteutilizatorul în manipularea obiectelor. În momentul scrierii unui nume de obiectrecunoscut de VBA, urmat de un punct, lista derulantă a metodelor şiproprietăţilor acestui obiect este afişată. Dacă se selectează o metodă, asistentulajută în generarea diferitelor argumente pe care acesta le conţine.Exemplu: Dacă se scrie numele de obiect Docmd urmat de un punct, estederulată următoarea fereastră:

Page 93: Carte Baze de Date

93

Pictograma reprezintă metodele, icoana reprezintă proprietăţile.Elementele listei derulante pot fi definite tastând primele litere ale metodei,proprietăţii sau colecţiei căutate. Pentru a selecta un element din listă, se facedublu clic pe el. Se tastează un punct dacă s-a selectat un obiect şi se doreştevizualizarea listei de proprietăţi ataşate. Dacă s-a selectat o metodă, se apasatasta spaţiu pentru generarea listei de parametrii ai metodei.Drept exemplu, selectaţi metoda OpenForm apoi lăsaţi un spaţiu:

Lista de argumente a metodei este apoi afişată pe măsură ce sunt scriseargumentele.Argumentele facultative se găsesc între paranteze drepte. Argumentul curenteste îngroşat. Dacă pentru un argument dat există o listă de valori predefinite,lista derulantă a constantelor corespunzătoare este afişată.Drept exemplu, generaţi numele parametrilor transmişi de funcţie, şi anume,StrFormName, urmat de trei virgule (pentru cei doi parametrii opţionali)

Page 94: Carte Baze de Date

94

În exemplu, este afişată lista de valori posibile pentru argumentul DataMode.Asistentul poate fi activat şi în modul următor:

se plasează cursorul în urma punctului,se face clic dreapta pentru a afişa meniul contextual,se selectează opţiunea List Proprieties /Methods,se utilizează combinaţia de taste: CTRL+J

4.5. Modelul obiect din ACCESSDiagrama de alături permite distingerea principalelor obiecte globale

din Access. Notaţia utilizată în diagramă face distincţie între: Colecţii, Obiecte

Page 95: Carte Baze de Date

95Tabelul de mai jos reia rolul principalelor obiecte şi colecţii ale diagramei.

Application

Forms (Form)

Controls(Contro)

Module

Proprieties(Form)

Reports(Report)

Controls(Control)

Proprieties(Control)

Module

Proprieties(Form)

Modules(Module)

References(Reference)

Printers(Printer)

DataAccessPages

WebOptions

Screen

DoCmd

VBE

DefaultWebOption

Assistant

CommandBars(CommandBar)

Assistant

DBEngine

FileSearch

FileDialog

CurrentProject

COMAddIns(COMAddln)

AnswerWizard

LanguageSettings

AllForms(AccessObject)

AllMacros(AccessObject)

AllModules(AccessObject)

AllReports(AccessObject)

AllDataAccessPages(AccessObject)

AccessObjectProprieties)

CurrentData

AllTables(AccessObject)

AllQueries(AccessObject)

AllView(AccessObject)

AllStoredProcedures(AccessObject

AllFunctions(AccessObject)

AllDatabaseDiagrams(AccesObject

CodeProject

AllForms(AccessAbject)

AllMacros(AccessObject)

AllModules(AccessObject)

AllReports(AccessObject)

AllAccessPages(AccessObject)

AccessObjectProprieties

CodeData

AllTables(AccessObject)

AllQueries(AccessObject)

AllViews(AccessObject)

AllStoredProcedures(AccessObject)

AllFunctions(AccessObject)

AlldatabaseDiagrams(AccessObject)

Proprieties(Control)

Page 96: Carte Baze de Date

96

Obiect Descriere

Application Obiect care se referă la aplicaţia activă Microsoft Access.

Forms Colecţie ce conţine toate formularele (obiecte Form)deschise în baza de date activă. Pentru a inventaria toateformularele bazei de date, fie ele deschise sau închise, sefoloseşte colecţia AllForms al obiectuluiCurrentProject.

Reports Colecţie ce conţine toate rapoartele (obiecte Report)deschise în baza de date activă. Pentru inventariereatuturor rapoartelor, deschise sau închise, se foloseştecolecţia AllReports al obiectului CurrentProject.

Modules Colecţie ce conţine toate modulele standard şi de clasădeschise în baza de date activă.

References Colecţie ce conţine toate referinţele la bibliotecileobiectelor altor aplicaţii (fişiere dll, controale ActiveX)selectate în acel moment (referinţele sunt selectate dincăsuţa de dialog Reference din meniul Tools).

Printers Colecţie ce conţine obiectele Printer reprezentând toateimprimantele disponibile în sistem.

DataAccessPage Colecţie ce conţine toate paginile de acces la dateledeschise într-un proiect Microsoft Access (.adp) sauîntr-o bază de acces (mdb).

Screen Obiectele ce permit accesul la formular, raport saucontrol activat.

DoCmd Obiect ce permite conversia acţiunilor Macro în VisualBasic. Marea majoritate a macro-urilor pot fi astfelconvertite în VBA.

DefaultWebOptions

Obiect ce conţine caracteristicile aplicaţiilor globaleutilizate de către Microsoft Accesss în timpulînregistrării unei pagini de acces la date ca şi o paginăWeb sau în timpul deschiderii unei pagini Web.

Assistant Obiect ce reprezintă asistentul Office pus la dispoziţie deMicrosoft. Proprietatea Visible se foloseşte pentru a afişaasistentul iar proprietatea On pentru a activa asistentul.

Page 97: Carte Baze de Date

97

CommandBars Colecţie de obiecte CommandBar ce reprezintă barelede comandă a aplicaţiei active.

FileSearch Obiect ce permite căutarea fişierelor dintr-un documentFile.

FileDialog Obiect ce permite accesarea unor fişiere similare celordin căsuţa de dialog Open şi Save.

COMAddIns Colecţie de obiecte ComAddIn ce furnizează informaţiidespre complementul COM înscris în registrul Windows.

AnswerWizard Obiect ce reprezintă ajutorul intuitiv Microsoft Office.LanguageSettings

Obiect ce returnează informaţii despre parametriilimbajului aplicaţiei.

CurrentPage Obiect ce conţine mai multe colecţii de obiecte Accessspecifice (AllForms: colecţiile tuturor tabelelor bazei).

CurrentData Obiecte ce conţine mai multe colecţii de obiecte Accessde accesare a datelor (AllTables: colecţie a tuturortabelelor bazelor de date).

4.6. Principiile utilizării obiectelor şi colecţiilor

ProprietăţiAcestea servesc la descrierea obiectelor. Anumite proprietăţi sunt Read

Only şi nu pot fi modificate de codul VBA.

Sintaxă:{<obiect>| <obiect variabil>}.<proprietate>

Proprietăţile referitoare la obiecteObiectele globale şi cele scrise în cod pornind de la clasele

furnizate de VBA, posedă proprietăţi a căror valoare este actualizatăautomat de sistem.

Proprietate Obiect ConţinutActiveControl Screen Control activ.ActiveForm Screen Formular activ.ActiveDataAccessPage Screen Pagină activă sau conţinând un

control activ.ActiveReport Screen Raport activ.

Page 98: Carte Baze de Date

98

Application Obiecte multiple Obiectul aplicaţie Access.DBEngine Application Obiectul DBEngine.

Form Control subformular Obiect Form asociat controlăriiunui subformular.

Me Form sau Report Obiect Form sau Report al căruicod este în curs de executare.

Module Form sau Report Modulul obiectului Form sauReport.

Parent Obiecte multiple Obiect sau colecţie conţinândobiectul.

PreviousControl Screen Obiectul control activ anterior.

RecordsetClone FormUn Recordset clonă a setului deînregistrare subadiacentformularului.

Report Control subraport Obiect Report asociatcontrolului subraportului.

Section Form, Report Secţiune a unui formular sauraport.

MetodeAcestea permit efectuarea acţiunilor proprii obiectelor. Codul program

VBA este scris în unităţi de program denumite proceduri. O procedură conţineo serie de instrucţiuni VBA care efectuează o operaţie sau calculează o valoare.O procedură eveniment este o procedură care se execută ca răspuns la uneveniment iniţiat de un cod al utilizatorului sau al programului, sau lansată desistem. Un eveniment este o acţiune specifică care are loc în sau cu un anumitobiect. Evenimentele sunt în general rezultatul acţiunilor utilizatorilor dar pot fişi ale sistemului. Cu ajutorul unei proceduri eveniment, avem posibilitatea de aadăuga propriile răspunsuri particularizate ca răspuns la un eveniment care areloc într-un formular, raport sau control. O procedură este o parte de codprogram care conţine o succesiune de instrucţiuni.

Metodele se prezintă ca şi proceduri:pot sau nu folosi argumente,anumite metode pot returna o valoare (la fel ca şi procedurileFunction), altele nu (ca şi procedurile Sub).

Sintaxa unei metode ce nu returnează o valoare:{<object> | <obiect variabil>} . <metode> [ <liste de argumente>]

Page 99: Carte Baze de Date

99

Sintaxa unei metode ce returnează o valoare:Variabila = {<object> | <obiect variabil>} . <metode> [<liste deargumente>]

EvenimenteleUn eveniment este o acţiune specifică un obiect. Microsoft Access este

în măsură să răspundă la mai multe tipuri de evenimente: deschiderea sauînchiderea formularelor, clic mouse, modificarea datelor etc. Utilizarea uneiproceduri eveniment permite asocierea propriului cod ca răspuns la uneveniment ce are loc într-un formular, raport sau control.Exemplu: Când utilizatorul dă clic pe butonul de comandă Quit, este afişată o căsuţă dedialog cerând o confirmare.

Private Sub cmdTerminare_Click()If MsgBox (Prompt:=”Doriţi să părăsiţi aplicaţia ?”, _

+ vbQestion + vbYesNo,_ThenDoCmd.Quit

End IfEnd Sub

ColecţiiPentru a face o referinţă la obiectul unei colecţii, se poate folosi una

din sintaxele următoare:

NameCollection! NameObjectNameCollection! [NameObject]NameCollection! („NameObject”)NameCollection (var)

unde „var” reprezintă o variabilă de tipul String ce conţine numele obiectului.

NameCollection (index)

unde index reprezintă numărul de index în colecţie al obiectului.Pentru a asigura o mai bună lizibilitate a codului se recomandă folosire

aceleiaşi sintaxe.

Page 100: Carte Baze de Date

100

Observaţie:

Atenţie la primul element din majoritatea colecţiilor care are indexul 0.Indexul nu se foloseşte decât pentru parcurgerea unei colecţii. Se recomandăevitarea, de exemplu, Me.controls (5) pentru a face referinţă la un controlfiindcă indexul unui control se poate schimba dacă formularul este modificat.Exemple: Referinţa la controlul txtDataDeb al formularului Formation (CollectionsForms and Controls):MsgBox Forms (“Formations”).Controls (txtDateDeb”).ValuesauMsgBox Forms! Formations.Controls! [txtDateDeb].Value

Data creării unui tabel al bazei curente (Collection AllTabels):MsgBox CurrentData.AllTables![Formations].DataCreatedMsgBox CurrentData.AllTables(„Formations”).DataCreated

Parcurgerea unei colecţii. Acest cod modifică fontul şi culoareazonelor control din text:Dim Ctl As ControlDim intI As IntegerFor intI = 0 To Me.Controls.Count – 1

Set Ctl = Me.Controls(intI)If TypeOf Ctl Is TextBox ThenCtl.ForeColor = vbBlueCtl.FontItalic = TrueCtl.FontBold = TrueEnd If

Next intI

Colecţiile by defaultDefiniţie:O colecţie by default (implicit) conţine obiecte la care se poate facereferinţă prin intermediul obiectului colecţiei, adică fără a face referinţădirect la colecţie.Obiecte ce posedă o colecţie by default

Obiect ColecţieContainer DocumentsDatabase TableDefsDBEngine WorkspaceForm Controls

Page 101: Carte Baze de Date

101

Group UsersIndex FieldsQueryDef ParametersRecordSet FieldsRelation FieldsReport ControlsTableDef FieldsUser GroupsWorkspace Databases

Exemplu: Referinţă la controlul txtDateDeb al formularului Formations(colecţia Controls este colecţia by default a unui formular). Forms! [Formulations].[txtDateDeb].ValueSauForms! Formulations.txtDateDeb.ValuesauForms! Formulations! txtDateDeb.Value

4.7. Crearea de referinţe pentru obiecte

Pentru a putea utiliza un obiect de acces la date, un obiect deautomatizare sau un control ActiveX specific, trebuie create referinţe pentrubibliotecă, corespunzătoare obiectului. În general, o bibliotecă de obiecte esteun fişier .DLL sau .OCX care conţine codul obiectului. Se pot adăuga referinţefăcând clic pe butonul de comandă Browse.

4.8. Crearea unei proceduri în VBA

Etapa 1: Crearea unui nou modulPornind de la fereastra Bază de date/Database:

se face clic pe butonul Module de pe bara de obiecte, apoi se

face clic pe butonul New în partea superioară a ferestrei.

Etapa 2: Crearea unei proceduri

Page 102: Carte Baze de Date

102

În fereastra VBA activată pe ecran se va introduce secvenţa de programcorespunzătoare, după care se salvează secvenţa introdusă folosind butonul

Save , sau opţiunea Save după care codul program poate fi lansat înexecuţie.

Etapa 3: testarea proceduriiPentru realizarea codului procedurii:

se poziţionează cursorul pe codul procedurii introduse,

se face clic pe butonul Run Macro de pe bara de instrumentestandard sau se foloseşte tasta F5,după care pentru exemplul de program de mai sus se va introduce odată calendaristică în caseta de dialog afişată şi se dă clic pe butonul decomandă OK, conform instrucţiunilor programului:

Şi se continuă pentru exemplul nostru cu afişarea următorul mesajul vafi afişat:

Page 103: Carte Baze de Date

103

după care se dă clic pe OK.Dacă ziua introdusă este luni, de exemplu,va apărea următorul mesaj: “Succes la Seminarul de Info”.

4.9. Elementele limbajului VBA4.9.1. Variabile, constante şi tipuri de dateTipuri de variabile

Variabilele permit stocarea valorilor intermediare în orice moment alexecuţiei codului VBA pentru a putea fi folosite ulterior pentru a efecuacalcule, comparaţii, teste etc. Variabilele sunt identificate printr-un nume ce lepermite să facă referinţă la valoarea pe care o au, şi printr-un tip ce determinănatura datelor pe care le pot stoca.

Tipuri NUMERICETip Domeniu Dimensiun

e(în octeţi)

Byte (octet) 0 la 255 1Integer (întreg) -32768 la 32767 2Long (întreg lung) -2 147 483 648 la 2 147 483 647 4Single (simplăprecizie)

-3,402823E38 la 1,401298E-45(valori negative)1,401298E-45 la 3,40282E38(valori pozitive)

4

Double (dublăprecizie)

-1,79769313486231E308 la4,94065645841247E-324(valori negative)4,9406545841247E-324 la

8

Page 104: Carte Baze de Date

104

1,979769313486231E308(valori pozitive)

Currency(valută cu virgulăfixă)

-922 337 203 685 477,5808 la922 337 203 685 477,5807

8

Tip Domeniu Dimensiune

(în octeţi)Decimal +/-79 228 162 514 264 337 593

543950335 fară separator zecimal+/-7,9228162514264337593543950335cu 28 cifre în dreapta separatoruluizecimal; cel mai mic număr diferit dezero este+/-0.0000000000000000000000000001

12

Tipul ŞIR DE CARACTERE:Tipul String: există două tipuri de astfel de şiruri:

şirurile de lungime variabilă pot conţine în jur de 2 miliarde decaractere,şirurile de lungime fixă pot conţine de la 1 la aproximativ 64 Ko decaractere

Exemplu:’ sir de lungime variabilaDim Adresa As String’ sir de lungime fixa(20 caractere)Dim Nume As String*20

Tipul BOOLEAN: variabila poate lua valoarea True (Adevărat) sauFalse (Fals) care este valoarea sa implicită. Ocupă doi octeţi.

Tipul DATE: variabila poate lua valori de dată şi oră începând cu 1ianuarie 100 până în 31 decembrie 9999. Ocupă opt octeţi.

Tipul VARIANT: variabila permite stocarea valorilor de date diferite:date, numere cu virgulă mobilă, şiruri de caractere, referinţe la obiecte,

Page 105: Carte Baze de Date

105

etc. Ocupă 16 octeţi plus unul pentru fiecare caracter dacă valoarea esteun şir.

Tipul OBJECT: variabila permite stocarea referinţei la un obiect subforma unei adrese cu 4 octete. Acesta este un tip generic, însă pentru aobţine performanţe superioare este preferabilă folosirea unui nume deobiect aşa cum acesta este definit în zona Classes al Exploratorului deobiecte.

Exemplu: Deschiderea bazelor de date Access folosind tipul generic Object saupornind de la obiectul Database.Dim dbsEmp As ObjectDim dbsArt As DatabaseSet dbsEmp = OpenDatabase(“D:\Carte_VBA “ & “Angajati.mdb”)Set dbsArt = OpenDatabase(“D:\Carte_VBA” & _ “Articole.mdb”)

Tipul DEFINIT DE UTILIZATOR (USER DEFINED): este folositîn special pentru declararea variabilelor ce conţin mai multe tipuri deinformaţii. Definirea acestui tip nu se poate face decât în secţiunea dedeclarare a modulului.

Exemplu: Declararea unui nou tip definit de utilizator, Angajaţi:Public type Angajati Matricola As String*5 Nume As String*30 Varsta As Integer Departamentul*10End Type

Utilizarea tipului Angajaţi:Dim NouAngajat As AngajatNouAngajat.Matricola= ”15235”NouAngajat.Nume= ”Popescu”...

Declararea variabilelorExistă două modalităţi de a declara variabilele: implicit şi explicit.

Declararea implicită

Page 106: Carte Baze de Date

106

În momentul în care VBA întâlneşte o variabilă care nu face obiectul uneideclaraţii explicite, o va declara în mod implicit, oferindu-i un tip Variant.Tipul Variant permite stocarea succesivă a unor valori de tip diferit în aceeaşivariabilă. Tipul variabilelor evoluează în funcţie de valoarea care îi esteatribuită.

Exemplu:Private Sub Atribuire()’ Tipul variabilei devine Stringvar = “Buna ziua”MsgBox TypeName(var)’ Tipul variabilei devine Integervar = 12MsgBox TypeName(var)’ Tipul variabilei devine Doublevar = 6.55957MsgBox TypeName(var)’ Tipul variabilei devine Booleanvar = TrueMsgBox TypeName(var)EndSub

Declararea explicităVariabila este declarată înainte da a fi folosită.Este posibil să se impună declararea explicită a variabilelor folosindinstrucţiunea Option Explicit din secţiunea de declarare a fiecărui model.Pentru ca această instrucţiune să fie definită by default în VBA, se activezăopţiunea Declararea obligatorie a variabilelor din meniul Tools → Options→ Edit.Declararea explicită a variabilelor se poate face în secţiunea de declarare amodulelor sau în cadrul unei proceduri sau funcţii.Declararea este realizată de către una dintre următoarele patru instrucţiuni cefolosesc aceeaşi sintaxă:

la nivelul unei proceduri sau funcţii sintaxa este următoarea:Dim <Numevariabila> [As Type]Static <Numevariabila> [As Type]

la nivelul unui modul, sintaxa este următoarea:Private <Numevariabila> [As Type]

Page 107: Carte Baze de Date

107

Public <Numevariabila> [As Type]

De fiecare dată când instrucţiunea Dim este executată, variabila estereiniţializată (0 pentru tipul numeric, mulţime vidă pentru tipul String, Emptypentru tipul Variant). Dacă este necesară păstrarea valorii precedente, trebuiefolosit Static în locul instrucţiunii Dim.Observaţie:

Dacă nu se precizează nici un tip (ex: dim var), tipul Variant este atribuitimplicit variabilei.

Domeniul variabilelorO variabilă este numită locală, a unei funcţii sau proceduri dacă este declaratăîn cadrul unei funcţii sau proceduri cu Dim sau Static. Aceasta nu esterecunoscută în afara funcţiei sau procedurii.O variabilă poate fi vizibilă din toate procedurile sau funcţiile unui modul(standard, de clasă, formular sau raport) dacă este declarată în secţiunea dedeclarare a modulului Private (sau Dim).O variabilă este publică întregii aplicaţii, adică este vizibilă din orice loc alaplicţiei, dacă este declarată în secţiunea de declarare a modulului Public.Observaţie:

Pentru a se face referinţă unei variabile publice ce se găseşte într-un altmodul, trebuie folosită sintaxa următoare:

Forms! <NumeFormular>.<NumeVariabila>

Reports! <NumeRaport>.<NumeVariabila>

Tipul TABLOUUn tablou se declară în acelaşi mod ca şi variabilele, cu ajutorul instrucţiunilorDim, Static, Private sau Public.Un tablou este o variabilă ce prezintă mai multe compartimente ceea ce îipermite să stocheze tot atâtea valori.Un tablou poate avea până la 60 de dimensiuni.Se poate face referinţă la un tablou în mod global sau în mod individual,atribuind elementelor sale notaţia cu indici.Oricare ar fi tipul elementelor, un tablou necesită 20 de octeţi de memorie,cărora li se adaugă 4 octeţi pentru fiecare dimensiune şi numărul de octeţiocupaţi de către date.Dacă tipul de date nu este specificat, elementele tabloului declarat primesc tipulVariant.

Page 108: Carte Baze de Date

108

Primul element al unui tabel îşi atribuie indicele 0, implicit. Este posibilă însăstabilirea acestei valori implicit la 1 folosind instrucţiunea Option Base 1 dinsecţiunea de declarare.În acelaţi timp, folosire unei clauze, To, permite definire explicită a indicilor dela început la sfârşit.

Exemple:Declararea unor tablouri diferite:‘ 12 elemente indexate de la 0 la 11Dim Cheltuieli (11) As Single‘ 12 elemente indexate de la 1 la 12Dim Plati (1 To 12) As Single‘ 2 dimensiuni: prima indexata de la 0 la 10 si ‘a doua de la 1la 15Dim Facturi (10, 1 To 15) As StringOption Base 1 ‘ 12 elemente indexate de la 1 la 12Dim Plati (12)

Folosirea unui tablou bidimensional. Exemplul următor permite crearea unuitabel de înmulţire: fiecare element din tabelul Multiply este egal cu rezultatulînmulţirii indicilor săi.Dim Multiply(1 To 10, 1 To 10) As IntegerDim i,j As Integer‚Initializarea tablouluiFor i = 1 To 10 For j = 1 To 10 Multiply(i,j) = i*j Next jNext iMsgBox (Multiply(4,7)MsgBox (Multiply(7,4)

Tablouri dinamiceEste vorba de tablourile ale căror dimensiuni sunt definite în momentulexecuţiei. Aceasta permite optimizarea spaţiului de memorie ocupat.Declararea tablourilor: Dim Table ()

Page 109: Carte Baze de Date

109

Utilizare: Înaintea utilizării, tabloul trebuie dimensionat cu ajutorul instrucţiunii ReDim:ReDim Table (15 To 50)

Instrucţiunea ReDim se poate folosi pentru a modifica tabloul dinamic deatâtea ori cât este nevoie. Implicit, valorile prezentate, în tablou sunt anulate.Instrucţiunea ReDim Preserve permite întinderea unui tablou în acelaşi timppăstrând valorile existente.ReDim Preserve Table (15 To 70)

Constante în VBAO constantă reprezintă o valoare numerică sau de tip şir, ce nu trebuiemodificată. Instrucţiunea Const permite declararea unei constante şi definireavalorii sale fixe. Odată declarată, o constantă nu mai poate fi modificată, nicinu mai poate primi o valoare nouă. Declararea unei constante se realizeazăîntr-o procedură sau în secţiunea de declarare a unui modul.Constantele la nivelul modulului sunt private, implicit.Pentru a declara o constantă publică, este necesar ca instrucţiunea Const să fieprecedată de cuvântul cheie Public.Exemple:Declarare:Public Const Societate = „Editura Mirton”Const Black = &Ho&

Utilizare:NameSocietate= SocietateForm!Angajati!Prenume.BlackColor = Black

Constantele intrinseciAcestea sunt constante puse la dispoziţie chiar de către aplicaţii. Astfel, Access2002 posedă propriile sale constante intrinseci care sunt vizibile în exploratorulde obiecte.O constantă intrinsecă poate fi folosită într-un macro sau în codul VBA.Constantele intrinseci sunt caracterizte de un prefix de 2 litere ce identificăbiblioteca de obiecte unde constanta este definită.Constantele bibliotecii Microsoft Access primesc Prefixul „ac”; constantelebibliotecii Visual Basic au ca prefix „vb”.Exemple:acForm

Page 110: Carte Baze de Date

110

vbCurrency

Există mai multe categorii de constante intrinseci: constante de acţiune,constante de proceduri eveniment, etc.

4.9.2. Structurile de decizie şi selecţieDeseori este necesară testare condiţiilor specifice înaintea executăriiinstrucţiunilor. Structurile de decizie sunt numite şi alternative, permit alegereaalternativei, la sfârşitul unei evaluări. Se disting două structuri de decizie şi selecţie:

IF...THEN...ELSESELECT...CASE

Funcţia IIF poate fi utilizată şi pentru a defini o valoare în funcţie de ocondiţie.

INSTRUCŢIUNEA IF IF

Permite executarea instrucţiunilor în funcţie de rezultatul unei condiţii.În general, instrucţiunile IF...THEN...ELSE pot conţine alte structuri dedecizie de atâtea ori cât este necesar.Sintaxa multilinie cu indentarea corespunzătoare este mai uşor de utilizat.Sintaxa 1 (pe o singură linie)If <conditie> Then <instructiuni> [Else <instructiuni>]

<instructiuni> poate fi alcătuit de mai multe instrucţiuni separate de :Sintaxa 2 (pe mai multe linii)If <conditie 1 > Then <secventa de instructiuni 1>[ElseIf <conditie 2 > Then <secventa de instructiuni 2>][Else <secventa de instructiuni 3>]EndIf

Alte posibilităţi:If <conditie 1 > Then <secventa de instructiuni 1>[Else If <conditie 2 > Then <secventa de instructiuni 2>][Else <secventa de instructiuni 3>]

Page 111: Carte Baze de Date

111

EndIf]EndIf

Exemplu: Afişarea rezultatului comparaţiei între A şi B:If A>B Then MsgBox „A>B”Else If A=B Then MsgBox „A=B” Else MsgBox „A<B” EndIfEndIf

INSTRUCŢIUNEA SELECT...CASE Select Case

Execută secvenţele de instrucţiuni specificate în funcţie de valoarea uneiexpresii. Permite înlocuirea lui ELSE IF în instrucţiunile IF...THEN...ELSEîn timpul comparaţiei între o expresie şi mai multe valori.Sintaxa:Select Case <expresia de testat> [Case <lista de expresii 1> <secvenţa de instrucţiuni 1>] [Case <lista de expresii 2> <secvenţa de instrucţiuni 2>] [Case Else <secvenţa de instrucţiuni 3>]End Select

<listă de expresii> poate lua formele următoare:Valoare (Ex. Case 10)listă de valori (Ex. Case 1, 5, 10)plajă de valori (Ex. Case 1 To 5)expresie condiţionată(Ex. Case Is >= 5)

Exemplu:Afişarea unui comentariu despre temperatură

Page 112: Carte Baze de Date

112

Select Case Temperatura Case 0 MsgBox(„Ger”) Case 1 to 10 MsgBox(„Frig”) Case 10 to 16 MsgBox(„Răcoare”) Case 17, 18, 19

MsgBox(„Temperatura interioară iarna”) Case 20 to 25 MsgBox(„Agreabil”) Case Is > 25 MsgBox(„Cald”) Case Else MsgBox(„Temperatura nereferenţiată”)End Select

FUNCŢIA IIF IIf

Returnează o valoare în funcţie de o condiţie.Sintaxa:IIf (<conditie>, <valoare dacă Adevărat>, _ <valoare dacă Fals>)

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

Este posibilă utilizarea mai multor imbricări ale funcţiei IIF.Exemplu:Dim IntI As IntegerIntI = IIf(A = B, IIf(B = C, 1, 0),0)

STRUCTURI ITERATIVEStructurile iterative sau repetitive permit repetarea execuţiei unui ansamblu deacţiuni.Se pot distinge mai multe tipuri de structuri iterative:Do...LoopWhile...WendFor..NextFor Each...Next

Page 113: Carte Baze de Date

113

Do...Loop şi While...Wend repetă o prelucrare a datelor până când o anumităcondiţie este realizată, în timp ce For..Next efectuează o prelucrare de unnumăr stabilit de ori, în funcţie de contor.For Each...Next permite parcurgerea elementelor unei colecţii.

INSTRUCŢIUNEA DO...LOOPDo ...Loop

Execută o secvenţă de instrucţiuni în timp ce (While) sau până când (Until)condiţia specificată este verificată.Sintaxa 1: secvenţă de instrucţiuni neexecutată (condiţia a fost testată înainteasecvenţei).Do [{While|Until}<conditions>] <Secventa de instructiuni> [Exit Do] <Secventa de instructiuni>Loop

Sintaxa 2: secvenţă de instrucţiuni executată cel puţin odată (condiţie testatădupă secvenţă).Do <Secventa de instructiuni> [Exit Do] <Secventa de instructiuni>Loop [{While|Until}<conditions>]

Observaţie:Exit Do este deseori folosită după evaluarea unei condiţii interneiteraţiei şi permite ieşirea din aceasta fără verificarea condiţiei decontrol.

Exemplu: Calcularea şi afişarea cheltuielilor anuale:Dim intCpt IntegerDim CheltAn As CurrencyCheltAn = 0IntCpt = 0Do IntCpt = IntCpt + 1 CheltAn = CheltAn + CheltTot(IntCpt)Loop Until IntCpt = 12MsgBox („Cheltuieli Anuale = ” & CheltAn)

Page 114: Carte Baze de Date

114

INSTRUCŢIUNEA WHILE...WENDWhile...Wend

Execută o secvenţă de instrucţiuni atâta timp cât condiţia specificată esteverificată.

Sintaxă:While <conditie>

< secvenţă de instrucţiuni>Wend

Exemplu: Calcularea şi afişarea cheltuielilor anuale. Dim intCpt IntegerDim CheltAn As CurrencyCheltAn = 0IntCpt = 1While IntCpt <= 12 CheltAn = CheltAn + CheltTot(IntCpt) IntCpt = IntCpt + 1WendMsgBox („Cheltuieli Anuale = „ & CheltAn

INSTRUCŢIUNEA FOR...NEXTFor...Next

Permite repetarea executării unei secvenţe de instrucţiuni în funcţie de uncontor.

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

Observaţie:

Exit For, deseori amplasată după evaluarea unei condiţii, permite ieşireaforţată dintr-o iteraţie.Exemplu: Calcularea şi afişarea cheltuielilor anualeDim intCpt IntegerDim CheltAn As Currency

Page 115: Carte Baze de Date

115

CheltAn = 0For IntCpt 1 To 12 CheltAn = CheltAn + CheltTot(IntCpt)NextMsgBox („Cheltuieli Anuale = „ & CheltAn)

Cuvântul cheie Step permite incrementarea şi decrementarea printr-un passpecificat a variabilei contor.Exemplu: Variabila contor j este incrementată cu 5 la fiecare iteraţie. La sfârşireaiteraţiilor, totalul corespunzând sumei de la 5 la 10, 15 şi 20.Dim j As IntegerDim total As Integertotal = 0 For j =5 To 20 Step 5 Total = total + jNext jMsgBox („Totalul este de” & total)

INSTRUCŢIUNEA FOR EACH...NEXT For Each...Next

Permite parcurgerea tuturor elementelor unui tablou (sau a unei colecţii).Sintaxă:For Each <element> In <tablou>/<colecţie> <secvenţă de instrucţiuni> [Exit For] <secvenţă de instrucţiuni>Next [element]

Exemplu:Afişarea cheltuielilor lunare (conform exemplului For...Next):Dim Cheltuieli As CurrencyFor Each Cheltuieli In CheltLunare

MsgBox (“Cheltuieli”)Next

4.9.3. Operatori în VBA

Operatorii permit efectuarea operaţiilor aritmetice cu variabile şi/sau constante,comparaţia variabilelor între ele, testarea mai multor condiţii, etc.Se disting mai multe categorii de operatori:

Page 116: Carte Baze de Date

116

Operatori aritmeticiOperatori relaţionaliOperatori logiciOperatori de concatenare

Observaţie:

Operatorul de atribuire este semnul egal „=”. Valoarea expresiei din dreaptasemnului este atribuită variabilei situate la stânga semnului (ex: IntA=12,IntA=IntB*12).

OPERATORII ARITMETICIPermit efectuarea calculelor aritmetice pornind de la variabile şi/sau de laconstantele numerice.Operator Operaţie+ Adunare- Scădere/ Împărţire având ca rezultat un număr cu virgulă mobilăMod Restul împărţirii dintre două numere\ Împărţire având ca rezultat un număr întreg.* Înmulţire^ Ridicare la putere

OPERATORI RELAŢIONALIPermit compararea a două valori numerice sau a două şiruri de caractere.Operator Operaţie< Mai mic decât...<= Mai mic sau egal cu...> Mai mare decât...>= Mai mare sau egal cu...= Egal cu...< > Diferit de...

Instrucţiunea Option Compare utilizată la nivelul modulului permite definireametodei de comparare implicită, care este cea mai potrivită pentru comparareaşirurilor de caractere. Aceasta poate lua trei valori:Compare Binary (opţiune implicită) furnizează compararea între şiruri bazatepe un ordin de triere provenit din reprezentarea binară internă a caracterelor.Compare Text furnizează comparaţii între şiruri bazate pe un ordin de triere cenu face distincţia dintre literele mari şi cele mici.

Page 117: Carte Baze de Date

117

Compare Database furnizează comparaţii între şiruri bazate pe un ordin detriere determinat de către identificatorul de parametrii ai bazei de date curente.

Page 118: Carte Baze de Date

118

OPERATORI LOGICIPermit testarea simultană a două (sau mai multe) valori logice sau expresii cereturnează acest tip de valoare. De obicei, aceşti operatori sunt folosiţi cuinstrucţiunea IF.

Operator OperaţiiAnd Dacă toate expresiile au valoarea True, rezultatul este True.

Dacă una din expresiile are valoarea False, rezultatul esteFalse.

Or Dacă cel puţin una dintre valori are valoarea True, rezultatuleste True.

Xor Dacă doar una dintre expresii are valoarea True, rezultatul esteTrue (sau exclusiv).

Not Returnează contrariul expresiei.Eqv Returnează True dacă cele două expresii sunt identice.

OPERATORUL DE CONCATENAREOperatorul de concatenare este semnul „&”. Aceasta permite alipirea şirurilorde caractere, valori şi expresii. Rezultatul este un şir de caractere.

Prioritatea operatorilorAtunci când mai mulţi operatori apar în aceeaşi expresie, fiecare este evaluatîntr-o ordine predefinită, numită prioritatea operatorilor.Operatorii sunt evaluaţi în ordinea următoare: operatori aritmetici, operatorirelaţionali, operatori logici. Operatorii relaţionali au aceeaşi prioritate, adicăsunt evaluaţi în ordinea apariţiei lor, de la stânga la dreapta.Operatorii aritmetici şi logici sunt evaluaţi în ordinea următoare de prioritate(de la stânga la dreapta):

aritmetici: ^, *, /, Mod, +, -logici: Not, And, Or, Xor, Eqv

4.9.4. Instrucţiuni utilizate cu obiecte în VBA

INSTRUCŢIUNEA WITHPermite accesul repetat la acelaşi obiect numindu-l doar o singură dată.Oferă mai multe avantaje.

- optimizează timpul de executare a codului,- câştigă timp în scriereea codului,

Page 119: Carte Baze de Date

119

- face codul mai lizibil.Sintaxa:With <object> <cod utilizând metode şi proprietăţi>

<ce se raportează la obiect>EndWith

Exemplu:Obiect formular activWith Screen.ActiveForm .Caption = „Formular de plata” .Controls(„CmdValidare”).Enabled = False GoToPage2EndWith

INSTRUCŢIUNEA FOR EACH...NEXTPermite trecerea în revistă a obiectelor unei colecţii sau a elementelor unuitabel.Sintaxă:For Each <element> In <tabel>|<colecţie>

<secvenţă de instrucţiuni> [Exit For]

<secvenţă de instrucţiuni>Next <element>

Exemplu: Exemplul următor permite atribuirea unei culori de font fiecăruiControl al formularului „Angajat”, în funcţie de tipul său (proprietateControlType). De asemenea, acesta foloseşte colecţiaby default al obiectului Form (Screen .ActiveForm .Controls)Dim ctl As ControlFor Each ctl In Screen.ActiveForm`Parcurgerea controalelor formularului activ With ctl Select Case.Control Type

` Etichete Case acLabel .ForeColor = vbBlue

` Zone de text Case acTextBox .Forecolor = vbYellow

Page 120: Carte Baze de Date

120

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

3.4.3. INSTRUCŢIUNEA IF...TYPE OFPermite testarea tipului de obiect.Sintaxă:If TypeOf <object> Is <TypeObject> Then <cod ce foloseşte metode şi proprietăţi> <ce se raportează la obiect>EndIf

Exemplu:If TypeOf ctl Is acListBox Then...

INSTRUCŢIUNEA SETPermite atribuirea unei referinţe de obiect unei variabile, numite variabilăobiect.Această instrucţiune poate fi utilizată pentru crearea unei referinţe spre unobiect nou (utilizând eventual o metodă ce permite crearea unui obiect) saupentru atribuire unei referinţe unui obiect deja existent.Sintaxă:Crearea unei referinţe la un obiect nouSet <NameObject> = New <expression object> sauSet <NameObject> = <metode ce permit crearea unui obiect>

<NameObject> numele variabilei obiect<expression object> numele unui obiect sau a unei variabile obiect deacelaşi tip.Cuvântul cheie New permite crearea unei noi instanţe de clasă. Dacă variabilaobiect conţine deja o referinţă, aceasta este ştearsă.Observaţie:

Nu se poate folosi cuvântul cheie New pentru a face referinţă la unobiect decât dacă componenta ActiveX a obiectului furnizează obibiliotecă (ex: obiecte ADO, obiecte Excel).

Page 121: Carte Baze de Date

121

Atribuirea unei referinţe unui obiect existent:Set <NameObject> = <expresie obiect>

<NameObject> numele variabilei obiect<expression object> numele unui obiect sau a unei variabile obiect de

acelaşi tip.

Reiniţializarea variabilelor obiectSet <NameObject> = Nothing

Nothing permite reiniţializarea variabilei obiect şi eliberarea totalităţiiresurselor sistem şi memorie asociate obiectului.Exemple:Crearea referinţelor la un obiect nou. Exemplele 1 şi 2 permit crearea unui index nou sau completarea bazei de datecurente. Pentru efectuarea acestor exemple, trebuie selectată referinţaproiectului Microsoft DAO 3.6 Object Library. (Tools-References)

Exemplul 1: Utilizarea cuvântului cheie NewDim tdfClient As DAO.tabledefDim fld As DAO.Field` Creează definiţia tabeluluiSet tdfClient = New DAO.tabledeftdfClient.Name = „Clienti” ` Creează primul campSet fld = New DAO.FieldWith fld .Name = „Cli_Nume” .Type = dbText .Size = 40End WithtdfClient.Fields.Append fld` Creează al doilea câmpSet fld = New DAO.FieldWith fld .Name = „Cli_Efectivi” .Type = dbIntegerEnd WithtdfClient.Fields.Append fld

Page 122: Carte Baze de Date

122

`Adaugă tabelul la baza de date curentăApplication.CurrentDb.TableDefs.Append tdfClient`Reiniţializează variabila obiectSet tdfClient = NothingSet fld = Nothing

Exemplul 2: Aceeaşi prelucrare a datelor, utilizând metodeleDim tdfClient As DAO.tabledefDim fld As DAO.Field` Crează definiţia tabeluluiSet tdfClient = CurrentDb.CreateTableDef(„Clienţi”) With tdfClient` Crează primul câmpSet fld =.CreateField(„Clienţi_Nume”,dbText,40).Fields.Append fld` Crează al doilea câmpSet fld =.CreateField(„Clienţi_efectiv”,dbInteger)End With`Adaugă tabelul la baza de date curentăCurrentDb.TableDefs.Append tdfClient`Reiniţializează variabila obiectSet fld = NothingSet tdfClient = Nothing

Exemplul 3: Crearea unui formular cu o zonă de texte şi etichetă.`Obiect formularDim frmEmploye As Form`Numele formularuluiDim strName As String`Obiect controlDim ctl As Control`Crearea unui formular nouSet frmEmploye = Application.CreateFormWith frmEmploye `Titlul formularului .Caption = „Total” `Lăţimea şi lungimea formularului .Width = 5000 .Section(acDetail).Height = 2000 `Ştergerea butoanelor de depalsare

Page 123: Carte Baze de Date

123

.NavigationButtons =False `Şterge selectorul de înregistrare

.RecordSelectors =False `Centrează formularul în aplicaţie

.AutoCenter = True `Numele aplicaţiei

strName =frmEmploye.NameEnd With`Adăugarea zonei de text „numele angajatului”Set ctl = Aplication.CreateControl(strName,_ acTextBox, ,” „,” „ 2000, 500, 2500,300)`Redactarea zonei de textWith ctl `Numele zonei de text .name =”txtNom” `Culori .BackColor = vbWhite .ForeColor = vBlack .FontBold = TrueEndWith`Adăugarea etichetei „numele angajatului”Set ctl = Application.CreateControl(strName,_ acLabel, ,” „, „ „,500, 500, 1500, 300)`Redactarea eticheteiWith ctl `Numele etichetei .Name = „lblNom” `Titlul etichetei .Caption = „Numele angajatului:” `Culori .BackColor = vbWhite .ForeColor = vbBlueEnd With`Salvarea formularuluiDoCmd.Save, „Angajaţi”Docmd.close

4.9.5. Regulile de scriere a codului sursă VBA

Page 124: Carte Baze de Date

124

COMENTARIILEPermit explicarea unui program pentru a-l face mai uşor de înţeles.Sintaxă:Rem <commentariu>sau’<commentariu>

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

CARACTERUL DE CONTIUARE (LINIUŢA DE SUBLINIERE)O instrucţiune VBA poate fi scrisă pe mai multe linii cu ajutorul liniuţei desubliniere precedată de un spaţiu ( _ )Exemplu: If a _> _b then _

Bineînţeles acest exemplu nu necesită o programare structurată, însă atrageatenţia asupra faptului că o linie de cod poate fi scindată în orice loc.

INDENTAREAEste important ca instrucţiunile de acelaşi nivel să se găsească în acelaşi aliniat.Începutul şi sfârşitul procedurii fiind aliniate la stânga, conţinutul trebuiedecalat puţin în interior, la dreapta.Aceste indentări permit structurii procedurii să devină mai uşor de citit.4.9.6. Numele procedurilor, variabilelor şi constantelor

Page 125: Carte Baze de Date

125

Numele procedurilor, variabilelor şi constantelor trebuie să respecteurmătoarele reguli:

să înceapă cu o literă,să nu fie alcătuit din mai mult de 225 de caractere,pot fi compuse din litere, cifre şi din liniuţa de subliniere ( _ ),nu pot include semne de punctuaţie sau spaţii,să nu corespundă cuvintelor rezervate, să fie unice într-un program.

CONVENŢIILE DE DENUMIRE ÎN VBASe recomandă folosirea convenţiilor de denumire pentru variabile, controale şiobiecte. Acestea permit standardizarea codului.

CONVENŢIILE DE DENUMIRE A VARIABILELORSe recomandă folosirea a două prefixe:

primul pentru a preciza domeniul variabilei: g – globală, m – modul,nici un prefix pentru o variabilă locală,al doilea, pentru a preciza tipul variabilei.

Exemplu: gstrName - variabilă globală de tip String.intQuantity – variabilă locală de tip Integer.

Tip de variabilă PrefixBoolean BinByte BytCurrency CurDate, Ora DtmDouble DblError ErrInteger intLong lngObject objSingle sngString strUser Defined udtVariant var

CONENŢIILE DE DENUMIRE A CONTROALELOR

Page 126: Carte Baze de Date

126

Ca şi pentru variabile, numele controalelor, formularelor şi rapoartelor trebuieprefixate după tipul lor.

Control PrefixADO Data adoCheckBox chkZonă de listămodificabilă

cbo

Command Button cmdFrame fraOption Group grpImage imgLabel lblOption Button optZona de text txt

CONVENŢIILE DE DENUMIRE A OBIECTELORObiectele Access pot fi de asemenea prefixate.

Control PrefixTable tblQuery qryForm frmReport rptMacro macIndex adxCamp fldColectie colProperty ptyPagină de acces la date pag

4.9.7. Clase de obiecte în VBA

O clasă este un fel de tipar de unde provin obiectele. Obiectele din aceeaşiclasă moştenesc sistematic trăsături din toate metodele (coduri), proprietăţi(date) şi evenimentele claselor lor de origine. Prin urmare, caracteristicile şicomportamentul fiecăruia vor putea fi adaptate în funcţie de necesităţileaplicaţiei. De fapt, orice obiect Acess provine dintr-o clasă.MODULELE DE CLASĂ

Page 127: Carte Baze de Date

127

Modulele de clasă permit crearea şi manipularea propriilor tipuri de obiecte înaplicaţii.Prezintă caracteristicile următoare:

poartă numele obiectului,cuprind procedurile Sub şi Function ce corespund metodelor propriiobiectului,includ procedurile Property Get ce permit citirea valorilorproprietăţilor obiectului şi procedurlor Property Set/Property Letpermiţând fixarea valorilor acestor proprietăţi.

Odată ce ansamblul acestor proceduri sunt descrise în cadrul modulului declasă, este posibilă crearea unui nou obiect de tipul definit mai sus. Pentruaceasta, este suficientă crearea unei noi instanţe de clasă prin intermediul uneivariabile obiect de tipul clasei:

Dim <object name> As New <class name>.

Modulele de clasă sunt rar utilizate în programarea VBA, adresându-se înspecial specialiştilor.

EXEMPLE DE MODULE DE CLASEAcest exemplu este un ghid pas cu pas în crearea şi utilizarea unui modul declasă. Modulul creat va permite afişarea mesajelor utilizatorului.Acest modul prezintă următoarele elemente:

o metodă Confirmation ce afişează o căsuţă de dialog care invităutilizatorul să răspundă „Da” sau „Nu” la o întrebarea şi primeşterăspunsul utilizatorului,două proprietăţi: proprietatea IsBeep indică dacă un beep trebuie emisînaintea afişării mesajului; proprietatea Title ce conţine titlul căsuţei dedialog.

Exemplu: Pentru a crea un modul de clasă, se selectează opţiunea Class Module (modulde clasă) al meniul Insert.

Page 128: Carte Baze de Date

128

Se defineşte numele clasei în câmpul Name.

Dacă fereastra Properties nu este afişată, se alege opţiunea WindowProperties din meniul View sau se foloseşte tasta F4.Pentru utilizarea proprietăţilor în modulul de clasă Message, se definescvariabilele necesare. Variabila strTitle este asociată proprietăţii Title, iarvariabila blnBeep proprietăţii IsBeep.

Option Compare DatabaseOption Explicit

`Emiterea beep-uluiDim blnBeep As Boolean`Titlul ferestrei MsgBoxDim strTitle As String

Proprietăţile IsBeep şi Title sunt create folosind opţiunea Procedure dinmeniul Insert.

Page 129: Carte Baze de Date

129

Sunt create pentru fiecare proprietate procedurile Property Get şi PropertySet; pentru obţinerea codului următor, acestea sunt modificate:

Public Property Get IsBeep() As Boolean Is Beep = blnBeepEnd PropertyPublic Property Let Is Beep(ByVal blnNewValue As Boolean)

blnBeep = blnNewValueEnd Property

Public Property Get Title() As String Title = strTitleEnd Property

Public Property Let Title(ByVal strNewValue As String) StrTitle = strNewValueEnd Property

Apoi se crează metoda confirmării folosind opţiunea Procedure al meniuluiInsert.

Page 130: Carte Baze de Date

130

Se modifică procedura Confirmation pentru obţinerea codului următor:

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

Se poate observa că această metodă foloseşte cele două variabile, strTitle şiblnBeep. Metoda a fost creată ca o funcţie deoarece returnează răspunsulutilizaărului sub forma unei variabile logice (boolean).Odată creată, această clasă va fi utilizată pornind de la un formular. În acestscop, se va crea un formular Angajaţi cu două butone de comandă cmdClose şicmdQuit. Se atribuie codul de mai jos evenimentelor click:

Private Sub CmdInchidere_Click()`Obiect mesajDim Msg as New Message

`Fără emiterea unui beep msg.IsBeep = False

Page 131: Carte Baze de Date

131

`Titlul căsuţei de dialog msg.Title = „Aplicatie gestiunea personalului”

`Cerere de confirmareIf msg.Confirmation(„Doriti inchiderea _

formularului” & „?”) Then DoCmd.Close EndIfEndSub

Private Sub CmdTerminare_Click()`Obiect mesaj Dim msg As New Message `Emiterea unui beep msg.IsBeep = True ` Titlul casutei de dialog

msg.Title = „Aplicatie gestiunea personalului” `Cerere de confirmare If msg.Confirmation(„Doriti sa parasiti aplicatia ?”Then _ DoCmd.Quit EndIfEndSub

Apoi se tastează formularul. Căsuţa de mesaj afişată de metoda Confirmationutilizează cele două proprietăţi şi returnează răspunsul utilizatorului.Modulul de clasă Message poate fi îmbunătăţit definind proprietăţile şimetodele noi (ex: mesajele în caz de eroare).

4.9.8. Exploratorul de obiecte în ACCES

Ţinânând cont de numărul important de obiecte Access şi de diversitatea lor,este utilă căutarea rapidă a informaţiilor despre acestea.Exploratorul de obiecte permite afişarea informaţiilor referitoare la obiecte,metode, proprietăţi, evenimente şi constante.Exploratorul poate fi afişat în moduri diferite:

alegând opţiunea Object Browser din meniul View, folosind tasta F2,

făcând dublu clic pe icoana .

Page 132: Carte Baze de Date

132

unde:

- listă de biblioteci de obiecte.

-elemente căutate: obiect, proprietate, colecţie,eveniment, metodă, etc.

- rezultatul căutării: lista claselor de obiecte (obiecte şi colecţii) şi acomponentelor sale (obiect, colecţie, proprietate, eveniment sau metodă).Cuvântul căutat se poate găsi în lista claselor sau în aceea a componentelor.

Page 133: Carte Baze de Date

133

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

- metode, proprietăţi, evenimente şi constanteraportându-se la obiectul selectat sau inclus în lista din stânga. Componentulselectat este inclus în lista Result.

- detaliu al elementului selectat.

CĂUTAREA CU EXPLORATORUL DE OBIECTEPentru a efectua o căutare în exploratorul de obiecte, se procedează astfel:

se tastează cuvântul căutat în a doua linie derulantă,

se face clic pe icoana Search ,dacă fereastra Results afişează mai multe linii, deplasaţi-vă pe aceeacare vă interesează şi partea de jos a ferestrei este actualizată.

Page 134: Carte Baze de Date

134

4.9.9. Gestionarea evenimentelor în ACCESS

ASOCIEREA CODULUI VBA LA UN EVENIMENTUn cod VBA poate fi atribuit unui obiect în două modalităţi:

pornind de la compartimentul Eveniment al ferestrei de proprietăţi alobiectului în Acces

pornind de la listele derulante de obiecte şi evenimente editorul VisualBasic

CATEGORII DE EVENIMENTEListele următoare de evenimente sunt clasate după tip, şi cuprind:

numele evenimentului,numele proprietăţii corespunzătoare din fereastra de proprietăţi aleobiectului (între paranteze),descrierea evenimentului,coloana din dreapta (Anulare) arată dacă evenimentul poate fianulat. Anularea unui eveniment face obiectul paragrafului 6.3.

Page 135: Carte Baze de Date

135

EVENIMENTELE DE TIP FORMĂ (FEREASTRĂ)Anulare

Open Are loc la deschiderera formularului dar înaintea afişăriiprimei înregistrări. Are loc la deschiderea unu raport darînaintea listarii

DA

Load (la încărcare) Are loc la deschiderea formularului cândeste afişată prima înregistrare. NU

Resize (la redimensionare) Are loc la prima afişare aformularului şi la modificările aduse mărimii acestuia. NU

UnLoad (la descărcare) Are loc la închidere când înregistrărilesunt descărcate, însă înainte ca formularul să dispară. DA

Close (la închidere) Are loc atunci când formularul sauraportul dispar la închidere. NU

EVENIMENTE DE TIP FOCUSAceste evenimente se pot aplica formularelor (Activate, Deactivate,GotFocus, LostFocus) sau controalelor (Enter, Exit, SetFocus, LostFocus).Se spune despre obiect că are focus atunci când poate accepta schimbări înurma acţiunilor utilizatorului prin intermediul mouse-ului sau a tastaturii.Obiectele care au focus sunt numite obiecte active (ActiveForm sauActiveControl).

AnulareActivate (la activare) Are loc atunci când fereastra

formularului sau a raportului este activată. NU

Deactivate (la dezactivare) Are loc atât la activarea uneialte ferestre, (însă înainte ca aceasta să fieactivată), cât şi la închiderea ferestrei.

NU

Enter (la intrare) Are loc înainte ca un control săprimească focus, pornind de la un alt control,sau la deschiderea formularului.

NU

Exit (la ieşire) Are loc înainte ca un control să îşipiardă focus-ul în faţa unui alt control dinacelaşi formular sau din altul.

DA

GotFocus (la primirea focusului) Are loc atunci când uncontrol sau un formular fără control activprimeşte un focus.

NU

LostFocus (la pierderea focus-ului) Are loc atunci când un NU

Page 136: Carte Baze de Date

136

control sau un formular pierde focus-ul.

EVENIMENTE DE TIP DATE

Se aplică formularelor asociate unei surse de date (proprietatea RecordSourcepornind de la numele unui tabel sau de la o interogare). Acest tip de evenimentese mai aplică controalelor asociate unui câmp al sursei de date a formularului(proprietatea ControlSource).

AnulareAfterInsert (după inserare) Are loc după adăugarea unei

noi înregistrări în tabel. NU

AfterUpdate (după MAJ) Are loc după actualizarea unuicontrol sau a unei înregistrări cu datemodificate.

NU

AfterDelConfirm

(după ştergere) Are loc după ce utilizatorul arăspuns cererii de ştergere a înregistrătilor. NU

BeforeInsert (înaintea inserării) Are loc când se tasteazăprimul caracter al unei noi înregistrări, însăînaintea înregistrării propriu-zise.

DA

BeforeUpdate (înainte de MAJ) Are loc înainteaactualizării unui control sau a uneiînregistrări cu date modificate.

DA

BeforeDelConfirm

(înaintea ştergerii) Are loc după ceutilizatorul a a şters înregistrările dar înainteca Access să ceară confirmare.

DA

NotInList (la absenţa din listă) Are loc atunci cândtastarea unei valori nu se găseşte pe listă şiproprietatea limitată la listă este adevărată.

NU

Current (în momentul activării) Are loc atunci cândfocus-ul trece dintr-o înregistrare în alta. Deasemenea, are loc la deschidere înainte caprima înregistrare să devină cea curentă.

NU

Change (în momentul efectuării unei schimbări) Areloc în momentul modificării conţinutuluiunei zone text sau listă (tastatură saumacro/Visual Basic).

NU

Updated (la MAJ) Are loc atunci când datele unuiobiect OLE au fost modificate. NU

Delete (la ştergere) Are loc înaintea ştergerii DA

Page 137: Carte Baze de Date

137

propriu-zise.

AnulareDirty Se produce atunci când conţinutul unui

formular sau a părţii text al unei zone de listăse schimbă şi la trecerea de la o pagină înalta a unui control.

DA

EVENIMENTE DE TIP MOUSEAnulare

Click Are loc când de efectuează clic stânga pe uncontrol sau o zonă nouă a unui formular. NU

DblClick Are loc când se efectuează dublu clic stânga peun control sau o zonă nouă a unui formular. DA

MouseDown Are loc la apăsarea unui buton al mouse-ului peun control sau un formular. DA

MouseMove Are loc atunci când utilizatorul deplaseazămouse-ul pe un formular sau un control. NU

MouseUp Are loc atunci când utilizatorul nu mai apasă cumouse-ul pe un control sau formular. NU

EVENIMENTELE DE TIP TASTATURĂAnulare

KeyDown Are loc la apăsarea unei taste sau la executareainstrucţiunii SendKeys. Însă obiectul poate fiîmpiedicat să fie afectat de tastatură atribuindvaloarea 0 argumentului Keycode al proceduriiKeyDown al obiectului.

NU

KeyPress Are loc la apăsarea unei taste ce generează uncaracater ANSI standardObiectul poate fi împiedicat să fie afectat deacţiunea tastei atribuind valoarea 0argumentului KeyAscii al procedurii KeyPressal obiectului.

DA(cumacro sau

VBA)

KeyUp Are loc atunci când utilizatorul nu mai apasătasta sau când se execută SendKeys. Obiectulpoate fi împiedicat să fie afectat de acţiunea

NU

Page 138: Carte Baze de Date

138

tastei atribuind valoarea 0 argumentuluiKeyCode al procedurii KeyUp al obiectului.

Proprietatea KeyPreview a unui formular determină dacă procedurileeveniment de tastatură la nivelul formularului sunt apelate înaintea celor de lanivelul controalelor. Proprietatea KeyPreview poate fi folosită pentru a crea oprocedură de gestionare la nivelul unui formular.Exemplu:

Exemplul următor demonstrează cum se afişează un formular când utilizatorulacţionează pe tasta F1, oricare ar fi controlul activ.Private Sub Form_Load()KeyPreview = TrueEnd SubPrivate Sub Form_KeyDown(KeyCode As Integer, _

Shift As Integer)`Dacă tasta este F1, formularul Find este afişat`KeyCode este reiniţializat pentru a afişa Microsoft _ `Access HelpIf KeyCode = vbKeyF1 Then DoCmd.OpenForm”Afisare” KeyCode = 0End IfEnd Sub

EVENIMENTELE DE TIP PRINTAceste evenimente se aplică rapoartelor Access:

AnulareFormat (la formatare) Are loc când Microsoft Access

determină care date aparţin căror secţiuni. DA

Print (la listare) Are loc atunci când se redactează osecţiune pentru listare. DA

Retreat (la reformatare) Are loc când Microsoft Accessrevine la o secţiune precedentă în timpul redactăriiunui raport.

NU

NoData Are loc atunci când Microsoft Access a redactat unraport în scopul listării sale şi când acesta nu conţinedata.

DA

Page Are loc după ce Microsoft Access a redactat o paginăa unui raport pentru listarea acestuia, dar înaintealistării propriu-zise a paginii.

NU

Page 139: Carte Baze de Date

139

Observaţie:

Evenimentele Format, Print şi Retreat se aplică secţiunilor rapoartelor.EVENIMENTELE DE TIP FILTRU

AnulareApplyFilter Are loc atunci când utilizatorul aplică un filtru. DAFilter Are loc când utilizatorul crează un filtru. DA

EVENIMENTELE DE TIP ERROR ŞI TIMERAnulare

Error Are loc când survine o eroare. NU

Timer Are loc când o întârziere specifică s-a scurs. NU

ANULAREA UNUI EVENIMENTÎn anumite cazuri, este indicată anularea unui eveniment. Există două modalităţide a realiza aceasta:

Specificând numele unui macro ce conţine acţiunea CancelEvent, caşi parametrul proprietăţii de tip eveniment corespunzătoare, deexemplu, pentru a anula actualizarea unui control sau pentru a plasanumele macro-ului ce conţine acţiunea CancelEvent pe proprietateasa Before MAJ. Acţiunea CancelEvent în VBA foloseşte acţiuneaidentică din obiectul Docmd.Conferind valoarea True argumentului Cancel a unei proceduri.

Exemplu:Dacă data este incorectă, evenimentul Exit este anulat: cursorul este poziţionatpe câmp.Private Sub txtDateSfarsit_Exit(Cancel As Integer)If IsNull(txtDateSfarsit) Then Exit Sub`Data trebuie să fie corectăIf Not IsDate(txtDateFin) Then MsgBox(„Date incorecte”), vbCritical Cancel = True Exit SubEnd If`Data de sârşit trebuie să fie >= ca data de începutIf DateValue(txtDateFin) < DateValue(txtDateDeb) Then MsgBox(„Data de sfarsit trebuie sa fie mai _ mare decat data de inceput:”), vbCritical

Page 140: Carte Baze de Date

140

Cancel = True Exit SubEnd If

End Sub

Observaţie:Nu toate evenimentele pot fi anulate (vezi tablourile precedente decategorii de evenimente).

SECVENŢE TIPURI DE EVENIMENTEO acţiune utilizator sau sistem generează un eveniment în mod direct, însă, înacelaşi timp, pot fi activate mai multe evenimente subordonate.Urmează o suită de secvenţe tipuri de evenimente:

Deschiderea unui formular:Open → Load → Resize → Activate → Current

Închiderea unui formular:UnLoad → Deactivate → Close

Intrarea într-un control:Enter → GotFocus

Trecerea dintr-un formular în altul:Exit → Lost Focus

Modificarea unei zone de text:Deactivate Form1 → Activate Form2

Actualizarea unei zone de text:KeyDown → KeyPress → Change → KeyUp → Exit (zona1) →→LostFocus (zona2) →GotFocus (zona2)

Actualizarea unei înregistrări:KeyDown → KeyPress → Change → KeyUp → Before Update(Zone de texte) →AfterUpdate (Zone de Texte) →BeforeUpdate (Zone deTexte) →Before (Formulare) →AfterUpdate(Formulare)

Introducerea unei înregistrări în primul câmp:KeyDown → KeyPress → BeforeUpdate (Formular) →Change

Page 141: Carte Baze de Date

141

→ KeyUp

Ştergerea înregistrărilor:Delete → Current → BeforeDelConfirm → AfterDelConfirm

EVENIMENTE DE ACTUALIZAREÎn Microsoft Access evenimentele de actualizare intervin la două nivele:

actualizarea unui control, actualizarea unei înregistrări.

În cazul actualizării unui control, sunt executate evenimentele BeforeUpdate şiAfterUpdate ale controlului în cauză.În cazul actualizării unei înregistrări, sunt executate evenimenteleBeforeUpdate şi AfterUpdate ale formularului.Evenimentele de actualizare a controlalelor sunt executate înainteaevenimentelor de actualizare a formularului.

4.9.10. Proprietăţi şi metode ale obiectelor ACCESS

Această parte descrie proprietăţile şi metodele obiectelor utilizate în Access.Obiectele Form şi Report vor fi descrise în capitolul 8.Pentru a obţine lista exhaustivă a obiectelor, proprietăţilor şi metodelor, sefoloseşte asistentul VBA sau se utilizeazâ exploratorulde obiecte.

OBIECTUL APPLICATIONObiectul Application face referinţă la aplicaţia activă Microsoft Access.Proprietăţi:CodeContextObject Returnează obiectul în care un macro sau un alt cod

VBA este în curs de execuţie.CurrentObjectName Returnează numele obiectului bază de date activ

(tabel, interogare, formular, raport, macro, modul).CurrentObjectType Returnează tipul obiectului de bază de date activ. FeatureInstall Specifică sau determină felul în care Microsoft

Access administrează apelările metodelor şiproprietăţilor ce necesită instalare.

IsCompiled Returnează o valoare de tip boolean care indică dacăproiectul Visual Basic se găseşte într-un raportcompilat.

MenuBar Determină bara de meniuri de folosit pentru baza dedate.

Page 142: Carte Baze de Date

142

Name Identifică numele obiectului.Parent Permite realizarea referinţei la obiectul părinte.ProductCode Determină identificatorul universal, unic lui

Microsoft Access.ShortcutMenuBar Specifică meniul contextual ce apare atunci când

utilizatorul face clic dreapta.UserControl Determină dacă aplicaţia Microsoft Access în curs a

fost lansată de utilizator sau de o altă aplicaţie. Visible Permite ascunderea aplicaţiei.

Metode:AccessError Returnează şirul descriptiv asociat unei erori

Microsoft Access sau a unei erori DAO.AddToFavorites Adaugă o adresă de legătură hypertext în dosarul

Favorite (Documents).BuildCriteria Permite construirea uşoară a criterilor unui filtru.CloseCurrentDatabase Închide baza de date în curs pornind de la o altă

aplicaţie care a deschis o bază de date cu ajutorulAutomation.

DefaultWorkspaceClone Creaază un nou obiect Workspace fără a obligautilizatorul să se reconecteze.

Echo Specifică dacă Microsoft Access trebuie săredescrie ecranul.

FollowHyperLink Deschide documentul sau pagina Web specificatăde o adresă hyperlink.

GetOption Returnează valoarea în curs a unei opţiuni acăsuţei de dialog Options.

NewCurrentDataBase Crează o nouă bază de date în fereastraMicrosoft Access.

OpenCurrentDatabase Deschide o bază existentă ca bază de datecurentă.

Quit Permite părăsirea Access.RefreshDataBaseWindow

Permite actualizarea ferestrei Database atuncicând un tabel, o interogare, un formular, raport,macro sau modul au fost creaţi, şterşi sauredimensionaţi.

RefreshTitleBar Actualizează bara de titlu a Microsoft Access.Run Permite executarea unei proceduri Function sau

Sub specificate de Microsoft Access sau definitede utilizator.

Page 143: Carte Baze de Date

143

RunCommand Permite executarea unei comenzi integrate dinmeniu sau bara de instrumente.

SetOption Defineşte valoarea în căsuţa de dialog Options.

Exemplu: Buton de comandă ce permite părăsirea Access salvând toate obiectele. Sub cmdQuit_Click() Application.Quit acSaveYesEnd Sub

Exemplu: Codul următor permite modificarea culorilor implicite a paginilor dedate (conţinut în DataSheet al căsuţei de dialog Options din Access).`Culoarea fontului: albastru închisApplication.SetOption „Default Font color”, 4` Culoarea backgraund-ului: albApplication.SetOption „Default Background Color”, 15`Culoarea bordurilor: albastruApplication.SetOption „Default Gridlines Color”, 12

OBIECTUL DOCMDObiectul DoCmd permite executarea majorităţii acţiunilor pornind din VisualBasic, via macro-uri.Fiecărei acţiuni macro îi corespunde o metodă. Argumentele acţiuni devinargumentele metodei. Obiectul DoCmd nu dispune de proprietăţi proprii.

Observaţie:Acţiunile macro ce corespund metodelor sunt indicate între paranteze.

Executarea acţiunii:CancelEvent Anulează un evenimentOpenQuery Deschide o interogare.Quit Părăseşte Access.RunCommand Execută o comandă dintr-un meniu sau din bara de

meniuri.RunMacro Execută un macro.RunSql Execută o interogare SQL.

Datele formularelor şi rapoartelor:

Page 144: Carte Baze de Date

144

ApplyFilter Aplică un filtru unui tabel, formular sau raport.FindNext Continuă căutarea.FindRecord Căutarea unei înregistrări.GotoControl Deplasarea focus-ului asupra unui control.GotoPage Deplasarea focus-ului asupra primului control al paginii

indicate din formularul activ.GotoRecord Găseşte înregistrarea.

Importarea/Exportarea datelor:OutputTo Permite exportarea unui obiect Access (tabel, formular)

într-o altă bază Access sau un alt tip de fişier (Excel,XML).

SendObject Trimiterea unui obiect.TransferDatabase

Importă sau exportă o bază de date.

TransferSpreadSheet

Importă sau exportă o foaie de calcul.

TransferText Importă sau exportă codul ASCII.Manipularea obiectelor:Close Închide un obiect (formular, raport,etc.).CopyObject Permite copierea unui obiect Accesss în aceeaşi sau în

altă bază.DeleteObject Şterge un obiect.Maximize Măreşte o fereastră.Minimize Micşorează o fereastră sau o icoană.MoveSize Deplasează sau redimensionează o fereastră.OpenForm Deschide un formular.OpenModule Deschide un modul VBA.OpenQuery Deschide o interogare.OpenTable Deschide un tabel.OpenView Deschide o pagină de acces la datele bazei.PrintOut Listează.Rename Redenumeşte un obiect.RepaintObjectRequery Actualizează datele (relansează interogarea sursă a

obiectului).Restore Redă mărimea normală ferestrei.Save Salvează obiectul specificat sau cel activat.SelectObject Selectează un obiect al bazei de date.ShowAllRecords Dezactivează un filtru şi reafişează toate înregistrările.

Page 145: Carte Baze de Date

145

Diverse:AddMenu Permite crearea unei bare de meniu sau a unui meniu

contextual.Beep Emite un sunet.Echo Maschează sau afişează rezultatul unui macro în

momentul executării sale.Hourglass Clepsidra cursorului de mouse.SetMenuItem Permite definirea raportului (activat sau neactivat, bifat

sau nu), elementelor din meniul personlizat sau global.SetWarnings Activează / Dezactivează afişarea mesajelor standard de

avertizare.ShowToolbar Afişează/Ascunde o bară de instrumente.

Acţiuni de care obiectul DoCmd nu ţine cont:MsgBox Funcţia cutie de mesaje.Shell Executarea aplicaţiei.ExecuteCode Apelarea directă a funcţiei în Visual Basic. SendKeys Utilizarea instrucţiunii SendKeys.

Acţiunile StopAllMacros şi StopMacro nu au un echivalent în Visual Basic.

OBIECTUL SCREENFace referinţă la un obiect activat fie că este vorba de un formular, o pagină deacces la date, un raport sau un control.Este folosit în principal în procedurile eveniment ale diferitelor obiecte. Acestobiect nu conţine decât proprietăţi.Proprietăţi:ActiveControl Asigură o referinţă la un control activ.ActiveDataPage Asigură o referinţă la o pagină de acces la datele

active.ActiveForm Asigură o referinţă la o foaie activă de date.ActiveReport Asigură o referinţă la raportul activ.Application Permite accesul la obiectul Application şi

proprietăţile acestuia.MousePointer Permite specificarea tipului de cursor de mouse.Parent Asigură o referinţă la obiectul cadru al unui control,

unei acţiuni, unui subformular, etc.PreviousControl Asigură o referinţă la ultimul control activat înaintea

controlului curent.

Page 146: Carte Baze de Date

146

Exemplu:`Afişează numele controlului precedent Dim ctl As Control Set ctl = Screen.PreviousControl MsgBox ctl.Name`Transformă cursorul de mouse în clepsidră Screen.MousePointer = 11`Reafişează cursorul by default Screen.MousePointer = 0`Afişează numele formularului activ Dim frm As Form Set frm = Screen.ActiveForm MsgBox frm.Name`Modifică titlul formularului frm.Caption = „ Formular de plată”

OBIECTUL FILESEARCHAcest obiect permite căutarea fişierelor în funcţie de un ansamblu de criterii şiobţinerea informaţiilor relevante despre aceste fişiere.Proprietăţi:Creator Returnează codul de 4 caractere al aplicaţiei în care

obiectul specificat a fost creat (nu se poate folosidecât în mediul Macintosh).

FileName Returnează sau defineşte numele fişierului ce trebuiecăutat.

FileType Returnează sau defineşte tipul fişierului ce trebuiecăutat.

LastModified Returnează sau defineşte o constantă care indicătimpul scurs de la ultima modificare a fişierului.

LockIn Returnează sau defineşte folderul care se bazeazăcăutarea specificată.

MatchTextExactly

Arată dacă căutarea specificată nu se bazează decâtpe fişierele ale căror corp de texte sau proprietăţiconţine exact cuvântul sau fraza specificată.

SearchSubFolders Arată dacă căutarea include toate subfolderelefolderului specificat.

TextOrProperty Returnează sau defineşte cuvântul sau fraza de căutatîn corpul de texte sau în proprietăţile fişierului.

Obiecte şi colecţii:

Page 147: Carte Baze de Date

147

FoundFiles Obiect reprezentând lista de fişiere returnate decăutare

PropertyTests Colecţie de obiecte PropertyTests reprezentândansamblul criteriilor căutării.

SearchFolders Colecţie de obiecte ScopeFolder reprezentândansamblul folderelor căutare.

Metode:Execute Lansează căutarea fişierelor specificateNewSearch Stabileşte valorile implicite a tuturor criteriilor de

căutare.RefreshScopes Actualizează lista de obiecte ScopeFolder (foldere)

disponibile.Exemplu: Codul următor permite stocarea într-un tablou a listei de fişiereExcel într-un director din My Documents.Dim strFileName()As StringDim i,j As IntegerWith Application.FileSearch .NewSearch .LookIn = „C:\My Documents” .SearchSubFolders = True .FileName = „xls” .MatchTextExactly = True .Execute j = .FoundFiles.Count ReDim strFileName(j) For i = 1 To j strFileName(i) = .FoundFiles(i) Next iEnd With

COLECŢIA REFERENCESColectia References conţine obiectele References ce corespund biblotecilor deobiecte provenite din alte aplicaţii.Pentru a adăuga (sau şterge) o referinţă la o bibliotecă de obiecte, se alegeopţiunea References din meniul Tools. Fereastra următoare permite selectareareferinţelor dorite:

Page 148: Carte Baze de Date

148

Proprietăţi:Count Determină numărul obiectelor referenţiateParent Nu este folosit.

Metode:AddFromFile Creează o referinţă la o bibliotecă pornind de la

numele unui fişier.AddFromGuid Creează o referinţă la o bibliotecă pornind de la

GUID-ul său (identificator global unic în registrulWindows).

Item Returnează o referinţă în funcţie de poziţia sa încolecţia References.

Remove Şterge un obiect referinţă din colecţia References.

Proprietăţile obiectului ReferenceBuiltIn Arată dacă o referinţă implicită este necesară pentru buna

funcţionare în Access.FullPath Returnează o cale de acces şi numele fişierului bibliotecii

referenţiate.Guid Returnează GUID-ul, identificatorul bibliotecii în registrul

Windows.IsBroken Arată dacă o referinţă validă este atribuită obiectului în

registrul Windows.Kind Indică tipul de referinţă.Major Indică principalul număr de versiune al aplicaţiei căreia îi

Page 149: Carte Baze de Date

149

este asociată o referinţă.Minor Indică numărul minor de versiune al aplicaţiei.Name Numele referinţei.

Exemplu: Dim Ref As References`Afişează numărul total de referinţeMsgBox(„Nr. total de referinte este:” & references.Count`Parcurge referinţele, afişează numele şi calea de acces aleacestoraFor Each ref In Application.References MsgBox(„nume:” & ref.name & „ „ vbCr & vbCr & _ref.FullPath`Şterge referinţele neobligatorii pentru Access If Not ref.BuiltIn Then References.Remove refEndIfNext ref`Adaugă biblioteca de obiecte ExcelApplication.References.AddFromFile „Excel9.olb”`Adaugă biblioteca de obiecte WordApplication.References.AddFromFile „MsWord.olb”

COLECŢIA PRINTERSConţine obiectele Printer ce reprezintă fiecare imprimantă disponibilă în sistem.Observaţie:

Obiectul Printer nu există în versiunile precedente ale Access.

Proprietăţile obiectului Printer:BottomMargin Împreună cu proprietăţile TopMargin, RightMargin şi

LeftMargin, această proprietate permite specificareamarginilor unei pagini.

ColorMode Arată dacă imprimanta trebuie să listeze în culori(acPRCMColor) sau alb-negru (acPRCMMonochrome)

ColumnSpacing Indică dispunerea pe verticală a secţiunilor Detail a unuiformular.

Copies Indică numărul copiilor de listat.DataOnly Permite doar listarea datelor unui tabel sau interogarea în

modul DataSheets.DeviceName Indică numele perifericului.

Page 150: Carte Baze de Date

150

DriverName Indică numele driverului utilizat de imprimantă.Duplex Indică felul în care imprimanta administrează listarea

faţă-verso.Orientation Indică orientare imprimării (acPRORPortrait sau

acPRORLandscape).PaperBin Indică PaperBin ce trebuie folosit de către imprimantă.PaperSize Indică mărimea hârtiei.Port Indică portul la care este conectată imprimanta.PrintQuality Indică rezoluţia folosită de imprimantă pentru listare.

Celelate proprietăţi (ColumnSpacing, RowSpacing, ItemSizeHeight, etc.)permit formatarea din secţiunea Detail a unui formular sau raport.

4.10. Recomandări pentru optimizarea codului VBAPentru a optimiza funcţionarea VBA, unele comenzi pot accelera viteza de

execuţie a codului creat.Întotdeauna variabilele trebuie să fie declarate în mod explicit.Tipul de variabile trebuie să fie întotdeauna cât mai explicit posibil.Pentru a crea referinţa proprietăţilor, controalelelor şi obiectelor deacces la date, se preconizează variabilele.Cuvântul rezervat Me trebuie folosit pentru a se face referinţă la unformular sau un raport în cadrul procedurii eveniment. Se recomandă folosirea constantelor cât de frecvent posibil. Modulele trebuie să fie organizate pentru a nu supraîncărca memoria.Un modul este salvat doar dacă una din procedurile sale este apelată dealte coduri.Codul trebuie compilat regulat.

4.11. Întrebări de auto-evaluare1. Explicaţi:

a. Avantajele utilizării VBAb. Modelul obiect din Accessc. Proprietăţile referitoare la obiected. Evenimentee. Proceduri in VBAf. Noţiunile de variabile, constante şi tipuri de dateg. Instrucţiunea If. Exempleh. Instrucţiunea Select... Case. Exemple

Page 151: Carte Baze de Date

151

i. Instrucţiunea Do...Loop. Exemplej. Instrucţiunea While... Wend. Exemplek. Instrucţiunea For... Next. Exemplel. Instrucţiunea For Each... Next. Exemplem. Operatori în VBAn. Instrucţiunea With... End with. Exempleo. Instrucţiunea For Each... Next. Exemplep. Instrucţiunea If.. Type Of. Exempleq. Instrucţiunea Set. Exempler. Categoriile de evenimente existente în VBAs. Obiectul DoCmd. Exemple

2. Descrieţi mediul de dezvoltare pentru VBA (IDE-ul).

3. Reguli de scriere a codului sursă VBA.

4. Module de clasă.

5. Proprietăţile şi metodele obiectelor Access.

6. Recomandări pentru optimizarea codului Vba.

Page 152: Carte Baze de Date

152

Page 153: Carte Baze de Date

153

CAP.5. LIMBAJUL SQL

5.1. Rezumatul capitolului

Unul dintre cele mai puternice limbaje structurate pentru interogareadatelor, SQL (Structured Query Language), a devenit un standard pentru ogamă din ce în ce mai largă de sisteme pentru gestiunea bazelor de date. Vomprezenta comanda Select – care permite realizarea interogării bazelor de date,precum şi instrucţiunile care permit actualizarea datelor (adăugarea,modificarea şi ştergerea datelor prin comenzi SQL).

5.2. Prezentarea limbajului SQL

Limbajul SQL (Structured Query Language sau limbajul structurat deinterogări) este un limbaj de interogări şi gestionare a bazelor de daterelaţionale. Access foloseşte SQL ca limbaj de interogare. În momentul creăriiunei interogări în modul de interogare Design, Access construieşte în paralelinstrucţiunile SQL echivalente. De altfel, majoritatea proprietăţilorinterogărilor în modul de interogare Design prezintă clauze echivalente şiopţiuni accesibile în limbajul SQL.Exemplu: Dechideţi o interogare în modul Design View:

Faceţi clic pe opţiunea Mode SQL al icoanei View

Page 154: Carte Baze de Date

154

Se va obţine instrucţiunea SQL corespunzătoare interogării

Observaţie:Această operaţie este foarte interesantă în special pentru ceinefamiliarizaţi cu limbajul SQL: se poate crea interogarea în Access şirecupera instrucţiunea SQL astfel generată pentru a o include în codulVBA.

Anumite interogări SQL, numite interogări specifice limbajului SQL, nupot fi create în grila de generare a interogărilor, ci trebuie să fie scrise direct înmodul SQL. Este vorba de:

interogările directe ce permit operarea directă cu tabele în server,interogările definiţii de date ce permite crearea, ştergerea saumodificarea structurilor tabelelor,interogările Union ce permit regruparea câmpurilor de două tabele (saumai multe) în acelaşi câmp rezultat din interogare. Aceste interogărisunt foarte utile în fuzionarea înregistrărilor ce provin din tabelediferite.

5.3. Limbajul SQL ŞI VBA

Interogările SQL se integrează perfect în VBA şi pot fi utilizate pornind dela metodele diverselor obiecte:

metoda OpenRecordset a obiectelor DataBase şi Connection,

Page 155: Carte Baze de Date

155

metoda CreateQueryDef a obiectelor DataBase şi Connection,metoda Execute a obiectelor Command şi Connection, etc.

Interogările SQL sunt de asemenea foarte des utilizate în formulare:proprietatea RecordSource a unui formular sau raport,proprietatea RowSource a unei liste derulante, etc.

Majoritatea acestor proprietăţi pot fi modificate de codul VBA.Avantajele utilizării instrucţiunii SQL în VBA sunt următoarele:

Viteza de execuţie: o instrucţiune Select este mai rapidă decâtparcurgerea secvenţială a unui tabel.Performanţă mai bună: în modul client/server, interogările suntcompilate de SGBD care le optimizează performaţele.Întreţinere mai uşoară: codul de instrucţiuni SQL este mai scurt, decimai uşor de citit, decât echivalentul său în VBA.Standardizare: limbajul SQL este standardul de interogare al bazelorde date relaţionale.

5.4. Descrierea limbajului SQL

INSTRUCŢIUNEA SELECT

SELECT este cea mai folosită instrucţiune, corespunzând interogării Selectiondin Access. Permite extragerea câmpurilor unui ansamblu de înregistrări cecorespund unor criterii.

Sintaxă:SELECT [ALL |DISTINCT <listă de câmpuri>FROM <listă de tabele>[WHERE ...][GROUP BY...][HAVING...][ORDER BY]

ALL Sunt luate în considerare toate înregistrările cecorespund criteriilor.

Distinct Sunt omise toate înregistrările pentru care câmpurileselectate conţin date în dublu exemplar.

<listă de câmpuri> Listă de câmpuri selectate, separate de virgule* Indică faptul că toate câmpurile tabelului/tabelelor

specifcat(e) sunt selectate.

Page 156: Carte Baze de Date

156

alias1, alias2 Indică numele ce trebuie folosite drept antete decoloană în locul numelor coloanelor originale dintabel.

<listă de tabele> Numele tabelului sau tabelelor ce conţin datele caretrebuie extrase.

CLAUZA FROMAceasta specifică tabelele sau interogările din care sunt extrase datele.

Sintaxă:FROM table 1 [LEFT|RIGHT|INNER JOIN table2ON TABLE1.camp1 <operator de comparare> TABLE2.câmp2

[LEFT|RIGHT|INNER]

Aceşti operatori permit definirea tipului de imbricareîntre tabele.

LEFT JOIN Se foloseşte pentru a crea o imbricare externă destânga. Rezultatul acesteia cuprinde toateînregistrările provenite din primul tabel (cel dinstânga: <tabel1>) şi pe acelea pentru care există ovaloare corespunzătoare în al doilea tabel (cel dindreapta: <tabel2>).

RIGHT JOIN Se foloseşte pentru a crea o imbricare externă dedreapta. Rezultatul acesteia cuprinde toateînregistrările provenite din al doilea tabel (cel dindreapta: <tabel2>) şi pe acelea pentru care nuexistă valoare corespunzătoare în primul tabel (celdin stânga: <tabel1>).

INNER JOIN Se foloseşte pentru a crea o imbricare ce nu cuprindedecât înregistrările în care datele câmpurilor suntidentice.

<operator decomparare>

Toţi operatorii de comparare relaţională ce suntutilizaţi (=, <, >, < =, > =).

Exemple:Select Clients.Cli_societate, Commandes.Cde_DateCdeFrom Clients INNER JOIN Commandes ONClients.Cli_CodeCli =Commandes.Cde_CodeCli

Page 157: Carte Baze de Date

157

Listă de comenzi lansate de societate. În primul exemplu, sunt selectaţi doarclienţii care au facut deja comenzi.Select Clients.Cli_societate, Commandes.Cde_DateCdeFrom Clients LEFT JOIN Commandes ONClients.Cli_CodeCli =Commandes.Cde_CodeCli

În al doilea exemplu, sunt selectaţi toţi clienţii.

CLAUZA WHEREPermite filtrarea înregistrărilor după anumite criterii.Condiţiile clauzei WHERE se exprimă cu ajutorul operatorilor următori:

operatori de comparare: =, <, >, < =, > =, Is [Not] Null,[Not] In, Between.operatori logici: And, Or, Not.

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

CLAUZA GROUP BYClauza GROUP BY corespunde „Totalului” interogărilor Access (numiteRegrupări în versiunile anterioare). Permite regruparea datelor într-unul saumai multe câmpuri. În principal, clauza este folosită pentru executareafuncţiilor de agregare SQL, ca şi Sum (sumă), Count (calcul), Avg (medie).Exemple:

Această interogare returnează numărul comenzilor lansate de client. SELECT Clienti.Cli_Societate, Count(Comenzi.Cde_DateCde AS NbComenziFROM Clienti LEFT JOIN Comenzi ON Clienti.Cli_CodeCli = Comenzi.Cde_CodeCliGROUP BY Clienti.Cli_Societate

Page 158: Carte Baze de Date

158

Această interogare returnează totalul fiecărei comenzi. SELECT Comenzi.Cde_NumCde, Sum([Cde_Pret]*[Cde_Buc] AS TotalCdeFROM Comenzi INNER JOIN [Detalii Comenzi] ON Comenzi.Cde_NumCde = [Detalii Comenzi].Cde_NumCdeGROUP BY Comenzi.Cde_NumCde

CLAUZA HAVINGSpecifică înregistrările regrupate ce trebuie afişate într-o instrucţiune SELECTdotată cu o clauză GROUP BY. Odată ce regruparea este efectuată se afişeazălista de câmpuri a clauzei GROUP BY şi sunt selectate doar înregistrările carerespectă condiţia specificată în clauza HAVING.Exemplu:

Această interogare extrage comenzile ale căror total este mai mare de2 000 000.SELECT Comenzi.Cde_NumCde, Sum([Cde_Pret]*[Cde_Buc]AS TotalCde, Commandes.Cde_DateCde FROM ComenziINNER JOIN [Detalii Comenzi]ON Comenzi.Cde_NumCde = [Detalii Comenzi].Cde_NumCdeGROUP BY Comenzi.Cde_NumCde, Comenzi.Cde_DateCdeHAVING (Sum(Cde_Pret*Cde_Buc)> 2 000 000)

CLAUZA ORDER BYAceastă clauză determină sortarea (aranjarea în ordine crescătoare saudescrescătoare), înregistrările rezultă dintr-o interogare în funcţie decâmpul/câmpurile specificat(e).Sintaxă:[ORDER BY camp1 [ASC|DESC][, camp2 [ASC|DESC]][,. . . ]]

ASC Ordine crescătoare.DESC Ordine descrescătoare.

Exemplu:SELECT Clienti.Cli_Soc, Count(Comenzi.Cde_DateCde)AS NbComenziFROM ClientiLEFT JOIN Comenzi

Page 159: Carte Baze de Date

159

ON Clienti.Cli_CodeCli =Comenzi.Cde_CodeCliGROUP BY Clienti.Cli_SocORDER BY Count (Comenzi.Cde_DateCde) DESC

Instrucţiunea UPDATECorespunde unei interogări de actualizare care modifică valorile câmpurilorîntr-un tabel specificat, pentru înregistrările ce corespund criteriului dat(facultativ).Sintaxă:UPDATE tableSET câmp1=valoarenouă1,[câmp2=valoarenouă2] ... [WHERE criteriu]

Observaţie:Dacă nu se specifică nici o clauză WHERE, toate înregistrările suntactualizate.

Exemple:Această interogare modifică codul ţării din toate înregistrările tabelului Clienţi.UPDATE Clients SET Clients.Cli_Pays = „RO”

Această interogare modifică în tabelul Clienţi codul de ţară al înregistrărilorclienţilor al căror oraş este „Timişoara”.UPDATE Clients SET Clients.Cli_Pays = „RO” Where Clienti.Cli_oras =”Timisoara

INSTRUCŢIUNEA DELETECorespunde unei interogări DELETE ce şterge înregistrările din tabelulmenţionat în clauza FROM, după criteriile date (facultativ).

Sintaxă:DELETE FROM tabel[Where criteriu]

Observaţie:Dacă nu este specificată nici o caluză WHERE, toate înregistrările suntşterse.

Page 160: Carte Baze de Date

160

Exemplu:Această interogare şterge comezile de dinainte de 1997.DELETE Comenzi.Cde_DateCdeFROM ComenziWHERE (( Comenzi.Cde_DateCde) < #1/1/1997#)

INSTRUCŢIUNEA INSERT INTOInstrucţiunea SQL INSERT INTO corespunde unei interogări Add care adaugăînregistrări într-un tabel.Sintaxa:Interogare Add de adăugare a unei singure înregistrări :INSERT INTO <TabelDestinatie>[( câmp1 [, câmp2 [‚ ...] ] ) ]VALUES ( valoare1 [, valoare2 [, ...]])

Observaţie:Trebuie să existe tot atâtea valori câte coloane de valorificat, de acelaşitip şi în aceeaşi ordine.

Interogare Add cu una sau mai multe înregistrări: INSERT INTO <TabelDestinatie>[( câmp1 [, câmp2 [‚ ...] ] ) ]SELECT [<TabelSursa>.]câmp1 [, câmp2 [,...] ]FROM <lista de tabele>

Observaţie:Instrucţiunea SELECT trebuie să returneze atâtea valori în aceeaşiordine şi de acelaşi tip către coloanele de valorificat (câmpulinstrucţiunii INSERT).

Exemple:Adăugarea unei înregistrări în tabelul ClienţiINSERT INTO Clienti (Cli_CodCli, Cli_societate, Cli_oras,Cli_plata)VALUES( `Mirton`, `Editura Mirton`, `Timisoara~, `RO`)

Adăugarea unei înregistrări din tabelul Prospecte în tabelul Clienţi. INSERT INTO ClientiSELECT Prospecte.*FROM Prospecte

Page 161: Carte Baze de Date

161

ALTE INSTRUCŢIUNIInterogareTRANSFORM Crează o interogare imbricată.

UNION Crează o interogare ce fuzionează rezultatele a două saumai multe tabele sau interogări.

Crearea şi gestiunea de tabeleCREATE TABLE Crează un nou tabel.

CREATE INDEX Crează un nou index pentru un tabel existent.

ALTER TABLE Modifică structura unui tabel.

DROP TABLE Şterge tabelul din baza de date.

DROP INDEX Şterge indexul unui tabel.

Crearea şi gestiunea utilizatorilor şi a grupurilorCREATE USER Crează unul sau mai mulţi utilizatori.

ADD USER Adaugă unul sau mai mulţi utilizatori grupului deutilizatori existenţi

DROP USER Şterge unul sau mai mulţi utilizatori.

CREATE GROUP Crează una sau mai multe grupe de utilizatori.

DROP GROUP Şterge una sau mai multe grupe de utilizatori.

GRANT Oferă privilegii specifice unui utilizator sau a unuigrup de utilizatori existent.

REVOKE Retrage privilegiile specifice ale unui utilizator sau aunui grup de utilizatori existent.

Page 162: Carte Baze de Date

162

5.5. Exemple de utilizare a interogărilor SQL

Pentru a demonstra rezultatele limbajului SQL, exemplele următoarepropun două proceduri echivalente, una folosind limbajul SQL, cealaltă nu.

Pentru a realiza aceste exemple, se crează un tabel Clienţi avândcâmpurile Cli_Societate, Cli_Ţară şi Cli_Oraş şi se tastează câteva înregistrăriîn acest tabel.

ACTUALIZAREA ÎNREGISTRĂRILORCodul din exemplul următor permite modificarea conţinutului unui câmpdintr-un tabel pentru înregistrările ce corespund criteriilor.Codul VBA ce utilizează o interogare SQL de tip UPDATEPrivate Sub Maj_Plati()Dim cncDeviz As ADODB.ConnectionDim strSQL As Sring`Actualizarea codului ţării din tabelul ClienţiSet CncDeviz = CurrentProject.ConnectionstrSQL = „UPDATE Clients SET Clients.Cli_Plati = `RO` _ & „WHERE Clienti.Cli_Oras = „Timisoara”cncDeviz.Execute strSQLEND SUB

Codul VBA echivalent fără interogarea SQLPrivate Sub Maj_Plati()Dim cncDeviz As ADODB.ConnectionDim rstClient As ADODB.RecordSet` Deschidere pentru înregistrareSet CncDeviz = CurrentProject.ConnectionSet rstClient = New ADODB.RecordSetrstClient.Open „Clienti”, cncDeviz, adOpenForwardOnly,_ adLockOptimistic`Parcurgerea secvenţială a tabelului ClienţiDo While Not rstClient.EOF If rstClienti(„Cli_Oras”)= „Timisoara” Then rstClient(„Cli_Plata”)= „RO” rstClient.Update EndIf rstClient.MoveNextLoop

Page 163: Carte Baze de Date

163

End Sub

ÎNCĂRCAREA UNEI LISTE DERULANTECodul exemplului de mai jos permite afişarea într-o listă derulantă (controlulzonă de listă) a numelui clienţilor a căror nume de Societate începe cu o listădată (litera este scrisă într-o zonă de text).Pentru a testa acest exemplu:

se crează un formular numit Clienţise adaugă controalele următoare în acest formular:

- o zonă de text (txtNameSoc), - o zonă de listă (IstSoc), - un buton de comandă (cmdLista1).

Codul VBA ce utilizează interogarea SQL de tipul SELECT. Conţinutul listeieste rezultatul interogării SQL.Private Sub cmdListe1_Click()Dim strSQL As Sring`Controlul numelui scrisIf txt numeSoc = „ „ Then MSGBOX(„Trebuie să tastaţi cel puţin o literă”, _ txtNumeSoc.SetFocus Exit SubEnd If`Proprietăţi ale listei derulante`Lista conţine o interogareMe.lstSoc.RowSourceType = „Table/Interogare”strSQL = „SELECT Clienti.Cli_Societate Like `”& _ Me.txtNumeSoc & „*`Me.lstSoc.RowSource = strSQL`Reactualizarea datelor listeiMe.lstSoc.InterogareEnd Sub

Codul VBA echivalent fără interogarea SQL. Private Sub cmdListe1_Click()Dim cncDeviz As ADODB.ConnectionDim rstClient As ADODB.RecordSetDim strNumeSoc as String`Controlarea numelui scrisIf txtNumeSoc = „ „ Or IsNull(txtNumeSoc) Then

Page 164: Carte Baze de Date

164

MSGBOX(„Numele acesta a mai fost introdus”, vbExclamation)txtNumeSoc.SetFocusExit SubEnd If`Iniţializarea listei derulante`Lista conţine o suită de valoriMe.lstSoc.RowSourceType = „Lista de valori”Me.lstSoc.RowSource = „ „Me.lstSoc.Requery`Deschiderea unui set de înregistrăriSet cncDeviz = CurrentProject.ConnectionSet rstClient = New ADODB.RecordsetrstClient.Open „Clienti”, cncDeviz, adOpenForwardOnly, _ adLockOptimistic` Parcurgere secvenţială a tabelului şi adăugarea elementelor înlistăDo While Not rstClienti.EOF If Left(rst(Client(„Cli_Societate”),1) = _ Left(MetxtNumeSoc, Len(Me.txtNumeSoc)) Then strNumeSoc = rstClient(„Cli_Societate”) Me.LstSoc.AddItem strNumeSoc End If rstClient.closeEnd Sub

Observaţie:1. Exemplele precedente constată faptul că codul ce utilizează SQL este

mai scurt şi execuţia sa este mai rapidă în special dacă tabelul clientconţine un număr important de înregistrări.

5.6. Teste de auto-evaluare1. Explicaţi:

a. Instrucţiunea Select. Exempleb. Instrucţiunea Updatec. Instrucţiunea Deleted. Instrucţiunea Insert Into

2. Actualizarea înregistrărilor.3. Încărcarea unei liste derulante.

Page 165: Carte Baze de Date

165

Page 166: Carte Baze de Date

166

CAP. 6. MANIPULAREA OBIECTELOR WORD ŞIEXCEL ÎN VBA

6.1. Rezumatul capitolului Uneori este necesară manipularea obiectelor unei alte aplicaţii (înspecial cele care fac parte din pachetul Microsoft Office – cele mai uzuale fiindMS Word şi MS Excel) direct din Access. Acest lucru se realizează cu ajutorultehnologiei OLE Automation. În acest capitol va fi prezentat modul decomunicare cu cu cele două aplicaţii, modelele obiect asociate, obiectele şicolecţiile specifice fiecăreia precum şi protocolul de schimb dinamic de datedintre cele două aplicaţii, cu exemple.

6.2. Tehnologia OLEAutomation, numită şi OLE (Object Linking and Embedding) sau

OLE Automation, este tehnologia care permite manipularea obiectelor unei alteaplicaţii, direct din Access sau din VBA Access. Pentru a putea funcţiona,Automation are nevoie de un client şi un server numit server OLE. Serveruleste aplicaţia sau componentul care furnizează servicii clientului. Clientul,numit şi controlor, utilizează aceste serviciii pentru a pilota aplicaţia server şimanipula obiectele sale. Access este clientul şi Word este serverul OLE.

O bibliotecă de obiecte este un fişier prevăzut de obicei cu o extensie.olb, furnizând informaţii ce permit maipularea obiectelor puse la dispoziţiautilizatorului de un server. Se poate folosi Exploratorul de obiecte pentru aexamina conţinutul unei biblioteci de obiecte.Pentru a accesa obiectele unei alte aplicaţii, se face referinţă la bibliotecaacesteia de obiecte în modul următor:

→ într-un modul, se selectează meniul Tools-References, se vaafişa o căsuţă de dialog References cu toate serverele OLE înregistrate

→ se activează referinţa dorită.Cu ajutorul exploratorului de obiecte, consultarea listei de obiecte, metode şiproprietăşi ale unui server OLE este mai simplă.Utilizarea tehnologiei AutomationPentru a putea manipula obiectele altei aplicaţii, se procedează astfel:

se defineşte o variabilă obiect în codul VBA,se folosesc funcţiile CreateObject sau GetObject pentru aface referinţă la obiect.

Page 167: Carte Baze de Date

167

Exemple:Dim AppWord As ObjectSet AppWord ‚ CreateObject( “Word.Application”)

Sau,Dim AppWord As NewWord.Application

Referire la un document Word existent:Dim DocWord As New Word.ApplicationSet DocWord = GetObject(„C:\Clienti\Gabi.doc”)

Următoarele paragrafe descriu modul în care se poate pilota diferite softuri aleMicrosoft Office utilizând tehnologia Automation.Observaţie:

Obiectele, colecţiile, metodele şi proprietăţile modelelor obiect dinMicrosoft Office fiind foarte numeroase, doar cele mai des folosite suntdescrise în cele ce urmează.

Page 168: Carte Baze de Date

168

6.3. Comunicarea cu WordMODELUL OBJECT WORDExtrase din modelul Object Word.( Collections si Object).

OBIECTE ŞI COLECŢII WORD

Application

AddIns

Answer Wizard

Assistant

AutoCaption

AutoCorrect

Browser

CaptionLabels

COMAddIns

CommandBars

DefaultWebOptions

Dialogs

Dictionaries

Documents

EmailOptions

FileConverters

FileDialog

FileSearch

FontName

Languages

LanguageSettings

ListGalleries

MaillingLabel

MailMessage

NewFile

Options

RecentFile

Selection

SynonymInfo

System

TaskPanes

Tasks

Templates

Windows

Page 169: Carte Baze de Date

169

Documents Colecţia tuturor claselor (obiecte Document) deschise.

Dictionaries Colecţia tuturor dicţionarelor personale active (obiecteleDictionary).

E-MailOptions

Obiect ce conţine caracteristicile globale pe care MicrosoftWord le foloseşte când utilizatorul crează sau modifică mesajeelectornice şi răspunsurile la acestea.

FileConverters

Colecţia tuturor conversiilor de fişiere (obiecte FileConvert)disponobile pentru deschiderea şi înregistrarea fişierelor.

FontNames Obiect ce conţine lista numelor tuturor fonturilor disponibile.

Languages Colecţia limbilor (obiecte Languages) utilizate în Word pentruverificările lingvistice şi pentru redactare.

ListGalleries Colecţia obiectelor ListGallery

MailMessage Obiect reprezentând mesajul electronic activ dacă Word esteeditorul e-mailului.

Options Reprezintă opţiunile aplicaţiei şi documentului Word.Majoritatea proprietăţilor obiectului Options corespundelementelor căsuţei de dialog (meniul Tools).

Selections Reprezintă selectarea în curs a unei ferestre.

System Conţine informaţii despre calculatorul

Templates Colecţia tuturor modelelor (obiecte Template) disponibile laun moment dat.

Page 170: Carte Baze de Date

170

COLECŢIA DOCUMENTS

Metode:

Colecţia Documents este compusă din toate obiectele Document deschise înWord:

Add Crează un nou Document şi alătură colecţia Documents.Exemplu: Documents.Add Template:=”Normal”

Close Închide toate documentele Word deschiseExemplu: Documents.Close

Open Deschide documetul specificat şi îl alătură colecţiei Documents. Exemplu: Documents.Open FileName:=”C:\Clienti\Balanta.doc”

Save Salvează toate documnetele deschise. Exemplu: Documents.Save

OBIECTELE DOCUMENTUn obiect Document permite cearea unei referinţe la un document Word.Active Document desemnează documentul activ.Metode:Activate Activează un document deja deschis.

Exemplu: Documents(„ Cumpărători.doc”).Activate

Close Închide un document Word.Exemplu: Documents(„ Cumpărători.doc”).CloseSau ActiveDocument.close

PrintPreview

Afişează un document în Print Preview înaintea printării. Exemplu: ActiveDocument.PrintPreview

Range Returnează un obiect Range.Exemplu: ActiveDocument.Range(0, 50).Bold =True

Save Salvează un document. Exemplu: ActiveDocument.Save

Page 171: Carte Baze de Date

171

SaveAs Salvează un document sub un nou nume şi/sau într-un nouformat.Exemplu: ActiveDocument.SaveAs FileName:=strDocName

Obiecte şi colecţii:

Characters Colecţii de caractere dint-un document.

MailMerge Fuziune în Word.

PageSetup Descrierea setării în paginăExemplu: ActiveDocument.PageSetup.RightMargin = InchesToPoint(1)

Paragraphs Colecţia paragrafelor unui document.

SmartTags Colecţia butoanelor active (obiecte SmartTag) al unuidocument sau a unei plaje de text în cadrul unui document.

Words Colecţia de cuvinte a unui document.Exemplu: ActiveDocument.Words.Count

Exemplu: Îngroşarea caracterelor unui document Private Sub Word_Bold()Dim appWord As New Word.ApplicationWith appWord .Documents.Open”C:\Clienti\gabi.doc” .ActiveDocument.Select .Selection.Font.Bold = True .ActiveDocument.Close wdSaveChange .QuitEnd WithEnd Sub

Page 172: Carte Baze de Date

172

Lansarea unui MailMerge.Private Sub Relatii()Dim appWord As Word.ApplicationDim docWord As Word.Document`lansarea în WordSet AppWord = New Word.ApplicationappWord.Visible = True `deschiderea unei scrisori tipSet docWord = appWord.documents.Open („C:\clienti\gabi.doc”)`pregătirea unei scrisori tip pentru toţi clienţiiWith docWord.MailMerge .Destination = wdSendNewDocument .SuppressBlankLines = True With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With`lansarea unei scrisori tip

.ExecuteEnd WithEnd Sub

Page 173: Carte Baze de Date

173

6.4. Comunicarea cu EXCELMODELUL OBJECT EXCELExtras din modelul Object Excel ( Collections şi Object).

OBIECTELE ŞI COLECŢIILE EXCEL

Application

AddIns

Answer

Assistant

AutoCorrect

AutoRecover

CellFormat

COMAddIns

CommandBar

Debug

Dialogs

DefaultWebOptions

FileSearch

Languages

Names

RecentFiles

SmartTagRecognizers

WorkBook

Workshets

Charts

DocumentProperties

CustomViews

CommandBar

Styles

Borders

Font

Interior

Names

SmartTagOptions

WebOptions

Windows

WorkSheetFunction

Page 174: Carte Baze de Date

174

Workbooks Colecţia tutror claselor (obiectele Workbook) deschise.

Worksheets Colecţia tuturor foilor de calcul (obiecte Worksheet) aleunei clase.

Charts Colecţia tuturor obiectelor Name din aplicaţie. Fiecareobiect Name reprezintă un nume definit pentru o plajă decelule.

SmartTagOptions

Obiect reprezentând opţiunile referitoare la butoaneleactive.

Exemplu: activarea tuturor butoanelorActivateWorkBook.SmartTagOptions_.EmbedSmarttags = True

Styles Colecţia tuturor descrierilor de stil (obiecte Style)

CustomViews Colecţia de obiecte personalizate (obiecte CustomView).

COLECŢIA WORKBOOKSSe compune din:Add Crează un nou Workbook, care devine cel activ, şi îl alătură

colecţiei Workbooks. Exemplu: WorkBook.add

Close Închide Workbook-ul Excel deschis.Exemplu: WorkSheets.Close

Open Deschide Workbook-ul specificat care devine activ şi îl alăturăcolecţiei Workbooks.Exemplu:WorkBook.Open Filename:=”C:\gabi\gabi1.xls”

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

Page 175: Carte Baze de Date

175

OBIECTELE WORKBOOKUn obiect Workbook permite crearea unei referinţe la o clasa Excel.Proprietatea Active Workbook desemnează o clasa activă.

Activate Activează un fişier deja deschis. Exemplu: Documents(„Cumpărători.xls”).Activate

Close Închide un fişier Excel deschis.Exemplu: Documents(„Cumpărători.xls”).Close

PrintPreview Afişează foaia activă în modul PrintPreview îniantealistării. Exemplu: ActiveWorkbook.PrintPreview

Save Salvează un Workbook. Exemplu: ActiveWorkbook.Save

SaveAs Salvează un Workbook sub un nou nume şi/sau sub un nouformat.Exemplu: ActiveWorkbook.SaveAs FileName:=”Gabi.xlt”

SCRIEREA DATELOR ÎN CELULELE EXCEL

Exemplu: Acest exemplu demonstrează cum se afişează conţinutul unuitabel Access în Excel (Exportul datelor din Access in Excel):

Private Sub ExportXLS_Client()`Obiecte AccessDim dbsGabi as DAO.databaseDim stClient As DAO.RecordSetDim fld As DAO.Field`Obiecte ExcelDim appExcel As Excel.applicationDim wkbClient As Excel.WorkbookDim wksClient As Excel.Woorksheet`Variabile cicliceDim intLig As IntegerDim intCol As Integer

Page 176: Carte Baze de Date

176

` crearea unei mape ExcelSet appExcel = CreateObject(„Excel.Application”)Set wkbclient = appExcel.Workbook.AddSet wksClient = appExcel.ActiveSheetappExcel.Visible = True`Deschiderea tabelului ClienţiSet dbsGabi = DbEngine.OpenDatabase(„C:\gabi\gabi1.mdb”)Set rstClient = dbsOpenRecordSet(„Clienti”, dbOpenDynaset)`Actualizarea unei foi activeWith wksClient`Antetele coloanelor completate de numele câmpurilorintCol = 1For Each fld In rstClient.Fields .Cells(1,intCol).Value = fld.Name intCol =IintCol + 1Next fld`Parcurgerea înregistrărilor`Adăugarea unei linii pentru fiecare înregistrareintLig = 2Do While Not rstClient.Fields Intcol =1 For Each fld In rstClient.Fields .Cells(intLig, intCol).Value = fld.Value intCol = intCol + 1 Next fld intLig = intLig +1 rstClient.MoveNextLoop

`Atribuirea unui nume foii Excel.Name = „lista de clienti”End With`Înregistrarea mapei de lucruwkbClient.SaveAs „C:\Clienti\Clienti.xls”`Închide ExcelappExcel.QuitEnd Sub

Page 177: Carte Baze de Date

177

6.5. Protocolul DDE

DDE (Dynamic Data Exchange) este un protocol de schimb dinamic dedate între două aplicaţii Windows, una denumită Clineţi sau Destinaţie, cealaltădenumită Server sau Sursă. Legătura este întreruptă dacă una dintre cele douăaplicaţii este închisă.O legătură DDE cuprinde 3 faze principale:

- iniţierea: aplicaţia destinaţie caută aplicaţia sursă şi stabileşte uncanal (legătură) de comunicare,- conversie: datele sunt schimbate prin acest canal,- închidere: canalul de comunicare este închis.

INIŢIEREAFuncţia DDEInitiate permite iniţierea conversaţiei între două aplicaţii,returnând numărul de canal dacă comunicarea a fost stabilită. Dacă aceasta nus-a întâmplat, are loc o eroare.Sintaxă:DDEInitiate(<application>,<subject>)Application Numele aplicaţiei sursă.Subject Grupul de date care sunt folosite.

Exemplu:`crează o legătură DDE cu foaia Excel canal = DDEInitiate(„Excel”,”Foaie”)

LEGĂTURA→ DDEFuncţia DDE permite stabilirea unei conversaţii DDE cu o altă aplicaţie, de lacare se cere informaţii pentru a fi afişate într-un control al unui formular sauraport.Sintaxă:DDE (<Application>, <Rubrica>, <Element>)Application Expresie de tip şir ce identifică o aplicaţie.Rubrica Fişier document sau fişier de date.Element Referinţă la o dată a aplicaţiei Sursă.Exemplu: Atribuie conţinutul celulei L1C1 unei zone de text via

proprietatea Source Control.=DDE (“Excel”, “Mapa1”, “L1C1”)

Page 178: Carte Baze de Date

178

→ DDESendFuncţia DDESend permite stabilirea unei conversaţii DDE cu o altă aplicaţie şitrimiterea unui element de informaţie acestei aplicaţii dintr-un control situatîntr-un formular sau raport.Sintaxă: DDESend (<Application>, <Rubrica>, <Element>, <Date>

Application Expresie şir ce identifică o aplicaţie.Rubrică Fişier document sau fişier de date.Element Referinţă la o dată a aplicaţiei sursă.Date Şir sau expresie conţinând datele care sunt transmise

aplicaţiei.Exemplu: Atribuie conţinutului controlului celulei L1C1 unei zone de text=DDESend(„Excel”,”Mapa1”, „L1C1”, [oras])

→ DDEPokeInstrucţiunea DDEPoke trimite informaţii aplicaţiei Sursă print-un canaldeschis.Sintaxă: DdePoke <Numărul de canal>, <Element>, <Date>

ChannelNumber Numărul de canal returnat de către funcţia DDEInitiate.Element Referinţă la o dată a aplicaţiei Sursă.Date Dată trimisă aplicaţiei Sursă.Exemplu: Trimite valoarea 15 în celula L1C1DDEPoke canal, ”L1C1”, „15”

→ DDERequestFuncţia DDERequest cere informaţii aplicaţiei Sursă.Sintaxă:DDERequest ( <Numar canal>, <Element>)

ChannelNumber Numărul de canal returnat de către funcţia DDEInitiate.Element Referinţă la o dată a aplicaţiei Sursă.

Exemplu: Atribuie conţinutul celulei L1C1 variabilei sumă.Suma = DDEReqest (canal, „L1C1”)

Page 179: Carte Baze de Date

179

→ DDEExecuteInstrucţiunea DDEExecute returnează un şir de comenzi unei alte aplicaţii încurs de execuţieSintaxă:DDEExecute (<Numar de canal>, <Comandă>)ChannelNumber Numărul de canal returnat de către funcţia DDEInitiate.Comandă Şir conţinând o comandă recunoscută de cealaltă

aplicaţie. Exemplu: Crează o nouă foaie de calculDDEExecute Canal,”[New(1)]”

ÎNCHIDEREA→ DDETerminateInstrucţiunea DDETerminate închide un canal de comunicare DDE.Sintaxă:DDETerminate <Numar de canal>ChannelNumber Numărul de canal returnat de către funcţia DDEInitiate.

Exemplu: DDETerminate canal→ DDETerminateAllAceastă instrucţiune închide toate canalele de comunicare DDE.Sintaxă:DDETerminateAll

EXEMPLU GLOBALArată cum se afişează conţinutul unui tabel Access în Excel.Exemplu:Private Sub TransferXLS_Clienti( )`Variabilele Access ObjectDim dbs As DAO.DatabaseDim rstClient As DAO.RecordSetDim fld As DAO.Field`Variabile pentru utilizarea DDEDim Canal As VariantDim intLig As IntegerDim intColas Integer

Page 180: Carte Baze de Date

180

Dim strPozitie As String`Variabile ExcelDim strExcel as StringDim blnRes As BooleanOn Error resume NextSet dbs = CurrentDbSet rstClient = dbs.OpenRecordSet(„Clienti”, dbOpenTable)`Deschiderea unui canal DDE cu Excelcanal = DDEInitiate(„Excel”, „Foaie”)`În caz de eroare se lansează aplicaţia ExcelIf Err Then Err = 0`Caută aplicaţia Excel With Application.FileSearch .NewSearch .LookIn = „C:\” .SearchSubFolders = True .FileName = „Excel.exe” .FileType = „*.exe” If .Execute( ) > 0 Then strExcel = .FoundFiles(1)End If`Lansarea ExcelblnRes = Shell(strExcel, vbNormalFocus)If Not blnRes Then MsgBox (”Aplicaţia Excel nu a fost găsită”, _vbExclamation) Exit SubEnd IfCanal = DDEInitiate(„Excel”, „Foaie”)End If`Activarea ferestrei ExcelintLin = 1intCol =1`Antetul coloanelor conţinând numele câmpurilorFor Each fld In rstClient.Fields strPositon = „L” & intLin & „C” & ”intCol DDEPoke Canal, strPosition, rstClient.Fields _ (IntCol -1).Name intCol = intCol + 1

Page 181: Carte Baze de Date

181

Next fld`Parcurgerea înregistrărilor de transferatDo While Not rstClient.EOF intLin = intLin + 1 intCol =1 For Each fld In rstClient.Fields strPosition = „L” & intLin & „C” & intCol DDEPoke Canal, strPozitia, rstClient(intCol – 1) intCol = intCol + 1

Next fld rstClient.MoveNextLoopEndSub

6.6. Întrebări de auto-evaluare

1. Explicaţi:a. Conceptul OLE Automation.b. Protocolul DDE.

Page 182: Carte Baze de Date

182

PARTEA PRACTICĂ

CAP.7. APLICAŢII PRACTICE REZOLVATE

7.1. Rezumatul capitolului

Acest capitol propune un îndrumător pentru orele de laborator, învederea însuşirii deprinderilor practice de utilizare a programului MicrosoftAccess 2003. Acesta va cuprinde atât aplicaţii rezolvate cât şi aplicaţii propusestudenţilor pentru munca individuală. Suntem conştienţi că noţiunile prezentateprin exemple în acest capitol nu acoperă toate facilităţile de prelucrare oferitede Microsoft Access. Propunerea noastră este prezentarea unora dintre cele maiutile instrumente de utilizare a SGBD-ului studiat în partea teoretică.

7.2. Aplicaţia 1

1. Să cere informatizarea activităţii unei firme. Furnizorii suntidentificaţi prin cod furnizor, denumire furnizor (numele şi prenumelefurnizorului), localitatea, adresa, email, banca furnizor şi contfurnizor. Despre produse se cunosc cod produs, denumire produs,unitate de măsură, stoc, preţ unitar. Produsele sunt depozitate înmagazii, pentru care se cunosc cod magazie, denumire magazie,gestionar (numele persoanei care are în gestiune depozitul respectiv).Operaţiunile se desfăşoară pe baza unor facturi, care trebuie să conţinănumărul facturii şi data facturii. Fiecare factură va avea detaliate liniilefacturii în tabelul LiniiFact, care va conţine număr factură, cod produsşi cantitate.

2. Se cere afişarea tuturor produselor în ordinea alfabetică a denumiriiacestora.

3. Să se afişeze toate produsele cu unitatea de măsură bucăţi care aucantitatea strict mai mare decât 2, ordonate alfabetic după denumireaprodusului.

Page 183: Carte Baze de Date

183

Obiective:

Crearea unei baze de date.Crearea tabelelor în Design View. Analiza informaţiilor şi stabilireastructurii tabelelor. Stabilirea cheilor primare şi a indecşilor.Crearea relaţiilor dintre tabele.Afişarea unei liste ordonate şi aplicarea filtrelor pentru afişarea datelordupă anumite criterii.

Rezolvare

1. Propunem următoarea schemă de structurare a datelor:

În tabela LiniiFact se observă faptul că pentru câmpul nr_f nu poate fidefinită o cheie primară, de aceea vom adăuga câmpul ID.

Se ştie că un furnizor va apare pe mai multe facturi. Deci relaţia dintretabelele Furnizori şi Facturi este de tipul one-to-many. Pentru a crea aceastărelaţie, este necesară adăugarea câmpului cod_f în tabela Facturi. Într-omagazie se găsesc mai multe produse, deci relaţia dintre tabela Magazii şitabela Produse este de tipul one-to-many. Pentru aceasta este necesarăadăugarea câmpului cod_m în tabela Produse. În acelaşi timp un produs seregăseşte de mai multe ori (posibil) pe liniile unei facturi, sau pe liniile maimultor facturi. Deci relaţia dintre tabela Produse şi tabela Liniifact esteone-to-many. Pentru a o crea este necesară adăugarea câmpului cod_p în tabelaLiniifact. În final, o factură are mai multe linii, deci relaţia dintre tabeleleFacturi şi Liniifact este de tipul one-to-many.

Pentru a realiza aceste leagături, unele tabele trebuie completate cuanumite câmpuri suplimentare, care să permită crearea ulterioară a relaţiilor.Pentru aceasta, în tabela copil, se adaugă câmpul pe care a fost creată cheiaprimară din tabela părinte. Câmpurile de tip cheie primară alese vor fi:Furnizori (cod furnizor), Produse (cod produs), Magazii (cod magazin), Facturi

Page 184: Carte Baze de Date

184

(nr fact) şi Liniifact (ID). Deci tabelele părinte sunt: Furnizori, Magazii şiFacturi, iar Produse şi Liniifact sunt tabele Copil. Adăugând şi rearanjândtabelele, acestea vor arăta ca în figura următoare:

Primul pas este crearea bazei de date. Aceasta va purta numele Firme.Pentru a crea baza de date, din meniul File se alege opţiunea New, iar din TaskPane-ul New File se alege opţiunea Blank Database. Primul pas este alegerealocaţiei în care va fi salvat fişierul, apoi denumirea propriu-zisă a acestuia. După crearea bazei de date se trece la analiza fiecărui tabel în parte şialegerea tipului de câmp cel mai potrivit datelor care vor fi salvate în acesta.Propunem următoarele:

în tabela Furnizori: cod_f (codul furnizorului) – cheie primară, de tipNumber, Field Size: Integer, Decimal Places:0, Caption: cod furnizor,Validation Rule: <=200, Validation Text: “Maxim 200 de furnizori”,Required: Yes; den_f (denumirea furnizorului) – de tip Text, FieldSize: 30, Format: >, Caption: denumire furnizor, Required: Yes, AllowZero Length: No, Indexed: Yes (Duplicates OK); loc_f (localitate) – detip Text, Field Size: 30, Caption: localitate, Default Value: Timisoara;adresa – de tip Memo; email – de tip Hyperlink; banca – de tip Text,Field Size: 30, Format: >, Required: Yes, Allow Zero Length: No; cont(contul din bancă, IBAN) – de tip Text, Fields Size: 24, Input Mask:"RO"99>AAAA0000099999999999.

După ce toate câmpurile au fost create, se salvează tabela alegândbutonul Save, apoi se apasă săgeata de pe butonul View, de unde se alegeDatasheet View, pentru a introduce datele a trei furnizori în tabelă.

Page 185: Carte Baze de Date

185

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

în tabela Produse: cod_p – Primary key, de tip Number, Field Size:Long Integer, Caption: Codul produsului, Required: Yes; den_p(denumirea produsului) – tipul câmpului Text, Field Size:15, Caption:denumirea produsului; um (unitate de măsură) – de tipul LookupWizard, apoi selectăm – I will type in the values that I want, laopţiunea Number of Columns lăsăm 1, iar în lista col1 vom tasta perând, una sub alta, valorile dorite: kg, l, cm, buc, selectând butonulNext, apoi Finish; stoc (stocul disponibil în magazie) – de tip Number,Field Size: Long Integer, Caption: unitate de masura, Required: Yes;pret_u, de tip Currency, Caption: Pret unitary; cod_m (cod magazie) –un câmp de tip Lookup Wizard – vom selecta opţiunea I want thelookup column to lookup the values in a table or query, apoi se allegetabela Magazii; selectăm câmpul cod_m (cod magazie):

Page 186: Carte Baze de Date

186

Ordonarea va fi făcută după acelaşi camp cod_m, putându-se observavalorile introduse anterior în tabela Magazii:

În continuare se selectează butonul Next, apoi Finish. Între cele douătabele (Magazii (tabela părinte) şi Produse (tabela copil) va fi creatăautomat o relaţie). Pentru ca această relaţie să fie de tipul one-to-many,vom introduce minim 4 produse, 2 dintre ele găsindu-se în aceeaşimagazine, de exemplu cea cu codul 113;

tabela Facturi: nr_f (numărul facturii) – Primary key, de tip Number,Field Size: Long integer, Caption: Numarul facturii, Required: Yes;data_f – de tip Date/Time, Caption: Data Facturii, Required: Yes,Format: Short date, cod_f (cod furnizor) – tipul de date LookupWizard, ne legăm de tabela Furnizori, câmpul cod_f, Caption: Codfurnizor. Tabela Facturi este copilul tabelei Furnizori. Având 3furnizori în tabela părinte, vom introduce minim 4 facturi, codulfurnizorului 125 repetându-se de 2 ori:

Page 187: Carte Baze de Date

187

tabela Liniifact: ID – Primary Key, un câmp de tip Autonumber,Caption: Numar curent; nr_f (numărul facturii) – un câmp de tipLookup Wizard, ne legăm de tabela Facturi, câmpul nr_f, Caption:Numarul facturii; cod_p (codul produsului) – un câmp de tip LookupWizard, ne legăm de tabela Produse, câmpul cod_p şi cant – un câmpde tip Number, Field Size: Integer, Caption: Cantitate. Acest tabel fiindcopilul tabelelor Produse şi Facturi, vom introduce minim 5înregistrări:

Pentru a verifica relaţiile şi a seta regulile de integritate referenţială, se

selectează butonul Relationships de pe bara de unelte: :

Pentru fiecare relaţie în parte, se apelează meniul contextual, se alegeopţiunea Edit Relationship... Pentru a seta regulile de integritate referenţială seselectează opţiunea Enforce Referential Integrity, bifând opţiunea CascadeUpdate Related Field. Dacă se doreşte modificarea tipului de relaţie dintrecele două tabele, se selectează butonul Join Type..., alegând una dintre cele treitipuri de relaţii.

Page 188: Carte Baze de Date

188

Selectând pentru fiecare relaţie în parte opţiunile respective, se obţineurmătoarea situaţie:

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

Pentru aceasta trebuie să fim poziţionaţi pe o anumită coloană dintabel, în modul de vizualizare Datasheet View.

3. Pentru a filtra datele dintr-o anumită tabelă putem selecta fie unuldintre butoanele: Filter by selection, respectiv Filter by form, şiApply/Remove filter, fie una dintre opţiunile din următoarea figură. Opţiunea

Page 189: Carte Baze de Date

189

Filter by Form ascunde înregistrările, permiţând fie selectarea valorii doriteutilizând combo-box-ul corespunzător coloanei dorite, fie introducerea unei saumai multor valori, operatorul dintre condiţiile multiple fiind AND. Pentru avedea rezultatul, se selectează butonul Apply Filer de pe bara de unelte TableDatasheet.

Opţiunea Filter by selection permite selectarea cu mouse-ul a valoriicăutate (efectuându-se un click în celula respectivă), rezultatul fiind vizibilatunci când se apasă butonul Apply Filter. Dacă se doreşte anularea filtrului,se selectează butonul Remove Filter (acest buton este un buton de tip On/Off).Filter excluding selection funcţionează exact ca şi opţiunea Filter byselection, diferenţa fiind operatorul NON pus în faţa condiţiei.

Ultima opţiune – Advanced Filer/Sort permite deschiderea uneiferestre cu ajutorul căreia putem sorta şi compune condiţii compuse, putându-seutiliza operatorul OR între condiţii:

7.2.1. Aplicaţie propusă

Se cere informatizarea activităţii unei societăţi de asigurări. Clienţii pot fipersoane fizice sau juridice caracterizate printr-un număr unic, nume şi

Page 190: Carte Baze de Date

190

prenume/denumire, adresă şi telefon. Aceştia pot să încheie diferite tipuride asigurări (de bunuri, de viaţă etc). Asigurările sunt încheiate de agenţiice sunt identificaţi printr-un cod unic, nume şi prenume. Contractul deasigurare este caracterizat printr-un număr, data încheierii, obiectulasigurării, perioada (în luni), valoarea asigurată şi prima ce va trebui săfie plătită în fiecare lună de client. Clienţii efectuează plata primelor prinordin de plată (persoane juridice) sau direct la casierie (persoane fizice),eliberându-se chitanţe. Documentul de plată conţine: număruldocumentului, data la care a fost întocmit şi suma plătită. În momentulproducerii riscului pentru care a fost întocmită asigurarea, societateaplăteşte clientului despăgubiri. La plata despăgubirilor se întocmeşte unproces verbal care este caracterizat prin nume, data încheierii, descriereacauzei ce a generat despăgubirea şi procentul în care este despăgubitclientul.

7.2.2. Aplicaţie propusă

Se cere informatizarea activităţii la o filială CEC. Clienţii filialei suntidentificaţi prin seria şi numărul de buletin, data eliberării buletinului,nume, prenume şi adresă. Fiecare client poate să deţină unul sau maimulte cecuri. Pentru fiecare cec se cunoaşte: seria, numărul, data la care afost eliberat, suma depusă în momentul eliberării şi tipul cecului (poate fila termen şi la vedere). De asemenea, fiecare cec poate să aibă unul saumai mulţi titulari. Fiecare client poate efectua depuneri şi restituiri.Depunerile se efectuează prin intermediul unei foi de depunere (FD)caracterizată prin: număr, data şi suma depusă. Restituirile se efectueazăprin intermediul foilor de restituire (FR) caracterizate prin: număr, data şisuma restituită. Fiecare cec se poate lichida de către unul din titulari prinintermediul unei foi de lichidare (FL) caracterizată prin: număr, data şisuma din momentul lichidării. Dobânda acordată pentru cecuri semodifică de la o zi la alta şi este diferită pentru cecurile la termen faţă decele la vedere.

7.3. Aplicaţia 2

1. Să se paroleze baza de date.

Page 191: Carte Baze de Date

191

2. Pentru a vizualiza cât mai sugestiv relaţiile dintre tabele, se vorcrea formulare cu subformulare.

3. Formularele create vor fi modificate pentru a adăuga titluri,butoane de comandă şi controale de tip Textbox pentru afişarea şicalcularea valorilor TVA şi VALOARE.

4. Se cere crearea unei forme de meniu. Aceasta va apela cu ajutorulbutoanelor de comandă alte forme, câte una pentru fiecare table,pentru vizualizarea datelor.

5. Se doreşte crearea unui panou de comandă (Switchboard) pentrucrearea unui meniu care să conţină toate formele.

Page 192: Carte Baze de Date

192

Obiective:

Protejarea bazei de date.Vizualizarea datelor cu posibilitatea efectuării unor operaţiielementare asupra acestora.Afişarea unor valori calculate după anumite formule.Crearea unei interfeţe vizuale cu utilizatorul.

Rezolvare

1. Pentru a proteja baza de date cu o parolă, aceasta trebuie deschisă înmod Exclusive. Pentru aceasta, vom închide baza de date, alegem opţiuneaOpen, după selectarea bazei de date se apasă săgeata din dreptul butonuluiOpen, pentru a alege opţiunea Open Exclusive.

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

Page 193: Carte Baze de Date

193

2. Pentru a crea un formular pentru fiecare tabel în parte, seselectează tabelul, apoi din meniul Insert se alege opţiunea Autoform. De exemplu, pentru tabela Facturi, fiind tabela părinte tabeleiLiniifact, automat se va crea un formular cu un subformular.

3. Pentru a adăuga un titlu în antet şi butoane de comandă acesteiforme, vom utiliza butonul View pentru a trece în Design View:

Pentru a adăuga un antet/subsol, din meniul Insert vom alege opţiuneaForm Header/Footer. Pentru a adăuga controale pe formă este necesarăafişarea barei de unelte Toolbox, prin apăsarea butonului Toolbox de pe barade unelte.

Page 194: Carte Baze de Date

194

Pentru a adăuga un titlu în partea de antet (Header), se utilizează

controlul Label de pe bara de unelte, , se tastează textul dorit, apoi seformatează folosind butoanele de pe bara de unelte. Pentru a adăuga un control de tip buton de comandă, trebuie ca butonul

Control Wizards să fie selectat. Apoi, se alege butonul Command

Button , dând un click în zona de subsol. Aceasta va porniasistentul care permite construirea butonului. Acţiunile pe care le putem ataşabutonului de comandă sunt grupate în mai multe categorii. De exemplu, pentrua închide o formă, se selectează categoria Form Operations, selectând apoiacţiunea Close Form. La apăsarea butonului Next asistentul vă ghidează pentrua alege fie o imagine grafică asociată butonului, fie un text. Ultimul pas este datde denumirea butonului. După convenţiile cunoscute, orice buton de comandăare un antet de 3 litere, cmd, deci numele acestuia va fi cmdIesire. Analog seconstruiesc restul butoanelor dorite. Forma se va salva cu numeleFacturi-Liniifact. Analog se construiesc restul formelor.

Vom construi o formă care să conţină datele din tabelele Produse şiLiniifact. Pentru aceasta, vom selecta opţiunea Create Form in Design View.Vom deschide fereastra Properties pentru a selecta tabelele de unde vor fi

Page 195: Carte Baze de Date

195

preluate datele. Pentru aceasta, fiind poziţionaţi pe formă, apelăm meniulcontextual (click-dreapta) şi alege Properties:

Dacă se alege obiectul Form, prima opţiune pe pagina All este RecordSource. Dacă dorim să extragem datele dintr-o singură tabelă, alegem unadintre cele afişate atunci când este selectat combo-box-ul. Dacă se doreşteextragerea datelor din mai multe tabele, se apasă butonul cu trei puncte. Dinfereastra Show Table vom alege cele două tabele, Liniifact şi Produse.

Vom alege din cele două tabele câmpurile nr_f, den_p, um, pret_u şicant. La închiderea ferestrei se salvează interogarea. Pentru a putea utiliza

câmpurile, dacă acestea nu apar implicit, se apasă butonul . Prindrag-and-drop, aceste cîmpuri vor fi aşezate pe formă.

Page 196: Carte Baze de Date

196

Pentru a calcula un câmp, acesta trebuie creat cu ajutorul controluluiText-box de pe bara de unelte Toolbox. Selectând controlul şi dând un click peformă, vom observa o etichetă cu numele Text urmat de un număr, şi untext-box în care apare completat Unbound. În locul textului se completează:TVA, iar în locul lui Unbound se tastează =0,19*[cant]*[pret_u]. Pentru aformata această casetă de text, din fereastra Properties, opţiunea Format, sealege Currency.

Analog se calculează câmpul Valoare.

4. Pentru a crea o formă de meniu, se crează o formă cu ajutorulopţiunii Create a Form in Design View, apoi se creează butoanele decomandă (cu ajutorul asistentului Control Wizards), selectîndu-se de lacategoria Form Operation, acţiuneaOpen a form, urmând a selecta numeleformei care se doreşte a fi deschisă atunci când se execută click pe buton.

6. Pentru a construi un panou de comandă (Switchboard):

Dacă apare acest mesaj de eroare, se alege opţiunea Yes:

Page 197: Carte Baze de Date

197

Din fereastra Switchboad Manager se alege opţiunea Edit, pentru aedita panoul de comandă principal (Main).

Pentru a crea o nouă opţiune (un nou buton pe panoul de comandă) sealege butonul New:

Analog se crează pentru fiecare formă o nouă opţiune. Pentru a crea unbuton care permite părăsirea aplicaţiei:

Putem alege oricare acţiune dintre următoarele:

Page 198: Carte Baze de Date

198

Forma poate fi regăsită oricând în cadrul formularelor:

7.3.1. Aplicaţie propusă: Să se creeze o interfaţă grafică cu utilizatorul cu ajutorul opţiuniiSwitchboard, fiind create formulare cu subformulare, îmbogăţite cu butoane decomandă şi câmpuri calculate, pentru baza de date de la Aplicaţia 7.2.1. şi7.2.2.

7.4. Aplicaţia 3

1. Să se creeze o interogare care să permită afişarea informaţiilor depe toate facturile (nr_f, data_f, den_p, cant şi preţ unitar) pentrudata curentă.

Page 199: Carte Baze de Date

199

2. Să se creeze o interogare pentru tabela Produse, afişându-sepentru fiecare înregistrare TVA-ul şi Valoarea (cant*pret).

3. Să se creeze o interogare care să permită citirea interactivă înmomentul execuţiei a unui număr de factură şi afişareainformaţiilor legate de aceasta.

4. Să se creeze o interogare care să permită afişarea tuturor facturiloreliberate între 2 date calendaristice (operatorii Between cu And).

5. Să se creeze prin intermediul unei interogări un nou câmp cunumele Observaţii care va conţine textul “Produs eficient” dacăvaloarea este mai mare decât o anumită valoare sau “Produsineficient” daca valoarea este mai mică decât acea valoare.

6. Să se afişeze toate facturile eliberate luna aceasta.7. Operatorul Like:

a. Să se afişeze toate produsele care încep cu litera p.b. Să se afişeze doar produsele care sunt din 5 litere si încep

cu litera p.8. Să se afişeze toate produsele care au preţurile 3 şi 5 lei.9. Să se afişeze toate produsele care nu au completat câmpul

denprodus.10. Să se determine pentru fiecare factură valoarea totală.11. Să se creeze un nou tabel pe baza tabelelor Facturi, Produse şi

LiniiFact, rezultatul unei interogări, care să conţină toate dateledin toate tabele, suprimând apariţia dublată a câmpurilor delegătură, tabelul fiind ordonat alfabetic după denumireaproduselor.

12. Să se numere câte produse au preţul mai mic decât 100 lei. Să sesalveze interogarea cu numele Minim.

13. Să se calculeze valoarea totală a facturii cu numărul citit de latastatură. Să se salveze interogarea cu numele ValoareTot.

14. Să se calculeze valoarea medie a valorii tuturor facturilor. Să sesalveze interogarea cu numele Medie.

Obiective:

Crearea interogărilor de selecţie.Funcţii pentru date calendaristice.Crearea unor câmpuri calculate.Interogări cu parametru.Operatorii Between, Like, In, Is Null.Funcţia IIF.

Page 200: Carte Baze de Date

200

Interogări de tip Totals.Interogări de tip Make Table.

Rezolvare:

1. Pentru a crea o interogare, se alege obiectul Query, selectând apoiopţiunea Create Query In Design View. În fereastra Show table vom selectape rând tabelele Facturi, Liniifact şi Produse, apăsând apoi butonul Add, apoise închide fereastra. Pentru a alege câmpurile dorite, acestea se selectează prindublu-click. Pentru a selecta condiţia ne poziţionăm sub coloana data_f, pelinia Criteria, unde tastăm =Date(). Se salvează interogarea apăsând pebutonul Save. Pentru a vizualiza rezultatul interogării, de pe butonul View sealege Datasheet View.

Observaţie: Dacă înterogarea nu returnează nici un rezultatul,înseamnă că nici o înregistrare nu a verificat condiţia ca data facturii să fie datacurentă.

2. Pentru a crea a doua interogare, se alege tabela Produse din fereastraShow Tables, apoi se calculează câmpurile TVA şi valoare, pe rând, pe liniaField, prima coloană liberă: TVA: [pret_u]*[cant]*0,19, respectiv Valoare:[pret_u]*[cant]*1,19. Se salvează şi vizualizeză rezultatul interogării. Pentru aformata o anumită coloană din interogare (TVA şi Valoare), în Design View seselectează coloana, se apelează meniul contextual opţiunea Properties, iar laopţiunea Format se alege Currency. Analog se procedează şi cu coloanaValoare.

Page 201: Carte Baze de Date

201

Se salvează interogarea şi se vizualizează rezultatele.

3. Se selectează tabelele Facturi, Produse şi Liniifact, câmpurile: nr_f,data_f, den_p, pret_u şi cant. Pentru a crea o interogare cu parametru, care săpermită citirea interactivă a numărului facturii de pe tastatură, pe coloana nr_f,linia Criteria se tastează [Introduceti numarul facturii].

Page 202: Carte Baze de Date

202

4. Se selectează tabela Facturi, Liniifact şi Produse, câmpurile: nr_f,data_f, den_p, pret_u şi cant:

5. Se deschide interogarea de la punctul 2, în Design View, se salveazăcu alt nume (Save as). Se apelează meniul contextual asociat unui nou câmp, sealege opţiunea Build Event:

Se selectează funcţia IIF, modificând-o astfel: Observatii:IIf([valoare]>50;"Produs eficient";"Produs ineficient").

6. Vom folosi 2 funcţii care pot fi aplicate unor date calendaristice:Datepart (o parte dintr-o dată calendaristică) şi funcţia Month (extrage lunadintr-o dată calendaristică).

Page 203: Carte Baze de Date

203

7. a). Se alege tabela Produse, câmpurile: den_p, pret_u, stoc, um şicod_m. Pe coloana den_p, linia Criteria se tasteauă condiţia: LIKE "p*". b) Se deschide interogarea de la punctul a), se salvează cu alt nume,se trece în modul de vizualizare Design View şi se modifică condiţia: LIKE"p????".

8. Se alege tabela Produse, coloana pret_u, utilizându-se operatorulIN.

9. Tabela aleasă va fi Produse, câmpurile: den_p, cant, cod_m. Pecoloana den_p, linia Criteria se tastează IS NULL.

10. Deschidem interogarea de la punctul 2, unde avem calculatăvaloarea. Salvăm interogarea cu un alt nume, trecem în Design View şi ştergemsau modificăm restul câmpurilor, lăsând doar următoarele: nr_f şi valoare.

Page 204: Carte Baze de Date

204

Se selectează butonul Totals de pe bara de unelte, iar sub valoare, pelinia Total, se alege funcţia SUM.

11. Pentru a crea o nouă tabelă cu toate înregistrările din tabeleleFacturi, Produse şi Liniifact, se adaugă toate câmpurile din aceste tabele, fărăa duplica respectivele câmpuri, iar din meniul Query se alege opţiunea MakeTable Query, se dă un nume tabelei noi create, apoi se salvează interogarea, şiapasă butonul Run pentru a executa acţiunea:

Mesajul următor este doar unul de avertizare, şi anume datele salvate întabele vor fi adăugate în tabelul nou creat. Deci vom apăsa butonul Yes.

Page 205: Carte Baze de Date

205

12. Din fereastra Show Table se alege tabela Produse, utilizându-sefuncţia COUNT:

13. Pentru a calcula valoarea totală pe fiecare factură în parte, segrupează datele după numărul facturii (interogări de tip Totals) şi se alegefuncţia SUM:

14. Pentru a calcula media se aplică funcţia AVG:

Page 206: Carte Baze de Date

206

7.4.1. Aplicaţie propusă

Să se încerce toate tipurile de interogări din exemplul anterior peproblemele propuse 7.2.1 şi 7.2.2.

7.5. Aplicaţia 4

1. Să se creeze un raport pentru tabelul Furnizori, datele fiindgrupate după localitate.

2. Să se creeze un raport pentru afişarea datelor de pe fiecare facturăîn parte, calculându-se valoarea facturii şi valoarea totală a tuturorfacturilor.

3. Să se creeze rapoarte pentru fiecare tabel şi interogare createanterior.

Obiective:

Crearea rapoartelor cu ajutorul Wizard-ului.Crearea rapoartelor cu datele provenind din mai multe tabele.Adăugarea unor câmpuri calculate.

Rezolvare: 1. Pentru a crea un raport cu ajutorul asistentului, se alege opţiuneaCreate Report by Using Wizard. La primul pas se alege tabela sauinterogarea pe baza căreia se va crea raportul (Tables/Forms). Din casetaAvailable Fields se selectează câmpurile dorite, apoi se apasă butonul Next.

Page 207: Carte Baze de Date

207

La pasul 2 se selectează criteriul de grupare, în cazul de faţă vom grupafurnizorii după localitate. Dacă se apasă butonul Grouping Options se potalege mai multe variante de grupare: după prima iniţială, a doua, etc...

La pasul următor se selectează ordinea în care vor fi afişateînregistrările în raport:

Page 208: Carte Baze de Date

208

În continuare se selectează orientarea paginii (verticală, orizontală),precum şi modul de afişare al informaţiilor pe pagină:

La pasul următor se alege un stil din lista afişată. Ultimul pas permitemodificarea titlului raportului (nu este vorba de numele cu care va fi salvatraportul, ci doar textul care va apare în antentul raportului), apoi putem alegeîntre a vizualiza raportul şi a modifica raportul. Pentru a încheia crearearaportului se alege opţiunea Finish.

Raportul în modul Design va apare ca în figura următoare:

Page 209: Carte Baze de Date

209

Dacă datele care dorim să apară provin din mai multe tabele, sau avemnevoie de unele câmpuri calculate, putem crea o interogare în care să selectămtabelele, calculând câmpurile dorite, apoi creăm raportul pe baza interogării. Dacă se doreşte adăugarea unui câmp care va fi calculat, se alege de pebara de unelte Toolbox controlul TextBox. În caseta în care apare Unboand, seîncepe cu simbolul =, apoi se tastează funcţia sau formula dorită. Numelecâmpurile vor fi trecute între paranteze drepte. De exemplu, un câmp valoare arputea fi calculat astfel =[cant]*[pret_u]*0,19.

2. Pentru a crea raportul, vom alege ca sursă a datelor interogarea cunumele Valoare. Dacă în această interogare avem câmpuri de tip Numeric, lapasul 3 se selectează butonul Summary Option, bifând check-box-urile de subfuncţia SUM pentru câmpurile TVA şi Valoare.

Pentru a vizualiza raportul, de pe butonul View se alege opţiunea PrintPreview.

Page 210: Carte Baze de Date

210

7.5.1. Aplicaţie propusă

Să se creeze rapoarte cu ajutorul Wizard-ului şi cu ajutorul opţiuniiCreate Report in Design View pentru problemele propuse 7.2.1 şi 7.2.2.

7.6. Aplicaţia 5

1. Să se creeze următoarea formă de meniu.

Obiective:

Crearea butoanelor de comandă fără ajutorul asistentului.Utilizarea ferestrei Properties pentru a customiza butonul.Prezentarea mediului de programare VBA.Utilizarea comenzii DoCmd cu metodele OpenTable, RunSQL şi Quit.Instrucţiuni VBA – citirea de la tastatură a datelor prin InputBox.Instrucţiuni SQL – inserarea unei noi înregistrări, modificarea valoriiunui câmp, selecţia datelor.

Rezolvare:

În acest caz se va folosi facilitatea Create form in Design View. De pebara de unelte Toolbox se verifică dacă butonul Control Wizard esteselectat. Acesta trebuie să fie deselectat pentru a permite crearea manuală acontroalelor, fără ajutorul asistentului. În continuare se alege butonul de

Page 211: Carte Baze de Date

211

comandă Command Button , acesta fiind depozitat pe formă.Apelând meniul contextual asociat butonului de comandă creat pe formă, seselectează opţiunea Properties şi se modifică proprietăţile Name: cmdDesPr şiCaption: Produse – Design. Analog se procedează pentru restul butoanelor. Pentru a introduce instrucţiuni ataşate butoanelor trebuie să apelămeditorul Visual Basic. Pentru aceasta, se apelează meniul contextual al fiecăruibuton în parte, se alege Build event, Code builder, OK. Mediul de programare Visual Basic Application arată ca în figuraurmătoare:

În zona de declarare a variabilelor se tastează:

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

Page 212: Carte Baze de Date

212

DoCmd.OpenTable "Produse", acViewDesignEnd Sub

Toate liniile care încep cu caracterul apostrof sunt comentarii, ele vor fiignorate de compilatorul Visual Basic.

Butonul 2Private Sub cmdDescPr2_Click() ' se deschide tabela Produse pt. vizualizare in Datasheet View DoCmd.OpenTable "Produse"End Sub

Butonul 3Private Sub cmdInsPr_Click() 'adaugarea unei noi inregistrari DoCmd.RunSQL "insert into produse values (cod_produs, den_produs,um_produs, stoc_produs, pret_produs, cod_mag)"End Sub

Butonul 4Private Sub cmdModDen_Click() 'modificarea denumirii unui produs la care este cunoscut codul v_cod = InputBox("Introduceti codul produsului la care doriti sa ii modificatidenumirea:") DoCmd.RunSQL "update produse set den_p=denumire where cod_p=" &v_codEnd Sub

Butonul 5 Private Sub cmdCrTNou_Click() 'selectarea produselor cu stoc 0 si crearea unei tabele cu aceste produse DoCmd.RunSQL "Select cod_p, den_p, um, stoc, pret_u, cod_m intoStocNul from produse where stoc=0" DoCmd.OpenTable "StocNul"End Sub

Butonul 6Private Sub cmdViz_Click() 'vizualizarea produselor cu codul >= o valoare introdusa de la tastatura v_cod = InputBox("Introduceti un cod pentru a fi afisate produsele cu codulmai mare decat aceasta valoare")

Page 213: Carte Baze de Date

213

DoCmd.RunSQL "Select cod_p,den_p,um,stoc, pret_u, cod_m into Temp1from produse where cod_p>=" & v_cod DoCmd.OpenTable "Temp1"End Sub

Butonul 7Private Sub cmdValoare_Click() DoCmd.RunSQL "select cod_p, den_p, um, categorie, pret, cant, cant*pret asvaloare into Valoare from produse" DoCmd.OpenTable "Valoare"End Sub

Page 214: Carte Baze de Date

214

Butonul 8Private Sub cmdIesire_Click()DoCmd.QuitEnd Sub

7.6.1 Aplicaţie propusăSă se creeze un formular cu opţiuni corespunzătoare tabelelor

existente create pentru problemele propuse 7.2.1 şi 7.2.2.

Page 215: Carte Baze de Date

215

GLOSAR DE TERMENI

Dată o informaţie codificată şi stocată pe un suport dememorare. Din punctul de vedere al prelucrării decalculator, în cadrul aplicaţiilor, datele se definesc cuajutorul unui nume (identificator), a atributelor pe carele are şi de o valoare.

Organizareadatelor

reprezintă procesul de identificare, definire, evaluare,structurare şi memorare a informaţiilor, în cadrul unuisistem informaţional. Prin organizarea datelor serealizează gruparea datelor în colecţii de date omogene,se stabilesc care sunt relaţiilor dintre date, dintreelementele colecţiilor şi dintre colecţii, precum şi modulde stocare a datelor pe suportul fizic de memorare.

Fişierul este o structură care grupează date dintr-un anumitdomeniu care au anumite caracteristici comune. Dinpunct de vedere fizic fişierul este o colecţie finită deînregistrări fizice, iar din punctul de vedere alsemnificaţiei, o colecţie de înregistrări logice, numite şiarticole. Din punctual de vedere al sistemului de operarefişierul are un nume şi eventual o extensie de fişier.

Redundanţadatelor

reprezintă o proprietate a unei colecţii de date care sereferă la faptul că unele componente ale colecţiei dedate sunt memorate de mai multe ori pe suportul dememorare. Creşterea redundanţei are ca efect apariţia deerori frecvente datorate neconcordanţei informaţiilormemorate în fişiere aparţinând unor aplicaţii diferite,rezultând costuri de actualizare mărite corespunzător.

Baza de date este un ansamblu structurat de date legate structuralîntre ele, un depozit de date unic definit o singură datăşi utilizat simultan de mai mulţi utilizatori. Baza de dateeste o resursă comună şi partajată. Baza de date conţinenu numai date ci şi descrierea acestora.

Modelul dedate

este o colecţie integrată de concepte, necesare descrieriidatelor, a relaţiilor dintre date şi a constrângerilorasupra datelor dintr-o organizaţie, o reprezentareabstractă a obiectelor şi a evenimentelor lumii reale şi aasocierilor dintre acestea, cu ajutorul căruia sereprezintă o organizaţie.

Page 216: Carte Baze de Date

216

ModelulEntitate –Relaţie

reprezintă un model de date conceptual de nivel înalt,neformalizat, care descrie structura bazei de date,precum şi tranzacţiile de regăsire, respectiv dereactualizare asociate. Acest model, permite oreprezentare a unui sistem real, grupând elementelesistemului real în entităţi şi asocieri (legături) întreentităţi.

Cheie candidat este atributul sau mulţimea de atribute ale unei entităţicare identifică în mod unic apariţiile individuale aleunui tip de entitate. Un tip de entitate poate avea maimulte chei candidat.

Cheie primară din mulţimea de chei candidat se alege un singură careva fi numită cheie primară.

Chei alternative se numesc celelalte chei candidat, rămase nealese.Cheie compusă este o cheie candidat formată din mai multe atribute.Relaţie(relationship)

este o asociere, o comunicare, o corespondenţă întredouă sau mai entităţi. Relaţia exprimă raportul existentîntre respectivele entităţi şi există doar dacă entităţileexistă.

Sistemul deGestiune alBazei de Date(SGBD)

reprezintă un pachet de programe specializat pentrudefinirea, crearea, întreţinerea şi accesul controlat labaza de date.

Administratorul de date (DataAdministrator)

gestionează resursele de date, fiind responsabil deproiectarea conceptuală şi logică a bazei de date, deplanificarea bazei de date, de realizarea şi întreţinereastandardelor, a politicilor şi a procedurilor bazei dedate.

Administratorul bazei de date(DatabaseAdministrator)

este persoana sau grupul de persoane responsabil deproiectarea, implementarea şi realizarea fizică a bazeide date, de securitatea şi controlul integrităţii, deîntreţinerea întregului sistem.

Proiectanţiibazei de date

sunt persoanele implicate în proiectarea logică şi ceafizică a bazei de date. Proiectarea conceptuală şi logicăpresupune identificarea entităţilor, a relaţiilor dintreentităţi, a constrângerilor asupra datelor ce vor fi stocateîn baza de date.

Page 217: Carte Baze de Date

217

Limbajulpentrudefinireadatelor (LDD –DataDescriptionLanguage)

este un limbaj specific pentru fiecare SGBD fiindutilizat pentru a specifica schema bazei de date. Este unlimbaj descriptiv care permite administratorului bazeide date, respectiv utilizatorului final sa descrie şi sădefinească entităţile din baza de date precum şi relaţiileexistente între entităţi, adică să definească o schemă sausă o modifice.

Limbajulpentrumanipulareadatelor (LMD –DataManipulationLanguage)

este un limbaj care asigură un set de procedee ce permitoperaţiile de bază pentru manipularea datelor din bazade date. Operaţiile executate în cadrul bazei de datepresupun existenţa unui limbaj specializat în carecomenzile se exprimă prin fraze ce descriu acţiuniasupra bazei de date.

Limbajulpentrucontroluldatelor (LCD –Data ControlLanguage)

este un limbaj specific care include comenzi pentruasigurarea confidenţialităţii şi integrităţii datelor, pentrusalvarea informaţiei cu scopul menţinerii integrităţiibazei de date şi chiar pentru rezolvarea problemelor deacces concurenţial la date.

Tabelele conţin datele propriu-zise corespunzătoare entităţilordin baza de date, organizate sub forma unei matrice încare coloane reprezintă atribute (câmpuri), iar liniileapariţiile, realizările entităţii (înregistrări).

Înregistrarea este o linie dintr-un tabel, în care fiecare câmp conţine ovaloare concretă dintr-un domeniu de valori şi conţineinformaţii care identifică o anumită realizare concretă aentităţii; persoană, loc sau obiect

Câmpul este o informaţie individuală din componenţa uneiînregistrări, iar fiecare coloană din tabelul Accessreprezintă un câmp diferit.

Interogările sunt obiecte virtuale de tip tabelă, adică vizualizări, carenu au corespondent fizic, fiind definite cu ajutorultabelelor definite deja în baza de date.

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

Page 218: Carte Baze de Date

218

Rapoartele sunt obiecte folosite pentru a sintetiza datele stocateîntr-o tabela reală sau virtuală şi a oferi un rezultattipărit al informaţiilor din baza de date – un raportACCES, de la cea mai simplă listă a unui tabel până larapoartele cele mai complexe ce conţin regrupări deînregistrări şi calcule.

Paginile deprezentare

reprezintă obiecte specifice ACCESS care permitafişarea într-un format accesibil care permitetransmiterea rapidă a datelor prin Internet sau Intranet.

Macro-urile reprezintă o modalitate optimă de acces la date, carepermit automatizarea mai multor sarcini folosind unlimbaj specific. Pentru a rezolva o sarcină maicomplexă se poate construi un macro (format dintr-omulţime de acţiuni) sau o procedură (formată dintr-osuccesiune de instrucţiuni în Visual Basic).

Modulele conţin o parte a codului VBA al aplicaţiei, şi anumedeclaraţiile de variabile şi constante, funcţiile şiprocedurile globale ale întregii aplicaţii. VBAreprezintă un mediu de programare orientatobiect.

Evenimentul reprezintă acţiunea utilizatorului sau a sistemului asupraunui obiect ceea ce declanşează execuţia coduluiprogram corespunzător.

Metoda constă în codul program predefinit ce se raportează laun tip de obiect şi care se execută în momentul apariţieiunui eveniment.

Procedura este alcătuită dintr-un set de instrucţiuni (un modulprogram) ce nu returnează nici o valoare ci execută oanumită acţiune.

Funcţia constă dintr-un set de instrucţiuni (un modul program)care în urma execuţiei returnează o valoare de unanumit tip.

Visual BasicA p p l i c a t i o n

este un limbaj de programare orientat obiect, dezvoltatde Microsoft folosind limbajul Visual BASIC adaptat la

Page 219: Carte Baze de Date

219

(VBA) Access cerinţele specifice ale sistemelor de gestiune de baze dedate.

IDE (IntegratedD e v e l o pm e n tEnvironment)

este mediul în care se poate crea, modifica şi testa codulVBA.

Limbajul SQL( S t r u c t u r e dQ u e r yLanguage)

este un limbaj de interogări şi gestionare a bazelor dedate relaţionale.

InstrucţiuneaSELECT

este cea mai folosită instrucţiune, corespunzândinterogării Selection din Access. Permite extragereacâmpurilor unui ansamblu de înregistrări ce corespundunor criterii.

Clauza FROM(SELECT)

specifică tabelele sau interogările din care sunt extrasedatele.

C l a u z aW H E R E(SELECT)

permite filtrarea înregistrărilor după anumite criterii.

Clauza GROUPBY (SELECT)

este folosită pentru executarea funcţiilor de agregareSQL, ca şi Sum (sumă), Count (calcul), Avg (medie).

C l a u z aH A V I N G(SELECT)

specifică înregistrările regrupate ce trebuie afişate într-oinstrucţiune SELECT dotată cu o clauză GROUP BY.Odată ce regruparea este efectuată se afişează lista decâmpuri a clauzei GROUP BY şi sunt selectate doarînregistrările care respectă condiţia specificată în clauzaHAVING.

Clauza ORDERBY (SELECT)

determină sortarea (aranjarea în ordine crescătoare saudescrescătoare), înregistrările rezultă dintr-o interogareîn funcţie de câmpul/câmpurile specificat(e).

InstrucţiuneaUPDATE

corespunde unei interogări de actualizare care modificăvalorile câmpurilor într-un tabel specificat, pentruînregistrările ce corespund criteriului dat (facultativ).

InstrucţiuneaDELETE

corespunde unei interogări DELETE ce ştergeînregistrările din tabelul menţionat în clauzaFROM, după criteriile date (facultativ).

InstrucţiuneaINSERT INTO

corespunde unei interogări ADD care adaugăînregistrări într-un tabel.

Page 220: Carte Baze de Date

220

OLE (ObjectLinking andEmbedding) sauO L EAutomation

este tehnologia care permite manipularea obiectelorunei alte aplicaţii, direct din Access sau din VBAAccess.

Bibliotecă deobiecte

un fişier prevăzut de obicei cu o extensie .olb, furnizândinformaţii ce permit maipularea obiectelor puse ladispoziţia utilizatorului de un server. Se poate folosiExploratorul de obiecte pentru a examina conţinutulunei biblioteci de obiecte.

DDE (DynamicData Exchange)

este un protocol de schimb dinamic de date între douăaplicaţii Windows, una denumită Clineţi sau Destinaţie,cealaltă denumită Server sau Sursă. Legătura esteîntreruptă dacă una dintre cele două aplicaţii esteînchisă.

Page 221: Carte Baze de Date

221

BIBLIOGRAFIE

1. T.Connolly, C.Beg, A.Strachan, „Baze de date – proiectare,

implementare, gesionare”, Ed. Teora, Bucureşti, 2001;

2. S.Biriescu, „Baze de date în mediul Acces”, Ed. Mirton,

Timişoara, 2006;

3. D.Dănăiaţă, C.Margea, D.Mogoşanu, A.Popovici, „Baze de date

în mediul Acces”, Editura Mirton, Timişoara, 2001;

4. I.Despi, G.Petrov, R.Reisz, A.Stepan, „Teoria generală a

bazelor de date”, Ed. Mirton, Timişoara, 2000;

5. C.Fehily, „SQL –visual quickstart guide”, Ed. All, Bucureşti,

2004;

6. V. Florescu, P.Năstase, F.Berbec, „Baze de date – fundamente

teoretice şi practice”, Ed. Infomega, Bucureşti, 2002;

7. C.Giulvezan, G.Mircea, „Baze de date. Teorie şi practică.

Acces şi VBA”, Ed.Universităţii de Vest, Timişoara, 2006;

8. M.J.Hernandez, „Proiectarea bazelor de date”, Ed. Tora,

Bucureşti, 2003;

9. L.Hurbean, „Baze de date. Concepte teoretice şi abordare

practică în Microsoft Access”, Ed. Mirton, Timişoara, 2006;

10. F. Ionescu, „Baze de date relaţionale şi aplicaţii”, Ed. Tehnică,

Bucureşti, 2004;

11. M.Lupulescu, M.Muntean, C.Giulvezan, „FoxPro de la iniţiere

la performanţă”, Ed. de Vest, Timişoara, 1994;

12. M.Miloşescu, „Baze de date în Visual FoxPro”, Ed. Teora,

Bucureşti, 2003;

13. G.Mircea, „Access 2002. Tehnici de programare în VBA”, Ed.

Mirton, Timişoara, 2003

14. M.Muntean, „Note de curs – Baze de date”, 2007-2008;

Page 222: Carte Baze de Date

222

15. M.Muntean, „Baze de date în sisteme informatice economice”,

Ed. Mirton, Timişoara, 2002;

16. P.Năstase ş.a. „Baze de date – Microsoft Access 2000”, Ed.

Teora, Bucureşti, 1999;

17. J.V.Petersen, „Baze de date pentru începători”, Ed. All,

Bucureşti, 2002;

18. I.Popescu, „Modelarea bazelor de date”, ed. Tehnică,

Bucureşti, 2001;

19. R.Smith, D.Sussman, „Programare în ACCESS 97 VBA, pentru

începători”, Ed. Tora, Bucureşti, 1999;

20. M.Velicanu, I.Lungu, M.Muntean, „Dezvoltarea aplicaţiilor cu

Visual FoxPro”, Ed. All, Bucureşti, 2001;

21. ***, „Microsoft Visual Basic 6.0 – ghidul programatorului”,

Ed. Teora, Bucureşti, 1999.


Recommended