Microsoft Access
Bine ati venit în lumea Microsoft Access, un sistem relational de gestiune al bazelor de date pentru Windows. Microsoft Access vã permite organizarea, cãutarea si prezentarea informatiilor dupã dorinta dumneavoastrã, deoarece: are o interfatã graficã ce permite un acces usor si rapid la date, dispune mecanisme puternice de interogare a bazelor de date, ofera facilitãti pentru a crea formulare si rapoarte sofisticates, iar pentru a vã usura munca vã pune la dispozitie o multime de “vrãjitori”.
Concepte de bazã
O bazã de date (BD) reprezintã o colectie de date ce sunt adunate cu un anumit scop si sunt organizate într-o structurã specificã. O colectie de timbre într-un album, datele angajatilor dintr-un fiset, numerele de telefon dintr-o agendã telefonicã - fiecare dintre aceste exemple reprezintã o bazã de date.
Un sistem de gestiune a bazelor de date (SGBD) are douã functii principale: de pãstrare a informatiilor într-o bazã de date si de furnizare a lor, la cerere; este, dacã vreti, albumul, fisetul sau agenda telefonicã mai-sus mentionate. Un SGBD computerizat este un program ce prelucreazã datele stocate pe calculator.
Un sistem relational de prelucrare a bazelor
de date (SRGBD) este un sistem care lucreazã
cu informatiile dintr-o bazã de date prin intermediul unor relatii bine definite; baza
de date gestionatã de un astfel de sistem se
va numi deci, implicit, baza de date relationala (BDR).
Microsoft Access este un SRGBD; prin intermediul produsului
Microsoft Access, metodele de introducere ,de organizare si de prelucrare a
datelor sunt foarte flexibile si usor de implementat, putându-se stabili
relatii între categorii diferite de informatii.
Pentru exemplificare, vom analiza modul de organizare a unei baze de date relationale teoretice. Sã presupunem ca tineti informatiile necesare companiei dumneavoastrã în mai multe locuri în birou: lista cu adresele clientilor se aflã într-un document pe calculator, lista cu facturile companiei într-un tabel, informatiile despre produse într-un fiset si numerele de telefon ale furnizorilor într-o agendã, lângã telefon.
Împreunã, toate aceste informatii formeazã o bazã de date relationalã. Fiecare grup de informatii deserveste un scop diferit, însã se pot combina informatiile din douã sau mai multe grupuri pentru a rezolva anumite probleme. Elementul cheie, care face sistemul sã functioneze, este felul în care d-voastrã cunoasteti relatiile dintre categorii.
Sã presupunem cã decideti sã utilizati un calculator pentru a vã gestiona datele. În cazul în care nu utilizati un SRGBD, veti putea crea o singura tabelã, încapsulatã în baza de date, ce va contine toate informatiile necesare - numere de telefon, facturi, informatii despre produse, etc. Cu timpul, baza dumneavoastrã de date va contine o multime de informatii redundante, pentru cã, de exemplu, de fiecare datã când introduceti un nou produs, introduceti si numãrul de telefon al furnizorului, însã dacã ati cumpãrat zece produse de la acelasi furnizor, adãugati de zece ori acelasi numãr de telefon, ceea ce va necesita mai mult spatiu de stocare. În cazul în care o informatie trebuie actualizatã, ea va fi modificatã peste tot în tabelã, poate în sute de locuri, ceea ce va necesita o multime de timp petru a efectua actualizarea; cu cât trebuie actualizate mai multe date, cu atât pot apãrea mai multe erori în procesul de modificare. Dacã se doreste modificarea structurii - adãugarea numerelor de fax, sau gruparea produselor pe categorii - veti fi nevoit sã munciti mult si ineficient pentru a reface structura tabelei bazei de date.
Spre deosebire de o bazã de date non-relationalã, o bazã de date Microsoft Access poate avea mai multe tabele ce contin informatii diferite, asemenea locurilor din birou unde se aflã datele necesare companiei, din exemplul mai-sus mentionat. Într-o astfel de bazã de date se pot implementa relatii între tabele, astfel încât fiecare informatie va fi stocatã într-un singur loc. Astfel, se reduce spatiul de înmagazinare a informatiilor prin eliminarea copiilor. Reactualizarea unei informatii este mai rapidã si mai sigurã pentru cã se face doar într-un singur loc. Restructurarea unei tabele dintr-o bazã de date relationale se face mult mai usor, si se pot adãuga noi tabele fãrã a le modifica pe cele existente.
În cele ce urmeazã vom analiza structura unei baze de date Microsoft Access, formatã din urmãtoarele tipuri de obiecte: tabele(table), interogãri (query), formulare (form), rapoarte (report), comenzi macro (macro) si module (module).
Ce putem face cu Microsoft Access?
Fiind un sistem relational de gestiune a bazelor de date, primul lucru pe care îl putem face cu Microsoft Access este bineînteles sã creãm o nouã bazã de date. O bazã de date Microsoft Access este un fisier cu extensia .MDB ce contine mai multe obiecte: tabela - pentru introducerea si stocarea datelor, interogarea - pentru interogarea bazei de date, formularul - destinat introducerii datelor pe ecran, afisãrii si editãrii datelor, raportul - pentru operatii de iesire (datele fiind dirijate de obicei cãtre o imprimantã), comenzile macro - o secventã de actiuni care trebuie repetatã la cererea utilizatorului, module - recipiente pentru subrutine si functii. La deschiderea fisierului toate obiectele care formeazã baza de date sunt afisate într-o fereastrã numitã Database. Pentru a usura munca celui care construieste baza de date, Microsoft Access pune la dispozitia dezvoltatorilor programe ‘vrãjitor’ (Wizard), care creazã tabele, interogãri, formulare, rapoarte în functie de rãspunsurile la anumite întrebãri. Cu toate acestea, efortul initial pentru crearea bazei de date este mai mare decât acela pentru realizarea unei foi de calcul tabelar, dar la extragerea informatiilor din baza de date se va vedea cã acest efort meritã. Baza de date va permite gãsirea rapidã a unei informatii, interogãri asupra unor anumite categorii din date si tipãrirea cu usurintã a datelor dorite.
Lucrând cu o bazã de date, adãugând si stergând date, creând si distrugând obiecte, aceasta începe sã se fragmenteze fiind nevoie de o compactare. Microsoft Access are o functie de compactare a bazei de date, dar pentru a putea compacta o bazã de date trebuie închisã fereastra Database lãsând sistemul Access deschis. Din când în când s-ar putea ca baza de date sã se defecteze, iar pentru repararea ei Microsoft Access pune la dispozitie un utilitar - Repair Database, care în timpul reparãrii bazei de date creazã obiecte temporare, fiind indicatã o compactare dupã terminarea operatiei de reparare.
Microsoft Access oferã si posibilitãti de protectie a bazei de date prin folosirea grupurilor si a utilizatorilor, baza de date putând fi accesatã doar de anumite grupuri (de utilizatori) si/sau de cãtre anumiti utilizatori, în functie de drepturile fiecãrora.
Ca orice SGBD serios, Microsoft Access are inclus un limbaj de programare - Access Basic. Derivat din limbajul folosit în Microsoft Visual Basic, Access Basic face parte din categoria limbajelor structurate, iar cei care au mai folosit alte limbaje pentru baze de date probabil vor gãsi Access Basic-ul foarte familiar. (În versiunea 7.0 de Microsoft Access pentru Windows’95, este înglobat chiar limbajul Visual Basic).
Datoritã faptului cã Microsoft Access are inclus un limbaj de programare putem sã creãm aplicatii. O aplicatie Microsoft Access este alcãtuitã ca si baza de date din mai multe obiecte: tabele, interogãri, formulare, rapoarte si douã obiecte mai importante pentru scrierea de aplicatii: comenzi macro si module. Aceste obiecte sunt stocate în unul sau mai multe fisiere .MDB. Ceea ce face diferitã o bazã de date de o aplicatie este modul în care cel care dezvoltã aplicatia leagã obiectele între ele alcãtuind un sistem coerent, astfel ca utilizatorul sã se concentreze asupra aplicatiei în sine si nu asupra programului folosit pentru construirea ei.
Obiecte si colectii
Dupã cum am mai vãzut, o bazã de date Access
este formatã din obiecte. Aceste obiecte pot fi manipulate cu proceduri
scrise în Access Basic (pentru versiunea 2.0) sau în Visual Basic
(pentru versiune 7.0). Ceea ce încercãm în aceastã
parte a articolului este sã prezentãm cum am putea sã manipulãm
aceste obiecte. Înainte de a intra în detalii, trebuie precizat
urmãtorul lucru: într-adevãr, Microsoft Acces ne permite
sã lucrãm cu obiecte (putem instantia obiectele, le putem sterge,
seta proprietãtile), dar numai cu obiectele definite de Access. În
Microsoft Access, unele obiecte contin alte obiecte. De exemplu, un formular
contine controale. Obiectele au colectii, seturi de obiecte de acelasi tip (colectiile
sunt de asemenea obiecte). De exemplu colectia Forms este formatã din toate formularele deschise în baza
de date; fiecare formular contine o colectie a tuturor controalelor. Când
ne referim din Access Basic, respectiv Visual Basic, la un obiect care apartine
unei colectii, atunci ne referim la el ca fiind un obiect al acelei colectii.
Existã trei modalitãti de a ne referi la un obiect care apartine
unei colectii:
? identificator![numeObiect] - Prin numeObiect
se specificã explicit numele unui obiect ca fiind membru al unei colectii.
Parantezele drepte sunt necesare numai atunci când numele obiectului contine
spatii.
? identificator(“numeObiect”) - Prin numeObiect
se specificã explicit numele unui obiect ca fiind membru al unei colectii
sau se poate folosi o variabilã de tip String care sã continã numele obiectului.
? identificator(index)
- index reprezintã
pozitia obiectului într-o colectie.
Identificatorul poate fi numele unei colectii care include obiectul
numeObiect sau numele unui
obiect al cãrei colectii implicite include obiectul numeObiect. De exemplu, dacã primul formular pe care l-am deschis se
numeste Studenti, atunci
ne putem referi la acesta prin oricare din modalitãtile urmãtoare:
Forms![Studenti]
Forms(“Studenti”)
Form(0)
În primele douã exemple ne referim la formularul Studenti
prin numele acestuia. Acest formular este membru al colectiei de formulare deschise:
Forms. În cel de-al treilea exemplu ne referim la formular prin pozitia
sa din colectie. Deoarece formularul Studenti este primul formular deschis,
este primul element în colectia de Forms. Sintaxa pe care o folosim depinde
de contextul în care ne aflãm. Dacã nu folosim o variabilã
sau o valoare numericã pentru a ne referi la un obiect, atunci este mai
eficient sã folosim prima variantã, cea cu ‘!’, deoarece semnul
exclamãrii indicã explicit cã numeObiect este membru al
unei colectii. Pentru a specifica o proprietate a unui obiect, sintaxa este
urmãtoarea:
obiect.proprietate
Într-o bazã de date mare, specificarea obiectelor din
cod, sub forma prezentatã mai sus, este supãrãtoare si
greu de mentinut. De asemenea poate dorim sã executãm aceleasi
proceduri pentru obiecte diferite. Pentru a evita aceastã scriere, putem
declara din Access/Visual Basic variabile obiect si le putem atribui un tip,
cum ar fi de exemplu un form sau raport. O variabilã obiect este o variabilã
care se referã la un obiect de un anumit tip. Declararea variabilelor
obiect se declarã la fel ca o variabilã normalã. O prezentare
mai detaliatã a variabilelor se va face în articolele urmãtoare.
Deocamdatã, amintim doar, cã o variabilã se poate declara
cu unul dintre urmãtoarele cuvinte cheie: Dim,
ReDim, Static sau Global. Pentru a asocia o variabilã cu un obiect existent se foloseste
cuvântul rezervat Set.
Sintaxa este:
Set numeVariabilã = expresieObiect
Trebuie mentionat cã nu toate obiectele
Access-ului pot fi reprezentate printr-o variabilã
DAO
În acest paragraf am dori sã definim si sã prezentãm, sumar,DAO( Data Access Object ). Pe lângã obiectele definite de Microsoft Access, engine-ul de baze de date Microsoft Jet defineste obiecte care manipuleazã datele de administrare a unei baze de date, cum ar fi tabelele, interogãrile, relatiile si indecsii. Obiectele definite de Jet engine se numesc Data Access Objects (DAO). Aceste obiecte se pot folosi în proceduri Access/Visual Basic sau în alte aplicatii care folosesc Jet engine-ul, cum ar fi de exemplu Microsoft Visual Basic sau Microsoft Visual C++. Ca si obiectele Access-ului, se pot declara variabile pentru a reprezenta câteva dintre aceste obiecte DAO.
Definirea notiunilor de tabelã, interogare, formular, macrou si modul
O tabelã este colectie de date referitoare la un anumit subiect.
Datele în tabele sunt prezentate sub forma de coloane (câmpuri)
si rânduri (articole). Toate datele dintr-o tabelã descriu subiectul
unei tabele. Într-o bazã de date putem avea mai multe tabele, fiecare
continând informatii despre subiecte diferite. De exemplu, putem avea
tabele care sã continã date despre anumiti producãtori,
despre clienti, iar o altã tabelã poate contine date despre intermediari.
Într-o tabelã un câmp reprezintã un anumit tip
de informatie. Poate fi numele unei companii, numele uni persoane, data de nastere
a unei persoane, pretul unui produs, etc. Un articol este o colectie de informatii
despre o persoanã, despre un anumit lucru, sau despre un anumit eveniment.
Fiecare articol dintr-o tabele contine aceleasi câmpuri, si fiecare câmp
contine acelasi tip de informatii pentru fiecare articol.
Scopul pentru care sunt folosite bazele de date constã in faptul cã permit stocarea datelor si extragerea rapidã din baza de date a acelor date ce îndeplinesc anumite conditii. Astfel, Microsoft Acces pune la dispozitia utilizatorilor interogãrile (query), care sunt un set de întrebãri ce se pun asupra tabelelor din baza de date sau mai exact o definitie a datelor care se doresc gãsite: ce câmpuri, din care tabele, corespunzãtor cãror criterii, în ce ordine de sortare. De exemplu, dacã avem o tabelã cu clienti si vrem sã vedem care clienti sunt dintr-o anumitã zonã, acest lucru se poate face foarte usor cu ajutorul interogãrilor. Datele interogate pot fi dintr-o singurã tabelã sau pot fi din mai multe tabele, iar interogarea culege informatiile cerute într-un dynaset (set dinamic de articole). Un dynaset aratã ca o tabelã, dar nu este o tabelã, este doar o vizualizare dinamicã a datelor din una sau din mai multe tabele. Într-un dynaset datele sunt actualizate dinamic. Când se foloseste o interogare pentru a accesa anumite date, automat din tabele se vor culege datele curente. Dacã se schimbã datele într-un dynaset atunci schimbãrile fãcute se vor putea vedea si în tabelele din care a fost construit dynaset-ul. În cazul în care avem mai multi utilizatori, modificãrile fãcute de un utilizator pot fi vãzute si de ceilalti utilizatori. Deoarece datele dintr-un dynaset sunt totdeauna actualizate, se pot folosi cu încredere interogãrile si dynaset-urile, datele accesate fiind cele curente.
Dupã modul de accesare si de vizualizare al datelor, nu sunt diferente prea mari între tabele si dynaset-uri, diferenta majorã constând în faptul cã datele sunt stocate în tabele, iar dynaset-urile filtreazã si sorteazã datele din tabele.
Aranjarea datelor pe linii si coloane este convenabilã în cazul în care se doreste vizualizarea mai multor articole. Dacã se doreste o altã aranjare a datelor, se pot folosi si rapoartele. Dupã cum se va putea vedea în continuare, cu ajutorul Wizard-urilor (vrãjitorilor) doar cu câteva click-uri se pot obtine o varietate de moduri de prezentare a datelor.
Un formular este de cele mai multe ori cea mai convenabilã aranjare pentru introducerea, modificarea si vizualizarea informatiilor dintr-o bazã de date. Se pot afisa doar datele care doresc sã fie vãzute si se poate defini modul în care acestea sã fie dispuse în fereastrã. La deschiderea unui formular, Acces-ul scoate din tabele informatiile dorite si le afiseazã pe ecran dupã design-ul dorit. În formulare se pot folosi controalele cunoscute din Windows ca liste de valori, butoane, butoane radio, texte, controale de editare, linii, dreptunghiuri, imagini, etc. De asemenea se pot folosii culori, grafice, statistici si se pot afisa mesaje care sã indice rezultatul unei actiuni.
Rapoartele sunt cea mai eficientã cale de afisare sau listare la imprimantã a datelor mai des folosite din baza de date. Se mai pot folosii rapoartele si pentru gruparea articolelor pe mai multe niveluri, pentru a calcula totaluri pe grupuri sau pentru întregul raport.
O comandã macro reprezintã o succesiune de actiuni, fiecare actiune fãcând un anumit lucru, ca de exemplu deschiderea unui form, tipãrirea unui raport, executarea unei functii, etc. Aceste actiuni sunt alese dintr-o listã de actiuni disponibile. Comenzile macro se pot folosi în multe locuri, ele se pot atasa unor formulare, unor controale, se pot executa la apãsarea unei combinatii de taste sau pot fi chiar o comanda dintr-un meniu. Comenzile macro se folosesc în mai multe cazuri: de regulã când vrem ca formularele si rapoartele sã lucreze împreunã. De exemplu, dacã avem un formular cu date dintr-o tabelã, în formular se poate adãuga un buton care sã listeze la imprimantã un raport care sã foloseascã datele din formular, de asemenea cu ajutorul comenzilor macro se pot seta anumite valori în controale, se pot seta proprietãti la formulare, rapoarte sau controale, se mai pot folosi si pentru import si export de date în diferite formate.
Functiile si procedurile scrise în Access Basic (Visual Basic) oferã posibilitãti mult mai complexe decât ceea ce pot oferi comenzile macro. Un modul este un obiect Microsoft Access care contine un set de proceduri si functii. O aplicatie poate contine unul sau mai multe module, dar este mai convenabil sã aibã mai multe module, procedurile si functiile fiind grupate în module dupã anumite criterii, ca de exemplu procedurile asociate unui formular sau raport sã fie grupate într-un modul. Începând cu versiunea 2.0, Microsoft a introdus formulare si rapoarte cu module în spate, astfel fiecare formular si raport are asociat un modul propriu, functiile si procedurile din interiorul unui formular, raport putând fi apelate doar din interiorul raportului, formularului nu si din celelalte module. Însã în Access 95 functiile si procedurile din aceste module pot fi folosite si în alte module.