Baze de Date - Access - Laborator de Ioan Mocian

74
Ioan MOCIAN BAZE DE DATE Lucrri de laborator UNIVERSITATEA PETRU MAIOR TÂRGU MURE 2008

description

Ioan MOCIANBAZE DE DATELucr ri de laboratorUNIVERSITATEA PETRU MAIOR TÂRGU MURE 2008Cuvânt înaintePrezentul îndrum tor de lucr ri de laborator pentru baze de date vine s completeze cursul de baze de date cu aspectele practice care trebuie testate în cadrul laboratorului i proiectului. Acest îndrum tor urm re te structura cursului predat i se compune din 5 lucr ri de laborator care se vor executa pe durata mai multor edin e. Lucr rile de laborator propuse vor trebui efectuate consecvent,

Transcript of Baze de Date - Access - Laborator de Ioan Mocian

Page 1: Baze de Date - Access - Laborator de Ioan Mocian

Ioan MOCIAN

BAZE DE DATE

Lucr�ri de laborator

UNIVERSITATEA PETRU MAIOR TÂRGU MURE�

2008

Page 2: Baze de Date - Access - Laborator de Ioan Mocian

Cuvânt înainte

Prezentul îndrum�tor de lucr�ri de laborator pentru baze de date vine s� completeze cursul de baze de date cu aspectele practice care trebuie testate în cadrul laboratorului �i proiectului. Acest îndrum�tor urm�re�te structura cursului predat �i se compune din 5 lucr�ri de laborator care se vor executa pe durata mai multor �edin�e.

Lucr�rile de laborator propuse vor trebui efectuate consecvent, deoarece ele sunt gândite ca un proces continuu, adic� rezultatele lor vor fi folosite de lucr�rile care urmeaz�. Prin urmare, acestea nu se pot face decât în ordinea lor fireasc�. Cu cât ve�i lucra mai con�tiincios, cu atât ve�i avea satisfac�ii mai mari �i mai pu�in timp irosit.

Trebuie s� ave�i în vedere c� bazele de date, trebuie s� aib� date coerente pentru a putea s� test�m func�ionarea formularelor, interog�rilor �i rapoartelor. Fiecare student va trebui s� implementeze proiectul biblioteca cu propriile date introduse, parcurgând toate etapele de proiectare �i implementare a unei baze de date.

Proiectul „Biblioteca” implementat corect v� asigur� nota de trecere a examenului prin sus�inerea lui în cadrul colocviului.

Con�inutul celor 4 lucr�ri, sau mai corect spus, 3 lucr�ri de laborator �i un proiect, este urm�torul:

Lucrarea 1 con�ine studierea conceptelor bazelor de date rela�ionale. La sfâr�itul lucr�rii sunt enumera�i termenii pe care studentul îi are de clarificat. În Excel ca trebui sa dea exemple din cele 3 tipuri de rela�ii existente 1:1, 1:N �i N:N.

Lucrarea 2 este dedicat� studierii etapelor de proiectare a unei baze de date, vor fi studiate cele 7 etape ale unui proiect, cu exemplificare proiectul „Biblioteca”. La sfâr�itul lucr�rii, studen�ii vor avea create structura tabelelor, diagrama de rela�ii �i completate 10 formulare cu specifica�ii de câmp.

Lucrarea 3 este dedicat� studierii limbajului SQL, con�inând exemple cu instruc�iunile de baz�. Studen�ii trebuie s� în�eleag� func�ionarea expresiilor prezentate, s� le explice �i poat� concepe alte exemple. Aceste expresii vor fi reluate, pe viu, în cadrul programului Access.

Lucrarea 4 cuprinde ini�ierea în utilizarea programului Access cu finalitate în implementarea proiectului „Biblioteca”. Se întinde pe durata a mai multor laboratoare, iar în final fiecare student va avea propria aplica�ie de baz� de date în Access numit� Biblioteca_nume_prenume.mdb.

Lucrarea 5 este dedicat� elementelor de performan�� ale programului Access, în care se vor crea macro-uri �i se va particulariza aplica�ia „Biblioteca”, pentru a ar�ta ca o aplica�ie profesional�.

Aplica�ia „Biblioteca” prezentat� în acest îndrum�tor poate fi un bun exemplu pentru aplica�ii proprii.

Târgu Mure�, 20 ianuarie 2008 Autorul

3

Page 3: Baze de Date - Access - Laborator de Ioan Mocian

Cuprins Cuvânt înainte .............................................................................................................. 3

Lucrarea 1. Terminologia bazelor de date rela�ionale ............................................. 6 Defini�ii .............................................................................................................. 6 Desf��urarea lucr�rii ........................................................................................ 15

Lucrarea 2. Elemente de proiectare a bazelor de date rela�ionale ....................... 16 Considera�ii teoretice ……………………………………………………….. 16 Studiu de caz. Proiectarea bazei de date „Biblioteca” ……………………… 16 Desf��urarea lucr�rii ....................................................................................... 17

Lucrarea nr. 3. Ini�iere în limbajul SQL ................................................................ 18 Opera�iuni simple folosind limbajul SQL ………………………………….. 18 Reg�sirea datelor …………………………………………………… 18 Sortarea datelor …………………………………………………….. 19 Filtrarea datelor …………………………………………………….. 20 Operatorii clauzei WHERE ………………………………………… 20 Filtrare avansat� …………………………………………………… 21

Opera�iuni avansate folosind limbajul SQL ………………………. 25 Câmpuri calculate …………………………………………. 25

Desf��urarea lucr�rii ......................................................................... 26

Lucrarea nr. 4. Studiu de caz: Baza de date ” Biblioteca” ................................. 27 Considera�ii generale despre programul Access …………………………... 27

Interfa�a programului ACCESS …………………………………… 27 Crearea tabelelor …………………………………………………… 28 Rela�ii între tabele …………………………………………………. 30 Crearea rela�iilor cu Lookup Wizard ……………………………… 31 Crearea tabelelor bazei de date ”Biblioteca” ……………………… 34 Crearea formularelor pentru introducerea datelor ………………… 36 Testarea expresiilor SQL de la lucrarea nr. 3 ……………………… 42

Crearea interog�rilor ………………………………………………………. 44 Vederea ”C�r�ile din bibiotec�” ……………………………….…… 44

Vederea ”C�r�ile împrumutate” ……………………………………. 46 Vederea ”Situa�ie cititor” ………………………………………….. 46

Crearea formularelor pentru vizualizarea informa�iilor …………………… 47 Crearea formularului de vizualizare a c�r�ilor din bibliotec� ………………………………………………………. 49 Crearea formularului de vizualizare a situa�iei unui cititor …………………………………………………………. 51

Rapoartele bazei de date „Biblioteca” …………………………………….. 55 Finalizarea lucr�rii nr.4 ………………………………………………….… 59

Lucrarea nr. 5. Particularizarea bazei de date ” Biblioteca” ............................. 61 O scurt� prezentare a Macro-urilor ……………………………………….. 61 Crearea macro-urilor cu singur� ac�iune …………………………………. 62 Rularea unei macrocomenzi din fereastra Database ……………………… 63 Macrocomenzi ata�ate evenimentelor …………………………………….. 64 Utilizarea macrocomenzilor AutoExec �i AutoKeys …………………….. 64 Metod� rapid� de pornire a aplica�iilor …………………………………… 65 Desf��urarea lucr�rii ……………………………………………………… 66 Crearea macro-rilor aplica�iei ”Biblioteca” ……………………… 66

4

Page 4: Baze de Date - Access - Laborator de Ioan Mocian

Crearea formei de start pentru aplica�ia ”Biblioteca” ……..….…. 68 Adaptarea formularelor aplica�iei ”Biblioteca” …………………. 72 Configurarea formularului de start ……………………………… 73 Anexe Anexa A. Teme de proiect propuse …………………………………….. 74

Anexa B. Comenzile SQL ……………………………………………… 76 Anexa C.Formulare de proiectare a bazelor de date rela�ionale …………………………………………………..….. 78

5

Page 5: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.1

Lucrarea nr. 1. Terminologia bazelor de date rela�ionale

În aceast� lucrare se vor clarifica principalele no�iuni �i concepte care vor fi folosite în studiul bazelor de date rela�ionale.

Defini�ii

Baz� de date (Database) – O colec�ie de date înrudite, stocate în mod organizat, care se refer� la un anumit subiect sau obiectiv, împreun� cu instrumentele folosite pentru manipularea lor.

Date – Valorile care se stocheaz� în baza de date. Acestea sunt statice în sensul c� r�mân acelea�i pân� nu intervine o modificare manual� sau automat�.

Informa�ii - Reprezint� date pe care le prelucr�m într-un mod care le confer� semnifica�ie �i utilitate pentru noi atunci când lucr�m cu respectivele date. Informa�iile sunt dinamice, în sensul c� se modific� în permanen�� dup� cum se modific� datele din baza de date, dar �i în sensul c� pot fi prelucrate într-un num�r nelimitat de moduri. Ideea care trebuie re�inut� este c� trebuie s� prelucr�m datele pentru a le putea transforma în informa�ii cu sens.

Valoare nul� - Reprezint� o valoare care lipse�te sau care nu este cunoscut�. Deseori, valoarea nul� se confund� cu un zero sau unul sau mai multe spa�ii albe, ceea ce este total gre�it, din urm�toarele motive:

• Un zero poate avea mai multe semnifica�ii cum ar fi nivelul stocului unui anumit produs, num�rul de apari�ii a unui cod etc.

• De�i un �ir text format din unul sau mai multe spa�ii albe nu înseamn� nimic pentru cei mai mul�i dintre noi, reprezint� categoric semnifica�ie pentru un limbaj de interogare cum ar fi SQL. Un spa�iu alb este un caracter ca oricare altul cum ar fi “a”.

• Un �ir de lungime zero – adic� dou� ghilimele consecutive f�r� spa�iu între ele “”, este de asemenea o valoare acceptabil� pentru limbaje precum SQL �i poate fi semnificativ� în anumite circumstan�e.

Tabel (Table) - Reprezint� structurile esen�iale dintr-o baz� de date, iar fiecare tabel reprezint� întotdeauna un singur subiect concret, cum ar fi studen�i, produse, vânz�ri etc. Ordinea logic� a înregistr�rilor �i a câmpurilor din cadrul unui tabel nu are nici o importan��, iar fiecare tabel con�ine cel pu�in un câmp – cunoscut sub numele de cheie primar� – care identific� în mod unic fiecare înregistrare a tabelului. Un exempu de tabel:

StudentID Nume Prenume Sectia <<alte câmpuri>> 5001 Pop Mariana TCM 5002 Ban Ioan TCM 5012 Laz�r Ana IEI 5065 Ban Lucia IMPI 5032 Pop Dorin MEC

Înregistr�ri

Câmpuri

6

Page 6: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.1

Datele dintr-o baz� de date rela�ional� pot exista independent de modul în care sunt stocate fizic în calculator, datorit� acestor ultime dou� caracteristici ale unui tabel. Pentru utilizator acest lucru este foarte bun, deoarece acesta nu mai trebuie s� cunoasc� loca�ia fizic� a unei înregistr�ri pentru a putea reg�si datele.

Subiectul pe care îl reprezint� un tabel dat poate fi un obiect sau un eveniment. Când subiectul este un obiect, tabelul reprezint� o cantitate palpabil�, precum o persoan�, un produs sau un lucru oarecare. Indiferent de tipul s�u, un obiect are caracteristici care pot fi stocate sub form� de date, care vor putea fi prelucrate ulterior într-un num�r mare de moduri.

Când subiectul unui tabel este un eveniment, înseamn� c� tabelul reprezint� ceva care se produce la un anumit moment de timp �i care are caracteristici pe care dori�i s� le înregistra�i. Exemplul clasic care se poate da aici este tabelul cu consulta�iile �inute de un medic de familie.

Tabelele pot fi, într-o alt� clasificare, de dou� tipuri:

• Tabele de date care furnizeaz� date folosite pentru furnizarea de informa�ii �i reprezint� tipul de tabel cel mai frecvent întâlnit într-o baz� de date. Datele din acest tip de tabel sunt dinamice deoarece se pot manipula (modificare, �tergere) �i converti în informa�ii într-o anumit� form� sau manier�. Cu astfel de tabele ve�i lucra foarte frecvent în decursul lucrului cu baza de date.

• Tabele de validare care stocheaz� date pe care le ve�i folosi cu scopul precis de a implementa integritatea datelor. De obicei, un tabel de validare con�ine nume de localit��i, coduri de produse, categorii de activit��i etc. Datele din acest tip de tabel sunt statice, adic� se modific� foarte rar.

Câmp (Field) - Reprezint� cea mai mic� structur� din baza de date �i reprezint� o caracteristic� a subiectului tabelului c�ruia îi apar�ine. Câmpurile sunt structurile care stocheaz� efectiv datele, care apoi pot fi reg�site �i prezentate ca informa�ii în aproape orice configura�ie pe care o pute�i imagina. Fiecare câmp dintr-o baz� de date corect proiectat� con�ine singur� valoare, iar numele s�u va identifica tipul de valoare admis. Astfel, procesul de introducere a datelor devine foarte intuitiv.

Înregistrare (Record) - Reprezint� o instan�� unic� a subiectului unui tabel. Înregistrarea este alc�tuit� din întregul set de câmpuri dintr-un tabel, indiferent dac� respectivele câmpuri con�in sau nu valori. Datorit� modalit��ii de definire a unui tabel, fiecare înregistrare este definit� în baza de date prin intermediul unei valori unice a câmpului cheie primar� a înregistr�rii respective. Astfel, dac� avem un tabel de persoane, o înregistrare din tabel trebuie s� identifice fiecare persoan� din tabel, care este un unicat.

Înregistr�rile reprezint� un element cheie pentru în�elegerea rela�iilor dintre tabele, deoarece va trebui s� cunoa�te�i rela�ia dintre o înregistrare a unui tabel �i alte înregistr�ri din alt tabel.

Vedere (Query) - Este un tabel “virtual” compus din câmpuri dintr-unul sau mai multe tabele ale bazei de date; tabelele care alc�tuiesc vederea sunt cunoscute sub numele de tabele de baz�. Modelul rela�ional îi atribuie unei vederi atributul de virtual� deoarece î�i preia datele din tabele de baz�, nu-�i stocheaz� propriile sale date. De fapt, singurele informa�ii referitoare la o vedere care sunt stocate în baza de date se refer� la structura vederii respective. Numeroase programe SGBDR principale lucreaz� cu vederi, dar unele (precum Microsoft Access) le denumesc interog�ri salvate.

7

Page 7: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.1

Impresari

Cheie primar�

Sportivi

Cheie extern�

Cheie (Key) - sunt acele câmpuri speciale care îndeplinesc roluri foarte bine determinate în cadrul unui tabel, iar tipul cheii define�te rolul acesteia în interiorul tabelului. Un tabel poate con�ine numeroase tipuri de chei, dar cele mai importante sunt cheia primar� �i cheia extern�.

O cheie primar� este un câmp sau un grup de câmpuri care identific� în mod unic fiecare înregistrare din cadrul unui tabel; dac� o cheie primar� este compus� din dou� sau mai multe câmpuri, este cunoscut� sub numele de cheie primar� compozit�. O valoare a unei primare identific� o anumit� înregistrare din întreaga baz� de date. Cheia primar� impune integritatea la nivel de tabel �i faciliteaz� stabilirea rela�iilor cu alte tabele din baza de date.

O cheie extern� dintr-un tabel este acea cheie care este cheie primar� în alt tabel. Ea nu trebuie s� fie unic� dup� cum ve�i observa în urm�torul exemplu, rolul ei este, în special, de a asigura leg�tura cu alt tabel. În figura 1.2 se pot vedea o cheie primar� �i o cheie extern�.

Fig.1.2. Exemplu de câmpuri cheie primar� �i cheie extern�

Se observ� cum câmpul ImpresarID este cheie primar� pentru tabelul Impresari �i cheie extern� pentru tabelul Sportivi. Acolo unde este cheie extern�, valoarea ei se poate repeta, ceea ce este firesc, deoarece un impresar poate avea mai mul�i sportivi. Câmpul ImpresarID din cele dou� tabele asigur� leg�tura dintre ele, asigurând în acela�i timp �i integritatea datelor, adic� fiecare sportiv are un impresar valabil.

Când determina�i c� între dou� tabele exist� o rela�ie, în mod caracteristic stabili�i rela�ia respectiv� preluând o copie a cheii primare din primul tabel �i încorporând-o în structura celui de-al doilea tabel, unde devine cheie extern�. Numele de „cheie extern�” deriv� din faptul c� al doilea tabel are deja o cheie primar� proprie, iar cheia primar� pe care o introduce�i din primul tabel este „extern�” pentru al doilea tabel.

Index - Este o structur� pe care un program SGBDR o pune la dispozi�ie pentru îmbun�t��irea procesului de prelucrare a datelor. Un index nu are nici o leg�tur� cu structura logic� a bazei de date. Unicul motiv pentru care discut�m despre termenul index în acest capitol este faptul c� oamenii îl confund� deseori cu termenul cheie.

Index �i cheie reprezint� o alt� pereche de termeni folosi�i eronat în mod frecvent �i pe scar� larg� în industria bazelor de date. (Mai �ine�i minte deosebirile dintre date �i informa�ii?). Ve�i sesiza întotdeauna diferen�a dintre cei doi termeni dac� re�ine�i c�, în timp ce cheile sunt structuri logice pe care la identificarea înregistr�rilor dintr-un tabel, indec�ii reprezint� structuri fizice utilizate la optimizarea procesului de prelucrare a datelor.

Prin folosirea indec�ilor, sort�rile �i filtr�rile unei baze de date se face într-un timp mult mai scurt.

ImpresarID Nume Prenume Telefon 100 Becali Ioan 0745-655482 101 Popescu Gic� 0745-658312 102 Becali Victor 0744-547212

SportivID ImpresarID Nume sportiv Telefon <<alte câmpuri>> 8001 100 Mutu Adrian 0745-657329 8002 101 Neaga Ioan 0744-768432 8003 100 Chivu Cristian 0723-546291

Cheie primar�

8

Page 8: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.1

Studenti

Rela�ii (Relationships) - Între dou� tabele exist� o rela�ie atunci când înregistr�rile din primul tabel pot fi asociate cu înregistr�rile din al doilea tabel. Rela�ia se poate stabili prin intermediul unui set de chei primare �i chei externe sau cu ajutorul unui al treilea tabel, numit tabel de leg�tur� (cunoscut �i sub numele de tabel asociativ).

Figura 1.3 ilustreaz� rela�ii stabilite prin intermediul cheilor primare �i al cheilor externe.

StudID Nume Prenume OrasStudent <<alte câmpuri>> 6001 Pop Remus Reghin ........ 6002 Szabo Zoltan Oradea ........ 6003 Costea Florian Zalau ........ 6004 Timocea Sebastian Brasov ........ 6004 Mocean Vasile Fagaras ........

O rela�ie este o component� important� a unei baze de date rela�ionale. O rela�ie permite crearea de vederi din tabele multiple �i este crucial� pentru integritatea datelor, întrucât contribuie la cantit��ii de date redundante �i la eliminarea datelor duplicate. Pute�i caracteriza o rela�ie în trei moduri: în func�ie de tipul rela�iei dintre tabele, de maniera în care fiecare tabel particip� la rela�ie �i de gradul de participare al fiec�rui tabel.

Rela�ii ”unu cu unu” - Dou� tabele au o rela�ie unu cu unu când o singur� înregistrare din primul tabel este corelat� cu o singur� înregistrare din al doilea tabel �i o singur� înregistrare din al doilea tabel este corelat� cu o singur� înregistrare din primul tabel. În figura 2.10 este reprezentat� o astfel de rela�ie.

Într-o asemenea rela�ie, un tabel serve�te ca “tabel p�rinte”, iar cel�lalt îndepline�te rolul de “tabel copil”. Rela�ia se stabile�te prin preluarea unei cópii a cheii primare a tabelului p�rinte �i încorporarea acesteia în structura tabelului copil, unde devine o cheie extern�. Acesta este un tip special de rela�ie, deoarece este unicul în cadrul c�ruia ambele tabele pot folosi efectiv aceea�i cheie primar�.

În figura 1.4 este prezentat un exemplu clasic de rela�ie unu la unu. În acest caz SALARIA�I este tabelul p�rinte, iar SALARIU este tabelul copil. Se observ� c� fiecare salariat din primul tabel are un singur corespondent din al doilea tabel.

StudID CursID 6001 C001 6002 C213 6002 C001 6001 C213 6002 C015 6003 C001 6003 C213 6001 C015 6003 G001 6001 G001

CursID Denumire Credite ProfesorID C001 PUC 5 25461 C213 Baze de date 5 25461 C032 SIM 4 56821 C015 GD 5 12843 G001 AutoCAD 4 32584 G004 Inventor 5 3212 G007 Intellicad 4 25461

Fig .1.3. Rela�ii între tabele

Orar student(table de leg�tur�) Cursuri

9

Page 9: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.1

Clienti

Salaria�i

Fig. 1.5. Exemplu de rela�ie „unu cu mai mul�i”

Imprumuturi

SalariatID Nume Prenume Telefon <<alte câmpuri>> 100 Ban Ioan 0745-646321 ….. 101 Pop Dorin 0723-548211 ….. 102 Laz�r Liviu 0264-542138 ….. 103 Cri�an Ovidiu 0740-764282 …..

Fig. 1.4. Exemplu de rela�ie „unu la unu”

Rela�ia unu la unu poate fi imaginat� ca o “rupere” în dou� a tabelului. De�i câmpurile din aceste tabele pot fi combinate într-un singur tabel, proiectantul bazei de date a ales s� plaseze în tabelul SALARIA�I câmpurile ce pot fi v�zute de orice membru al organiza�iei �i în tabelul SALARIU câmpurile ce pot fi v�zute doar de personalul autorizat, �tiut fiind c� salariile sunt, de obicei, confiden�iale.

Rela�ii „unu cu mai mul�i” - Între dou� tabele exist� o rela�ie unu cu mai mul�i când o înregistrare din primul tabel poate fi corelat� cu una sau mai multe înregistr�ri din al doilea tabel, în timp ce o înregistrare din al doilea tabel poate fi corelat� cu o singur� înregistrare din primul tabel. S� studiem un exemplu generic pentru acest tip de rela�ie.

Modelul p�rinte/copil pe care l-am utilizat pentru a descrie o rela�ie „unu cu unu” se aplic� �i în acest caz, partea unu a rela�iei este tabelul p�rinte, iar tabelul din partea mai mul�i este tabelul copil. O rela�ie de tipul unu cu mai mul�i se stabile�te prin preluarea unei cópii a cheii primare a tabelului p�rinte �i încorporarea acesteia în structura tabelului copil, unde devine o cheie extern�.

Exemplul din figura 1.5 ilustreaz� o rela�ie de tip unu cu mai mul�i caracteristic�.

SalariatID Salar orar Sporuri <<alte câmpuri>> 100 34.50 10% ….. 101 23.00 5% ….. 102 17.45 20% ….. 103 16.00 18% …..

ClientID CarteID Data 9002 5648 .... 9001 690423 .... 9004 6563 .... 9003 65323 .... 9003 09542 .... 9003 64823 .... 9002 75001 .... 9005 10045 .... 9005 76100 ....

ClientID Nume Prenume <alte câmp.> 9001 Pop Dorin ....... 9002 Ban Ion ....... 9003 Laz�r Ana ....... 9004 Buzan Maria ....... 9005 Beldean Vian .......

Salariu

10

Page 10: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.1

Cursuri

Studenti

O singur� înregistrare din tabelul CLIENTI poate fi corelat� cu una sau mai multe înregistr�ri din tabelul IMPRUMUTURI, dar o înregistrare din tabelul IMPRUMUTURI este corelat� cu o singur� înregistrare din tabelul CLIENTI. Dup� cum probabil a�i dedus, câmpul ClientID este o cheie extern� în tabelul IMPRUMUTURI.

Rela�ia unu cu mai mul�i este cea mai obi�nuit� rela�ie care exist� între dou� tabele dintr-o baz� de date �i este cea mai u�or de identificat. Rela�ia este extrem de important� din punct de vedere al integrit��ii datelor, deoarece ea v� ajut� s� elimina�i datele duplicate.

Rela�ii de tip ”mai mul�i cu mai mul�i” - Între dou� tabele exist� o rela�ie de mai mul�i cu mai mul�i când o înregistrare din primul tabel poate fi corelat� cu una sau mai multe înregistr�ri din al doilea tabel �i o înregistrare din al doilea tabel poate fi corelat� cu una sau mai multe înregistr�ri din primul tabel. O rela�ie din aceast� categorie se stabile�te cu ajutorul unui tabel de leg�tur�. Un tabel de leg�tur� faciliteaz� asocierea înregistr�rilor dintr-un tabel cu înregistr�rile din cel�lalt tabel �i asigur� lipsa oric�ror probleme la opera�iile de ad�ugare, �tergere sau modificare a datelor corelate.

Un tabel de leg�tur� se define�te prin preluarea unor cópii ale cheii primare din fiecare tabel �i utilizarea lor pentru a forma structura noului tabel. În realitate, aceste câmpuri îndeplinesc dou� roluri distincte: împreun� formeaz� cheia primar� compozit� a tabelului de leg�tur�, iar separat, fiecare poate fi asimilat� unei chei externe.

O rela�ie de tip mai mul�i cu mai mul�i care nu este stabilit� în mod corespunz�tor se nume�te „nerezolvat�”. Figura 1.6 prezint� un exemplu clasic �i clar de rela�ie de tip mai mul�i cu mai mul�i nerezolvat�. În acest exemplu, o înregistrare din tabelul STUDENTI poate fi corelat� cu mai multe înregistr�ri din tabelul CURSURI, în timp ce o singur� înregistrare din tabelul CURSURI poate fi corelat� cu mai multe înregistr�ri din tabelul STUDENTI.

Aceast� rela�ie este nerezolvat� datorit� particularit��ii intrinseci a rela�iei de tip mai mul�i cu mai mul�i. Principala problem� este urm�toarea: cum se pot asocia cu u�urin�� înregistr�ri din primul tabel cu înregistr�rile din al doilea tabel? Pentru a reformula întrebarea folosind

StudID Nume Prenume OrasStudent <<alte câmpuri>> 6001 Pop Remus Reghin ........ 6002 Szabo Zoltan Oradea ........ 6003 Costea Florian Zalau ........ 6004 Timocea Sebastian Brasov ........ 6004 Mocean Vasile Fagaras ........

CursID Denumire Credite ProfesorID Sala <<alte câmpuri>> C001 PUC 5 25461 208 ........ C213 Baze de date 5 25461 208 ........ C032 SIM 4 56821 209 ........ C015 GD 5 12843 207 ........ G001 AutoCAD 4 32584 207 ........ G004 Inventor 5 3212 208 ........ G007 Intellicad 4 25461 208 ........

Fig. 1.6. Un exemplu tipic de rela�ie „mai mul�i cu mai mul�i” nerezolvat�

11

Page 11: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.1

tabelele din figura 1.6, cum se asociaz� un student cu mai multe cursuri sau un anumit curs cu mai mul�i studen�i? Se insereaz� câteva câmpuri Student în tabelul CURSURI sau mai multe câmpuri Curs în tabelul STUDENTI? Oricare din aceste metode va îngreuna lucrul cu datele �i va afecta în mod negativ integritatea datelor. Cea mai bun� metod� const� în din crearea �i utilizarea unui tabel de leg�tur�, care va rezolva rela�ia de tip mai mul�i cu mai mul�i în maniera cea mai adecvat� �i mai eficient�. Figura 1.7 prezint� implementarea practic� a cestei solu�ii.

Este important ca dumneavoastr� s� cunoa�te�i tipul de rela�ie care exist� între tabelele dintr-o pereche, deoarece acesta determin� modul în care sunt corelate tabelele, dac� înregistr�rile din tabele sunt interdependente sau nu, precum �i num�rul minim �i maxim de înregistr�ri corelate care pot exista în cadrul rela�iei.

Tipul de participare - Când stabili�i o rela�ie între dou� tabele, fiecare tabel particip� la rela�ie într-o manier� particular�. Tipul de participare pe care îl atribui�i unui tabel dat determin� dac� în respectivul tabel trebuie s� existe o înregistrare înainte de a putea introduce înregistr�ri în tabelul corelat. Exist� dou� tipuri de particip�ri:

• Obligatorie - tabelul trebuie s� con�in� cel pu�in o înregistrare înainte de a putea introduce înregistr�ri în tabelul corelat.

• Op�ional� – nu este obligatoriu ca tabelul s� con�in� vreo înregistrare înainte de a putea introduce înregistr�ri în tabelul corelat.

Gradul de participare - Determin� num�rul minim de înregistr�ri existente într-un tabel al unei rela�ii, asociate cu o singur� înregistrare a unui tabel corelat, respectiv num�rul maxim de înregistr�ri care pot exista într-un tabel al unei rela�ii, asociate cu o singur� înregistrare din tabelul corelat.

StudID Nume Prenume OrasStudent <<alte câmpuri>> 6001 Pop Remus Reghin ........ 6002 Szabo Zoltan Oradea ........ 6003 Costea Florian Zalau ........ 6004 Timocea Sebastian Brasov ........ 6004 Mocean Vasile Fagaras ........

StudID CursID 6001 C001 6002 C213 6002 C001 6001 C213 6002 C015 6003 C001 6003 C213 6001 C015 6003 G001 6001 G001

CursID Denumire Credite ProfID C001 PUC 5 25461 C213 Baze de date 5 25461 C032 SIM 4 56821 C015 GD 5 12843 G001 AutoCAD 4 32584 G004 Inventor 5 3212 G007 Intellicad 4 25461

Fig. 1.7. Rezolvarea unei rela�ii de tip mai mul�i cu mai mul�i cu ajutorul unui tabel de leg�tur�

12

Page 12: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.1

Specifica�ie de câmp - Reprezint� toate elementele unui câmp. Fiecare specifica�ie de câmp încorporeaz� trei tipuri de elemente: generale, fizice �i logice.

• Elementele generale reprezint� informa�iile fundamentale referitoare la câmp �i includ elemente precum numele câmpului, descrierea �i tabelul p�rinte.

• Elementele fizice determin� modul de construire a unui câmp �i modul de reprezentare a acestuia pentru persoana care îl utilizeaz�. Aceast� categorie include elemente precum tipul de date, lungimea �i formatul de afi�are.

• Elementele logice descriu valorile stocate într-un câmp �i includ articole precum valoarea obligatorie, intervalul de valori �i valoarea prestabilit�.

Aceste specifica�ii de câmp o s� le completa�i folosindu-v� de ni�te formulare, care vor fi descrise în detaliu în capitolul urm�tor.

Integritatea datelor - prin se în�elege validitatea, consecven�a �i acurate�ea datelor incluse într-o baz� de date. Nu pot accentua suficient faptul c� nivelul de acurate�e al informa�iilor pe care le reg�si�i din baza de date este direct propor�ional cu nivelul de integritate al datelor pe care îl impune�i bazei de date.

Integritatea datelor reprezint� unul dintre cele mai importante aspecte ale procesului de proiectare a bazelor de date �i nu v� este permis s�-l subestima�i, s�-l trece�i cu vederea �i nici m�car s�-l neglija�i par�ial. Trebuie s� fi�i con�tient de faptul c� dac� nu respecta�i regulile de integritate, sunte�i pasibili de a ob�ine informa�ii cu grave erori, care sunt greu de depistat. Gândi�i-v� numai la implica�iile posibile atunci când baza dumneavoastr� de date e folosit� pentru tranzac�ii comerciale sau financiare.

Exist� patru tipuri de integritate a datelor pe care le ve�i implementa pe durata procesului de proiectare a bazelor de date. Trei dintre acestea se bazeaz� pe diferite aspecte ale structurii bazei de date �i sunt denumite în conformitate cu zona (nivelul) la care opereaz�. Cel de-al patrulea tip de integritate a datelor se bazeaz� pe modul în care o organiza�ie î�i percepe �i î�i utilizeaz� datele.

În continuare vor fi prezentate descrierile fiec�rui tip de integritate.

• Integritatea la nivel de tabel asigur� lipsa înregistr�rilor duplicate în interiorul tabelului �i faptul c� acel câmp care identific� fiecare înregistrare din tabel este unic �i nu are niciodat� valoare nul�.

• Integritatea la nivel de câmp asigur� faptul c� structura fiec�rui câmp este solid�, c� valorile din fiecare câmp sunt valide, consecvente �i precise, precum �i c� se asigur� o definire consecvent�, în întreaga baz� de date, a câmpurilor de acela�i tip (Cod postal, de exemplu).

• Integritatea la nivel de rela�ie (cunoscut� �i sub numele de integritate referen�ial�) asigur� soliditatea rela�iei dintre dou� tabele, precum �i faptul c� înregistr�rile din tabele sunt sincronizate ori de câte ori se introduc, se actualizeaz� sau se �terg date din oricare dintre cele dou� tabele.

• Reguli de desf��urare a activit��ii impun restric�ii sau limit�ri asupra anumitor aspecte ale bazei de date, pe baza modalit��ilor în care o organiza�ie î�i percepe �i î�i actualizeaz� datele. Aceste restric�ii pot afecta aspecte ale proiect�rii bazelor de date, precum �i intervalul �i tipurile de valori stocate într-un câmp, tipul �i gradul de participare a fiec�rui tabel în cadrul unei rela�ii, precum �i tipul de sincronizare utilizat pentru integritatea la nivel de rela�ie, în anumite rela�ii.

13

Page 13: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.1

Baza de date rela�ional� - A fost conceput� în anul 1969 �i este azi cel mai folosit model de baze de date în gestiunea bazelor de date. Acest model este fundamentat pe dou� ramuri ale matematicii – teoria mul�imilor �i logica predicatelor de ordinul întâi. Într-adev�r, numele modelului provine de la termenul rela�ie, care constituie o parte a teoriei mul�imilor.

O concep�ie gre�it�, larg r�spândit�, este aceea c� modelul rela�ional �i-ar fi preluat numele de la faptul c� între tabelele unei baze de date rela�ionale exist� rela�ii.

O baz� de date rela�ional� stocheaz� datele în rela�ii, pe care un utilizator le percepe ca pe ni�te tabele. Fiecare rela�ie este compus� din înregistr�ri �i câmpuri, iar ordinea fizic� a înregistr�rilor sau a câmpurilor dintr-un tabel este complet lipsit� de importan��, iar fiecare înregistrare a tabelului este identificat�, nu dup� locul unde se afl�, ci dup� un câmp care con�ine o valoare unic�. Prin urmare, utilizatorul nu este obligat s� cunoasc� loca�ia fizic� a unei înregistr�ri a�a cum se întâmpl� la celelalte modele de baz� de date (ierarhic �i re�ea), pentru reg�sirea datelor.

Sistem de gestiune a bazelor de date rela�ionale (SGBDR) - Este un program software folosit pentru crearea, între�inerea, modificarea �i manipularea unei baze de date rela�ionale. Numeroase programe SGBDR furnizeaz� �i instrumentele necesare pentru a putea crea aplica�ii destinate utilizatorilor finali care lucreaz� cu datele din baza de date. Numeroasele facilit��i oferite de diferi�i produc�tori evolueaz� foarte rapid, devenind din ce în ce mai performante.

Primele SGBDR-uri au fost concepute pentru sisteme de tip desktop. Acestea presupun existen�a unei copii a bazei de date pe fiecare calculator care nu este un mare avantaj, în ceea ce prive�te actualizarea datelor. În acest context a ap�rut necesitatea amplas�rii în mod centralizat a întregii baze de date care s� fie accesat� de to�i utilizatorii. A�a au ap�rut SGBDR-urile de tip client-server în care bazele de date se stocheaz� pe un server de baze de date, iar utilizatorii interac�ioneaz� cu datele prin intermediul unor aplica�ii rezidente pe propriul calculator numit clientul bazei de date.

Creatorul de baze de date folose�te programul client-server SGBDR pentru a crea �i între�ine programele de aplica�ie de baze de date �i programele accesorii pentru utilizatorul final. Acesta implementeaz� integritatea �i securitatea datelor din serverul de baze de date, având astfel posibilitatea de a fundamenta o diversitate de aplica�ii utilizator pe acela�i set de date, f�r� a afecta integritatea �i securitatea datelor.

Cele mai cunoscute SGBDR-uri sunt:

• Microsoft Access

• Microsoft SQL Server

• Oracle

• MySQL

• PostgreSQL

Microsoft Access este un SGBDR comercial de tip desktop, folosit pentru gestionarea bazelor de date de dimensiuni mici �i medii. Poate acoperi f�r� probleme segmentul firmelor mici �i mijlocii. Este sistemul de gestiune pe care îl vom studia �i noi în aceast� carte.

Microsoft SQL Server este un SGBDR de tip client-server care accept� baze de date foarte mari �i un num�r foarte mare de tranzac�ii �i ruleaz� numai pe sistemele de operare Windows. Este solu�ia ideal� pentru firmele mari, la un pre� de cost relativ sc�zut.

Oracle este liderul mondial al pie�ei SGBDR-urilor de tip client-server. Oracle accept� baze de date enorme �i un num�r imens de tranzac�ii. Oracle ruleaz� pe numeroase sisteme de operare, este un SGBDR complex a c�rui operare �i între�inere trebuie f�cute de un administrator special instruit pentru acest scop. Se întâlne�te la marile companii transna�ionale, deoarece pre�ul s�u este pe m�sura performan�elor.

14

Page 14: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.1

MySQL este un SGBDR din categoria open-source(codul surs� este pus gratuit la dispozi�ia utilizatorilor) fiind unul din liderii pie�ei. MySQL este rapid, stabil �i accept� baze de date de mari dimensiuni, dar îi lipsesc câteva din caracteristicile importante ale limbajului SQL. Versiunile viitoare î�i propun includerea acestor caracteristici. Ruleaz� pe mai multe sisteme de operare �i este gratuit pentru utilizarea în scopuri personale(care nu aduc un câ�tig).

PostgreSQL este un SGBDR din categoria open-source, fiind unul din liderii pie�ei. Accept� baze de date de mari dimensiuni, este recunoscut pentru setul s�u bogat de caracteristici.

Desf��urarea lucr�rii

Lucrarea se consider� efectuat� dac�: 1. Studentul �i-a însu�it termenii �i a în�eles conceptele de mai jos: Baz� de date

Date Informa�ii Valoare nul� Tabel Câmp Înregistrare Vedere Cheie Index Rela�ii Rela�ii ”unu cu unu” Rela�ii „unu cu mai mul�i” Rela�ii de tip ”mai mul�i cu mai mul�i” Tipul de participare Gradul de participare Specifica�ie de câmp Integritatea datelor Baza de date rela�ional� Sistem de gestiune a bazelor de date rela�ionale (SGBDR)

2. Pe baza exemplelor prezentate, studentul va concepe câte un exemplu original cu cele 3 tipuri de rela�ii între dou� tabele, care vor fi prezentate în Excel.

15

Page 15: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.2

Lucrarea nr. 2. Elemente de proiectare a bazelor de date rela�ionale

În aceast� lucrare se vor parcurge cele 7 etape de proiectare a unei baze de date, având ca scop familiarizarea studen�ilor cu problemele intervenite în conceperea unei baze de date.

Considera�ii teoretice

Ca orice lucru inventat de om, �i bazele de date au un scop bine definit. Este foarte important s� în�elegem scopul pentru care e nevoie de o baz� de date, pentru a alege cele mai optime solu�ii.

Înainte de a crea o baz� de date, aceasta trebuie proiectat�, la fel cum, pentru a construi o cas� avem nevoie de un proiect. Iat� cele 7 etape care trebuie parcurse pentru a face un proiect:

• Etapa 1 – Definirea unei declara�ii de inten�ie �i a obiectivelor misiunii;

• Etapa 2 – Analiza bazei de date curente;

• Etapa 3 – Crearea structurilor de date;

• Etapa 4 – Determinarea �i instituirea rela�iilor între tabele;

• Etapa 5 – Determinarea �i definirea regulilor de desf��urare a activit��ii;

• Etapa 6 – Determinarea �i definirea vederilor;

• Etapa 7 – Verificarea integrit��ii datelor.

Studen�ii vor studia din curs Capitulul 3, pentru a-�i însu�i cuno�tin�ele legate de fiecare etap� a procesului de proiectare. Pentru a în�elege la modul concret, cum se face proiectarea unei baze de date, vom aborda un studiu de caz.

Studiu de caz. Proiectarea bazei de date „Biblioteca”

Declara�ia de inten�ie. Rolul bazei de date este de a �ine la zi stocul de c�r�i din bibliotec� �i de a furniza informa�ii despre cititori �i împrumuturi.

Obiectivele misiunii:

• Dorim s� avem informa�ii despre autorii care au c�r�i în bibliotec�.

• Dorim s� avem informa�ii despre editurile care au c�r�i în bibliotec�.

• Dorim s� avem o clasificare a c�r�ilor pe domenii.

• Dorim s� avem informa�ii despre cititorii bibliotecii.

• Dorim s� avem situa�ii despre împrumuturi.

• Dorim s� �tim la un moment dat, unde sunt exemplarele unei anumite c�r�i.

16

Page 16: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.2

Studen�ii vor încerca s� formuleze alte versiuni ale declara�iei de inten�ie �i s� propun� �i alte obiective ale misiunii bazei de date.

Crearea structurilor de date �i a rela�iilor. Presupunem c� dup� analiza obiectivelor misiunii �i dup� mai multe itera�ii, am ajuns la structura prezentat� mai jos.

Crearea foilor de specifica�ii. Studen�ii vor completa foi de specifica�ii pentru cel pu�in 10 câmpuri care s� acopere toate tipurile de date. Formularele folosite sunt Specificatii camp.xls, care se g�se�te pe server în directorul Baze de date.

Desf��urarea lucr�rii

În directorul Biblioteca al fiec�rui student va trebui s� se creeze un fi�ier Word numit Documentatie proiect Biblioteca.doc în care vor apare Declara�ia de inten�ie, Obiectivele misiunii �i Diagrama de rela�ii. Diagrama se va executa în Word folosind comenzile Drawing.

De asemenea, în acela�i director ve�i crea fi�ierul Specificatii camp.xls, care va con�ine pe 10 foi, cele 10 specifica�ii de câmp cerute.

Observa�ie important�! Trata�i cu mare grij� cele 2 fi�iere cerute, pentru c� ele vor sta la baza lucr�rilor care urmeaz�.

17

Page 17: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.3

Lucrarea nr. 3. Ini�iere în limbajul SQL

Aceast� lucrare de laborator const� în parcurgerea exemplelor de expresii SQL pentru ca studen�ii s� în�eleag� acest limbaj, care va fi folosit în lucr�rile urm�toatoare.

Opera�iuni simple folosind limbajul SQL

Reg�sirea datelor

Reg�sirea datelor se face cu instruc�iunea SELECT, folosit� pentru a reg�si una sau mai multe coloane. Aceasta este cea mai folosit� instruc�iune din SQL.

Din tabelul tblStudenti prezentat în figura 3.1 ne propunem s� extragem numele �i prenumele studen�ilor.

Fig. 3.1. Tabelul tblStudenti simplificat

Expresie SQL:

SELECT Nume, Prenume FROM tblStudenti;

Rezultat:

StudID Nume Init Prenume Sectia An Grupa Stare 1 Bogdan P. Mircea Florin IEI 1 1311 Bugetar 2 Meruta I. Cosmin IEI 3 1332 Bugetar 3 Pop T. Marius Traian IEI 2 1321 Bugetar 4 Bucur P. Mihaela IEI 2 1321 Bugetar 5 Chirila I. Laura IEI 3 1331 Bugetar 6 Cotirla L. Raluca Adina TCM 1 1111 Bugetar 7 Cotoara G. Ovidiu TCM 1 1111 Bugetar 8 Cozma D. Dumitru TCM 2 1121 Bugetar 9 Damian N. Daniel MEC 4 1241 Bugetar

10 Farcas I. Calin Florin MEC 4 1241 Taxa

Nume Prenume Bogdan Mircea Florin Meruta Cosmin Pop Marius Traian Bucur Mihaela Chirila Laura Cotirla Raluca Adina Cotoara Ovidiu Cozma Dumitru Damian Daniel Farcas Calin Florin

18

Page 18: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.3

Observa�i expresia SQL care se cite�te astfel: selecteaz� coloanele Nume �i Prenume din tabelul tblStudenti. S-a folosit �i clauza FROM, a�a cum se vede. Rezultatul ob�inut este evident.

Dac� dori�i s� selecta�i toate coloanele tabelului se folose�te expresia urm�toare:

Expresie SQL:

SELECT * FROM tblStudenti

În locul listei de coloane se pune acest simbol „ * ”.

Sortarea datelor

Prin sortarea datelor se în�elege aranjarea înregistr�rilor unui tabel într-o anumit� ordine, de regul�, alfabetic� sau cresc�toare/descresc�toare. Sortarea datelor se face cu ajutorul clauzei ORDER BY a instruc�iunii SELECT.

La tabelul din figura 3.1 ne propunem s� scoatem numai numele �i prenumele studen�ilor dar în ordine alfabetic�.

Expresie SQL:

SELECT Nume, Prenume FROM tblStudenti ORDER BY Nume;

Rezultat:

Observa�i clauza ORDER BY care ordoneaz� înregistr�rile în ordine alfabetic� dup� valorile din câmpul Nume. Se pune întrebare, ce ne facem dac� vrem s� ordon�m invers alfabetic (de la Z la A)? Sau dac� avem un câmp numeric �i dorim s� ordon�m descresc�tor dup� acest câmp. Iat� r�spunsul:

• Pentru a indica ordinea descresc�toare de sortare se folose�te cuvântul cheie DESC.

• Dac� câmpul dup� care se face sortarea este alfanumeric, sortarea se face alphabetic, iar dac� este numeric sau de dat� calendaristic�, sortarea se face cresc�tor/descresc�tor.

• Dac� nu se indic� direc�ia de sortare, se ia sortarea cresc�toare care este implicit�. (Cazul prezentat.)

Iat� cum arat� o expresie SQL în care apare �i cuvântul cheie DESC:

Nume Prenume Bogdan Mircea Florin Bucur Mihaela Chirila Laura Cotirla Raluca Adina Cotoara Ovidiu Cozma Dumitru Damian Daniel Farcas Calin Florin Meruta Cosmin Pop Marius Traian

19

Page 19: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.3

Expresie SQL:

SELECT Nume, Prenume FROM tblStudenti ORDER BY Nume DESC

Re�ine�i c� rezultatul sort�rii datelor este un tabel care are acela�i num�r de înregistr�ri ca �i originalul.

Filtrarea datelor

Prin filtrarea datelor se în�elege extragerea dintr-un tabel numai a anumitor înregistr�ri de care avem nevoie, de exemplu, din tabelul de studen�i avem nevoie numai de cei din anul 2. Pentru a executa aceast� opera�iune ve�i folosi clauza WHERE a instruc�iunii SELECT.

Reg�sirea numai a înregistr�rilor dorite, presupune includerea în expresia SQL a unui criteriu de c�utare a înregistr�rilor dorite. Într-o instruc�iune SELECT, datele sunt filtrate prin specificarea criteriilor de c�utare în clauza WHERE. Locul acesteia este imediat dup� numele tabelului (clauza FROM), ca în exemplul urm�tor. Fie tabelul din figura 3.1.

Ne propunem s� filtr�m studen�ii din anul 2. expresia SQL este urm�toarea:

Expresie SQL:

SELECT StudID, Nume, Init, Prenume, Sectia, Grupa FROM tblStudenti WHERE An = ”2”;

Rezultat:

StudID Nume Init Prenume Sectia Grupa 3 Pop T. Marius Traian IEI 1321 4 Bucur P. Mihaela IEI 1321 8 Cozma D. Dumitru TCM 1121

Operatorii clauzei WHERE

Clauza WHERE pe care am examinat-o a testat egalitatea – determin� dac� o coloan� con�ine valoarea specificat�. Limbajul SQL accept� mai mul�i operatori condi�ionali, dup� cum urmeaz�:

• = Egalitate • <> Non-egalitate • != Non-egalitate • < Mai mic decât • <= Mai mic sau egal cu • !< Nu mai mic decât • > Mai mare decât • >= Mai mare sau egal cu • !> Nu mai mare decât • BETWEEN Între dou� valori specificate • IS NULL Este o valoare NULL

20

Page 20: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.3

Observa�i c� pentru non-egalitate exist� dou� simboluri, aceasta pentru c� diversele SGBDR-uri accept� pe unul sau altul dintre ele.

Iat� câteva cazuri concrete de folosire a operatorilor:

Interval de valori: WHERE Pret BETWEEN 2.5 AND 10; (afi�eaz� toate înregistr�rile care au în coloana „Pret” valori între 2.5 �i 10).

Valoare NULL: WHERE Pret IS NULL; (afi�eaz� toate înregistr�rile care nu au pre�).

Non-egalitate: WHERE Stare <> ”Bugetar”; (afi�eaz� toate înregistr�rile din tabelul studen�i, folosit mai înainte, care nu sunt bugetari). Este evident c� putem formula �i altfel condi�ia, dar aici am folosit non-egalitatea.

Ceilal�i operatori se folosesc la fel ca cel de egalitate prezentat pu�in mai în fa��.

Filtrare avansat�

Filtr�rile prezentate mai sus se întâlnesc mai rar în practic� deoarece sunt foarte simple. Filtr�rile pe care le ve�i folosi în mod curent, sunt filtr�ri mai complicate la care criteriile sunt exprimate prin expresii complexe. Aceste criterii creeaz� condi�ii puternice de c�utare. Vom folosi al�i operatori cum sunt AND, OR, NOT �i IN.

De multe ori, filtrarea dup� o coloan� nu rezolv� problema pe care o avem. Pentru a filtra dup� mai multe coloane se folose�te operatorul AND. Fie tabelul din figura 3.2. Ne propunem s� facem diferite filtr�ri.

Fig. 3.2. Tabel cu studen�i

Operatorul AND. Prima filtrare ar fi studen�ii de la IEI din anul 1. Iat� expresia SQL:

Expresie SQL:

SELECT Nume, Prenume, Grupa, Stare FROM tblStudenti WHERE Sectia=”IEI” AND An = ”1”;

Rezultat:

Nume Prenume Grupa Stare Bogdan Mircea Florin 1311 Bugetar Meruta Cosmin 1312 Taxa

StudID Nume Init Prenume Sectia An Grupa Stare 1 Bogdan P. Mircea Florin IEI 1 1311 Bugetar 2 Meruta I. Cosmin IEI 1 1312 Taxa 3 Pop T. Marius Traian IEI 2 1321 Bugetar 4 Bucur P. Mihaela IMPI 2 1321 Bugetar 5 Pop I. Laura IEI 3 1331 Taxa 6 Cotirla L. Raluca Adina TCM 1 1111 Bugetar 7 Cotoara G. Ovidiu TCM 1 1111 Bugetar 8 Cozma D. Dumitru TCM 2 1121 Bugetar 9 Damian N. Daniel MEC 4 1241 Bugetar

10 Cozma I. Calin Florin MEC 4 1241 Taxa

21

Page 21: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.3

Urm�ri�i expresia SQL �i verifica�i rezultatul ob�inut. Încerca�i �i alte filtr�ri asem�n�toare. Observa�i folosirea operatorului AND. Cum ar trebui modificat� expresia SQL, pentru a afi�a rezultatul în ordine alfabetic� invers�?

Operatorul OR. O alt� filtrare pe care ne-o propunem, este s� filtr�m studen�ii din anul 2 de la IEI sau TCM.

Expresie SQL:

SELECT Nume, Prenume,Sectia, Grupa, Stare FROM tblStudenti WHERE (Sectia=”IEI” OR Sectia=”TCM”) AND An = ”2”;

Rezultat:

Nume Prenume Sectia Grupa Stare Pop Marius Traian IEI 1321 Bugetar Cozma Dumitru TCM 1121 Bugetar

Observa�i folosirea parametrilor OR �i AND, respectiv apari�ia celor dou� paranteze. Aceste paranteze au leg�tur� cu ordinea opera�iilor OR �i AND. În ordinea opera�iilor, operatorul AND se execut� înaintea operatorului OR, ceea ce ar duce la rezultate eronate, de aceea a fost pus operatorul OR în parantez�, ca s�-l execute primul, �tiut fiind c� parantezele au prioritate la execu�ie.

Operatorul IN. Folosirea acestui operator are ca scop specificarea unui domeniu de condi�ii, oricare dintre ele putând fi îndeplinite. Operatorul IN necesit� o list� de valori valide, care s� fie separate prin virgule �i cuprinse între paranteze.

Ne propunem s� alegem din tabelul din figura 3.2 to�i studen�ii care au numele Pop �i Cozma.

Expresie SQL:

SELECT Nume, Prenume,Sectia, Grupa, Stare FROM tblStudenti WHERE Nume IN (“Pop”, “Cozma”);

Rezultat:

Nume Prenume Sectia Grupa Stare Pop Marius Traian IEI 1321 Bugetar Pop Laura IEI 1331 Taxa Cozma Dumitru TCM 1121 Bugetar Cozma Calin Florin MEC 1241 Taxa

Din analiza acestui exemplu, putem observa f�r� greutate c� operatorul IN face cam acela�i lucru ca �i operatorul OR, deci se poate scrie o expresie SQL cu acesta. Care este aceast� expresie?

Se pune, pe bun� dreptate, întrebarea de ce mai avem nevoie de înc� un operator dac� avem unul care face acela�i lucru. R�spunsul este c� operatorul IN are unele avantaje care îl fac de preferat fa�� de operatorul OR. Iat� aceste avantaje:

• Când lucra�i cu liste lungi de op�iuni valide, sintaxa operatorului IN este mai simpl� �i u�or de citit, principalul avantaj.

• Ordinea de evaluare este mai simplu de gestionat, când operatorul IN este folosit în asocia�ie cu operatorii AND �i OR.

22

Page 22: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.3 • Aproape totdeauna, operatorii IN se execut� mai rapid decât listele de operatori OR.

• Un mare avantaj este c� operatorul IN poate s� con�in� o alt� instruc�iune SELECT, �i astfel v� permite s� construi�i clauze WHERE foarte dinamice. Acest aspect va fi reluat mai târziu.

Operatorul NOT. Acest operator al clauzei WHERE are o singur� func�ie – neag� orice condi�ie care îl urmeaz�. Deoarece NOT nu este utilizat niciodat� în sine (totdeauna se folose�te în asocia�ie cu alt operator), sintaxa lui e diferit� de to�i ceilal�i operatori. Spre deosebire de al�i operatori, cuvântul cheie NOT poate fi utilizat înaintea coloanei dup� care se face filtrarea, nu imediat dup� aceasta.

Iat� un exemplu sugestiv, extragerea studen�ilor nebugetari din tabelul din figura 3.2.

Expresie SQL:

SELECT Nume, Prenume,Sectia, Grupa, Stare FROM tblStudenti WHERE NOT Stare=”Bugetar”;

Rezultat:

Nume Prenume Sectia Grupa Stare Meruta Cosmin IEI 1312 Taxa Pop Laura IEI 1331 Taxa Cozma Calin Florin MEC 1241 Taxa

Dup� cum se vede, acela�i lucru îl puteam ob�ine �i cu operatorul „<>”. Iar��i se pune întrebarea de ce s� folosim, totu�i, operatorul NOT? Într-adev�r, pentru clauzele WHERE simple, cum e cea prezentat�, nu se poate spune c� ar exista un avantaj real în folosirea operatorului NOT. Acesta este îns� foarte util în clauzele mai complexe. De exemplu, dac� folosi�i operatorul NOT în asocia�ie cu un operator IN, va fi mult mai simplu s� g�si�i toate înregistr�rile care nu corespund cu o list� de criterii.

Operatorul LIKE. Aici ve�i înv��a ce sunt caracterele de înlocuire, cum se folosesc ele �i cum s� face�i c�ut�ri cu ajutorul lor. Pân� acuma, to�i operatorii, foloseau valori cunoscute, iar ei se ocupau de c�utarea coresponden�elor dintre valori, dac� sunt mai mari sau mai mici decât altele, dac� verific� un domeniu de valori etc. De multe ori apare necesitatea filtr�rii înregistr�rilor dup� unele criterii care nu folosesc valori cunoscute în totalitate. De exemplu, dori�i s� c�uta�i nume de persoane care încep cu o liter�, care con�in un grup de litere etc. Acest lucru nu se poate face cu criterii simple comparare.

O solu�ie, pe care ne-o propune SQL, este folosirea caracterelor de înlocuire. Caracterele de înlocuire sunt caractere ce au în�elesuri speciale în clauzele WHERE din SQL, iar limbajul SQL accept� diverse tipuri de caractere de înlocuire.

Pentru a utiliza caracterele de înlocuire în clauzele de c�utare, trebuie utilizat operatorul LIKE. Acesta anun�� sistemul de gestiune a bazei de date c� în urm�torul model de c�utare se va folosi o potrivire dup� caractere de înlocuire, nu o simpl� potrivire de egalitate.

C�utarea cu caractere de înlocuire poate fi utilizat� numai cu câmpuri de tip text. Re�ine�i acest lucru!

În continuare vor fi prezentate caracterele de înlocuire folosite de programul ACCESS.

23

Page 23: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.3

Caracterul de înlocuire *. Este cel mai frecvent utilizat. Într-un �ir de c�utare, „ * ” înseamn� „corespunde cu oricâte apari�ii a oric�rui caracter”. Exemplul care urmeaz� v� va ajuta s� în�elege�i acest caracter.

Fig. 3.3. Tabel cu studen�i

Ne propunem s� filtr�m toate înregistr�rile în care numele studen�ilor, din tabelul din figura 3.3, începe cu „Pop”.

Expresie SQL:

SELECT Nume, Prenume,Sectia, Grupa, Stare FROM tblStudenti WHERE Nume LIKE ”Pop*” ORDER BY Nume;

Rezultat:

Nume Prenume Sectia Grupa Stare Pop Laura IEI 1331 Taxa Popa Ovidiu TCM 1111 Bugetar Popescu Marius Traian IEI 1321 Bugetar Popovici Dumitru TCM 1121 Bugetar

Observa�i ghilimelele care se pun �i ordonarea rezultatului dup� câmpul Nume. Încerca�i �i alte filtr�ri folosind aceast� tehnic�.

Caracterul de înlocuire „ ? ”. Acest caracter (semnul întreb�rii) este utilizat la fel ca simbolul „ * ”, dar nu asigur� coresponden�a mai multor caractere, ci numai a unuia singur. Exemplul care urmeaz� v� ajut� s� în�elege�i folosirea lui.

Folosind tabelul din figura 3.3, scrie�i expresii SQL care s� ilustreze folosirea acestui caracter de înlocuire.

Observa�ie! În diferite SGBDR semnele de înlocuire ar putea s� fie diferite. Astfel, în Oracle „ * ” este înlocuit cu „ % ”, iar „ ? ” este înlocuit cu liniu�a de subliniere „ _ ”. Pentru a nu avea probleme este bine s� studia�i documenta�ia SGBDR-ului pe care îl ve�i folosi.

StudID Nume Init Prenume Sectia An Grupa Stare 1 Bogdan P. Mircea Florin IEI 1 1311 Bugetar 2 Brustur I. Cosmin IEI 1 1312 Taxa 3 Popescu T. Marius Traian IEI 2 1321 Bugetar 4 Brucan P. Mihaela IMPI 2 1321 Bugetar 5 Pop I. Laura IEI 3 1331 Taxa 6 Cotirla L. Raluca Adina TCM 1 1111 Bugetar 7 Popa G. Ovidiu TCM 1 1111 Bugetar 8 Popovici D. Dumitru TCM 2 1121 Bugetar 9 Branea N. Daniel MEC 4 1241 Bugetar

10 Cozma I. Calin Florin MEC 4 1241 Taxa

24

Page 24: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.3 Opera�iuni avansate folosind limbajul SQL

Câmpuri calculate

Dup� �ti�i de la proiectarea bazelor de date, o regul� de baz� ne spune c� fiecare câmp trebuie s� fie independent, adic� valoare sa s� nu depind� de valorile din alte câmpuri. Exemplul clasic care se poate da aici este cel al câmpului Valoare care nu trebuie s� apar� într-un tabel care are Pretul unitar �i Cantitatea, dar avem nevoie de acest câmp care este rezultatul înmul�irii dintre pre� �i cantitate. Ei bine, acest câmp trebuie calculat.

Un alt exemplu este cel al adresei care se compune din concatenarea rezultatelor din mai multe câmpuri.

În ambele exemple, datele stocate în tabele nu sunt exact ceea ce are nevoie aplica�ia dumneavoastr�. În loc s� reg�si�i datele a�a cum sunt, pentru ca dup� aceea s� le reformata�i în aplica�ia client sau în raport, dori�i s� reg�si�i datele transformate, calculate sau reformatate direct din baza de date.

Aici intervin câmpurile cu valori calculate, pe care le vom numi în continuare câmpuri calculate. Spre deosebire de toate coloanele de pân� acum, câmpurile calculate nu exist�, de fapt, în baza de date. Un câmp calculat este creat din mers, în interiorul unei instruc�iuni SELECT din limbajul SQL.

De men�ionat faptul c� numai baza de date �tie care coloane dintr-o instruc�iune SELECT sunt realmente coloane din tabele �i care sunt câmpuri calculate. Din perspectiva unui client, datele unui câmp calculat sunt returnate în acela�i mod ca �i datele din oricare coloan�.

Cel mai simplu mod de a în�elege crearea câmpurilor calculate este de a alege exemple sugestive pe care s� le coment�m.

Câmpuri calculate prin concatenare. De multe ori apare necesitatea concaten�rii valorilor text din mai multe coloane. De exemplu, într-un raport trebuie s� scriem identitatea unei persoane format� din numele complet, a�a cum se obi�nuie�te în practic�. S� scriem expresia SQL care face acest lucru pentru persoanele din tabelul din figura 3.3.

Expresie SQL:

SELECT Nume + “ “ + Init + “ “ + Prenume AS Student, Sectia, An, Grupa, Stare FROM tblStudenti ORDER BY Nume;

Rezultat:

Student Sectia An Grupa Stare Bogdan P. Mircea Florin IEI 1 1311 Bugetar Branea N. Daniel MEC 4 1241 Bugetar Brucan P. Mihaela IMPI 2 1321 Bugetar Brustur I. Cosmin IEI 1 1312 Taxa Cotirla L. Raluca Adina TCM 1 1111 Bugetar Cozma I. Calin Florin MEC 4 1241 Taxa Pop I. Laura IEI 3 1331 Taxa Popa G. Ovidiu TCM 1 1111 Bugetar Popescu T. Marius Traian IEI 2 1321 Bugetar Popovici D. Dumitru TCM 2 1121 Bugetar

25

Page 25: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.3

Observa�i sintaxa folosit� �i ceva nou a ap�rut, cuvântul cheie AS dup� care urmeaz� cuvântul Student, pe care îl reg�sim în capul de tabel, ca nume a noului câmp, ob�inut prin concatenarea celor trei. Cuvântul cheie AS introduce un alias care este un nou nume dat unui câmp. Re�ine�i aceast� tehnic� de creare a unor câmpuri.

Câmpuri calculate aritmetic. Aceste câmpuri calculate rezult� dup� efectuarea unor calcule aritmetice asupra datelor reg�site. Pentru a în�elege mecanismul cre�rii acestor câmpuri, vom lua un exemplu practic. Presupunem c� avem un tabel în care �inem intr�rile într-o magazie de produse, al unei firme de comer� cu piese auto. Tabelul se nume�te tblProduse �i are coloanele Cod, Denumire, Furnizor, PU, Cantitate. Se cere un raport al intr�rilor în magazie în care apare �i câmpul Valoare, ob�inut prin produsul câmpurilor PU �i Cantitate. În figura 3.4 este prezentat acest raport.

Cod Denumire Furnizor PU Cantitate Valoare 1001 Bujie DK1 Sinterom SA 12 30 360 1023 Acumulator 56A Rombat SA 124 25 3100 1231 Parbriz VW Cobra SRL 512 12 6144 1089 Antigel -30 Promaxim SRL 5.2 50 26 1904 Ulei PKT 1 Calota SRL 6.4 60 384

Fig. 3.4. Raport cu câmpul valoare calculate

Expresie SQL:

SELECT Cod, Denumire, Furnizor, PU, Cantitate, PU*Cantitate AS Valoare FROM tblProduse;

Observa�i �i re�ine�i sintaxa folosit� pentru crearea noului câmp VALOARE.

Desf��urarea lucr�rii

Toate expresiile SQL studiate, se vor copia într-un fi�ier Word cu numele Expresii SQL studiate.doc care se va salva în directorul My Documents / Baze de date / Lucrarea 3.

Observa�ie important�! Toate expresiile SQL care vor fi în fi�ierul Word se presupune c� au fost studiate �i în�elese, studentul putând oricând s� dea explica�ii în leg�tur� cu ele, altfel va suporta consecin�ele. Aceste expresii vor vor fi testate în lucrarea nr. 4, pe viu, într-o baz� de date real�.

26

Page 26: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Lucrarea nr. 4. Studiu de caz: Baza de date ” Biblioteca”

Aceast� lucrare de laborator const� în implementarea în Access a bazei de date ”Biblioteca” pe care a�i proiectat-o în lucrarea nr. 2. Acum ve�i folosi cuno�tin�ele acumulate despre bazele de date într-o aplica�ie concret�, folosind programul Access.

Considera�ii generale despre programul Access

Interfa�a programului ACCESS

Pentru a lucra cu orice aplica�ie informatic�, primul lucru pe care trebuie s�-l facem este s�-i cunoa�tem interfa�a de pornire. Pentru ACCESS interfa�a de pornire apare dup� lansarea acestuia cu metoda general� Start / Programs / Microsoft Access. Ve�i g�si repede programul observând c� iconi�a sa con�ine mic� cheie de yal�. Toate capturile �i descrierile se refer� la versiunea Access 2003. Dac� ave�i alt� versiune trebuie s� �ine�i cont de diferen�ele care ar putea apare, care nu sunt, oricum, esen�iale.

Spre deosebire de alte programe Microsoft, programul ACCESS începe cu o caset� de dialog în care vi se cere numele �i s� alege�i directorul bazei de date pe care dori�i s� o deschide�i, chiar dac� este una nou� (Blank Database). Dup� ce a�i dat numele bazei de date noi, numit� aici „db1”, va apare interfa�a din figura 4.1.

Dup� cum se vede, o baz� de date ACCESS poate fi definit� ca o colec�ie de obiecte: • Tabele (tables) • Cereri de interogare (queries) • Formulare (forms)

Fig. 4.1. Interfa�a de pornire Access (fereastra Database)

27

Page 27: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4 • Rapoarte (reports) • Pagini Web (pages) • Comenzi macro (macros) • Module (modules)

În continuare vor fi prezentate, pe scurt, aceste obiecte, urmând s� fie reluate atunci când le vom folosi efectiv.

Tabele (tables) sunt obiecte definite de utilizator în care sunt stocate datele. Sunt obi�nuitele tabele ale bazelor de date.

Formulare (forms) sunt obiecte care permit introducerea datelor, afi�area acestora sau controlul întregii aplica�ii. Acestea v� permit s� face�i aplica�ii performante chiar dac� sunte�i un încep�tor în baze de date.

Cereri de interogare (queries) sunt obiecte care permit vizualizarea informa�iilor ob�inute prin prelucrarea datelor din una sau mai multe tabele �i/sau alte cereri de interogare. Aici ve�i folosi din plin cuno�tin�ele dobândite despre limbajul SQL.

Rapoarte (reports) sunt obiecte care permit formatarea �i tip�rirea informa�iilor ob�inute în urma consult�rii bazei de date, sub form� de documente pe hârtie.

Pagini Web (pages) reprezint� un obiect care include un fi�ier HTML �i alte fi�iere suport în vederea furniz�rii accesului la date prin intermediul Internet-ului.

Comenzi macro (macros) reprezint� un obiect care con�ine o defini�ie structurat� a uneia sau mai multor ac�iuni pe care ACCESS le realizeaz� ca un r�spuns la un anumit eveniment.

Module (modules) reprezint� un obiect care con�ine proceduri definite de utilizator, scrise în limbajul Visual Basic. Iat� o ocazie de a v� etala cuno�tin�ele de Visual Basic.

Pe lâng� obiectele prezentate, pe interfa�a de pornire, mai exist� câteva butoane (Open, Design, New, un buton de �tergere �i câteva de afi�are a obiectelor) a c�ror în�elegere �i rol este u�or de dedus, de aceea nu vor mai fi prezentate.

Dup� cum spuneam, ACCESS-ul are un instrument numit wizard care v� va ajuta s� construi�i mai u�or tabele, formulare sau interog�ri, dar un singur lucru nu poate face: s� v� suplineasc� lipsa cuno�tin�elor dobândite în capitolele precedente. Astfel, dac� nu a�i în�eles mecanismul leg�turilor dintre tabele, e pu�in probabil c� ve�i ajunge la rezultate mul�umitoare, chiar dac� sunte�i „monitoriza�i” îndeaproape de instrumentul wizard.

Crearea tabelelor

Înainte de a începe s� crea�i tabele, este de la sine în�eles c� ave�i deja un proiect de baz� de date, sau dac� sunte�i la început de studiu, m�car o diagram� de rela�ii �i structurile tabelelor. Spuneam la începutul acestui curs, cât de important e s� ave�i un proiect corect de baz� de date, pentru a nu avea probleme la faza de implementare.

Crearea structurii tabelelor se poate face în trei moduri:

• Utilizând fereastra de proiectare (Create table in design view);

• Utilizând instrumentul Wizard (Create table by using wizard);

• Prin introducerea datelor (Create table by entering data).

28

Page 28: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Consider c� modul cel mai eficient de creare a tabelelor, care se potrive�te utilizatorilor români, îl reprezint� primul mod (Create table in design view), motiv pentru care va fi prezentat numai acesta. Pentru a v� satisface curiozitatea nu ave�i decât s� le încerca�i pe celelalte dou�, pentru a ajunge la o concluzie.

Revenind la primul mod de creare a unui tabel, da�i un dublu clic pe Create table in design view �i pe ecran va apare fereastra Table din figura 4.2.

În�elegerea acestei ferestre nu e grea: sunte�i invita�i s� da�i numele câmpurilor (Field Name), s� alege�i din combobox tipul de dat� pentru câmpul respectiv (Data Type) �i s� introduce�i o scurt� descriere, acolo unde este cazul, despre ce va con�ine acel câmp (Description). Pentru alegerea tipului de dat�, revede�i paragraful Anatomia unei specifica�ii de câmp din capitolul 3 al cursului de baze de date.

În toolbar-ul de sub meniul din figura 4.2, exist� mai multe butoane, unele cunoscute din alte aplica�ii Windows. Exist� un buton (cel cu o chei��) pe care nu l-a�i mai întâlnit pân� acum. Acest buton v� ajut� s� stabili�i cheia principal� a tabelului pentru câmpul curent (cel cu s�geata din stânga), printr-un simplu clic pe el.

În func�ie de tipul de dat� ales pentru câmp, în partea de jos apare un subtabel în care pute�i seta propriet��ile câmpului curent. Aceste propriet��i sunt adaptate tipului de dat�: num�r, text, data calendaristic� etc. S� lu�m pe rând aceste propriet��i, având ca reper tipul de dat� numeric:

Field Size este dimensiunea câmpului. Executarea unui clic pe s�geata derulant� va deschide o list� de op�iuni privind dimensiunea câmpului.

Format este formatul sub care se prezint� valoarea introdus� în câmp. Executarea unui clic pe s�geata derulant� va deschide o list� de op�iuni privind formatul câmpului.

Decimal Places este proprietatea care stabile�te num�rul de zecimale ce pot fi atribuite câmpului. Se poate alege un num�r între 0 �i 15, sau Auto pentru determinarea automat� a num�rului de zecimale.

Input Mask reprezint� impunerea unui format de introducere pentru toate datele acelui câmp. Formatul de introducere are o mare importan�� în cadrul câmpurilor ce con�in date de tip text sau dat� calendaristic�.

Fig. 4.2. Fereastra Table

29

Page 29: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Caption este eticheta pentru specificarea unui nume atribuit câmpului, în cazul în care acesta este utilizat în cadrul formularelor sau când tabelul respectiv este afi�at.

Default Value este o valoare care este atribuit� automat, în momentul când utilizatorul nu introduce nici o valoare în acel câmp.

Validation Rule este criteriul care va fi verificat înainte de validarea valorii introduse în acel câmp. Criteriul este introdus sub form� de expresii care folosesc:

• Operatorii: =, +, -, *, /, <, >, <=, >=, AND, OR, BETWEEN, IN, IS NULL; • Identificatorii se dau în paranteze drepte []; • Func�ii; • Constante;

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

Required este proprietatea care stabile�te dac� introducerea unei valori în acel câmp este obligatorie. Acest câmp poate avea una din valorile Yes / No.

Indexed este proprietatea care stabile�te dac� acel câmp are un index care accept� valori duplicat sau numai valori unice. Dac� nu dorim un index pentru acel câmp se alege valoare No.

Propriet��ile descrise mai sus se refereau la tipul de câmp Numeric. Pentru alte tipuri de câmp vor apare �i propriet��i noi (cele mai multe r�mân). Astfel, datele de tip Text �i Memo au o proprietate numit� Allow Zero Length, adic� admiterea lungimii zero. Aceast� proprietate are valoarea Yes sau No.

O proprietate important� pentru câmpul care con�ine date de tip Autonumber este New Values. Op�iunile Increment sau Random permit stabilirea modului în care câmpului respectiv i se vor acorda valori automat de c�tre sistem.

Rela�ii între tabele

Rela�iile dintre tabele sunt lucruri cunoscute, deja, de c�tre oricare dintre dumneavoastr�, nu-i a�a? S� vedem acum ce modalitate folose�te ACCESS-ul pentru a face leg�tura între tabele. Din punct de vedere al momentului cre�rii acestora, exist� 2 tipuri de rela�ii între tabelele unei baze de date ACCESS �i anume:

• Rela�ii permanente – se stabilesc dup� definirea tabelelor �i sunt cerute de modelul rela�ional f�când parte din structura bazei de date. Aceasta se realizeaz�, de obicei, prin coresponden�a cheie primar� – cheie extern� �i sunt memorate în baza de date.

• Rela�ii temporare – se stabilesc între tabele cu ocazia definirii unor cereri de interogare, nefiind înregistrate în structura bazei de date.

Dup� cum �tim, între dou� tabele între care exist� o rela�ie, datele nu pot fi introduse oricum. De exemplu, dac� într-o baz� de date avem tabelele tblFacturiPrimite �i tblFurnizori între care exist� o rela�ie „unu cu mai mul�i”, nu putem introduce date în tabelul tblFacturiPrimite pân� nu avem cel pu�in un furnizor în tabelul tblFurnizori. Cum rezolv� ACCESS-ul aceast� prevedere din proiectul bazei de date (tipul de participare)? Prin impunerea integrit��ii referen�iale (Enforce Referential Integrity), dup� cum se vede în figura 4.3.

30

Page 30: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

În urma acestei set�ri, s-a f�cut o leg�tur� unu cu mai mul�i între cele dou� tabele, a c�rei reprezentare se vede în figura 4.4.

Stabilirea leg�turilor între tabele se face, fie în faza de creare a tabelului (folosind Lookup

Wizard), fie în fereastra Relationship care se afi�eaz� cu butonul , din toolbar-ul din fereastra Database. Printr-un clic pe acest buton se deschide tabela Relationship prezentat� în figura 4.4.

Dac� nu apar toate tabelele în fereastra Relationship, cu un clic-dreapta în interiorul acesteia apoi alegând op�iunea Show Table va fi afi�at� fereastra Show Table, cu care se pot ad�uga �i celelalte tabele.

Leg�tura dintre tabele se face „tr�gând cu mouse-ul” câmpul de leg�tur� dintr-un tabel „peste” câmpul corespunz�tor din cel�lalt tabel. Dup� ce s-a f�cut leg�tura, putem face un clic-dreapta pe leg�tur�, apar 2 posibilita�i: Edit Relationship... �i se deschide caseta de dialog pentru stabilirea integrit��ii referen�iale ar�tat� în figura 4.3, respectiv Delete cu care putem �terge leg�tura. Când citi�i aceast� secven��, este bine s� o face�i cu calculatorul în fa��, deoarece altfel, aceste manevre sunt greu de în�eles. Dac� ceva nu a�i în�eles, întreba�i profesorul care v� îndrum� la laborator.

Crearea rela�iilor cu Lookup Wizard...

Cea mai comod� cale de a crea rela�ii permanente între dou� tabele este folosirea facilit��ii Lookup Wizard, pus� la dispozi�ia noastr� de programul ACCESS. Aceast� metod� const� în „legarea” tabelelor în faza de proiectare prin intermediul unei chei primare �i a unei chei externe. Prima dat� de proiecteaz� tabelul din partea „unu” a rela�iei unu cu mai mul�i. La cel de-al doilea tabel, când se define�te câmpul de leg�tur�, pentru tipul de dat� (Data Type) se alege op�iunea Lookup Wizard... (ultima dintre op�iuni). În urma acestei manevre se deschide caseta de dialog din figura 4.6.

Fig. 4.3. Stabilirea integrit��ii referen�iale

Fig. 4.4. Diagrama de rela�ie între cele 2 tabele, a�a cum apare în ACCESS.

31

Page 31: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Se alege prima op�iune, cea care ne spune c� vom lega câmpul nostru cu un alt câmp dintr-un tabel sau o interogare, I want the lookup.... Merit� explicat� �i op�iunea a doua I will type in the values that I want, care ne spune c� putem lega acest câmp cu o list� de valori introduse de noi chiar în aceast� faz�. Aceast� op�iune este indicat s� o folosi�i când ave�i un num�r mic de valori pe care poate s� le ia un anumit câmp. Încerca�i �i aceast� variant� pentru a-i în�elege rolul.

Cu butonul Next se avanseaz� în pasul urm�tor când vi se cere s� alege�i, dintr-o list�, tabelul cu care va fi legat. Dup� alegerea tabelului, ve�i alege cheia primar� �i un alt câmp pentru a identifica înregistrarea (acest lucru îl ve�i în�elege când ve�i introduce, efectiv, date în tabel). Aceast� manevr� se vede în figura 4.7.

În cazul nostru se vor selecta câmpurile TaraID �i Denumire, care vor fi trecute în fereastra din dreapta. Cu butonul Next se va trece la pasul urm�tor (figura 4.8) care ne recomand� s� face invizibil� coloana cu cheia primar�, pentru c� la operare nu ne va ajuta cu nimic, fiind un cod numeric f�r� semnifica�ie pentru noi.

Fig. 4.6. Primul pas al procedurii Lookup Wizard

Fig. 4.7. Alegerea câmpului de leg�tur�

32

Page 32: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Cu butonul Next se trece la pasul urm�tor care v� cere s� stabili�i numele câmpului care va apare în rapoarte, de regul� se las� cel implicit, propus de calculator. Dup� aceast� manevr� se alege butonul Finish care ne va avertiza c� o rela�ie a fost creat� �i c� ar trebui salvat�. Dac� nu s-a gre�it nimic, se apas� butonul Next.

Pentru a verifica rela�ia creat� se apas� butonul , care va deschide foaia Relationships. Cu un clic-dreapta pe linia rela�iei o pute�i edita sau �terge. Încerca�i aceast� manevr� pentru a în�elege ce se întâmpl�.

Diferen�a între cele dou� tipuri de leg�turi permanente, legarea prin metoda ”tragerii” (drag and drop) în fereastra Relationship �i legarea prin metoda Lookup Wizard..., nu prea iese în eviden�� decât la crearea formularelor de introducere a datelor. La prima metod� Access-ul va pune automat o caset� de text (textBox) în care trebuie s� introducem manual valori de la tastatur�, iar la a doua metod� va apare în formular o caset� combinat� (comboBox), din care putem alege elegant valoarea din lista afi�at�.

Dac� a�i reu�it s� în�elege�i aceste diferen�e, înseamn� c� a�i f�cut un pas important spre a putea crea aplica�ii Access tot mai performante. Poate în acest moment nu sesiza�i diferen�ele dintre cele dou� metode, dar cu siguran��, le ve�i în�elege atunci când ve�i crea formulare, pu�in mai târziu.

Crearea tabelelor bazei de date ”Biblioteca”

Fig. 4.8. Recomandarea pentru a face invizibil� cheia primar�

Fig. 4.9. Avertizarea de salvare a rela�iei create.

33

Page 33: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Diagrama bazei de date este prezentat� în figura 4.10.

Structura �i propriet��ile câmpurile tabelelor bazei de date sunt prezentate în tabelul urm�tor:

Tabel Cimp Tip data Constringeri Observatii tblAutori AutorID AutoNumber Not Null Nume Character(150) Not Null Prenume Character(150) Not Null Nationalitate Character(15) DataN Data/Time zz-lll-aa DataD Data/Time zz-lll-aa tblEdituri EdituraID AutoNumber Not Null Denumire Character(150) Not Null Localitate Character(150) Tara Character(50) tblCarti CarteID AutoNumber Not Null AutorID Long Integer Not Null EdituraID Long Integer Not Null Denumire Character(250) Not Null DomeniuID Long Integer Not Null AnAparitie Integer Pagini Integer Valoare Single Stoc Integer tblDomenii DomeniuID AutoNumber Not Null Denumire Character(50) Not Null Explicatii Character(250) tblImprumuturi ImprumutID AutoNumber Not Null CarteID Long Integer Not Null CititorID Long Integer Not Null DataImprumut Data/Time zz-lll-aa Perioada Integer DataRestituire Data/Time zz-lll-aa tblCititori CititorID AutoNumber Not Null

Fig. 4.10. Diagrama bazei de date ”Biblioteca”

34

Page 34: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Nume Character(150) Not Null Prenume Character(150) Not Null ProfesiaID Long Integer Not Null DataN Data/Time zz-lll-aa Adresa Character(150) Localitate Character(150) JudetID Long Integer Not Null Observatii Character(150) tblJudete JudetID AutoNumber Not Null Denumire Character(75) Not Null Abreviere Character(2) Not Null tblProfesii ProfesiaID AutoNumber Not Null Denumire Character(75) Not Null Explicatii Character(200)

Dup� crearea tabelelor, caseta Database arat� ca în figura 4.11.

În continuarea acestei lucr�ri de laborator, urmeaz� s� crea�i formularele de introducere a datelor, care se v�d în figura 4.12. Mai întâi vor fi create formularele de introducere a datelor. Dup� exemplele prezentate în curs pute�i trece la crearea acestor formulare.

Fig. 4.11. Tabele bazei de date ”Biblioteca”

Fig. 4.12. Formularele bazei de date ”Biblioteca”

35

Page 35: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Crearea formularelor pentru introducerea datelor

În figura 4.12 se v�d formularele de introducere a datelor în tabele. Având în vedere rela�iile stabilite intre tabele, introducerea datelor nu poate fi f�cut� oricum. Astfel, nu putem introduce o care dac� numele autorului nu este în tabelul cu autori. Ca regul�, în rela�iile 1:N, mai întâi se vor introduce date în tabelul din partea ”unu” a rela�iei �i numai apoi în tabelul din partea ”mai mul�i” a rela�iei.

Formularul frmIntroducereAutori.

Pentru crearea formularului, parcurgem pa�ii urm�tori:

1. În caseta de dialog Database, d�m comanda Forms – New – AutoForm:Columnar(vezi figura 4.13).

Se alege tabelul tblAutori, care va fi completat de c�tre viitorul formular. Se apas� butonul OK.

2. Va apare forma brut� a formularului, a�a cum apare în figura 4.14.

Fig. 4.13. Alegerea tipului de formular �i a tabelului

Fig. 4.14. Formularul brut

36

Page 36: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Acest formular ar mai trebui pu�in aranjat. De exemplu, pentru câmpul Nationalitate ar trebui s� avem un comboBox din care s� alegem dintr-o list�, nationalitatea autorului. Pentru câmpurile cu date calendaristice DataN �i DataD ar trebui s� indic�m sub ce form� trebuie introduse aceste date, stiut fiind c� la acest tip de dat� apar des probleme din cauza introducerilor incorecte.

Modificarea formularului se poate face numai în modul Design view, care se ob�ine ap�sând

butonul . Figura 4.15 arat� cum trebuie s� fie formularul în Design view.

Pentru a transforma caseta de text Nationalitate, execut�m clic-dreapta pe ea, alegem op�iune Change To, apoi op�iunea Combo Box, dup� care va trebui s� introducem lista cu na�ionalit��ile autorilor. Acest lucru se face prin completarea propriet��ilor Row Source Type (Value List) �i Row Source (Romana; Maghiara; Straina), dup� cum se poate vedea în figura 4.16.

De asemenea, s-au introdus 2 etichete (zz/lll/aa) care ne indic�, cum s� introducem data calendaristic�.

Pentru activarea tabelului cu propriet��ile se apas� butonul din toolbar-ul din partea de sus.

Fig. 4.15. Formularul în modul Design view

37

Page 37: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

3. Prin ap�sarea butonului , se iese din modul Design �i se activeaz� formularul care trebuie s� arate ca în figura 4.17.

Formularul frmIntroducereCarti.

Înainte de a începe crearea efectiv� a formularului, trebuie s� analiz�m tabelul pe care îl va completa. Acesta are 3 câmpuri care trebuie completate cu chei externe: AutorID, EditurID �i DomeniuID. Aceste chei sunt valori de tip AutoNumber care sunt greu de folosit pentru c� trebuie, de exemplu, introdus un autor printr-un num�r. Ar fi mult mai potrivit pentru operator s� aleag� dintr-o list� un nume de autor cu care e obi�nuit �i nu un cod numeric care nu îi sugereaz� nimic. Este ceea ce ne propunem.

Pentru crearea acestui formular primii pa�i sunt identici cu cel precedent, cu observa�ia c� vom alege acum tabelul tblCarti.

Trecem în modul Design view, pentru a putea efectua modific�rile în formular. În figura 4.18, pute�i vedea cum arat� formularul înainte de setarea propriet��ilor. Se observ� c� acesta are ca surs� tabelul tblCarti.

Fig. 4.16. Atribuirea valorilor pentru propriet��ile Row Source Type �i Row Source

Fig. 4.17. Forma final� a formularului

Fig. 4.18. Formularul în stare brut�

38

Page 38: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

În aceast� stare, pe baza leg�turilor dintre tabele, în casetele comboBox vor apare listele cu cheile primare ale celor 3 câmpuri implicate. Pentru ca în aceste casete s� apar� denumirile, cu care suntem obi�nui�i, trebuie s� modific�m unele propriet��i ale celor 3 comboBox-uri, care se g�sesc în categoria Format (vezi primul buton).

Setarea surselor se pot deduce clar din figura 4.19.

Observa�i c� sursele pentru cele 3 câmpuri de chei externe sunt ni�te expresii SQL simple:

AutorID: SELECT tblAutori.AutorID, tblAutori.Prenume+" "+tblAutori.Nume AS Expr1 FROM tblAutori ORDER BY tblAutori.Nume;

EdituraID: SELECT tblEdituri.EdituraID, tblEdituri.Denumire FROM tblEdituri ORDER BY Denumire;

DomeniuID: SELECT tblDomenii.DomeniuID, tblDomenii.Denumire FROM tblDomenii ORDER BY Denumire;

Fig. 4.19. Setarea propriet��ilor legate de sursa înregistr�rilor

39

Page 39: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Fiecare din aceste expresii au ca rezultat câte 2 câmpuri, iar pe noi ne intereseaz� numai al doilea care ne spune ceva concret. Trebuie s� afi��m, deci, numai acest câmp. Pentru aceasta trebuie s� set�m, din tab-ul Format, propriet��ile Column Count(2) �i Column Width(0;1.2”), care ne spun c� avem 2 coloane, care au l��imea de 0, respectiv 1.2 inch. Asta înseamn� c� prima coloan� nu se vede, iar a doua are 1.2 inch l��ime.

Setarea acestor propriet��i se vede în figura 4.20.

Prin ap�sarea butonului , se iese din modul Design �i se activeaz� formularul care trebuie s� arate ca în figura 4.21.

Fig. 4.20. Setarea propriet��ilor Column Count �i Column Widths

Fig. 4.21. Forma final� a formularului

40

Page 40: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Dup� modelele prezentate, crea�i �i celelalte formulare de introducere a datelor, prezentate mai jos în figura 4.22.

Fig. 4.22. Formulare care trebuie create

41

Page 41: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Testarea expresiilor SQL de la lucrarea 3

Pentru a scrie expresiile SQL în Access trebuie s� deschidem fereastra corespunz�toare. Ve�i proceda astfel:

• În fereastra Database se apas� butonul Queries apoi se d� dublu-click pe op�iunea Create query in Design view .

• Se va deschide fereastra Show table unde se apas� butonul Close.

• În partea stâng� a Toolbar-ului superior, va apare butonul , prin ap�sarea c�ruia se deschide fereastra din figura 4.23.

Observa�i c� în mod automat apare scris� instruc�iunea „SELECT; ” care se termin� cu punct �i virgul�, care semnific� terminarea expresiei SQL. În aceast� fereastr� se scriu de mân� expresiile SQL. Nu uita�i de simbolul „ ; ” punct �i virgul� de la sfâr�itul expresiei.

Pentru verificarea expresiei SQL introduse folosi�i butonul Run SQL localizat conform figurii 4.24.

Dac� totul a decurs bine, se va afi�a un tabel cu datele generate de interogare.

Desf��urarea lucr�rii

Deschide�i o baz� de date nou�, cu numele Expresii_SQL. mdb, în cadrul c�reia se vor face toate test�rile.

La lucrarea nr. 3 a�i salvat în fi�ierul Expresii SQL studiate.txt mai multe expresii SQL pe care acum o s� le relua�i �i o s� le verifica�i în cadrul programului Access. Expresiile SQL se pot copia direct din fi�ier. Rezultatele pe care le ve�i ob�ine vor trebui s� corespund� cu cele de la lucrarea nr. 3.

Va trebui s� crea�i �i s� umple�i cu date tabelele, a�a cum sunt prezentate în exemplele de la lucrarea nr. 3.

Tabelele care vor trebui create sunt, tblStudenti �i tblEvidenta care sunt ar�tate mai jos:

Fig. 4.23. Fereastra pentru scrierea

expresiilor SQL

Fig. 4. 24. Butonul Run SQL

42

Page 42: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Tipul de dat� pentru fiecare câmp îl ve�i deduce din tabelele afi�ate. Pentru a ob�ine rezultatele de la lucrarea 3, va trebui s� introduce�i în tabele acelea�i date.

Fiecare expresie SQL va fi salvat� cu un nume sugestiv.

StudID Nume Init Prenume Sectia An Grupa Stare 1 Bogdan P. Mircea Florin IEI 1 1311 Bugetar 2 Meruta I. Cosmin IEI 3 1332 Bugetar 3 Pop T. Marius Traian IEI 2 1321 Bugetar 4 Bucur P. Mihaela IEI 2 1321 Bugetar 5 Chirila I. Laura IEI 3 1331 Bugetar 6 Cotirla L. Raluca Adina TCM 1 1111 Bugetar 7 Cotoara G. Ovidiu TCM 1 1111 Bugetar 8 Cozma D. Dumitru TCM 2 1121 Bugetar 9 Damian N. Daniel MEC 4 1241 Bugetar

10 Farcas I. Calin Florin MEC 4 1241 Taxa

Cod Denumire Furnizor PU Cantitate Valoare 1001 Bujie DK1 Sinterom SA 12 30 360 1023 Acumulator 56A Rombat SA 124 25 3100 1231 Parbriz VW Cobra SRL 512 12 6144 1089 Antigel -30 Promaxim SRL 5.2 50 26 1904 Ulei PKT 1 Calota SRL 6.4 60 384

tblStudenti

tblEvidenta

43

Page 43: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Crearea interog�rilor

Vederile, a�a cum le-am înv��at la curs, se numesc în Access, interog�ri (queries). Ne reamintim c� vederile sunt ni�te tabele virtuale, aduc� ele nu exist� în realitate ci sunt generate de c�tre programul Access, atunci când avem nevoie de ele. Aceste tabele virtuale sunt completate cu date din unul sau mai multe tabele.

Vederile sunt, putem spune, rezultatul sau scopul pentru care am muncit s� cre�m o baz� de date. Acestea, în combina�ie cu formularele �i rapoartele stabilesc cât de performant� e aplica�ia de baz� de date pe care a�i creat-o sau o folosi�i.

În cazul aplica�iei noastre, ”Biblioteca.mdb”, vederile sunt sugerate de obiectivele misiunii. Sigur c� în faza de proiectare, nu pot fi identificate toate vederile, dar la o baz� de date bine proiectat�, necesitatea unei vederi poate fi rezolvat� oricând.

În continuare vom încerca s� cre�m câteva vederi, folosind limbajul SQL.

Vederea ”C�r�ile din bibiotec�”

A�i putea spune, pe bun� dreptate, c� toate c�r�ile se afl� în tabelul tblCarti, deci n-ar mai fi nevoie de o vedere. Încerca�i s� afi�a�i acest tabel (un dublu clic pe numele lui). Ve�i observa c� la autori, edituri �i domenii avem ni�te coduri care nu ne spun mare lucru, de fapt vede�i cheile primare ale acestora. O astfel de informa�ie nu este de mare ajutor, de aceea va trebui s� crea�i o vedere din care s� se vad� denumirile explicite, pentru autori, edituri �i domenii, pe baza leg�turilor dintre tabele.

Pentru a scrie expresiile SQL trebuie s� deschidem fereastra corespunz�toare. Ve�i proceda astfel:

• În fereastra Database se apas� butonul Queries apoi se d� dublu-click pe op�iunea Create query in Design view .

• Se va deschide fereastra Show table unde se apas� butonul Close.

• În partea stâng� a Toolbar-ului superior, va apare butonul , prin ap�sarea c�ruia se deschide fereastra din figura 4.23.

Observa�i c� în mod automat apare scris� instruc�iunea „SELECT; ” care se termin� cu punct �i virgul�, care semnific� terminarea expresiei SQL. În aceast� fereastr� se scriu de mân� expresiile SQL. Nu uita�i de simbolul „ ; ” punct �i virgul� de la sfâr�itul expresiei.

Pentru verificarea expresiei SQL introduse folosi�i butonul Run SQL localizat conform figurii 4.24.

Fig. 4.23. Fereastra pentru scrierea

expresiilor SQL

44

Page 44: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Dac� totul a decurs bine, se va afi�a un tabel cu datele generate de interogare.

În cazul nostru expresia SQL care trebuie introdus�, se poate vedea în figura 4.25.

Iat� expresia SQL, scris� mai clar: SELECT tblAutori.Prenume + " " + tblAutori.Nume AS Autor, tblCarti.Denumire, tblEdituri.Denumire AS Editura, tblCarti.AnAparitie AS Aparut, tblCarti.Pagini, tblCarti.Valoare, tblCarti.Stoc

FROM tblCarti, tblAutori, tblEdituri

WHERE tblCarti.AutorID=tblAutori.AutorID AND tblCarti.EdituraID=tblEdituri.EdituraID

ORDER BY tblCarti.Denumire;

Lansa�i aceast� comand� SQL cu butonul Run SQL, iar dac� nu a�i f�cut vreo gre�eal� ar trebui s� ob�ine�i ceea ce se vede în figura 4.26.

Din aceast� vedere se pot vedea clar informa�iile despre c�r�ile din biblioteca noastr�. Bineîn�eles c� voi o s� ave�i afi�ate c�r�ile pe care le-a�i introdus în baza de date pe care a�i creat-o.

Fig. 4. 24. Butonul Run SQL

Fig. 4.25. Expresia SQL pentru afi�area c�r�ilor din bibliotec�

Fig. 4.26. Interogarea cu c�r�ile din bibliotec�

45

Page 45: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4 Vederea ”C�r�ile împrumutate”

Expresia SQL este: SELECT tblCarti.Denumire AS [Denumirea cartii], tblCititori.Prenume+" "+tblCititori.Nume AS Cititor, tblImprumuturi.DataImprumut, tblImprumuturi.Perioada, tblImprumuturi.DataRestituire

FROM tblCarti, tblAutori, tblEdituri, tblImprumuturi, tblCititori

WHERE tblImprumuturi.CarteID=tblCarti.CarteID AND tblCarti.EdituraID=tblEdituri.EdituraID AND tblCarti.AutorID=tblAutori.AutorID AND tblImprumuturi.CititorID=tblCititori.CititorID

ORDER BY tblCarti.Denumire;

Rezultatul este prezentat în figura 4.27.

Vederea ”Situa�ie cititor”

Una dintre cele mai importante informa�ii pentru bibliotecari este situa�ia de împrumuturi a unui cititor, adic� ce c�r�i �i când a scos cititorul respectiv, eventual când le-a restituit. O astfel de interogare, care este o interogare cu parametrii, are expresia SQL de mai jos: SELECT tblCititori.Nume + " " + tblCititori.Prenume AS Cititor, tblCarti.Denumire AS [Denumirea cartii], tblImprumuturi.DataImprumut, tblImprumuturi.Perioada, tblImprumuturi.DataRestituire

FROM tblImprumuturi, tblCarti, tblCititori

WHERE tblImprumuturi.CititorID=tblCititori.CititorID AND tblImprumuturi.CarteID=tblCarti.CarteID AND tblImprumuturi.CititorID=[Introduceti ID-ul cititorului];

Observa�i cum a fost introdus� expresia pentru cererea parametrului (ultimul rând). Cererea parametrului a fost introdus� între paranteze drepte.

Situa�ia cititorului Pop Mircea cu ID-ul 4, este prezentat� în figura 4.28.

Pentru a lista situa�ia unui cititor trebuie numai s� re�ine�i ID-ul acestuia care se poate afla din tabelul tblCititori.

Fig. 4.27. Rezultatul interog�rii qryImprumuturi

Fig. 4.28. Situa�ia unui anumit cititor

46

Page 46: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Pe baza acestor exemple, încerca�i s� identifica�i �i alte vederi pe care le-a�i putea crea. Sugestii: c�r�ile unei anumite edituri, ce c�r�i au scos pensionarii, elevii, sau studen�ii etc.

Crearea formularelor pentru vizualizarea informa�iilor

Dup� cum �tim, formularele se pot folosi atât pentru introducerea datelor în tabelele bazei de date, cât �i în vizualizarea informa�iilor din baza de date. Formularele de introducere de date sunt mai u�or de creat, deoarece se bazeaz�, în general, pe un tabel, eventual pe câte o interogare simpl� ata�at� de vreun comboBox. Formularele de vizualizare sunt mai greu de f�cut, deoarece se bazeaz� pe interog�ri uneori complicate, iar uneori trebuie scris �i ceva cod în VBA.

Acest tip de formulare con�in, pe lâng� câmpurile provenite din tabele �i interog�ri, obiecte suplimentare care le fac mai performante, cum ar fi butoane de comand�, etichete etc., numite generic, controale. Aceste controale se g�sesc în toolbar-ul Toolbox, prezentat în figura 4.29.

În tabelul urm�tor vor fi descrise aceste controale. Numele controlului Descriere Select Objects (indicator)

Deselecteaz� controlul selectat anterior �i restabile�te func�ia normal� pentru indicatorul mouse-ului. Butonul Pointer este controlul activat implicit atunci când este afi�at� bara de instrumente Toolbox.

Control Wizards

Activeaz�/Dezactiveaz� programele Control Wizards. Aceste utilitare ne ajut� s� gener�m obiecte de control complexe, cum ar fi grupurile de op�iune, casetele de liste �i casetele combinate.

Label Con�ine orice text fix, folosit pentru diferite descrieri sau nota�ii de pe formular.

Text Box Caset� în care se afi�eaz� sau din care se citesc date de tip text. Este acela�i obiect ca cel studiat în Visual Basic.

Option Group

Caset� dreptunghiular� de dimensiune variabil�, în care putem plasa, butoane comutatoare, butoane de op�iune sau casete de validare. Numai un singur obiect de control din interiorul acestei casete poate fi selectat la un moment dat. Când execut�m click pe un obiect din grup obiectul selectat anterior va fi deselectat. Deci, casetele de validare nu se comport� ca în Visual Basic, unde puteau fi selectate, nici una, una sau mai multe.

Toggle Button

Buton care, atunci când e selectat, comut� din starea ON în starea OFF. Starea ON corespunde valorii Yes (-1), iar starea OFF corespunde valorii No (0). În cadrul unui grup de op�iune, ac�ionarea unui buton comutator dezactiveaz� butonul comutator ac�ionat anterior. Putem utiliza aceste butoane pentru a permite

Fig. 4.29. Bara de instrumente Toolbox

47

Page 47: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

utilizatorului s� selecteze o valoare dintr-un set. Option Button

Buton rotund care se comport� identic cu un buton comutator. Butoanele de acest tip sunt utilizate cel mai des în grupurile de op�iune pentru selectarea unei valori dintr-un set de op�iuni.

Check Box

Caset� de validare care, atunci când este selectat�, comut� între starea ON �i starea OFF. Casetele de validare multiple trebuie plasate în afara grupurilor de op�iune astfel încât s� putem selecta mai multe op�iuni simultan.

Combo Box Caset� combinat� format� dintr-o caset� de text editabil�, în care putem introduce o valoare �i o list� din care putem alege o valoare.

List Box Caset� care con�ine o list� derulant� de op�iuni, din care putem selecta o valoare.

Command Button Buton de comand� care declan�eaz� execu�ia unei comenzi Macro sau unei proceduri VBA de tratare a evenimentelor.

Image Afi�eaz� o imagine static� pe un formular sau pe un raport. Imaginea poate fi modificat� dup� ce a fost inserat� în formular.

Unbound Object Frame

Include în formular sau raport un obiect OLE creat cu o aplica�ie server OLE, cum ar fi Microsoft Graph sau Microsoft Draw. Obiectul Custom Control este o versiune special� de obiect neasociat, care con�ine obiecte OLE Control.

Bound Object Frame

Afi�eaz� con�inutul unui câmp OLE al unei înregistr�ri, dac� acesta con�ine un obiect grafic. Dac� obiectul inclus în câmp nu este grafic, apare pictograma ce reprezint� obiectul, cum ar fi pictograma op�iunii Sound Recorder pentru un fi�ier .WAV legat sau înglobat. Obiectele OLE Control au date asociate (data-bound OLE Control) stocate într-o versiune special� de obiect asociat.

Page Break

Determin� imprimanta s� treac� la o pagin� nou�, începând din pozi�ia delimitatorului de pagin� din formular sau raport. În modul Run, delimitatoarele de pagin� nu sunt afi�ate pe formular sau raport.

Tab Control

Acest control se folose�te, într-un formular, în vederea cre�rii unei serii de pagini ce pot fi schimbate. Fiecare pagin� va putea con�ine alte obiecte de control.

Subform/Subreport Ata�eaz� unui formular sau raport, un subformular, respectiv subraport. Ele trebuie create înainte de folosirea acestui control.

Line Creeaz� o linie dreapt� pe care putem ulterior s� o modific�m sau s�-i schimb�m pozi�ia.

Rectangle Creeaz� dreptunghi pe care putem ulterior s�-l redimension�m sau s�-i schimb�m pozi�ia.

More Controls Permite introducerea de obiecte de control ActiveX instalate în sistem.

În cele ce urmeaz� vom încerca împreun� s� cre�m formulare care nu sunt folosite pentru introducerea datelor, ci pentru a afi�a informa�ii din baza de date. Aceste formulare se bazeaz� pe interog�ri, a�a c� vom folosi interog�rile pe care le-am creat anterior (vederile c�r�ile din bibliotec�, împrumuturi, situa�ia împrumuturilor unui cititor).

Crearea formularului de vizualizare a c�r�ilor din bibliotec�

48

Page 48: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Acest formular se bazeaz� pe interogarea qryCartile din bibioteca care o avem deja de la laboratoarele precedente. Din caseta de dialog Database, pornim s� cre�m un nou formular cu comanda cunoscut�: Forms – New – Design View, care va deschide caseta de dialog din figura 4.30.

De aici trebuie s� pornim pentru construc�ia formularului nostru, urmând s�-l ”împodobim” cu cele necesare. Observ�m c� formularul are numai sec�iune Detail, a�a c� va trebui s�-i introducem �i sec�iunile Form Header �i Form Footer cu ajutorul comenzii View – Form Header/Footer.

Introducem în partea de Header cele dou� etichete, ”Biblioteca Jude�ean� Mure�” �i ”Lista c�r�ilor din bibliotec�”, cu propriet��ile pe care le deduce�i din figura 4.31.

În continuare trebuie s� introducem un subformular care con�ine detaliile formularului. În acest sens, în partea de Detail introduce�i obiectul Subform, care este un dreptunghi dimensionat ”la ochi” în prim� faz�.

Seta�i urm�toarele propriet��i ale obiectului Subform pe care tocmai l-a�i introdus:

Name = ”Detalii”

Source Object = “qryCartile din biblioteca”

Pentru formularul mare seta�i propriet��ile:

Name = ”frmCartile din biblioteca”

Navigation buttons = ”No”

În aceast� faz� formularul la care lucra�i trebuie s� fie ca în figura 4.31. El va primi numele frmCartile din bibliotec�.

Fig. 4.30. Formularul gol

Obiectul Subform

49

Page 49: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Mai mult ca sigur, nu a�i nimerit cea mai bun� dimensiune �i pozi�ie a controalelor de pe interfa��, de aceea trebuie s� interveni�i pentru a-i da formularului un aspect pl�cut. Acest lucru se face prin modificarea propriet��ilor �i a pozi�iilor controalelor.

Un aspect care ar putea fi nepl�cut, este c� nu se vad toate coloanele iar pentru vizualizarea lor e nevoie de scrollbar. Încerca�i, cu ajutorul mouse-ului s� modifica�i l��imile coloanelor, în a�a fel ca acestea s� se vad� toate în formular. Pentru aceasta va trebui s� face�i de mai multe trecerea din modul Design în modul Run al formularului, pân� ob�ine�i imaginea din figura 4.32.

Crearea formularului de vizualizare a situa�iei unui cititor

Fig. 4.31. Formularul dup� introducerea etichetelor �i a subformularului

Fig. 4.32. Forma final� a formularului

50

Page 50: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Acest formular o s� fie mai complicat, în sensul c� va avea �i ceva cod scris în VBA, care nu face altceva decât s� faciliteze alegerea numelui cititorului dintr-un comboBox �i afi�area situa�iei acestuia, ca r�spuns la un eveniment.

Acest formular se bazeaz� pe interogarea qrySituatie-cititor, pe care a�i creat-o la interog�ri. Trebuie s� avem în vedere c� aceasta este o interogare cu parametri, deci pentru a func�iona trebuie s� introducem ca parametru ID-ul cititorului.

Vom parcurge mai repede etapele cunoscute. Începem crearea unui tabel prin metoda Design View, f�r� s� alegem vreun tabel ata�at. În acest formular gol vom introduce un obiect Subform care are proprietatea Source la valoarea qrySituatie-cititor, adic� interogarea pe care o avem deja. Vom introduce �i sec�iunea Form Header/Footer. În urma acestor ac�iuni vom avea imaginea din figura 4.33.

În cele ce urmeaz� vom executa urm�toarele ac�iuni:

• Introducem în antet (Header) o caset� combo, numit� cboCititori, care va con�ine to�i cititorii.

• Când alegem un cititor, va trebui ca prin cod s� modific�m expresia SQL a interog�rii.

• Scoatem butoanele de navigare de la formular punând proprietatea Navigation Buttons pe No.

Sursa pentru cboCititori (proprietatea Row Source) va fi o interogare SQL:

SELECT CititorID, Nume + " " + Prenume AS Cititor FROM tblCititori ORDER BY Nume;

Urmeaz� s� set�m propriet��ile obiectului cboCititori: Column Count, Column Widts, Row Source �i On Click, dup� cum se poate deduce din figura 4.34.

Fig. 4.33. Formularul cu subformularul inserat

51

Page 51: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Valorile care se atribuie acestor propriet��i sunt:

Column Count: 2;

Column Widts: 0; 1 (prima coloana are l��imea 0, a doua 1 inch);

Row Source : SELECT CititorID, Nume +" "+ Prenume AS Cititor FROM tblCititori ORDER BY Nume;

On Click: [Event procedure]

Aceste valori ale propriet��ilor ne spun c� obiectul comboBox cboCititori, are 2 coloane, dintre care prima nu se vede, iar a 2-a are l��imea de 1 inch, are ca surs� câmpul calculat Cititor, iar la evenimentul clic se declan�eaz� o procedur�.

Pentru a introduce procedura, se apas� butonul , care deschide pagina pentru introducerea codului procedurii, figura 4.35.

Dac� analiza�i imaginea din figura 4.35, v� aminti�i de programarea în Visual Basic. Acest lucru nu e de mirare, având în vedere faptul c� VBA (Visual Basic for Applications) este tot limbajul Visual Basic care are în plus unele obiecte specifice Access-ului.

Fif. 4.34. Setarea propriet��ilor obiectului cboCititori

Fig. 4.35. Zona în care se introduce codul surs�.

52

Page 52: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Iat� codul care trebuie introdus în aceast� procedur�:

Private Sub cboCititor_Click()

'Se creaza expresia SQL pentru subformularul SubFormImprumuturiCititor

If fraOptiuni.Value = 1 Then

SubFormImprumuturiCititor.Form.RecordSource = "SELECT tblCarti.Denumire, tblAutori.Prenume + ' ' + tblAutori.Nume AS Autor," & _

"tblImprumuturi.DataImprumut, tblImprumuturi.Perioada, tblImprumuturi.DataRestituire " & _

"FROM tblCarti, tblAutori, tblImprumuturi " & _

"WHERE tblImprumuturi.CarteID=tblCarti.CarteID And tblCarti.AutorID=tblAutori.AutorID " & _

"AND tblImprumuturi.CititorID=" & cboCititor.Value & ";"

Else

SubFormImprumuturiCititor.Form.RecordSource = "SELECT tblCarti.Denumire, tblAutori.Prenume + ' ' + tblAutori.Nume AS Autor," & _

"tblImprumuturi.DataImprumut, tblImprumuturi.Perioada, tblImprumuturi.DataRestituire " & _

"FROM tblCarti, tblAutori, tblImprumuturi " & _

"WHERE tblImprumuturi.CarteID=tblCarti.CarteID And tblCarti.AutorID=tblAutori.AutorID " & _

"AND tblImprumuturi.DataRestituire IS Null " & _

"AND tblImprumuturi.CititorID=" & cboCititor.Value & ";"

End If

'Se schimba caption-ul, dupa numele cititorului

lblImprumut.Caption = "Imprumuturi: " & cboCititor.Column(1)

End Sub

Observa�i c� întreaga procedur� nu face altceva decât s� modifice o proprietatea RecordSource a obiectului SubFormImprumuturiCititori. Re�ine�i, deci aceast� idee.

Observa�i, de asemenea, cum se construie�te o expresie SQL prin cod Visual Basic, respectiv cum se trece pe un rând nou, f�r� a afecta continuitatea expresiei, folosind combina�ia de caractere (& _). Între cele 2 semne este un spa�iu.

Pe lâng� caseta combinat� cboCititori, în zona Header a formularului creat s-a introdus un frame cu 2 butoane de op�iune cu ajutorul c�rora, formularul afi�eaz� toate c�r�ile împrumutate de un cititor, sau numai cele nerestituite. Încerca�i s� în�elegi func�ionarea acestei proceduri, care poate fi un bun exemplu pentru aplica�iile pe care o s� le face�i în viitor.

Aici se impun câteva considerente despre obiectul frame, numit aici fraOptiuni. Se �tie de la Visual Basic c� într-un frame se pot grupa butoane op�iune �i casete de validare, care pot fi testate în program. Deci obiectul frame nu era folosit în cod. Casetele de validare �i butoanele de op�iune aveau numai 2 valori: TRUE �i FALSE.

În VBA din Access, lucrurile stau pu�in altfel. Putem grupa �i aici casetele de validare �i butoanele de op�iune, dar aceste obiecte au o proprietate Option Value care se poate stabili la

53

Page 53: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

crearea acestor obiecte, de regul� valori întregi (1, 2,...). Obiectul care grupeaz� aceste obiecte se nume�te acum Option Group. Valoarea acestei propriet��i, pentru obiectul selectat, va fi �i valoarea obiectului Option Group. De remarcat faptul c� numai un obiect din frame-ul Option Group poate fi activat.

Prin urmare, nu este logic s� grup�m casete de validare în frame-uri pentru c� ele se comport� ca �i butoanele de op�iune, deci ar fi indicat s� le folosim pe acestea. Ne reamintim c� diferen�a major� dintre butoanele de op�iune �i casetele de validare este c� în cazul primelor poate fi activ numai un buton, iar în cazul celorlalte pot fi setate, nici una, una, mai multe sau toate.

Un mare avantaj al folosirii grupurilor de op�iune este c�, oricâte op�iuni am avea nu trebuie s� folosim de atâtea ori instruc�inea IF ... THEN, cum era în Visual Basic-ul clasic. Aici putem folosi instruc�iunea de condi�ionare multipl� SELECT CASE.

Forma final� a formularului creat este ar�tat� în figura 4.36.

Observa�i c� exist� eticheta lblImprumut a c�rei proprietate Caption se schimb� în func�ie de cititorul a c�rei situa�ie se afi�eaz�, dup� cum se poate vedea din ultima linie de cod.

Fig. 4.36. Forma final� a formularului

54

Page 54: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Rapoartele bazei de date „Biblioteca”

Dup� cum �ti�i, rapoartele nu sunt altceva decât ni�te formulare cu informa�ii extrase din baza de date, care se tip�resc pe hârtie �i sunt folosite ca documente care se pot pune în dosare sau se arhiveaz�. Tehnica de lucru este asem�n�toare cu cea de la formulare. Ca �i formularele, rapoartele au o surs� de date care poate fi un tabel sau o interogare.

Primul lucru pe care trebuie s�-l l�murim este s� afl�m de ce rapoarte avem nevoie. Astfel, ne propunem s� tip�rim, din baza de date, toate c�r�ile existente �i s� le grup�m pe edituri �i s� afi��m �i valoarea c�r�ilor de la fiecare editur�.

Iat� pa�ii care trebuie parcur�i:

1. Da�i comanda Reports – New – Report Wizard. Alege�i numele interog�rii qryCartile din biblioteca, care are urm�toarea expresie SQL: SELECT tblAutori.Prenume+" "+tblAutori.Nume AS Autor, tblCarti.Denumire, tblEdituri.Denumire AS Editura, tblCarti.AnAparitie AS Aparut, tblCarti.Pagini, tblCarti.Valoare, tblCarti.Stoc FROM tblCarti, tblAutori, tblEdituri WHERE tblCarti.AutorID=tblAutori.AutorID AND tblCarti.EdituraID=tblEdituri.EdituraID ORDER BY tblCarti.Denumire;

Deci este important s� avem sursa de date a raportului, fie c� este un tabel sau o interogare. Aceast� interogare a�i creat-o, de altfel, când a�i studiat capitolul Interog�ri, a�a c� ar trebui s� o ave�i. Trebuie s� ave�i ceea ce se vede în figura 4.37.

Toate câmpurile din stânga ferestrei trebuie s� le trece�i în dreapta pentru c� avem nevoie de toate. Pentru a trece la pasul urm�tor ap�sa�i butonul Next.

2. Pentru a grupa informa�iile alege�i tabelul cu tblEdituri, care particip� la interogarea surs�, vezi figura 4.38. În acest fel ve�i putea însuma valorile aferente unei edituri, a�a cum vi se cere, de altfel.

Ap�sa�i butonul Next.

Fig. 4.37. Alegerea sursei de date pentru raport

55

Page 55: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

3. Urm�toarea caset� de dialog v� cere s� alege�i dup� care câmp vor fi sortate grupurile �i ce calcule aplica�i asupra câmpurilor, figura 4.39.

Prin ap�sarea butonului Summary Options se deschide caseta de dialog din dreapta, unde pute�i opta s� face�i suma pe câmpul Valoare, cum se vede în figur�. Tot aici se vede c� pute�i opta ca în raport s� apar� detaliile sumariz�rii (Detail and Summary) sau s� apar� numai sumele f�r� detalii (Summary Only). Prin ap�sarea butonului OK reveni�i la caseta din stînga.

Cu butonul Next ajunge�i la pasul urm�tor.

4. Caseta de dialog care urmeaz�, v� cere s� alege�i modelul de prezentare a raportului. Opta�i pentru varianta Block prezentat� în figura 4.40.

Fig.4.38. Alegerea criteriului de grupare

Fig. 4.39. Stabilirea sort�rii �i sumariz�rii

56

Page 56: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Ap�sa�i butonul Next pentru a ajunge la caseta de dialog din figura 4.41, unde pute�i alege din mai multe variante, stilul de scriere în raport. Opta�i pentru stilul Formal.

Ap�sând butonul Next, ajunge�i la ultima caset� de dialog unde pute�i da numele raportului, a�a cum se vede în figura 4.42.

Ap�sa�i butonul Finish pentru a încheia.

Fig. 4.40. Alegerea formei de afi�are (Block)

Fig. 4.41. Alegerea stilului

Fig. 4.42. Alegerea numelui raportului (rptInventar)

57

Page 57: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

În urma procedurii parcurse a�i ob�inut un raport brut, a�a cum se vede în figura 4.43.

Forma raportului este departe de a ne mul�umi, de aceea va trebui s� interveni�i în modificarea aspectului raportului. Pentru aceasta intra�i în modul Design �i începe�i ac�iunea de cosmetizare a raportului. În figura 4.44 ave�i formularul brut, în modul Design.

Tot ce ave�i de f�cut este s� modifica�i cu ajutorul mouse-ului pozi�iile câmpurilor, s� pune�i un titlu raportului, s� modifica�i formatele de scriere cu ajutorul tabelului de propriet��i din dreapta figurii.

Cel mai simplu lucru este s� studia�i figura 4.45 pentru a vedea unde trebuie s� ajunge�i. Pentru orice neclarit��i cere�i ajutorul profesorului.

Fig. 4.43. Forma brut� a raportului

Fig. 4.44. Forma brut� a raportului

58

Page 58: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

Iat� câteva modific�ri care s-au f�cut raportului ini�ial:

- a fost schimbat� pagina din portret în landscape;

- a fost schimbat� m�rimea fontului de la 8 la 11 (proprietatea Font size);

- a fost scoas� bordurarea câmpurilor (proprietatea Border Style - Transparent);

- au fost schimbate câmpurile între ele prin „tragere”, câmpul Aparut a fost pus ultimul;

- s-au m�rit casetele de text acolo unde nu înc�pea textul.

Dup� acest model încerca�i s� face�i �i alte rapoarte, de exemplu acela�i raport, dar c�r�ile s� fie grupate dup� domeniu.

Observa�i c� pentru elaborarea rapoartelor aspectuoase, trebuie s� porni�i cu Report Wizard �i s� continua�i manual. Este metoda cea mai eficient� �i practic�, indicat� �i de speciali�tii domeniului.

Finalizarea lucr�rii nr. 4

Aceast� lucrare s-a desf��urat pe parcursul mai multor ore de laborator. Lucrarea este finalizat� când s-au creat toate obiectele bazei de date ”Biblioteca”:

• Tabelele

• Formularele

• Interog�rile

• Rapoartele

Fig. 4.45. Forma final� a raportului

59

Page 59: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.4

De asemenea, va fi creat� baza de date Expresii_SQL. mdb, care va con�ine tabelele tblStudenti �i tblEvidenta �i toate interog�rile pe care le-a�i f�cut cu ajutorul expresiilor SQL.

Fiecare student va avea pe server structura de directoare:

My Documents / Baze de date / Lucrarea 4 / Popescu Adrian-Biblioteca.mdb

/ Expresii_SQL.mdb

Aceste baze de date, create �i implementate de voi, vor fi oglinda activit��ii voastre de-a lungul unui semestru. Dac� a�i lucrat cu consecven�� �i implicare, a�i acumulat cuno�tin�e care v� vor fi de un real folos în activitatea viitoare, f�r� s� fi f�cut un efort mare.

60

Page 60: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.5

Lucrarea nr. 5. Particularizarea bazei de date ”Biblioteca”

În aceast� lucrare de laborator vom face câteva incursiuni printre posibilit��ile performante ale programului Access, în aspectele profesionale ale sale. Concret, vom crea macro-uri �i vom folosi o form� de start, într-un cuvânt, vom da o form� profesional� aplica�iei ”Biblioteca”.

O scurt� prezentare a Macro-urilor

Din cele studiate pân� acum, am v�zut c� o baz� de date Access este o colec�ie de obiecte, tabele, interog�ri, formulare, rapoarte etc. Noi am înv��at s� construim aceste obiecte. Toate obiectele unei baze de date trebuie legate într-un flux continuu de opera�ii, care împreun� se constituie într-o aplica�ie de baze de date. Exploatarea unei aplica�ii de baze de date presupune o mul�ime de opera�ii manuale care sunt executate de orice operator implicat.

În cadrul unei aplica�ii Access, de o mare importan�� este automatizarea acesteia. Prin automatizare în�elegem c� pe baza unei ac�iuni a utilizatorului, cum ar fi ap�sarea unui buton al interfe�ei, un dublu-clic etc, se determin� realizarea uneia sau mai multor opera�ii (activarea unuia sau mai multor obiecte, rularea unor interog�ri etc.).

Aceast� automatizare a aplica�iilor realizate în Access se poate face în dou� moduri:

• Prin utilizarea limbajului Visual Basic for Applications (VBA);

• Prin utilizarea macrocomenzilor, care reprezint� o form� simplificat� a limbajului VBA.

Comenzile macro sunt deosebite prin caracteristica lor unic� �i anume c� permit automatizarea diverselor evenimente f�r� ca realizatorul aplica�iei s� fie nevoit s� cunoasc� un anumit limbaj de programare.

Prin evenimente putem în�elege:

• Modific�ri ale datelor;

• Deschiderea sau închiderea unui formular sau raport;

• Ac�iunea asupra unor obiecte de control din formulare.

În Microsoft Access exist� un mare num�r de tipuri de ac�iuni care pot fi executate în cadrul unor comenzi macro. Totul depinde de noi, s� le cunoa�tem �i s� le aplic�m corect, în cuno�tin�� de cauz�.

Iat� câteva din aceste ac�iuni:

• Deschiderea sau închiderea unor tabele, interog�ri, formulare sau rapoarte;

• Vizualizarea sau tip�rirea rapoartelor;

• Rularea cererilor de interogare de ac�iune;

• Apelarea altor comenzi macro;

• Efectuarea condi�ionat� a anumitor ac�iuni;

61

Page 61: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.5

• C�utarea anumitor date în tabele;

• Deschiderea sau închiderea unor meniuri din Access;

• Afi�area anumitor mesaje;

• �tergerea, redenumirea, copierea sau salvarea diferitelor obiecte ale aplica�iei;

• Comunicarea cu alte produse soft, cum ar fi Word �i Excel.

Cea mai bun� metod� de a începe s� proiect�m macrocomenzi este s� ne gândim la un proces pe care îl parcurgem în mod repetat, ceva care facem de mai multe ori pe zi sau s�pt�mânal. De exemplu, dac� în fiecare zi avem de dat conducerii un raport cu vânz�rile zilei sau avem frecvent de f�cut unele modific�ri cu ajutorul unor interog�ri de ac�iune. Presupunem c� am g�sit un astfel de scenariu, deci putem trece la automatizarea lui.

Crearea macrocomenzilor cu o singur� ac�iune

Crearea macrocomenzilor se face cu ajutorul ferestrei Macro Design prezentat� în figura 5.1.

Rolul fiec�rei coloane, îl pute�i deduce dup� numele ei. Pentru început, cele mai importante sunt coloanele Action �i Comment, adic� cele în care ve�i defini �i comenta ac�iunile. De altfel, numai aceste dou� coloane vor fi afi�ate la început. Pentru afi�area celorlalte va trebui

s� ap�sa�i butoanele ( ) �i ( ) din toolbar-ul situat în partea de sus a ecranului.

Observa�i c� ac�iunile pe care dori�i s� le executa�i trebuie alese din coloana Action dintr-un comboBox, în care sunt peste 50 de ac�iuni care acoper� necesarul pentru macro-urile obi�nuite. Este un obicei bun de a comenta fiecare ac�iune pentru o bun� informare, mai ales pentru interven�iile ulterioare în modific�rile aduse aplica�iei.

În partea de jos-stânga, vor fi afi�ate cererile de argumente pentru ac�iunea selectat�.

O macrocomand� poate fi alc�tuit� dintr-o singur� ac�iune, sau din mai multe. Ca s� ad�uga�i în macrocomand� o ac�iune, muta�i cursorul în coloana Action �i deschide�i lista derulant�, de unde alege�i una din cele peste 50 de ac�iuni, dintre care multe au subac�iuni suplimentare.

Fig. 5.1. Fereastra Macro Design

Coloana Macro Name Coloana Comment Coloana Condition Coloana Action

Zon� în care vor fi afi�ate argumentele ac�iunii curente.

62

Page 62: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.5

Un exemplu simplu v� va ajuta s� crea�i �i s� executa�i o prim� macrocomand�. Ne propunem s� afi��m un formular care exist� în baza noastr� de date. Macrocomanda rezultat� se vede în figura 5.2.

Macrocomenzile se salveaz� ca �i formularele �i se lanseaz� cu un dublu-clic sau cu butonul Run din fereastra Database. În figura 5.3 se pot vedea 2 macrocomenzi, una care deschide un formular �i alta care produce un semnal sonor.

Rularea unei macrocomenzi din fereastra Database

Pa�ii pe care trebuie s�-i parcurge�i sunt urm�torii:

1. În fereastra Database, selecta�i obiectul Macros (dac� nu e selectat);

2. Selecta�i macrocomanda pe care dori�i s� o rula�i;

3. Executa�i clic pe butonul Run pentru a executa macrocomanda. De�i pute�i rula în acest mod toate macrocomenzile pe care le-a�i creat, v� reamintesc c� în cazul macrocomentilor care con�in grupuri, în acest mod se execut� numai primul grup de ac�iuni, celelalte fiind ignorate.

Pentru a executa un anumit grup dintr-o macrocomand�, folosi�i meniul. În cazul în care vre�i s� rula�i manual o anumit� macrocomand� dintr-un grup folosi�i metoda descris� în continuare.

Fig. 5.2. Macromand� cu o singur� ac�iune

Fig. 5.3. Frereastra Database cu 2 macro-uri

63

Page 63: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.5 Macrocomenzi ata�ate evenimentelor

Probabil c� metoda cea mai utilizat� pentru rularea macrocomenzilor din aplica�iile Access, nu este rularea direct�, ci ca r�spuns la un eveniment Access. Aceste evenimente pot fi declan�ate de tot felul de lucruri care se pot întâmpla la nivel de formular, raport sau chiar de control individual din cadrul acestora – de exemplu, deschiderea unui formular declan�eaz� evenimentul OnOpen al formularului respectiv, la introducerea unei valori într-o caset� de text declan�eaz� evenimentul OnClick, iar dac� utilizatorul actualizeaz� datele dintr-un control al unui formular se declan�eaz� evenimentul AfterUpdate ata�at controlului respectiv.

Pentru a identifica evenimente ale diferitelor obiecte, nu ave�i decât s� selecta�i obiectul respectiv �i s�-i studia�i evenimentele, activând op�iunea Event din fereastra Properties. Este de la sine în�eles c� sunte�i pe un formular aflat în modul Design.

În aplica�ia dumneavoastr� v� pute�i folosi de aceste evenimente spunându-i programului s� ruleze la apari�ia unui anumit eveniment ata�at unui formular, raport sau control o anume macrocomand�. Utilizând evenimentele în acest mod v� pute�i perfec�iona aplica�ia, astfel încât ea s� ofere ceva în plus fa�� de func�iile oferite de Access – permi�ând, de exemplu, utilizatorilor s� se deplaseze între diferite obiecte ale aplica�iei f�r� s� �tie m�car de existen�a ferestrei Database.

Utilizarea macrocomenzilor AutoExec �i AutoKeys

Aceste macrocomenzi au nume speciale, rezervate �i sunt mocrocomenzi native ale programului Access.

Macrocomanda AutoExec. Atunci când deschide�i baza de date, Access verific� dac� în cadrul acesteia nu exist� o macrocomand� cu numele AutoExec. Dac� exist� o astfel de macrocomand�, ea este executat� automat. Aceast� macrocomand� poate fi folosit� pentru preg�tirea aplica�iei; de regul� ea este folosit� împreun� cu op�iunile de pornire a Access-ului.

Observa�ie important�!! Dac� dori�i s� evita�i rularea macrocomenzii AutoExec, men�ine�i ap�sat� tasta Shift în timp ce deschide�i baza de date.

În general, se folose�te comanda AutoExec pentru a apela o func�ie VBA (prin intermediul ac�iunii RunCode) personalizat� pentru fiecare aplica�ie în parte.

Macrocomanda AutoKeys. Acestei macrocomenzi, Access-ul îi acord� un tratament special. Cu ajutorul acestei macrocomenzi pute�i s� asocia�i oric�rei ac�iuni, o combina�ie de taste dintre cele disponibile. Mai mult, pute�i chiar s� modifica�i comportamentul prestabilit al anumitor combina�ii de taste.

Iat� un exemplu de utilizare prezentat în figura 5.4.

64

Page 64: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.5

În exemplul nostru, combina�ia de taste SHIFT + p, lanseaz� macrocomanda care afi�eaz� o list� cu produse. Re�ine�i c� macrocomanda se nume�te AutoKeys, iar combina�ia de taste a fost trecut� în coloana Macro Name.

Metod� rapid� de pornire a aplica�iilor

Ca o alternativ� a macrocomenzii AutoExec, trebuie amintit aici c� începând cu versiunea Access 95, a fost introdus� o posibilitate de setare a op�iunilor de pornire a aplica�iilor.

Având deschis� aplica�ia ale c�rei op�iuni de pornire vrem s� le automatiz�m, d�m comanda Tools – Startup, care va deschide caseta de dialog din figura 5.5.

Set�rile din aceast� caset� de dialog sunt destul de evidente. Practic, putem s� înlocuim toat� ”fa�ada” programului Access.

Re�ine�i c� aceast� manevr� este ultima, dup� ce aplica�ia a fost testat� �i nu mai avem nimic de modificat la ea. Nu încerca�i s� ascunde�i meniul principal �i toolbar-urile, înainte de forma final�, pentru c� a�i putea ajunge s� nu mai pute�i interac�iona cu aplica�ia deoarece nu mai ave�i instrumente de acces. Pentru astfel de încerc�ri, face�i-v� o copie de rezerv�.

Fig. 5.4. Exemplu de atribuire a unei combina�ii de taste unei macrocomenzi

Fig. 5.5. Caseta de dialog Startup

65

Page 65: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.5 Desf��urarea lucr�rii

Desf��urarea lucr�rii va consta în mai multe etape �i anume: • Crearea macro-urilor care deschid formularele deja existente. • Crearea interfe�ei �i legarea butoanelor sale de aceste macro-uri. • Configurarea formei de start.

În final trebuie s� ajungem la interfa�a aplica�iei, care este prezentat� în figura 5.6.

Fiecare buton are în spate câte un macrou, care are misiunea s� deschid� un formular. Formularele le avem deja, urmeaz� s� cre�m câte un macro corespunz�tor fiec�rui buton.

Crearea macro-rilor aplica�iei ”Biblioteca”

Aceste macro-uri sunt cu 2 ac�iuni �i vor fi simplu de creat. Ac�iunile executate de fiecare macrou va fi OpenForm �i Close.

Observa�ie important� !! Inainte de a trece efectiv la crearea macro-urilor, verifica�i dac� ave�i create toate formularele, 10 la num�r, conform tabelului 5.1, prezentat pu�in mai încolo (peste 2 pagini).

Vom parcurge urm�torii pa�i:

Din caseta Database alegem op�iunea Macros, apoi New. Se va deschide caseta de dialog din figura 5.7.

Fig. 5.6. Forma de start a aplica�iei ”Biblioteca”

66

Page 66: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.5

În coloana Action putem alege comezile pe care dorim s� le efectueze macrocomanda noastr�. În cazul de fa�� alegem comenzile OpenForm, pentru deschiderea formularului de introducere a c�r�ilor �i Close pentru închiderea formei de start, de care nu avem nevoie cât timp e deschis� o alt� form�. În final vom avea imaginea din figura 5.8., iar macro-ul creat va avea numele mcrIntroducereCarti.

Observa�i în partea de jos, c� la comanda OpenForm putem alege formularul care va fi deschis, aici frmIntroducereCarti din caseta derulant� Form Name. De asemenea, se poate alege formularul care se închide, aici frmStart.

Dup� ce s-a ales formularul care va fi deschis, se salveaz� macro-ul creat cu comanda Save din meniul de sus.

Dup� aceast� metodologie se vor crea toate macro-urile care deschid formulare. În tabelul 5.1 sunt prezentate numele butoanelor, macro-urilor �i formularelor implicate în aplica�ia ”Biblioteca”. Observa�i c� numele fiec�rui macro începe cu prefixul ”mcr”.

Fig. 5.7. Caseta de dialog pentru crearea macro-urilor

Fig. 5.8. Macro-ul creat

67

Page 67: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.5

Acest tabel v� va fi foarte util pentru crearea formei start pe care o ve�i face în continuare.

Observa�i c� toate cele 10 macrouri deschid câte un formular.

Formularul frmCititori are ca surs� interogarea qryCititori, care are urm�toarea expresia SQL:

SELECT tblCititori.Nume+" "+tblCititori.Prenume AS Cititor, tblCititori.DataN AS [Data nasterii], tblCititori.Adresa, tblCititori.Localitate, tblJudete.Denumire AS Judetul, tblProfesii.Denumire AS Profesia

FROM tblCititori, tblProfesii, tblJudete

WHERE tblCititori.ProfesiaID = tblProfesii.ProfesieID And tblCititori.JudetID = tblJudete.JudetID

ORDER BY tblCititori.Nume;

Încerca�i în�elege�i expresia SQL de mai sus. Crea�i formularul frmCititori dup� metodologia de la crearea formularului frmCartile din biblioteca, prezentat� la pagina 49.

Crearea formei de start pentru aplica�ia ”Biblioteca”

Înainte de a începe aceast� ac�iune, verifica�i dac� ave�i create toate cele 10 formulare �i cele 10 macrouri de deschidere a cestora.

Observa�i c� baza de date a devenit aplica�ia ”Biblioteca”, ceea ce înseamn� c� acum vom trata obiectele bazei de date, ca interac�ionând între ele într-o succesiune logic�. Pân� acum avem în baza de date tabele, interog�ri, formulare �i rapoarte. Acestea au fost create cu un anume scop, pentru a fi folosite, fie pentru modificarea �i introducerea de date, fie pentru extragerea unor informa�ii din baza de date.

Pentru manipularea tuturor obiectelor bazei de date este nevoie de cunoa�terea programului Access, ceea ce nu e la îndemâna oricui. Utilizatorii bazelor de date �tiu s�-�i fac� doar treaba lor, de exemplu în cazul nostru, bibliotecara trebuie s� introduc� noi c�r�i, cititori, s� înregistreze împrumuturile etc. Este pu�in probabil c� va fi interesat� de denumirile corecte ale tabelelor, formularelor �i rapoartelor.

Buton Name Caption Macro Func�iune

cmdA_carti Carti mcrIntroducereCarti Deschide formularul frmIntroducereCarti cmdA_autori Autori mcrIntroducereAutori Deschide formularul frmIntroducereAutori cmdA_cititori Cititori mcrIntroducereCititori Deschide formularul frmIntroducereCititori cmdA_edituri Edituri mcrIntroducereEdituri Deschide formularul frmIntroducereEdituri cmdA_domenii Domenii mcrIntroducereDomenii Deschide formularul

frmIntroducereDomenii cmdA_profesii Profesii mcrIntroducereProfesii Deschide formularul

frmIntroducereProfesii cmdA_imprumuturi Situatii

imprumuturi mcrIntroducereImprumuturi Deschide formularul

frmIntroducereImprumuturi cmdCartile Cartile din

biblioteca mcrCartile Deschide formularul frmCartile din

biblioteca cmdImprumuturi Situatii

imprumuturi mcrSituatiiCititori Deschide formularul

frmSituatieCititoriMain cmdCititori Lista

cititorilor mcrCititori Deschide formularul frmCititori

Tabel 5.1. Obiectele aplica�iei

68

Page 68: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.5

Cel mai simplu, pentru bibliotecara noastr�, ar fi s� aib� un formular cu multe butoane de comand�, la ap�sarea c�rora s� ni se deschid� formularele de care avem nevoie, f�r� a face alte manevre. Astfel de formulare a�i întânit �i chiar a�i creat, în Visual Basic.

Revede�i formularul din figura 5.6, pentru a v� face o imagine, unde trebuie s� ajunge�i.

O astfel de interfa�� la pornirea aplica�iei, parc� ne d� un oarecare curaj, nu-i a�a? Oberv�m c� pentru a deschide formularul de actualizare a c�r�ilor, e suficient s� ap�s�m butonul Carti, pentru a introduce un împrumut ap�s�m butonul Actualizare imprumuri, iar pentru a vedea situa�iile cititorilor, ap�s�m butonul Situatii imprumuturi.

Cum vom face asta? Chiar aceasta este tema acestei lucr�ri de laborator. De altfel, crearea unei interfe�e cu obiecte pe ea ar trebui s� v� fie cunoscut� de la Visual Basic, nu-i a�a?

Vom parcurge urm�torii pa�i:

Din caseta Database alegem op�iunea Form, apoi New. Se va deschide caseta de dialog din figura 5.9, de unde ve�i alege op�iune Design View.

Dup� ap�sarea butonului OK va apare forma în modul Design, ar�tat� în figura 5.10.

Fig. 5.9. Alegerea formei de start

Fig. 5.10. Forma de start a�a cum arat� la început

69

Page 69: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.5

Aspectul formei de start este stabilit de propriet��ile sale care au valorile implicite. Pentru a o aduce la aspectul dorit, trebuie s�-i modific�m unele propriet��i cu ajutorul casetei de dialog

cu propriet��ile, care se deschide cu butonul Properties ( ) din toolbar-ul standard.

Modifica�i urm�toarele propriet��i (care se g�sesc în eticheta Format a casetei Properties): Scroll Bars - Neither

Record Selectors - No

Navigation Buttons - No

Border Style - Dialog

Dividing lines - No

Min Max Buttons - None

Prin aceste modific�ri de propriet��i nu am f�cut decât s� scoatem elementele inutile de pe formular. În urma acestor modific�ri �i dup� activarea formularului, el trebuie s� arate ca în figura 5.11.

Urmeaz� etapa cea mai pl�cut�, “împodobirea” formularului cu butoane de comand�. Aceste butoane se vor grupa în interiorul unui frame. Pentru aceast� activitate trebuie s� activ�m

caseta cu obiecte Toolbox ( ) �i caseta de dialog Properties, a�a cum se vede în figura 5.12.

Pentru pozi�ia butoanelor �i numele lor consulta�i figura 5.6 �i tabelul 5.1.

Fig. 5.11. Aspectul formularului dup�

modificarea propriet��ilor de mai sus

Toolbox

Formularul

Caseta Properties

Fig. 5.12. Configura�ia spa�iului de lucru pentru crearea butoanelor de pe interfa�a de start

70

Page 70: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.5

Pentru fiecare buton pe care îl pune�i pe interfa�� va trebui s� preciza�i valorile urm�toarelor propriet��i:

Name – numele butonului (cmd...).

Caption – ceea ce apare scris pe buton (ex. Actualizare imprumuturi).

On Click – se va scrie numele macroului care va fi executat (ex. mcrCititori).

Dup� ce a�i creat toate butoanele �i le-a�i setat cele 3 propriet��i, pute�i intra în modul Run al formularului, adic� s�-l activa�i. Prin ap�sarea fiec�rui buton se va deschide formularul corespunz�tor. În figura 5.13 este prezentat� schema de func�ionare a aplica�iei.

Conform macrourilor create, la ap�sarea fiec�rui buton se deschide un formular �i se închide formularul de start. Se pune, firesc, întrebarea cum revenim la forma de start, dup� ce am terminat lucrul în fiecare din cele 10 formulare.

Pentru aceasta, trebuie g�sit� o modalitate de reveni la formularul de start când se închide alt formular. Acest lucru se poate face prin apelarea unui macro care deschide formularul de start �i închide formularul curent, la evenimentul On Close al formularului din care vrem s� ie�im.

Prin urmare, va trebui s� cre�m alte 10 macrouri care s� fie legate de evenimentul On Close al fiec�ruia din cele 10 formulare.

frmIntoducereCarti frmIntoducereAutori frmIntoducereEdituri frmIntoducereCititori

frmIntoducereDomenii

frmIntoducereImprumuturi

frmIntoducereProfesii

frmCartile din biblioteca frmSituatieCititoriMain frmCititori

Fig. 5.13. Schema aplica�iei ”Biblioteca”

71

Page 71: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.5 Adaptarea formularelor aplica�iei ”Biblioteca”

Primul pas pe care trebuie s�-l facem este s� cre�m cele 10 macrouri. Deja avem suficient� experien�� pentru acest lucru, mai ales c� macrourile se aseam�n� foarte mult cu precedentele pe care le-am f�cut în aceast� lucrare.

Vom parcurge urm�torii pa�i:

Din caseta Database alegem op�iunea Macros, apoi New. Primul macro pe care îl vom crea este mcrCloseIntrodCarti, a�a cum se vede în figura 5.14.

Repeta�i aceast� opera�iune de 10 ori, pentru fiecare din cele 10 formulare. Da�i urm�toarele denumiri, macrourilor:

frmIntroducereCarti - mcrCloseIntrodCarti

frmIntroducereAutori - mcrCloseIntrodAutori

frmIntroducereCititori - mcrCloseIntrodCititori

frmIntroducereEdituri - mcrCloseIntrodEdituri

frmIntroducereDomenii - mcrCloseIntrodDomenii

frmIntroducereProfesii - mcrCloseIntrodProfesii

frmIntroducereImprumuturi - mcrCloseIntrodImprumuturi

frmCartile din biblioteca - mcrCloseCartile

frmSituatieCititoriMain - mcrCloseSituatieCititori

frmCititori - mcrCloseCititori

Deschide�i acum fiecare din cele 10 formulare în modul Design, c�uta�i evenimentul On Close �i atribui�i-i macroul corespunz�tor.

În sfâr�it, am terminat aplica�ia noastr�, putem trece la configurarea formei de start.

Fig. 5.14. Macroul de deschidere �i închidere a formularelor

72

Page 72: Baze de Date - Access - Laborator de Ioan Mocian

Baze de date – Îndrum�tor de lucr�ri de laborator Lucrarea nr.5 Configurarea formularului de start

Dup� ce a�i verificat func�ionarea aplica�iei, adic� a�i încercat dac� toate butoanele fac ce trebuie, închid �i deschid formularele dorite, pute�i trece la configurarea final�. Utilizatorul aplica�iei nu are nevoie s� vad� fereastra Database, chiar ar putea s�-l încurce. De asemenea, nu e nevoie de meniuri �i toolbar-uri.

În principiu, func�ionarea aplica�iei trebuie s� fie dup� cum arat� figura 5.13, adic� s� pornim cu formularul de start, apoi s� deschidem, pe rând formularele de care avem nevoie prin ap�sarea butonului corespunz�tor. În acest fel avem senza�ia c� aplica�ia noastr� a fost f�cut� de ni�te profesioni�ti, într-un limbaj complicat, numai de ei �tiut. Dar nu este de loc a�a, este aplica�ie f�cut� de noi, cu cuno�tin�ele dobândite la cursul de baze de date.

Pentru a configura programul Access în sensul celor ar�tate mai sus, da�i comanda:

Tools – Startup . . .

din meniul principal al Access-ului, în urma c�ruia se va deschide caseta de dialog din figura 5.14.

Din figur� se vede clar ce ave�i de f�cut. În primul, debifa�i toate checkbox-urile, apoi completa�i urm�toarele rubrici:

Application Title: - numele aplica�iei.

Display Form/Page: - alege�i din caseta derulant� numele formularului de start.

Application Icon: - alege�i iconi�a aplica�iei, un fi�ier care are una din extensiile .ico, .bmp.

Observa�ie important�!! Dac� dori�i ca aplica�ia s� se deschid� normal, f�r� set�rile formei de start, �ine�i ap�sat butonul SHIFT, când face�i click pe butonul Enable Macros.

Fig. 5.14. Configurarea formei de start

73

Page 73: Baze de Date - Access - Laborator de Ioan Mocian

Anexa A. Teme de proiect propuse Tema nr. 1: Proiectarea unei baze de date pentru o unitate de înv���mânt (liceu), în condi�iile de mai jos: Declara�ia de inten�ie: Se dore�te o baz� de date pentru gestionarea unei institu�ii de înv���mânt, informa�ii despre profesori, elevi, discipline, plane de înv���mânt. Obiectivele misiunii: Se doresc situa�ii despre profesorii titulari �i asocia�i. Se dore�te afi�area fiec�rei clase din �coal�. Se doresc situa�ii despre rezultatele la înv���tur� cum ar fi situa�ii cu promova�ii dintr-o clas� la o anumit� materie, la fel corigen�ii, etc. Se dore�te afi�area planului de înv���mânt al fiec�rei clase. Tema nr. 2: Proiectarea unei baze de date pentru gestionarea unui depozit. Declara�ia de inten�ie: Se dore�te o baz� de date pentru gestionarea cilen�ilor, furnizorilor �i produselor. Produsele vor fi împ�r�ite în grupe �i subgrupe �i se vor codifica. Un produs poate proveni de la mai mul�i furnizori. Obiectivele misiunii: Se doresc situa�ii despre stocurile unor produse. Se doresc situa�ii despre produsele recep�ionate(care intr� în depozit). Se doresc situa�ii despre produsele livrate(care ies din depozit). Situa�ii despre cei mai fideli clin�i. Furnizorii cei mai mari. Tema nr. 3: Proiectarea unei baze de date pentru federa�ia român� de fotbal. Declara�ia de inten�ie: Se dore�te o baz� de date pentru gestionarea juc�torilor federa�iei, a cluburilor, antrenorilor. Va fi eviden�iat� situa�ia juc�torilor, cu echipele �i perioadele în care au jucat, a antrenorilor etc. Se va avea în vedere �i echipa na�ional� �i de tineret, cu palmaresele �i antrenorii lor. Obiectivele misiunii: Se doresc situa�ii despre fiecare juc�tor, perioadele �i echipele la care au jucat. Se doresc situa�ii despre cluburi, palmares, antrenori. Se doresc sitau�ii despre traseul antrenorilor. Situa�ii despre echipa na�ional�, lot, palmares, antrenori. Acela�i lucru despre echipa de tineret. Tema nr. 4: Proiectarea unei baze de date pentru o gospod�rirea unei familii. Declara�ia de inten�ie: Se dore�te o baz� de date pentru gestionarea veniturilor �i cheltuielilor unei familii format� din 5 persoane – 2 adul�i, 2 copii �i o bunic�. Se vor împ�r�i veniturile �i cheltuielile pe categorii. Eviden�a tuturor datelor se va �ine la zi pe calculatorul familiei, la care au acces to�i membrii acesteia. Obiectivele misiunii: Se doresc situa�ii despre veniturile familiei, globale �i pe categorii.

74

Page 74: Baze de Date - Access - Laborator de Ioan Mocian

Se doresc situa�ii despre cheltuielile familiei, globale �i pe categorii. Situa�ii despre veniturile cele mai mari. Situa�ii legate de cheltuielile cele mai mari. Situa�ia datoriilor �i a crean�elor dac� exist�. Alte situa�ii. Tema nr. 5: Proiectarea unei baze de date pentru gestionarea bibliotecii personale. Declara�ia de inten�ie: Se dore�te o baz� de date pentru gestionarea c�r�ilor din biblioteca personal�. C�r�ile vor fi codificate pe domenii, cum ar fi car�i tehnice, literatur� român�, str�in�, sport, etc. Obiectivele misiunii: Se doresc situa�ii despre c�r�ile unui domeniu, autori, an apari�ie, num�r de file. Situa�ii despre cele citite �i necitite. Situa�ia c�r�ilor împrumutate. Alte situa�ii.

75