Cuprins - · PDF file1. Baze de date – Introducere Năchilă Cătălin – laborator...

143
1. Baze de date – Introducere Năchilă Cătălin – laborator Access – 1 – Cuprins Cuprins .................................................................................................................................... 1 1. Baze de date – Introducere .................................................................................................. 4 1.1. Tipuri de baze de date................................................................................................... 4 1.1.1. Baze de Date Ierarhice........................................................................................... 4 1.1.2. Baze de Date Reţea ................................................................................................ 6 1.1.3. Baze de Date Relaţionale....................................................................................... 8 1.1.4. Baze de Date Orientate pe Obiecte ...................................................................... 10 1.2. SGBD (Acces) ............................................................................................................ 11 1.2.1. SGBD .................................................................................................................. 11 1.2.2. Arhitectura aplicaţiilor Microsoft Access ........................................................... 12 2. Microsoft Access – Tabele (Tables) .................................................................................. 14 2.1. Crearea tabelelor ......................................................................................................... 15 2.1.1. Design View ........................................................................................................ 16 2.1.1.1. Descrierea câmpurilor (Zona A) ................................................................... 16 2.1.1.2. Tipurile şi subtipurile de date ....................................................................... 17 2.1.1.3. Field Properties (Zona B) ............................................................................. 19 2.1.1.4. Definirea cheii primare şi a indecşilor.......................................................... 27 2.1.2. Datasheet View.................................................................................................... 28 2.1.3. Table Wizard ....................................................................................................... 29 2.1.4. Proprietăţi ale unui tabel ...................................................................................... 29 2.1.5. Salvarea tabelelor ................................................................................................ 29 2.2. Operaţii asupra înregistrărilor dintr-o tabelă .............................................................. 30 2.2.1. Adăugarea înregistrărilor ..................................................................................... 30 2.2.2. Ştergerea de înregistrări ....................................................................................... 30 2.2.3. Căutarea unei înregistrări se realizează în acces secvenţial sau în acces direct .. 31 2.2.4. Modificarea înregistrărilor................................................................................... 31 2.2.5. Ordonarea înregistrărilor ..................................................................................... 32 2.2.6. Îngheţarea afişării câmpurilor.............................................................................. 32 2.3. Definirea relaţiilor între tabele ................................................................................... 33 2.4. Aplicaţii ...................................................................................................................... 38

Transcript of Cuprins - · PDF file1. Baze de date – Introducere Năchilă Cătălin – laborator...

1. Baze de date – Introducere

Năchilă Cătălin – laborator Access – 1 –

Cuprins

Cuprins .................................................................................................................................... 1

1. Baze de date – Introducere .................................................................................................. 4

1.1. Tipuri de baze de date................................................................................................... 4

1.1.1. Baze de Date Ierarhice........................................................................................... 4

1.1.2. Baze de Date Reţea................................................................................................ 6

1.1.3. Baze de Date Relaţionale....................................................................................... 8

1.1.4. Baze de Date Orientate pe Obiecte...................................................................... 10

1.2. SGBD (Acces) ............................................................................................................ 11

1.2.1. SGBD .................................................................................................................. 11

1.2.2. Arhitectura aplicaţiilor Microsoft Access ........................................................... 12

2. Microsoft Access – Tabele (Tables).................................................................................. 14

2.1. Crearea tabelelor......................................................................................................... 15

2.1.1. Design View ........................................................................................................ 16

2.1.1.1. Descrierea câmpurilor (Zona A)................................................................... 16

2.1.1.2. Tipurile şi subtipurile de date ....................................................................... 17

2.1.1.3. Field Properties (Zona B) ............................................................................. 19

2.1.1.4. Definirea cheii primare şi a indecşilor.......................................................... 27

2.1.2. Datasheet View.................................................................................................... 28

2.1.3. Table Wizard ....................................................................................................... 29

2.1.4. Proprietăţi ale unui tabel...................................................................................... 29

2.1.5. Salvarea tabelelor ................................................................................................ 29

2.2. Operaţii asupra înregistrărilor dintr-o tabelă .............................................................. 30

2.2.1. Adăugarea înregistrărilor..................................................................................... 30

2.2.2. Ştergerea de înregistrări....................................................................................... 30

2.2.3. Căutarea unei înregistrări se realizează în acces secvenţial sau în acces direct .. 31

2.2.4. Modificarea înregistrărilor................................................................................... 31

2.2.5. Ordonarea înregistrărilor ..................................................................................... 32

2.2.6. Îngheţarea afişării câmpurilor.............................................................................. 32

2.3. Definirea relaţiilor între tabele ................................................................................... 33

2.4. Aplicaţii ...................................................................................................................... 38

1. Baze de date – Introducere

Năchilă Cătălin – laborator Access – 2 –

3. Microsoft Access – Interogări (Queries) ........................................................................... 48

3.1. Generalităţi ................................................................................................................. 48

3.2. Interogarea prin selecţie.............................................................................................. 50

3.2.1. Crearea unui obiect de tip interogare................................................................... 51

3.2.2. Modificarea unei cereri........................................................................................ 57

3.2.3. Utilizarea operatorilor.......................................................................................... 57

3.2.4. Câmpuri calculate în interogări de selecţie.......................................................... 61

3.2.5. Utilizarea parametrilor......................................................................................... 69

3.2.6. Interogări de sintetizare a datelor ........................................................................ 73

3.2.7. Extragerea subcâmpurilor dintr-un câmp ............................................................ 84

3.3. Interogarea tip tabel încrucişat ................................................................................... 87

3.4. Interogări de acţiune ................................................................................................... 94

3.4.1. Interogări pentru crearea de noi tabele (Make Table Query) .............................. 94

3.4.2. Interogări pentru actualizarea datelor (Update Query)........................................ 96

3.4.3. Interogări pentru adăugarea de înregistrări (Append Query) .............................. 97

3.4.4. Interogări pentru ştergerea de înregistrări (Delete Query) .................................. 98

4. Microsoft Access – Formulare (Forms) .......................................................................... 104

4.1. Generalităţi ............................................................................................................... 104

4.2. Formularele Wizard.................................................................................................. 105

4.2.1. Form Wizard & AutoForm................................................................................ 105

4.2.2. Chart Wizard...................................................................................................... 108

4.2.3. Pivot Table Wizard............................................................................................ 108

4.3. Design View ............................................................................................................. 110

4.3.1. Proprietăţile obiectelor Forms ........................................................................... 112

4.3.2. Controale în formulare (Toolbox) ..................................................................... 117

4.3.3. Proprietăţile controalelor ................................................................................... 118

4.4. Subformulare ............................................................................................................ 126

5. Microsoft Access – Rapoarte (Reports) .......................................................................... 131

5.1. Generalităţi ............................................................................................................... 131

5.2. Generarea rapoartelor cu instrumentul Wizard ........................................................ 133

5.3. Generarea rapoartelor folosind opţiunea Design View ............................................ 138

5.4. Crearea de rapoarte cu subrapoarte .......................................................................... 141

5.5. Proprietăţi ale obiectelor de tip raport şi ale secţiunilor lor ..................................... 141

1. Baze de date – Introducere

Năchilă Cătălin – laborator Access – 3 –

1. Baze de date – Introducere

Năchilă Cătălin – laborator Access – 4 –

1. Baze de date – Introducere

Bază de date = una sau mai multe colecţii de date aflate în interdependenţă, împreună cu descrierea datelor şi a relaţiilor dintre ele.

1.1. Tipuri de baze de date

Din punct de vedere al modului de organizare, structurare şi accesare a datelor, cele mai cunoscute tipuri de baze de date sunt:

– baze de date ierarhice;

– baze de date de tip reţea;

– baze de date relaţionale;

– baze de date orientate pe obiecte.

1.1.1. Baze de Date Ierarhice

Bazele de date ierarhice se caracterizează prin faptul că elementele componente au relaţii de subordonare de tip unu la mulţi, astfel încât fiecare entitate are în subordine una sau mai multe entităţi şi este subordonată, la rândul ei, unei singure entităţi superioare, conform modelului ierarhic de organizare a datelor. în acest model de organizare a bazelor de date:

– entităţile (câmpurile şi înregistrările) sunt structurate sub formă de noduri;

– nodurile conectează ramurile unui arbore descendent; un nod de pe nivelul inferior este subordonat unui singur nod din nivelul ierarhic imediat superior, dar poate fi în relaţie cu n noduri aflate la nivelul inferior; altfel spus: fiecare entitate are un nod părinte şi mai multe noduri copil;

Observaţii. – dacă se şterge un nod părinte, se şterg toate nodurile copil subordonate;

– un nod copil poate fi adăugat numi dacă au fost adăugate mai întâi nodurile părinte;

– între nodurile copii nu pot fi stabilite relaţii.

Exemplul 1: Bază de date pentru sistemul de rezervări a unei companii aeriene. Nodul părinte = Bucureşti. Acest nod are patru copii: Cluj, Constanţa, Iaşi, Timişoara. Timişoara are doi copii: 210 şi 211. Zborul 210 are trei copii: pasagerii.

1. Baze de date – Introducere

Năchilă Cătălin – laborator Access – 5 –

Bucureşti

Cluj Constanţa Iaşi Timişoara

211210

Persoana 3Persoana 2Persoana 1

Plecare

Sosire

Nr. zbor

Pasager

Fig. 1.1. Exemplul 1

Exemplul 2: Se consideră o bază de date cu informaţii despre angajaţii şi serviciile (departamentele) unei companii. Un serviciu poate avea mai mulţi angajaţi, în schimb, un angajat poate face parte dintr-un singur serviciu.

Fig. 1.2. Exemplul 2 – Diagrama de structură

Servicii

Conducere Marketing Contabilitate

Pop Ion Dir. Gen. Maria Stan Ec. Petre Ioana Ec.10

1 2 3

31 32lie Dan Dir. Ec.30

Fig. 1.3. Exemplul 2 – Înregistrări (Realizări)

1. Baze de date – Introducere

Năchilă Cătălin – laborator Access – 6 –

1.1.2. Baze de Date Reţea

Acest model este similar cu modelul de tip ierarhic cu deosebirea:

– că un nod copil poate să aibă mai multe noduri părinţi;

– între nodurile părinte şi nodurile copil se adaugă conexiuni adiţionale (unui nod i se poate adăuga o cale nouă şi pot fi trasate ramuri noi);

– în această organizare fiecare entitate poate avea un număr nelimitat de conexiuni.

Exemplul 3: Baza de date a produselor care s execută într-o fabrică. Fiecare produs este format din mai multe ansambluri, iar fiecare ansamblu este format din mai multe piese. Fiecare piesă poate intra în componenţa mai multor produse.

Fig. 1.4. Exemplul 3

Exemplul 4: Se consideră o bază de date cu informaţii despre angajaţi, funcţiile şi serviciile (departamentele) unei companii. Un serviciu poate avea mai mulţi angajaţi, în schimb, un angajat poate face parte dintr-un singur serviciu. O funcţie poate fi ocupată de mai mulţi angajaţi, în schimb, un angajat poate ocupa o singură funcţie.

Fig. 1.5. Exemplul 4 – Diagrama de Structură

1. Baze de date – Introducere

Năchilă Cătălin – laborator Access – 7 –

Fig. 1.6. Exemplul 4 – Înregistrări

În exemplul luat:

– tipului de înregistrare părinte Servicii îi corespund trei înregistrări:

(1, Conducere), (2, Marketing) şi (3, Contabilitate)

– tipului de înregistrare Funcţii patru înregistrări:

(101, Dir Gen), (201, Dir Corn), (301, Dir Ec) şi (302, Ec),

– tipului de înregistrare Angajat tot patru înregistrări:

(10, Pop Ion, Dir Gen), (30, Ilie Dan, Dir Ec), (31, Stan Măria, Ec) şi (32 Petre Ioana, Ec).

– Înregistrările (1, Conducere) - Servicii şi (101, Dir Gen) - Funcţii - sunt părinţi pentru (10, Pop Ion, Dir Gen) - Angajat.

– Înregistrările (2, Marketing) şi (201, Dir Corn) nu au înregistrări copil.

– Înregistrarea (30, Ilie Dan, Dir Ec) are drept părinţi (3, Contabilitate) - Servicii - şi (301, Dir Ec) - Funcţii.

– Înregistrările (57, Stan Măria, Ec) şi (32, Petre Ioana, Ec) - Angajat – sunt copii înregistrărilor (3, Contabilitate) - Servicii şi (302, Ec) - Funcţii.

1. Baze de date – Introducere

Năchilă Cătălin – laborator Access – 8 –

1.1.3. Baze de Date Relaţionale

Modelul relaţional asociază unei entităţi o tabelă bidimensională numită relaţie.

Baza de Date Relaţională este o colecţie de tabele (sau fişiere de date) numite relaţii sau structuri, legate între ele prin câmpuri comune numite câmpuri cheie.

În tabelă, coloanele reprezintă atributele entităţii iar liniile (rândurile) tabelei reprezintă membrii entităţii.

Fiecare coloană are un nume distinct, prima linie fiind destinată amplasării acestor nume de atribute. O linie dintr-o relaţie se numeşte tuplu. Numărul de tupluri dintr-o relaţie reprezintă cardinalitatea relaţiei.

Numărul de atribute (n în figura 1.7) se numeşte gradul relaţiei.

La nivelul organizării fizice există următoarele corespondenţe:

– o relaţie poate fi asociată unui fişier,

– un tuplu se asociază cu o înregistrare,

– coloană corespunde unui câmp din înregistrare.

Fig. 1.7. Elementele unei relaţii

Privită prin prisma modelului relaţional, baza de date apare ca o colecţie de relaţii (tabele), în care fiecare coloană reprezintă un atribut distinct, iar fiecare rând, un tuplu distinct, de unde şi apelativul tabelă bidimensională.

1. Baze de date – Introducere

Năchilă Cătălin – laborator Access – 9 –

Cheia este un câmp (atribut) sau un ansamblu de câmpuri (atribute) care au rolul de a identifica un tuplu dintr-o tabelă.

Tipuri de chei: – primare / alternate,

– simple / comune,

– externe.

Tuplurile unei relaţii se pot identifica în mod unic prin intermediul valorilor unuia sau mai multor câmpuri (eventual toate câmpurile), care joacă rol de cheie primară a relaţiei respective.

Se numeşte domeniu primar un domeniu pe care este definit un singur atribut drept cheie primară. Dându-se două relaţii R1 şi R2 cu atributele A1 şi A2 chei primare definite pe acelaşi domeniu primar D, spunem că A1 este cheie externă, dacă, utilizând o parte din valorile sau toate, putem regăsi tuplurile relaţiei R2.

Altfel spus, un atribut al unei relaţii este cheie externă, dacă se regăseşte pe post de cheie primară într-o altă relaţie.

Nici un câmp (atribut) care participă la formarea cheii nu poate avea valori nule.

Exemplul 5: O bază de date ce conţine 4 tabele. Câmpurile tabelelor sunt:

– elevi id_e, nume_e, pren_e, adresa_e;

– note id_n, id_e, id_d, nota1, nota2, nota3;

– disciplină id_d, id_p, dendisciplină;

– profesori d_p, nume_p, pren_p, adresa_p;

id_e nume_e pren_e adr_e id_n id_e id_d nota1

id_d id_p dendisciplină id_p nume_p pren_p adr_p

nota2 nota3

Fig. 1.8 Exemplul 5 – Relaţii

1. Baze de date – Introducere

Năchilă Cătălin – laborator Access – 10 –

1.1.4. Baze de Date Orientate pe Obiecte

Bazele de date orientate pe obiecte, numite şi baze de date obiectuale, sunt construite pe modele de date complexe, structurate pe obiect. Conceptul de obiect defineşte o entitate informaţională atât ca structură cât şi ca funcţii (comportament).

Bazele de date orientate pe obiect reprezintă o abordare mai eficientă faţă de cele menţionate, dar nu le substituie total. Superioritatea acestora poate fi rezumată în următoarele:

– se construiesc o singură dată şi pot fi utilizate de nenumărate ori, ceea ce asigură crearea rapidă de aplicaţii complexe;

– modificările intervenite pe parcurs nu afectează toată logica aplicaţiei, ci doar obiectele respective, asigurând astfel o flexibilitate sporită a întregului sistem.

1. Baze de date – Introducere

Năchilă Cătălin – laborator Access – 11 –

1.2. SGBD (Acces)

1.2.1. SGBD

Pentru crearea unei baze de date, pentru actualizarea conţinutului acesteia, pentru consultarea şi prelucrarea datelor stocate aici este utilizat un sistem specializat de programe cunoscut sub denumirea de Sistem de Gestiune a Bazelor de Date (SGBD).

SGBD reprezintă ansamblul de programe care asigură interfaţa între baza de date şi utilizatorii acesteia.

Un SGBD trebuie să asigure următoarele funcţii elementare:

– definirea bazei de date;

– încărcarea bazei de date;

– introducerea datelor în baza de date;

– accesul la date (interogare, actualizare);

– modificarea unor date existente în baza de date;

– ştergerea unor date;

– extragerea informaţiilor stocate în baza de date;

– protejarea datelor; etc.

Exemple de SGBD: Access, Oracle, Fox, dBase

Cele mai importante caracteristici ale SGBD-ului Access sunt:

– este un sistem de gestiune a bazelor de date relaţional;

– posibilitatea creării unei baze de date care să poată fi utilizată de către un utilizator sau mai mulţi utilizatori în mod partajat;

– creează o bază de date care poate fi utilizată în mod exclusiv sau în mod multiutilizator;

– permite interogarea bazei de date fie în mod grafic, utilizând interfaţa QBE (Query By Example), fie utilizând limbajul SQL (Structured Query Language);

– permite automatizarea unor activităţi/acţiuni prin programare în limbajul VBA (Visual Basic for Applications) sau apelând la generatorul de macrocomenzi;

– realizarea importului/exportului de date către alte aplicaţii ale pachetului Microsoft Office sau ale SGBD relaţionale (FoxPro, xBase, Paradox, etc.) ;

– permite accesul la baze de date din reţeaua Internet, fiind un instrument util pentru publicarea informaţiilor în paginile Web;

– permite utilizarea obiectelor ACCESS din cadrul altor aplicaţii rulate sub sistemul de operare Windows;

– permite crearea de grupuri de obiecte definite de utilizator în cadrul bazei de date.

1. Baze de date – Introducere

Năchilă Cătălin – laborator Access – 12 –

1.2.2. Arhitectura aplicaţiilor Microsoft Access

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

Fig. 1.9. Aplicaţia Microsoft Access

Trebuie subliniată diferenţa majoră care există între Microsoft Access şi alte sisteme de gestiune a bazelor de date. Astfel, în Visual FoxPro, prin baze de date (database) se înţeleg doar acele fişiere în care sunt stocate datele.

– Tabele (Table) este un obiect definit de utilizator în care sunt stocate datele (expresia modelului relaţional).

– Formularul (Form) este un obiect care permite introducerea datelor, afişarea acestora sau controlul întregii aplicaţii.

– Interogarea (Query) este un obiect care permite vizualizarea informaţiilor obţinute prin prelucrarea datelor din una sau mai multe tabele (permit extragerea din baza de date a acelor date de care utilizatorul are nevoie).

– Raportul (Report) este un obiect care permite formatarea şi tipărirea informaţiilor obţinute în urma consultării bazei de date sub formă de documente.

– Pagina Web de accesare a datelor (Pages) reprezintă un obiect care include un fişier HTML şi alte fişiere suport în vederea furnizării accesului la date prin intermediul browser-elor Internet.

1. Baze de date – Introducere

Năchilă Cătălin – laborator Access – 13 –

– Comanda Macro (Macro) reprezintă un obiect care conţine o definiţie structurată a uneia sau mai multor acţiuni pe care Access le realizează ca răspuns la un anumit eveniment.

– Modulul (Module) reprezintă un obiect care conţine proceduri definite de utilizator şi scrise în limbajul de programare Visual Basic.

În figura 1.10 sunt prezentate legăturile ce există între diferitele obiecte ce compun o aplicaţie realizată în Access. Astfel, în cadrul tabelelor sunt stocate datele introduse iniţial de utilizator sau extrase cu ajutorul cererilor de interogare şi sunt afişate sub formă de rapoarte sau sunt modificate cu ajutorul formularelor sau paginilor Web de accesare a datelor. Cererile de interogare pot folosi funcţii Visual Basic în vederea realizării unor calcule definite de utilizator.

Fig. 1.10. Legături între obiectele Microsoft Access

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 14 –

2. Microsoft Access – Tabele (Tables)

Datele ce fac obiectul prelucrării (datele de intrare) vor fi memorate într-o bază de date; elementele fundamentale ce creează o bază de date relaţională sunt tabelele. Este esenţial ca fiecare tabel al bazei de date să conţină informaţii specifice unui singur tip de obiecte.

Un tabel reprezintă o colecţie de date legate între ele, memorată pe linii şi coloane; fiecare linie conţine o înregistrare (entitate completă de date referitoare la un anumit tip de obiecte). La rândul ei, fiecare înregistrare este compusă din coloane sau câmpuri (un câmp reprezentând cea mai mică entitate de date).

Într-un tabel se stochează atât descrierea structurii tabelei cât şi înregistrările de date.

Lansarea aplicaţiei Access se poate realiza din Start –> Programs –> Microsoft Access sau prin dublu click pe pictograma Access. În ambele cazuri pe ecran se afişează fereastra de bază Access (figura 2.1).

Fig. 2.1. Microsoft Access – Fereastra principală

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 15 –

2.1. Crearea tabelelor

Gestiunea tabelelor (creare, modificare, vizualizare, ştergere) unei baze de date Access se poate realiza din secţiunea Tables a ferestrei bazei de date (Database Window) figura 2.2.. În această secţiune se găsesc controale specifice care permit crearea, modificarea sad vizualizarea structurii unui tabel.

Fig. 2.2. Database Window

Există mai multe modalităţi de creare a tabelelor puse la dispoziţie de către Access:

– alegând comanda Table din meniul Insert;

– prin acţionarea butonului de comandă New din fereastra Database Window;

– folosind hiperlink-urile salvate în fereastra bazei de date (Create table in Design View, Create table by using wizard, Create table by entering data);

– importând dintr-o bază de date (Import Table);

– legând de alte tabele aparţinând altor baze de date (Link Table).

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 16 –

2.1.1. Design View

Design View este echivalentă cu acţionarea hyperlink-ului Create table in Design View. Utilizatorul stabileşte absolut toţi parametrii necesari pentru descrierea structurii unui tabel: numele câmpurilor, tipurile de date ale acestora; reguli de validare, etc..

Fereastra Access de descriere a tabelei (figura 2.3) este formată din două zone:

– zona A în care se definesc câmpurile din structura tabelei

– zona B în care sunt precizate proprietăţile acestora.

Fig. 2.3. Design View

2.1.1.1. Descrierea câmpurilor (Zona A)

• Numele câmpului (Field Name) – trebuie să respecte următoarele reguli:

– poate să conţină litere (majuscule sau minuscule), cifre şi caractere speciale;

– poate să conţină maximum 64 de caractere;

– este interzisă utilizarea caracterelor: punct (.), semnul exclamării (!), parantezele drepte ([]);

– numele câmpului nu poate să înceapă cu un spaţiu.

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 17 –

În formarea numelui câmpului se recomandă:

– să nu se utilizeze caracterul spaţiu; pentru îmbunătăţirea lizibilităţii numelui se poate înlocui spaţiul cu caracterul de subliniere ( _ ) sau se pot utiliza litere majuscule şi minuscule în acelaşi nume;

– reducerea lungimii numelui câmpurilor pentru a conserva resursele sistemului şi pentru a scuti utilizatorul de introduceri lungi atunci când se fac referiri la numele câmpului.

• Tipul de date al câmpului (Data Type); utilizatorul are la dispoziţie zece tipuri de date de bază (tabelul 2.1.), pentru unele dintre ele fiind disponibile subtipuri de date, în funcţie de necesităţi; subtipurile se configurează în zona de jos a ferestrei (secţiunea General).

• Comentarii (Description) – proprietate opţională, unde utilizatorul poate introduce sub formă de şiruri de caractere diverse informaţii cu privire la câmp.

2.1.1.2. Tipurile şi subtipurile de date

Tipurile şi subtipurile de date Access sunt prezentate în tabelul 2.1..

Tip de date Subtip de Date Descriere

Text

Este un tip de date alfanumeric, de lungime maximă 255. Implicit, Access propune dimensiunea (proprietatea Field Size) 50 pentru un câmp de tip Text. Un câmp de acest tip poate să conţină practic orice caracter.

Memo Este un tip de date alfanumeric (poate conţine orice caracter), în lungime maxima de 65535 caractere. Utilizatorul nu poate configura o dimensiune mai mică decât aceasta.

Byte Tip de date întreg a cărui plajă de valori admisă este între 0 şi 255. Spaţiul ocupat de un asemenea câmp este de 1 byte.

Integer Tip de date ntreg cu plaja de valori admisă între (– 32768, 32768). Ocupă 2 bytes.

Long Integer Tip de date întreg de dimensiuni mari cu plaja de valori admisă între (–2147483648, +2147483647). Ocupă 4 bytes.

Number

Single

Tip de date cu plaja de valori admisă în intervalul ( )38 453, 402823 10 , 1,401298 10−− × − × pentru numere negative, iar pentru numere pozitive în intervalul ( )45 381,401298 10 , 3,402823 10−× × . Ocupă 4 bytes şi are precizie de 7 zecimale.

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 18 –

Tip de date Subtip de Date Descriere

Double

Tip de date de dimensiuni foarte mari cu plaja de valori admisă în intervalul

( )324308 1012479406564584,4;1062317976931348,1 −×−×− pentru numere negative, iar pentru numere pozitive în intervalul ( )308324 1062317976931348,1;1012479406564584,4 ×× − . Ocupă 8 bytes şi are precizie de 15 zecimale.

Replication ID

Tip de date GUID (Global unique identifier). Ocupă 16 bytes. Sunt utile pentru câmpurile care sunt (sau fac parte dintr-o) cheie externă ale căror chei primare sunt de tipul AutoNumber, ReplicationID.

Decimal Tip de date cu plaja de valori admisă între

11028 −− şi 11028 − . Ocupă 12 bytes şi precizie (proprietatea Precision) maximă de 28.

Date / Time

Memorează date calendaristice, inclusiv ora îi formate predefinite. Datele calendaristice admise sunt între anul 100 şi 9999. Formatele de afişare se stabilesc în proprietatea Format. Ocupă 8 bytes.

Currency Tip de date numeric, care operează cu maxim patru zecimale şi maxim 15 poziţii în stânga punctului zecimal. Ocupă 8 bytes.

LongInteger

Tip de date care şi atribuie automat valori, la crearea unei noi înregistrări. Valorile atribuite pot fi secvenţiale (proprietatea NewValues = Increment) sau aleatoare (proprietatea New Values = Random). Câmpurile de tip AutoNumber, nu pot fi actualizate. Ocupă 4 bytes. AutoNumber

Replication ID Tip de date care şi atribuie automat valori de tip GUID. Exemplu de valoare GUID: {E0DC2C27-EDE8-412A-B1C4-AF69021A1365}. Ocupă 16 bytes.

Yes / No Tip de date logic, care poate lua doar două valori: adevărat (valoarea 1) sau fals (valoarea 0). Ocupă 1 bit.

OLE Object

Tip de date care poate să includă imagini, documente Word, foi de calcul Excel, etc. Dimensiunea maximă este de 1 Gb, cu condiţia să existe acest spaţiu pe disc. Nu poate fi cheie şi nici nu poate fi index.

Hyperlink

Şir de caractere, care poate memora o adresă Web, ce va fi utilizată sub formă de hyperlink. Este formată din trei părţi: textul de afişat, adresa şi subadresa. Dimensiunea maximă a fiecărei părţi este de 2048 caractere.

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 19 –

Tip de date Subtip de Date Descriere

Lookup Wizard

Câmpuri ale căror valori vor fi completate automat prin selecţia dintr-o listă simplă de valori (List Box) sau dintr-o listă derulantă de valori (Combo Box).

Tabelul 2.1. Tipuri de date

2.1.1.3. Field Properties (Zona B)

În zona B (General şi Lookup) se pot stabili valori pentru două categorii de proprietăţi:

– proprietăţi pe care le au toate câmpurile;

– proprietăţi specifice anumitor câmpuri, în funcţie de tipul de date.

Proprietăţi din categoria General:

• Field Size – stabileşte dimensiunea maximă admisă pentru tipurile de date Number, AutoNumber, Text; pentru primele două, valorile sunt precizate în tabelul 2.1, iar pentru tipul Text o valoare între 0 şi 255;

• Decimal places – stabileşte numărul de zecimale utilizat pentru afişarea unui număr; valorile posibile sunt Auto (numărul este afişat cu atâtea zecimale cu cât a fost calculat; nu sunt afişate mai mult de 15 zecimale) sau un număr între 0 şi 15.

• Format – stabileşte formatul de afişare a unui câmp; aceste formate se pot defini de utilizator cu ajutorul unor secvenţe speciale sau, pentru unele tipuri de date, există deja predefinite formate uzuale. Formatul dorit se selectează din lista oferită în urma activării butonului de control. Pentru datele de tip numeric, de exemplu, se poate opta între următoarele formate de afişare: General Number, Currency, Euro, Fixed, Standard, Percent, Scientific; (fig. 2.4.)

Pe lângă aceste formate predefinite se mai pot utiliza anumite combinaţii speciale de caractere. Caracterele ce se pot utiliza într-un format de afişare al unui câmp numeric sunt prezentate în tabelul 2.2..

Fig. 2.4. Number -> Format

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 20 –

Pentru câmpurile numerice formatul de afişare se împarte în patru zone separate prin caracterul „ ; ”:

– prima zonă se referă la modul de afişare al numerelor pozitive;

– a doua zonă se referă la modul de afişare al numerelor negative;

– a treia zonă se referă la modul de afişare al numărului zero;

– a patra zonă se referă la modul de afişare al valorii Null.

. separatorul zecimal este punctul # sunt afişate cifre sau spaţiu

, separatorul miilor este virgula $ este afişat şi caracterul $

0 sunt afişate cifre sau zero %

numărul este înmulţit cu 100 şi alături este afişat caracterul procent

E+, E-, e+, e- stabileşte formate de afişare în format ştiinţific

Tabel 2.2. Caracterele ce se pot utiliza într-un format de afişare al unui câmp numeric

• Caption – stabileşte un şir de caractere care va fi afişat în titlul unei coloane, în momentul introducerii datelor; dacă această proprietate nu are nici o valoare, şirul afişat în titlul unei coloane este chiar numele câmpului; valoarea acestei proprietăţi nu are nici o influenţă asupra numelui câmpului în utilizarea sa în interogări, VBA, etc.

Exemplu: dacă numele unui câmp este DenProd, şi în proprietatea Caption se scrie

Denumire Produs.

• Default Value – stabileşte o valoare implicită care este propusă în momentul în care se introduc date într-un tabel; se recomandă în cazul în care există o valoare preponderentă a conţinutului unui câmp; în cazul în care utilizatorul nu introduce o altă valoare în câmpul respectiv, valoarea din această proprietate va fi memorată în conţinutul acestuia.

Exemplu: pentru un câmp care memorează valoarea TVA, ţinând cont că pentru majoritatea

produselor aceasta este 19%, pentru a uşura munca de culegere date, este recomandat ca în proprietatea Default Value să se stabilească această valoare. La introducerea datelor, dacă un produs are această cotă, atunci valoarea sa nu se mai tastează.

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 21 –

• Input Mask – stabileşte un format (mască, şablon) de introducere a datelor pentru un anumit câmp. La fel ca în cazul proprietăţii Format, există o serie de caractere prin care se stabileşte acest format de introducere a datelor; în cazul în care se utilizează ambele proprietăţi, proprietatea Format are prioritate faţă de proprietatea Input Mask.

Proprietatea Input Mask pune la dispoziţia utilizatorului câteva măşti predefinite dar şi posibilitatea definirii unor măşti personalizate. Măştile personalizate se definesc sub forma a trei zone separate prin caracterul punct şi virgulă (;):

– prima zonă se utilizează pentru definirea propriu-zisă a formatului de introducere;

– a doua zonă, se utilizează pentru a specifica dacă se memorează şi caracterele care fac parte din şablonul de introducere sau nu; valoarea zero stabileşte că se memorează inclusiv caracterele din definiţia şablonului, iar valoarea unu inhibă această posibilitate:

– a treia zonă se utilizează pentru a specifica un caracter, care este afişat într-o poziţie din şablon.

Caractere ce se pot utiliza pentru definirea unui şablon de introducere a datelor sunt prezentate în tabelul 2.3..

Exemple:

\O\R\A\:00:00:00 va afişa şi cuvântul ORA: fără a fi memorat. De remarcat că Access transformă automat secvenţa \O\R\A\: în ORA:.

"(040)-"00\-00000## este un posibil şablon pentru introducerea unui număr de

telefon din România; la introducere va afişa: (040)–__– . Prin utilizarea caracterului 0, nu se permit prefixe decât din două cifre, şi numere de telefon de minim 5 cifre, iar prin utilizarea caracterului # sunt permise numere din 6 şi 7 cifre.

>AAAA<aaaa defineşte un format de introducere în care primele 4 caractere sunt obligatorii şi sunt transformate automat în majuscule, iar următoarele 4 sunt opţionale şi transformate automat în minuscule.

Utilizarea proprietăţii Input Mask inhibă tasta Insert, singurul mod de lucru fiind cel de suprascriere.

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 22 –

0

sunt permise toate cifrele de la 0 la 9, fără semn; nu se permite conţinutincomplet al câmpului, dacă se utilizează acest simbol. Exemplu: o mască definită sub forma 000000, va afişa la introducere şi nu va permite decât introducerea a exact şase cifre.

< caracterele introduse sunt convertite în minuscule

9 sunt permise toate cifrele de la 0 la 9, fără semn, inclusiv spaţiu; este permisconţinutul incomplet;

> caracterele introduse sunt convertite în majuscule

# sunt permise cifrele de la 0 la 9, inclusiv spaţiu, semn; este permis conţinutulincomplet

. , separatorul pentru zecimale, pentru mii

L sunt permise literele de la A la Z; nu este permis conţinutul incomplet alcâmpului

: ; – / separatori pentru date calendaristice şi pentru timp

? sunt permise literele de la A la Z şi conţinutul incomplet password

afişează caracterul asterisc (*) în momentul introducerii de date

A sunt permise toate literele şi cifrele; nu este permis conţinutul incomplet alcâmpului

\

afişează un caracter în şablon fără a determina memorarea acestuia înconţinutul câmpului

& orice caracter sau spaţiu; nu este permis conţinutul incomplet al câmpului C

orice caracter sau spaţiu şi conţinut incomplet al câmpului

Tabel 2.3. Caractere ce se pot utiliza pentru definirea unui şablon de introducere a datelor

• Validation Rule – defineşte o regulă de validare pentru un câmp, practic o expresie ce se a testa pentru conţinutul introdus într-un câmp. Regulile de validare se testează după introducerea unei valori într-un câmp sau în momentul în care se încearcă salvarea unei înregistrări (în momentul în care se încearcă introducerea unei înregistrări noi, la trecerea ie la o înregistrare la alta, sau la salvarea explicită a acesteia) pentru câmpurile nevizitate de utilizator. Dacă o regulă de validare a unui câmp nu se verifică, înregistrarea nu se poate salva decât dacă se corectează conţinutul câmpului în aşa fel încât să se verifice regula de validare stabilita Expresia pentru această proprietate se poate scrie şi în mod asistat cu ajutorul ferestrei Expression Builder, ce poate fi invocată din butonul .

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 23 –

Numele câmpurilor dintr-o expresie Validation Rule trebuie scris între caracterele [ ]. O expresie Validation Rule la nivel de câmp nu poate referi alte câmpuri, decât cel curent. Se pot utiliza funcţii Access, constante, operatori, etc.

Exemple de reguli de validare pentru un câmp de tip Number, Integer:

– >100 and <=200 stabileşte valorile posibile între 101 şi 200

– <>Null sau Is Not Null câmpul trebuie să conţină o valoare.

Exemple de reguli de validare pentru un câmp de tip Text:

– "Călăraşi" Or "Bucureşti" Or "Braşov"

– In("Calaraşi"; "Bucureşti"; "Braşov") valoarea câmpului nu poate fi decât una din cele trei.

– Mid([nume];l;l)="A" primul caracter introdus în câmpul nume nu poate fi decât A sau a.

Exemple de reguli de validare pentru un câmp de tip Date/Time:

– >=Date() data introdusă trebuie să fie mai mare sau egală cu data sistemului.

– Year([data factura])=Year(Date()) anul din câmpul data factura trebuie să fie în momentul introducerii, acelaşi cu cel din data sistemului.

• Validation Text – defineşte un mesaj de atenţionare care va fi afişat în momentul în care regula de validare definită în proprietatea Validation Rule este încălcată.

• Required – poate lua valoarea Yes sau No, corespunzătoare valorilor logice adevărat (True) sau fals (False) şi stabileşte dacă valoarea unui câmp este obligatoriu (Yes) de introdus sau nu (No). Pentru câmpurile de tip Text, Memo, Hyperlink este bine să se utilizeze această proprietate în strânsă legătură cu proprietatea Allow Zero Length.

• Allow Zero Length – stabileşte dacă este permisă introducerea unui şir de lungime zero (Yes) sau nu (No) într-un câmp de tip Text, Memo sau Hyperlink. Variantele de memorare în condiţiile utilizării proprietăţilor Required şi Allow Zero Length sunt prezentate în tabelul 2.5.

• Date/Time – formatele predefinite de afişare pentru câmpurile de tip sunt prezentate în figura 2.5.

Fig. 2.5. Date -> Format

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 24 –

: separator pentru timp mmmm este afişat numele complet al lunii

/ separator pentru data calendaristică y numărul zilei din an

d ziua este afişată sub formă de valori de la 1 la 31 yy sunt afişate ultimele două caractere

din an de la 01 la 99

dd ziua este afişată sub formă de valori de la 01 la 31 yyy anul este afişat complet de la 100 la

9999

ddd sunt afişate numai primele trei caractere din numele unei zile q data este afişată ca numărul

trimestrului din an, de la 1 la 4

dddd este afişat numele complet al unei zile h ora este afişată prin numere de la 0

la 23

w ziua este afişată ca valoare din săptămână, de la 1 la 7 hh ora este afişată prin numere de la 00

la 23

ww este afişat numărul săptămânii în an, de la 1 la 53 n minutele sunt afişate prin numere

de la 0 la 59

m este afişat numărul lunii din an, de la 1 la 12 nn minutele sunt afişate prin numere

de la 00 la 59

mm este afişat numărul lunii din an de la 01 la 12 s secundele sunt afişate prin numere

de la 0 la 59

mmm sunt afişate numai primele trei caractere din numele unei luni ss secundele sunt afişate prin numere

de la 00 la 59

AM/PM sau am/pm sau A/P sau a/p este afişat AM, am, A sau a pentru primele 12 ore ale zilei şi PM, pm, P sau p pentru ultimele 12 ore din zi

Tabel 2.4. Caractere care se pot utiliza într-un câmp de tip Date/Time

Exemple:

"Data: "dd/mm/yy" săptămâna: "ww afişează Data: 01/06/01 săptămâna: 22

dddd/mmmm/yyyy afişează vineri/iunie/2001

"ORA:"hh:nn:ssAM/PM afişează ORA:12:00:00AM

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 25 –

Valoarea din proprietatea

Allow zero length

Valoarea din proprietatea

Required

Acţiunea utilizatorului Valoarea memorată

Enter Null

Bara spaţiu Null No No

Şir de lungime 0 Nu este permis

Enter Null

Bara spaţiu Null No Yes

Şir de lungime 0 Nu este permis

Enter Null

Bara spaţiu Null Yes No

Şir de lungime 0 Şir de lungime 0

Enter Nu este permis

Bara spaţiu Nu este permis No Yes

Şir de lungime 0 Nu este permis

Enter Nu este permis

Bara spaţiu Şir de lungime 0 Yes No

Şir de lungime 0 Şir de lungime 0

Tabel 2.5. Proprietăţile Allow zero length şi Required

• Indexed – stabileşte un câmp drept index. Valori posibile:

– No - neindexat

– Yes (Duplicates OK) – sunt permise valori duplicate pe câmpul index; – Yes (No Duplicates) – index; nu sunt permise valori duplicate pe acest câmp.

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 26 –

Pentru câmpurile de tip Yes/No formatele de afişare predefinite sunt: True/False, Yes/No, On/Off.

Pe lângă aceste formate predefinite, utilizatorul îşi poate crea propriile formate pentru câmpurile logice într-o structură formată din trei zone separate prin caracterul „ ; ”.

– în prima zonă, se poate stabili un text care nu are influenţă asupra conţinutului câmpului;

– a doua zonă este utilizată pentru a stabili un text afişat în cazul în care valoarea memorată este adevărat (True);

– a treia zonă este utilizată pentru textul afişat în cazul în care valoarea memorată este False.

În cazul câmpurilor de tip logic, efectul formatelor definite de utilizator se poate observa numai dacă se utilizează controale de tip casetă de text (Text Box).

În cazul câmpurilor de tip Text sau Memo, nu există formate predefinite de afişare, însă prin intermediul unor caractere, utilizatorul îşi poate stabili propriile formate. Aceste formate se stabilesc sub forma a două zone:

– prima zonă se utilizează pentru a stabili formatul propriu-zis de afişare al conţinutului câmpului;

– a doua zonă, pentru stabilirea formatului de afişare în cazul valorilor vide sau Null.

Caractere ce se pot utiliza pentru stabilirea formatelor de afişare pentru câmpurile de tip Text sau Memo:

@ – este obligatorie introducerea unui caracter sau spaţiu;

& – nu este obligatorie introducerea unui caracter;

> – transformă toate caracterele în majuscule, indiferent de modul de tastare;

< – transformă toate caracterele în minuscule, indiferent de modul de tastare;

Exemplu: <; „Nu exista text” va afişa şirul introdus cu litere minuscule, iar în cazul în care nu este introdus un şir va afişa textul Nu exista text.

Aşa cum s-a amintit, pe lângă aceste formate de caractere predefinite se pot utiliza şi secvenţe speciale de caractere, care pot fi utilizate după necesităţi. Sunt caractere care se pot utiliza pentru orice tip de câmp şi caractere care se pot utiliza numai pentru anumite tipuri de date.

Caractere care se pot utiliza în orice tip de câmp :

– „şir caractere” afişează şirul de caractere dintre ghilimele împreună cu conţinutul câmpului;

– ! aliniază conţinutul unui câmp la stânga, în loc de alinierea dreapta;

– [Culoare] afişează conţinutul unui câmp în culoarea precizată;

– (space)

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 27 –

2.1.1.4. Definirea cheii primare şi a indecşilor

Orice tabelă trebuie să posede o cheie primară (Primary Key), adică un câmp sau un grup de câmpuri care identifică în mod unic fiecare înregistrare. Dacă utilizatorul nu stabileşte o cheie primară, Access stabileşte una în mod implicit creând un câmp de tip AutoNumber care va conţine un număr unic pentru fiecare înregistrare. Deşi Access creează în mod implicit o cheie primară, următoarele raţiuni recomandă utilizatorului să definească o cheie primară:

– cheia primară este un index.

– indecşii realizează o clasificare a datelor după unul sau mai multe câmpuri ceea ce are drept consecinţă creşterea vitezei de realizare a interogărilor.

– la fiecare adăugare a unei noi înregistrări, Access nu autorizează înregistrări duble pentru câmpul cheie primară.

– Microsoft Access afişează datele în ordinea cheii primare.

În afară de indecşi pe un singur câmp se pot defini şi indecşi multipli, care funcţionează pe mai multe câmpuri simultan. Aceştia se pot defini/modifica numai în fereastra Indexes. În aceeaşi fereastră se pot gestiona şi indecşii pe un singur câmp. Fereastra cu indecşii unei tabele (Indexes) se activează din meniul View, opţiunea Indexes (figura 2.5.)

Fig. 2.5. View -> Indexes

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 28 –

Pentru definirea unui index (sau pentru o cheie primară) format din mai multe câmpuri, se scrie numele indexului în coloana Index Name, iar în coloana Field Name se aleg câmpurile care formează indexul sau cheia primară.

Coloana Sort Order indică modul de ordonare al datelor în index. În cazul indecşilor ce includ mai multe câmpuri, valoarea proprietăţii Indexed, pentru fiecare câmp în parte este No.

Proprietăţile din fereastra Indexes:

• Primary – valoarea Yes indică faptul că indexul este cheie primară;

• Unique – valoarea Yes indică faptul că indexul va avea valori unice, nefiind permise duplicatele; pentru o cheie primară, această proprietate are obligatoriu valoarea Yes.

• Ignore Nulls - valoarea Yes indică faptul că sunt permise valorile Null într-un index; pentru o cheie primară, această proprietate are obligatoriu valoarea No.

Pe lângă modalitatea descrisă anterior, cheia primară a unui tabel se mai poate defini astfel:

– dacă este vorba de o cheie formată dintr-un singur câmp, se poziţionează cursorul în câmpul respectiv, se acţionează click dreapta şi se alge opţiunea Primary Key;

– pentru chei primare formate din mai multe câmpuri, se selectează câmpurile din bordura ferestrei de proiectare şi se acţionează butonul menţionat anterior.

O cheie externă nu se defineşte explicit în Access sub noţiunea de cheie externă, ea fiind stabilită prin definirea relaţiilor dintre tabele. Pentru creşterea performanţelor se recomandă definirea de indecşi pentru fiecare cheie externă.

2.1.2. Datasheet View

Datasheet View este echivalentă cu acţionarea hyperlink-ului Create table by entering data. În această variantă, Access propune o fereastră de introducere date sub forma unui tabel cu nume de câmpuri generice Field1, Field2....Field10. Inserarea de noi câmpuri pe lângă cele zece propuse implicit, se realizează din meniul Insert->Column.

Schimbarea numelor implicite ale coloanelor se realizează din meniul Format->Rename Column funcţie de datele introduse în celule, la salvarea tabelului, Access stabileşte ce tip de date va aloca fiecărui câmp.

Dacă, de exemplu, coloana unui câmp conţine celule cu numere şi o celulă cu un şir de caractere, Access, va alege pentru acel câmp tipul de date Text. Dacă o coloană conţine numai numere, Access va alege un tip de date numeric, care să satisfacă toate valorile existente în celulele câmpului. Această variantă de creare a unui tabel este avantajoasă doar în cazul în care se doreşte crearea rapidă a unui tabel, fără a interesa prea mult tipurile de date ale câmpurilor, numele acestora, stabilirea de reguli de validare şi alte parametrizări importante, toate aceste operaţii fiind disponibile doar după salvarea tabelului prin modificarea structurii acestuia (butonul de comandă Design View).

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 29 –

2.1.3. Table Wizard

Table Wizard este echivalentă cu acţionarea hyperlink-ului Create table by using wizard. Alegerea acestei variante are ca efect activarea unei ferestre în care se propun diverse modele de tabele cu o mare varietate de câmpuri.

2.1.4. Proprietăţi ale unui tabel

Pentru a vizualiza fereastra cu proprietăţi a unui tabel se activează opţiunea Properties din meniul View.

• Validation Rule - are aceeaşi semnificaţie ca proprietatea cu acelaşi nume ataşată câmpurilor, numai că operează la nivel de tabel. În momentul în care se încearcă salvarea unei înregistrări (în momentul în care se încearcă introducerea unei înregistrări noi, la trecerea de la o înregistrare la alta, sau la salvarea explicită a acesteia), dacă nu se verifică această regulă de validare, nu se va putea salva înregistrarea. Faţă de aceeaşi proprietate la nivel de câmp, la nivel de tabel, se pot referi mai multe câmpuri ale tabelului în expresia care defineşte proprietatea.

• Validation Text – afişează un mesaj în momentul în care regula de validare definită la nivel de tabel, este testată şi nu se verifică.

• Filter – stabileşte un criteriu în funcţie de care vor fi selectate înregistrările în fereastra de introducere date. Pentru a activa/dezactiva filtrul trebuie acţionat butonul Apply Filter sau din meniul Records, opţiunea Apply Filter/Sort respectiv Remove Filter/Sort.

• Order By – stabileşte ordinea de afişare a înregistrărilor, în momentul introducerii datelor. Numele câmpurilor trebuie precizate între [].

2.1.5. Salvarea tabelelor

Tabelele Access se pot salva în mai multe moduri:

– din meniul File se alege opţiunea Save;

– se execută click pe butonul Save de pe bara cu instrumente de lucru;

– se execută evenimentul click pe butonul de închidere a ferestrei de descriere a tabelei

– din meniul de control se alege opţiunea Close

Indiferent de modul de salvare, Access afişează caseta de dialog Save As care solicită furnizarea unui nume pentru tabelă. Utilizatorul introduce numele tabelei în caseta de text Table Name şi apoi execută click pe butonul OK. Numele tabelelor pot avea până la 64 de caractere şi trebuie să respecte convenţiile Access descrise pentru formarea numelor de câmpuri.

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 30 –

2.2. Operaţii asupra înregistrărilor dintr-o tabelă

Într-o tabelă Access se pot realiza următoarele operaţii:

• Adăugarea înregistrărilor;

• Ştergerea de înregistrări;

• Căutarea de înregistrări;

• Modificarea înregistrărilor;

• Ordonarea înregistrărilor;

• Filtrarea înregistrărilor;

Pentru a efectua aceste operaţii este necesar ca tabela să fie deschisă în modul DataSheet

View.

2.2.1. Adăugarea înregistrărilor

Dacă tabela este deschisă imediat după creare, Access va afişa o foaie de date vidă, iar pointerul de înregistrare va fi plasat pe prima şi unica linie, pe butonul ei de selecţie (butonul gri din prima coloană din tabela afişată în modul Datasheet View).

Pentru a introduce date se plasează pur şi simplu cursorul pe câmp şi se introduce o valoare. în timp ce se efectuează această operaţie, pointerul de înregistrare se transformă într-un creion, ilustrând faptul că se editează o înregistrare. O nouă linie vidă apare dedesubtul primei linii. În locul

pointerului de înregistrare figurează un asterisc indicând o nouă înregistrare.

Dacă tabela care se deschide în modul Datasheet View conţine date, pentru a adăuga o nouă înregistrare trebuie plasat cursorul pe ultima linie (al cărei pointer este un asterisc) şi se introduce noua înregistrare. Pentru plasarea cursorului pe ultima linie se execută click pe butonul New Record de pe bara cu instrumente sau se alege Insert –> Record sau se utilizează tasta săgeata în jos.

2.2.2. Ştergerea de înregistrări

Pentru a şterge una sau mai multe înregistrări se selectează înregistrarea sau înregistrările şi se acţionează tasta Delete sau butonul Delete Record de pe bara cu instrumente sau se alege din meniul Edit –> Delete. Se recomandă o atenţie deosebită la ştergerea înregistrărilor deoarece Access nu permite anularea ştergerii înregistrării.

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 31 –

2.2.3. Căutarea unei înregistrări se realizează în acces secvenţial sau în acces direct

Căutarea secvenţială a unei înregistrări se face utilizând setul de butoane din partea stângă a barei aflate în partea de jos a ferestrei Datasheet View: Next Record, First Record, Last Record, Previous Record.

Pentru căutarea directă se selectează câmpul în care se face căutarea şi se utilizează butonul Find de pe bara cu instrumente sau se alege Edit –> Find (figura 2.6.).

Căutarea se poate realiza în întreaga tabelă, începând cu înregistrarea curentă până la sfârşitul tabelei (Down), de la înregistrarea curentă spre prima înregistrare sau de la ultima înregistrare spre începutul tabelei (Up), opţiuni care se pot preciza în zona Search. Din lista derulantă Match (potrivire) se poate selecta:

– Whole Field (întregul câmp);

– Start of Field (începutul câmpului);

– Any Part of Field (orice parte a câmpului).

Pentru a indica o căutare care să ţină seama de literele mari şi mici, se marchează caseta Match Case.

Fig. 2.6. Find

2.2.4. Modificarea înregistrărilor

Pentru înlocuirea automată a valorilor dintr-un câmp din mai multe înregistrări se utilizează caseta de dialog Replace. Caseta Replace se afişează prin comanda Edit –> Replace sau a combinaţiei de taste Ctrl + H (figura 2.7.).

Comanda va înlocui valorile din câmpurile care se potrivesc cu valorile introduse în caseta de text Find What. Înlocuirea se face cu valorile specificate în caseta de text Replace With. Înlocuirea se poate face selectiv prin căutarea fiecărei valori de înlocuit şi confirmarea înlocuirii (butoanele Field Next şi Replace) sau pentru toate înregistrările care corespund criteriul de înlocuire (butonul Replace All).

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 32 –

Fig. 2.7. Replace

2.2.5. Ordonarea înregistrărilor

Ordonarea şi filtrarea înregistrărilor sunt operaţii deosebit de importante pentru utilizatori, dar ele vizează îndeosebi cererile informaţionale ale utilizatorilor, motiv pentru care ele sunt realizate pentru obiectele tip Query (cereri de iterogare) – capitolul 3.

2.2.6. Îngheţarea afişării câmpurilor

Dacă o tabelă conţine prea multe câmpuri, ele nu pot fi afişate toate în modul Datasheet View. Pentru a vizualiza toate câmpurile se foloseşte bara de derulare orizontală sau îngheţarea afişării câmpurilor. Pentru îngheţarea afişării câmpurilor executăm operaţiile:

– se deschide tabela în modul Datasheet View;

– se selectează coloana sau coloanele a căror afişare se va îngheţa executând click pe butoanele antetelor acestor coloane;

– se utilizează comanda Format –> Freeze Columns (îngheţarea coloanelor).

Pentru „dezgheţarea” coloanelor „îngheţate” se alege comanda Format –> Unfreeze All Columns.

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 33 –

2.3. Definirea relaţiilor între tabele

Pentru a avea acces simultan la datele din mai multe tabele ale aceleiaşi baze de date este necesar să se definească relaţiile standard dintre aceste tabele. Relaţiile între tabele se definesc pe baza valorilor unui câmp dintr-o tabelă utilizat drept cheie primară şi valorilor aceluiaşi câmp dintr-o altă tabelă, unde este utilizat drept cheie externă. Access impune existenţa aceluiaşi tip de date pentru câmpurile care participă la o relaţie.

În cazul câmpului de tip Number proprietatea Field Size a celor două câmpuri trebuie să fie identică. Relaţia dintre câmpurile de tip Text trebuie, în principiu, să folosească câmpuri de aceeaşi lungime.

Se recomandă ca stabilirea relaţiilor între tabele să se facă înainte de înregistrarea datelor.

În Access există următoarele posibilităţi de realizare a relaţiilor dintre tabele:

– Relaţia 1 – 1 (one-to-one sau unu la unu) este cea mai simplă relaţie între două tabele. În această relaţie, unei valori a câmpului cheie principală dintr-o tabelă îi corespunde o singură valoare din câmpul folosit drept cheie externă din cealaltă tabelă. Altfel spus, unei înregistrări din tabela aflată în partea stângă a relaţiei îi corespunde o singură înregistrare din tabela aflată în partea dreaptă a relaţiei. Tabelele aflate într-o relaţie one-to-one se pot combina într-o singură tabelă, în care apar toate câmpurile celor două tabele. Relaţiile de acest tip nu sunt uzuale.

Tabelul A Tabelul B

– Relaţia 1 – n (one-to-many sau unul la mai mulţi) constituie tipul cel mai răspândit de relaţii. Conform acestei relaţii unei înregistrări din tabela aflată în partea stângă a relaţiei îi corespund două sau mai multe înregistrări din tabela aflată în partea dreaptă a relaţiei. Asocierea se bazează pe un câmp cheie principală unic într-o tabelă şi un câmp cheie externă din cealaltă tabelă care admite valori duplicate.

Tabelul A Tabelul B

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 34 –

– Relaţia n–1 (many-to-one sau mai mulţi la unul) este opusă relaţiei 1–n. Pentru a crea relaţia many-to-one este suficient să se inverseze relaţia one-to-many. De aceea, se spune că relaţia many-to-one este reflexivă, adică relaţia many-to-one este reflexia relaţiei corespondente one-to-many. Dacă se selectează o înregistrare din tabela din partea many a relaţiei se poate afla înregistrarea care corespunde cheii sale externe din tabela din partea one a relaţiei. Relaţiile n – 1 nu sunt bazate pe câmpuri cheie primară din nici una dintre cele două tabele.

Tabelul A Tabelul B

– Relaţia m–n (many-to-many sau mulţi la mai mulţi) nu poate fi exprimată ca o simplă relaţie între două tabele. Relaţia many-to-many se poate exprima prin intermediul unei a treia tabele care are relaţii one-to-many şi many-to-one cu cele două tabele.

Tabelul A Tabelul B

Indiferent de tipul de relaţii existent între două/mai multe tabele este esenţial ca cele două câmpuri participante la aceasta să aibă exact acelaşi tip de date.

Pe lângă stabilirea relaţiilor între tabelele unei baze de date, Access permite şi specificarea unor reguli care forţează integritatea datelor. Aceste reguli se numesc restricţii de integritate referenţială. Ele permit să se conserve intacte relaţiile între tabele într-un sistem de gestiune a unei baze de date relaţionale.

Integritatea referenţială funcţionează după câmpul cheie. Acest sistem verifică în mod continuu câmpul cheie, primară şi străină, la fiecare operaţie de adăugare, ştergere sau modificare a unei înregistrări. Dacă o schimbare a unei chei afectează legătura între tabele, sistemul avertizează că se violează regulile de integritate referenţială.

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 35 –

Atunci când două tabele sunt legate printr-o relaţie, o tabelă se numeşte părinte şi cealaltă se numeşte copil. Acest sistem este cunoscut sub numele de relaţie părinte-copil. Integritatea referenţială garantează că nu vor exista înregistrări orfane adică înregistrare copil fără o înregistrare părinte.

Capacitatea de a asigura în mod automat integritatea referenţială este o caracteristică importantă a programului Access.

Definirea legăturilor dintre tabele se realizează din meniul Tools-> Relationships, acesta activând un panou de editare vizuală a acestora. Prima activare a acestei opţiuni are ca efect şi afişarea unei ferestre cu obiectele bazei de date ce se pot plasa în panou prin dublu-click sau selectarea obiectului şi butonul Add (figura 2.8.).

Fig. 2.8. Relationships

Pentru a putea defini o legătură între două tabele, trebuie să existe compatibilitate între tipul de date al cheii primare şi cel al cheii externe corespunzătoare.

După plasarea tuturor tabelelor în panoul de editare, definirea propriu-zisă a unei relaţii se realizează prin drag-and-drop dinspre cheia primară a unei tabele spre cheia externă corespunzătoare sau invers. După realizarea acestei operaţii, finalizarea definirii unei legături se realizează în fereastra din figura 2.9, unde este prezentată definirea unei relaţii între tabelul furnizor (cheie primară cod furnizor) şi tabelul produs (cheie externă id).

Dacă o cheie este formată din mai multe câmpuri, acestea se editează corespunzător în panoul Edit Relationship (figura 2.9.)

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 36 –

Fig. 2.9. Edit Relationships

Opţiunile din fereastra Edit Relationships au următoarea semnificaţie:

– Enforce Referential Integrity – defineşte o restricţie de integritate referenţială. Nu se permite actualizarea valorii unei chei externe, dacă această valoare nu există deja în tabelul unde aceasta este cheie primară.

– Cascade Update Related Fields – actualizarea valorii unei chei primare dintr-un tabel se propagă şi în înregistrările din tabelele unde aceasta este cheie externă.

– Cascade Delete Related Fields – ştergerea valorii unei chei primare, are ca efect şi ştergerea înregistrărilor din tabelele unde aceasta este cheie externă.

În caseta Relationship Type sunt prezentate tipurile de legături care pot exista între două tabele:

– One to One -1-1;

– One to Many – 1–n

Dacă în această casetă este afişat mesajul Indeterminate, înseamnă că tipul de relaţie nu poate fi definit, cea mai probabilă eroare fiind incompatibilitatea între tipul de date al cheii primare şi cel al cheii externe, sau inexistenţa unei chei primare în relaţia respectivă.

Butonul de comandă Join Type permite şi definirea unor tipuri de relaţii particulare între tabele, aşa cum se observă din figura 2.10.

Variantele 2 şi 3 permit utilizarea implicită în interogări a join-urilor externe de tip Left şi Right, care presupun într-o interogare luarea în considerare a tuturor înregistrărilor dintr-un tabel, indiferent dacă au sau nu înregistrări corespondente după câmpul (câmpurile) de legătură în celalalt tabel. în exemplul de legătură prezentat în figura 2.10, este posibilă o interogare între cele două tabele, în care vor fi luate în considerare toate înregistrările din tabelul produse, indiferent dacă au sau nu corespondent în tabelul furnizor.

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 37 –

Fig. 2.10. Edit Relationships –> Join Properties

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 38 –

2.4. Aplicaţii

Aplicaţia 2.1. Să se creeze tabela Furnizori care are următoarea structură:

cod (cheia primară) AutoNumber

denumire Text

data infiintarii Date

adresa Memo

banca Text

Proprietăţile câmpurilor tabelei Funizori:

Câmp

Field name Proprietăţi Valori

Cod

Field Size

Format

Default Value

Validation Rule

Validation Text

Indexed

Byte

General Number

100

[Cod furnizor]>=100 and [Codfurnizor]<=200

Trebuie sa tastezi intre 100 si 200

Yes (No Duplicates)

Denumire Field Size

Caption

20

Denumirea furnizorului

Data infiintarii

Format

Default Value

Validation Rule

Validation Text

General Date

1 martie 2004

<=Date()

Ai depasit data curenta

Aplicaţia 2.2. Să se creeze tabela Facturi care are următoarea structură:

Nrfactura (cheia primară) Number

Datafact Date

Val factura Number

Cod furnizor Number

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 39 –

Proprietăţile câmpurilor tabelei Facturi:

Câmp Proprietăţi Valori

Nrfactura

Field Size

Format

Caption

Default Value

Validation Rule

Validation Text

Indexed

Integer

General Number

Numar factura

2000

[Nrfactura]>=2000 And [Nrfactura]<=2500

Trebuie sa tastezi intre 2000 si 2500 Yes (No Duplicates)

Datafact

Format

Caption

Default Value

Validation Rule

Validation Text

General Date

Data facturii

=Date()

<=Date()

Ai depasit data curenta

Val factura

Field Size

Format

Default Value

Validation Rule

Validation Text

Long Integer

Currency

0

>0

Ai introdus o valoare negativă

Cod furnizor

Field Size

Format

Default Value

Validation Rule

Validation Text

Byte

General Number

100

Cod furnizor>=100 and Codfurnizor<=200

Trebuie sa tastezi intre 100 si 200

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 40 –

Aplicaţia 2.3. Pentru raţionalizarea procesului de introducere şi actualizare a datelor, în cadrul unei aplicaţii, se creează mai multe tabele independente. în mod obişnuit informaţiile dorite de utilizatori reclamă consultarea concomitentă a datelor din mai multe tabele. Din acest motiv într-o bază de date relaţională între tabele se stabilesc relaţii după criterii logice şi de înrudire.

Câmpurile comune (care au nume identice şi sunt de acelaşi tip) prin care se stabilesc relaţiile sunt:

– cheia primară pentru tabela principală;

– cheia externă pentru tabela asociată.

Tabelele Produse, Comenzi şi Clienţi au următoarele structuri:

Produse :

Câmp Tip de date Proprietăţi Valori

cod_produs Number Field Size

Caption

Integer

Codul produsului

den_produs Text Caption Denumirea produsului

um Text Field Size

Caption

4

Unitate măsură

pret_unitar Number Field Size

Caption

Single

Preţ unitar

Comenzi :

Câmp Tip de date Proprietăţi Valori

nr_comanda Number Field Size

Caption

Integer

Numărul comenzii

cod_client Number Field Size

Caption

Integer

Codul clientului

cod_produs Number Field Size

Caption

Single

Codul produsului

cantitate Number Field Size Single

data_comenzii Date / Time Format Short Date

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 41 –

Clienţi :

Câmp Tip de date Proprietăţi Valori

cod_client Number Field Size

Caption

Integer

Codul clientului

den_client Text Caption Denumirea clientului

localitate Text Field size 20

adresa Text Field size 30

nr_telefon Number Field size

Caption

Long Integer

Telefon

tara Text Field Size 20

Cheile primare în tabelele de mai sus sunt:

– în tabela Produse câmpul cod_produs;

– în tabela Comenzi câmpul nr_comanda;

– în tabela Clienţi câmpul cod_client.

În tabela Comenzi câmpurile cod_client şi cod_produs sunt chei externe pentru asocierea cu celelalte tabele.

Din datele prezentate în figura 2.11. rezultă că unei înregistrări din tabela Produse îi corespund una sau mai multe înregistrări din tabela Comenzi (se pot emite mai multe comenzi pentru acelaşi produs). De asemenea, unei înregistrări din tabela Clienţi îi corespund una sau mai multe înregistrări din tabela Comenzi (un client poate să emită una sau mai multe comenzi).

Fig. 2.11. Aplicaţia 2.3

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 42 –

Tipul de legătură (Join) pentru asocierea acestor tabele când se leagă înregistrările pentru care câmpurile de legătură au valori egale este Equi-Join.

Regulile generale prin care se asigură integritatea referenţială atunci când ne referim la operaţiile de adăugare şi eliminare a înregistrărilor din cele 3 tabele sunt:

– toate cele 3 tabele să aparţină aceleiaşi baze de date;

– fiecare tabelă să aibă o cheie primară (un index unic);

– câmpurile de legătură să aibă acelaşi tip de dată. cod_produs şi cod_client sunt de tip Number pentru care proprietatea Field Size a luat valoarea Integer.

Access asigură integritatea referenţială astfel:

– nu se pot introduce în tabela Comenzi dacă nu sunt înregistrări corespunzătoare în tabelele Produse şi Clienţi;

– nu se pot elimina înregistrări din tabelele Produse şi Clienţi atâta timp cât mai există înregistrări asociate în tabela Comenzi.

Pentru crearea relaţiilor între tabelele Produse, Comenzi şi Clienţi se parcurg următorii paşi:

– în fereastra Database se alege opţiunea Relationships din meniul Tools;

– prin intermediul ferestrei Show Table se aduc tabelele în fereastra Relationships; se execută click pe numele tabelei şi apoi se apasă pe butonul Add.

– se închide tabela Show Table.

– se selectează câmpul cheie primară cod_produs din tabela Produse şi se trage peste câmpul corespunzător din tabela Comenzi (câmpul cheie externă cod_produs).

Access deschide o fereastră în care sunt confirmate detaliile relaţiei: – tabelele implicate în relaţie (Produse şi Comenzi);

– câmpurile prin care s-a stabilit relaţia (cod_produs în ambele tabele);

– o casetă de validare Enforce Referenţial Integrity (impune integritatea referenţială) care după validare oferă posibilitatea (opţional) de actualizare şi ştergere în cascadă;

– opţiunile care precizează tipul de combinare (Join Type). în cazul nostru se acceptă tipul prestabilit (1) care va lua în considerare numai înregistrările prezente în ambele tabele.

Rezultatul va fi o legătură de tipul 1 – între tabelele Produse şi Comenzi;

Se repetă aceleaşi operaţii pentru tabelele Clienţi şi Comenzi pe câmpul de legătură cod_client.

În fereastra Relationships vom avea cele 3 tabele asociate (figura 2.11.).

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 43 –

Aplicaţia 2.4. Să se stabilească două relaţii de tipul 1:m între tabela Facturi şi tabela Poziţie factură şi între tabela Produse şi tabela Poziţie factură, astfel încât fereastra Relationships să arate ca în figura 2.12.

Fig. 2.12. Aplicaţia 2.4

Aplicaţia 2.5. Creaţi o baza de date pentru evidenţa situaţiei şcolare a studenţilor. Baza de date trebuie să stocheze notele acordate de profesori, studenţilor, la fiecare materie în sesiunea de examene.

Rezolvare: Entităţile bazei de date sunt: studenţii, profesorii, materiile şi notele.

Identificarea asocierilor între entităţi este următorul pas. Prin asociere se înţelege o legătura între cele două entităţi bazată pe un câmp al lor.

Stabilirea acestora este o operaţie relativ intuitivă care, în cazul bazelor de date mari, este organizată pe baza unor metodologii. În cazul nostru entităţile au următoarele asocieri care generează relaţii de tip unu-la-mulţi:

Fig. 2.13. Aplicaţia 2.5

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 44 –

Un student are mai multe note, evident, la o materie poţi primi mai multe note (dacă ai absentat sau nu ai promovat examenul, sau te prezinţi la mărire de notă), un profesor acordă mai multe note.

Stabilirea câmpurilor se face în funcţie de specificul utilizării bazei de date. O atenţie sporită trebuie acordată atributelor cheie primară. În cazul nostru am preferat, pentru simplificarea codificării datelor, vom folosi tipul de dată AutoNumber.

Studenţi:

Câmp Tip de dată Proprietăţi Valori

id_stud AutoNumber

nume Text

prenume Text

adresa Text

telefon Number Format "(040)."000.000.000

email Hyperlink

Profesori:

Câmp Tip de dată Proprietăţi Valori

id_prof AutoNumber

nume Text

prenume Text

catedra Text

titlu Lookup Wizard Validation Rule "prof" Or "conf" Or "sef lucr" Or "lector" Or "asist"

adresa Text

telefon Number Format "(040)."000.000.000

email Hyperlink

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 45 –

Materii:

Câmp Tip de dată Proprietăţi Valori

id_prof AutoNumber

denumire Text

descriere Text

Note:

Câmp Tip de dată Proprietăţi Valori

nota Number Validation Rule >=0 And <=10

data Data / Time Validation Rule <=Date()

id_stud Number

id_prof Number

id_mat Number

Relaţiile sunt:

Fig. 2.14. Aplicaţia 2.5

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 46 –

Aplicaţia 2.6. Creaţi baza de date:

Tabelă Câmpuri

material codmaterial, denmaterial, um

stoc codgestiune, codmaterial, stocinitial, datainitiala

gestiune codgestiune, dengestiune, numegestionar

furnizor codfurnizor, denfurnizor, localitate, adresa, codfiscal

nrcd nrnrcd, datanrcd, codfurnizor, codgestiune, codfactura, datafact

mataprovizionat nrnrcd, codmaterial, cantaprov, pretaprov

bonconsum codbon, databon, codconsum, codgestiune

matconsumat codbon, codmaterial, cantconsum

locconsum codconsum, denconsum, codcomanda

plati coddocument, sumadocument, datadocument, codfurnizor

Câmpurile subliniate cu linie continuă sunt cheile primare prin care se identifică în mod unic fiecare înregistrare.

Pentru tabela stoc cheia primară este reprezentată printr-un câmp compus (codgestiune şi codmaterial), în ideea că un material se poate regăsi în mai multe gestiuni.

Pentru tabelele mataprovizionat şi matconsumat s-au utilizat de asemenea chei primare pe câmpuri compuse. Să luăm de pildă tabelele nrcd şi mataprovizionat care au ca sursă de date documentul „Nota de Recepţie şi Constatare de Diferenţe”. Tabela nrcd cuprinde datele din partea comună a documentului cu cheia primară nrnrcd, iar tabela mataprovizionat cuprinde datele din partea în care sunt consemnate materialele care au intrat (acestea pot fi mai multe), identificarea acestora realizându-se prin câmpul cheie primară compus din nrnrcd şi codmaterial.

Aceleaşi raţiuni au stat şi la stabilirea cheilor primare pentru tabelele bonconsum şi matconsumat care au ca sursă de date documentul „Bon consum”.

Câmpurile subliniate cu linie întreruptă sunt câmpuri de legătură între tabele.

Relaţiile dintre tabele sunt prezentate în figura 2.15..

2. Microsoft Access – Tabele (Tables)

Năchilă Cătălin – laborator Access – 47 –

Fig. 2.15. Aplicaţia 2.6

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 48 –

3. Microsoft Access – Interogări (Queries)

3.1. Generalităţi

Interogarea constă în extragerea datelor dintr-o tabelă (tabele), dintr-o interogare anterioară sau din ambele, prelucrarea acestora într-o formă mai mult sau mai puţin complexă şi furnizarea informaţiilor către utilizatori.

Rezultatele interogărilor pot fi folosite ca atare sau pot constitui sursă de înregistrări pentru crearea formularelor şi rapoartelor.

Principalele operaţii care se pot realiza cu ajutorul interogărilor sunt:

– extragerea din tabele numai a câmpurilor relevante pentru utilizatori;

– extragerea înregistrărilor din tabele prin specificarea unor criterii de selecţie;

– regăsirea şi ordonarea datelor după anumite criterii;

– crearea de câmpuri calculate;

– extragerea datelor din una sau mai multe tabele şi realizarea unor informaţii sintetice;

– crearea de tabele, adăugarea înregistrărilor în tabele, ştergerea înregistrărilor din tabele şi actualizarea datelor;

– combinarea şi compararea ieşirilor prin realizarea mai multor interogări în acelaşi timp;

– interogarea şi a altor baze de date (FoxPro, SQL Server);

– pregătirea datelor în vederea afişării lor în formulare sau rapoarte.

În Microsoft Access se pot crea următoarele tipuri de interogări:

• interogări de selecţie;

• interogări parametrice;

• interogări încrucişate;

• interogări de acţiune.

Interogările de selecţie extrag informaţii din unul sau mai multe tabele şi le afişează sub

formă de listă. Sunt cel mai uşor de creat şi au avantajul că pot afişa un număr redus de date dintr-un tabel de mare capacitate (datele care îndeplinesc condiţiile specificate). Ele permit şi modificarea rezultatului afişat, modificare ce va fi văzută şi în tabelul sursă. De asemenea, permit şi folosirea de parametri, cum este reuniunea de câmpuri din tabele între care nu există nici o legătură precum şi efectuarea de calcule.

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 49 –

Interogările parametrice nu sunt un tip special de interogări, o funcţie parametru putând fi folosită pentru toate celelalte interogări prezentate mai sus; ele folosesc în mod repetat o interogare, efectuând modificări în criteriile de selecţie.

Interogările tip tabel încrucişat – centralizează în formatul unei foi de calcul tabelar datele din unul sau mai multe tabele. Datele rezultate după execuţia unei astfel de interogări sunt prezentate într-un format potrivit pentru analiza datelor şi crearea de grafice.

Interogările de acţiune creează un nou tabel în baza de date sau realizează modificări majore ale unui tabel existent. În general, toate interogările de acţiune pot fi realizate pe baza unei interogări de selecţie. Ele permit adăugarea, modificarea sau ştergerea de înregistrări într-un tabel. Există patru tipuri de interogări de acţiune:

– interogări de generare a unui nou tabel din datele conţinute în setul de rezultate al interogării;

– interogări de adăugare a noi înregistrări într-un tabel;

– interogări de ştergere a unor înregistrări dintr-un tabel;

– interogări de actualizare a unor înregistrări dintr-un tabel, conform cu o condiţie ce trebuie îndeplinită.

Acţiunile acestora sunt ireversibile asupra datelor din tabelele sursă, iar în cazul ultimelor trei dintre ele, trebuie urmărită păstrarea integrităţii referenţiale atunci când prin intermediul lor se acţionează asupra mai multor tabele legate.

Interogarea datelor din tabele se realizează în două moduri:

• în mod grafic prin interfaţa Query By Example (QBE) - interogare prin exemplu;

• prin limbajul SQL sub formă de blocuri de cerere.

În cadrul acestui capitol se va prezenta modul de construire a unei interogări folosind interfaţa Query By Example (QBE).

Access oferă trei posibilităţi pentru definirea interogării şi afişarea rezultatelor acesteia.

– Design View – fereastră sub forma unei grile de interogare, în care se defineşte interogarea;

– Datasheet View – fereastră în care se afişează rezultatele interogării;

– SQL View – fereastră în care Access generează automat codul SQL al interogării QBE; aceeaşi fereastră este folosită şi pentru scrierea directă a unei interogări cu ajutorul instrucţiunilor SQL.

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 50 –

3.2. Interogarea prin selecţie

Aplicaţia 3.1: Fie o bază de date ce conţine trei tabele: Produse, Clienţi, Comenzi. Tabelele conţin înregistrările:

Fig. 3.1. Tabelele bazei de date

Construim relaţiile:

Fig. 3.2. Relaţiile

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 51 –

3.2.1. Crearea unui obiect de tip interogare

Iniţierea creării cererii se realizează în fereastra Database prin activarea fişei Query (Interogări) şi apoi apăsarea butonului New, sau selectând din meniul Insert opţiunea Query.

Access oferă mai multe modalităţi de creare a cererilor. Aceste modalităţi sunt afişate în fereastra New Query (figura 3.3) afişată ca urmare a iniţierii operaţiei de creare a cererii:

Fig. 3.3. Fereastra New Query Fig. 3.4. Fereastra Show Table cu lista tabelelor disponibile

– Design View – proiectarea interogărilor utilizând interfaţa grafică QBE;

– Simple Query Wizard – utilizarea asistentului pentru cereri simple;

– Crosstab Query Wizard – utilizarea asistentului pentru cereri încrucişate; – Fiind Duplicates Query Wizard– utilizarea asistentului pentru căutarea înregistrărilor duplicat;

– Find Unmatched Query Wizard – utilizarea asistentului pentru căutarea înregistrărilor care nu au corespondent în două tabele.

Pentru crearea unei cereri de selecţie se alege opţiunea Design View din caseta New Query.

Fereastra Show Table (figura 3.4.) oferă posibilitatea precizării sursei de date pentru construirea cererii.

Sursa de date pentru o cerere poate fi reprezentată de:

– una sau mai multe tabele;

– una sau mai multe interogări;

– tabele şi interogări.

Se vor selecta tabela/tabelele şi/sau cererile sursă şi se va acţiona butonul Add pentru a realiza aducerea acestora în fereastra de proiectare a cererii. După ce a fost precizată sursa de date se va închide fereastra Show Table prin acţionarea butonului Close. La nevoie se poate redeschide fereastra folosind opţiunea Show Table din meniul Query.

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 52 –

Dacă sunt necesare date din mai multe tabele sau interogări se procedează asemănător şi pentru celelalte obiecte.

În partea superioară a ferestrei Query Design vor fi afişate tabelele sau interogările, fiecare cu lista câmpurilor conţinute (figura 3.5.). În cazul în care tabelele din care se extrag datele pentru interogare au fost puse în relaţie anterior, ele apar în fereastra Query Design cu liniile de legătură precizate (1 – 1 sau l – ∞). Dacă nu, relaţia între tabele poate fi creată în cadrul interogării.

Fig. 3.5. Fereastra Select Query

Fereastra Select Query (figura 3.5) este împărţită în două zone:

• zona superioară, în care se vizualizează tabelele/interogările sursă de date precum şi relaţiile definite între acestea;

• grila Query Design structurată astfel: – linia Field: rezervată pentru selectarea unui câmp;

– linia Table: destinată precizării sursei de date;

– linia Sort: permite precizarea sensului sortării pentru atributul din coloana respectivă;

– linia Show: permite inhibarea afişării realizărilor câmpului respectiv;

– linia Criteria: oferă posibilitatea precizării criteriilor de selecţie prin introducerea expresiilor Access corespunzătoare;

– liniile or: permite precizarea mai multor criterii de selecţie în cazul expresiilor Access utilizând operatorul OR.

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 53 –

Definirea interogării de selecţie presupune parcurgerea următorilor paşi:

1. Precizarea câmpurilor ale căror realizări urmează să le returneze cererea. Numele acestor câmpuri se vor preciza în grila Query Design în rândul Field utilizând una din următoarele modalităţi:

– selectarea câmpului din cadrul listei Field;

– executarea unui dublu clik de mouse asupra câmpului dorit din tabela/interogarea aflată în panoul superior;

– metoda drag-and-drop care presupune selectarea cu mouse-ul a câmpului dorit din panoul superior şi tractarea acestuia în linia Field.

Dacă este necesar să fie aduse în panoul inferior toate câmpurile aparţinând unei tabele se va proceda în unul din următoarele moduri:

– selectarea tuturor câmpurilor din tabela sursă (aflată în panoul superior) printr-un dublu clik de mouse pe numele tabelei şi se trag câmpurile pe grilă;

– utilizarea asteriscului aparţinând tabelei sursă: trageţi cu mouse-ul asteriscul în prima coloană Field;. chiar dacă în grila de proiectare este completată doar prima coloană Field la execuţie interogarea va returna realizările tuturor atributelor;

– utilizarea proprietăţii Output All Fields: se va deschide caseta Query Properties utilizând butonul Properties din bara de instrumente sau executând dublu click într-o zonă liberă a panoului superior; în linia Output All Fields se va preciza Yes; precizarea valorii Yes pentru proprietatea Output All Fields nu va determina aducerea în grila de proiectare a câmpurilor din tabela sursă, dar, în momentul executării cererii, vor fi cuprinse toatea realizările tuturor atributelor.

În mod implicit, antetul coloanelor tabelului rezultat în urma interogării este reprezentat de numele câmpului, cu excepţia cazului în care la crearea tabelei aţi precizat o altă etichetă prin intermediul proprietăţii Caption. Dacă doriţi afişarea în tabelul rezultat în urma interogării a unei noi etichete pentru un câmp plasaţi mouse-ul în linia Field înaintea numelui câmpului, tastaţi eticheta dorită urmată de caracterul „:”.

Observaţie: După aducerea câmpurilor din tabele sau interogări pe grila de interogare sunt posibile operaţii de inserare a unui câmp, ştergerea unui câmp, deplasarea unui câmp într-o altă poziţie, modificarea dimensiunilor unei coloane şi modificarea numelui unui câmp.

2. Se precizează criteriul de selecţie (în mod implicit se returnează realizările tuturor tuplurilor pentru câmpurile specificate) prin introducerea unei expresii Access valide în rândul Criteria (eventual şi rândul OR). Introducerea expresiei Access se face prin tastare sau se construieşte prin intermediul generatorului de expresii (Expression Builder) a cărui fereastră se deschide selectând opţiunea Build a meniului pe care îl activaţi printr-un click dreapta de mouse în rândul Field.

3. Se precizează, dacă este necesar, câmpul/câmpurile după care se doreşte o eventuală sortare şi sensul acesteia în linia Sort.

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 54 –

În figura 3.6. se exemplifică o interogare cu date luate din tabelele Produse, Comenzi şi Clienţi asociate anterior, iar în figura 3.7. se afişează rezultatele interogării.

Fig. 3.6. Interogare folosind date din mai multe tabele

Fig. 3.7. Rezultatele interogării

Pentru ca rezultatele interogării să fie interpretate mai uşor, utilizatorul poate să ceară ordonarea înregistrărilor în funcţie de valorile anumitor câmpuri.

Sortarea este posibilă pe câmpurile numerice, de tip text şi data calendaristică. Se pot specifica sortări pe mai multe câmpuri din cadrul aceleiaşi interogări.

Pentru exemplificare să considerăm că utilizatorul doreşte să vadă nomenclatorul de produse (tabela Produse) ordonat crescător pe câmpul den_produs. Va construi interogarea din figura 3.8..

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 55 –

Fig. 3.8. Sortarea crescătoare a datelor din tabelă

Aplicaţia 3.2: Fie o bază de date constituită pentru o firmă care îşi comercializează produsele prin intermediul poştei, pe baza comenzilor primite de la clienţi. Firma dispune de un nomenclator al produselor fabricate în care sunt consemnate denumirea fiecărui produs, unitatea de măsură şi categoria de calitate aferentă. Clienţii firmei sunt persoane fizice cărora li se solicită numele, adresa, codul poştal şi numărul de telefon. Comenzile primite sunt numerotate secvenţial, pe fiecare consemnându-se data recepţionării comenzii şi termenul de livrare (exprimat în zile) iar, în momentul onorării comenzii, se completează data la care s-a efectuat livrarea. Pe o comandă pot fi solicitate unul sau mai multe produse în diferite cantităţi. Preţurile practicate de firmă sunt negociabile şi variabile în timp.

Modelul propus pentru baza de date este prezentat în figura 3.9:

Fig. 3.9. Relaţiile între tabele

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 56 –

Fig. 3.10. Proiectarea unei interogări de selecţie

În figura 3.10 se prezintă modul în care s-a definit interogarea de selecţie prin care se realizează:

– afişarea numelui clienţilor cu adresa în Ploieşti sau Braşov (primul criteriu de selecţie),

– numărului comenzii trimise şi data convenită a livrării care trebuie să fie anterioară datei curente (cel de al doilea criteriu de selecţie precizat).

Afişarea se realizează în ordinea alfabetică după numele clienţilor. Sursa de date a cererii este reprezentată de două tabele ale bazei de date: Clienţi şi respectiv Comenzi.

Pentru a evita repetarea restricţiei puse asupra câmpului data_livrare pe mai multe rânduri (pentru fiecare oraş) s-ar fi putut apela la soluţia scrierii tuturor localităţilor pe acelaşi rând şi utilizării operatorului OR (figura 3.11.).

Fig. 3.11. Utilizarea operatorului OR

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 57 –

În figura 3.12 este redat rezultatul executării cererii anterior proiectate.

Fig. 3.12. Rezultatul interogării de selecţie

3.2.2. Modificarea unei cereri

Pentru a modifica o cerere, aceasta trebuie deschisă în modul Design. Modificările se pot realiza inserând noi coloane sau ştergând coloane deja definite.

Inserarea unei noi coloane se efectuează selectând coloana înaintea căreia dorim să introducem noua coloană şi alegând opţiunea Column din meniul Insert.

Ştergerea unei coloane din grila de proiectare se realizează selectând coloana şi acţionând tasta Delete sau butonul Cut din bara de instrumente sau executând opţiunea Delete Column din meniul Edit.

Modificarea unei cereri poate presupune şi extinderea sursei de date (utilizând fereastra Show Table). De asemenea modificarea cererii poate implica şi precizarea unor formate de afişare asociate unor coloane pentru ca datele returnate să fie uşor de parcurs (pentru precizarea unui anumit format de afişare se va plasa cursorul mouse-ului în coloana dorită şi se va executa clik dreapta, selectându-se din meniul contextual opţiunea Properties.

Va fi afişată caseta Field Properties în care se va putea specifica numărul de zecimale dorit sau un format de afişare pentru câmpul respectiv.

Pe lângă modurile de vizualizare Design şi Datasheet Access permite utilizatorilor vizualizarea şi modificarea codului SQL al interogărilor. Pentru aceasta se va apela din meniul View opţiunea SQL View.

3.2.3. Utilizarea operatorilor

Pentru a construi expresii pe rândul Criteria se utilizează operatorii:

• aritmetici: adunare (+); scădere (–), înmulţire (*), împărţire (/), ridicare la putere (^), împărţirea a două numere cu returnarea unui întreg (\), împărţirea a două numere cu returnarea restului împărţirii (MOD).

• de comparaţie: <, >, =, <=, >=. Aceşti operatori returnează valorile logice True şi False. Excepţie reprezintă cazul în care unul dintre operatori are valoarea NULL şi deci orice comparare va returna valoarea NULL.

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 58 –

• asociaţi operatorilor de comparare: – IS NULL, IS NOT NULL – o valoare NULL (câmp necompletat) nu este nici TRUE nici

FALSE. Înregistrările care au valoarea NULL în câmpurile selectate nu apar ca rezultate ale interogării;

– LIKE – se foloseşte împreună cu caracterele de înlocuire „* ” şi „?” pentru a stabili dacă o valoare începe cu unul sau mai multe caractere; caracterul „* ” poate înlocui orice număr de caractere; caracterul „? ” înlocuieşte numai un caracter;

– IN – stabileşte dacă o valoare este cuprinsă într-o listă;

– BETWEEN – stabileşte dacă o valoare aparţine unui interval specificat.

• logici: – NOT – negaţia;

– AND – pentru conjuncţia a două valori;

– OR – pentru disjuncţia a două valori;

– XOR – pentru disjuncţia exclusivă a două valori;

– Eqv – verifică echivalenţa a două valori.

• de concatenare a şirurilor de caractere: + şi &.

• de identificare:! şi . . Aceste două caractere sunt utilizate ca separatori, astfel: – Combină numele colecţiilor de obiecte şi numele obiectelor pentru a selecta un anumit obiect

sau proprietate a lui: Forms! [Clienţi]

– Identifică atribute aparţinând unei tabele: Clienţi! [Localitate]

– Deosebeşte numele obiectelor de cele ale proprietăţilor: TextBox1.FontSize=12 unde: TextBox reprezintă un obiect de control iar FontSize reprezintă o proprietate (stabileşte dimensiunea fontului)

• constante: constantele utilizate în construirea expresiilor Access pot fi de natură – numerică (ex: 1200,5,0);

– text (“123”, “Toma Ion”, ’str. Viilor 15’);

– dată calendaristică (ex: #12.31.01# ceea ce indică data de 31 decembrie 2001).

• Identificatorii: sunt nume de obiecte Access (tabele, atribute, formulare, etc.) – prin intermediul identificatorilor se pot prelua valori pentru definirea criteriilor de pe

formulare create anterior (exemplul din figura 3.13 prezintă o interogare ce va afişa comenzile şi data comenzilor pentru un produs a cărui nume a fost selectat într-o caseta de tip ListBox, numită ListaProduse, pe un formular numit Selecţie (interogarea poate fi executată doar dacă formularul este deschis)).

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 59 –

Fig. 3.13. Preluarea unei valori de pe un formular în câmpul de criterii

• Funcţiile: pot fi de natură:

– Dată calendaristică : Date(), Month(), Year (), etc.

Exemple: Date() – returnează data curentă;

Month(Date()) returnează numărul lunii calendaristice curente.

Year(Date()) returnează anul curent.

– De tip text: Len() – returnează lungimea unui şir; Trim() – elimină spaţiile de la începutul şi de la sfârşitul unui şir; Left() – returnează primele n caractere de la începutul unui şir, etc.

– Matematice şi trigonometrice: ABS() – returnează valoarea absolută a unui număr; INT() – returnează partea întreagă dintr-o valoare numerică, ROUND() – rotunjeşte o valoare cu un anumit număr de zecimale; SUM() – calculează suma; AVG() – calculează media, etc.

– Financiare: PV() returnează valoarea actuală a unei anuităţi plătite în rate periodice egale; SLN() returnează valoarea amortizării unui mijloc fix după o anumită perioadă (amortizare liniară) etc.

– Funcţii diverse: ISNUMERIC(), ISNULL(), etc.

Reguli de formare a expresiilor introduse pe câmpul Criteria:

– datele de tip Text se tastează ca atare, iar Access adaugă automat ghilimele;

– pentru datele de tip Number şi Currency se tastează cifrele şi eventual simbolul zecimal, fără simbolul monetar sau separatorul de mii;

– referirile la numele de câmpuri trebuie incluse între paranteze drepte, altfel se adaugă automat ghilimele, considerându-se text;

– formatul internaţional de dată calendaristică este mm/dd/yy. Access adaugă automat delimitatorul # ;

– Access adaugă automat IS la referirile care implică valoarea NULL.

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 60 –

Pe rândul Criteria din grila de interogare se poate introduce un singur criteriu de selecţie sub un câmp sau mai multe criterii sub câmpuri diferite.

Dacă criteriile de selecţie se introduc pe un singur rând Criteria, se extrag înregistrările care îndeplinesc toate condiţiile (operatorul logic AND), iar dacă se introduc pe rânduri diferite se includ în răspuns doar înregistrările care îndeplinesc oricare dintre criteriile menţionate (operatorul logic OR).

Aplicaţia 3.3: Pentru exemplificare se utilizează tabela Telefon care cuprinde populaţia din Bucureşti cu sau fără telefon. Tabela are următoarele câmpuri:

cod_persoană, nume, prenume, strada, nr, sector, nr_telefon, data_instalării

Se cere:

1. Realizarea unei interogări pentru obţinerea unei liste cu persoanele care au numărul de telefon care începe cu 7 (figura 3.14.)

Sub câmpul nr_telefon pe rândul Criteria se scrie expresia: LIKE “ 7* ”

Fig. 3.14. Interogarea abonaţi cu numărul de telefon care începe cu 7

2. Realizarea unei interogări pentru obţinerea unei liste cu abonaţii care au numărul de telefon care nu începe cu 7.

Sub câmpul nr_telefon pe rândul Criteria se scrie expresia: NOT LIKE “ 7* ”

3. Realizarea unei interogări pentru obţinerea unei liste cu abonaţii care nu au telefon.

Sub câmpul nr_telefon pe rândul Criteria se scrie expresia: IS NULL

4. Realizarea unei interogări pentru obţinerea unei liste cu persoanele din sectorul 6 care au numărul de telefon care începe cu 7 sau a celor care nu au telefon.

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 61 –

Pe rândul Criteria sub câmpul sector se scrie 6, iar sub câmpul nr_telefon se scrie expresia: IS NULL OR LIKE “ 7 * ”

5. Lista telefoanelor instalate între 1 Ianuarie 2004 şi 31 Decembrie 2004 se obţine printr-o interogare în care pe rândul Criteria sub data_instalarii se scrie expresia: LIKE “*.*.2004”

6. Lista telefoanelor instalate în luna Mai 2004 se obţine dacă sub câmpul data_instalarii pe rândul Criteria se scrie expresia: LIKE “*.05.2004”.

7. Interogarea pentru obţinerea listei persoanelor cărora li s-a instalat telefon în luna 12, 2004 va cuprinde sub câmpul data_instalarii expresia: >= # 01.12.2004 # And <= # 31.12.2004 #

8. Pentru a obţine o listă a persoanelor din sectoarele 1, 2 şi 3 care nu au telefon instalat, se va realiza interogarea: sub câmpul sector se scrie expresia: IN (1,2,3) iar sub câmpul nr_telefon se scrie expresia: IS NULL.

9. Pentru a obţine o listă cu telefoanele instalate în ultimul trimestru al anului 2004, se va realiza interogarea: sub câmpul data_instalarii se scrie expresia:

Between #01.10.2004# And #31.12.2004#

3.2.4. Câmpuri calculate în interogări de selecţie

Interogările de selecţie pot cuprinde şi câmpuri calculate. Aceste câmpuri returnează, la executarea interogării, valoarea expresiilor Access asociate lor.

Pentru a crea un câmp calculat trebuie avute în vedere următoarele:

• se introduce în celula Field a grilei de interogare un nume de coloană (dacă nu se specifică se atribuie numele implicit Expr l, Expr2, ...), urmat de semnul “ : ” şi formula de calcul, astfel:

stoc_final: [stoc_initial] + [Cant_intrata] - [Cant_iesita]

• câmpuri calculate pot fi create şi pentru text (concatenarea câmpurilor):

Numepren: [Nume] & “ ” & [ Prenume]

• câmpurile calculate pot fi sortate, li se pot aplica criterii de selecţie sau se pot totaliza.

• în câmpurile calculate se poate utiliza funcţia IIF cu următoarea sintaxă: IIF ( <expresie>, valoare 1, valoare2)

unde:

– <expresie> – este o expresie a cărei valoare de adevăr este evaluată pentru fiecare înregistrare;

– valoare 1 – este valoarea returnată dacă expresie este adevărată;

– valoare2 – este valoarea returnată dacă expresie este falsă.

Pentru a adăuga un câmp calculat într-o interogare se tastează numele acestuia într-o nouă coloană din grila Query Design, se adaugă două puncte şi apoi se completează expresia dorită.

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 62 –

Exemplu: Interogarea din figura 3.15 (pentru aplicaţia 3.2) calculează data limită până la care trebuie onorată fiecare comandă.

Fig. 3.15. Exemplu de câmp calculat într-o interogare

Expresiile pot fi utilizate într-o interogare de selecţie fie drept criterii de selecţie fie pentru a calcula anumiţi indicatori. Expresia poate fi tastată în rândul Field al unei coloane (exemplul din figura 3.15) sau poate fi construită cu ajutorul generatorului de expresii (a cărui fereastră se activează efectuând click dreapta în linia Field şi selectând din mediul contextual opţiunea Build). Exemplul din figura 3.16 prezintă utilizarea generatorului de expresii pentru a calcula valoarea fiecărui produs de pe o comandă.

Fig. 3.16. Fereastra Expression Builder

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 63 –

Fig. 3.17. Interogarea

Fig. 3.18. Rezultatul interogării

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 64 –

Aplicaţia 3.4: Pe baza tabelelor:

nrcmd (nr_comanda, data, cod_furnizor, cod_gestiune, cod_factura)

material (nr_comanda, cod_material, cant_aprov, pret_aprov),

să se realizeze o interogare pentru calcularea valorii materialelor, a taxei pe valoarea adăugată şi valoarea totală (figura 3.19.)

Fig. 3.19. Câmpuri calculate

Fig. 3.20. Rezultatul interogării

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 65 –

Aplicaţia 3.5: Să se creeze tabelul Studenţi cu următoarea structură:

Nume câmp

(Field name)

Tip de date

(Data type) General

ID AutoNumber

Nume Text

Prenume Text

Tip student Lookup Wizard

Text

Validation rule

Validation text

"student" Or "masterand" Or "doctorand"

eroare

Facultatea Lookup Wizard

Text

Validation rule

Validation text

"Inginerie" Or "Stiinte" Or "Economie" Or "Litere"

eroare

An studiu Lookup Wizard

Number

Validation rule

Validation text

1 Or 2 Or 3 Or 4

eroare

Nota 1 Number

Nota 2 Number

Nota 3 Number

1. să se creeze o interogare care să afişeze doar numele şi prenumele studenţilor afişaţi în ordine alfabetică

2. să se creeze o interogare care să calculeze media studenţilor şi care să afişeze doar numele, prenumele şi media acestora precum şi dacă au fost admişi sau nu.

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 66 –

1. să se creeze o interogare care să afişeze doar numele şi prenumele studenţilor afişaţi în ordine alfabetică

Se de click pe butonul Queries (Interogări) din fereastra Database: şi se alege opţiunea Create query in Design view.

Fereastra Show Table conţine tabelele (afişare implicită), interogările sau combinaţiile dintre acestea, de unde utilizatorul alege sursa de date pentru interogare curentă (figura 3.21.).

Fig. 3.21.

Selectăm Studenţi apoi executăm click pe Add.

Se aduc câmpurile din tabel pe grila de interogare într-o ordine dorită de utilizator. Sunt mai multe posibilităţi pentru a aduce câmpurile pe grila de interogare. Ne vom referi numai la două dintre acestea:

– pentru a aduce câmp cu câmp pe grilă, se execută click pe câmpul din tabelă şi se trage pe grila de interogare, sau se execută dublu click pe câmp, acesta adăugându-se automat în grilă;

– pentru a aduce toate câmpurile tabelului deodată, se execută dublu click pe numele tabelului şi se trag câmpurile pe grilă.

Aducem câmpurile Nume, Prenume. La linia Sort alegem tipul de sortare ascendentă. Interogarea va arăta ca în figura 3.22..

Închidem interogarea de la butonul x, se salvează sub numele Interogarea 1, apoi vizualizăm rezultatul prin deschiderea acesteia din fereastra Database, opţiunea Queries (Interogări).

Rezultatul va fi conform figurii 3.23..

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 67 –

Fig. 3.22. Interogarea

Fig. 3.23. Rezultatul interogării

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 68 –

2. Să se creeze o interogare care să calculeze media studenţilor şi care să afişeze doar numele, prenumele şi media acestora precum şi dacă au fost admişi sau nu.

Se de click pe butonul Queries (Interogări) din fereastra Database: şi se alege opţiunea Create query in Design view.

Aducem câmpurile Nume, Prenume.

Completăm următoarele două coloane din grilă cu:

Medie: ([Nota 1]+[Nota 2]+[Nota 3])/3

Rezultat: IIf([Medie]>=5;"admis";"respins")

La linia Sort alegem tipul de sortare ascendentă. Interogarea va arăta ca în figura 3.24..

Închidem interogarea de la butonul x, se salvează sub numele Interogarea 2, apoi vizualizăm rezultatul prin deschiderea acesteia din fereastra Database, opţiunea Queries (Interogări) (figura 3.29).

Fig. 3.24. Interogarea

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 69 –

Fig. 3.25. Rezultatul interogării

3.2.5. Utilizarea parametrilor

Interogările de selecţie prezentate până în acest moment returnează întotdeauna înregistrările din tabelele sursă care corespund unei anumite cereri fixe: clienţii trebuie să aibă domiciliul în Bucureşti sau Ploieşti iar data livrării să fie anterioare datei curente (vezi exemplul de interogare de selecţie prezentat într-un paragraf anterior).

De multe ori însă, ar fi utilă o interogare al cărei criteriu de selecţie să poată fi precizat la nivel general şi particularizat de utilizator în funcţie de necesităţile sale de informare (precizându-se concret ce realizări ale atributului sunt căutate) chiar în momentul execuţiei cererii. O astfel de interogare se caracterizează prin faptul că în grila Design, pe coloana dorită, în linia Criteria, se va preciza între paranteze drepte un mesaj ce urmează a fi afişat la executarea cererii permiţând ca utilizatorul să introducă criteriul de selecţie dorit.

Parametrii pot fi utilizaţi nu doar în rândul de criterii, ci şi în formulele câmpurilor calculate, dacă se doreşte introducerea unui termen variabil în expresii. Exemplul din figura 3.26. prezintă o cerere care va solicita utilizatorului numărul comenzii ce se doreşte a fi afişată şi procentul ce va fi folosit pentru a calcula câmpul Reducere.

Când se creează şi salvează o interogare este posibil să nu se cunoască valorile pentru un câmp.

Se va crea un parametru pentru interogare (un nume de câmp diferit de numele câmpurilor tabelei sau interogării, încadrat de paranteze drepte).

La execuţia interogării apare o casetă de dialog prin care se cere valoarea pentru câmpul parametru.

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 70 –

Fig. 3.26. Interogare cu parametri

Aplicaţia 3.6: Pe baza unei tabele existente cu structura:

studenti2 (ID, Nume, Prenume, Tip student, Facultatea, Grupa, An studiu, Media)

să se realizeze o interogare parametrizată care să listeze studenţii unei grupe dintr-o facultate, în ordine alfabetică (figura 3.27.). Rezultatul este prezentat în figura 3.28..

Fig. 3.27. Interogare cu parametri

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 71 –

Fig. 3.28. Rezultatul interogării

Aplicaţia 3.7: Să se obţină o lisă a intrărilor de materiale pentru o anumită perioadă. Pentru aceasta se va realiza o interogare parametrizată (figura 3.29) pe baza tabelelor:

comenzi (nrnrcd, datanrcd, codfurnizor, codgestiune, codfactura, datafact)

material (nrnrcd, codmaterial, cantaprov, pretaprov)

Fig. 3.29. Tabelele comenzi şi material

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 72 –

Fig. 3.30. Interogarea Intrari

Rezultatele interogării pentru datele 03.03.2004 şi 14.04.2004 sunt redate în figura 3.31..

Fig. 3.31. Rezultatul interogării

Aplicaţia 3.8: Să se obţină o listă a intrărilor de materiale exprimate în dolari. Interogarea (figura 3.32.) va utiliza ca sursă de date tabela material.

Pentru a afişa datele din câmpul valoare cu semnul € (figura 3.33.) trebuie parametrizată proprietatea Format, astfel:

– se selectează din grila de interogare câmpul valoare;

– se afişează fereastra Field Properties;

– pentru proprietatea Format se selectează formatul monetar dorit (Currency).

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 73 –

Fig. 3.32. Interogarea Valuta

Fig. 3.33. Rezultatul interogării Valuta

3.2.6. Interogări de sintetizare a datelor

Pe lângă posibilitatea de a utiliza expresii pentru a adăuga câmpuri calculate în interogări, Access permite utilizatorilor realizarea unor cereri prin intermediul cărora se pot aplica funcţii unor înregistrări grupate după criterii prestabilite. Prin intermediul acestor query cu rol de sintetizare a datelor se pot construi cu uşurinţă cereri care să returneze totalul, media, minimul sau maximul unor grupuri de tupluri.

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 74 –

Pentru a realiza o cerere de sintetizare a datelor se va elabora interogarea de selecţie aducându-se în grila Query Design câmpurile necesare şi adăugându-se eventualele câmpuri calculate, după care se va apăsa butonul Totals din bara de instrumente.

Ca rezultat al acestei operaţii, în grila Query Design, va fi disponibil un nou rând intitulat Total. În mod implicit, gruparea datelor după valorile câmpului toate coloanele vor avea selectată în linia total opţiunea Group By (în cazul în care mai multe coloane au selectată în linia Total opţiunea Group By, gruparea se va face întâi după primul câmp din stânga, apoi după al doilea, ş.a.m.d.).

Se va păstra opţiunea Group By în dreptul câmpurilor de grupare, urmând ca pentru celelalte câmpuri să fie selectată din lista de selecţie funcţia dorită (figura 3.34.).

Fig. 3.34. Lista conţine nouă funcţii de tip agregat (funcţii ce permit calculul unor valori totalizatoare

la nivel de grup) ce sunt prezentate în tabelul următor:

Funcţia Returnează Tipul de câmpuri pentru care se poate aplica

AVG Media aritmetică Number, Date, Currency, AutoNumber

COUNT Numărul total de valori Toate tipurile

FIRST Prima valoare Toate tipurile

LAST Ultima valoare Toate tipurile

MAX Valoarea maximă Text, Number, Date, Currency, AutoNumber

MIN Valoarea minimă Text, Number, Date, Currency, AutoNumber

STDEV Deviaţia standard a valorilor Number, Date, Currency, AutoNumber

SUM Suma valorilor Number, Date, Currency, AutoNumber

VAR Varianta valorilor Number, Date, Currency, AutoNumber

Pe lângă aceste funcţii mai sunt disponibile opţiunile Where şi Expression.

Opţiunea Where se va utiliza dacă un câmp trebuie utilizat pentru a preciza anumite criterii de selecţie, dar nu se doreşte efectuarea grupării după câmpul respectiv.

Opţiunea Expression se va utiliza pentru câmpurile calculate ce returnează un singur rezultat la nivelul grupului.

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 75 –

Aplicaţia 3.9: Interogarea din figura 3.35 calculează numărul de comenzi efectuate de către fiecare client în ultimele 60 zile.

Interogarea din figura 3.37 calculează valoarea totală a fiecărei comenzi prin intermediul funcţiei Sum şi, într-un câmp calculat ce utilizează funcţia IIF, determină valoarea unei eventuale reduceri pentru respectiva comandă (reducerea în sumă de 25% din valoarea comenzii) se acordă doar dacă comanda depăşeşte 1.000.000 lei.

Fig. 3.35. Interogare totalizatoare

Fig. 3.36. Rezultatul interogării

Se va observa alegerea câmpului cod_client pentru efectuarea grupării (deoarece acest câmp are valori unice), a funcţiei First pentru a afişa numele clientului şi a opţiunii Where pentru a preciza criteriul de selecţie (ultimele 60 zile). Dacă în loc de Where s-ar fi păstrat opţiunea Group By s-ar fi produs gruparea după datele comenzilor şi un client ar fi apărut în lista de rezultate de mai multe ori (pentru fiecare zi în care a efectuat o comandă).

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 76 –

Dacă s-ar fi selectat Group By şi pentru câmpul nume_client rezultatele interogării ar fi fost identice dar gruparea după cel de-al doilea câmp ar fi fost inutilă din moment ce codurile clienţilor sunt unice.

Trebuie remarcat că un câmp pentru care a fost selectată opţiunea Where nu mai poate figura în rezultatele cererii.

După cum se poate vedea în figura 3.36 câmpurile rezultate ca urmare a aplicării funcţiilor agregat poartă nume ce includ ca prefix numele funcţiei (CountOf…, FirstOf…).

Pentru a evita această situaţie se poate tasta in linia Field numele dorit urmat de două puncte (la fel ca în cazul câmpurilor calculate).

Fig. 3.37. Interogare totalizatoare

Fig. 3.38. Rezultatul interogării

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 77 –

Aplicaţia 3.10: Se dau tabelele:

comenzi (nrnrcd, datanrcd, codfurnizor, codgestiune, codfactura, datafact)

material (nrnrcd, codmaterial, cantaprov, pretaprov)

Fig. 3.39. Tabelele bazei de date

– Să se obţină lista totalurilor valorice, inclusiv TVA, pentru materialele intrate pe fiecare magazie (figurile 3.40 şi 3.41).

– Să se obţină lista cu preţurile maxim, minim şi mediu pentru intrările de materiale pe coduri (figurile 3.42 şi 3.43).

– Să se obţină totalul valoric al materialelor aprovizionate de la un furnizor (figurile 3.44 şi 3.45).

– Să se afişeze numărul intrărilor de materiale de la furnizor (numărul înregistrărilor) pe fiecare cod de materiale (figurile 3.46 şi 3.47).

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 78 –

Fig. 3.40. Interogarea care utilizează funcţia SUM

Fig. 3.41. Lista cu totalurile valorice pe gestiuni

Fig. 3.42. Interogarea

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 79 –

Fig. 3.43. Rezultatul interogării

Fig. 3.44. Interogarea cu valoarea materialelor aprovizionate de la un furnizor

Fig. 3.45. Tabelul cu valoarea materialelor aprovizionate de la un furnizor

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 80 –

Fig. 3.46. Interogarea pentru numărarea înregistrărilor pe coduri de materiale

Fig. 3.47. Rezultatul interogării

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 81 –

Aplicaţia 3.11: Se dau tabelele:

student (cod_student, Nume, Prenume, Grupa, Facultatea)

curs (cod_curs, denumire)

prof (cod_curs, cod_student, nota)

Fig. 3.48. Tabelele bazei de date

Să se realizeze o interogare pentru obţinerea mediei generale a grupei 200 pentru studenţii care au medii de cel puţin 5. Studenţii au un număr de 6 discipline.

Rezolvarea problemei se va realiza în două etape:

– se va face o interogare de tip total pentru calculul mediei fiecărui student de la toate grupele şi se vor afişa cele mai mari sau egale cu 5 – interogarea Medie (figura 3.49.);

– se va face o interogare pe baza interogării precedente, Medie, şi a tabelei Student, se vor calcula mediile generale pe fiecare grupă, dar va fi afişată numai grupa 200 – interogarea Medie_generala (figura 3.51)

Dacă se doreşte afişarea mediei generale doar cu două zecimale vom alege Properties –> Format –> Fixed pentru câmpul Media al interogării Medie_generala.

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 82 –

Fig. 3.48. Tabelele bazei de date

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 83 –

Fig. 3.49. Interogarea Medie

Fig. 3.50. Rezultatul interogării Medie

Fig. 3.51. Interogarea Medie_generală Fig. 3.52. Rezultatul interogării Medie_generală

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 84 –

3.2.7. Extragerea subcâmpurilor dintr-un câmp

Aplicaţia 3.12: Fie tabelul: clienti (cod_client, nume_client, tara, localitate, adresa, cod_poştal, telefon).

Interogarea din figura 3.53 extrage din câmpul ţara primele trei caractere.

Fig. 3.53. Interogarea

Fig. 3.54. Rezultatul interogării

Aplicaţia 3.13: Se cere o listă cu specificarea lunii în care materialele au fost facturate.

Pentru a extrage luna din data calendaristică se utilizează expresia:

Trim: DatePart(“m”, [datafact])

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 85 –

Pentru a extrage anul din data calendaristică se utilizează expresia:

An: DatePart(“yyyy”, [datafact])

Pentru a extrage anul din data calendaristică se utilizează expresia:

An: DatePart(“yyyy”, [datafact])

Fig. 3.55. Interogarea ce extrage luna din data calendaristică

Fig. 3.56. Rezultatul interogării

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 86 –

Lista intrărilor de materiale cu specificarea zilei şi a lunii în care au fost recepţionate, se poate realiza prin interogarea din figura 3.57..

Fig. 3.57. Interogarea ce extrage ziua şi luna din data calendaristică

Fig. 3.58. Rezultatul interogării

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 87 –

3.3. Interogarea tip tabel încrucişat

Sunt interogări de tip total, cu deosebirea că în listele obişnuite care folosesc denumirea câmpurilor ca titluri de coloane, tabelul încrucişat este un mod de a sintetiza datele într-o formă specifică.

Interogările de tip tabel încrucişat (CrossTab Query) sunt extrem de utile în scopul analizei multidimensionale a datelor permiţând obţinerea unor situaţii sintetice asemănătoare tabelelor pivot consacrate de procesoarele de tabele (Microsoft Excel, Lotus 123, etc.).

Practic, este posibilă elaborarea unor tabele în care gruparea şi ordonarea datelor se realizează atât pe linii cât şi pe coloane la intersecţia cărora se pot efectua calcule complexe.

Pentru o interogare tabel încrucişat sunt necesare cel puţin 3 câmpuri:

– unul care să furnizeze valorile pentru titlurile de rând (Row Heading), cu menţiunea că se pot alege mai multe câmpuri antet de rând;

– unul care să dea valorile pentru titlurile de coloane (Column Heading); un singur câmp poate fi antet de coloană;

– unul care să fie bază pentru calcularea valorilor sintetice de afişat la punctele de intersecţie rând – coloană; aceste valori se obţin, de regulă, prin însumare şi numărare utilizând funcţiile Sum şi Count.

Etapele ce trebuie urmate pentru realizarea unei astfel de cereri de interogare sunt următoarele (Access dispune şi de un program wizard ce permite elaborarea asistată a unor astfel de interogări):

1. Elaborarea unei interogări de selecţie în modul Design View. Se vor alege tabelele ce conţin datele şi se vor selecta câmpurile dorite pentru afişare şi eventualele câmpuri pentru care se vor impune restricţii.

2. Din meniul Query se va selecta opţiunea CrossTab Query ce va avea ca efect imediat afişarea liniilor Total şi Crosstab în grila interogării.

3. Se va specifica modul de agregare a datelor, respectiv funcţiile totalizatoare în linia Total.

4. În linia CrossTab se va opta pentru Row Heading în cazul câmpurile ce vor fi afişate pe liniile tabelului, Column Heading pentru câmpul ce va fi afişat pe verticală, şi Value pentru valorile ce vor fi afişate la intersecţia liniilor cu coloanele. Este permisă existenţa mai multor câmpuri ordonate pe orizontală (Row Heading), dar a unui singur câmp Column Heading şi a unui singur câmp Value.

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 88 –

Aplicaţia 3.14: Fie tabelele cu relaţiile:

Se vrea:

– obţinere a unei situaţii ce afişează valoarea vânzărilor realizate de firmă de la începutul anului din fiecare produs în fiecare localitate (interogarea Vânzări pe localităţi);

– aflarea numărului de comenzi realizate de fiecare client în fiecare lună a anului (interogarea Comenzi pe lună).

Fig. 3.59. Tabelele bazei de date

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 89 –

Fig. 3.59. Tabelele bazei de date

Fig. 3.60. Interogare de tip tabel încrucişat

Fig. 3.61. Rezultatul interogării

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 90 –

Fig. 3.62. Interogare de tip tabel încrucişat

Fig. 3.63. Rezultatul interogării

După cum se poate observa, interogarea nu afişează coloanele aferente lunilor anului în care nu s-a efectuat nici o comandă. Acest aspect conduce la inconveniente în cazul în care se doreşte elaborarea unui raport având ca sursă cererea de interogare deoarece raportul presupune specificarea unui număr fix de câmpuri.

O soluţie pentru afişarea coloanelor chiar dacă acestea nu conţin valori este precizarea numelor acestora în grila de proprietăţi a interogării. Pentru aceasta se va deschide interogarea în modul de proiectare şi din meniul View se selectează opţiunea Properties, specificându-se numele coloanelor obligatorii în rândul Column Headings al ferestrei Query Properties (figura 3.64).

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 91 –

Fig. 3.64.

Aplicaţia 3.15: Fie o bază de date ce conţine tabelele:

material (codmaterial, denmaterial, um)

stoc (codgestiune, codmaterial, stocinitial, datainitiala)

Se cere afişarea cantităţilor de materiale stocate în magaziile întreprinderilor.

Fig. 3.65. Tabelele bazei de date

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 92 –

Fig. 3.66. Interogarea privind stocurile de materiale pe magazii

Fig. 3.67. Rezultatul interogării

Aplicaţia 3.16: Fie o bază de date ce conţine tabelul:

auto (nrfactura, datafactura, beneficiar, tipauto, cant, pret)

Să se realizeze o interogare cu vânzările lunare pe tipuri auto.

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 93 –

Fig. 3.68. Tabelul bazei de date

Fig. 3.69. Vânzările lunare pe tipuri auto

Fig. 3.70. Rezultatul interogării

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 94 –

3.4. Interogări de acţiune

Interogările de acţiune pot avea ca rezultat:

• Crearea de noi tabele (Make Table Query)

• Actualizarea datelor (Update Query)

• Adăugarea de noi înregistrări (Append Query)

• Ştergerea înregistrărilor (Delete Query)

Modul de elaborare a unei interogări tip acţiune este similar celui prezentat în cazul interogărilor de selecţie, presupunând ca etapă suplimentară specificarea explicită prin intermediul meniului Query a tipului de cerere dorit.

Modificările asupra bazei de date sunt efectuate doar în momentul execuţiei interogării.

Este recomandată proiectarea în prealabil a cererii ca o simplă interogare de selecţie şi verificarea rezultatelor ce vor fi afectate deoarece nu există posibilitatea revenirii în cazul ştergerii sau modificării eronate a înregistrărilor.

3.4.1. Interogări pentru crearea de noi tabele (Make Table Query)

Crearea de noi tabele pe baza înregistrărilor din tabelele deja existente presupune parcurgerea următoarelor etape:

1. Elaborarea unei interogări de selecţie în modul Design View (vor fi luate în calcul doar câmpurile ce dorim să facă parte din structura noii tabele, iar, în cazul în care sunt necesare şi alte câmpuri pentru aplicarea unor criterii, acestea nu vor fi marcate în linia Show a grilei QBE).

2. Apelarea din meniul Query a opţiunii Make Table Query şi specificarea în casete Make Table a numelui noii tabele (se poate opta pentru crearea noii tabele într-o altă bază de date bifând opţiunea Another Database şi specificând numele fişierului).

3. Lansarea în execuţie a interogării.

Tabela rezultată va moşteni doar tipurile de date şi dimensiunile câmpurilor din tabelele sursă, nu şi cheia primară sau eventualele proprietăţi la nivel de câmp ori tabelă.

Exemplul următor ilustrează crearea unei tabele (clienţi 2 – pentru aplicaţiile 3.2, 3.9) ce va conţine codurile, numele şi telefoanele clienţilor din afara ţării (figura 3.71).

Există posibilitatea generării unor tabele care să conţină câmpuri ce nu există în tabelele sursă (câmpuri calculate). Un exemplu în acest sens este prezentat în figura 3.72 şi reprezintă modul de obţinere a unei tabele în care sunt evidenţiate cantităţile comandate din fiecare produs.

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 95 –

Fig. 3.71. Interogarea Make Table Query

Fig. 3.72.

Îîn cazul executării repetate a unei astfel de interogări, sau atunci când se specifică în caseta Make Table numele unei tabele deja existente, vechea tabelă cu acelaşi nume va fi ştearsă înaintea generării celei noi.

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 96 –

3.4.2. Interogări pentru actualizarea datelor (Update Query)

Acest tip de interogări permit modificarea valorilor datelor din unul sau mai multe câmpuri ale înregistrărilor ce satisfac restricţiile impuse de utilizator.

Pentru a realiza o interogare de tip Update este necesară selectarea în modul Design View a câmpurilor ce vor fi actualizate şi, eventual, a celor ce fac obiectul restricţiilor, după care se va apela din meniul Query opţiunea Update Query. Ca rezultat al acestei operaţii în grila QBE va fi disponibilă linia Update To în care se va putea completa formula de calcul sau valoarea dorită pentru actualizare.

Pentru exemplificare (figura 3.73) presupunem că, în urma renegocierii termenelor, s-a hotărât amânarea livrărilor către clientul SQL SRL cu 5 zile. Modificarea se va produce evident doar în cazul comenzilor care nu au fost încă expediate. Rezultatul este prezentat în figura 3.74.

Fig. 3.73. Interogarea Update Query

Se remarcă notaţia între paranteze drepte a denumirilor de câmpuri, chiar dacă acestea nu conţin spaţii.

În cadrul interogărilor Update nu sunt admise modificări asupra câmpurilor cheie primară sau modificări ce ar putea conduce la nerespectarea restricţiilor de integritate. O situaţie ce ar putea genera erori survine atunci când, în cazul câmpurilor de tip text, valoarea rezultată depăşeşte lungimea câmpului din tabelă. În acest caz valoarea va fi trunchiată din partea dreaptă.

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 97 –

Tabela comenzi înainte de update Tabela comenzi după de update

Fig. 3.74.

3.4.3. Interogări pentru adăugarea de înregistrări (Append Query)

Interogările pentru adăugare oferă utilizatorilor posibilitatea inserării de noi înregistrări în tabel pornind de la înregistrările existente.

Pentru a realiza o interogare de tip Append este necesară parcurgerea următoarelor etape:

1. Elaborarea unei interogări de selecţie în modul Design View. Se va alege tabela ce conţine datele şi vor fi luate în calcul doar câmpurile ce conţin valorile ce vor fi adăugate, iar, în cazul în care se doreşte aplicarea unor criterii de selecţie a acestora, se vor adăuga câmpurile de restricţionat.

2. Se vor tasta eventualele condiţii în linia de criterii a interogării.

3. Din meniul Query se va selecta opţiunea Append Query ce va conduce la afişarea ferestrei Append în care se va selecta numele tabelei în care dorim adăugarea.

4. Transformarea interogării de selecţie într-o interogare de adăugare are ca efect apariţia rândului Append To în fereastra de proiectare a interogării. În acest rând se va specifica pentru fiecare câmp din tabela ce conţine datele denumirea câmpului corespondent din tabela unde vor fi adăugate.

Pentru exemplificare vom presupune că dorim adăugarea în tabela clienţi 2 (ce conţine în momentul actual doar clienţii din afara ţării) a tuturor clienţilor din tabele clienţi ce nu au sediul în Bucureşti (figura 3.74).

Denumirile câmpurilor din linia Append Ţo a grilei QBE sunt completate automat doar în cazul în care acestea coincid în tabela sursa cu cele din tabela destinaţie.

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 98 –

Fig. 3.75. Interogarea Append Query

3.4.4. Interogări pentru ştergerea de înregistrări (Delete Query)

Interogările acţiune de tip Delete oferă posibilitatea eliminării mai multor înregistrări din tabele pe baza unor criterii impuse de utilizator.. Acţiunea interogărilor de ştergere acompaniată de opţiunea de ştergere în cascadă configurată în fereastra Relationships poate conduce la ştergerea simultană a datelor din mai multe tabele.

Pentru a realiza o interogare de ştergere se elaborează în mod normal o cerere selectându-se câmpurile dorite şi impunându-se restricţiile necesare după care se apelează din meniul Query opţiunea Delete.

Exemplul următor prezintă modalitatea în care se pot şterge din baza de date toate comenzile efectuate după data de 9 februarie de clienţii ce au codurile 2 sau 3 (figura 3.76).

Este evident că interogarea nu va putea fi executată în cazul în care ştergerea unor înregistrări în tabela Comenzi ar conduce la încălcarea regulilor de integritate a bazei de date (relaţia între tabela Comenzi şi Conţinut comandă trebuie să accepte ştergerea în cascadă).

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 99 –

Fig. 3.76. Interogarea Delete Query

Fig. 3.77. Tabela comenzi înainte de delete

Fig. 3.77. Tabela comenzi după delete

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 100 –

Aplicaţia 3.17: Fie o bază de date ce conţine tabelele:

Fig. 3.78. Tabelele bazei de date

1. Să se creeze o nouă tabelă (gestiune) pentru un cod de gestiune precizat de utilizator în timpul execuţiei şi care să conţină câmpurile: codgestiune (comenzi), nrnrcd (material_apr), codmaterial (material_apr), denmaterial, cantaprov, pretaprov (figura3.79).

2. În tabela gestiune creată anterior, să se mai adauge înregistrările altei gestiuni. Interogarea va avea ca sursă de date tabelele material, nrcd, material_apr (figura 3.81).

3. Să se şteargă înregistrările referitoare la o gestiune din tabela gestiune rezultată din interogarea de la punctul doi (figura 3.83).

4. Să se modifice pretaprov pentru un material precizat în timpul execuţiei (se micşorează preţul cu 10%).

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 101 –

Fig. 3.79. Interogarea Make Table Query

Fig. 3.80. Rezultatul interogării – tabela gestiune

Fig. 3.81. Interogarea Append Query

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 102 –

Fig. 3.82. Rezultatul interogării – tabela gestiune

Fig. 3.83. Interogarea Delete Query

Fig. 3.84. Interogarea Update Query

3. Microsoft Access – Interogări (Queries)

Năchilă Cătălin – laborator Access – 103 –

Fig. 3.84. Rezultatul interogării Update Query după ce s-a introdus codmaterial =1000

4. Formulare

Năchilă Cătălin – laborator Access – 104 –

4. Microsoft Access – Formulare (Forms)

4.1. Generalităţi

Access pune la dispoziţia proiectantului o serie de facilităţi în vederea creării unui formular. Astfel se poate alege între:

– generarea automată a unor formulare predefinite (AutoForm: Columnar, Tabular, Datasheet, PivotTable, Pivotchart);

– proiectarea asistată, caz în care utilizatorul este îndrumat de către o serie de asistenţi (Wizards: Form Wizard, Chart Wizard, PivotTable Wizard).

Pentru obţinerea unor machete mai complexe, utilizarea asistenţilor nu este suficientă, proiectantul fiind nevoit să aducă modificări formularelor generate de Access. Etapele necesare creării unui formular sunt următoarele:

1. Se acţionează butonul New din fereastra bazei de date pentru activarea asistentului New Form (figura 4.1.);

2. Se optează pentru una din variantele:

– Design View – crearea formularului cade în sarcina exclusivă a utilizatorului;

– Form Wizard – utilizatorul va fi asistat la crearea formularului;

– AutoForm: Columnar – Access va genera automat un formular de tip single form;

– AutoForm: Tabular – se creează automat un formular de tip Tabular,

– AutoForm: Datasheet – se va genera automat un formular Datasheet;

– Chart Wizard – utilizatorul va fi îndrumat în crearea unui formular ce va afişa datele sub formă de grafic;

– PivotTable Wizard - noul formular va îngloba o tabelă pivot generată prin aplicaţia Excel (folosind tehnica OLE).

3. Se stabileşte sursa de date (tabel sau interogare) a formularului. Această etapă este obligatorie pentru formularele generate automat (variantele AutoForm) şi pentru formularele grafice (obţinute prin Chart Wizard).

Fig. 4.1. Modalităţi de creare a formularelor

4. Formulare

Năchilă Cătălin – laborator Access – 105 –

4.2. Formularele Wizard

4.2.1. Form Wizard & AutoForm

Proiectarea formularelor prin varianta Form Wizard presupune următoarele etape (atunci când sursa de date este o tabelă):

1. se acţionează butonul New din fereastra bazei de date pentru activarea asistentului New Form (figura 4.1.);

2. se optează pentru varianta Form Wizard;

3. se selectează tabela sau interogarea dorită în rubrica derulantă solicitată; prin click pe butonul Ok, sistemul intră în modul Wizard;

4. se selectează câmpurile din sursa de date, ce vor fi afişate în formular; câmpurile accesibile ale tabelei/interogării selectate sunt afişate în zona Available Fields; câmpurile ce for face parte din formular sunt afişate în zona Selected Fields (figura 4.2.); selectarea câmpurilor se face cu ajutorul butoanelor:

– > pe al cărui click se transmite un singur câmp selectat din zona Available Fields în zona Selected Fields;

– >> pe al cărui click se transmit toate câmpurile din zona Available Fields în zona Selected Fields;

– < pentru revenirea unui câmp selectat din Selected Fields în Available Fields;

– << pentru revenirea tuturor câmpurilor selectate din Selected Fields în Available Fields;

Fig. 4.2.

4. Formulare

Năchilă Cătălin – laborator Access – 106 –

5. se alege tipul de formular şi anume opţiunile privind forma de poziţionare a datelor din formular; opţiunile sunt:

– Columnar

– Tabular

– Datasheet

– Justified

– PivotTable

– PivotChart 6. se stabileşte imaginea de fundal pentru formular (Stone, Standard etc.);

7. în ultima etapă se defineşte titlul formularului, precum şi modul în care va fi deschis formularul (figura 4.3.):

Fig. 4.3.

Există posibilitatea opţiunii asupra deschiderii noului formular:

– Open the form to view or enter information – pentru execuţie;

– Modify the form's design – pentru eventuale modificări.

4. Formulare

Năchilă Cătălin – laborator Access – 107 –

Unele din tipurile Autoform existente:

– Columnar – prezintă valorile câmpurilor selectate în rubrici încolonate (figura 4.4.);

– Tabular – prezintă valorile în mod tabelar (pe coloane) (figura 4.5.);

– Datasheet – este identic cu forma Design View de la crearea tabelelor (figura 4.6.);

– Justified – prezintă valorile câmpurilor selectate în rubrici încolonate (figura 4.7.);

Fig. 4.4. Formular de tip Columnar

Fig. 4.5. Formular de tip Tabular

4. Formulare

Năchilă Cătălin – laborator Access – 108 –

Fig. 4.6. Formular de tip Datasheet

Fig. 4.7. Formular de tip Justified

4.2.2. Chart Wizard

Un prim pas îl constituie afişarea tuturor câmpurilor din tabela solicitată, cu zonele Available Fields şi Selected Fields (identic modului Form wizard). După executarea unui click pe butonul Next, sistemul afişează cel de-al doilea pas.

Al doilea pas solicită tipul de grafic. Sistemul oferă 20 asemenea tipuri de grafice (coloane paralelipipedice, cilindrice, liniare, sub forma de bare orizontale, sub forma de disc etc.).

După selectarea tipului dorit de grafic şi executarea de clic pe butonul Next, în cadrul pasului al treilea, sistemul prezintă modelul graficului, precum şi câmpurile selectate anterior. În mijlocul modelului se specifică posibilitatea de însumare a unor valori, sau (în cazul unor alternative) mesajul Data. În mod distinct există o casetă Series. În partea dreapta a tabloului sunt afişate câmpurile selectate anterior din tabela sursa.

4.2.3. Pivot Table Wizard

Modul Pivot Table Wizard este o combinaţie între metoda Wizard (de efectuare a lucrărilor în paşi dictaţi de sistem) şi interogările de tip tabel încrucişat (Crosstab), adică generează formulare de tip crosstab prin paşi dictaţi de sistem.

4. Formulare

Năchilă Cătălin – laborator Access – 109 –

Aplicaţia 4.1: Fie o bază de date ce conţine tabelele:

Fig. 4.8. Tabelele bazei de date

Să se completeze tabelele agenţi şi proprietari utilizând tipurile de formulare formularele de tip Columnar, Tabular sau Justified prezentate (câte un formular pentru fiecare tabel).

4. Formulare

Năchilă Cătălin – laborator Access – 110 –

Să presupunem că se doreşte graficul proporţiei dintre apartamentele şi garsonierele existente în baza de date, ca cele două alternative în cadrul câmpului tip_mobil. Pentru obţinerea unui asemenea grafic, în primul pas se va selecta, în zona Selected Fields, câmpul tip_mobil. Considerăm că în pasul al doilea s-a optat pentru tipul de grafic Pie (sub formă de disc). În pasul al treilea, se va draga câmpul tip_mobil, afişat în partea dreapta a tabloului Chart Wizard, peste caseta Series din partea stânga a tabloului.

Se solicită suma preţurilor de vânzare obţinute în cadrul unor intervale calendaristice (luni). Pentru aceasta, au fost selectate câmpurile preţ_vânzare şi data_vânzării. În funcţie de tipul câmpului (text, numeric, dată calendaristică), sistemul organizează casetele Data şi Series.

Pentru cazul exemplificat, câmpul rezervat preţului de vânzare va lua iniţial expresia Sum (of preţ_vânzare) şi câmpul rezervat datei calendaristice a vânzării va lua iniţial expresia By month. Ambele expresii pot fi comutate diferit, prin executarea unui dublu click pe identificatorul expresiei. Astfel, Sum poate fi comutat la: Average, Min, Max, Count (valoare medie, minima, maxima, numărare), iar By month poate fi comutat la By year, Quarter, Week, Day, Hour, Minute (an, trimestru, săptămână, zi, oră, minut).

4.3. Design View

Varianta Design View este mai puţin folosită pentru crearea formularelor. Selectarea acestei opţiuni din fereastra New Form (figura 4.1.) şi alegerea unui tabel sau interogări, are ca efect generarea unui formular gol, în care utilizatorul îşi poate defini propriile controale. Câmpurile sursei de date pot fi afişate prin preluarea lor din fereastra Field List (opţiunea View –> Field List) în interiorul formularului (de obicei în secţiunea Detail) (figura 4.9.).

Lista câmpurilor

Zona formularului

Zona din afara formularului

Fig. 4.9. Crearea unui formular prin Design View

4. Formulare

Năchilă Cătălin – laborator Access – 111 –

Bara de titlu

Antetulformei

Antetulpaginii

Subsolulpaginii

Subsolulformei

Conţinutulformei

Fig. 4.10. Elementele unui formular (Design View)

Un formular are următoarea structură (figura 4.10.):

• Bordura defineşte chenarul ce va delimita formularul pe ecran.

• Antetul formularului (Form Header) este folosit, de regulă, pentru a afişa titlul formularului. Această zonă nu este vizibilă în modul Datasheet. Dacă formularul este afişat în format Tabular, conţinutul zonei de antet nu va fi derulat. Pentru ca această zonă să fie disponibilă în timpul proiectării, se selectează opţiunea View –> Form Header/Footer, din meniul Access.

• Antetul de pagină (Page Header) – este o zonă ce apare numai când formularul este tipărit la imprimantă. Pentru a fi disponibilă în cursul proiectării, se selectează opţiunea View –> Page Header/Footer din meniul Access.

• Secţiunea de detaliu (Detail) – va conţine toate controalele necesare afişării/editării înregistrărilor. În timpul execuţiei, formularul poate conţine în această zonă un control numit selector de înregistrare (record selector) situat în marginea din stânga a formularului (figura 4.11.).

4. Formulare

Năchilă Cătălin – laborator Access – 112 –

Acest control permite:

– afişarea stării înregistrării curente (în curs de editare, înregistrare nouă, înregistrare blocată etc.)

– selectarea înregistrării curente în vederea ştergerii sau copierii acesteia.

• Subsolul de pagină (Page Footer) – este afişat numai la tipărirea formularului şi poate conţine data curentă, numărul de pagină, etc.

• h. Subsolul formularului (Form Footer) – are aceleaşi caracteristici cu zona de antet şi poate să conţină, spre exemplu, totalul general sau diverse alte controale (butoane pentru salvare, adăugare, ştergere de înregistrări etc.).

• Butoane de navigare – sunt afişate numai în timpul execuţiei formularului şi pot fi folosite pentru deplasări în cadrul înregistrărilor.

Butoane de

navigare

Selector deînregistrare

Fig. 4.11. Formular (Design View)

4.3.1. Proprietăţile obiectelor Forms

Proprietăţile formularelor pot fi accesate fie prin intermediul ferestrei Properties (activată prin opţiunea View –> Properties, din meniul Access), fie prin intermediul obiectelor de tip macro sau limbajul VBA. Metodele pot fi accesate (atât la proiectare, cât şi în cursul execuţiei) numai prin acţiuni macro sau din cadrul unor proceduri/funcţii VBA.

4. Formulare

Năchilă Cătălin – laborator Access – 113 –

Setarea unei proprietăţi se poate face prin următoarele variante:

– tastarea valorii respective;

– selectarea valorii dintr-o listă derulantă (dacă aceasta este disponibilă);

– cu ajutorul asistentului, care poate fi invocat prin apăsarea butonului Build Wizard (atunci când acest buton este disponibil).

În cadrul ferestrei Properties, proprietăţile formularului curent sunt împărţite în patru categorii:

1. Format – conţine atribute privitoare la dimensiune, aspect, coordonatele de afişare ale formularului etc.;

• Caption – conţine titlul formularului ce va apărea în bara de titlu a acestuia;

• Default View – specifică modul implicit de afişare, folosit la execuţia formularului (Single Form, Tabular Form, Datasheet);

• Views Allowed – reprezintă modurile de afişare ce sunt disponibile în timpul execuţiei;

• Scroll Bars – setează barele de defilare vizibile în cursul execuţiei (bara orizontală, bara verticală, amândouă sau nici una);

• Record Selectors – afişează sau nu selectorul de înregistrare în timpul execuţiei formularului;

• Navigation Buttons – specifică dacă formularul va conţine butoanele de navigare în cursul execuţiei sale;

• Dividing Lines – precizează dacă se afişează linii pentru delimitarea secţiunilor formularului sau a înregistrărilor la execuţie;

• Auto Center – dacă este setată pe valoarea Yes, formularul va fi afişat, la execuţie, în centrul ecranului;

• Border Style – specifică tipul bordurii. Setarea acestei proprietăţi va avea efect şi asupra comportamentului formularului:

– None – formular fără bordură (formularul nu va putea fi redimensionat la execuţie);

– Thin – bordură subţire (formularul nu va putea fi redimensionat);

– Sizable – bordura implicită (formularul poate fi redimensionat);

– Dialog – bordura subţire (formularul nu poate fi redimensionat iar bara de titlu va conţine doar butonul pentru închidere Close obţinându-se astfel un formular de tip Dialog Box).

• Control Box – indică prezenţa meniului sistem în bara de titlu;

• Min Max Buttons – dezactivează sau activează fie ambele, fie unul din butoanele de minimizare şi maximizare din bara de titlu;

• Close Button – indică prezenţa butonului de închidere (Close) în bara de titlu;

4. Formulare

Năchilă Cătălin – laborator Access – 114 –

• Width – specifică lăţimea formularului şi implicit a tuturor secţiunilor. Această proprietate poate fi modificată în timpul proiectării formularului, dar şi în cursul execuţiei acestuia (dacă bordura este de tip Sizable), cu ajutorul mouse-lui.

• Picture – poate conţine specificatorul unui fişier grafic, al cărui conţinut va fi afişat pe fundalul formularului;

• Picture Type – specifică varianta OLE folosită: – Embedded (înglobat) – imaginea este inclusă în formular;

– Linked (legat) – se creează doar o legătură către fişierul grafic (formularul nu va afişa imaginea respectivă dacă fişierul este şters, mutat etc.).

• Grid X – conţine numărul de subdiviziuni orizontale pe unitatea de măsură (cm, inch, etc.). Grila (Grid) serveşte la alinierea automată a controalelor.

• Grid Y – conţine numărul de subdiviziuni verticale pe unitatea de măsură (intervalul 1-64).

2. Data – grupează proprietăţi referitoare la sursa de date şi înregistrările aferente;

• Record Source – conţine sursa de date a formularului (tabel sau interogare). Această proprietate poate conţine chiar şi o comanda SQL (sunt admise numai cererile de selecţie).

Un formular va avea ca sursă de date o interogare dacă:

– afişează în format Datasheet sau Tabular, controale nelegate;

– afişează câmpuri din mai multe tabele.

• Filter – conţine criteriul de selecţie care se va aplica înregistrărilor din formular. Condiţia de filtrare este o clauză SQL WHERE, însă fără să conţină cuvântul WHERE.

Pentru ca filtrul să fie activ, proprietatea Filter On trebuie setată pe valoarea True (setare ce se poate face numai din VBA).

• Order By – permite specificarea câmpurilor după care vor fi sortate înregistrării din formular. Sintaxa este identică cu sintaxa clauzei SQL, OrderBy.

Pentru ca operaţia de ordonare să se execute automat la deschiderea formularului, proprietatea OrderByOn trebuie setată pe True (proprietatea este disponibilă numai din VBA).

• Data Entry – dacă este setată pe valoarea Yes, formularul nu va afişa, la deschidere, înregistrările existente. Proprietatea este utilă pentru formularele ce vor permite numai adăugarea de înregistrări.

• Record Locks – specifică dacă şi ce înregistrări vor fi blocate pentru alţi utilizator (blocarea se poate face fie pentru toate înregistrările, fie numai pentru înregistrarea curentă).

4. Formulare

Năchilă Cătălin – laborator Access – 115 –

3. Event – conţine evenimentele ce pot fi tratate fie prin proceduri sau funcţii scrise în limbajul VBA, fie prin macro-un. Proprietăţile acestei categorii se numesc proprietăţi eveniment şi au denumiri asemănătoare cu cele ale evenimentelor cărora le sunt ataşate. Apar astfel trei posibilităţi:

• eveniment tratat printr-o funcţie – proprietatea eveniment va conţine o expresie de forma:

NumeFuncţie([ListaParametrii])

• eveniment tratat printr-o procedură eveniment – proprietatea eveniment va conţine expresia EventProcedure, iar editarea procedurii se poate face prin acţionarea butonului BuildWizard, la invocarea căruia Access deschide editorul de module, în care generează o procedură vidă sub forma:

Private Sub Form_numeEveniment([ListăParametriiFormali])

End Sub

• eveniment tratat printr-un macro

Cele mai uzuale evenimente sunt:

Eveniment Poate fi abandonat ?

Proprietatea eveniment Descriere

Current Nu On Current Este înregistrat în momentul trecerii de la o înregistrare la alta.

BeforeUpdate Da BeforeUpdate Apare înaintea salvării înregistrării curente îi tabelă. Acest eveniment este frecvent folosit pentru validarea datelor curente.

Delete Da On Delete

Evenimentul apare înaintea ştergerii înregistrării curente şi poate fi folosit pentru obţinerea unei confirmări din partea utilizatorului cu privire la această operaţie. Dacă se doreşte ştergerea unui bloc de înregistrări, atunci evenimentul se va declanşa pentru fiecare înregistrare.

Open Da On Open

Apare înaintea afişării pe ecran a formularului, la deschiderea acestuia. Poate fi folosit pentru activarea criteriului de selecţie definit îi proprietatea Filter, pentru setarea unor controale înaintea afişării acestora, pentru citirea argumentului transmis formularului, etc..

Unload Da On Unload

Este un eveniment declanşat înaintea închiderii formularului. Evenimentul poate fi folosit pentru a cere confirmarea utilizatorului cu privire la închiderea formularului, atunci când datele nu au fost salvate.

4. Formulare

Năchilă Cătălin – laborator Access – 116 –

Close Nu On Close

Evenimentul este înregistrat în timpul închiderii formularului (formularul este afişat pe ecran) şi poate fi folosit pentru deschiderea altor formulare, pentru ştergerea obiectelor temporare generate "n timpul execuţiei formularului, etc..

Activate Nu On Activate

Este declanşat la activarea formularului (fie la deschiderea lui, fie la selectarea lui dintr-o altă fereastră) şi poate fi folosit, de exemplu, pentru refacerea valorilor unei liste derulante, în urma actualizării tabelei sursă printr-un alt formular.

Click Nu On Click Apare la efectuarea unui click pe selectorul de înregistrare sau pe zona liberă a formularului (zona aflată în afara secţiunilor).

Error Nu On Error

Evenimentul este declanşat la apariţia unei erori în cursul execuţiei formularului (de exemplu, eroarea generată la introducerea unei valori ce nu respectă condiţiile de validare sau restricţia de integritate). Utilitatea acestui eveniment apare atunci când se doreşte interceptarea erorilor generate de Access h vederea tratării lor.

Timer Nu On Timer

Este un eveniment care apare la o anumită perioadă de timp, stabilită de utilizator prin proprietatea Timer Interval (valoarea atribuită este în milisecunde). Poate fi utilizat pentru crearea diferitelor efecte vizuale, pentru citirea/setarea unor variabile globale etc..

4. Other – conţine diverse alte proprietăţi.

• Pop Up – dacă se doreşte ca, în cursul execuţiei sale, formularul să fie permanent vizibil (va fi poziţionat permanent deasupra celorlalte ferestre, chiar dacă nu este activ), această proprietate se va seta pe valoarea Yes;

• Modal – specifică dacă formularul va fi modal sau nemodal;

• Cycle – descrie efectul apăsării tastei Tab pe ultimul câmp din formular: salt la următoarea înregistrare (All records), revenire la primul câmp (Current record), revenire la primul câmp din pagina curentă (Current Page);

• Menu Bar – conţine numele unui meniu creat de utilizator, ce va fi afişat la lansarea în execuţie a formularului;

• Toolbar – indică toolbar-ul propriu ce va fi disponibil în cursul rulării.

4. Formulare

Năchilă Cătălin – laborator Access – 117 –

4.3.2. Controale în formulare (Toolbox)

Controalele sunt obiecte grafice (elemente vizuale) ce sunt incluse în formulare sau rapoarte, în scopul editării/afişării datelor sau executării unor acţiuni (ex.: etichete, casete text, butoane, etc.). Adăugarea controalelor se poate face numai în etapele de creare sau modificare a formularelor, astfel:

– din fereastra Toolbox se selectează butonul aferent controlului dorit;

– se descrie, cu ajutorul mouse-lui, o zonă dreptunghiulară pe suprafaţa formularului, definind astfel poziţia şi dimensiunea noului control.

Control Descriere

Indicator

(Select Objects) Instrument folosit la proiectarea controalelor (selecţie, repoziţionare, redimensionare, etc.)

Asistenţi

(Control Wizards)

Activează/dezactivează utilitarele Wizards folosite la generarea unor controale mai complexe (casete combinate, casete listă, grupuri de opţiune, etc.).

Eticheta

(Label)

Control cu conţinut fix, folosit pentru afişarea unor mesaje. În general, Access generează câte o etichetă pentru majoritatea controalelor definite de utilizator.

Caseta text

(Text Box) Control utilizat pentru afişarea şi editarea datelor.

Butonul de comandă

(Command Button) Serveşte la declanşarea unor acţiuni.

Caseta listă

(List Box) Permite selectarea unei valori dintr-o listă.

Caseta combinată

(Combo Box)

Îmbină proprietăţile unei casete text cu cele ale unei casete de tip listă (permite atât editarea unei valori, cât şi selectarea acesteia dintr-o listă derulantă). Caseta combinată este un control ce se foloseşte frecvent pentru actualizarea cheilor externe.

Butonul-comutator (Toggle Button),

Butonul de opţiune (Option Button),

Caseta de validare (Check Box)

Sunt controale folosite pentru editarea unor valori de tip logic

(Yes / No, On / Off, True / False).

4. Formulare

Năchilă Cătălin – laborator Access – 118 –

Grupul de opţiune

(Option Group)

Este un control container folosit pentru afişarea unui set de alternative şi poate grupa mai multe tipuri de controale (buton de opţiune, casetă de validare etc.)

Delimitator de pagină (Page Break)

Controlul Page Break împarte formularul în mai multe pagini care pot fi vizualizate cu ajutorul tastelor PageUp şi PageDown. Poate fi, de asemenea, folosit pentru salt la pagină nouă, n cazul tipăririi formularului

Index

(Control Tab)

Controlul de tip Tab este un control container ce permite gruparea altor controale n mai multe pagini, atunci când formularul conţine un număr prea mare de controale.

Linie (Line)

Dreptunghi (Rectangle) Controalele servesc la trasarea diverselor figuri geometrice.

Imagine

(Image) Permite afişarea conţinutului unor fişiere grafice (.bmp, .gif, .wmf, .pcx, etc.), pe fundalul formularului.

Obiect cadru nelegat

(Unbound Object Frame)

Este un control ce va conţine un obiect (grafic, multimedia, document etc.), importat dintr-o altă aplicaţie Windows (Word, Excel, Paint, Sound Recorder etc.) prin tehnologia OLE (Object Linking and Embedding).

Obiect cadru legat

(Bound Object Frame) Conţine un obiect stocat într-un câmp de tip OLE din tabela sursă

Subformular (Subform) Permite definirea unui subformular n cadrul formularului curent.

Alte controale

(More Controls) Afişează alte controale înregistrate, ce pot fi ataşate formularului (controale ActiveX etc.)

4.3.3. Proprietăţile controalelor

Proprietăţile unui control sunt afişate în fereastra Properties, atunci când controlul respectiv este selectat. Ca şi în cazul formularelor, metodele aferente controalelor sunt grupate în patru categorii (Format, Data, Events, Other) şi sunt disponibile numai prin intermediul macro-urilor sau modulelor VBA.

Cele mai uzuale proprietăţi sunt:

1. Proprietăţi din categoria Format:

– Format – specifică modelul (masca) de afişare a datelor (numai pentru casetele text);

– Decimal Places – indică numărul de zecimale cu care vor fi afişate datele (numai pentru casete text);

4. Formulare

Năchilă Cătălin – laborator Access – 119 –

– Caption – conţine textul afişat de control (numai pentru controalele needitabile: etichete, butoane etc.);

– Visible – determină afişarea sau nu a controlului în timpul execuţiei formularului;

– Left – stabileşte coordonata orizontală a colţului stânga-sus al controlului;

– Top – indică poziţia pe verticală a colţului stânga-sus;

– Width – stabileşte lăţimea controlului:

– Height – stabileşte înălţimea obiectului;

– Back Style – determină modul de afişare: control normal sau transparent;

– Back Color – stabileşte culoarea de fundal a controlului;

– Special efect – specifică efectele tridimensionale ale controlului;

– Border Style – indică tipul linie folosit la trasarea bordurii controlului (transparent, continuu, punctat etc.);

– Border Color – determină culoarea bordurii;

– Border Width – grosimea bordurii;

– Fore Color – culoarea textului afişat de control;

– Font Name – tipul fontului aferent textului din control;

– Font Size – dimensiunea fontului;

– Picture – specifică numele şi calea fişierului grafic ce va fi afişat în interiorul controlului (numai pentru butoane şi controale de tip imagine);

– Text Align – stabileşte modul de aliniere a textului în interiorul controlului.

2. Proprietăţi din categoria Data:

– Control Source – conţine sursa de date a controlului şi poate fi:

Numele unui câmp (pentru controale legate);

O expresie de calcul precedată de semnul "=" (pentru casete text nelegate).

Exemplu: o casetă text ce va afişa valoarea unui material contractat, pe baza preţului şi a cantităţii contractate, va conţine în proprietatea control source expresia:

=[Cantitate]*[Preţ] unde [Cantitate] şi [Preţ] sunt denumirile a două câmpuri (sau controale) din formular;

– Input Mask – indică formatul folosit la introducerea datelor (numai pentru casete text)

4. Formulare

Năchilă Cătălin – laborator Access – 120 –

– Default value – specifică valoarea implicită (valoarea prin lipsă) a controlului.

Exemplu: pentru o casetă text destinată actualizării unui câmp de tip Date/Time,

această proprietate poate conţine funcţia Date(), care returnează data sistemului: =Date()

– Validation Rule – conţine regula după care se face validarea datelor introduse în control. La execuţia formularului, mai întâi se verifică regula de validare a controlului şi apoi cea a câmpului ataşat. Proprietatea validation rule poate fi folosită pentru definirea unor restricţii asupra câmpurilor din tabele diferite;

– Validation Text – specifică mesajul ce va fi afişat, atunci când regula de validare este încălcată;

– Enabled – activează sau dezactivează controlul. Un control dezactivat va fi inaccesibil la execuţia formularului;

– Locked – serveşte la protejarea datelor afişate de control (controlul va deveni read-only).

3. Proprietăţi din categoria Event: conţin denumirile funcţiilor, procedurilor eveniment sau macro-urilor, ce vor fi executate la declanşarea evenimentelor ataşate.

Cele mai uzuale evenimente sunt:

Eveniment Poate fi abandonat?

Proprietatea eveniment Descriere

BeforeUpdate Da BeforeUpdate

Apare înaintea salvării datelor din control îi câmpul ataşat acestuia. Evenimentul poate fi folosit pentru validarea datelor introduse îi control.

Change Nu On Change Se declanşează h momentul îi care datele din control (casetă text sau casetă combinată) sunt modificate.

Enter Nu On Enter Evenimentul este înregistrat în momentul accesării controlului în vederea editării datelor (înaintea activării sale).

Exit Da On Exit

Declanşat, atunci când se părăseşte controlul curent în vederea accesării altui control din formular. Acest eveniment nu apare n cazul îi care controlul este în curs de editare şi se activează o altă fereastră.

4. Formulare

Năchilă Cătălin – laborator Access – 121 –

Got Focus Nu On Got Focus

Apare îi momentul focalizării controlului. Diferă de evenimentul On Enter prin aceea că se declanşează chiar şi atunci utilizatorul comută între o altă fereastră şi formularul curent.

Lost Focus Nu On Lost Focus

Evenimentul este înregistrat la defocalizarea controlului (fie prin trecerea la alt control din cadrul formularului, fie prin activarea altei ferestre).

Ordinea în care sunt declanşate evenimentele la activarea/dezactivarea unui control este următoarea:

Enter –> GotFocus –> Exit –> LostFocus

4. Proprietăţi din categoria Other:

– Name – conţine numele controlului. La creare, fiecare control primeşte un nume unic, format din tipul său plus un număr de ordine (ex.: TextBox5). Utilizatorul poate modifica acest nume, schimbându-1 cu unul mai sugestiv. Controalele legate, generate automat de Wizards, au numele identice cu denumirile câmpurilor ataşate;

– Status Bar Text – specifică mesajul afişat în bara de stare, în momentul selectării controlului;

– Tab Stop – dacă este setată pe valoarea Yes, atunci controlul poate fi accesat cu ajutorul tastei Tab;

– Tab Index – specifică numărul de ordine al controlului, în funcţie de care acesta va fi accesat cu ajutorul tastei Tab. Toate controalele editabile vor primi un număr de ordine unic, la creare. Acest număr poate fi modificat fie prin această proprietate, fie prin opţiunea View-TabOrder din meniul Access;

– Control Tip Text – conţine mesajul afişat într-o fereastră ToolTip.

Pentru crearea unor controale complexe (casete combinate, casete de tip listă etc.), proiectantul poate fi asistat de programele control wizards.

4. Formulare

Năchilă Cătălin – laborator Access – 122 –

Aplicaţia 4.2: Fie baza de date de la aplicaţia 4.1:

Fig. 4.8. Tabelele bazei de date

Să se creeze un formular utilizând Design View pentru tabelul imobile care să arate ca în figura 4.12.

4. Formulare

Năchilă Cătălin – laborator Access – 123 –

Fig. 4.12. Formularul (Form View)

Fig. 4.13. Formularul (Design View)

4. Formulare

Năchilă Cătălin – laborator Access – 124 –

Se doreşte ca la adăugarea imobilului, proprietarul şi agentul (numerele acestora) să se facă prin selectarea acestora din liste ce conţin toţi proprietari, respectiv toţi agenţii.

Pentru câmpurile ce îndeplinesc rolul de cheie externă, este recomandat ca în formulare să se creeze controale de tip combo box sau list box, deoarece, datorită referinţei de integritate, cheile externe nu admit decât valori comune cu cheile primare pe care le referă (sau valoarea nuli).

Pentru combo box-un proprietatea Limit To List trebuie setată pe valoarea Yes (nu se admit valori care nu există în listă).

Pentru crearea unei casete combinate, prin intermediul Control Wizards, se parcurg următoarele etape:

1. se activează butonul Control Wizards din fereastra toolbox (dacă nu este deja activat);

2. în aceeaşi fereastră, se selectează butonul combo box;

3. se plasează mouse-ul în zona dorită pe formular şi se execută click;

4. în fereastra Combo Box Wizard (figura 4.14.), se selectează prima variantă.

Fig. 4.14. Tipuri de casete combinate

Cele trei opţiuni afişate au următoarele semnificaţii:

– Lista va conţine valorile unui câmp dintr-o tabelă sau interogare. Controlul este utilizat de regulă, pentru actualizarea cheilor externe.

– Caseta combinată conţine valori definite de utilizator. Acest tip este utilizat pentru câmpuri ce prezintă un număr relativ redus de valori standard (unitate de măsură, valuta etc.).

– Selectarea unei valori din listă determină saltul la înregistrarea aferentă în sursa de date a formularului. Acest control este folosit în scopul facilitării operaţiilor de regăsire a înregistrărilor dintr-un formular.

4. Formulare

Năchilă Cătălin – laborator Access – 125 –

5. Se specifică tabela sau interogarea ce va furniza date listei de valori a controlului (tabelele proprietari în cazul primului combo box respectiv agenti în cazul celui de al doilea combo box)

6. Se aleg câmpurile tabelei ce vor fi afişate în lista de valori.

7. Se ajustează dimensiunea fiecărei coloane din lista de valori (prima coloana este implicit ascunsă).

8. Se alege câmpul din sursa de date a formularului ce va fi actualizat cu valoarea selectată din listă (câmpul ataşat controlului).

9. Se specifică eticheta ataşată controlului casetă combinată.

Dacă, din diferite motive, Wizard Controls nu funcţionează (de exemplu, nu este setată această opţiune le instalarea programului Access), proiectantul va fi nevoit să seteze singur proprietăţile controlului combo box:

– Column Widths – specifică dimensiunea fiecărei coloane din listă (valorile sunt separate de caracterul ";")

– List Width – conţine lăţimea totală a listei derulante

– Row Source Type – specifică tipul sursei de date pentru valorile din listă (tabelă sau interogare, valori definite de utilizator, realizările unui câmp)

– Row Source – conţine denumirea tabelei, a interogării (sunt admise şi fraze SQL Select) sau valorile predefinte de utilizator (separate de caracterul ";")

– Bound Column – va conţine numărul de ordine al coloanei care va actualiza câmpul ataşat controlului (coloana respectivă poate fi ascunsă)

– Limit To List – permite sau nu utilizatorului să introducă valori ce nu există în lista controlului. Setarea acestei proprietăţi pe Yes va conduce la declanşarea evenimentului On Not in List ori de câte ori se introduce o valoare inexistentă în listă.

Cele trei butoane se crează tot prin intermediul Control Wizards (figura 4.15.), de unde se alege pentru fiecare în parte acţiunile corespunzătoare.

Fig. 4.15. Button Wizard

4. Formulare

Năchilă Cătălin – laborator Access – 126 –

4.4. Subformulare

Rolul subformularelor este de a actualiza mai multe tabele prin intermediul unei singure ferestre (formular). Subformularele sunt create în general pentru anumite tabele dependente (tabele în care câmpul comun este cheie externă), din cadrul unei relaţii de tip 1–n.

Definirea unui subformular presupune înglobarea (includerea) unui formular în cadrul altui formular, primul devenind subformular, iar al doilea formular principal.

Avantajele oferite de utilizarea subformularelor constau în:

• Posibilitatea actualizării mai multor tabele printr-un singur formular.

• Sincronizarea subformularului cu formularul principal, operaţie care constă în: – actualizarea automată a câmpului cheie externă din subformular, cu valoarea deţinută de

câmpul cheie primară din formularul principal;

– filtrarea automată a înregistrărilor din subformular, în funcţie de valoarea cheii primare din formularul principal.

Pentru definirea unui subformular în modul Design se procedează astfel:

• se deschide în modul Design, formularul ce se doreşte a fi formular principal;

• se activează fereastra bazei de date;

• folosind tehnica drag&drop, se aduce depune formularul, ce se doreşte a fi subformular, în interiorul formularului principal;

• se salvează formularul principal. Tot pentru definirea unui subformular se poate utiliza şi controlul subform cadrul

formularului principal.

Modificare făcută ulterior asupra subformularului, ca obiect de tip formular, se va reflecta automat şi în formularul principal.

Sincronizarea formular–subformular se realizează prin intermediul câmpurilor de legătură cheia primară din sursa de date aferentă formularului principal şi cheia externă din sursa de date aferentă subformularului.

Denumirile acestor câmpuri sunt înscrise automat de Access în proprietăţile Link Master Field şi Link Child Field ale controlului de tip subform din formularul principal.

Completarea acestor proprietăţi este realizată automat de Access, atunci când între cele două surse de date sunt definite relaţii sau când acestea conţin două câmpuri cu aceeaşi denumire. Se recomandă totuşi verificarea acestor proprietăţi chiar şi în cazul completării lor de către Access.

4. Formulare

Năchilă Cătălin – laborator Access – 127 –

Aplicaţia 4.3: Fie baza de date de la aplicaţia 4.1. Să se creeze un formular cu subformular în modul Form Wizard pentru tabelele agenţi şi imobil(figura 4.16.)

Fig. 4.16.

1. se acţionează butonul New din fereastra bazei de date pentru activarea asistentului New Form;

2. se optează pentru varianta Form Wizard;

3. se selectează câmpurile din tabela agenţi sau apoi din tabela imobil;

4. pentru tabelul agenţi se selectează opţiunea form with subform(s);

5. se alege un model de prezentare pentru subformular;

6. se stabileşte imaginea de fundal pentru formular (Stone, Standard etc.);

7. se stabileşte denumirea formularului şi a subformularului.

Aplicaţia 4.4: Fie baza de date de la aplicaţia 4.1. Să se creeze un formular cu subformular în modul Design View pentru tabelele proprietari şi imobil (figura 4.17.)

1. se acţionează butonul New din fereastra bazei de date pentru activarea asistentului New Form;

2. se optează pentru varianta Design View;

3. se selectează tabela proprietari în rubrica derulantă solicitată; prin click pe butonul Ok,

4. se aduc pe formă toate câmpurile tabelei proprietari;

5. verificăm dacă este activ Control Wizards din Toolbox;

6. din Toolbox (View –> Toolbox dacă nu este activ) selectăm controlul Subform/Subreport;

4. Formulare

Năchilă Cătălin – laborator Access – 128 –

7. desenăm dreptunghiul pe formă;

8. din fereastra nou deschisă alegem Use existing Tables and Queries;

9. din tabelul imobil alegem toate câmpurile sale;

10. din fereastra nou deschisă alegem Choose from a list;

11. se stabileşte denumirea subformularului.

Fig. 4.17.

Aplicaţia 4.5: Se cere obţinerea unui formular care să afişeze (pe coloane) preţurile solicitate şi preţurile de vânzare ale imobilelor din tabela imobile. În finalul formularului se cere obţinerea sumelor preţurilor solicitate, respectiv a preţurilor de vânzare (figura 4.18.)

Prin modul în care este solicitată imaginea formularului (date dispuse pe diverse coloane), proiectantul va fi orientat spre a opta pentru modul Tabular de execuţie. Sistemul Tabular nu este recomandat, în principiu, pentru că, în cazul multor coloane, afişarea datelor este imposibila pe un ecran. Dar, în cazul exerciţiului propus, existând numai trei coloane, modul Tabular devine convenabil.

4. Formulare

Năchilă Cătălin – laborator Access – 129 –

Fig. 4.18.

Operaţiile de efectuat sunt următoarele:

– în fereastra New Form va fi accesată opţiunea "Autoform: Tabular" şi va fi selectată tabela imobile (ca sursă de date).

– ca urmare, sistemul va afişa formularul final, conţinând coloane care cuprind toate câmpurile (toţi indicatorii) din tabela-sursă. Se va putea remarca faptul că, din cauza lipsei unui spaţiu disponibil pe lăţimea ecranului, datele sunt trunchiate, cele numerice (de lungime mai mare) sunt afişate în formă exponenţială etc.

– trecem în modul Design;

– se şterg toate câmpurile inutile, cu excepţia câmpurilor solicitate prin exerciţiu;

– se redimensionează coloanele respectiv titlurile acestora;

4. Formulare

Năchilă Cătălin – laborator Access – 130 –

– se generează un spaţiu necesar pentru secţiunea Form Footer (prin „tragerea” mouse-ului pe limita inferioară a titlului acestei secţiuni).

– se copiază textbox-ul pret_solicitat în se partea Form Footer;

– se copiază textbox-ul pret_vânzare în se partea Form Footer;

– completăm cele două textbox-uri cu:

= sum ([pret_solicitat])

= sum ([pret_vânzare])

– se accesează pictograma Label din Toolbox;

– se fixează (prin clic cu mouse-ul) locul de debut al etichetei în secţiunea Form Footer;

– se scrie textul dorit (de exemplu: Total Preturi).

5. Rapoarte

Năchilă Cătălin – laborator Access – 131 –

5. Microsoft Access – Rapoarte (Reports)

5.1. Generalităţi

Tratând teoretic diferenţele dintre formulare şi rapoarte, se poate afirma că ambele au acelaşi conţinut şi pot servi aceloraşi obiective de informare.

Practic, formularele sunt destinate proceselor interactive, întrebare – răspuns, între utilizator şi afişările pe ecran ale sistemului, iar rapoartele sunt, în principal, destinate informărilor scrise (la imprimantă).

Cu Microsoft Access se pot realiza obiecte de tip raport utilizând opţiunea Reports din meniul Objects şi butonul de comandă New sau alegând comanda Report din meniul Insert.

Modalităţile de creare propuse de Microsoft Access (figura 5.1.):

– Design View: realizarea rapoartelor de către utilizator, în funcţie de viziunea proprie a acestuia (utilizatorul precizează controalele din raport);

– Report Wizard: crearea rapoartelor este asistată de Wizard;

– AutoReport: Columnar: generarea automată a rapoartelor, cu particularitatea că datele dintr-o înregistrare sunt prezentate pe o singură coloană;

– AutoReport: Tabular: generarea automată a rapoartelor cu datele organizate sub forma tabelară;

– Chart Wizard: crearea de rapoarte cu grafice;

– Label Wizard: după cum indică şi numele opţiunii de lucru, se creează, asistat de Wizard, rapoarte de dimensiunile cerute pentru imprimarea lor pe o etichetă (utile în corespondenţă,ori în etichetarea produselor comercializate etc.).

Se poate observa faptul că în partea stângă a ferestrei New Report, după selectarea unei posibilităţi de lucru, apar explicaţii referitoare la opţiunea selectată. De asemenea, din lista derulantă cu eticheta Choose the table or query where the object's data comes from: se poate alege o tabelă ori o interogare constituind sursa de date a raportului.

În structura unui raport se pot identifica elemente comune cu formularele, tratate în capitolul 4, cum ar fi:

– secţiunile unui raport: Report Header/Footer, Page Header/Footer, Detail, etc.;

– controale de tip casete text, etichete, butoane de comandă, etc. şi proprietăţile acestora (cu excepţia celor eveniment (Event), care nu sunt accesibile controalelor din rapoarte).

Fig. 5.1.

5. Rapoarte

Năchilă Cătălin – laborator Access – 132 –

Baza de date care va fi utilizată în cadrul acestui capitol are tabelele din figura 5.2. şi interogarea din figura 5.3..

Fig. 5.2.

5. Rapoarte

Năchilă Cătălin – laborator Access – 133 –

Fig. 5.3.

5.2. Generarea rapoartelor cu instrumentul Wizard

Etapele definirii asistate a structurii unui raport sunt următoarele:

1. Selectarea din fereastra Database, lista Objects, butonul Reports, apoi New, după care, alegerea variantei Report Wizard din fereastra New Report (figura 5.1.)

2. Alegerea, din lista derulantă Choose the table or query where the object's data comes from:, a numelui tabelei, ori interogării, stabilite drept sursă de date a raportului (în exemplul de mai jos, interogarea operaţii) şi activarea butonului OK.

3. În prima fereastră propusă de Wizard (figura 5.4.) se pot alege câmpurile ce vor alcătui structura raportului, cu ajutorul butoanelor >, >>, <, << sau cu dublu clic pe numele câmpului. Aceste câmpuri pot fi selectate din mai multe tabele ori interogări (dacă la pasul 2 nu s-a stabilit deja o sursă de date a raportului) utilizând lista derulantă Tables/Queries.

Lista simplă Avalable Fields conţine toate câmpurile create în interogarea operaţii, aleasă drept sursă de date, iar cea intitulată Selected Fields afişează câmpurile selectate, dintre cele disponibile, pentru a defini structura raportului.

Se avansează la etapa următoare cu ajutorul butonului Next.

4. Precizarea modului de aşezare a datelor în raport se face cu fereastra din figura 5.5.. Se precizează criteriile de grupare a datelor în raport. Gruparea datelor înseamnă căutarea tuturor înregistrărilor (rândurilor) din sursa de date care conţin aceeaşi valoare pentru câmpul stabilit drept criteriu de grupare şi afişarea lor, consecutiv, în raport (figura 5.6.).

5. Rapoarte

Năchilă Cătălin – laborator Access – 134 –

Fig. 5.4.

Fig. 5.5.

5. Rapoarte

Năchilă Cătălin – laborator Access – 135 –

În exemplul prezentat, datele vor fi grupate după numele agentului, tip_imobil, iar în cadrul acestuia, după dată. Selectarea/deselectarea unui criteriu de grupare se realizează cu dublu clic pe acesta sau cu clic pe câmpul ales drept criteriu şi apoi activarea butoanelor >, <.

Într-o primă fază, Wizard propune automat un criteriu, avansându-1 în lista din dreapta ferestrei din figura 5.6. şi colorându-l, de regulă, albastru. Dacă această soluţie nu se află printre cele dorite de utilizator, cu dublu clic, sau cu clic pe câmpul respectiv şi cu butonul <, se poate renunţa la acel criteriu. Cu săgeţile Priority se stabileşte ordinea operaţiunilor de grupare. Pentru precizarea faptului că gruparea se face după luna din fiecare data de stocare, s-a deschis fereastra Grouping Intervals, în care, după cum se observă, în coloana Grouping intervals: pe linia data_stocarii s-a precizat Month.

Dacă s-ar fi stabilit drept criteriu de grupare un câmp de tip text, atunci în coloana Grouping intervals, am fi putut preciza afişarea în raport a valorii câmpului în întregime, sau numai a primei litere, sau numai a primelor două litere, până la primele cinci litere din valoarea stocată în câmp. Dacă criteriul ar fi fost un câmp numeric, atunci Wizard propune afişarea unor intervale de mărime 10, 50, 100, 500, 1000, 5000 şi 10000.

Fig. 5.6.

5. Rapoarte

Năchilă Cătălin – laborator Access – 136 –

5. În fereastra din figura 5.7. se stabilesc câmpurile în funcţie de valorile cărora datele din raport vor fi ordonate (sortate), precum şi cele pentru care se vor executa operaţii de sinteză (cu butonul Summary Options) cum sunt cele prezentate în figura 5.8. (însumare, medie aritmetică, valorile minime şi maxime din domeniul câmpului precizat).

Fig. 5.7.

Fig. 5.8.

5. Rapoarte

Năchilă Cătălin – laborator Access – 137 –

6. În etapa următoare, instrumentul Wizard propune mai multe feluri de prezentare a datelor în raport (figura 5.9.), precum şi dispunerea (Orientation) verticală ori orizontală a structurii raportului pe coala de imprimare.

Fig. 5.9.

În această etapă, instrumentul Wizard propune mai multe feluri de prezentare a datelor în raport (figura 5.9.), precum şi dispunerea (Orientation) verticală ori orizontală a structurii raportului pe coala de imprimare.

7. Următorul pas constă în alegerea stilului în care este afişată fiecare categorie de informaţie.

8. Ultima etapă presupune stabilirea titlului raportului, ca în figura 5.10. Dacă utilizatorul doreşte să facă unele mici modificări privind structura raportului astfel creat, înainte de a activa butonul Finish, se selectează opţiunea Modify the report 's design.

Fig. 5.10.

5. Rapoarte

Năchilă Cătălin – laborator Access – 138 –

Pentru afişarea unor informaţii de ajutor în timpul lucrului cu raportul, se bifează caseta de validare Display Help on working with the report?. După activarea butonului Finish, raportul se salvează sub numele dat de titlul ales mai devreme.

Vizualizarea situaţiilor pe ecran se poate face în modul Preview (utilizarea, rularea raportului), ori în mod Design (proiectare, definire a structurii sale), încadrarea în marginile paginii imprimate poate fi verificată cu Layout Preview

Toate aceste trei posibilităţi se regăsesc şi în meniul View al Microsoft Access.

Tipărirea la imprimantă se realizează cu meniul File, opţiunea Print. Dacă obiectul de tip raport este închis, acesta se selectează în fereastra Database, apoi se alege Print din meniul File.

După cum se poate remarca, o serie de aspecte ale raportului mai pot fi îmbunătăţite. Pentru aceasta, se va deschide raportul în mod Design, pentru ca utilizatorul să poată opera schimbări în structura acestuia.

5.3. Generarea rapoartelor folosind opţiunea Design View

Etapele definirii asistate a structurii unui raport sunt următoarele:

1. Selectarea din fereastra Database, lista Objects, butonul Reports, apoi New, după care alegerea variantei Design View din fereastra New Report.

2. Alegerea, din lista derulantă Choose the table or query where the object's data comes from: (figura 5.1.) a numelui tabelei, ori interogării, stabilite drept sursă de date a raportului (în exemplul dat, interogarea operaţii) şi activarea butonului OK.

Dacă, din greşeală nu s-a selectat nimic drept sursă de date a raportului, atunci se poate utiliza fereastra de proprietăţi ale acestuia. Se deschide cu clic dreapta pe bara de titlu a ferestrei de definire a raportului, ori pe suprafaţa gri a acesteia, ori pe cele două rigle (orizontală şi verticală, în afara porţiunilor care permit selecţii ale elementelor din raport), ori pe butonul general al raportului, din colţul din stânga sus al ferestrei de definire, ori din meniul View, opţiunea Properties. În fereastra de proprietăţi ale raportului (figura 5.11.), se alege tab-ul Data, iar din lista derulantă cu eticheta Record Source, se selectează interogarea operaţii.

Fig. 5.11.

5. Rapoarte

Năchilă Cătălin – laborator Access – 139 –

3. În momentul deschiderii, fereastra de definire a raportului prezintă doar trei secţiuni (asemănătoare celor din formulare): Page Header/Footer şi Detail. Pentru crearea unui titlu al raportului (antet) şi pentru definirea sfârşitului de raport (de regulă, linii de total general), se utilizează meniul View, opţiunea Page Header/Footer, sau aceeaşi opţiune din meniul contextual (click buton dreapta mouse pe suprafaţa albă de lucru) al raportului. Dacă una dintre secţiuni se consideră inutilă, atunci se reduce la zero lărgimea acesteia.

Alăturat se observă renunţarea la secţiunea Page Footer, cu ajutorul mouse-ului, care are cursorul sub forma unei săgeţi bidirecţionale în cruce. Linia neagră orizontală indică distanţa de la Report Footer cu care s-a micşorat secţiunea Page Footer.

4. Gruparea datelor şi/sau sortarea lor se realizează fie cu meniul View, opţiunea Sorting and Grouping fie cu aceeaşi opţiune din meniul contextual. Se lucrează cu fereastra Sorting and Grouping (figura 5.12.).

Fig. 5.12.

Pentru expresiile sau câmpurile din sursa de date stabilite drept criterii de grupare (şi, eventual, sortare) se selectează Yes în rubricile corespunzătoare antetului Group Header) şi/sau subsolului de grup Group Footer, din lista de proprietăţi ale fiecărui grup de date Group Properties.

În rubrica Sort Order se precizează dacă sortarea datelor se va face în ordinea crescătoare (Ascending) sau descrescătoare (Descending) a valorilor criteriului de grupare (sortare). Proprietăţile unui criteriu de grupare/sortare sunt accesibile numai după poziţionarea cursorului mouse-ului pe denumirea câmpului în cauză.

În această rubrică, s-a optat pentru extragerea lunii din data stocării materialelor şi constituirea ei drept al treilea criteriu de grupare si de sortare în ordine invers cronologică (Descending). Dacă se doreşte numai sortare în funcţie de valorile unui anumit câmp, nu şi grupare, atunci în rubricile Group Header, Group Footer se lasă valoarea No.

5. În secţiunea Detail se aduc câmpurile care se vor afişa în raport pentru a caracteriza fiecare intrare de material. Lista de câmpuri, dacă n-a fost afişată automat, se poate vizualiza activând fie meniul View, opţiunea Field List. Expresiile de calcul se definesc cu ajutorul unor casete text, în care se vor scrie formulele, precedate de semnul „ = ”.

5. Rapoarte

Năchilă Cătălin – laborator Access – 140 –

Se poate observa că pentru a extrage luna din cadrul datei de stocare a unui material şi a o afişa scriindu-i denumirea cu caractere alfabetice, urmată de an, s-a scris formula

<<=Format$([Data stocării],"mmmm yyyy",0,0)>>

Pentru definirea afişarea numărului curent al fiecărui material (obţinut prin incrementare), s-a creat o casetă text cu proprietăţile din figura 5.13.

Fig. 5.13.

În caseta Control Source se trece „=1”, iar pentru ca numărătoarea să se desfăşoare unitar pentru toate materialele intrate în stoc, indiferent de depozit ori lună, se alege Over All ("peste tot") în caseta Running Sum. Pentru calculul valorii s-a scris într-o casetă text formula:

=[cantitate_stocata]*[Pret-unitar]

iar pentru a însuma cantităţi şi valori şi a afişa subtotaluri pe lună, pe material şi pe depozit (numai valoric) în Group Footer-urile corespunzătoare, s-a utilizat funcţia Sum() (ca şi în proiectarea formularelor), aplicată cantităţii şi expresiei valorii. La fel se procedează pentru a calcula şi afişa, la final de raport (Report Footer), un total general valoric, precedat de eticheta „Total general intrări.”.

Fig. 5.14.

5. Rapoarte

Năchilă Cătălin – laborator Access – 141 –

6. Pentru evidenţierea anumitor date (afişare cu caractere şi chiar culori diferite a informaţiilor în raport, în funcţie de îndeplinirea unor condiţii) se utilizează opţiunea Conditional Formating din meniul Format al Microsoft Access. Aceasta este disponibilă numai după selectarea unui control legat la o sursă de date (o caseta text (Text Box), de regulă). În exemplul dat, se vor afişa diferit rândurile de total pe lună cu valori între 500 şi 800 şi între 200 şi 600 de lei. Se selectează caseta text de subtotal pe lună: =[cantitate_stocata]*[Pret-unitar]

apoi se alege opţiunea Conditional Formating din meniul Format şi se stabilesc cele două condiţii (utilizând butonul Add pentru adăugarea celei de-a doua condiţii de formatare). Fereastra Conditional Formating este prezentată în figura 5.14.

Pentru renunţarea la o condiţie se activează butonul Delete. Se pot stabili maxim trei condiţii (după cea de-a treia, butonul Add devine inactiv).

5.4. Crearea de rapoarte cu subrapoarte

Dacă se doreşte completarea informaţiilor dintr-un obiect de tip raport cu altele, conţinute de diferite obiecte de tip raport, se creează aşa-numitele subrapoarte. Ele se pot insera atât în secţiunea de detaliu, cât şi în celelalte secţiuni (inclusiv în cele de grup).

Ca şi în operaţiunea de creare a subformularelor, se utilizează butonul Subform/Subreport din caseta de instrumente (controale) Toolbox, cu sau fără activarea Wizard-ului . De asemenea, se poate aduce subraportul pe suprafaţa de lucru, într-una dintre secţiunile raportului principal, din fereastra Database, utilizând tehnica drag-and-drop.

În cazul în care operaţiunea de creare de subraport se desfăşoară fără Wizard, utilizatorul trebuie să verifice dacă proprietăţile subraportului: Link Child Fields şi Link Master Fields au primit numele aceluiaşi câmp, cel care realizează legătura dintre raportul principal şi subraport.

5.5. Proprietăţi ale obiectelor de tip raport şi ale secţiunilor lor

Proprietăţi ale rapoartelor

Se pot deosebi patru categorii de proprietăţi ale rapoartelor:

1. Format: în cadrul acesteia:

– Caption este utilizată pentru stabilirea unui titlu afişat pe bara albastră de titlu, în modul Print Preview de vizualizare a raportului;

– Page Header şi Page Footer sunt utilizate pentru specificarea paginilor pe care se vor afişa antetul, respectiv subsolul de pagină (variante: toate paginile; toate, mai puţin prima; toate, mai puţin ultima; toate, mai puţin prima şi ultima);

– Picture permite specificarea fişierului afişat pe fundalul raportului;

– Picture Pages precizează paginile pe care se va afişa fundalul ales.

5. Rapoarte

Năchilă Cătălin – laborator Access – 142 –

2. Data:

– Record Source precizează o tabelă, o interogare, ori o frază SQL care va fi sursa de date a raportului;

– Filter se foloseşte pentru stabilirea unei condiţii-filtru pe care trebuie s-o îndeplinească datele ce vor fi afişate în raport;

– Filter on permite selectarea a două valori:

– Yes, ceea ce presupune că criteriul specificat în Filter devine activ (se aplică datelor) şi No, care anulează acţiunea filtrului;

– Order By, care precizează criterii de sortare, în ordinea gradului de generalitate, cu virgulă între ele;

– Order By On poate cuprinde valorile Yes sau No, activând sau dezactivând proprietatea Order By.

De exemplu, într-un raport se vor afişa numai cei din localitatea indicată de valoarea parametrului oras (figura 5.15.).

Fig. 5.15.

3. Event – proprietăţi de tip eveniment:

– On Open serveşte, în principal, la definirea de filtre;

– On Close poate realiza ştergerea fişierelor temporare create în timpul execuţiei raportului. în general, acestora le sunt ataşate funcţii ori proceduri.

4. Other – alte proprietăţi.

– Record Looks asigură blocarea informaţiilor dintr-un raport în timpul afişării acestuia; – Date Grouping permite utilizarea tipului implicit de dată sau a tipului setat de utilizator;

– Fast Laser Printing, cu valoarea Yes, realizează o tipărire rapidă a unui raport, etc.

Toate categoriile de proprietăţi se regăsesc în rubrica (tab-ul) AU.

5. Rapoarte

Năchilă Cătălin – laborator Access – 143 –

Proprietăţi ale secţiunilor rapoartelor

Acestea nu sunt foarte numeroase. Categoria Data lipseşte. Ele servesc la:

– atribuirea unui nume fiecărei secţiuni (Name),

– la efectuarea saltului la pagină nouă (Force New Page),

– la ascunderea/afişarea anumitor date (Visible - Yes/No),

– la pregătirea secţiunilor pentru afişare (On Format ori On Print),

– la reformatarea secţiunilor (On Retreat),

– etc.