SGBD Access Curs 2005

71
UNIVERSITATEA „TRANSILVANIA” BRAŞOV CENTRUL DE FORMARE CONTINUĂ PENTRU INFORMATICĂ APLICATĂ ŞI DEZVOLTARE TEHNOLOGICĂ B B A A Z Z E E D D E E D D A A T T E E TEORIE ŞI APLICAŢII în Microsoft ® ACCESS 2005 Şef lucr.dr.ing. ALEXANDRU C. FILIP

description

Curs Access 2005

Transcript of SGBD Access Curs 2005

Page 1: SGBD Access Curs 2005

UNIVERSITATEA „TRANSILVANIA” BRAŞOV

CENTRUL DE FORMARE CONTINUĂ PENTRU INFORMATICĂ APLICATĂ ŞI DEZVOLTARE

TEHNOLOGICĂ

BB AA ZZ EE DDEE DD AA TT EE

TEORIE ŞI APLICAŢII în Microsoft ® ACCESS

2005

Şef lucr.dr.ing. ALEXANDRU C. FILIP

Page 2: SGBD Access Curs 2005
Page 3: SGBD Access Curs 2005

3

CUPRINSCUPRINSCUPRINSCUPRINS

PREFAŢĂ .....................................................................................................................................5

NOŢIUNI DE BAZĂ PRIVIND SISTEMELE DE GESTIUNE A BAZELOR DE DATE ..............................................................................................................................................7

1.1. Ce este o bază de date? Concepte generale. ..........................................................................7

1.2. Modelul relaţional de bază de date......................................................................................10

SISTEMUL DE GESTIUNE A BAZELOR DE DATE RELAŢIONALE MICROSOFT

® ACCESS ........................................................................................................15

2.1. Ce este Microsoft® ACCESS? Concepte generale ..............................................................15

2.2. Proiectarea structurii unei baze de date...............................................................................20

2.3. Tabele. Creare structură, afişare înregistrări .......................................................................24

2.4. Tipuri de date. Proprietăţile câmpurilor ..............................................................................29

2.5. Relaţiile dintre tabele. Creare şi configurare.......................................................................34

2.6. Afişarea selectivă şi ordonarea înregistrărilor.....................................................................36

2.7. Biblioteca de funcţii integrate Access .................................................................................38

2.8. Proiectarea şi execuţia interogărilor ....................................................................................40

2.9. Proiectarea şi utilizarea formularelor ..................................................................................49

2.10. Proiectarea şi utilizarea rapoartelor ...................................................................................54

2.11. Proiectarea şi utilizarea panourilor de comandă................................................................57

2.12. Proiectarea şi utilizarea macrocomenzilor ........................................................................60

ELEMENTE DE BAZĂ PRIVIND ÎNTREŢINEREA ŞI ADMINISTRAREA UNEI BAZE DE DATE ...........................................................................................................62

3.1. Aspecte privind securitatea datelor .....................................................................................62

3.2. Aspecte privind integritatea datelor ....................................................................................64

3.3. Aspecte privind importul şi exportul datelor.......................................................................65

Anexa nr.1 – Funcţii predefinite integrate în Access .....................................................................67

Anexa nr.2 – Acţiuni asociate macrocomenzilor ...........................................................................70

BIBLIOGRAFIE ........................................................................................................................71

Page 4: SGBD Access Curs 2005

4

Page 5: SGBD Access Curs 2005

5

PREFAŢĂ În zilele noastre fenomenul informatic este în plină expansiune. Creşterea permanentă a vitezei de calcul, a capacităţii de stocare a datelor, dezvoltarea continuă a componentei software a sistemelor informatice sunt mereu stimulate de necesitatea prelucrării în timp tot mai scurt a unei cantităţi tot mai mari de informaţii. Sistemele de gestiune a informaţiilor numite generic baze de date constituie un puternic instrument pentru rezolvarea acestei probleme, motiv pentru care sunt utilizate în aproape orice domeniu de activitate al unei societăţi dezvoltate. Cercetările întreprinse în domeniul bazelor de date au căutat determinarea unor metode eficiente care să permită descrierea şi gestionarea corectă a unei anumite categorii de informaţii şi punerea la punct a unor medii şi limbaje de programare uşor de asimilat şi de utilizat de către operatorul uman. Din multitudinea de sisteme informatice create până în prezent pentru gestiunea bazelor de date, Microsoft Access este unul dintre cele mai cunoscute, probabil datorită includerii acestuia în pachetul Microsoft Office, atât de popularul sistem informatic, ajuns astăzi la ultimele versiuni, integrate sub sistemul de operare Windows XP. În acest curs s-a încercat o abordare unitară a problemei, incluzând atât aspecte teoretice generale, care unora li se vor părea prea abstracte, dar care sunt foarte necesare pentru înţelegerea conceptului de bază de date, precum şi aspecte practice efective, prin includerea unei colecţii de aplicaţii originale, o parte rezolvate şi explicate, altă parte propuse spre rezolvare. Gradul de pătrundere în „miezul” sistemului Access este suficient pentru a permite cititorului, după parcurgerea cărţii şi execuţia tuturor aplicaţiilor, să poată crea, dezvolta şi gestiona o bază de date de dimensiuni medii într-un mod destul de apropiat de unul „profesional”. Modul de abordare a problemelor s-a încercat a fi unul lejer, accesibil, descrierea diferitelor elemente fiind completată de imagini sugestive şi îndemnuri de rezolvare a aplicaţiilor. Pentru înţelegerea deplină a celor prezentate, se presupune o minimă cunoaştere a lucrului cu dispozitivele periferice (tastatură, mouse, imprimantă) şi a sistemului de operare Windows (gestiunea fişierelor). De asemenea, este utilă şi cunoaşterea altor module ale pachetului Microsoft Office (Word, Excel).

Deşi lucrarea are ca suport tehnic una dintre versiunile cele mai noi ale sistemului (Access 2002- ver.10), majoritatea componentelor descrise există şi în versiunile anterioare (Access 2000, ’97 etc.).

În capitolul 1 sunt prezentate elementele teoretice esenţiale privind crearea şi dezvoltarea unei baze de date moderne. Sunt explicate noţiunile de tabel, câmpuri, înregistrare, relaţii între tabele, structura optimă a tabelelor. În capitolul 2 sunt descrise principalele componente ale sistemului Microsoft Access – sunt descrise obiectele de tip tabel, formular, raport, interogare şi panou de comandă, însoţite şi de exemple. Capitolul 3 prezintă câteva dintre metodele necesare pentru o administrare eficientă şi corectă a unei baze de date. Capitolul 4 cuprinde un număr de 8 aplicaţii, fiecare dintre acestea conţinând exemple rezolvate precum şi exemple propuse spre rezolvare ale căror soluţii sunt oferite prin imagini.

Page 6: SGBD Access Curs 2005

6

Autorul cursului pune la dispoziţia celor interesaţi înregistrările din cele două baze de date pe care sunt exemplificate aplicaţiile, pentru a avea un suport tehnic corespunzător testării acestora.

Voi fi recunoscător celor care vor considera oportun să aducă observaţii şi sugestii pentru îmbunătăţirea celor prezentate.

Succes în descifrarea tainelor bazelor de date!

Braşov, martie 2005 dr.ing.Alexandru C. Filip

([email protected])

Convenţii utilizate în curs Atunci când nu se precizează altfel, sintagmele click, dublu-click sau „depunerea prompterului” şi „selectarea” cu ajutorul mouse-ului presupun apăsarea butonului stânga al mouse-ului. Când este necesară acţionarea butonului din dreapta, acest lucru este precizat. Când se solicită alegerea unei „opţiuni de meniu” este vorba de meniul principal al aplicaţiei, aflat în partea superioară a ferestrei de afişare (File, Edit, …). Când se solicită alegerea unei opţiuni din „meniul contextual” este vorba de meniul afişat prin apăsarea butonului dreapta al mouse-ului. Aspectul acestui meniu se modifică în funcţie de obiectul sau entitatea active în momentul selectării.

În funcţie de valoarea stabilită de către sistemul de operare Windows®, separatorul zecimal poate fi punctul – . – (sistemul american) sau virgula – , – (sistemul românesc). În exemplele considerate în curs s-a considerat ca separator zecimal virgula.

International Copyrights

Microsoft Windows®, Microsoft Office®, Microsoft Access® sunt mărci înregistrate Microsoft Corporation, Redmond, Washington, SUA, 1983-2004. Toate celelalte mărci şi logouri prezente în curs sunt mărci înregistrate ale companiilor respective.

Copyright © 2005 Universitatea “Transilvania” Braşov

Toate drepturile asupra acestei versiuni aparţin Universităţii “Transilvania” Braşov şi autorului. Reproducerea integrală sau parţială a textului sau a ilustraţiilor din acest curs este posibilă numai cu acordul scris al autorului.

Page 7: SGBD Access Curs 2005

7

NOŢIUNI DE BAZĂ PRIVIND SISTEMELE DE GESTIUNE A BAZELOR DE DATE

1.1. Ce este o bază de date? Concepte generale.

În societatea contemporană gestionarea informaţiei este o caracteristică definitorie a existenţei acesteia. Constatăm astăzi că este nevoie ca un volum tot mai mare de informaţii să fie gestionat (memorat, prelucrat, distribuit etc.) într-un timp cât mai scurt şi cu costuri acceptabile. Bazele de date sunt acele instrumente prin care se poate realiza acest lucru. O bază de date1 este o colecţie de informaţii despre anumite obiecte, organizate după o serie de reguli bine stabilite. O bază de date se crează pentru a stoca informaţii la care vor putea avea acces diferiţi utilizatori cu diferite solicitări. Din acest punct de vedere, bazele de date pot fi clasificate în două categorii: baze de date statice (de arhivare) în care informaţiile nu sunt prelucrate în vreun fel şi odată introduse acestea nu se mai modifică, datele noi se adaugă doar la cele existente; baze de date dinamice în care informaţiile sunt prelucrate şi se pot modifica în timp.

Exemple

♦ Evidenţa produselor comercializate de către o societate comercială

♦ Evidenţa producţiei de bunuri într-o unitate de producţie

♦ Evidenţa personalului unei societăţi comerciale

♦ Evidenţa cărţilor într-o bibliotecă

♦ Evidenţa candidaţilor la concursul de admitere la o facultate

♦ Colecţia electronică a ediţiilor unor ziare

O bază de date modernă, care se află în pas cu cerinţele lumii informatice de astăzi nu

trebuie să conţină numai informaţiile propriu-zise, ci şi regulile de gestionare ale acestora precum şi obiectele necesare acestei gestionări. Pentru ca o bază de date să poată fi construită şi prelucrată, într-un cuvânt gestionată de către utilizatorul uman prin intermediul calculatorului este necesar un limbaj de nivel înalt, o interfaţă. Acest limbaj nu este altceva decât un sistem de programe specializat, proiectat în acest 1 engl. database

Storm
Highlight
Storm
Highlight
Storm
Highlight
Page 8: SGBD Access Curs 2005

8

scop, care poartă numele generic de Sistem de Gestiune a Bazelor de Date (SGBD), în limba engleză DataBase Management System (DBMS). Pentru ca un SGBD să permită gestionarea corespunzătoare a informaţiilor dintr-o bază de date modernă, acesta trebuie să atingă câteva obiective principale:

� să permită gestionarea simultană a unor date de tipuri diferite (numerice, alfanumerice, şiruri de caractere etc.);

� să evite informaţiile redundante, adică duplicatele (o anumită informaţie să nu există în mai multe locuri ale aceleaşi baze de date);

� să asigure un acces rapid, uşor şi totodată controlat la informaţii unor categorii diferite de utilizatori, în funcţie de nivelul ierarhic şi de instruire al acestora. De asemenea, să permită accesul la informaţii prin mijloacele informaticii moderne de astăzi (reţele de calculatoare, internet etc.);

� să asigure integritatea informaţiilor într-o bază de date dinamică, aflată într-o continuă transformare;

� să asigure posibilitatea de extindere a bazei de date, conform cerinţelor unei organizaţii în dezvoltare permanentă.

Pentru ca un SGBD să permită interacţiunea dintre baza de date şi utilizator el trebuie să conţină un anumit limbaj de descriere a datelor (LDD) prin care să poată fi proiectată structura bazei de date şi un anumit limbaj de prelucrare a datelor (LPD) prin care să poată fi proiectate obiectele necesare gestionării datelor memorate în baza de date respectivă. Cu ajutorul LDD utilizatorul uman descrie structura bazei de date, componentele acesteia, relaţiile care există între ele, stabileşte drepturile de acces ale diverşilor solicitanţi la informaţiile respective. Cu ajutorul LPD, utilizatorul uman crează obiectele de gestionare a informaţiilor din baza de date, prin care se pot adăuga, prelucra, elimina informaţii. De multe ori, în cadrul SGBD moderne, cele două limbaje nu sunt clar diferenţiate, compunând un singur limbaj modular ale cărui componente, unele realizează funcţiile unui LDD, iar celelalte pe acelea ale unui LPD.

Din punct de vedere al utilizatorilor unei baze de date aceştia se împart în trei categorii: � Administratorii bazei de date – care proiectează structura iniţială a bazei de date, crează şi gestionează obiectele acesteia, reglementează şi controlează accesul celorlalţi utilizatori la informaţii, asigură întreţinerea curentă a bazei de date, sunt cunoscătorii LDD şi LPD;

� Programatorii de aplicaţii – care pot crea anumite obiecte, aplicaţii care să prelucreze informaţiile din baza de date, utilizând LPD;

� Utilizatorii obişnuiţi – care obţin informaţii din baza de date pe baza obiectelor create de către administratori sau programatori, fără să cunoască LDD sau LPD.

Relaţiile ierarhice care se pot stabili în gestiunea unei baze de date prin intermediul unui SGBD pot fi cele prezentate în schema din figura 1.1.

Pentru crearea unei baze de date corecte, care să corespundă scopului propus, este necesară o modelare logică a datelor, adică stabilirea unei scheme conceptuale care reprezintă nivelul logic al bazei de date. Limbajul de descriere a datelor (LDD) este cel prin care se trece de la schema conceptuală la nivelul fizic al bazei de date, adică la fişierele memorate pe diferite medii de stocare care conţin informaţiile.

Stabilirea schemei conceptuale a unei baze de date nu este un lucru întotdeauna uşor. Din acest punct de vedere, părerile teoreticienilor sunt unanime. Chiar dacă, la un moment dat, se impune utilizarea unei baze de date pentru gestionarea unui anumit tip de informaţii într-o organizaţie, trebuie să se analizeze temeinic ce legături, relaţii există între acele informaţii şi

Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Page 9: SGBD Access Curs 2005

9

altele care sunt administrate în mod curent de organizaţia respectivă. S-ar putea desprinde concluzia că şi alte informaţii care iniţial nu erau cuprinse în proiectul bazei de date ar trebui incluse pentru o dezvoltare ulterioară mai eficientă. O schemă conceptuală bine proiectată nu ar trebui să depindă de SGBD ales pentru implementarea ei.

În literatura de specialitate sunt recunoscute, aproape unanim, patru tipuri de modele: modelul relaţional, modelul reţea, modelul arborescent şi modelul orientat pe obiecte. Dintre cele patru, modelul relaţional se caracterizează prin simplitate, poate fi mai uşor înţeles şi de către nespecialişti, motive pentru care a fost implementat în multe SGBD actuale. Deoarece SGBD prezentat în această lucrare (Microsoft Access) are la bază modelul relaţional, acest model va fi descris mai în amănunt în subcap.1.2. După stabilirea modelului logic (schema conceptuală) a bazei de date, următoarea etapă este proiectarea structurilor de date prin care se poate implementa acel model.

Proiectarea structurii optime a unei baze de date este o problemă deosebită. Această proiectare depinde foarte mult de posibilităţile unui SGBD de a atinge acele obiective principale, prezentate anterior. Limbajul de prelucrare a datelor (LPD) este direct responsabil de aceste aspecte.

O bază de date modernă, performantă trebuie să aibă anumite proprietăţi, dintre care cele

mai importante sunt:

LDD limbajul de

descriere a datelor

LPD limbajul de

prelucrare a datelor

TABELELE informaţiile stocate fizic

UTILIZATORI cereri

SGBD

interfaţa

ADMIN

Administrator sistem

Utilitare

- formulare introducere date - editor rapoarte - reprezentări grafice - panouri de comandă - pagini de acces la date - generatoare de aplicaţii - etc.

Fig.1.1. Schema generală a unui sistem de gestiune a datelor

Programatori

Aplicaţii

Storm
Highlight
Storm
Highlight
Page 10: SGBD Access Curs 2005

10

� Corectitudine: să reprezinte fidel modul de lucru în sistemul real;

� Simplitate: structura tabelelor să fie clară şi uşor de înţeles;

� Neredundanţă: o informaţie să nu existe de mai multe ori în baza de date (absenţa duplicatelor;

� Distributivitate: informaţiile să fie uşor accesibile cât mai multor utilizatori şi aplicaţii;

� Extensibilitate: să existe posibilitatea dezvoltării de noi componente fără a afecta major structura existentă la un moment dat;

� Flexibilitate: să poată adapta uşor datele la eventuale modificări;

� Integritate: întreţinerea bazei de date să nu afecteze existenţa şi corectitudinea informaţiilor.

Tehnologia de proiectare a unei baze de date moderne presupune parcurgerea succesivă a unor etape bine definite, după cum urmează:

� Identificarea obiectelor (entităţi, tabele) prin care se vor memora informaţiile; � Identificarea proprietăţilor semnificative al obiectelor; � Stabilirea relaţiilor dintre obiecte şi a regulilor de operare a acestor relaţii; � Crearea obiectelor prin care baza de date este exploatată (actualizări, tranzacţii,

modificări, reguli de integritate a datelor; � Stabilirea drepturilor de acces la date a diverşilor utilizatori; � Realizarea documentaţiei pentru exploatarea eficientă a bazei de date � Crearea procedurilor de întreţinere a bazei de date (siguranţa datelor, copiere, dezvoltare

etc.). În ultima perioadă de timp a pătruns şi în lumea bazelor de date conceptul de proiectare

orientată pe obiecte. Acest tip de abordare face o analogie cu lumea reală, formată din obiecte care au anumite proprietăţi şi un anumit comportament. Şi obiectele unei baze de date au proprietăţi şi metode (comportament). Proprietăţile pot fi statice (nu se modifică în timp) sau dinamice (se modifică în timp). Metodele controlează răspunsul obiectelor la anumite evenimente care le afectează. Avantajul utilizării acestui tip de proiectare este acela al unei generalizări a modelului logic, astfel încât acesta să poată fi utilizat pentru mai multe aplicaţii, cu adaptări minime la un caz concret.

SGBD moderne trebuie să includă în LDD şi LPD şi posibilitatea aplicării conceptului de proiectare orientată pe obiecte.

1.2. Modelul relaţional de bază de date

Un model relaţional de bază de date are ca fundament structuri de date numite tabele în care

sunt stocate informaţiile propriu-zise. Între tabele se stabilesc relaţii de asociere, a căror existenţă este guvernată de un set de reguli precise. Informaţiile cuprinse în tabele pot fi controlate de restricţii algebrice. Modelul mai cuprinde şi operaţii de prelucrare a datelor.

Tabelul (tabela)2 este o structură de tip matrice, în care informaţiile sunt aşezate pe rânduri

şi coloane. Coloanele definesc tipul informaţiei, iar rândurile, valorile acesteia. O coloană, conţinând un anume tip de informaţie, se numeşte câmp

3. Un rând, conţinând valorile

2 engl. table 3 engl. field

Storm
Highlight
Storm
Highlight
Storm
Highlight
Page 11: SGBD Access Curs 2005

11

corespunzătoare tuturor coloanelor, se numeşte înregistrare4. Fiecare câmp al tabelului are o

denumire prin intermediul căreia va putea fi identificat atunci când se face referire la el. Lista câmpurilor tabelului formează structura acestuia, care este stabilită de către proiectantul bazei de date după nişte reguli specifice.

Exemplul 1 Evidenţa tipurilor de materiale utilizate într-o întreprindere poate fi ţinută sub forma unui

tabel (nomenclator de materiale), conform tabelului 1.1.

Tabelul 1.1.

Codul

materialului

Denumirea materialului Tipul

semifabricatului

Unitatea de

măsură

01013 Oţel OL 37 Bară laminată ø20 kg

01025 Oţel OLC 45 Bară laminată ø30 kg

01026 Oţel OLC45 Bară laminată ø40 kg

02001 Fontă cenuşie Fc 100 Bloc 250x150x50 kg

02002 Fontă cenuşie Fc 150 Bloc 250x150x50 kg

04001 Ulei mineral M20 Butoi 200 l l

Structura prezentată în tabelul 1.1. conţine patru câmpuri care pot avea denumirile codmat,

denmat, tipsem, unms. O înregistrare a tabelului este

02002 Fontă cenuşie Fc 150 Bloc 250x150x50 kg

Valorile atribuite câmpurilor unui tabel al bazei de date trebuie să aibă anumite proprietăţi care sunt stabilite la definirea structurii tabelului. Aceste proprietăţi se referă la tipul de date (numeric, text etc.), la domeniul permis al valorilor, la anumite restricţii privind valorile introduse etc. Posibilităţile de control al acestor proprietăţi depind în mare măsură de SGBD-ul ales pentru gestionarea bazei de date. În orice tabel al unei baze de date fiecare înregistrare trebuie să fie unică, adică valorile câmpurilor acesteia să difere de ale celorlalte înregistrări pentru cel puţin unul dintre câmpuri. După valoarea din acel câmp, înregistrarea respectivă poate fi identificată. Acel câmp poartă denumirea generică de cheie de identificare. Deoarece identificarea unei înregistrări a unui tabel să poate face după valorile dintr-un câmp sau din multe câmpuri, iar tabelul respectiv se află, în mod normal, în relaţii cu alte tabele ale bazei de date, stabilite pe baza unor câmpuri, există mai multe tipuri de chei de identificare, după cum urmează:

Cheie principală (primară) 5 – un set de valori (câmpuri) care identifică în mod unic o

înregistrare a unui tabel. Pentru o anumită valoare a cheii principale există o singură înregistrare şi numai una. Cheia principală poată fi definită pe un singur câmp al unui tabel dacă valorile acelui câmp sunt unice pentru orice înregistrare a tabelului;

4 engl. record 5 engl. primary key

Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Page 12: SGBD Access Curs 2005

12

Cheie candidată 6 – orice câmp al tabelului care întruneşte condiţiile pentru a fi o cheie primară; în exemplul nr.1, câmpurile codmat şi denmat sunt chei candidate; codmat este cel mai corect a fi ales cheie primară, deoarece pot exista mai multe înregistrări referitoare la acelaşi material, dar care se referă la tipuri diferite de semifabricate (vezi cele două înregistrări cu „Oţel OLC 45”);

Cheie compusă (concatenată) 7 – este cheia primară care se defineşte pe cel puţin două

câmpuri ale tabelului; o înregistrare este identificată printr-un grup de valori, corespunzătoare câmpurilor care definesc cheia compusă;

Exemplul 2 În tabelul 1.1. câmpul cod material are o valoare unică pentru fiecare înregistrare (fiecare tip de material). Nu trebuie să existe două tipuri de materiale cu acelaşi cod atribuit. În consecinţă, acest câmp poate îndeplini funcţia de cheie principală în tabelul respectiv.

În cadrul modelului relaţional, între informaţiile stocate în diferitele tabele ale bazei de date se stabilesc relaţii de asociere. Acestea constituie unul dintre elementele de esenţă conceptuală a modelului relaţional al bazelor de date. Pe baza acestui model s-au dezvoltat şi astăzi sunt în puternică expansiune Sistemele de Gestiune a Bazelor de Date Relaţionale (SGBD-R) – Relational Database Management Systems (R-DBMS), din care face parte şi Microsoft Access. O relaţie se stabileşte între două tabele ale bazei de date, prin intermediul a două câmpuri, câte unul din fiecare tabel, adică este de tip binar (câmp – câmp). Există trei tipuri de relaţii:

• Relaţie unu-la-unu (one-to-one) – 1:1 – în care unei înregistrări din primul tabel (partea stângă) îi corespunde cel mult o înregistrare în celălalt tabel (partea dreaptă) şi reciproc;

• Relaţie unu-la-mai mulţi (one-to-many) – 1:N – în care unei înregistrări din primul tabel îi pot corespunde mai multe înregistrări în celălalt tabel şi fiecărei înregistrări din al doilea tabel îi corespunde numai una în primul tabel; primul tabel se poate numi tabel primar, iar cel de-al doilea, tabel corelat;

• Relaţie mai mulţi-la-mai mulţi (many-to-many) – M:N – în care unei înregistrări din primul tabel îi pot corespunde mai multe înregistrări în celălalt tabel şi reciproc.

Câmpurile prin care se stabilesc relaţii între două tabele ale bazei de date trebuie să conţină acelaşi tip de dată.

Mulţimea tuturor relaţiilor stabilite între tabelele unei baze de date formează schema

relaţională8 a bazei de date. În unele SGBD moderne, cum ar fi Microsoft Access, această

schemă este memorată şi poate fi vizualizată şi gestionată într-o secţiune specială. Avantajele utilizării relaţiilor într-un SGBD sunt:

� evitarea memorării tuturor informaţiilor necesare într-un singur tabel, de dimensiuni mari, cu multe câmpuri, care este mai dificil de gestionat;

� micşorarea mărimii fizice a bazei de date, implicit a spaţiului ocupat de aceasta, prin evitarea redundanţei, adică a memorării aceleaşi informaţii de mai multe ori în baza de date;

6 engl. candidate key 7 engl. concatenated key 8 engl. relationships scheme

Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Page 13: SGBD Access Curs 2005

13

� uşurinţa efectuării de modificări ale anumitor valori ale informaţiilor şi de actualizări sau ştergeri ale unor informaţii din baza de date.

Exemplul 3 Evidenţa achiziţiilor de materiale într-o societate comercială se poate ţine cu o bază de

date având două tabele cu următoarea structură (vezi şi exemplul 1): 1. tip_material (codmat, denmat, unms); 2. stoc_material (nrfct, data, codmat, pret, cantitate)

Câmpurile subliniate în structurile de mai sus formează cheile primare ale tabelelor. Tabelul tip_material ţine evidenţa tipurilor de materiale. Fiecărui material utilizat îi corespunde o singură înregistrare în tabel, adică valoarea câmpului codmat este unică pentru fiecare înregistrare. Tabelul stoc_material ţine evidenţa datelor preţ/cantitate la fiecare intrare de material în gestiune, prin informaţiile preluate din facturile de achiziţie. Pentru fiecare achiziţie a unei cantităţi dintr-un anumit material, în tabel se adaugă câte o înregistrare. Pentru un anumit material, adică o anumită înregistrare din tabelul tip_material, pot exista mai multe înregistrări corespondente în tabelul stoc_material, corespunzătoare achiziţiilor de-a lungul unei perioade de timp. Între tabelul tip_material şi tabelul stoc_material se poate stabili o relaţie de asociere de tip 1:N, prin câmpul codmat, care are aceeaşi semnificaţie în ambele tabele. Relaţia se vizualizează în schema conceptuală a bazei de date printr-o săgeată care pleacă de la câmpul din primul tabel (codmat din tip_material) spre câmpul asociat din al doilea tabel (codmat din stoc_material), conform figurii 1.2. Se observă că, în ambele tabele, câmpul codmat face parte din cheia primară.

Observaţie Informaţiile privind achiziţiile de materiale pot fi gestionate şi într-un singur tabel, având următoarea structură: stoc_materiale (codmat, denmat, unms, nrfct, data, pret, cantitate)

Această structură nu respectă însă anumite reguli de proiectare a unei baze de date, cum ar fi:

• există informaţii redundante; la înregistrările privind achiziţiile dintr-un anumit material, valorile câmpurilor denmat şi unms sunt aceleaşi şi ele se repetă la fiecare înregistrare;

• adăugarea de înregistrări în tabel consumă timp relativ mare, deoarece câmpul denmat poate conţine multe caractere şi acestea trebuie introduse de fiecare dată;

• riscul de apariţie a erorilor la introducerea datelor este ridicat; dacă valoarea câmpului denmat nu este aceeaşi pentru toate înregistrările corespunzătoare aceluiaşi tip de material, prelucrarea ulterioară a datelor (inclusiv actualizare, ştergere de înregistrări etc.) va da rezultate incorecte;

tip_materialtip_materialtip_materialtip_material

codmat denmat unms

stoc_materialstoc_materialstoc_materialstoc_material

nrfct data

codmat pret

cantitate

Fig.1.2. Vizualizarea relaţiei între două tabele

Storm
Highlight
Page 14: SGBD Access Curs 2005

14

• utilizarea unui tabel cu multe câmpuri nu asigură simplitatea structurii bazei de date şi îngreunează prelucrarea informaţiilor.

Exemplul 4 Prelucrarea informaţiilor privind candidaţii la concursul de admitere la o facultate se poate face cu ajutorul a două tabele cu următoarea structură (selectiv): 1. date_candidati (nrlegit, nume, sex, medie_bac, medie_admitere, jud_domiciliu) 2. op_candidati (nrlegit, op1, op2, op3, op4, op5, op6) Tabelul date_candidati cuprinde informaţii generale despre candidaţi – numărul legitimaţiei de concurs, numele şi prenumele, sexul, media de bacalaureat, media de admitere, judeţul de domiciliu etc), iar tabelul op_candidati cuprinde informaţii privind opţiunile de specializare dorite de candidaţi. În ambele tabele, fiecărui candidat îi corespunde o singură înregistrare, identificată prin cheia principală, câmpul nrlegit. Legătura între cele două tabele se poate stabili printr-o relaţie de tip 1:1, prin câmpul nrlegit. Avantajul utilizării acestei structuri de date cu relaţia menţionată este acela al unei gestiuni mai uşoare a informaţiilor (se recomandă evitarea tabelelor cu un număr mare de câmpuri).

În cadrul modelului relaţional, pe lângă tabele cu structuri definite şi relaţii de asociere între acestea, trebuie să existe şi un set de reguli de gestionare a informaţiilor, de prelucrare a acestora. Aceste reguli sunt cuprinse în limbajul de prelucrare a datelor (LPD) care se mai numeşte şi limbaj de cereri (în majoritatea cazurilor baza de date este utilizată pentru a solicita – a „cere” ulterior informaţii de un anumit tip).

Odată cu apariţia şi dezvoltarea SGBD-R, au apărut şi diverse tipuri de LPD, majoritatea bazate pe operatori matematici ai algebrei relaţionale. Unele dintre acestea sunt specifice numai anumitor SGBD-R, altele au devenit un standard şi formează nucleul mai multor SGBD moderne

Sistemul Microsoft Access include două LPD-uri, şi anume QBE şi SQL. Limbajul QBE (Query-By-Example9) are la bază un editor de texte prin intermediul căruia utilizatorul poate exprima cererile. Utilizatorul are posibilitatea afişării grafice, într-o formă specifică, a structurii tabelelor, a relaţiilor dintre ele şi apoi, prin intermediul editorului, cu câteva comenzi simple, îşi poate construi solicitările. Selectarea înregistrărilor dorite se face prin indicarea valorii atributelor în dreptul câmpurilor corespunzătoare. Convenţiile limbajului QBE sunt simple, uşor de înţeles şi asimilat. Limbajul SQL (Structured Query Language10) a fost introdus prima dată în 1974, de către IBM Research Laboratory, San Jose, California, iar în anul 1986 a fost recunoscut de către ANSI ca standard internaţional. SQL reprezintă un set de instrucţiuni, majoritatea direct executabile, care utilizează operatori din algebra relaţională (produs cartezian, reuniune, intersecţie, diferenţă), dar şi operatori care definesc funcţii agregat, folosite în teoria mulţimilor (numărare – Count, medie aritmetică – Avg, suma – Sum, valoare minimă – Min etc.). Instrucţiunile din SQL pot fi incluse şi în alte limbaje de programare (Basic, C, Cobol, Fortran etc.), astfel încât aplicaţiile scrise cu aceste limbaje pot interacţiona cu bazele de date prin intermediul unui SGBD-R care include şi SQL. De asemenea, prin SQL se asigură compatibilitatea între diversele aplicaţii cu baze de date, create cu diverse SGBDR, care trebuie să aibă inclus acest limbaj în componenţa lor. 9 rom. cerere prin exemplu 10 rom. limbaj structurat de cereri

Storm
Highlight
Page 15: SGBD Access Curs 2005

15

SISTEMUL DE GESTIUNE A BAZELOR DE DATE RELAŢIONALE MICROSOFT ACCESS

2.1. Ce este Microsoft® ACCESS? Concepte generale

Dintre sistemele de gestiune a bazelor de date relaţionale existente astăzi, ACCESS este unul

dintre cele mai complete şi performante. El nu este un simplu SGBD, ci mai degrabă este un

mediu complex de dezvoltare de aplicaţii pentru baze de date, construit pe principiile arhitecturii

deschise. Microsoft Access este integrat în pachetul Microsoft Office, având facilităţi

corespunzătoare de interacţiune cu celelalte sisteme incluse (Word, Excel, PowerPoint,

FrontPage). Access încorporează un maximum de posibilităţi de abordare a unei baze de date,

având integrate cele mai importante modele de proiectare a acesteia. Pachetul Access, ajuns la

versiunea 2003, oferă un set solid de instrumente, unele suficient de sofisticate pentru

programatorii profesionişti, altele uşor de folosit de către utilizatorii noi. Cu Access, orice

utilizator îşi poate crea soluţiile cele mai convenabile prin care accesul, organizarea şi distribuţia

informaţiilor dintr-o organizaţie se poate face mai uşor şi mai sigur ca niciodată.

Pachetul Microsoft Access cuprinde următoarele componente principale (fig.2.1):

� un modul SGBD-R performant, care include două dintre cele mai cunoscute limbaje de prelucrare a datelor, QBE (Query-by-Example) şi SQL (Structured Query Language); în acest modul se crează tabelele de date şi se gestionează informaţiile;

� un modul VBA care include un limbaj procedural de programare independent, VBA (Visual Basic for Applications), utilizabil pentru dezvoltarea de aplicaţii;

� un limbaj macro procedural simplificat, cu ajutorul căruia se pot proiecta aşanumitele macrocomenzi, deosebit de utile în unele etape de administrare a bazei de date;

� un set de instrumente pentru dezvoltare rapidă a interfeţei bază de date – utilizatori obişnuiţi (formulare, rapoarte, panouri de comandă);

� un set de instrumente pentru asigurarea interfeţei Access – alte medii (conversii de date, transfer de date în/din, securitate, acces prin Web, compatibilităţi etc.);

� un set puternic de instrumente de asistenţă interactivă („wizards”) pentru dezvoltarea uşoară a aplicaţiilor.

Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Page 16: SGBD Access Curs 2005

16

În Access, termenul de bază de date nu se referă numai la datele propriu-zise, ci cuprinde şi

alte obiecte cum ar fi formularele, interogările (cereri), rapoartele, panourile de comandă,

macrocomenzile şi modulele de aplicaţii VBA. O caracteristică specifică, deosebită de alte SGBD

cunoscute, este faptul că toate obiectele, împreună cu tabelele de date pot fi memorate într-un

singur fişier, care poartă numele <nume_fisier>.mdb<nume_fisier>.mdb<nume_fisier>.mdb<nume_fisier>.mdb. Acest lucru asigură un control mai

eficient al aplicaţiilor care privesc o anumită bază de date.

Modulul de bază, în care se defineşte şi se gestionează colecţia de date, cuprinde

următoarele obiecte:

� tabelele de date (Tables), conţin informaţiile propriu-zise sub formă de înregistrări şi între care se pot stabili relaţii de asociere (Relationships);

� interogările (cereri) (Queries), rezolvă solicitări ale utilizatorilor privind afişarea selectivă a informaţiilor şi prelucrarea acestora;

� formularele (forme) (Forms), afişează informaţiile într-un format anume, constituind o interfaţă între colecţia de date şi utilizatorul obişnuit;

� rapoartele (Reports), ajută la tipărirea la imprimantă a informaţiilor, într-un format anume, constituind interfaţa între colecţia de date şi imprimantă;

� panourile de comandă (Switchboard), sunt formulare prevăzute de obicei numai cu butoane de comandă prin care utilizatorul obişnuit „navighează” în baza de date.

Fig.2.1. Elementele componente ale sistemului Microsoft Access

Tabele de date

Tables

Instrumente de gestionare

Queries, Forms, Reports Relationships

QBE, SQL Language

Asistenţă Wizards

Help

Utilităţi

Conversii de date Pagini de access Web

Securitate date Întreţinere fişiere

Macrocomenzi Macros language

Module de aplicaţii

VBA language

Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Page 17: SGBD Access Curs 2005

17

La fel ca şi majoritatea aplicaţiilor Windows, Access funcţionează pe principiul ferestrelor

şi meniurilor. Ultimele versiuni (9.0 - Access 2000, 10.0 – Access 2002 şi 11.0 – Access 2003)

asigură o serie de facilităţi suplimentare, dintre care se pot menţiona:

� acceptarea unei varietăţi mai mari de formate de date, cum ar fi XML (Extensible Markup Language OLE), ODBC (Open Database Connectivity);

� posibilitatea accesului concomitent la informaţii din mai multe baze de date în cadrul formularelor, rapoartelor şi al paginilor de acces la date, se pot asocia tabele din baze de date Access, foi de calcul Microsoft Excel, surse de date ODBC, baze de date Microsoft SQL Server™ etc.;

� mai multe posibilităţi de creare a formularelor;

� noi caracteristici de căutare a erorilor obişnuite din formulare şi rapoarte, ajutând la identificarea şi eliminarea mai rapidă a acestora;

� actualizări automate ale proprietăţilor obiectelor prin modificare într-un singur loc;

� îmbunăţiri ale modului de proiectare a paginilor Web de acces la date cu ajutorul unor instrumente mai puternice;

� compatibilitate perfectă între cele două versiuni, Access 2002 utilizând ca format implicit de fişier pentru baze de date noi cel al versiunii Access 2000.

Fiind un sistem de gestiune a bazelor de date relaţional (SGBD-R), Access beneficiază de

toate caracteristicile şi avantajele unui astfel de sistem. Datele sunt organizate sub formă de

înregistrări (records) incluse în tabele (tables) între care există relaţii de interdependenţă

(relationships).

La lansarea în execuţie a sistemului Access, se afişează fereastra principală al cărei aspect

este cel prezentat în figura 2.3.

Fig.2.3. Fereastra principală a sistemului Access 2002

Zona de meniuri Bara cu butoane superioară

Zona de informaţii

Storm
Highlight
Page 18: SGBD Access Curs 2005

18

Fig.2.4.

Aşa după cum se observă din figura 2.3, fereastra principală a aplicaţiei conţine o zonă de

meniuri în partea superioară (File, Edit, View, …) sub care se află o bară cu butoane specifice

(Toolbar), structură care este caracteristică tuturor aplicaţiilor Microsoft Windows®.

În cadrul ferestrei principale există posibilitatea afişării unui panou de control, util pentru

selectarea mai comodă a acţiunilor de deschidere a bazelor de date. Aspectul acestui panou este

prezentat în figura 2.4. Afişarea automată a panoului la lansarea în

execuţie a aplicaţiei se face prin validarea opţiunii Tools� Options�

View� Startup Task Pane, având o bază de date deschisă. Dacă nu se

doreşte afişarea automată a panoului, se anulează opţiunea Show at

startup, aflată în partea inferioară a acestuia. La următoarea lansare a

aplicaţiei, panoul nu va mai fi afişat.

Din fereastra principală a aplicaţiei se pot executa o serie de

acţiuni asupra bazelor de date existente sau pentru crearea unor noi

baze de date. Cele mai importante dintre acestea sunt descrise în

continuare.

Crearea unei baze de date se face prin selectarea opţiunii de

meniu File � New sau prin selectarea uneia dintre opţiunile New ale

panoului de control (fig.2.4). Există două posibilităţi de creare a unei

baze de date noi:

1. Bază de date fără obiecte – Blank Database. În acest caz, obiectele

(tabele etc.) vor fi create de către utilizator sau importate din alte baze

de date;

2. Bază de date cu tabele predefinite – New from template. În acest

caz, tabelele şi structura acestora sunt importate dintr-o bibliotecă

inclusă în sistem (General Templates) sau din alte surse (ex.internet). Dacă se alege această

opţiune, utilizatorul are posibilitatea de a selecta tabele şi structuri predefinite care se potrivesc

cel mai bine colecţiei de date pe care trebuie să o gestioneze. Alegerea se face într-o succesiune

de ferestre de dialog sugestive prin care utilizatorul este asistat pentru luarea celor mai bune

decizii. Deschiderea unei baze de date existente se face prin selectarea opţiunii de meniu File �

Open sau prin alegerea uneia dintre opţiunile Open a file ale panoului de control (fig.2.4). Dacă

baza de date este una în care se lucrează frecvent, probabil numele fişierului este afişat în zona

corespunzătoare a panoului de control (ex.candidati2003) şi poate fi selectat de acolo. Dacă nu,

se alege opţiunea More files… şi va fi afişată structura de subdirectoare a calculatorului din care

se va putea selecta fişierul dorit.

Crearea de pagini de acces la date se face cu opţiunea Blank Data Access Page a panoului

de control (fig.2.4) sau în secţiunea Pages a ferestrei principale a unei baze de date deschise

(fig.2.5). Pagina de acces la date permite citirea/consultarea datelor stocate în tabelele unei baze

de date prin intermediul internetului, fiind de fapt un formular codificat în limbaj HTML

(HyperText Markup Language), astfel încât să poată fi vizualizată cu ajutorul unui browser Web.

Crearea unei aplicaţii de tip proiect se face prin selectarea uneia dintre opţiunile Project

(Existing Data) şi Project (New Data) ale panoului de control. O aplicaţie de tip proiect în Access

Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Page 19: SGBD Access Curs 2005

19

– Access Project© este un fişier de date care asigură accesul la baze de date de tip SQL Server

prin proceduri bazate pe arhitectura OLE DB (acces la date prin reţea/internet). Proiectele Access

sunt aplicaţii client/server care prelucrează informaţiile stocate în baze de date localizate pe

servere prin obiecte de tip Data Access Page. Proiectele nu conţin date efective, ci numai

proceduri de prelucrare a acestora.

La crearea sau deschiderea unei baze de date este afişată fereastra principală de gestionare a

acesteia, al cărei aspect este prezentat în figura 2.5.

În partea din stânga a ferestrei se află zona de selectare a diferitelor tipuri de obiecte

(Objects), iar în partea superioară se află un set de butoane – Open, Design, New – disponibile

pentru execuţia diferitelor acţiuni asupra obiectelor selectate – Deschidere/execuţie obiect

existent, Proiectare/modificare obiect, Creare obiect nou. La selectarea unui tip de obiect (de

exemplu, Tables), în fereastra principală sunt afişate obiectele disponibile de acel tip (în fig.2.5

s-a selectat secţiunea Tables, tabelele bazei de date).

După cum s-a precizat anterior, un fişier bază de date Access poate să conţină, pe lângă

tabelele cu date, şi alte obiecte necesare gestionării datelor memorate. Totuşi, utilizatorii avansaţi

(programatorii de aplicaţii) recomandă existenţa a două fişiere separate; unul pentru stocarea

datelor propriu-zise sub formă de tabele – fişier date – şi altul pentru obiectele necesare

gestionării datelor respective (formulare, interogări etc.) – fişier interfaţă – care constituie

interfaţa între utilizatorii obişnuiţi şi date. Motivul este unul simplu: în general, utilizatorii

obişnuiţi nu trebuie să aibă un acces nelimitat sau direct la datele stocate în tabele; ei

consultă/modifică/adaugă date prin intermediul unor obiecte specifice (formulare, panouri de

comandă etc.). Se asigură astfel integritatea înregistrărilor şi protecţia împotriva unor modificări

accidentale sau rău-intenţionate a datelor. Legătura între cele două fişiere se face prin procedura

Fig.2.5. Fereastra principală a bazei de date

Storm
Highlight
Storm
Highlight
Storm
Highlight
Page 20: SGBD Access Curs 2005

20

linked table – tabele legate. În fişierul interfaţă, în secţiunea Tables, numele tabelelor legate este

precedat de o săgeată care indică faptul că tabelul respectiv nu este efectiv stocat acolo, ci într-un

alt fişier.

Una dintre activităţile de mare importanţă care au loc la crearea unei baze de date este cea

de proiectare corectă a structurii bazei de date şi a tabelelor acesteia. Modelul relaţional care stă

la baza sistemului Access asigură din acest punct de vedere avantaje deosebite.

În cele ce urmează se prezintă câteva principii de bază privind proiectarea unei baze de

date, cu exemplificare pe cele două baze de date utilizate în cadrul aplicaţiilor din capitolul 4.

2.2. Proiectarea structurii unei baze de date

În capitolul 1 s-au prezentat câteva principii de bază care trebuie respectate atunci când se

proiectează schema conceptuală a unei baze de date care se va utiliza pentru gestiunea unei

anumite colecţii de informaţii. Pentru proiectarea corectă de la început a structurii bazei de date,

este necesară aplicarea unor reguli relativ simple.

Deoarece la baza sistemului Access se află modelul relaţional, prezentat în subcap.1.2,

exemplele analizate în continuare se bazează pe acest model.

Se consideră temele prezentate în exemplele 3 şi 4 ale capitolului 1, adică:

1. gestiunea produselor achiziţionate / consumate (comercializate) de către o societate comercială;

2. gestiunea candidaţilor la admitere la o facultate.

Pentru rezolvarea primei teme, este necesară colectarea informaţiilor de pe facturile de

achiziţie ale produselor şi de pe bonurile de consum (respectiv, facturile de vânzare). Informaţiile

minime de care este nevoie sunt următoarele:

� facturi de achiziţie: număr factură, data facturii, denumire furnizor, denumire produs, cantitate, preţ achiziţie;

� bonuri de consum: număr bon, data bonului, departament, denumire produs, cantitate.

Aceste informaţii ar putea fi gestionate în două tabele ale bazei de date, achiziţii şi consum, având

următoarele structuri:

� achiziţii (nrfact, datafact, denfur, denprod, cant, pret);

� consum (nrbon, databon, dept, denprod, cant).

Structurile prezentate mai sus pot asigura o gestionare a informaţiilor, dar au câteva

dezavantaje şi dificultăţi în exploatare, cum ar fi:

� pentru fiecare produs existent pe factura de achiziţie se introduce câte o înregistrare în tabelul achiziţii, repetându-se introducerea unor informaţii identice (număr factură, data facturii, denumire furnizor), existând deci informaţii redundante în baza de date;

� informaţiile despre furnizor sunt minime (denumire furnizor) şi vor trebui completate ulterior cu altele (de ex. cod fiscal, adresa, telefon etc.), lucru care înseamnă adăugarea

Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Storm
Highlight
Page 21: SGBD Access Curs 2005

21

de noi câmpuri în tabelul achiziţii, determinând creşterea dimensiunilor acestuia şi o gestionare mai dificilă;

� ar fi necesară şi informaţia referitoare la unitatea de măsură a produsului (bucăţi, seturi, kg, litri etc.) care trebuie adăugată în tabelul achiziţii;

� dacă se va dori legarea informaţiilor din cele două tabele, necesară spre exemplu pentru determinarea stocurilor de produse la un moment dat, ar fi foarte dificil. În cele două tabele există o singură posibilitate de a stabili o relaţie, prin câmpul denprod, dar această relaţie ar fi de tipul M-N şi ar fi dificil de gestionat.

Pentru rezolvarea problemei, se propune o structură a bazei de date formată din 6 tabele,

conform schemei din figura 2.6.

Comentarii la schema din figura 2.6

Informaţiile din factura de achiziţie se împart în două categorii: informaţii generale (date

despre factură şi furnizor) şi informaţii speciale (date despre produsele din factură). Pe baza

facturii de achiziţie se întocmeşte o notă de recepţie şi informaţiile se vor memora în două tabele,

noterec şi stocaprov, legate relaţional prin câmpul nr. nota recepţie. În mod similar, informaţiile

EVIDENŢA PRODUSE

Tipuri de produse

cod produs denumire produs unitate de măsură

Evidenţă furnizori

cod furnizor denumire furnizor adresa nr. telefon cod fiscal

Note recepţie

nr. notă recepţie cod furnizor nr. factură data facturii achitat

Intrări de produse în stoc

cod produs nr. nota recepţie cantitate preţ

Ieşiri de produse în consum

cod bon cod produs cantitate

Bonuri de consum

cod bon data consum departament

PRODUSE FURNIZORI NOTEREC STOCAPROV

STOCONSUM BONCONSUM

Fig.2.6. Schema structurală a unei baze de date relaţionale pentru gestiunea produselor într-o societate comercială

Storm
Highlight
Storm
Highlight
Page 22: SGBD Access Curs 2005

22

privind produsele date în consum se vor gestiona în două tabele, bonconsum şi stoconsum, legate

relaţional prin câmpul cod bon.

Informaţiile despre produse şi furnizori se vor memora în tabele distincte, produse şi

furnizori. Din punct de vedere informatic, gestionarea acestora se face mai comod dacă se

atribuie câte un cod specific fiecărui produs şi, respectiv, fiecărui furnizor. Aceste coduri se

memorează prin câmpurile cod produs şi, respectiv, cod furnizor, care constituie şi câmpuri de

identificare a înregistrărilor, adică se pot constitui în chei primare ale tabelelor respective.

Tabelele produse şi furnizori pot fi legate prin relaţii specifice de celelalte tabele ale bazei de

date, în funcţie de necesităţi. Fiind tabele distincte, dezvoltarea ulterioară a acestora este foarte

simplă şi nu pune probleme de ansamblu în baza de date (de exemplu, la un moment dat poate fi

necesară adăugarea în tabelul furnizori a altor informaţii (cont bancar, persoana de contact, număr

de fax etc.).

Schema structurală din figura 2.6 asigură bazei de date simplitate, neredundanţă,

distributivitate, extensibilitate şi flexibilitate, adică acele proprietăţi necesare unei structuri

moderne de date.

În cazul celui de-al doilea exemplu, gestiunea candidaţilor la admitere la o facultate se poate

realiza cu un singur tabel, candidati, având următoarele câmpuri:

Candidati (nrlegit, nume, sex, medie_bac, proba_conc, medie_admitere, admis_la, jud_domiciliu, op1, op2, op3, op4, op5, op6)

Comentarii

Identificarea fiecărei înregistrări se face prin numărul legitimaţiei de concurs a candidatului,

nrlegit, care este unic pentru fiecare candidat. Câmpurile op1, op2,…, op6 reprezintă denumirile

(sau codurile) specializărilor la care poate opta candidatul, în ordinea preferinţelor acestuia. Dacă

aceste câmpuri conţin coduri (ex. TECM – tehnologia construcţiilor de maşini), atunci în tabelul

candidati nu sunt memorate denumirile specializărilor şi ar fi necesar un alt tabel în care să fie

precizate acestea.

Se observă că tabelul candidati are relativ multe câmpuri, acest aspect putând crea dificultăţi

în prelucrarea ulterioară şi afişarea informaţiilor. Din acest punct de vedere, se recomandă

evitarea acestei variante şi separarea informaţiilor dintr-un tabel mare în tabele mai mici legate

prin relaţii specifice.

Pentru îmbunătăţirea structurii analizate, se propune o schemă structurală a bazei de date,

formată din 3 tabele, conform schemei prezentate în figura 2.7. Această schemă utilizează două

tabele principale, evidenţă candidaţi şi evidenţă opţiuni, care separă informaţiile referitoare la

candidaţi în două grupe, una cu informaţiile generale de admitere şi una cu opţiunile pe

specializări ale candidaţilor. Câmpurile care memorează opţiunile, optiune1, optiune2,…,

optiune6, conţin coduri specifice. Pentru identificarea denumirilor complete ale opţiunilor este

necesar un al treilea tabel, evidenţă specializări, care stabileşte corespondenţa între codul şi

denumirea fiecărei opţiuni şi care poate fi legat de celelalte tabele prin relaţii în funcţie de

necesităţi.

Tabelele evidenţă candidaţi şi evidenţă opţiuni sunt legate relaţional prin câmpul nrlegit.

Storm
Highlight
Storm
Highlight
Page 23: SGBD Access Curs 2005

23

Din schemele structurale prezentate în figurile 2.6 şi 2.7 se desprind câteva concluzii privind

regulile de proiectare a unei baze de date corecte şi eficiente:

� separarea informaţiilor în tabele distincte, pe baza dependenţei acestora la o anumită grupă (ex.produse, furnizori, facturi etc.);

� utilizarea câmpurilor cu coduri de identificare a înregistrărilor care sunt mai uşor de prelucrat de către sistemul informatic;

� utilizarea relaţiilor dintre tabele pentru legarea informaţiilor din acestea;

� evitarea tabelelor cu multe câmpuri care sunt mai greu de exploatat.

După cum se constată din cele prezentate anterior, proiectarea structurii optime a unei baze

de date este o activitate importantă şi, uneori, nu este simplă. O anumită temă se poate rezolva în

mai multe moduri, dar, de obicei, există numai unul care conferă eficienţă maximă prelucrării

informaţiilor. De aceea este necesară o analiză atentă, la început, a tuturor variantelor, şi alegerea

celei care respectă regulile de bază şi asigură proprietăţile specifice unei baze de date corecte.

Schemele structurale analizate în figurile 2.6 şi 2.7 au un anumit grad de distributivitate,

adică pot fi aplicate, cu modificări minime, şi altor colecţii de informaţii (de ex. gestiunea

produselor la o societate de comerţ, gestiunea personalului angajat într-o instituţie, memorarea

unei liste de persoane etc.).

EVIDENŢA CANDIDAŢI ADMITERE

Evidenţa candidaţi

nr.legit numele admis la punctaj nota la proba medie bac medie admitere proba de concurs judet domiciliu

Evidenţa specializari

cod specializare denumire specializare ordin

CANDIDATI

SPECIALIZARI

Evidenţa opţiuni

nr.legit optiune 1 optiune 2 … opţiune 6

OPTIUNI

Fig.2.7. Schema structurală a unei baze de date relaţionale pentru evidenţa candidaţilor la admitere la o facultate

Storm
Highlight
Storm
Highlight
Page 24: SGBD Access Curs 2005

24

Fig.2.8.

!!!!

2.3. Tabele. Creare structură, afişare înregistrări

Tabelele unei baze de date reprezintă obiectele în care sunt memorate colecţiile de date propriu-zise. Un tabel Access are o structură asemănătoare cu o foaie de calcul Excel, conţinând coloane, denumite câmpuri şi linii, denumite înregistrări (vezi cap.1.2).

Secţiunea tabelelor se activează prin apăsarea butonului Tables al coloanei Objects din fereastra principală a bazei de date (fig.2.5). Aspectul general al ferestrei secţiunii tabelelor este cel prezentat în figura 2.5.

Crearea unui tabel se poate face prin alegerea uneia dintre cele trei opţiuni disponibile afişate în fereastra secţiunii (fig.2.5):

1111. Creare tabel în fereastra de proiectare (Create table in Design view) – afişează fereastra de proiectare, fig.2.8. Această variantă permite definirea câmpurilor tabelului şi a proprietăţilor acestora, înainte de a introduce date (înregistrări) în tabel. Fereastra are mai multe zone:

• Field Name – definirea numelor câm-purilor tabelului;

• DataType – stabilirea tipului de dată (vezi cap.2.4) pentru fiecare câmp;

• Description – este opţională, poate conţine o descriere mai amănunţită a semnificaţiei datelor pentru fiecare câmp al tabelului;

• Field Properties – afişarea proprie-tăţilor unui câmp al tabelului, atunci

când acesta este selectat; conţine două pagini, General, în care sunt afişate proprietăţile câmpului şi Lookup, în care se poate configura un tip special de câmp (vezi cap.2.5).

Observaţii

Activarea zonelor ferestrei de proiectare se face prin „depunerea” prompterului de mouse în caseta de editare dorită şi introducerea de la tastatură a informaţiei necesare. Unele dintre casetele de editare pot să ofere o listă de opţiuni din care se poate alege cea potrivită.

Acest lucru este evidenţiat prin prezenţa unui buton cu săgeată în caseta respectivă, după cum se observă în figura alăturată, în cazul coloanei DataType. Apăsând acest buton, se deschide lista de opţiuni disponibile din care se poate alege cea dorită.

Lungimea maximă a numelui unui câmp este de 64 caractere. Programatorii profesionişti recomandă ca numele câmpurilor să nu fie prea lungi, dar, în acelaşi timp, să fie suficient de sugestive pentru tipul datelor memorate în ele (ex. den_pr pentru un câmp care memorează denumiri de produse, nr_fact pentru numere de facturi etc.). De asemenea, se recomandă ca numele tabelului să fie precedat de prefixul tbl pentru a identifica mai uşor tipul obiectului (ex.tblProduse pentru un tabel ce conţine nomenclatorul de produse).

Storm
Highlight
Storm
Highlight
Storm
Highlight
Page 25: SGBD Access Curs 2005

25

Fig.2.10. Zona de navigare

!!!!

2.2.2.2. Creare tabel utilizând asistenţa interactivă (Create table by using wizard) – permite crearea structurii unui tabel prin alegerea acesteia dintr-o bibliotecă pusă la dispoziţie de către sistem. Alegerea se face interactiv, într-o succesiune de ferestre în care utilizatorul poate alege dintre diferite opţiuni disponibile. Această variantă este utilă atunci când structura tabelului nu este foarte bine definită sau utilizatorul nu are experienţă în proiectarea acesteia.

3.3.3.3. Creare tabel prin introducerea directă a înregistrărilor (Create table by entering

data) – afişează fereastra înregistrărilor tabelului (fig.2.9), stabilind pentru tabel o structură predefinită cu un anumit număr de câmpuri (în fig.2.9, 10 câmpuri), având nume predefinite (Field1, Field2, …). După ce se introduce o înregistrare, se poate salva cu opţiunea de meniu File�Save (sau prin apăsarea butonului specific de pe bara superioară sau prin apăsarea combinaţiei de taste Ctrl+S), atribuind un nume structurii respective.

Observaţii

Fereastra de afişare a înregistrărilor are aspectul unui tabel de date, conţinând coloane (câmpurile) denumite Field1, Field2, … şi rânduri (înregistrările). Înregistrarea curentă – acea înregistrare pe care se află prompterul de mouse – este evidenţiată printr-un marcator – săgeata neagră – aflat în caseta de selectare gri de la începutul rândului (fig.2.9).

Deplasarea de pe un câmp pe altul se poate face cu ajutorul tastei Tab (înainte, de la stânga la dreapta) sau a combinaţiei de taste Shift+Tab (înapoi, de la dreapta la stânga) sau prin „depunerea” prompterului de mouse în caseta corespunzătoare a unui câmp sau înregistrare.

La salvarea structurii, câmpurile în care nu s-au introdus date vor fi anulate, structura păstrând numai acele câmpuri pentru care există valori introduse (de exemplu, dacă s-au introdus valori pe primele patru câmpuri, Field1,…Field4, atunci numai acestea vor fi salvate în structura tabelului).

La salvarea structurii, se solicită definirea unei chei primare a tabelului (vezi cap.1.2). Dacă nu se doreşte definirea acesteia se apasă butonul No. Dacă se apasă butonul Yes, atunci sistemul crează automat un câmp de tip Autonumber (vezi cap.2.4) care va fi cheia primară a tabelului.

Definirea unui câmp drept cheie primară a tabelului se face prin selectarea acelui câmp şi indicarea opţiunii de meniu Edit�Primary Key sau apăsarea butonului specific de pe bara cu butoane superioară.

Câmpurile, denumite implicit Field1, Field2, …, pot fi redenumite prin dublu-click de mouse în caseta de culoare gri în care este scris numele respectiv.

În partea inferioară a ferestrei de afişare a înregistrărilor se află zona de navigare de la o înregistrare la alta Record. Semnificaţia butoanelor este descrisă în figura 2.10.

înregistrarea următoare înregistrarea precedentă înregistrarea curentă ultima înregistrare

prima înregistrare înregistrare nouă

Fig.2.9.

Storm
Highlight
Storm
Highlight
Page 26: SGBD Access Curs 2005

26

Fig.2.11.

!!!!

Trecerea de la fereastra de afişarea a înregistrărilor tabelului (datasheet view) la fereastra de proiectare a structurii acestuia (design view) se poate face rapid cu ajutorul unui buton specific aflat pe bara cu butoane superioară. Aspectul butonului se modifică în funcţie de fereastra care este activă la un moment dat.

O altă variantă de creare a unui tabel este apăsarea butonului New (fig.2.5), acţiune care

afişează o fereastră de opţiuni, oferindu-se cinci moduri posibile de lucru (fig.2.11): 1.1.1.1. Datasheet View – creare tabel în fereastra de afişare a înregistrărilor (fig.2.9); 2.2.2.2. Design View – creare tabel în fereastra de proiectare a structurii (fig.2.8); 3.3.3.3. Table Wizard – creare tabel cu ajutorul asistenţei interactive, prin alegerea structurii dintr-o bibliotecă de exemple predefinite;

4.4.4.4. Import Table – creare tabel prin importul datelor din surse externe, care pot fi alte baze de date Access sau de alt tip (dBase, Lotus, Paradox, tip ODBC), foi de calcul tip Excel, fişiere în format HTML specifice sau fişiere text având un format specific; odată cu crearea structurii tabelului se importă şi datele conţinute în fişierul sursă sub formă de înregistrări; 5.5.5.5. Link Table – crearea unei legături spre un tabel de date extern; în fereastra Tables numele

tabelului respectiv este precedat de un marcator (săgeată) care indică faptul că acesta nu există practic în baza de date curentă, dar înregistrările pot fi accesate prin această legătură.

Observaţie

Pentru înţelegerea deplină a noţiunilor prezentate în continuare, se recomandă

parcurgerea exemplelor incluse în aplicaţia practică nr.1, cap.4.

Introducerea şi afişarea datelor

După crearea şi salvarea structurii tabelului, introducerea înregistrărilor se face în fereastra de afişare a acestora, deschisă prin apăsarea butonului Open al secţiunii Tables (fig.2.5), având numele tabelului respectiv selectat sau prin dublu-click de mouse pe numele tabelului. Dacă tabelul are un câmp cheie primară, înregistrările vor fi implicit afişate în ordine crescătoare după valorile acelui câmp. Această ordine poate fi schimbată în orice moment prin aplicarea unui alt criteriu de ordonare (vezi cap.2.6). Dacă tabelul se află într-o relaţie de legătură cu alt tabel al bazei de date (vezi cap.1.2), atunci înregistrările vor fi precedate de un buton având semnul +. Dacă se apasă acest buton, vor fi afişate înregistrările corespunzătoare din tabelul corespondent.

Exemplul 1

În baza de date a cărei structură este prezentată în fig.2.6, care va fi denumită Stocuri, afişarea înregistrărilor din tabelul Furnizori, împreună cu înregistrările corespondente din alte două tabele, Noterec şi Stocaprov, poate avea aspectul din figura 2.12.

Page 27: SGBD Access Curs 2005

27

Pentru înregistrarea referitoare la furnizorul SC BADR SA sunt afişate toate notele de recepţie întocmite pe baza facturilor de achiziţie de la acest furnizor (5 înregistrări corespondente în tabelul Noterec), iar pentru nota de recepţie cu numărul 20010012 sunt afişate produsele corespunzătoare intrate în stoc (2 înregistrări corespondente în tabelul Stocaprov).

• Adăugarea de noi înregistrări într-un tabel se face prin depunerea prompterului de mouse în ultimul rând gol, marcat cu * (asterisc) sau prin apăsarea butonului corespunzător din zona de navigare Record (vezi figura 2.10).

• Editarea valorii de câmp a unei înregistrări se face prin depunerea prompterului de mouse în câmpul respectiv şi efectuarea modificărilor dorite cu ajutorul tastaturii. Principiile de editare sunt aceleaşi ca şi la celelalte aplicaţii MS Office (Word, Excel).

• Ştergerea unei înregistrări se face prin selectarea acesteia pe caseta gri din stânga rândului corespunzător şi alegerea uneia dintre următoarele variante: apăsarea butonului Cut de pe bara cu butoane superioară, selectarea opţiunii de meniu Edit�Delete/Delete Record sau apăsarea tastei Delete a tastaturii; se solicită o confirmare a ştergerii pentru că înregistrarea ştearsă nu mai poate fi recuperată; dacă înregistrarea respectivă are înregistrări corespondente în alte tabele legate prin relaţii şi nu este activată opţiunea de ştergere automată (vezi cap.2.5), atunci acţiunea nu se poate efectua şi este afişat un mesaj specific.

• Adăugarea de noi câmpuri sau ştergerea unor câmpuri se recomandă a fi efectuate în fereastra de proiectare a structurii tabelului (Design); totuşi, aceste acţiuni sunt posibile şi în fereastra de afişare a înregistrărilor. Pentru adăugarea unui câmp nou (coloană) se selectează câmpul în a cărei parte stângă se doreşte adăugarea noului câmp prin click de mouse în caseta gri cu numele câmpului şi se alege opţiunea de meniu Insert�Column sau opţiunea Insert Column din meniul contextual obţinut prin click buton dreapta mouse.

Fig.2.12. Fereastra de afişare a înregistrărilor în tabele legate prin relaţii

Page 28: SGBD Access Curs 2005

28

Fig.2.13. Fereastra Fonts

Fig.2.15.

Pentru ştergerea unui câmp, se selectează coloana corespunzătoare şi se alege opţiunea de meniu Edit�Delete Column sau opţiunea Delete�Column din meniul rapid.

• Modificarea aspectului de afişare a înregistrărilor cuprinde o serie de posibilităţi, după cum urmează:

� modificarea fontului de text, a culorii textului, fondului pe care este scris acesta şi grilei de separare a câmpurilor; se realizează prin selectarea opţiunilor de meniu Format �

Font / Datasheet. Cu ajutorul opţiunii Font se alege tipul, stilul, mărimea şi culoarea fontului de afişare a caracterelor (fig.2.13). În exemplul considerat în fig.2.13, s-a ales fontul Garamond, stilul Bold, mărimea (Size) de 12, culoarea Black, fără subliniere (caseta Underline inactivă). Cu ajutorul opţiunii Datasheet se alege aspectul de afişare a fondului pe care sunt afişate înregistrările (fig.2.14). În exemplul din figura 2.14 s-au ales opţiunilor implicite, adică aspectul Flat, culoarea White a fondului, culoarea Black a grilei de separaţie, afişarea liniilor verticale şi orizontale ale grilei (casetele Horizontal şi Vertical sunt active) şi tipul Solid pentru toate liniile de separaţie afişate. Opţiunea Direction, cu valoare implicită Left-to-right indică ordinea de afişare a câmpurilor.

� modificarea ordinii de afişare a câmpurilor; afişarea câmpurilor se face implicit, de la stânga la dreapta, în ordinea în care ele au fost definite în structura tabelului; această ordine poate fi schimbată dacă este necesar. Pentru mutarea unui câmp, se selectează coloana corespunzătoare, prin click de mouse pe numele câmpului (coloana este afişată în video invers), apoi se selectează din nou coloana respectivă prin click de mouse pe numele câmpului şi se mută prin drag&drop – tragere&depunere în locul dorit.

� redimensionarea coloanelor şi a rândurilor; modificarea lăţimii unei coloane se face prin selectarea acesteia şi alegerea opţiunii de meniu Format� Column Width care afişează o fereastră de dialog (fig.2.15); lăţimea coloanei se poate indica în caseta de editare, se poate alege opţiunea Standard Width (valoare implicită) sau Best Fit (potrivire după dimensiunea celui mai lung şir de

caractere al câmpului respectiv). Modificarea înălţimii rândurilor se face prin alegerea

Fig.2.14. Fereastra Datasheet

Page 29: SGBD Access Curs 2005

29

!!!!

Fig.2.16 Fereastra Unhide Columns

opţiunii de meniu Format� Row Height; înălţimea se poate indica în caseta de editare sau se poate alege opţiunea implicită Standard Height; înălţimea aleasă se aplică pentru toate înregistrările din tabel;

� îngheţarea câmpurilor; este o acţiune care determină menţinerea pe loc a câmpurilor selectate în timpul parcurgerii celorlalte câmpuri. Acţiunea se realizează prin selectarea simultană a câmpurilor respective şi apoi a opţiunii de meniu Format�Freeze Columns. Câmpurile selectate se vor poziţiona primele din stânga şi vor rămâne pe loc la parcurgerea către dreapta a celorlalte câmpuri. Anularea acţiunii se face cu opţiunea de meniu Format�Unfreeze All Columns;

� ascunderea câmpurilor; este o acţiune care determină dispariţia câmpurilor selectate din fereastra de afişare a înregistrărilor unui tabel (datasheet view). Acţiunea se realizează prin selectarea câmpurilor respective şi apoi a opţiunii de meniu Format�Hide Columns. Reafişarea câmpurilor se face cu opţiunea de meniu Format�Unhide Columns care afişează o fereastră conţinând numele câmpurilor tabelului precedate de o casetă de validare (fig.2.16); câmpurile care au caseta de validare marcată vor fi afişate, celelalte vor rămâne ascunse.

Observaţii

La închiderea ferestrei de afişare a înregistrărilor unui tabel, dacă s-au efectuat modificări ale aspectului de afişare sau a structurii tabelului, se afişează o fereastră de dialog cu opţiune de salvare a modificărilor efectuate. Introducerea unor noi înregistrări în tabel sau modificarea valorilor înregistrărilor curente sunt salvate automat la ieşirea din câmpul respectiv, nefiind necesară salvarea expresă a acestora.

2.4. Tipuri de date. Proprietăţile câmpurilor

Datele care se introduc în fiecare câmp al unui tabel al bazei de date pot fi de diferite tipuri (numerice, şiruri de caractere, logice etc.). Fiecărui câmp al tabelului i se defineşte un anumit tip de dată care este acelaşi pentru toate înregistrările. Alegerea tipului de dată se face în fereastra de proiectare a tabelului (design view), în coloana Data Type (vezi fig.2.8). În tabelul nr.1 sunt prezentate tipurile de date utilizabile în Access, împreună cu caracteristicile acestora. Aceste caracteristici (Field Size şi Format) fac parte din grupul proprietăţilor câmpurilor şi se configurează în zona Field Properties (vezi fig.2.8). Proprietăţile unui câmp pot fi grupate pe două categorii: proprietăţi generale, care sunt asociate tuturor tipurilor de date posibile şi proprietăţi specifice, care sunt asociate numai anumitor tipuri de date. În continuare sunt descrise cele mai importante dintre aceste proprietăţi.

Storm
Highlight
Page 30: SGBD Access Curs 2005

30

Tabelul nr.1 – Tipuri de date disponibile în Access Denumirea

tipului de dată Caracteristici principale Observaţii

TextTextTextText

Şir de caractere. Poate conţine litere, cifre şi alte caractere speciale (@, &, %, *, ? etc.). Poate conţine şi spaţii. Poate avea lungimea maximă de 255 caractere. I se poate indica o lungime maximă – Field Size.

Se prelucrează cu funcţii specifice incluse în biblioteca Access (Asc, Chr, Len, Ltrim, Rtrim, Left, Mid, Right etc.) sau cu operatorul de concatenare (& sau +)

MemoMemoMemoMemo Şir de caractere. Similar tipului Text. Poate avea lungimea maximă de 65.535 caractere.

NumberNumberNumberNumber

Numeric. Există posibilitatea alegerii unui subtip de dată numerică (Field Size): Byte: numere întregi de la 0 la 255 Integer: numere întregi de la -32.768 la +32.768 Long Integer: numere întregi de la -2.147.483.648 la +2.147.483.648 Single: numere reale cu simplă precizie Double: numere reale cu dublă precizie Replication ID: identificator unic atribuit

Se prelucrează cu operatorii aritmetici uzuali (+, –, *, /), cu operatorii relaţionali (<, >) sau cu funcţiile matematice incluse în biblioteca Access (Abs, Sgn, Fix, Sin, Cos, Tan, Exp, Sqr etc.)

Date/TimeDate/TimeDate/TimeDate/Time

Dată/oră. Reprezintă date calendaristice şi/sau oră. Date calendaristice valide – între 1.01.100 şi 31.12.9999. Nu are lungime definită (Field Size). Poate fi afişată în diferite formate (Format). Ex. short date – 19/06/04 short time – 17:34

Se prelucrează cu funcţii specifice incluse în biblioteca Access (Day, Month, Year, Datepart etc.)

CurrencyCurrencyCurrencyCurrency

Numeric cu simbol monetar ataşat. Este de tip Single, dar cu până la 4 cifre la dreapta simbolului zecimal. Simbolul monetar ataşat este cel implicit al sistemului Windows. Ex. 240.500,75 Lei

Se prelucrează cu funcţii matematice uzuale. Valorile negative sunt prezentate între paranteze.

AutoNumberAutoNumberAutoNumberAutoNumber

Numeric. Valoare unică, atribuită automat de Access fiecărei înregistrări. Poate fi de tip Long Integer sau Replication ID. Valorile se pot atribui secvenţial sau aleator.

Se utilizează drept cheie primară. Nu poate fi actualizat.

Yes/NoYes/NoYes/NoYes/No

Logic. Are două valori posibile – True sau False (1 sau 0, da sau nu, deschis sau închis etc.). Se utilizează pentru câmpuri care nu pot avea decât una din cele două valori.

Se prelucrează cu operatorii logici (Not, And, Or).

OLE ObjectOLE ObjectOLE ObjectOLE Object

Obiect integrat. Poate fi o imagine, o foaie de calcul Excel, un fişier sunet, video etc., create cu aplicaţii Windows care conţin suport OLE – Object Linking&Embedding.

Linked object – obiect integrat, cu păstrarea legăturii cu originalul Embedded object – obiect integrat, fără păstrarea legăturii cu originalul

HyperlinkHyperlinkHyperlinkHyperlink

Hiperlegătură. O cale spre un fişier situat pe calculatorul propriu, pe alt calculator sau pe internet. La selectare, Access se deplasează la destinaţia indicată, executând aplicaţia găsită acolo.

Lookup Lookup Lookup Lookup WizardWizardWizardWizard

Căutare interactivă. Valoarea câmpului se selectează dintr-o listă de valori disponibile care se obţin fie dintre cele existente într-un alt câmp, fie dintr-o listă de valori definite de către utilizator.

Vezi aplicaţia nr.2, cap.4.

Storm
Highlight
Page 31: SGBD Access Curs 2005

31

!!!!

� Field Size dimensiunea câmpului; se poate configura pentru tipurile Text, Memo, Number şi Autonumber; există valori implicite care se pot păstra dacă sunt convenabile sau se pot schimba în funcţie de necesităţi

� Format formatul de afişare a datelor; este o proprietate generală; se poate selecta un format predefinit dacă există sau se pot genera formate personalizate (vezi paragraful următor)

� Input Mask şablon (model, mască) de control; controlează formatul introducerii datelor; este o proprietate generală (cu excepţia Autonumber); se configurează de către utilizator cu ajutorul unor caractere special rezervate sau cu ajutorul asistenţei interactive – Input Mask Wizard (pentru detalii, vezi paragraful următor)

� Caption etichetă de cîmp; proprietate generală; dacă există, în fereastra de afişare a înregistrărilor (datasheet view), se afişează în locul numelui câmpului (field name) ca denumire a coloanei corespunzătoare

� Default Value valoare prestabilită; proprietatea generală; valoare care se introduce automat în câmp la fiecare nouă înregistrare

� Validation Rule regulă de validare; permite verificarea datelor introduse cu ajutorul unor restricţii matematice ; se poate genera manual sau cu ajutorul asistenţei interactive (Expresion Builder – Constructorul de expresii)

� Validation Text mesaj de atenţionare; este afişat într-o casetă de dialog atunci când datele introduse nu respectă regula de validare (Validation Rule)

� Required solicitare valoare; proprietate generală; dacă este activă (Yes), este obligatorie introducerea unei valori în câmpul respectiv; dacă este inactivă (No) se poate introduce o valoare sau se poate lăsa câmpul gol

� Indexed câmp indexat/neindexat; proprietate generală; indexarea permite o găsire mai rapidă a informaţiei de către Access la tabele cu mii de înregistrări, pe baza unor algoritmi proprii; este activată automat pentru câmpurile cheie primară

Observaţie

Pentru înţelegerea deplină a semnificaţiei proprietăţilor câmpurilor, se recomandă

parcurgerea exemplelor incluse în aplicaţia practică nr.2, cap.4. Stabilirea formatului de afişare a datelor (Format)

Formatul de afişare a datelor în fereastra de afişare a înregistrărilor unui tabel (datasheet view) se poate configura de către utilizator, fie prin alegerea dintr-o listă de formate disponibile, asociate fiecărui tip de dată, fie prin indicarea formatului dorit, la proprietatea Format a câmpului respectiv. Indicarea unui format personalizat se face prin combinarea unor caractere de control, special destinate acestui scop. Cele mai des utilizate dintre aceste caractere, precum şi câteva exemple de formate personalizate sunt prezentate în continuare.

Storm
Highlight
Storm
Highlight
Page 32: SGBD Access Curs 2005

32

Simbolul Semnificaţia

. Separator zecimal. Dacă la Regional Settings in Windows Control Panel este stabilit sistemul United States, atunci simbolul este punct zecimal.

, Separator de mii.

0 Simbol pentru cifre. Se afişează o cifră (dacă există) sau 0.

# Simbol pentru cifre. Se afişează o cifră (dacă există) sau nimic.

$ Simbol monetar. Afişează caracterul "$" acolo unde este plasat.

< Converteşte literele textului în litere mici

> Converteşte literele textului în majuscule

% Simbol procentual. Valoarea se înmulţeşte cu 100 şi se ataşează simbolul procentual %.

“lei” Simbol text. Orice text între ghilimele “ “ ataşat formatului va fi afişat la fiecare valoare a câmpului respectiv

Exemple de formate personalizate

Tipul de date Formatul personalizat Modul de afişare a datelor

000

005

018

145

0.00 12.50 12.00

#,### 1,200 sau 12,500 sau 12,500,000

#,###.00 1,200.00 sau 12,500.50

Pentru date de tip numeric (Number, Autonumber etc.)

#,###" lei" 126,500 lei

dd/mm/yy 12/03/04

08/03/04

Pentru date calendaristice (Date/Time) dd/mmm/yyyy 12/Mar/2004

< Afişează tot textul cu litere mici Pentru date de tip Text sau Memo

> Afişează tot textul cu majuscule

Configurarea unui şablon de control la introducerea datelor (Input Mask)

Access permite controlul dinamic al valorilor introduse de către utilizator în înregistrările tabelelor prin indicarea unui şablon de control (model de caractere, mască de intrare – în traducere simplă). Configurarea unui şablon de control se face prin combinarea unor caractere de control special destinate acestui scop, în cadrul proprietăţii Input Mask a câmpurilor.

Cele mai des utilizate dintre caracterele de control, precum şi câteva exemple de şabloane sunt prezentate în continuare.

Storm
Highlight
Page 33: SGBD Access Curs 2005

33

Caracterul de control

Efectul asupra datelor care se introduc

0 Permite numai o cifră

# Permite orice cifră, semnele + sau – şi spaţii

L Permite numai o literă

? Permite numai o literă sau nimic

A Permite numai o literă sau cifre

a Permite orice literă sau cifră sau nici una

& Permite orice caracter sau un spaţiu

C Permite orice caracter sau un spaţiu sau nimic

< Converteşte literele următoare în litere mici

> Converteşte literele următoare în litere mari

\ Adaugă automat caracterul care urmează

! Aliniază datele la dreapta

Exemple de şabloane de control Exemplele următoare fac referire la nişte câmpuri incluse în baza de date Stocuri a cărei structură este prezentată şi descrisă în fig.2.6, pag.22.

Tipul de date Şablonul de control Observaţii

Stocuri.mdb Tabelul Produse Câmpul Cod produs

00000

Valorile codului produsului pot fi stabilite ca o succesiune de cinci cifre Ex. 11004 Şablonul nu permite decât introducerea unei combinaţii de cinci cifre

Stocuri.mdb Tabelul Furnizori Câmpul Nr.telefon

\000\-000000

Numerele de telefon în Romania respectă formatul 0000-000000. Şablonul introduce automat primul 0 şi cratima de despărţire – dintre prefix şi număr şi nu permite decât introducerea unei combinaţii de cifre

Stocuri.mdb Tabelul Noterec Câmpul Nr.factură >LLLLL0000000

Numerele de facturi în Romania respectă formatul LLLLL0000000, adică 5 litere urmate de 7 cifre. Semnul > transformă literele în majuscule

Page 34: SGBD Access Curs 2005

34

2.5. Relaţiile dintre tabele. Creare şi configurare

În capitolul 1.2 s-au prezentat câteva noţiuni teoretice referitoare la modelul relaţional de

bază de date (SGBD-R). Un model relaţional de bază de date cuprinde tabele cu înregistrări între care se stabilesc

relaţii de asociere, a căror existenţă este guvernată de un set de reguli precise. O relaţie se stabileşte între două tabele ale bazei de date, prin intermediul a două câmpuri, câte unul din fiecare tabel, adică este de tip binar (câmp – câmp). Microsoft Access este bazat pe modelul relaţional de bază de date, permiţând crearea şi configurarea relaţiilor între tabelele componente. Proiectarea structurii unei baze de date (tabele şi câmpuri) în Access trebuie să ţină seama de principiile modelului relaţional. În capitolul 2.2 s-au prezentat principiile de proiectare a două structuri de baze de date, Stocuri şi Candidaţi, respectând trei reguli fundamentale:

� Regula nr.1 – separarea corectă a informaţiilor pe câmpuri � Regula nr.2 – utilizarea cheilor primare pentru identificarea unică a înregistrărilor � Regula nr.3 – utilizarea legăturilor între tabele (relaţii) pentru regăsirea corectă a

informaţiilor dependente

Relaţiile între tabele asigură o eficienţă ridicată a administrării bazei de date (introducere, afişare, modificare/actualizare a informaţiilor). Crearea şi configurarea relaţiilor între tabele în Access se efectuează în fereastra relaţiilor (relationships), accesibilă cu opţiunea de meniu Tools�Relationships sau prin apăsarea butonului specific de pe bara cu butoane superioară. Aducerea tabelelor în fereastra relaţiilor se face cu opţiunea de meniu Relationships�Show Table sau prin apăsarea butonului specific de pe bara cu butoane superioară.

În figura 2.17 este prezentată fereastra relaţiilor cu structura acestora în cazul bazei de date Stocuri.

Crearea unei relaţii între două tabele ale bazei de date Access necesită executarea următorilor paşi:

Fig.2.17 Fereastra relaţiilor Fig.2.18 Fereastra de configurare a unei relaţii de tip 1–N

Page 35: SGBD Access Curs 2005

35

1. Deschiderea ferestrei relaţiilor (relationships) şi aducerea celor două tabele în cadrul acesteia; 2. Selectarea cu ajutorul mouse-ului a câmpului din primul tabel (membrul stâng al relaţiei) şi

“depunerea” prin drag&drop peste câmpul corespunzător din cel de-al doilea tabel (membrul drept al relaţiei), în acest moment se deschide o fereastră de configurare a proprietăţilor relaţiei (Edit Relationships, vezi fig.2.18)

3. Dacă cele două tabele conţin înregistrări, Access le va analiza şi va sugera tipul relaţiei potrivite, aşteptând configurarea celorlalte proprietăţi (Enforce Referential Integrity şi Join Type)

4. După configurarea proprietăţilor se validează relaţia prin apăsarea butonului Create; în fereastra relaţiilor, relaţia creată va fi vizualizată printr-o linie de legătură între cele două câmpuri, marcată la capete în funcţie de tipul relaţiei (1→1, 1→∞ etc.).

Opţiunea Enforce Referential Integrity permite stabilirea unei relaţii de „integritate

referenţială” între cele două tabele, adică evitarea anomaliilor de introducere a datelor (nu se vor accepta înregistrări în tabelul al doilea (tabelul corelat) dacă valoarea câmpului de legătură al acestora nu există în primul tabel (tabelul primar) şi a celor de modificare/actualizare (modificarea valorii de câmp a unei înregistrări în tabelul primar se transmite automat şi valorilor câmpului de legătură din tabelul corelat). Modul de lucru al opţiunii are două subopţiuni:

� Cascade Update Related Fields a cărei activare determină transmiterea automată a modificării valorii câmpului de legătură a unei înregistrări din tabelul primar la înregistrările corespunzătoare din tabelul corelat

� Cascade Delete Related Records a cărei activare determină ştergerea automată a înregistrărilor corespunzătoare din tabelul corelat dacă se şterge o înregistrare din tabelul primar.

Exemple În baza de date Stocuri sunt necesare 5 relaţii de tipul 1→N (1→∞) între tabele pentru o funcţionare corespunzătoare a acesteia. În figura 2.17 sunt prezentate aceste relaţii, descrise în cele ce urmează:

� între tabelele Produse şi StocAprov pe câmpul Cod produs ; � între tabelele Produse şi StoConsum pe câmpul Cod produs ; � între tabelele Noterec şi StocAprov pe câmpul Nr.notă recepţie ; � între tabelele Furnizori şi Noterec pe câmpul Cod furnizor ; � între tabelele BonConsum şi StoConsum pe câmpul Cod bon.

În baza de date Candidaţi sunt necesare 2 relaţii, una de tipul 1→N (1→∞) şi alta de tipul 1→1 între tabele, descrise în continuare:

� între tabelele Specializări şi Candidati pe câmpurile Cod specializare şi, respectiv, Admis la, relaţie de tipul 1→N;

� între tabelele Candidati şi Opţiuni pe câmpul Nr.legit, relaţie de tipul 1→1.

Page 36: SGBD Access Curs 2005

36

!!!!

2.6. Afişarea selectivă şi ordonarea înregistrărilor

În fereastra de afişare a înregistrărilor unui tabel (datasheet view), acestea sunt afişate în

mod implicit în ordine crescătoare după valorile câmpului cheie primară al tabelului. Totodată, sunt afişate toate înregistrările conţinute în tabelul respectiv.

Dacă un tabel al bazei de date conţine sute de înregistrări, găsirea unor anumite informaţii este dificilă dacă acest lucru se realizează prin parcurgerea înregistrărilor una după alta. Access oferă, pentru simplificarea căutării, două soluţii şi anume:

• Căutarea unei anumite informaţii cu opţiunea FindFindFindFind; • Afişarea selectivă (filtrarea) înregistrărilor cu opţiunea FilterFilterFilterFilter.

La un moment dat, utilizatorul poate avea nevoie de afişarea înregistrărilor într-o anumită ordine, diferită de cea implicită (crescătoare după valoarea cheii primare). Access asigură această posibilitate prin ordonarea înregistrărilor după valorile unuia sau a mai multor câmpuri ale tabelului respectiv, cu opţiunea SortSortSortSort.

Căutarea unei informaţii în baza de date

Căutarea şi găsirea unei anumite informaţii într-un tabel al bazei de date se face cu opţiunea de meniu Edit�Find, sau prin apăsarea butonului specific de pe bara cu butoane superioară. Se afişează o casetă de dialog în care se descriu opţiunile de căutare (fig.2.19):

• casetele de editare: Find What: se scrie informaţia care se doreşte a fi găsită Look In: se indică locul de căutare dorit Match: Any Part of Field / Whole Field / Start of Field – potrivire

şir de caractere dorit cu valoarea câmpului în orice parte a câmpului / cu întreaga valoare / la începutul valorii câmpului

Search: Up / Down / All – căutare de la înregistrarea curentă înapoi / înainte / în toate înregistrările

• caseta de validare: Match Case: potrivire la majuscule

Observaţie

Câmpul / înregistrarea curentă sunt cele pe care se află prompterul la un moment dat, în fereastra de afişare a înregistrărilor (datasheet view). Execuţia căutării se face prin apăsarea butonului Find Next care afişează succesiv găsirea valorii cerute în diferite înregistrări.

Fig.2.19 Casetă de dialog Find Fig.2.20 Casetă de dialog Replace

Page 37: SGBD Access Curs 2005

37

!!!!

Caseta de dialog Find este asociată cu a doua casetă de dialog, denumită Replace – fig.2.20 – care oferă posibilitatea înlocuirii unor valori introduse cu altele dorite de utilizator. Semnificaţia opţiunilor este următoarea :

• Find What: valoarea care se doreşte a fi înlocuită • Replace With: noua valoare care o va înlocui pe cea anterioară • Look In, Match, Search: semnificaţii identice cu cele ale casetei Find • butonul Replace: înlocuieşte câte o valoare găsită succesiv • butonul Replace All: înlocuieşte toate valorile Find What, găsite în tabelul curent, cu cea

indicată la Replace With Afişarea selectivă a înregistrărilor cu ajutorul filtrelor

Într-un tabel al bazei de date, afişarea selectivă înseamnă afişarea numai a anumitor înregistrări care au o proprietate comună – valoare comună a unuia sau a mai multor câmpuri. Acţiunea se realizează cu ajutorul opţiunii de meniu Records�Filter şi alegerea unei posibilităţi dintre cele disponibile sau prin apăsarea unuia dintre butoanele specifice de pe bara cu butoane superioară.

Filter By Selection Filter By Form

Apply Filter Opţiunea Filter are mai multe posibilităţi de aplicare, dintre care cele mai importante sunt următoarele două:

• Filter By Selection: afişare selectivă după valoarea comună a unui singur câmp, care se indică prin depunerea prompterului pe valoarea respectivă la una dintre înregistrările care o conţin;

• Filter By Form: afişare selectivă după valorile comune ale mai multor câmpuri, care se indică prin selecţie într-un formular special destinat. Aplicarea filtrului se face prin apăsarea butonului Apply Filter, iar înlăturarea acestuia prin apăsarea aceluiaşi buton, acum cu semnificaţia Remove Filter.

Observaţie

Selecţia înregistrărilor cu ajutorul filtrelor, în fereastra de afişarea a acestora (datasheet view) este cea mai simplă acţiune de selecţie care se poate aplica înregistrărilor unui tabel. Selecţia mai complexă a înregistrărilor dintr-unul sau mai multe tabele ale bazei de date, în care se pot utiliza şi funcţii specifice se realizează prin interogări (vezi cap.2.9). Ordonarea înregistrărilor

Afişarea înregistrărilor dintr-un tabel al bazei de date în fereastra Datasheet view se poate face într-o anumită ordine, după valorile unuia sau a mai multor câmpuri, în funcţie de necesităţile utilizatorului. Această acţiune se realizează cu ajutorul opţiunii Records�Sort şi alegerea uneia dintre posibilităţi, Sort Ascending – ordonare crescătoare sau Sort Descending – ordonare descrescătoare. Acţiunea se poate realiza şi prin apăsarea unuia dintre butoanele corespunzătoare de pe bara cu butoane superioară.

Dacă ordonarea se face numai după valorile dintr-un singur câmp al tabelului (de ex. ordonare alfabetică după nume a unei liste de informaţii despre persoane), atunci se depune prompterul în câmpul respectiv şi se alege una dintre opţiunile de ordonare.

Page 38: SGBD Access Curs 2005

38

!!!!

Dacă ordonarea trebuie făcută după valorile a două sau mai multe câmpuri (de ex. ordonare alfabetică după localitate de domiciliu şi nume a unei liste de informaţii despre persoane, atunci cele două câmpuri trebuie să fie alăturate în fereastra de afişare a înregistrărilor, se selectează cele două câmpuri şi se aplică apoi una dintre opţiunile de ordonare.

Observaţii

Câmpurile după care se aplică ordonarea trebuie să fie aşezate de la stânga la dreapta în ordinea clasei de ordonare. Ordonarea se face în acelaşi fel (crescător sau descrescător) după toate câmpurile. Ordonarea în sensuri diferite după mai multe câmpuri se poate realiza numai în cadrul interogărilor – vezi cap.2.9.

Se pot ordona înregistrări după câmpuri de tip text, numeric sau data calendaristică. Schema de ordonare aplicată la un moment dat se poate memora (File�Save), astfel încât la

o afişare ulterioară a înregistrărilor din tabel, acestea să fie afişate în ordinea stabilită anterior.

2.7. Biblioteca de funcţii integrate Access

Prelucrarea informaţiilor cuprinse în tabelele unei baze de date presupune deseori şi calcule

matematice sau logice. Aceste calcule se fac cu operatorii matematici, logici etc. cunoscuţi, utilizând datele conţinute în tabelele bazei de date. Aceşti operatori se pot clasifica după cum urmează:

� operatori aritmetici: + + + + –––– * / ^ * / ^ * / ^ * / ^

� operatori relaţionali (de comparare): < > = <> <= >=< > = <> <= >=< > = <> <= >=< > = <> <= >=

� operatori logici: NOT AND ORNOT AND ORNOT AND ORNOT AND OR

� operatori de grupare: ( ( ( ( ))))

� operatori de concatenare: + &+ &+ &+ &

Access dispune de o bibliotecă de funcţii predefinite integrate – built-in functions – care se pot utiliza pentru prelucrarea informaţiilor de diferite tipuri (numerice, text, logice etc.) conţinute la un moment dat într-o bază de date. Valorile câmpurilor definite în formulare, rapoarte sau interogări pot fi rezultatul evaluării unor relaţii matematice în care să fie incluse şi funcţii predefinite. Editarea relaţiilor matematice se poate face direct de către utilizator dacă acesta are suficientă experienţă sau cu ajutorul asistenţei interactive, într-o fereastră de editare specifică – expression builder dialog box (fereastra constructorului de relaţii matematice). Atunci când în relaţiile matematice se utilizează valorile unor câmpuri existente în tabelele bazei de date, referirea la acestea se face cu sintaxa

[[[[nume_tabel]![nume_câmp]nume_tabel]![nume_câmp]nume_tabel]![nume_câmp]nume_tabel]![nume_câmp]

sau prin indicarea numai a numelui câmpului, dacă în baza de date sau în obiectul în care este creată relaţia matematică (formular, raport, interogare) există un singur câmp cu numele respectiv. Activarea ferestrei de editare a relaţiilor matematice cu ajutorul asistenţei interactive se face prin apăsarea butonului specific de pe bara cu butoane superioară.

Page 39: SGBD Access Curs 2005

39

!!!!

Exemplu

În baza de date Candidati (vezi schema din fig.2.7), media finală de admitere a candidaţilor, Medie_adm, s-a calculat ca medie ponderată dintre media la bacalaureat (30%) şi nota obţinută la proba de concurs (70%). Având în vedere că cele două valori sunt conţinute în câmpurile Medie_bac şi Nota_la_proba, sintaxa relaţiei matematice va fi următoarea:

medie_adm: [Medie_bamedie_adm: [Medie_bamedie_adm: [Medie_bamedie_adm: [Medie_bac]*0.3+[Nota_la_proba]*0.7c]*0.3+[Nota_la_proba]*0.7c]*0.3+[Nota_la_proba]*0.7c]*0.3+[Nota_la_proba]*0.7

În figura 2.21 este prezentată fereastra utilizată pentru editarea relaţiei matematice.

Funcţiile predefinite integrate în biblioteca Access sunt grupate pe categorii (vezi fig.2.21) în funcţie de tipurile de date pe care le pot prelucra. Cele mai importante dintre acestea sunt:

� funcţiile matematice – Math: prelucrează date de tip numeric

� funcţiile pentru şiruri – Text: prelucrează date de tip şir de caractere

� funcţiile calendaristică – Date/Time: prelucrează date de tip dată calendaristică / oră

� funcţiile globale – SQL Aggregate: prelucrează statistic seturi (mulţimi) de înregistrări.

Precizare

În capitolele următoare se vor prezenta câteva dintre funcţiile predefinite integrate, care se pot utiliza pentru prelucrarea informaţiilor din cele două baze de date exemplificate – Candidati şi Stocuri – pentru care sunt concepute şi aplicaţiile incluse în capitolul 4 al acestui curs. În anexa nr.1 de la sfârşitul cursului sunt prezentate cele mai uzuale funcţii predefinite integrate în biblioteca de funcţii Access.

Fig.2.21 Fereastra de editare a relaţiilor matematice

Page 40: SGBD Access Curs 2005

40

2.8. Proiectarea şi execuţia interogărilor

Interogările sunt obiecte ale bazei de date destinate prelucrării informaţiilor memorate. Interogările răspund necesităţilor utilizatorului de a afişa selectiv informaţii din baza de

date, de a le prelucra prin crearea unor noi câmpuri sau tabele sau de a modifica valori ale înregistrărilor existente.

Prin interogări, utilizatorii „administrează” baza de date – caută, prelucrează, actualizează informaţii – îndeplinind rolul principal pentru care aceasta a fost creată.

Interogările se crează şi se gestionează în secţiunea Queries. Există trei butoane disponibile, asociate celor trei acţiuni care se pot efectua în legătură cu o

interogare: • Execuţia interogării şi afişarea înregistrărilor – Open

• Deschiderea ferestrei de proiectare a unei interogări existente – Design

• Crearea unei noi interogări – New

În funcţie de scop, interogările se clasifică în două categorii:

� interogări de selecţie: de câmpuri, de înregistrări, cu câmp calculat, cu parametru, de tip global, de tip tabel sintetic

� interogări de acţiune: de creare tabel nou, de modificare valori în tabel existent

Crearea unei noi interogări. Fereastra de proiectare

Există două posibilităţi de a crea interogări, cu sau fără ajutorul asistentului interactiv: • Design View - crearea interogării în fereastra de proiectare, manual, de către

utilizator; • Simple Query Wizard - crearea unei interogări cu ajutorul asistentului interactiv, cu

excepţia interogărilor de tip tabel sintetic; • Crosstab Query Wizard - crearea unei interogări de tip tabel sintetic cu ajutorul

asistentului interactiv.

Fereastra de proiectare a unei interogări este prezentată în figura 2.22. Aceasta cuprinde două zone :

� zona tabelelor – conţine tabelele din care se doreşte extragerea înregistrărilor; dacă între tabele există relaţii, acestea vor fi vizualizate

� zona de proiectare – conţine o serie de rânduri specifice necesare descrierii interogării; se mai numeşte şi grilă de interogare.

Semnificaţia rândurilor din zona de proiectare este următoarea : � Field şi Table : numele câmpurilor şi a tabelului din care provin sau ale câmpurilor nou

create (calculate cu relaţii matematice) � Sort : ordonare după valorile din câmpul respectiv � Show : afişare sau nu a câmpului (casetă de validare) � Criteria : criteriul de selecţie a înregistrărilor � Total : apare la interogările de tip global şi precizează opţiunile de grupare sau de

operare statistică cu valorile din câmpul respectiv (Group By, Expression, Min, Max, Sum etc.)

Page 41: SGBD Access Curs 2005

41

Fig.2.23 Fereastra Datasheet a unei interogări

� Crosstab : apare la interogările de tip tabel sintetic, pentru precizarea atributului câmpului respectiv (Row Heading, Column Heading, Value)

Proiectarea unei interogări în Access se face vizual prin selectarea pe rând a tuturor opţiunilor şi prezentarea grafică a acestora. Acolo unde este necesar, Access furnizează şi asistenţă interactivă. Acest mod de proiectare este numit QBE – Query By Example (interogare prin exemplu) şi este mai uşor de folosit pentru utilizatorii cu experienţă minimă. De fapt, “în spatele” acestui mod de proiectare stă un limbaj de programare bazat pe un set de instrucţiuni standard [BAS 97, FOT 97], numit SQL - Structured Query Language. Acest limbaj a devenit un standard (1986) şi este integrat în toate sistemele informatice de gestiune a bazelor de date moderne.

După proiectarea interogării, aceasta se “execută” cu opţiunea de meniu Query�Run sau prin apăsarea butonului specific de pe bara cu butoane superioară. Execuţia afişează o fereastră similară cu cea de afişare a înregistrărilor unui tabel – Datasheet view – conţinând înregistrările care corespund criteriilor precizate. Există şi posibilitatea afişării setului de instrucţiuni SQL al interogării prin selectarea modului de afişare SQL View. Trecerea de la un mod de afişare la altul – Datasheet View, SQL View sau Design View se face cu ajutorul opţiunii de meniu View sau prin utilizarea butonului specific de pe bara cu butoane superioară, buton care îşi schimbă aspectul în funcţie de fereastra care este activă la un moment dat. În figurile 2.23 şi 2.24 sunt prezentate ferestrele Datasheet View şi SQL View pentru interogarea a cărei fereastră de proiectare – Design View – este prezentată în figura 2.31. Aspectul de afişare a înregistrărilor (font, dimensiune, culoare, etc.) este cel

Fig.2.22 Fereastra de proiectare a unei interogări

Page 42: SGBD Access Curs 2005

42

implicit al primului tabel adus în fereastra interogării. Acest aspect poate fi modificat şi memorat în interogare. Modificarea proprietăţilor câmpurilor se face în fereastra de proiectare a interogării, depunând prompterul în rândul Field al câmpului şi selectând din meniul contextual – click-dreapta de mouse – opţiunea Properties.

În continuare se prezintă principalele tipuri de interogări împreună cu câteva exemple pentru fiecare tip. Rezolvarea exemplelor este descrisă în cadrul aplicaţiilor nr.4 şi 5, din capitolul 4.

Interogări de selecţie de câmpuri

Sunt destinate afişării anumitor câmpuri din tabelele bazei de date. Valorile din câmpurile respective sunt afişate pentru toate înregistrările din tabele.

Opţional, se poate face ordonarea după unul sau mai multe câmpuri (rândul Sort). Prin execuţia interogării, în fereastra de afişare a rezultatelor – Datasheet View – vor apare

toate înregistrările din tabele, afişând valorile din câmpurile selectate.

Exemple

1. Afişarea în baza de date Candidaţi a următoarelor informaţii: nr.legitimaţie, numele şi prenumele candidatului, proba de concurs, prima optiune, judetul. Înregistrările trebuie afişate în ordine alfabetică, după numele candidaţilor

2. Afişarea în baza de date Stocuri a unor date despre facturile de aprovizionare, afişate în ordine cronologică: nr.factura, data facturii, denumire furnizor, telefon furnizor

Interogări de selecţie de înregistrări

Sunt destinate afişării selective a înregistrărilor din tabele, după anumite criterii de selecţie, precizate pe grila de înterogare, în rândul Criteria.

Interogările de acest tip sunt similare cu utilizarea filtrelor pentru tabele (vezi subcap.2.6), dar oferă mai multe posibilităţi de selecţie.

Opţional, se poate face ordonarea după unul sau mai multe câmpuri (rândul Sort). Prin execuţia interogării, în fereastra de afişare a rezultatelor vor apare înregistrările ale căror

valori de câmp respectă criteriul de selecţie. Pentru construcţia de relaţii matematice în rândul Criteria se utilizează operatorii aritmetici,

relaţionali, logici, de concatenare (+, &) sau funcţiile specifice de comparare (Is Null, Is Not Null, Like, In, Between). La construcţie se poate utiliza asistentul interactiv Expression Builder Wizard (vezi subcap.2.7).

Fig.2.24 Fereasta SQL a unei interogări – setul de instrucţiuni SQL

Page 43: SGBD Access Curs 2005

43

!!!!

Pentru construcţia criteriului de selecţie trebuie respectate câteva reguli care sunt prezentate în tabelul următor.

Reguli de formare a criteriului de selecţie

� Valorile de tip şir de caractere (Text) se introduc ca atare (Access adaugă automat ghilimele) – Ex. “tecm”

� Referirile la nume de câmpuri se includ între paranteze drepte, altfel se consideră şiruri de caractere (de tip Text) – Ex. [OP1] [denmat]

� Pentru selecţia înregistrărilor după anumite câmpuri, se pot utiliza constante predefinite, cum ar fi True sau False (pentru câmpuri de tip Yes/No)

� Pentru selecţia valorilor într-un anumit interval se utilizează operatorii de comparare:

< > <= >=

� Pentru utilizarea mai multor valori de selecţie simultan pe acelaşi câmp se folosesc operatorii logici Or sau And

� Funcţia Like se utilizează cu caractere de înlocuire (wildcard, joker)

* – înlocuieşte orice număr de caractere

? – înlocuieşte un singur caracter

� Funcţiile Is Null sau Is Not Null selectează înregistrările care nu au / au valoare în câmpul respectiv

� Funcţia In (val_1; val_2; …; val_n) selectează înregistrările ale căror valoare de câmp este una dintre valorile val_1, val_2, …, val_n

� Funcţia Between valoare1 and valoare2 selectează înregistrările ale căror valori de câmp se situează între valoare1 şi valoare2, exceptându-le pe acestea

Exemple

1. Afişarea în baza de date Candidaţi a candidaţilor admişi la o anumită specializare, în ordine alfabetică

• Se aplică o selecţie pe câmpul [admis], indicând codul specializării respective (ex.TECM); • Se indică ordonare crescătoare după valorile câmpului [nume].

Observaţie

Access nu este Case Sensitive (nu face diferenţa între litere mici şi majuscule în şirurile de caractere (TECM sau tecm sau Tecm).

2. Afişarea în baza de date Candidati a candidaţilor respinşi, în ordinea descrescătoare a mediilor finale de admitere

• Se aplică o selecţie pe câmpul [admis], utilizând funcţia Is Null; • Se indică ordonare descrescătoare după valorile câmpului [medf].

Page 44: SGBD Access Curs 2005

44

3. Afişarea în baza de date Candidaţi a candidaţilor admişi, al căror nume începe cu o anumită literă

• Se aplică o selecţie pe câmpul [nume], utilizând funcţia Like cu caracterul de înlocuire **** şi o selecţie pe câmpul [admis], utilizând funcţia Is Not Null;

• De exemplu, pentru selecţia candidaţilor ai căror nume începe cu litera B, sintaxa funcţiei va fi Like “Like “Like “Like “BBBB*”*”*”*”.

4. Afişarea în baza de date Candidati a candidaţilor care au fost admişi la prima opţiune din fişa de înscriere

• Se aplică o selecţie pe câmpul [admis], indicând egalitatea valorilor acestui câmp cu cele din câmpul [tblOptiuni]![op1].

5. Afişarea în baza de date Candidaţi a candidaţilor admişi care au obţinut media finală într-un anumit interval de valori

• Se aplică pe câmpul [admis] o selecţie a candidaţilor admişi cu funcţia Is Not Null; • Se aplică pe câmpul [medf] o selecţie cu funcţia Between val1 and val2, în care val1 şi val2 reprezintă limitele intervalului sau cu o relaţie de comparare de tipul

>>>>val1 and <val2val1 and <val2val1 and <val2val1 and <val2

6. Afişarea în baza de date Stocuri a unor date despre facturile de aprovizionare dintr-o anumită perioadă de timp

• Se aplică pe câmpul [datafact] o selecţie, utilizând funcţia Between,

Between #09/01/01# and #09/30/01#Between #09/01/01# and #09/30/01#Between #09/01/01# and #09/30/01#Between #09/01/01# and #09/30/01#

Obs. Valoarea de tip dată calendaristică se introduce în formatul implicit al sistemului Windows (în exemplul dat LL/ZZ/AN). Caracterul special #### (diez) nu trebuie introdus, el este adăugat automat atunci când se identifică o valoare de tip dată calendaristică. 7. Afişarea în baza de date Stocuri a facturilor neachitate

• Se aplică pe câmpul [achitat] o selecţie, utilizând valoarea False.

Interogări de selecţie cu câmp calculat

Sunt interogări în care se crează noi câmpuri ale căror valori sunt calculate cu relaţii matematice, utilizând valorile din câmpurile existente în tabelele bazei de date. Câmpurile calculate sunt create la execuţia interogării. Alături de câmpurile calculate se pot aduce pe grila de interogare câmpuri existente în tabelele bazei de date. Pot fi aplicate selecţii de înregistrări sau criterii de ordonare după oricare câmp.

La construcţia relaţiei matematice se pot utiliza funcţiile predefinite incluse în biblioteca Access (vezi anexa nr.1), a căror editare se poate face apelând asistentul interactiv Expression Builder. Sintaxa unui câmp calculat este următoarea:

nume_câmp: <relatie matematicnume_câmp: <relatie matematicnume_câmp: <relatie matematicnume_câmp: <relatie matematicaaaa>>>>

în care nume_câmp reprezintă un nume care se atribuie câmpului respectiv, iar <relatie matematica> reprezintă relaţia matematică de calcul al valorilor câmpului.

Page 45: SGBD Access Curs 2005

45

Exemple

1. Afişarea în baza de date Candidati a mediei finale de admitere ca un câmp calculat ca medie ponderată a valorilor din câmpurile [notap] – 70% (nota la probă) şi [mbac] – 30% (medie bacalaureat). Noul câmp, denumit [media], se calculează cu relaţia matematică:

media: [notap]*0.7 + [mbac]*0.3media: [notap]*0.7 + [mbac]*0.3media: [notap]*0.7 + [mbac]*0.3media: [notap]*0.7 + [mbac]*0.3 2. Crearea în baza de date Candidati a unui câmp ale cărui valori să fie Da sau Nu în funcţie de valoarea mediei finale [medf]; dacă media este mai mare sau egală cu 8,50, valoarea să fie Da, iar în celelalte cazuri să fie Nu.

Valorile ar putea fi utilizate pentru decizia privind acordarea bursei către studenţi. Se utilizează funcţia condiţională IIfIIfIIfIIf, cu sintaxa de mai jos:

bursa: IIf ([medf] >=8,50;bursa: IIf ([medf] >=8,50;bursa: IIf ([medf] >=8,50;bursa: IIf ([medf] >=8,50; “Da” “Da” “Da” “Da”;;;; ”Nu”) ”Nu”) ”Nu”) ”Nu”) 3. Afişarea în baza de date Stocuri a valorii aprovizionate pe fiecare produs sau factură pentru înregistrările din tabelul tblStocAprov. Valoarea se obţine prin înmulţirea valorilor câmpurilor [pret] şi [cantitate], utilizând relaţia matematică de mai jos:

ValAprov: [pret]*[cantitate]ValAprov: [pret]*[cantitate]ValAprov: [pret]*[cantitate]ValAprov: [pret]*[cantitate] 4. Afişarea în baza de date Stocuri a unor date din facturile de aprovizionare, în ordine cronologică, în funcţie de luna achiziţiei. Luna achiziţiei este inclusă în data facturii şi poate fi extrasă cu ajutorul unor funcţii predefinite – Month sau Datepart:

luna: Month([datafact])luna: Month([datafact])luna: Month([datafact])luna: Month([datafact])

luna: Datepart(“m”luna: Datepart(“m”luna: Datepart(“m”luna: Datepart(“m”;[datafact]);[datafact]);[datafact]);[datafact]) 5. Afişarea în baza de date Stocuri a preţului de achiziţie al produselor în euro, pe baza preţului în lei. Preţul în euro se calculează prin împărţirea preţului de aprovizionare în lei, [pret] din tabelul tblStocAprov, la cursul valutar lei/euro :

pret_euro: [pret] / 3pret_euro: [pret] / 3pret_euro: [pret] / 3pret_euro: [pret] / 37800780078007800

Interogări de selecţie cu parametru

Parametrul reprezintă o valoare variabilă, care este dată de către utilizator, într-o fereastră de dialog specifică, în momentul execuţiei interogării.

Parametrul se poate utiliza drept criteriu de selecţie de înregistrări sau în relaţii matematice care definesc câmpuri calculate.

Identificarea unui parametru se face printr-un mesaj specific între paranteze drepte [mesaj]. Mesajul va fi afişat în fereastra de dialog în care se solicită valoarea parametrului şi trebuie

să indice semnificaţia valorii care se introduce. Exemple

1. Afişarea în baza de date Candidaţi a candidaţilor admişi la o anumită specializare, fără a o preciza explicit, ci sub formă de parametru.

• Se aplică o selecţie pe câmpul [admis], indicând un mesaj specific în rândul Criteria, cum ar fi [[[[Introduceti codul specializariiIntroduceti codul specializariiIntroduceti codul specializariiIntroduceti codul specializarii]]]];

Page 46: SGBD Access Curs 2005

46

• La execuţia interogării se va solicita valoarea parametrului, într-o fereastră de dialog în care se afişează mesajul specific indicat, fig.2.25.

2. Afişarea în baza de date Candidaţi a candidaţilor admişi având media finală într-un interval precizat de către utilizator

• Se aplică pe câmpul [admis] o selecţie a candidaţilor admişi cu funcţia Is Not Null;

• Se aplică pe câmpul [medf] o selecţie cu funcţia Between val1 and val2, în care val1 şi val2 reprezintă limitele intervalului, în locul unor valori numerice se vor indica nişte mesaje specifice de forma

Between [Media minima] And [Media maxima]Between [Media minima] And [Media maxima]Between [Media minima] And [Media maxima]Between [Media minima] And [Media maxima] 3. Afişarea în baza de date Stocuri a preţului de achiziţie al produselor în euro, pe baza preţului în lei. Preţul în euro se calculează prin împărţirea preţului de aprovizionare în lei, [pret] din tabelul tblStocAprov, la cursul valutar lei/euro, care este definit ca un parametru:

pret_eurpret_eurpret_eurpret_euro: [pret] / o: [pret] / o: [pret] / o: [pret] / [Introduceti cursul LEI/EURO][Introduceti cursul LEI/EURO][Introduceti cursul LEI/EURO][Introduceti cursul LEI/EURO]

Interogări de selecţie de tip global

Interogările de tip global prelucrează informaţiile din tabelele bazei de date cu ajutorul unor opţiuni de tip global, similare funcţiilor de tip global (vezi anexa nr.1 – SQL Aggregate). Înregistrările sunt grupate prin selecţie, pe seturi, după valoarea comună a unor câmpuri (Group By) şi apoi se efectuează prelucrarea seturilor astfel create, după valorile din alte câmpuri, cu funcţiile de tip global (Count, Sum, Min, Max, Avg, Expression).

Interogarea de tip global se crează dintr-o interogare de selecţie, apăsând butonul ΣΣΣΣ de pe bara superioară; pe grilă apare rândul Total în care se aleg opţiunile de prelucrare pentru fiecare câmp. Exemple

1. Afişarea în baza de date Candidati a numărului de admişi pe specializări

• Se aduce de două ori câmpul [admis] pe grilă ; primul câmp este utilizat pentru gruparea înregistrărilor pe seturi în funcţie de valoarea câmpului, iar al doilea pentru prelucrarea seturilor cu funcţia globală Count.

2. Afişarea în baza de date Candidati a mediei minime şi maxime de admitere pe specializări

• Se utilizează câmpurile [admis] şi [medf], aplicând funcţiile globale Min şi, respectiv, Max.

3. Afişarea în baza de date Candidati a numărului de candidaţi după prima literă a numelui acestora

• Se utilizează un câmp calculat Litera: left([nume];1) pentru a grupa înregistrările pe seturi şi câmpul [legit], aplicând funcţia globală Count.

4. Afişarea în baza de date Stocuri a cantităţii totale aprovizionate / consumate pe produse

Fig.2.25

Page 47: SGBD Access Curs 2005

47

• Se utilizează câmpurile [codprod] şi [denprod] din tblProduse şi câmpul [cantitate] din tblStocAprov / tblStoConsum şi se aplică funcţia globală Sum pe câmpul [cantitate].

5. Afişarea în baza de date Stocuri a valorii totale de aprovizionare pe produse (facturi / furnizori)

• Se utilizează câmpurile [codprod] şi [denprod] din tblProduse şi un câmp calculat ValAprov:[cantitate]*[pret] şi se aplică funcţia globală Sum pe acest câmp;

• Se poate utiliza un câmp calculat cu relaţia ValAprov:Sum([cantitate]*[pret]) şi, pe rândul Total se alege opţiunea Expression.

Interogări de selecţie de tip tabel sintetic

Interogările de tip tabel sintetic sunt, de obicei, interogări de tip global care afişează rezultatul execuţiei într-un format specific, asemănător unui tabel de sinteză. O interogare de tip tabel sintetic trebuie să conţină cel puţin trei câmpuri (fig.2.26):

� Row Heading – un câmp ale cărui valori reprezintă antetul liniilor în tabelul de sinteză, pot exista mai multe câmpuri cu acest atribut – în fig.2.26 sunt două câmpuri;

� Column Heading – un singur câmp ale cărui valori reprezintă antetul coloanelor în tabelul de sinteză;

� Value – un singur câmp ale cărui valori reprezintă valorile celorlalte celule ale tabelului de sinteză.

O interogare de tip tabel sintetic se crează dintr-o interogare de tip global cu opţiunea de

meniu Query�Crosstab Query, configurând în mod corespunzător opţiunile rândului Crosstab al grilei de interogare. Exemple

1. Afişarea în baza de date Candidati a numărului de candidaţi, repartizaţi pe probele de concurs, pentru fiecare specializare

• Se utilizează câmpurile [op1] şi [proba] ;

Row Heading Column Heading

Value

Fig.2.26 Interogare de tip tabel sintetic – Crosstab Query

Page 48: SGBD Access Curs 2005

48

• Câmpul [proba] se utilizează de două ori, o dată drept antet de coloane – Column Heading – şi a doua oară drept valoare în celulele tabelului – Value – calculată cu funcţia globală Count;

• Fereastra de proiectare a interogării şi rezultatul execuţiei acesteia sunt prezentate în figura 2.27,a şi, respectiv, 2.27,b.

2. Afişarea în baza de date Stocuri a cantităţilor totale din fiecare produs, achiziţionate de la fiecare furnizor

• Se utilizează câmpurile [codprod] şi [denprod], [tblStocAprov]![cantitate] şi [denfur];

• Cantitatea totală se determină prin aplicarea funcţiei globale Sum pe câmpul [cantitate];

• Rezultatul execuţiei interogării este prezentat în fig.2.26;

• Absenţa unor valori din celulele tabelului afişat arată că produsul respectiv nu a fost achiziţionat de la furnizorul respectiv.

a. Fereastra de proiectare b. Rezultatul execuţiei interogării

Fig.2.27 Interogare de tip tabel sintetic în baza de date CANDIDAŢI

Page 49: SGBD Access Curs 2005

49

2.9. Proiectarea şi utilizarea formularelor

Formularele sunt obiecte ale bazei de date destinate introducerii şi/sau vizualizării într-o

formă specifică a datelor. Formularele sunt utile pentru operatorii mai puţin experimentaţi care trebuie să lucreze cu informaţiile din baza de date. În acest sens, formularele constituie o interfaţă mai accesibilă între operator şi baza de date.

Formularele afişează înregistrări din tabele sau interogări ale bazei de date sau asigură introducerea unor noi înregistrări în tabele.

Proiectarea şi gestionarea formularelor se face în secţiunea Forms. Asupra unui obiect de tip formular se pot executa trei acţiuni, corespunzătoare celor trei

butoane disponibile: • Deschidere (utilizare) formular existent – Open • Deschidere fereastră de proiectare formular existent – Design • Creare formular nou – New

Crearea unui nou formular. Elemente componente

Există mai multe posibilităţi de a crea formulare, dintre care cele mai utilizate sunt următoarele :

• Design View - creare formular în fereastra de proiectare; se recomandă utilizatorilor experimentaţi

• Form Wizard - creare formular cu ajutorul asistentului interactiv; varianta cea mai recomandată, atât pentru începători, cât şi pentru avansaţi

• AutoForm - creare automată formular simplu; limitată ca posibilităţi • Chart Wizard - creare formular cu grafice incluse, cu ajutorul asistentului interactiv

Fereastra de proiectare a unui formular este prezentată în figura 2.28.

Fig.2.28. Fereastra de proiectare a unui formular – Design View

Etichetă text

Casetă câmp

Etichetă text

Butoane comandă

Page 50: SGBD Access Curs 2005

50

Fig.2.29 Fereastra Properties

Un formular poate să conţină trei zone: Form Header – antetul formularului, Detail – zona câmpurilor şi Form Footer – subsolul formularului. Dintre acestea, zona Detail este obligatorie, celelalte fiind opţionale.

Zona Form Header este destinată, de obicei, unui titlu pentru formular şi includerea unor elemente informative (ex. numele emitentului, data sau ora curentă, nr.pagină, etc).

În zona Detail se introduc câmpurile tabelului ale căror valori trebuie afişate pentru fiecare înregistrare a acestuia. Zona cuprinde grupuri de entităţi formate din două elemente, o etichetă şi o casetă de câmp.

Zona Form Footer este destinată includerii unor elemente informative sau anumitor observaţii legate de utilizarea formularului. De asemenea, aici se pot include butoane de comandă pentru utilizarea formularului.

Fiecare entitate definită în formular (cum ar fi etichetele de text, casetele de câmp, butoanele de comandă etc), zonele acestuia precum şi formularul însuşi au anumite

proprietăţi specifice, configurabile de către utilizator. Afişarea acestora se face selectând entitatea şi alegând opţiunea Properties din meniul contextual afişat prin apăsarea butonului dreapta al mouse-ului. Se afişează o fereastră de dialog specifică (fig.2.29 – pentru o

casetă de câmp). Adăugarea de noi entităţi în formular se face prin selectarea acestora de pe bara cu butoane asociate Toolbox, care este afişată automat la deschiderea ferestrei de proiectare a formularului (dacă nu este afişată, se selectează opţiunea de meniu View�Toolbox).

Cele mai uzuale entităţi care pot fi incluse într-un formular sunt descrise în tabelul de mai jos.

Denumire entitate Buton

asociat pe Toolbox

Descriere

Label etichetă text

Text simplu care poate fi formatat (font, mărime, culoare etc). Poate servi ca titlu de formular sau ca etichetă (denumire) asociată unei casete de câmp

Text Box

casetă de câmp Casetă de câmp. Se asociază cu câmpuri ale căror

valori trebuie afişate/introduse. Poate fi formatată şi transformată în casetă tip listă simplă sau combinată

Combo Box

casetă listă pop-up Casetă listă pop-up (derulantă). Se poate ataşa unui

câmp ale cărui valori le afişează pentru toate înregistrările sub forma unei liste derulante

Page 51: SGBD Access Curs 2005

51

!!!!

(continuare) Denumire entitate Buton

asociat pe Toolbox

Descriere

List Box

casetă listă simplă Casetă listă simplă. Se poate ataşa unui câmp ale cărui

valori le afişează pentru toate înregistrările sub forma unei liste simple.

Command Button Buton comandă

Buton de comandă. La apăsare, se execută o anumită comandă asociată (închidere/deschidere obiect, căutare valori, parcurgere înregistrări etc).

Rectangle Element grafic dreptunghi. I se poate modifica tipul de linie, grosimea, culoarea.

Line Element grafic linie. I se poate modifica tipul de linie, grosimea, culoarea.

Subform

Buton de creare subformular. Se crează o legătură către un formular existent sau se crează interactiv un subformular care este utilizat în cadrul formularului principal.

Observaţii

Atunci când se adaugă o casetă de câmp (Text/Combo/List Box), ea este însoţită întotdeauna de o etichetă (Label). Dacă aceasta nu este necesară, poate fi ştearsă prin selectare şi apăsarea tastei Delete sau a butonului asociat de pe bara cu butoane superioară. Proprietăţile entităţilor conţinute în formulare

Aşa după cum s-a precizat anterior, toate entităţile cuprinse într-un formular, zonele acestuia precum şi formularul au o serie de caracteristici (proprietăţi) ale căror valori pot fi stabilite de către utilizator. Orice entitate inclusă în formular este cuprinsă într-o casetă imaginară, marcată de 8 pătrăţele negre, dintre care unul de dimensiuni mai mari, situat în colţul stânga sus – fig.2.30. Activarea casetei imaginare se face prin selectarea entităţii cu mouse-ul.

Prin indicarea cu mouse-ul a pătratului negru mai mare şi drag&drop (tragere&depunere), entitatea selectată poate fi mutată în cadrul formularului. Se observă că, în timpul mutării, indicatorul mouse-ului devine o palmă neagră.

Prin indicarea cu mouse-ul a unuia dintre celelalte pătrăţele negre şi drag&drop (tragere&eliberare), se pot modifica dimensiunile casetei imaginare, în cazul în care se observă că textul scris în ea nu se vede în totalitate. Dacă se execută dublu-click pe oricare dintre pătrăţelele negre, dimensiunile casetei se adaptează la dimensiunea textului astfel încât acesta să se vadă în totalitate – fig.2.31, cazul b.

Fig.2.30 Entitate selectată – caseta imaginară cu marcajele de selectare este activată

Page 52: SGBD Access Curs 2005

52

!!!!

În cazul casetelor de câmp care sunt însoţite de o etichetă de text, cele două entităţi sunt legate între ele şi se pot gestiona în grup sau separat – fig.2.32.

Observaţie

În cazul casetelor de câmp nu se recomandă dimensionarea casetei după lungimea textului scris în ea, care de obicei este numele câmpului, deoarece acesta poate fi mai mic decât lungimea unor valori ale câmpului respectiv, conţinute în înregistrările tabelului şi, în consecinţă, acele valori nu se vor afişa în totalitate. Cele mai importante dintre proprietăţile entităţilor care pot fi incluse în cadrul formularelor sunt descrise în cele ce urmează.

Pentru etichetele de text şi casetele câmpurilor: • modificarea aspectului: font de text, mărime, culoare, fond (Font Name, Size/Weight, Fore

Color, Back Style/Color, Border Style/Color etc.)

Pentru casetele câmpurilor: • sursa datelor afişabile în casetă: Control Source – dacă este un câmp din tabel/interogare,

este afişat numele acelui câmp, dacă este o relaţie matematică sau o funcţie integrată (vezi cap.2.7), atunci se afişează relaţia/funcţia.

• formatul de afişare a datelor: Format / Decimal Places • câmp editabil sau blocat: Locked – No/Yes • câmp accesibil/inaccesibil cu tasta Tab: Tab Stop – Yes/No • poziţia câmpului la parcurgere cu tasta Tab: Tab Index – 0, 1, 2, ş.a.m.d.

Pentru butoanele de comandă • afişare text pe buton: Caption • afişare imagine pe buton: Picture / Picture Type • asociere acţiune la apăsare buton: On click – [Event Procedure]

Pentru zonele formularului • stil şi culoare fond (Special Effect, Back Color)

Pentru formular • sursa înregistrărilor: Record Source – dacă este un tabel sau o interogare, aici trebuie să

apară numele obiectului respectiv • controlul introducerii/afişării datelor: Data Entry – Yes/No - introducere date noi / afişare

date existente • aspectul general al formularului (bare de derulare, butoane de min/max/close etc.): Scroll

Bars, Record Selectors, Navigation Buttons, Min Max Buttons, Close Button etc.

a. Casetă prea mică b. Casetă corectă c. Casetă prea înaltă Fig.2.31 Redimensionarea casetei imaginare în funcţie de textul afişat

Fig.2.32 Grup de entităţi etichetă – casetă de câmp (Text Box)

Etichetă Casetă de câmp

Page 53: SGBD Access Curs 2005

53

Fig.2.33 Fereastra Form View (Open Form)

După configurarea proprietăţilor entităţilor, zonelor formularului şi a proprietăţilor acestuia şi salvarea modificărilor, utilizarea ulterioară a formularului se face prin dublu-click pe numele acestuia în secţiunea Forms sau prin selecţie şi apăsarea butonului Open. În figura 2.33 este prezentat formularul a cărui fereastră de proiectare a fost descrisă în figura 2.28. Trecerea între cele două ferestre (utilizare – proiectare) se poate face şi cu ajutorul

butonului asociat de pe bara cu butoane superioară, care îşi schimbă forma în funcţie de fereastra care este activă la un moment dat. Crearea şi utilizarea subformularelor

Subformularul este un formular care se utilizează în cadrul altui formular de care este legat printr-o relaţie de asociere. De obicei, formularele cu subformulare se folosesc pentru a afişa sau a introduce date din / în tabele între care există relaţii (vezi cap.2.5). Un subformular se poate crea în două moduri:

� ca orice formular, cu opţiunile disponibile (Design View, Form Wizard etc.) şi apoi se adaugă în formularul principal, stabilindu-se asocierea cu acesta prin proprietăţile Source Object, Link Master Fields şi Link Child Fields

� cu ajutorul asistentului interactiv în fereastra de proiectare a formularului principal, apelând butonul specific de pe bara cu butoane Toolbox.

Exemplu În baza de date Stocuri se poate crea un formular cu subformular pentru introducerea datelor din facturile de aprovizionare. Formularul principal este necesar pentru adăugarea datelor generale despre factura de aprovizionare în tabelul tblNoterec, iar subformularul va permite adăugarea de înregistrări despre produsele achiziţionate prin factura respectivă, în tabelul tblStocAprov (vezi exemplul de la aplicaţia nr.6).

Page 54: SGBD Access Curs 2005

54

2.10. Proiectarea şi utilizarea rapoartelor

Rapoartele sunt obiecte ale bazei de date destinate tipăririi la imprimantă într-o formă

specifică a datelor. Deşi informaţiile din tabelele unei baze de date se pot tipări şi direct din fereastra de afişare a înregistrărilor (datasheet view), această variantă are o serie de limite.

Rapoartele permit tipărirea informaţiilor din tabele sau interogări ale bazei de date. Gestiunea rapoartelor se face în secţiunea Reports. Rapoartele permit tipărirea informaţiilor din mai multe tabele simultan şi pot conţine entităţi

ale căror valori sunt calculate cu relaţii matematice, pe baza valorilor câmpurilor din tabelele bazei de date.

Proiectarea şi utilizarea rapoartelor se face în mod asemănător cu formularele (cap.2.8). Din acest punct de vedere cele două tipuri de obiecte sunt similare. Se poate spune că rapoartele tipăresc informaţiile prezentate la imprimantă, în timp ce formularele le „tipăresc” pe ecranul calculatorului.

Deoarece rapoartele tipăresc informaţiile pe hârtie, valorile parametrilor acesteia – format hârtie, dimensiuni margini, antet, subsol etc. – vor fi preluate din sistem, conform valorilor existente în Microsoft Office®. Bineînţeles, aceste valori pot fi modificate cu ajutorul opţiunii de meniu File�Page Setup, în funcţie de cerinţele momentane ale utilizatorului.

Asupra unui obiect de tip raport se pot executa trei acţiuni, corespunzătoare celor trei butoane disponibile:

• Vizualizare raport existent înainte de tipărire – Preview • Deschidere fereastră de proiectare raport existent – Design • Creare raport nou – New

Crearea unui nou raport. Elemente componente

Există mai multe posibilităţi de a crea rapoarte, dintre care cele mai utilizate sunt următoarele :

• Design View - creare raport în fereastra de proiectare; se recomandă utilizatorilor experimentaţi

• Report Wizard - creare raport cu ajutorul asistentului interactiv; varianta cea mai recomandată, atât pentru începători, cât şi pentru avansaţi

• Auto Report - creare automată raport simplu; limitată ca posibilităţi • Chart Wizard - creare raport cu grafice incluse, cu ajutorul asistentului interactiv • Label Wizard - creare raport pentru tipărire etichete

Fereastra de proiectare a unui raport este prezentată în figura 2.34. Un raport poate avea, de regulă, 5 zone componente: Report Header, Page Header, Detail,

Page Footer şi Report Footer. Dacă informaţiile care se tipăresc provin din mai multe tabele ale bazei de date şi se aplică unele criterii de grupare a acestora în funcţie de valorile anumitor câmpuri, atunci raportul poate să conţină şi alte două zone, antet şi subsol de grup pentru fiecare câmp ale cărui valori reprezintă un criteriu de grupare.

Zona Report Header este destinată includerii unui titlu pentru raportul respectiv, titlu care va fi tipărit o singură dată la începutul raportului, pe prima pagină a acestuia. Se mai pot include aici informaţii statistice (data curentă, nr.pagini raport etc.).

Page 55: SGBD Access Curs 2005

55

Zona Page Header reprezintă antetul de pagină, în care se includ, de obicei, ca titluri de coloane, etichetele câmpurilor. Se mai pot include şi date statistice (nr. de pagină, dată calendaristică etc.). Informaţiile se vor tipări pe fiecare pagină a raportului în antetul acesteia.

În zona Detail se includ câmpurile dorite din tabele, pentru care vor fi tipărite datele înregistrărilor.

Zona Page Footer reprezintă subsolul de pagină, în care se includ, de obicei, date statistice (nr. de pagină, dată calendaristică, subtotalizări de pagină etc.). Informaţiile se vor tipări în subsolul fiecărei pagini a raportului.

Zona Report Footer reprezintă subsolul raportului, în care se pot include totalizări finale, semnături etc). Acestea se vor tipări o singură dată, la sfârşitul raportului, pe ultima pagină a acestuia.

Fiecare entitate definită în raport, zonele acestuia precum şi raportul însuşi au o serie de proprietăţi specifice, configurabile de către utilizator. Accesul la aceste proprietăţi se face, ca şi la rapoarte, selectând entitatea şi butonul din dreapta al mouse-ului, opţiunea Properties. În fereastra de dialog care apare se configurează valorile proprietăţilor. Proprietăţile care aparţin entităţilor unui raport sunt similare cu cele ale celor incluse în formulare şi au fost descrise în cadrul cap.2.9 (aspectul etichetelor şi casetelor de câmp, butoane de comandă, elemente grafice etc.).

Este disponibilă, ca şi la formulare, bara cu butoane ToolBox, cu ajutorul căreia se pot adăuga entităţi în diferite zone ale raportului. Entităţile care pot face parte din componenţa unui raport sunt similare cu cele incluse în formulare şi au fost prezentate în tabelul de la cap.2.9.

Unele informaţii statistice care se pot include în rapoarte pot fi adăugate cu ajutorul opţiunilor de meniu Insert�Page Numbers / Date and Time:

• Page Numbers – adăugarea numărului de pagină într-un anumit format

Antet de grup

Subsol de grup

Fig.2.34 Fereastra de proiectare a unui raport

Page 56: SGBD Access Curs 2005

56

• Date and Time – adăugarea datei calendaristice şi/sau orei curente într-un anumit format

Pentru adăugarea unui contor automat (numerotare curentă) în raport, se adaugă o casetă de câmp Text Box în zona Detail şi se stabilesc proprietăţile acesteia la Control Source: =1 şi Running Sum: Over All/Over Group, în funcţie de cerinţele momentane ale utilizatorului.

Criteriile de ordonare şi grupare aplicate înregistrărilor prelucrate şi tipărite cu ajutorul unui raport sunt configurabile fie în ferestrele de dialog specifice asistentului interactiv (Form Wizard), dacă raportul se crează cu ajutorul acestuia, fie cu opţiunea de meniu View�Sorting and Grouping, fig.2.35.

Dacă s-a aplicat un criteriu de grupare a înregistrărilor după valorile unui câmp şi se doreşte ca înregistrările care fac parte dintr-un grup să fie tipărite pe aceeaşi pagină a raportului, acest lucru se obţine prin configurarea opţiunii Keep Together la valoarea Whole group, în fereastra Sorting and Grouping (fig.2.35).

După configurarea proprietăţilor entităţilor, zonelor raportului şi a proprietăţilor acestuia şi salvarea modificărilor, utilizarea ulterioară a raportului se face prin dublu-click pe numele acestuia în secţiunea Reports sau prin selecţie şi apăsarea butonului Preview, care vizualizează raportul pe foaia de hârtie (format A4-Portrait), aşa cum va fi el tipărit. În figura 2.36 este prezentat raportul a cărui fereastră de proiectare a fost descrisă în figura 2.34.

Trecerea între cele două ferestre (previzualizare – proiectare) se poate face şi cu ajutorul butonului asociat de pe bara cu butoane superioară, care îşi schimbă forma în funcţie de fereastra care este activă la un moment dat.

Fig.2.35 Fereastra Sorting and Grouping

Fig.2.36 Fereastra Preview a unui raport

Page 57: SGBD Access Curs 2005

57

2.11. Proiectarea şi utilizarea panourilor de comandă

Panourile de comandă sunt obiecte ale bazei de date destinate lansării în execuţie a

diferitelor acţiuni de gestionare a acesteia prin simpla apăsare a unor butoane de comandă. Ele constituie o interfaţă între utilizatorul neexperimentat şi obiectele bazei de date.

Panourile de comandă sunt obiecte de tip formular care, de obicei, conţin numai butoane de comandă, asociate cu texte explicative.

Crearea unui panou de comandă se poate face fie prin proiectarea acestuia ca orice formular (vezi subcap.2.8), fie cu ajutorul utilitarului Switchboard Manager care poate fi executat din meniul Tools�Database Utilities. La crearea primului panou de comandă într-o bază de date, acesta primeşte numele implicit Main Switchboard. Configurarea panoului de comandă şi adăugarea de butoane de comandă şi acţiuni asociate acestora se face prin apăsarea butonului Edit în fereastra Switchboard Manager (fig.2.37). În această fereastră semnificaţia butoanelor este următoarea:

♦ Close – închiderea ferestrei; ♦ New – crearea unui nou panou de

comandă; ♦ Edit – editarea panoului de

comandă selectat; ♦ Delete – ştergerea panoului de comandă selectat; ♦ Make Default – configurarea panoului de comandă selectat ca panou implicit.

În figura 2.38 este prezentat un exemplu de panou de comandă în baza de date Stocuri. Cu ajutorul acestuia se pot executa 4 acţiuni în baza de date, corespunzătoare a 4 butoane de comandă prezente pe panou:

♦ Nomenclator produse – deschiderea unui formular de afişare a înregistrărilor din tabelul Produse;

♦ Nomenclator furnizori – deschiderea unui formular de afişare a înregistrărilor din tabelul Furnizori;

♦ Adăugare factură în stoc – adăugarea datelor generale ale unei facturi de achiziţie şi a datelor despre produsele achiziţionate pe factura respectivă în tabelele Noterec şi, respectiv StocAprov;

♦ Facturi neachitate – execuţia unei interogări care afişează informaţiilor despre facturile neachitate la un moment dat.

Fig.2.38 Panou de comandă

Fig.2.37 Fereastra Swb Manager

Page 58: SGBD Access Curs 2005

58

Panoul de comandă din figura 2.38 mai conţine şi un buton de închidere al acestuia. Fereastra de editare a unui panou de comandă este prezentată în figura 2.39. Caseta

Switchboard Name indică numele panoului, iar caseta Items on this Switchboard indică lista butoanelor de comandă prezente pe panou. Semnificaţia butoanelor din partea dreaptă este următoarea:

♦ Close – închiderea ferestrei; ♦ New – crearea unui nou buton de comandă şi asocierea unei acţiuni la apăsarea acestuia; ♦ Edit – editarea unei acţiuni existente; ♦ Delete – ştergerea unui buton de comandă şi a acţiunii asociate acestuia; ♦ Move Up şi Move Down – modificarea poziţiei butonului de comandă selectat. Fereastra de editare a unei acţiuni asociate unui buton de comandă este prezentată în figura

2.40. Semnificaţia casetelor de editare este următoarea: � Text – mesaj text asociat butonului de comandă care se afişează pe panou; reprezintă şi

numele butonului afişat în fereastra Edit Switchboard Page; � Command – acţiunea care se execută la apăsarea butonului; se alege dintr-o listă de

acţiuni disponibile; � Form – indică obiectul asupra căruia se execută acţiunea selectată anterior; acest obiect

poate fi un formular, un raport, o comandă macro sau un alt panou de comandă; în funcţie de tipul obiectului, caseta este denumită Form, Report, Macro sau Switchboard.

Pe lângă obiectul de tip formular creat în secţiunea Forms, unui panou de comandă i se ataşează şi un tabel, denumit Switchboard Items, care conţine câte o înregistrare corespunzătoare fiecărui panou de comandă creat în baza de date precum şi fiecărui buton de comandă prezent pe panou. În figura 2.41 este prezentat conţinutul tabelului respectiv pentru panoul de comandă afişat în figura 2.38. Există 5 înregistrări, una pentru panoul însuşi şi patru pentru cele patru butoane ale acestuia.

Fig.2.39 Fereastra Edit Switchboard Page Fig.2.40 Fereastra Edit Switchboard Item

Fig.2.41 Tabelul asociat unui panou de comandă şi butoanelor acestuia

Page 59: SGBD Access Curs 2005

59

Obiectul de tip panou de comandă, fiind un formular, poate fi editat în secţiunea Forms, aducându-i-se modificări în funcţie de cerinţele utilizatorului. Sunt disponibile toate posibilităţile de modificare a aspectului (font, mărime şi culoare text, adăugare de elemente grafice etc.) pe care le are orice formular. De asemenea, se pot ataşa şi alte butoane de comandă specifice, cum ar fi butonul de închidere (fig.2.38), conform celor prezentate în cadrul subcap.2.8.

Panourile de comandă pot fi create şi ca formulare obişnuite, în secţiunea Forms, cu opţiunea New � Design View şi apoi adăugarea etichetelor şi a butoanelor de comandă necesare. Aspectul unui astfel de formular care execută aproximativ aceleaşi acţiuni ca şi cel din figura 2.38 poate fi cel prezentat în figura 2.42.

Butoanele panoului de comandă din figura 2.42 au asociate acţiuni, de obicei descrise în macrocomenzi, care sunt executate la acţionarea lor cu click de mouse. Asocierea acţiunilor se face fie cu ajutorul asistentului interactiv, fie prin proiectarea macrocomenzii specifice care trebuie apoi asociată proprietăţii On Click a butonului respectiv.

În cadrul aplicaţiei nr.8, cap.4, este prezentată succesiunea acţiunilor necesare pentru crearea panoului de comandă din figura 2.38, în baza de date Stocuri.

Fig.2.42 Panou de comandă creat ca formular obişnuit

Page 60: SGBD Access Curs 2005

60

2.12. Proiectarea şi utilizarea macrocomenzilor

Macrocomenzile reprezintă o modalitate simplă de a efectua o succesiune de acţiuni în

legătură cu utilizarea unei baze de date, cum ar fi: deschiderea/închiderea tabelelor, formularelor sau interogărilor, selecţia de înregistrări, aplicarea unor filtre, tipărirea rapoartelor etc.). Execuţia unei macrocomenzi este, de obicei, asociată unui buton de comandă dintr-un panou de comandă sau formular şi poate fi efectuată fără a avea cunoştinţe avansate despre Access.

O macrocomandă reprezintă de fapt o succesiune de comenzi care se execută automat la o singură „apăsare de buton”.

Proiectarea macrocomenzilor se face în secţiunea Macros. Există trei acţiuni care se pot efectua în legătură cu o macrocomandă, şi anume:

♦ Run – execuţia unei macrocomenzi existente; se poate efectua şi prin dublu-click pe numele macrocomenzii respective;

♦ Design – deschiderea ferestrei de proiectare a unei macrocomenzi existente;

♦ New – deschiderea ferestrei de proiectare a unei noi macrocomenzi.

Fereastra de proiectare a unei macrocomenzi este prezentată în figura 2.43. Semnificaţia zonelor este următoarea:

� Action – lista acţiunilor care trebuie executate la execuţia macrocomenzii (vezi anexa nr.2);

� Comment – linie de comentariu asociat fiecărei acţiuni;

� Action arguments – obiectul (argumentul) asupra căruia se execută acţiunea şi anumite opţiuni specifice în funcţie de acţiunea selectată;

� Condition – opţională, condiţie care decide execuţia acţiunii, dacă rezultatul evaluării condiţiei este adevărat (True, 1 etc.), atunci acţiunea se va executa, altfel nu;

Fig.2.43 Fereastra de proiectare a unei macrocomenzi

Page 61: SGBD Access Curs 2005

61

� Caseta de ajutor – în partea din dreapta jos a ferestrei este afişat un mesaj explicativ cu referire la entitatea pe care se află cursorul la un moment dat (în exemplul din figura 2.43 apare o descriere a acţiunii MsgBox).

Execuţia unei macrocomenzi din fereastra de proiectare a acesteia se poate face numai după salvare, prin apăsarea butonului Run de pe bara cu butoane superioară, ca şi în cazul interogărilor. Execuţia se poate face în două moduri:

♦ complet, prin executarea tuturor acţiunilor într-o singură etapă (Run);

♦ pas cu pas, prin executarea acţiunilor una câte una şi aşteptarea confirmării de continuare din partea utilizatorului (Single Step).

Cele mai utilizate acţiuni în macrocomenzi sunt prezentate în anexa nr.2. În cadrul aplicaţiei nr.8, cap.4, sunt prezentate câteva exemple de macrocomenzi care pot fi

asociate unor butoane de comandă de pe panoul de comandă.

Page 62: SGBD Access Curs 2005

62

ELEMENTE DE BAZĂ PRIVIND ÎNTREŢINEREA

ŞI ADMINISTRAREA UNEI BAZE DE DATE Administrarea eficientă a unei baze de date presupune proiectarea tuturor obiectelor necesare utilizatorilor pentru a introduce, a modifica, a selecta, a consulta, a tipări diverse date, fără a afecta integritatea acestora. Întreţinerea unei baze de date necesită efectuarea unor acţiuni de rutină în scopul verificării integrităţii datelor existente la un moment dat şi a protecţiei acestora împotriva unor eventuali factori de alterare accidentală sau deliberată. Pentru a realiza aceste activităţi, un software care gestionează baze de date trebuie să dispună de o serie de instrumente specifice. Microsoft® Access dispune de astfel de instrumente, unele uzuale care există şi la alte SGBD, altele specifice, care sunt prezente numai în cadrul acestui sistem. În cele ce urmează se vor prezenta câteva elemente de bază privind acţiunile care trebuie efectuate într-o bază de date pentru menţinerea integrităţii şi actualităţii acesteia. Exemplele se referă la sistemul Microsoft® Access.

3.1. Aspecte privind securitatea datelor

Problema securităţii unei baze de date se pune mai ales atunci când aceasta are caracter public, adică trebuie să fie accesibilă mai multor utilizatori sau atunci când se doreşte restricţionarea accesului la acea bază de date. În aceste cazuri, este necesar un control al accesului utilizatorilor la obiectele bazei de date (tabele, formulare, interogări etc.) în ceea ce priveşte posibilitatea acestora de a consulta / adăuga / modifica date sau obiecte ale bazei de date.

Controlul accesului utilizatorilor la o bază de date se poate face prin mai multe metode.

� Configurarea unei parole de acces la deschiderea bazei de date (Database Password);

� Separarea bazei de date în fişiere diferite (Database Splitter);

� Configurarea sistemului de grupuri de lucru cu acces controlat (Workgroup Accounts);

� Codificarea (criptarea) bazei de date (Encrypt);

Configurarea uneia dintre opţiunile de mai sus se face din meniul Tools.

Page 63: SGBD Access Curs 2005

63

!!!!

� Configurarea unei parole de acces la deschiderea bazei de date (Database Password)

Este cea mai simplă posibilitate de protecţie a unui fişier în care este creată o bază de date. Deschiderea fişierului şi vizualizarea obiectelor sunt protejate de către o parolă dată de către utilizator. Parola controlează accesul numai la acel fişier.

În Microsoft® Access, acţiunea se efectuează cu opţiunea de meniu Tools � Security � Set Database Password, având baza de date deschisă cu opţiunea Exclusive – în fereastra de deschidere a bazei de date (Open) se apasă săgeata de pe butonul Open (fig.3.1) şi se alege opţiunea Open Exclusive.

Atunci când un fişier *.mdb este deschis cu opţiunea Exclusive, numai utilizatorul care l-a deschis are acces în acel moment la fişierul respectiv, nemaipermiţând altui utilizator să-l deschidă.

Eliminarea parolei de acces se face cu opţiunea de meniu Tools � Security � Unset Database Password, având baza de date deschisă cu opţiunea Exclusive şi fiind necesară cunoaşterea parolei respective.

Observaţii

În ceea ce priveşte formarea unei parole, există numeroase păreri care spun că parolele formate din combinaţii ale numelui sau prenumelui, data naşterii, numere de asigurare socială, de carte de identitate etc. sau chiar cuvinte obişnuite nu sunt prea sigure. Există astăzi programe care folosesc dicţionare de cuvinte uzuale pentru a găsi parola potrivită şi care pot fi utilizate de către hackeri. O regulă sigură pentru generarea unei parole este utilizarea combinaţiilor neobişnuite de cifre, litere sau caractere speciale ($, &, +, *). De asemenea, este necesar ca parola să aibă minimum patru caractere.

ATENŢIE: Parolele de acces sunt Case sensitive (diferenţiază literele mici de majuscule)

� Separarea bazei de date în fişiere diferite (Database Splitter)

Este un instrument util pentru protejarea înregistrărilor conţinute în tabelele bazei de date, atunci când baza de date este publică. Acest caz apare atunci când baza de date trebuie să fie accesibilă mai multor utilizatori.

Fişierul de tip *.mdb, care în mod obişnuit conţine atât tabelele cu înregistrări, cât şi celelalte obiecte necesare administrării – interogări, formulare, rapoarte etc. se împarte în două fişiere, unul care va conţine tabelele cu înregistrări şi altul care va conţine celelalte obiecte – formulare, rapoarte, interogări etc. Fişierul cu tabele va avea un acces restricţionat, iar celălalt fişier va putea fi gestionat de către utilizatorii obişnuiţi fără restricţii.

Metoda este foarte utilă atunci când accesul la informaţii se face prin intermediul unei reţele.

Butonul Open

Fig.3.1. Fereastra Open *.mdb

Page 64: SGBD Access Curs 2005

64

Divizarea bazei de date se face cu opţiunea de meniu Tools � Database Utilities � Database Splitter şi se urmăresc instrucţiunile din casetele de dialog afişate.

� Configurarea sistemului de grupuri de lucru cu acces controlat (Workgroup Accounts)

Sistemul se bazează pe crearea unor grupuri de utilizatori cărora le sunt atribuite conturi de utilizator, fiecare având protecţia asigurată printr-o parolă.

Există două grupuri implicite, Admins şi Users. Grupul Admins (administratori) are drepturi nelimitate şi este rezervat celor care proiectează

şi întreţin baza de date. Grupul Users (utilizatori) are drepturi limitate, stabilite de către administratori, şi cuprinde

utilizatorii obişnuiţi. Aceştia pot primi drepturi referitoare la deschidere/execuţie a diferitelor obiecte ale bazei de date (Open/Run), citire / actualizare / adăugare / ştergere de date (Read/Update/Insert/Delete Data), vizualizare / proiectare obiecte ale bazei de date (Read/Modify Design).

Securizarea bazei de date prin această metodă asigură controlul accesului la întreg sistemul Access, deci la toate bazele de date create. Identificarea utilizatorilor se face la pornirea programului şi este valabilă pentru orice bază de date existentă. Configurarea sistemului se face cu o aplicaţie externă, MS Access Workgroup Administrator (existentă în subdirectorul …\Program Files\Microsoft Office).

� Codificarea (criptarea) bazei de date (Encrypt)

Codificarea (cifrarea, criptarea) unei baze de date asigură un nivel minim de securitate, în cazul lucrului în reţea de calculatoare.

Codificarea bazei de date o face inaccesibilă citirii cu alte programe utilitare sau aplicaţii Office. Baza de date criptată nu se poate importa în alte medii. Orice utilizator care dispune de sistemul Access poate decripta fişierul şi vizualiza informaţiile. Accesul la baza de date criptată este posibil în limitele permisiunilor stabilite de Workgroup Administrator, dacă acestea au fost configurate.

Criptarea/decriptarea unei baze de date se face cu opţiunea Tools � Security� Encrypt/Decrypt Database. Baza de date care se codifică trebuie să fie închisă.

Versiunea codificată se poate salva în alt fişier sau peste fişierul existent. Desigur, astăzi există programe care pot decripta fişiere criptate prin diferite metode şi prin

urmare metoda de criptare în Access asigură un nivel minim de securitate doar împotriva acelor utilizatori obişnuiţi, care nu au drepturi de utilizare a sistemului şi deci, nu trebuie să „vadă” fişierele de tip *.mdb.

3.2. Aspecte privind integritatea datelor

Integritatea datelor dintr-o bază de date se referă la asigurarea corectitudinii datelor existente

la un moment dat şi la posibilitatea actualizării corecte a informaţiilor atunci când este necesar. Integritatea datelor se poate asigura prin una dintre metodele de control al accesului disponibile,

Page 65: SGBD Access Curs 2005

65

prezentate în cadrul subcap.3.1 sau prin metode specifice cum ar fi, de exemplu în Access, crearea unei copii identice a bazei de date – Database Replica.

O primă măsură care asigură protecţia informaţiilor împotriva deteriorării sau pierderii acestora este crearea unei copii de siguranţă a fişierului care conţine baza de date într-un loc sigur (alt disc dur, o unitate de stocare mobilă etc.). Bineînţeles că este necesară însă o actualizare periodică a informaţiilor din copie pentru ca aceasta să fie „la zi” cu datele incluse în fişierul original.

Integritatea actualizării datelor din baza de date trebuie controlată când se lucrează cu baza de date în mai multe puncte de lucru, pe fişiere fizice diferite. În acest caz este necesară includerea simultană a înregistrărilor de la toate punctele de lucru în aceeaşi bază de date – acelaşi fişier – actualizare periodică a informaţiilor.

În Microsoft® Access, integritatea actualizării se realizează cu facilitatea de ”reproducere„ a bazei de date – Database Replication – crearea unei copii identice a fişierului *.mdb. Acţiunea se execută cu opţiunea de meniu Tools � Replication � Create Replica.

Fişierul „original” care conţine baza de date actualizată este păstrat în siguranţă şi nu se lucrează pe el, iar utilizatorii (punctele de lucru) lucrează pe fişierul-copie care poate fi distribuit în mod corespunzător. Actualizarea datelor între copie şi original se face, periodic, cu opţiunea de meniu Tools � Replication � Synchronize Now, care compară cele două fişiere şi le completează pe fiecare cu înregistrările pe care nu le are din cealaltă, astfel încât, în final, cele două fişiere să conţină aceleaşi înregistrări. Actualizarea se face numai la nivelul înregistrărilor din tabele, celelalte obiecte – interogări, formulare etc. rămânând specifice fiecărui fişier.

În cazul deteriorării conţinutului unei baze de date, din diferite cauze, SGBD-urile dispun de unelte care pot reface integritatea bazei de date. În Microsoft® Access, repararea unei baze de date deteriorată se face cu opţiunea de meniu Tools � Database Utilities � Compact and Repair Database care, totodată, micşorează spaţiul ocupat pe discul dur de către fişierul care conţine baza de date.

3.3. Aspecte privind importul şi exportul datelor

Un sistem software de gestiune a bazelor de date (SGBD) modern trebuie să asigure

posibilitatea schimbului de informaţii – înregistrări, formulare, rapoarte, interogări etc. – cu baze de date create în alte sisteme software similare. Schimbul de informaţii se referă la importul, exportul şi conversia datelor conţinute într-o bază de date.

Microsoft® Access permite importul informaţiilor din baze de date create cu majoritatea celorlaltor SGBD (dBASE, Paradox, Lotus, SQL-ODBC) sau aplicaţii similare (Microsoft Excel, text files – delimited, fixed-width, Rich Text Format, HTML). De asemenea se pot importa obiecte din alte baze de date Access.

Importul se face cu opţiunea File � Get External Data. Există două posibilităţi de import: ♦ Import – datele se aduc fizic în baza de date Access şi se crează noi tabele;

Page 66: SGBD Access Curs 2005

66

♦ Link Tables – datele rămân în baza de date originală şi în Access se crează o legătură (link) către acestea. Ele pot fi prelucrate astfel în format Access.

Importul datelor se poate face şi la crearea unui nou tabel în secţiunea Tables, cu opţiunea New � Import Table şi urmărirea instrucţiunilor din casetele de dialog ale asistentului (vezi subcap.2.3 şi aplicaţia nr.1, cap.4).

Microsoft® Access permite exportul informaţiilor din bazele de date către majoritatea celorlaltor SGBD (dBASE, Paradox, Lotus, SQL-ODBC) sau aplicaţii similare (Microsoft Excel, text files – delimited, fixed-width, Rich Text Format, HTML). De asemenea se pot exporta obiecte către alte baze de date Access.

Obiectele create (tabele, formulare etc.) se pot exporta numai individual. Exportul datelor se face cu opţiunea File � Export şi urmărirea instrucţiunilor din casetele

de dialog.

Microsoft® Access dispune de posibilitatea transformării (conversiei) bazelor de date create cu versiuni mai vechi ale programului (Access 1.x, 2.0, Access ’95 etc.). Versiunile mai noi – Access 2003…2000 – nu mai au posibilitatea conversiei către versiuni mai vechi decât Access ’97.

Conversia se face cu opţiunea Tools � Database Utilities � Convert Database şi se urmează instrucţiunile afişate.

Page 67: SGBD Access Curs 2005

67

Anexa nr.1 – Funcţii predefinite integrate în Access

Obs. În funcţie de valoarea stabilită de către sistemul de operare Windows®, separatorul zecimal poate fi punctul – . – (sistemul american) sau virgula – , – (sistemul românesc).

În exemplele date în continuare s-a considerat ca separator zecimal virgula. Math – Funcţii pentru date numerice

Sintaxa funcţiei Explicaţii Exemple

Abs (val_num)Abs (val_num)Abs (val_num)Abs (val_num) Returnează valoarea absolută (fără semn) a valorii numerice val_num

Abs(1200)=1200 Abs(–12,65)=12,65

Atn (val_num)Atn (val_num)Atn (val_num)Atn (val_num)

Returnează arctangenta valorii numerice val_num, în radiani Este inversul trigonometric al funcţiei Tan

Atn(1)=0,785 (rad)

Cos (val_num)Cos (val_num)Cos (val_num)Cos (val_num) Returnează cosinus al valorii numerice val_num, care trebuie dată în radiani

Cos(3,14)= –1

Exp(val_num)Exp(val_num)Exp(val_num)Exp(val_num) Returnează numărul e ridicat la puterea val_num Este complementara funcţiei Log

Exp(1)=2,7182

Fix(val_num)Fix(val_num)Fix(val_num)Fix(val_num) Returnează valoarea întreagă a valorii numerice val_num prin trunchiere (eliminarea părţii fracţionare)

Fix(12,6)=12 Fix(12,3)=12 Fix(–12,4)= –12

Log(val_num)Log(val_num)Log(val_num)Log(val_num) Returnează logaritmul natural (în baza e) al valorii numerice val_num Este complementara funcţiei Exp

Log(2,7182)=1

Round (val_numRound (val_numRound (val_numRound (val_num;;;; <<<<precprecprecprec>>>>))))

Returnează valoarea rotunjită a valorii numerice val_num; dacă prec lipseşte, atunci se rotunjeşte la întreg, dacă există, reprezintă numărul de ordine al zecimalei care se rotunjeşte

Round(12,6)=13 Round(12,65;1)=12,7

Sgn(val_num)Sgn(val_num)Sgn(val_num)Sgn(val_num) Returnează o valoare întreagă care semnifică semnul valorii val_num

Sgn(12,6)=1 Sgn(0)=0 Sgn(–12,6)= –1

Sin (val_num)Sin (val_num)Sin (val_num)Sin (val_num) Returnează sinus al valorii numerice val_num, care trebuie dată în radiani Sin(3,14)=0

Sqr(val_num)Sqr(val_num)Sqr(val_num)Sqr(val_num) Returnează rădăcina pătrată din valoarea val_num

Sqr(3)=1,73

Tan(val_nTan(val_nTan(val_nTan(val_num)um)um)um) Returnează tangenta valorii numerice val_num, care trebuie dată în radiani Tan(0,785)=1

Text – Funcţii pentru date de tip şir de caractere

Sintaxa funcţiei Explicaţii Exemple

LCaseLCaseLCaseLCase (val_ (val_ (val_ (val_sirsirsirsir))))

Returnează şirul val_sir transformat cu caractere mici Dacă val_sir este o valoare constantă, atunci trebuie dată între marcajele ” ”

Lcase(”DaTe”)=”date”

Page 68: SGBD Access Curs 2005

68

Sintaxa funcţiei Explicaţii Exemple

Left (val_sir; nc)Left (val_sir; nc)Left (val_sir; nc)Left (val_sir; nc) Returnează un subşir format din şirul val_sir pornind de la primul caracter şi având lungimea de ncncncnc caractere

Left(”Baze Date”;4)= =”Baze”

Len(val_sir)Len(val_sir)Len(val_sir)Len(val_sir) Returnează un număr natural reprezentând lungimea şirului val_sir În lungime sunt incluse şi spaţiile libere

Len (”Baze Date”)=9

LTrim(val_sir)LTrim(val_sir)LTrim(val_sir)LTrim(val_sir) Returnează un sir reprezentând şirul val_sir din care s-au eliminat eventualele spaţii libere de la început

LTrim(” Baze”)=”Baze”

Mid(val_sir; st; <nc>)Mid(val_sir; st; <nc>)Mid(val_sir; st; <nc>)Mid(val_sir; st; <nc>)

Returnează un subşir format din şirul val_sir pornind de la caracterul stststst şi având lungimea de ncncncnc caractere. Dacă ncncncnc nu este precizat, se consideră toate caracterele până la sfârşitul şirului

Mid(”Baze Date”;6;2)= =”Da” Mid(”Baze Date”;6)= =”Date”

Right (val_sir; nc)Right (val_sir; nc)Right (val_sir; nc)Right (val_sir; nc) Returnează un subşir format din şirul val_sir pornind de la ultimul caracter înapoi şi având lungimea de ncncncnc caractere

Right(”Baze Date”;4)= =”Date”

RTrim(val_sir)RTrim(val_sir)RTrim(val_sir)RTrim(val_sir) Returnează un sir reprezentând şirul val_sir din care s-au eliminat eventualele spaţii libere de la sfârşit

RTrim(”Baze ”)=”Baze”

Space(nc)Space(nc)Space(nc)Space(nc) Returnează un şir format din ncncncnc spaţii libere

Space(4)=” ”

String(nc;char)String(nc;char)String(nc;char)String(nc;char) Returnează un şir format prin repetarea de ncncncnc ori a caracterului char String(3;”X”)=”XXX”

Trim(val_sir)Trim(val_sir)Trim(val_sir)Trim(val_sir) Returnează un sir reprezentând şirul val_sir din care s-au eliminat eventualele spaţii libere de la început şi de la sfârşit

Trim(” Baze ”)= =”Baze”

UCase (val_sUCase (val_sUCase (val_sUCase (val_sir)ir)ir)ir) Returnează şirul val_sir transformat cu caractere majuscule

Ucase(”DaTe”)=”DATE”

Date/Time – Funcţii pentru date de tip dată calendaristică / oră

Sintaxa funcţiei Explicaţii Exemple

Date ( )Date ( )Date ( )Date ( )

Returnează o valoare reprezentând data curentă preluată din sistemul de operare Windows® Afişarea valorii se face în modul implicit definit în Access

Date ( )=08.01.2005

DatePart(DatePart(DatePart(DatePart(cod; cod; cod; cod; valvalvalval_data; _data; _data; _data;

<fwd>; <fw>)<fwd>; <fw>)<fwd>; <fw>)<fwd>; <fw>)

Returnează o valoare întreagă reprezentând parte din val_data, în funcţie de valoare indicată prin codcodcodcod fwd şi fw sunt valori opţionale care definesc numerotarea zilelor şi săptămânilor într-un an calendaristic Valori implicite; fwd: Sunday fw : săpt.cu 1 Ian.

Dacă vd=8.02.2005

DatePart(”yyyy”;vd)=2005

DatePart(”m”;vd)=2

DatePart(”d”;vd)=8

DatePart(”w”;vd)=3

DatePart(”y”;vd)=39

DatePart(”ww”;vd)=7

Day (val_data)Day (val_data)Day (val_data)Day (val_data)

Returnează o valoare întreagă între 1 şi 31 reprezentând ziua din lună extrasă din val_data

Dacă vd=8.02.2005

Day(vd)=8

Month (val_data)Month (val_data)Month (val_data)Month (val_data)

Returnează o valoare întreagă între 1 şi 12 reprezentând luna din an extrasă din val_data

Dacă vd=8.02.2005 Month(vd)=2

Page 69: SGBD Access Curs 2005

69

Sintaxa funcţiei Explicaţii Exemple

Now( )Now( )Now( )Now( )

Returnează o valoare reprezentând data şi ora curentă preluată din sistemul de operare Windows® Afişarea valorii se face în modul implicit definit în Access

Now( )=08.01.2005 13:31:41

Time ( )Time ( )Time ( )Time ( )

Returnează o valoare reprezentând ora curentă preluată din sistemul de operare Windows® Afişarea valorii se face în modul implicit definit în Access

Time( )=13:33:56

Year(val_data)Year(val_data)Year(val_data)Year(val_data) Returnează o valoare întreagă reprezentând anul extras din val_data

Dacă vd=8.02.2005 Year(vd)=2005

SQL Aggregate – Funcţii pentru prelucrarea statistică a seturilor de valori grupate cu Group

By în cadrul interogărilor (funcţii de tip global) argumentargumentargumentargument reprezintă variabila după care se face gruparea valorilor; poate fi un câmp al unui tabel din baza de date sau un câmp calculat în interogare

Sintaxa funcţiei Explicaţii Exemple

Avg (Avg (Avg (Avg ([[[[argumentargumentargumentargument]]]])))) Returnează valoarea medie din fiecare set de valori format

CCCCountountountount ( ( ( ([[[[argumentargumentargumentargument]]]])))) Returnează numărul de valori din fiecare set de valori

Max (Max (Max (Max ([[[[argumentargumentargumentargument]]]])))) Returnează valoarea maximă din fiecare set de valori

Min (Min (Min (Min ([[[[argumentargumentargumentargument]]]])))) Returnează valoarea minimă din fiecare set de valori

Sum (Sum (Sum (Sum ([[[[argumentargumentargumentargument]]]])))) Returnează suma valorilor din fiecare set de valori

Alte funcţii

Sintaxa funcţiei Explicaţii Exemple

IIfIIfIIfIIf ( ( ( (relarelarelarelaţie; valDA; valNUie; valDA; valNUie; valDA; valNUie; valDA; valNU))))

Funcţie condiţională Returnează valDA dacă relaţia este adevărată Returnează valNU dacă relaţia este falsă

IIf([medf]>=5;”ADMIS”; IIf([medf]>=5;”ADMIS”; IIf([medf]>=5;”ADMIS”; IIf([medf]>=5;”ADMIS”;

“RESPINS”)“RESPINS”)“RESPINS”)“RESPINS”)

Pt.[medf]>=5, IIf=”ADMIS”

Pt.[medf]<5, IIf=”RESPINS”

Page 70: SGBD Access Curs 2005

70

Anexa nr.2 – Acţiuni asociate macrocomenzilor

Denumirea acţiunii Descrierea acţiunii

ApplyFilterApplyFilterApplyFilterApplyFilter Aplică un filtru de selecţie a înregistrărilor sau apelează o interogare existentă pentru afişarea selectivă a înregistrărilor

CloseCloseCloseClose Închide fereastra deschisă a unui obiect specificat (tabel, interogare, formular, raport etc.)

CopyObjectCopyObjectCopyObjectCopyObject Copiază obiectul specificat sub un nume specificat în baza de date curentă sau în altă bază de date specificată

DeDeDeDeleteObjectleteObjectleteObjectleteObject Şterge obiectul specificat din baza de date

GoToControlGoToControlGoToControlGoToControl Selectează un câmp sau un control specificat, existent în structura înregistrărilor curente dintr-un tabel, interogare sau formular

GoToRecordGoToRecordGoToRecordGoToRecord Selectează înregistrarea specificată din tabelul, interogarea sau formularul curent sau din alt obiect specificat

MaximizeMaximizeMaximizeMaximize Redimensionează fereastra curentă la dimensiunea maximă de afişare

MinimizeMinimizeMinimizeMinimize Reduce dimensiunile ferestrei curente la dimensiunile barei de titlu a acesteia şi o deplasează în partea inferioară a ecranului

MoveSizeMoveSizeMoveSizeMoveSize Mută şi redimensionează fereastra curentă

MsgBoxMsgBoxMsgBoxMsgBox Afişează un mesaj sau o pictogramă într-o casetă de dialog

OpenFormOpenFormOpenFormOpenForm Deschide formularul specificat, spre utilizare

OpenQueryOpenQueryOpenQueryOpenQuery Execută o interogare specificată

OpenROpenROpenROpenReporteporteporteport Deschide un raport specificat, în fereastra Preview

OpenTableOpenTableOpenTableOpenTable Deschide un tabel de date specificat, afişând înregistrările acestuia

PrintOutPrintOutPrintOutPrintOut Tipăreşte la imprimantă obiectul specificat

QuitQuitQuitQuit Închide mediul Access

RestoreRestoreRestoreRestore Redimensionează fereastra curentă la dimensiunile avute anterior

RunAppRunAppRunAppRunApp Deschide altă aplicaţie Windows sau MS-DOS din interiorul mediului Access

RunMacroRunMacroRunMacroRunMacro Execută altă macrocomandă în cursul macrocomenzii curente

SelectObjectSelectObjectSelectObjectSelectObject Selectează un obiect specificat asupra căruia se poate executa apoi o anumită acţiune

SetValueSetValueSetValueSetValue Atribuie o valoare specificată (care poate fi rezultatul evaluării unei expresii matematice) unui câmp sau control dintr-un obiect specificat

ShowAllRecordsShowAllRecordsShowAllRecordsShowAllRecords Înlătură filtrele stabilite anterior şi afişează toate înregistrările din tabelul curent

TransferDatabaseTransferDatabaseTransferDatabaseTransferDatabase Importă/exportă date din/în alte fişiere tip bază de date în/din tabelul specificat

TransferTextTransferTextTransferTextTransferText Importă/exportă date în format text din/în alte fişiere în/din tabelul specificat

Page 71: SGBD Access Curs 2005

71

BIBLIOGRAFIE

1. [BAS 97] Bâscă, O. Baze de date. Editura Bic All, Bucureşti, 1997.

2. [BRA 03] Brady, A.J., Monk, F. E. Problem Solving Cases in Microsoft Access and Excel. Course Technology Inc., 2003.

3. [BRY 97] Brydon, Michael. Microsoft Access Tutorials, http://www.unixg.ubc.ca, 1997

4. [CON 01] Conolly Th., Begg C., Strachan A. Baze de date – Proiectare, implementare, gestionare (traducere din limba engleză). Editura Teora, Bucureşti, 2001.

5. [FOT 97] Fotache, M. Baze de date relaţionale. Organizare, interogare şi normalizare. Ediţia a II-a adăugită. Editura Junimea, Iaşi, 1997.

6. [GUN 04] Gunderloy, M., S. Sales Harkins, Microsoft Office Access 2003 pentru începători (traducere din limba engleză). Editura All, Bucureşti, 2004.

7. [JEN 00] Jennings, R. Totul despre Microsoft Access 2000 (traducere din limba engleză). Editura Teora, Bucureşti, 2000.

8. [LUN 95] Lungu, I., Todea C., Bădescu G., Ioniţă C. Baze de date, organizare, proiectare, implementare. Editura All, Bucureşti, 1995.

9. [PAS 01] Pasewark W.R.Sr., Pasewark W.R.Jr., Cable, S., Microsoft Access 2002 Complete Tutorial. Course Technology Inc., 2001.

10. [POP 00] Popa, Gh., Iliescu M., Udrică M. Baze de date Access. Culegere de probleme. Editura Cison, Bucureşti, 2000.

11. [SOL 02] Solosky C. Stephen, Microsoft Access: Practice and Exercises. Kendall/Hunt Publishing Company, 2002.

12. [*** 01] * * * Microsoft Access 2000. Manualul începătorului (traducere din limba engleză). Microsoft Press, Editura Teora, Bucureşti, 2000.

13. [*** 02] * * * Access 2003 - Programul Microsoft Office pentru baze de date. Site internet, http://www.microsoft.com/romania/

14. [*** 03] * * * Microsoft Access 2000 Tutorial. Florida Gulf Coast University. Site internet, http://www.fgcu.edu/support/office2000/access/

15. [*** 04] * * * Access Tips. Site internet, http://www.access-programmers.co.uk/

16. [*** 05] * * * Microsoft Access 2000 Basics. Bay City Public Schools. Site internet, http://www.bcschools.net/staff/