|
Sistemul de Gestiune a Bazelor de Date Microsoft ACCESS 2000 face parte din pachetul de programe Microsoft Office si este cea de-a cincea versiune a produsului de la lansarea sa initiala in anul 1992.
Principalele caracteristici ale SGBD-ului ACCESS sunt:
Arhitectura Microsoft ACCESS
O baza de date ACCESS poate fi definita ca fiind o colectie de obiecte: tabele (table), cereri de interogare (query), formulare (form), rapoarte (report), pagini Web (pages), comenzi macro (macro) si module (module).
Crearea unei baze de date:
La pornire, SGBD ACCESS afiseaza ecranul din figura din care rezulta doua posibilitati:
Deschiderea unei baze de date existente: daca se doreste modificarea sau consultarea unei baze de date creata anterior, aceasta trebuie mai intai deschisa. In fereastra principala se selecteaza Open an existing file si se activeaza butonul [OK] care va deschide o noua fereastra de dialog Open asemanatoare cu fereastra de dialog File New Database, in care se selecteaza baza de date ce se doreste a fi modificata.
In vederea facilitarii intelegerii modului in care se creeaza o aplicatie in Microsoft ACCESS 2000, vom folosi un studiu de caz practic (prezentat in capitolul anterior).
Crearea
tabelelor:
Crearea structurii tabelelor se poate face in trei moduri:
Modul cel mai eficient de creare a tabelelor il reprezinta utilizarea ferestrei de proiectare, motiv pentru care vor fi prezentate mai intai pe scurt celelalte doua moduri.
Crearea unui tabel utilizand instrumentul wizard permite adaugarea unor campuri standard ce se afla deja in cadrul bibliotecilor de tabele standard. De exemplu, daca se doreste realizarea unui tabel cu clientii (Customers), utilizandu-se instrumentul wizard, se pot selecta anumite campuri standard pentru aceasta tabela, precum si relatiile pe care acestea le au cu alte campuri din alte tabele. Nu recomandam aceasta modalitate deoarece campurile din cadrul tabelelor standard au fost create pentru sistemul de lucru anglo-saxon, care, in anumite privinte, nu corespunde sistemului romanesc.
Revenind la primul mod de creare a unei tabele, prin realizarea unui dublu clic pe Create table in design view pe ecran va aparea fereastra Table.
In cadrul acestei ferestre se definesc numele campului (Field Name), tipul de date (Data Type) si, optional, o descriere a campului respectiv (Description). In panoul de jos al acestei ferestre se introduc celelalte proprietati ale campului.
Field name: numele campurilor poate fi format din maximum 64 de caractere, poate sa contina spatiu si nu trebuie sa contina urmatoarele caractere: [ , ], ., ', ! . De asemenea, nu trebuie sa fie cuvant rezervat al ACCESS.
Data type: tipuri si subtipuri de date:
Microsoft ACCESS 2000 permite ca numele de camp sa fie format din mai multe cuvinte, de exemplu [Numar factura]. In versiunile mai vechi de ACCESS denumirea acestui camp ar fi fost scrisa intr-un singur cuvant sub forma Numar_factura.
Format:
formatul in care sunt afisate datele:
Proprietatea Format se utilizeaza pentru stabilirea modului in care
numere, date calendaristice, timp si text vor fi afisate. Ea nu
afecteaza si modul de introducere a datelor. Numarul de zecimale
(Decimal places):
In cadrul acestei proprietati se stabileste numarul de
zecimale ce pot fi atribuite campului. Exista o lista de optiuni
si se pot selecta valori cuprinse intre 0 si 15 sau Auto pentru
determinarea automata a numarului de zecimale.
Input Mask (formatul de introducere). Proprietatea Input Mask (sablon de introducere a datelor) se poate specifica utilizand trei sectiuni:
Caption: aceasta permite specificarea unui al doilea nume in situatiile in care primul nu este destul de semnificativ. El apare in antetul cererilor de interogare, formularelor si rapoartelor.
Default Value (Valoarea implicita): este o valoare care este atribuita automat, in momentul cand utilizatorul nu introduce nici o valoare in acel camp.
Validation Rule (regula de validare): regulile de validare testeaza, conform criteriului furnizat sub forma unei expresii ACCESS, valoarea introdusa intr-un camp. Acestea folosesc:
Daca nu se specifica nici un operator, ACCESS asuma automat operatorul de egalitate.
Validation Text (textul de validare): reprezinta textul care va aparea pe bara de mesaje in cazul in care valoarea introdusa nu respecta criteriul impus de regula de validare.
Required (cerut): prin aceasta proprietate se stabileste daca prin introducerea unei inregistrari in cadrul tabelei este obligatorie si completarea respectivului camp.
Indexed (Indexat): dintr-o lista derulanta se poate alege intre un index care admite valori duplicat sau unul care cere ca fiecare valoare a campului sa fie unica. Access defineste automat cheia primara a tabelei ca fiind indexata si fara duplicate (No Duplicated).
Prin activarea tab-ului Lookup din panoul de proprietati, se pot specifica o serie de proprietati care se refera in principal la sursa de introducere a datelor.
Dupa descrierea campurilor componente ale unei tabele (conform teoriei modelului relational) trebuie sa stabilim cheia primara a acesteia. Daca uitam, Access ne avertizeaza de acest lucru si ne sugereaza el o cheie primara. Aceasta poate fi formata din unul sau mai multe campuri (cheie compusa). Daca cheia primara este formata dintr-un singur camp, se selecteaza acesta si apoi se activeaza butonul cheia primara. Daca cheia primara este formata din mai multe campuri se selecteaza primul, iar celelalte se selecteaza in combinatie cu apasarea tastei CTRL, dupa care se activeaza butonul cheie primara .
Relatii intre tabele:
Din punct de vedere al momentului crearii acestora, exista doua tipuri de relatii intre tabelele unei baze de date ACCESS, si anume:
In cadrul unei baze de date nu este obligatoriu ca intre toate tabelele sa existe relatii. Este posibil ca in cadrul unei aplicatii sa utilizam si tabele independente si/sau de lucru (tabele temporare). In cadrul acestora se scriu si se sterg datele aferente unei anumite operatii.
Relatiile care se pot stabili intre tabele sunt de trei tipuri:
Revenim in cadrul ferestrei Relationships
Cu aceasta ocazie, ACCESS va deschide fereastra de dialog Edit Relationship, in care se observa legatura stabilita intre cheia primara si cheia externa.
In cazul in care este selectata proprietatea Enforce Referential Integrity (Impune integritate referentiala) in cadrul unei aplicatii, aceasta inseamna ca atunci cand se introduce o noua inregistrare in tabela secundara, se verifica daca valoarea cheii externe se gaseste in tabela primara, in campul corespunzator cheii primare. Aceasta inseamna ca este necesara mai intai incarcarea datelor in tabela principala si apoi in cea secundara.
Introducerea datelor in tabele:
In cadrul aplicatiilor ACCESS datele pot fi introduse in tabele printr-o multitudine de metode. In fereastra Database selectam tabela Camere, in care dorim sa introducem date si activam butonul . Pe ecran va aparea fereastra
Formularele (Forms) reprezinta interfata principala intre utilizator si o aplicatie MS Access, fiind obiecte ale bazei de date ce permit introducerea si afisarea datelor intr-o maniera cat mai atractiva.
In cadrul unei aplicatii, formularele pot indeplini 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 urmatoarele moduri de vizualizare:
Design View
in acest mod de vizualizare poate fi modificat design-ul formularului
Form view
vizualizarea propriu-zisa a formularului
Datasheet view
mod de vizualizare sub forma tabelara
Spre exemplu formularul Magazie se prezinta astfel in cele trei moduri de vizualizare:
Design View
Form View
Datasheet View
Pentru crearea formularelor in Access 2000 se utilizeaza 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 intr-un alt formular, pentru a permite afisarea datelor din mai multe tabele sau cereri de interogare, aflate in general in relatii de tipul unu la unu sau unu la mai multi. Astfel, in formularul principal vor fi afisate datele din partea unu a relatiei, iar in subformular cele din partea mai multi. In mod implicit, legatura dintre un formular si un subformular reflecta legatura dintre tabelele pe care se bazeaza. Prin urmare, la un moment dat in formular vor fi afisate o inregistrare aflata de partea unu a relatiei iar in subformular inregistrarile corespondente din tabela aflata de partea mai multi a acesteia. Intr-un formular care contine un subformular se pot specifica criterii de filtrare numai asupra campurilor din formularul principal.
Facand 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 in 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 intr-un formular principal trebuie aarcursi urmatorii pasi:
Pentru a aduce un subformular intr-un formular principal:
Astfel MS Access va crea automat o legatura ibtre cele doua formulare.
Legatura automata este posibila in urmatoarele doua situatii:
Atat formularele,rapoartele cat si controalele poseda o serie de proprieta.
Proprietatile unui obiect se pot modifica respectand urmatoarea succesiune:
Intr-un formular se pot plasa campuri calculate pe baza unor expresii. Plasarea expresiilor in controalele aflate pe un formular sau subformular se realizeaza prin scrierea acestora in 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 in 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 in formulare/subformulare pot fi grupate in:
Utilizarea in expresii a controalelor din acelasi formular se realizeaza prin referirea numelui controalelor implicate in expresie.
Pentru exemplificare am plasat o caseta de text (numele controlului-proprietatea Name- Valoare) in care am scris in proprietatea Control Source expresia:=Val([Cantitate intrata])*Val([Pret factura]):
Utilizarea in 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 in acel moment.
Utilizarea intr-o expresie de pe un formular a unor controale din subformular se realizeaza prin: [Nume subformular].Form![Nume control].
Interogarea bazei de date permite afisarea inregistrarilor din una sau mai multe tabele, inregistrari care verifica anumite conditii, care sunt grupate in functie de anumite criterii sau sunt ordonate crescator sau descrescator.
Avantajele oferite de modul de interogare a bazei de date prin cereri sunt:
Interogarile pot fi realizate prin intermediul obiectelor de tip Query. Pentru utilizarea unui asemenea obiect trebuie:
Rezultatul executiei unei asemenea cereri este plasat intr-o foaie de raspuns, asemanator foii de date asociate unei tabele.
Crearea unei cereri de interogare (Query) se poate face in mai multe feluri:
De asemenea o interogare poate fi creata si apeland la limbajul SQL.
Pentru a crea o cerere de interogare in modul Design view:
Pentru formularea unor cereri de interogare bazate pe mai multe tabele, este necesar ca acestea sa fie legate prin intermediul unor campuri. Aceste relatii intre tabele se pot stabili fie in momentul definirii structurii bazei de date (structura tabelelor), prin comanda [Tools, Relationships] sau in timpul formularii unei cereri de interogare prin aducerea tabelelor necesare in zona de lucru si stabilirea legaturilor necesare. Prima modalitate genereaza relatii permanente intre tabele, care permit totodata definirea restrictiilor de integritate referentiala, cea de-a doua genereaza relatii temporare, valabile numai pentru cererea in cauza si care nu permit verificarea restrictiilor de integritate referentiala.
In ambele cazuri relatiile intre tabele se stabilesc prin punerea in corespondenta a unui camp dintr-o tabela sursa (principala) cu un alt camp din tabela destinatie (secundara). Cele doua campuri trebuie sa fie de acelasi tip si dimensiune si pot fi chei primare sau externe.
In ambele cazuri relatiile intre tabele se stabilesc prin punerea in corespondenta a unui camp dintr-o tabela sursa (principala) cu un alt camp din tabela destinatie (secundara). Cele doua campuri 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 inregistrarile din tabela sursa care au inregistrari echivalente in tabela destinatie (pentru care campurile de legatura sunt identice). De exemplu daca vrem sa aflam intrarile de materiale pentru fiecare material (cantitativ), este clar ca in cadrul tabelei Categorii se pot gasi mai multe materiale decat in tabela Camere (anumite materiale pot exista in cadrul bazei de date dar nu au fost achizitionate pana in prezent). Prin urmare va fi utilizata operatia de echicompunere.
Prin operatia de compunere externa se extrag toate inregistrarile din tabela sursa si inregistrarile din tabela destinatie, care au valori egale in campurile de legatura. Pentru inregistrarile din tabela destinatie, care nu au corespondente in tabela sursa, se vor afisa campuri vide.
Cele doua cereri se rezolva prin compunere externa. Relatia dintre doua tabele, din punct de vedere al operatiei de compunere externa, este privita in ambele sensuri:
Prin aceste operatii s-a creat posibilitatea formularii unor cereri de interogare inverse, asa cum sunt cele doua exemplificate mai inainte. Pentru alegerea tipului de compunere in cadrul unei cereri de interogare:
Interogarile de tip 'analiza incrucisata' permit obtinerea unui set de rezultate complexe sub forma matriceala, in 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 camp 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 campurile care furnizeaza liniile, coloanele si valorile din tabel.
In acest sens se procedeaza dupa cum urmeaza:
Se pot specifica mai multe campuri pentru a furniza numele de linii ale tabelului si numai unul pentru a da numele coloanelor. Obligatoriu, campurile care furnizeaza numele liniilor si coloanelor trebuie sa aiba in linia Total criteriile Group by. La o cerere de interogare de acest tip pot participa una sau mai multe tabele.
Tabelele care rezulta in urma executiei acestor cereri, in mod standard, vor avea numele coloanelor plasate de la stanga la dreapta in ordine alfabetica. Exista posibilitatea schimbarii acestei ordini in functie de necesitatile si preferintele utilizatorului.
MS Access permite si crearea unor interogari de tip actiune:
Cererile de interogare de tip actiune se folosesc pentru:
Crearea unei cereri de interogare de tip actiune se face in trei etape:
Spre exemplu pentru a transforma o cerere de interogare de tip selectie in una de tip actiune cu functia de creare a unei noi tabele se parcurg etapele:
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, utilizand optiunea Reports din meniul Insert.
Exista urmatoarele modalitati de lucru:
Situatiile finale pot cuprinde date provenind dintr-o tabela, sau dintr-o interogare (atunci cand sunt necesare date din mai multe tabele), caz in 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 ingloba informatii utile subrapoartelor definite pe tabele ori interogari intre care nu au fost stabilite relatii.
Un element de maxima importanta in dezvoltarea unei aplicatii Access il 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 intr-un flux continuu, condus de evenimentele declansate de utilizator, precum si executia conditionata a operatiilor trebuie sa permita chiar si neinitiatilor in 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 in Visual Basic.
Trebuie specificat ca macrocomenzile Access sunt diferite de macro-urile inregistrate 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 inchiderea formularelor, tiparirea rapoartelor, lansarea in executie a altor programe, salvarea inregistrarilor 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 in VBA. Un prim argument ce poate fi mentionat in acest sens este lipsa de libertate a programatorului in a-si crea propriile functii si proceduri si de a utiliza o serie de functii disponibile in Access. In plus, codul VBA ce raspunde evenimentelor este salvat, importat si exportat impreuna cu obiectele (formulare, rapoarte etc.) conducand la o mai usoara intretinere a bazei de date. Si din punct de vedere al securitatii exista unele dezavantaje: modulele pot fi protejate cu parola, pe cand comenzile macro nu, iar in cazul conversiei bazei de date in format MDE macro-urile raman vulnerabile, putand fi modificate
Crearea unei comenzi macro:
Pentru elaborarea unei noi comenzi macro este necesara parcurgerea urmatoarelor etape:
Lansarea in executie a comenzilor macro exista mai multe posibilitati:
Utilizarea bazelor de date create in versiuni diferite ale Microsoft Access:
Exista situatii care impun utilizarea unui fisier creat in Access 2000 in sisteme unde sunt instalate versiuni mai vechi ale Microsoft Office. De asemenea, dupa instalarea Access 2000, utilizatorii vor dori sa foloseasca in continuare aplicatiile anterior create. In acest sens exista posibilitatea conversiei bazei de date in formatul corespunzator. Putem efectua aceasta operatiune prin intermediul comenzii Tools, Database Utilities, Convert Database.
Compactarea si 'repararea' bazelor de date:
Stergerea inregistrarilor 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 decat cel necesar in realitate. Pe de alta parte, evenimente precum penele de curent sau inchiderea necorespunzatoare a unei sesiuni de lucru in 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. (In 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. In acest caz baza de date compactata va lua locul celei vechi. In cazul unei baze de date distribuite este necesara, in prealabil, inchiderea acesteia de catre toti utilizatorii.
Conversia bazelor de date in 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 indepartarii codului, iar performantele obtinute vor fi imbunatatite prin gestionarea optima a memoriei.
Database Splitter: acest program utilitar este disponibil in meniul Tools > Database Utilities doar in cazul in 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.) generandu-se practic doua fisiere. Este o facilitate extrem de utila, in special in cazul sistemelor multiuser, permitand fiecarui utilizator gestionarea elementelor de interfata intr-un fisier separat.
Fereastra Start-Up:
reprezinta 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: