Capitolul 1: Sistemul de gestiune a bazelor de date Access 2000

3.1 Prezentare generală

Sistemul de Gestiune a Bazelor de Date Microsoft ACCESS 2000 face parte din pachetul de programe Microsoft Office şi este cea de-a cincea versiune a produsului de la lansarea sa iniţială în anul 1992.

Principalele caracteristici ale SGBD-ului ACCESS sunt:

Arhitectura Microsoft ACCESS

O bază de date ACCESS poate fi definită ca fiind o colecţie de obiecte: tabele (table), cereri de interogare (query), formulare (form), rapoarte (report), pagini Web (pages), comenzi macro (macro) şi module (module).

Crearea unei baze de date:

La pornire, SGBD ACCESS afişează ecranul din figura din care rezultă două posibilităţi:

Deschiderea unei baze de date existente: dacă se doreşte modificarea sau consultarea unei baze de date creată anterior, aceasta trebuie mai întâi deschisă. În fereastra principală se selectează Open an existing file şi se activează butonul [OK] care va deschide o nouă fereastră de dialog Open asemănătoare cu fereastra de dialog File New Database, în care se selectează baza de date ce se doreşte a fi modificată.

3.2 Crearea structurii bazei de date

În vederea facilitarii întelegerii modului în care se creeaza o aplicatie în Microsoft ACCESS 2000, vom folosi un studiu de caz practic (prezentat in capitolul anterior).

Crearea tabelelor:
Crearea structurii tabelelor se poate face în trei moduri:

Modul cel mai eficient de creare a tabelelor îl reprezinta utilizarea ferestrei de proiectare, motiv pentru care vor fi prezentate mai întâi pe scurt celelalte doua moduri.

Crearea unui tabel utilizând instrumentul wizard permite adaugarea unor câmpuri standard ce se afla deja în cadrul bibliotecilor de tabele standard. De exemplu, daca se doreste realizarea unui tabel cu clientii (Customers), utilizându-se instrumentul wizard, se pot selecta anumite câmpuri standard pentru aceasta tabela, precum si relatiile pe care acestea le au cu alte câmpuri din alte tabele. Nu recomandam aceasta modalitate deoarece câmpurile din cadrul tabelelor standard au fost create pentru sistemul de lucru anglo-saxon, care, în anumite privinte, nu corespunde sistemului românesc.

Revenind la primul mod de creare a unei tabele, prin realizarea unui dublu clic pe Create table in design view pe ecran va apărea fereastra Table.

În cadrul acestei ferestre se definesc numele câmpului (Field Name), tipul de date (Data Type) şi, opţional, o descriere a câmpului respectiv (Description). În panoul de jos al acestei ferestre se introduc celelalte proprietăţi ale câmpului.

Field name: numele câmpurilor poate fi format din maximum 64 de caractere, poate să conţină spaţiu şi nu trebuie să conţină următoarele caractere: [ , ], ., ‘, ! . De asemenea, nu trebuie să fie cuvânt rezervat al ACCESS.

Data type: tipuri şi subtipuri de date:

Microsoft ACCESS 2000 permite ca numele de câmp să fie format din mai multe cuvinte, de exemplu [Număr factură]. În versiunile mai vechi de ACCESS denumirea acestui câmp ar fi fost scrisă într-un singur cuvânt sub forma Număr_factură.

Format: formatul în care sunt afişate datele:
Proprietatea Format se utilizează pentru stabilirea modului în care numere, date calendaristice, timp şi text vor fi afişate. Ea nu afectează şi modul de introducere a datelor. Numărul de zecimale (Decimal places):
În cadrul acestei proprietăţi se stabileşte numărul de zecimale ce pot fi atribuite câmpului. Există o listă de opţiuni şi se pot selecta valori cuprinse între 0 şi 15 sau Auto pentru determinarea automată a numărului de zecimale.

Input Mask (formatul de introducere). Proprietatea Input Mask (şablon de introducere a datelor) se poate specifica utilizând trei secţiuni:

Caption: aceasta permite specificarea unui al doilea nume în situaţiile în care primul nu este destul de semnificativ. El apare în antetul cererilor de interogare, formularelor şi rapoartelor.

Default Value (Valoarea implicită): este o valoare care este atribuită automat, în momentul când utilizatorul nu introduce nici o valoare în acel câmp.

Validation Rule (regula de validare): regulile de validare testează, conform criteriului furnizat sub forma unei expresii ACCESS, valoarea introdusă într-un câmp. Acestea folosesc:

Dacă nu se specifică nici un operator, ACCESS asumă automat operatorul de egalitate.

Validation Text (textul de validare): reprezintă textul care va apărea pe bara de mesaje în cazul în care valoarea introdusă nu respectă criteriul impus de regula de validare.

Required (cerut): prin această proprietate se stabileşte dacă prin introducerea unei înregistrări în cadrul tabelei este obligatorie şi completarea respectivului câmp.

Indexed (Indexat): dintr-o listă derulantă se poate alege între un index care admite valori duplicat sau unul care cere ca fiecare valoare a câmpului să fie unică. Access defineşte automat cheia primară a tabelei ca fiind indexată şi fără duplicate (No Duplicated).

Prin activarea tab-ului Lookup din panoul de proprietăţi, se pot specifica o serie de proprietăţi care se referă în principal la sursa de introducere a datelor.

După descrierea câmpurilor componente ale unei tabele (conform teoriei modelului relaţional) trebuie să stabilim cheia primară a acesteia. Dacă uităm, Access ne avertizează de acest lucru şi ne sugerează el o cheie primară. Aceasta poate fi formată din unul sau mai multe câmpuri (cheie compusă). Dacă cheia primară este formată dintr-un singur câmp, se selectează acesta şi apoi se activează butonul cheia primară. Dacă cheia primară este formată din mai multe câmpuri se selectează primul, iar celelalte se selectează în combinaţie cu apăsarea tastei CTRL, după care se activează butonul cheie primară .

Relaţii între tabele:

Din punct de vedere al momentului creării acestora, există două tipuri de relaţii între tabelele unei baze de date ACCESS, şi anume:

În cadrul unei baze de date nu este obligatoriu ca între toate tabelele să existe relaţii. Este posibil ca în cadrul unei aplicaţii să utilizăm şi tabele independente şi/sau de lucru (tabele temporare). În cadrul acestora se scriu şi se şterg datele aferente unei anumite operaţii.

Relaţiile care se pot stabili între tabele sunt de trei tipuri:

Revenim în cadrul ferestrei Relationships

pentru a descrie procesul de construire a relatiilor dintre tabele. O relatie între doua tabele se realizeaza prin operatia drag and drop de la cheia primara a tabelei principale la cheia externa a tabelei secundare.

Cu această ocazie, ACCESS va deschide fereastra de dialog Edit Relationship, în care se observă legătura stabilită între cheia primară şi cheia externă.

În cazul în care este selectată proprietatea Enforce Referential Integrity (Impune integritate referenţială) în cadrul unei aplicaţii, aceasta înseamnă că atunci când se introduce o nouă înregistrare în tabela secundară, se verifică dacă valoarea cheii externe se găseşte în tabela primară, în câmpul corespunzător cheii primare. Aceasta înseamnă că este necesară mai întâi încărcarea datelor în tabela principală şi apoi în cea secundară.

Introducerea datelor în tabele:

În cadrul aplicatiilor ACCESS datele pot fi introduse în tabele printr-o multitudine de metode. În fereastra Database selectam tabela Camere, în care dorim sa introducem date si activam butonul . Pe ecran va aparea fereastra

, Datasheet (foaie de date). În cadrul acestei ferestre se pot vizualiza si/sau modifica datele deja introduse sau se pot introduce date noi.

3.3 Formulare (simple, avansate)

Formularele (Forms) reprezinta interfata principala între utilizator si o aplicatie MS Access, fiind obiecte ale bazei de date ce permit introducerea si afisarea datelor într-o maniera cât mai atractiva.

În cadrul unei aplicatii, formularele pot îndeplini mai multe functii:

Un formular este compus din trei parti: antetul, zona de detaliu si subsolul:

Lucrul cu formulare se poate realiza in unul din următoarele moduri de vizualizare:

Design View în acest mod de vizualizare poate fi modificat design-ul formularului
Form view vizualizarea propriu-zisă a formularului
Datasheet view mod de vizualizare sub formă tabelară

Spre exemplu formularul Magazie se prezintă astfel în cele trei moduri de vizualizare:
Design View Form View Datasheet View

Pentru crearea formularelor in Access 2000 se utilizează controale. Un control este un obiect grafic care poate fi pozitionat pe un formular, raport sau pagina de acces la date (Data access page). Un control poate afisa date si/sau efectua actiuni.

Pentru crearea unui formular exista mai multe moduri prin care se poate crea un formular, dar cele mai importante sunt urmatoarele:

Un subformular, este un formular inclus într-un alt formular, pentru a permite afisarea datelor din mai multe tabele sau cereri de interogare, aflate în general în relatii de tipul unu la unu sau unu la mai multi. Astfel, în formularul principal vor fi afisate datele din partea unu a relatiei, iar în subformular cele din partea mai multi. În mod implicit, legatura dintre un formular si un subformular reflecta legatura dintre tabelele pe care se bazeaza. Prin urmare, la un moment dat în formular vor fi afisate o înregistrare aflata de partea unu a relatiei iar în subformular înregistrarile corespondente din tabela aflata de partea mai multi a acesteia. Într-un formular care contine un subformular se pot specifica criterii de filtrare numai asupra câmpurilor din formularul principal.

Facând apel la exemplul nostru, relatia de tip 1- n dintre tabelele Categorii si Camere face posibila crearea unui formular unde se vor afisa Camerele si în care se poate include un subformular pentru afisarea tarifului corespondent fiecarei camere.

Din punct de vedere al formatului de prezentare, un subformular poate fi de doua feluri:

Pentru includerea unui subformular într-un formular principal trebuie ăarcurşi următorii paşi:

Pentru a aduce un subformular într-un formular principal:

Astfel MS Access va crea automat o legătură îbtre cele două formulare.

Legatura automata este posibila în urmatoarele doua situatii:

Atât formularele,rapoartele cât şi controalele posedă o serie de proprietă.

Proprietatile unui obiect se pot modifica respectând urmatoarea succesiune:

Într-un formular se pot plasa câmpuri calculate pe baza unor expresii. Plasarea expresiilor în controalele aflate pe un formular sau subformular se realizeaza prin scrierea acestora în proprietatea Control Source a unui control. Scrierea unei expresii se poate face asistat (Expression Builder) sau prin scriere directa. Daca se utilizeaza scrierea unei expresii în modul neasistat, aceasta trebuie precedata de semnul egal (=expresie). Expresiile pot contine orice functie Access 2000 sau functii definite de utilizator, referiri catre controale aflate pe alte formulare (deschise) etc.

Expresiile plasate în formulare/subformulare pot fi grupate în:

Utilizarea în expresii a controalelor din acelasi formular se realizeaza prin referirea numelui controalelor implicate în expresie.

Pentru exemplificare am plasat o caseta de text (numele controlului-proprietatea Name- Valoare) în care am scris în proprietatea Control Source expresia:=Val([Cantitate intrata])*Val([Pret factura]):

Utilizarea în controale a expresiilor din alte formulare se face prin: Forms![Nume formular]![Nume control]. Pentru a putea fi evaluate astfel de expresii, trebuie ca acele formulare de pe care sunt referite controale sa fie deschise în acel moment.

Utilizarea într-o expresie de pe un formular a unor controale din subformular se realizeaza prin: [Nume subformular].Form![Nume control].

3.4 Interogarea bazei de date

Interogarea bazei de date permite afişarea înregistrărilor din una sau mai multe tabele, înregistrări care verifică anumite condiţii, care sunt grupate în funcţie de anumite criterii sau sunt ordonate crescător sau descrescător.

Avantajele oferite de modul de interogare a bazei de date prin cereri sunt:

Interogările pot fi realizate prin intermediul obiectelor de tip Query. Pentru utilizarea unui asemenea obiect trebuie:

Rezultatul executiei unei asemenea cereri este plasat într-o foaie de raspuns, asemanator foii de date asociate unei tabele.

Crearea unei cereri de interogare (Query) se poate face în mai multe feluri:

De asemenea o interogare poate fi creată şi apelând la limbajul SQL.

Pentru a crea o cerere de interogare în modul Design view:

Pentru formularea unor cereri de interogare bazate pe mai multe tabele, este necesar ca acestea sa fie legate prin intermediul unor câmpuri. Aceste relatii între tabele se pot stabili fie în momentul definirii structurii bazei de date (structura tabelelor), prin comanda [Tools, Relationships] sau în timpul formularii unei cereri de interogare prin aducerea tabelelor necesare în zona de lucru si stabilirea legaturilor necesare. Prima modalitate genereaza relatii permanente între tabele, care permit totodata definirea restrictiilor de integritate referentiala, cea de-a doua genereaza relatii temporare, valabile numai pentru cererea în cauza si care nu permit verificarea restrictiilor de integritate referentiala.

În ambele cazuri relatiile între tabele se stabilesc prin punerea în corespondenta a unui câmp dintr-o tabela sursa (principala) cu un alt câmp din tabela destinatie (secundara). Cele doua câmpuri trebuie sa fie de acelasi tip si dimensiune si pot fi chei primare sau externe.

În ambele cazuri relatiile între tabele se stabilesc prin punerea în corespondenta a unui câmp dintr-o tabela sursa (principala) cu un alt câmp din tabela destinatie (secundara). Cele doua câmpuri trebuie sa fie de acelasi tip si dimensiune si pot fi chei primare sau externe.

O cerere de interogare a bazei de date pe mai multe tabele este expresia operatiei de compunere (join) din algebra relationala. Din punct de vedere al SGBD ACCESS, aceasta operatie este de trei feluri: echicompunere, compunere externa si compunere reflexiva.

Prin operatia de echicompunere se extrag toate înregistrarile din tabela sursa care au înregistrari echivalente în tabela destinatie (pentru care câmpurile de legatura sunt identice). De exemplu daca vrem sa aflam intrarile de materiale pentru fiecare material (cantitativ), este clar ca în cadrul tabelei Categorii se pot gasi mai multe materiale decât în tabela Camere (anumite materiale pot exista în cadrul bazei de date dar nu au fost achizitionate pâna în prezent). Prin urmare va fi utilizata operatia de echicompunere.

Prin operatia de compunere externa se extrag toate înregistrarile din tabela sursa si înregistrarile din tabela destinatie, care au valori egale în câmpurile de legatura. Pentru înregistrarile din tabela destinatie, care nu au corespondente în tabela sursa, se vor afisa câmpuri vide.

Cele doua cereri se rezolva prin compunere externa. Relatia dintre doua tabele, din punct de vedere al operatiei de compunere externa, este privita în ambele sensuri:

Prin aceste operatii s-a creat posibilitatea formularii unor cereri de interogare inverse, asa cum sunt cele doua exemplificate mai înainte. Pentru alegerea tipului de compunere în cadrul unei cereri de interogare:

Interogările de tip "analiză încrucişată" permit obtinerea unui set de rezultate complexe sub forma matriceala, în care numele liniilor (Li) si coloanelor (Cj) reprezinta criterii mixte de grupare, iar valorile din celulele tabelului (Vij) se obtin prin aplicarea unei functii predefinite (Sum, Min, Max, etc.) asupra unui câmp dintr-o tabela.

Crearea unei cereri de interogare de acest tip, se face la fel ca o cerere care comporta calcule, cu deosebirea ca trebuie specificate câmpurile care furnizeaza liniile, coloanele si valorile din tabel.

În acest sens se procedeaza dupa cum urmeaza:

Se pot specifica mai multe câmpuri pentru a furniza numele de linii ale tabelului si numai unul pentru a da numele coloanelor. Obligatoriu, câmpurile care furnizeaza numele liniilor si coloanelor trebuie sa aiba în linia Total criteriile Group by. La o cerere de interogare de acest tip pot participa una sau mai multe tabele.

Tabelele care rezulta în urma executiei acestor cereri, în mod standard, vor avea numele coloanelor plasate de la stânga la dreapta în ordine alfabetica. Exista posibilitatea schimbarii acestei ordini în functie de necesitatile si preferintele utilizatorului.

MS Access permite şi crearea unor interogări de tip acţiune:

Cererile de interogare de tip actiune se folosesc pentru:

Crearea unei cereri de interogare de tip actiune se face în trei etape:

Spre exemplu pentru a transforma o cerere de interogare de tip selectie în una de tip actiune cu functia de creare a unei noi tabele se parcurg etapele:

3.5 Rapoarte

Situatiile finale (rapoartele) constituie, asadar, finalitati ale ciclului de creare-actualizare-exploatare a unei baze de date, continutul lor fiind vizualizat pe ecran, ori listat la imprimanta.

Cu Access 2000 se pot realiza diferite obiecte de tip raport, utilizând optiunea Reports din meniul Insert.

Exista urmatoarele modalitati de lucru:

Situatiile finale pot cuprinde date provenind dintr-o tabela, sau dintr-o interogare (atunci când sunt necesare date din mai multe tabele), caz în care se raspunde mesajului "Choose the table or query where the object's data comes from:" prin selectarea din lista a tabelei sau interogarii care va sta la baza realizarii raportului. Exista si posibilitatea realizarii de rapoarte care nu au o anumita sursa de date, dar care vor îngloba informatii utile subrapoartelor definite pe tabele ori interogari între care nu au fost stabilite relatii.

3.6 Comenzi macro

Un element de maxima importanta în dezvoltarea unei aplicatii Access îl reprezinta automatizarea operatiilor efectuate si elaborarea unei interfete care sa faciliteze exploatarea bazei de date si sa eficientizeze actiunile utilizatorului. Integrarea formularelor, interogarilor si rapoartelor într-un flux continuu, condus de evenimentele declansate de utilizator, precum si executia conditionata a operatiilor trebuie sa permita chiar si neinitiatilor în Access o deprindere rapida a cerintelor aplicatiei.

Comenzile macro din Access 2000 reprezinta o modalitate simpla si eficienta pentru automatizarea anumitor operatii, oferind posibilitatea dezvoltarii unor aplicatii de o complexitate sporita fara a solicita cunostinte de programare în Visual Basic.

Trebuie specificat ca macrocomenzile Access sunt diferite de macro-urile înregistrate din Word sau Excel care se bazeaza pe generarea automata de catre program a codului VBA pentru o serie de comenzi ale utilizatorului.

Practic, o comanda macro reprezinta o actiune sau o secventa de actiuni selectate dintr-o lista prestabilita, ce realizeaza operatiuni diverse precum deschiderea sau închiderea formularelor, tiparirea rapoartelor, lansarea în executie a altor programe, salvarea înregistrarilor sau executarea unei fraze SQL.

Desi atasarea rapida a macrocomenzilor la evenimentele controalelor de pe formulare, cum ar fi butoanele de comanda, poate parea la o prima vedere suficienta realizarii unor programe complexe, trebuie precizat ca exista anumite limite si deficiente ce fac utilizarea macro-urilor inferioara programarii în VBA. Un prim argument ce poate fi mentionat în acest sens este lipsa de libertate a programatorului în a-si crea propriile functii si proceduri si de a utiliza o serie de functii disponibile în Access. În plus, codul VBA ce raspunde evenimentelor este salvat, importat si exportat împreuna cu obiectele (formulare, rapoarte etc.) conducând la o mai usoara întretinere a bazei de date. Si din punct de vedere al securitatii exista unele dezavantaje: modulele pot fi protejate cu parola, pe când comenzile macro nu, iar în cazul conversiei bazei de date în format MDE macro-urile ramân vulnerabile, putând fi modificate

Crearea unei comenzi macro:

Pentru elaborarea unei noi comenzi macro este necesara parcurgerea urmatoarelor etape:

Lansarea în executie a comenzilor macro exista mai multe posibilitati:

3.6 Alte facilităţi în MS Access 2000

Utilizarea bazelor de date create în versiuni diferite ale Microsoft Access:

Exista situatii care impun utilizarea unui fisier creat în Access 2000 în sisteme unde sunt instalate versiuni mai vechi ale Microsoft Office. De asemenea, dupa instalarea Access 2000, utilizatorii vor dori sa foloseasca în continuare aplicatiile anterior create. În acest sens exista posibilitatea conversiei bazei de date în formatul corespunzator. Putem efectua aceasta operatiune prin intermediul comenzii Tools, Database Utilities, Convert Database....

Compactarea si "repararea" bazelor de date:

Stergerea înregistrarilor din tabele ori a unor interogari, rapoarte sau alte obiecte ale bazei de date conduce la fragmentarea acesteia. Drept urmare, spatiul ocupat pe disc de respectivul fisier este mai mai mare decât cel necesar în realitate. Pe de alta parte, evenimente precum penele de curent sau închiderea necorespunzatoare a unei sesiuni de lucru în Access pot determina deteriorarea structurii bazei de date.

Pentru a elimina aceste inconveniente Microsoft Access 2000 pune la dispozitia utilizatorilor facilitatea de compactare si reparare a bazelor de date, Compact and Repair Database. (În versiunea Access'97 cele doua optiuni erau prezentate separat).

Pentru a realiza operatiunea de compactare asupra unei baze de date deja deschise se selecteaza din cadrul meniului Tools optiunea Database Utilities, Compact and Repair Database. În acest caz baza de date compactata va lua locul celei vechi. În cazul unei baze de date distribuite este necesara, în prealabil, închiderea acesteia de catre toti utilizatorii.

Conversia bazelor de date în format MDE presupune compilarea tuturor modulelor, renuntarea la posibilitatea de editare a codului VBA, precum si compactarea bazei de date destinatie. Codul VBA va continua sa functioneze, dar nu va putea fi vizualizat sau editat. Dimensiunea bazei de date va fi considerabil micsorata, ca urmare a îndepartarii codului, iar performantele obtinute vor fi îmbunatatite prin gestionarea optima a memoriei.

Database Splitter: acest program utilitar este disponibil în meniul Tools > Database Utilities... doar în cazul în care ati selectat Additional Wizards Component la instalarea Access 2000. Prin intermediul Database Splitter se ofera posibilitatea separarii tabelelor de celelalte obiecte ale bazei de date (formulare, rapoarte etc.) generându-se practic doua fisiere. Este o facilitate extrem de utila, în special în cazul sistemelor multiuser, permitând fiecarui utilizator gestionarea elementelor de interfata într-un fisier separat.

Fereastra Start-Up:

reprezintă formularul care care este deschis automat la deschiderea bazei de date. De exemplu, un formular care sa ofere butoane pentru accesul la toate functiile aplicatiei (formulare, rapoarte, interogari, tabele), fara ca utilizatorul sa fie nevoit sa cunoasca numele formularelor, rapoartelor etc. Stabilirea acestui formular si a altor parametrii ai bazei de date se realizeaza din meniul Tools-StartUp.

Privitor la securitatea bazei de date, Access 2000 ofera urmatoarele posibilitati: