Documente Academic
Documente Profesional
Documente Cultură
Suport de Curs
Suport de Curs
Suport de Curs
1
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Aceste puncte slabe ale fişierelor clasice au creat premisele pentru apariţia a ceva nou
în sfera informaticii, şi anume bazele de date. Naşterea lor a avut loc în anii 60, odată
cu lansarea programului Appolo, în 1964. Punctul de pornire a fost reprezentat de
sistemul de fişiere înlănţuite dezvoltat de IBM, dar care a fost înlocuit în foarte scurt
timp. Prima apariţie a termenului de “bază de date” a fost în 1969, când CODASYL
a realizat un raport tehnic la o conferinţă pe tema limbajelor de programare destinate
gestiunii datelor. Modelul propus era unul care promova independenţa datelor faţă de
programare. Bazele de date trebuie să conţină un fişier care să descrie întreaga
structură a acestora.
O bază de date reprezintă o colecţie de date organizate într-o schemă definită de un
model conceptual; sau o colecţie de date intercorelate, împreună cu descrierea şi
relaţiile dintre ele.
Bazele de date sunt potrivite mediului economic şi de afaceri deoarece acestea implică
un volum mare de informaţii ce trebuie stocate sau regăsite, cărora li se aplică un set
de operaţii de prelucrare relativ simple, spre deosebire de domeniul ingineriei unde
accentul se pune mai degrabă pe complexitatea şi volumul de calcul, decât pe stocare
şi regăsire. Mai mult decât atât, independenţa procesării faţă de memorarea datelor
este mult mai bine evidenţiată în cazul sistemelor client-server şi/sau multi-tier 1 ale
zilelor noastre.
Toate informaţiile stocate la un moment dat într-o bază de date la un moment
dat reprezintă conţinutul acelei baze de date. Structura datelor împreună cu relaţiile
dintre entităţi, precum şi constrângerile de integritate formează schema bazei de date.
Conţinutul poate diferi de la un moment de timp la altul datorită operaţiunilor de
actualizare efectuate asupra bazei de date, în timp ce schema rămâne în general
invariabilă pe toată durata de existenţă a bazei de date. Aceste modificări se realizează
1
Reprezintă un model arhitectural întâlnit în ingineria software potrivit căruia prezentarea, procesarea şi
stocarea datelor sunt separate la nivel logic
2
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
2
Data Manipulation Language
3
Data Definition Language
4
Query Language
3
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Nivelul Schema
conceptual conceptuală
Nivelul extern este cel mai apropiat de utilizatorul final. Datorită acestui
aspect i se mai spune şi nivelul logic al utilizatorului şi indică modul în care datele
5
American National Standards Institute
6
Standards Planning And Requirements Committee
7
Există o serie de alte arhitecturi de referinţă – precum cele întâlnite la sistemele distribuite sau federative –
care sunt derivate însă din cea prezentată
4
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
8
Universal Product Code este un element de terminologie folosit la codurile de bare. Este larg răspândit în
USA şi Canada pentru urmărirea produselor produse sau comercializate [Wikie]
9
European Article Number reprezintă un standard pentru codurile de bare, fiind un supraset al originalului
sistem UPC din 12 cifre. Prin prefixarea cu o cifră suplimentară, ar putea fi coduri suficiente pentru reprezentări
în toate ţările [Wikie]
10
În limba engleză views, adică tabele virtuale (sau chiar materializate în unele accepţiuni mai recente)
5
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
6
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Modelul reţea
Modelul relaţional.
Ultima clasificare a fost considerată ca fiind de referinţă şi în stabilirea generaţiilor
bazelor de date [Miranda&Busta 1986], [Gardarin 1986].
Generaţia a doua este reprezentată de bazele de date tip reţea, care simulează relaţia
mai multe-la-mai multe (many-to-many, n:n sau m:n) din lumea reală. A existat o
tentativă de standardizare din partea CODASYL11, acesta fiind motivul principal
pentru care aceste sisteme mai poartă numele de sisteme CODASYL. În România au
fost cunoscute şi exploatate sistemele Socrate şi DBMS-11, drept SGBD-uri reţea.
În zilele noastre, cel mai răspândit model de bază de date este modelul relaţional. A
fost propus de matematicianul E.F. Codd, de la laboratoarele IBM, fiind dezvoltat la
începutul anilor 70. Scopul acestuia era să simplifice modalitatea de acces şi
vizualizare a utilizatorilor, dar şi să creeze premisele necesare pentru viitoarea posibilă
distribuire fizică a bazei de date. Bazele de date relaţionale fac parte din generaţia a
treia de baze de date şi surprind relaţii de tipul mai multe-la-una (many-to-one
n:1). Reprezentanţi ai acestei generaţii sunt: SGBD-uri ca: xBase, FoxPro, Oracle,
Access etc.
În ultimii 15 ani şi-au făcut apariţia aşa-numitele sisteme de baze de date orientate
obiect sau obiect-relaţionale, fără a le clasifica într-o generaţie distinctă, superioară
sistemelor relaţionale. Unii autori le consideră pe acestea ca fiind de generaţia a treia,
iar alţii le consideră sisteme postrelaţionale.
7
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Pentru a face o distincţie clară între cele două noţiuni, vom da câteva exemple.
Astfel, PRODUS poate fi un tip de entitate şi reprezintă toate produsele realizate în
acea fabrică. Aceste produse au caracteristici intensionale generale (atribute sau
proprietăţi) precum Denumire, Lungime, UnitateMasura, Greutate, Diametru.
Există două tipuri de entităţi, şi anume cele puternice, dominante, fundamentale, sau
părinte, precum şi slabe, subordonate, derivate, sau fiu. Ca exemplu, PRODUS sau
CLIENT sunt tipuri de entitate-părinte, în timp ce COMANDA, TRANZACTIA sunt
de tip fiu. COMANDA, TRANZACTIA sunt dependente de PRODUS şi CLIENT şi
nu pot exista fără acestea. Vom întâlni similarităţi ale acestor concepte atunci când
vom discuta de modelul relaţional.
9
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
numai. Systemul R a fost primul SGBDR12 şi a fost elaborat în laboratorul IBM din
San Jose. Succesul acestui proiect a avut un impact remarcabil asupra evoluţiei
fenomenului IT&C, din cel puţin două motive:
adevărată explozie în ceea ce priveşte crearea unui limbaj neprocedural foarte
puternic – SQL – care a devenit în scurt timp standard pentru sist. relaţionale;
Dezvoltarea intensivă şi extensivă a o serie de aplicaţii software comerciale,
care să fie destinate procesării bazelor de date (începând cu DB2, Oracle etc).
Sistem de Gestiunea Bazelor de Date Relaţionale (în limba engleză RDBMS – Relational DataBase
12
Management System)
10
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
ale unei astfel de colecţii nu este aleatoriu de la un tuplu la altul, ci este exact aritatea,
adică numărul de atribute ale relaţiei.
O definiţie mai academică a tuplului este cea întâlnită în [Date 2005]. Domeniul este
o tripletă de forma (Ai, Di, vi), unde Ai este numele atributului i, care este declarat pe
un domeniu (tip) Di şi are o valoare vi la un moment de timp dat.
Numărul total de tuple dintr-o relaţie reprezintă cardinalitatea. Tuplele sunt de fapt
entităţi sau instanţe ale unui tip de entitate. Toate tuplele formează extensia, corpul
sau conţinutul relaţiei.
Setul de atribute al unei relaţii care permite identificarea unui tuplu (entitate)
reprezintă cheia relaţiei. Există mai multe tipuri de chei, noţiuni ce vor fi discutate
ulterior.
Pentru o relaţie R, având atributele A1, A2, …, An definite pe domeniile D1, D2, …, Dn,
putem utiliza fie notaţia R(A1, A2, …, An), fie R(A1:D1, A2:D2, …, An:Dn).
Revenind la exemplul nostru, putem avea
PRODUSE(Cod13, Denumire, Lungime, Unitate masura, Greutate, Diametru),
ţinând cont de convenţia menţionată anterior.
13
Stilul subliniat indică faptul că atributul Cod este cheia relaţiei
11
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Cardinalitate = 3
Relaţie Atribut Cheie Ordin = 6
Intensie
PRODUSE
Cod Denumire Lungime Unitate Greutate Diametru
Masura
C001 CUI 5 cm 2 3
Extensie
S001 SURUB 3 inch 6 8
S002 SURUB 5 cm 6 3
Tuplu
Figura 1. 2 – Relaţia PRODUSE
În cazul în care există mai multe astfel de combinaţii în aceeaşi relaţie, acestea se
numesc chei candidate. Un atribut, sau un set K de atribute ale unei relaţii R, este o
cheie candidată, dacă şi numai dacă acesta îndeplineşte următoarele proprietăţi
[Gardarin 1986]:
Identificarea unică: setul K e capabil să identifice în mod unic fiecare tuplu
din R;
Ireductibilitatea: orice subset din K nu va fi capabil să asigure identificarea
unică;
Valorile NULL: niciun atribut din K nu poate lua valoarea NULL (valoare
neatribuită).
12
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Atunci când cheia este compusă doar dintr-un singur atribut, aceasta este o cheie
candidată simplă, altfel avem de-a face cu una compozită.
Există un tip special de cheie candidată. Cheia primară este acea cheie candidată
selectată să asigure identificarea unică la un moment dat. Restul cheilor candidate se
numesc chei alternative şi pot suplini oricând rolul cheii primare.
O bază de date relaţională conţine una sau mai multe relaţii. Tipurile de chei amintite
anterior sunt capabile să gestioneze doar o singură relaţie, cea din care fac parte. Dar,
cum într-o bază de date avem mai multe relaţii, iar prin definiţia bazei de date acestea
nu trebuie să fie izolate, ceea ce înseamnă că trebuie să existe un mecanism de
stabilire a relaţiilor dintre relaţii.
Stabilirea acestor relaţii se face pe baza conceptului de cheie străină sau externă. O
cheie străină este o referinţă la o cheie din altă relaţie, ceea ce înseamnă că tuplul
referit trebuie să aibă pentru unul din atributele sale, o valoare a cheii din tuplul de
referinţă. [Wikie] Având două relaţii R1 şi R2, o cheie străină este un atribut din R2
dacă şi numai dacă valoarea sa este identică cu una din valorile cheii candidate
(primare) corespondente din R1, sau să fie NULL. R1 este denumită relaţie-părinte,
în timp ce R2 este relaţie-fiu în corespondenţă cu acest atribut. Uneori se mai
întâlnesc termenii de principală sau secundară, sau altele întâlnite la tipurile de
entităţi.
Observaţie: Uneori, relaţiile R1 şi R2 pot fi una şi aceeaşi relaţie. Deci, atunci când
se discută de chei străine nu e absolut necesar să avem două relaţii distincte, însă este
cel mai frecvent caz. Celălalt caz se întâlneşte în general în relaţii ierarhice, precum în
aceeaşi relaţie am avea atât angajaţii, cât şi superiorii lor; imobile: blocuri, scări
diferite, etaje, apartamente, camere; zone: localităţi, judeţe, regiuni, ţări, continente
etc. În acest material nu vom insista pe aceste exemple particulare.
13
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
VANZARI
Cod Data Cantitate
C001 25/11/2008 100000
S002 25/11/2008 100000
S002 30/09/2009 50000
S002 21/06/2010 100000
Figura 1. 3 – Relaţia VANZARI
relaţională, vom spune că un tuplu din relaţia SEFI (DEPARTMENTE) este asociat cu
un tuplu şi cel mult unul din relaţia DEPARTMENTE (SEFI);
Relaţia una-la-mai multe (1:n). Fiecare entitate dintr-un set S1 este conectată
la una sau mai multe entităţi din setul S2 şi fiecare entitate din setul S2 este conectată
la cel mult o entitate din setul S 1. În exemplul nostru cu PRODUS şi VANZARE,
fiecare entitate din PRODUS trebuie/poate să (nu) fie vândut niciodată, o dată, sau de
mai multe ori (în funcţie de numărul de apariţii al unui anumit cod din VANZARE),
dar orice entitate din VANZARE trebuie/poate să fie asociată cu una sau mai multe
entităţi din PRODUS. Uneori literatura menţionează ca un tip separat de relaţie, şi
anume relaţia mai multe-la-una (n:1);
Relaţia mai multe-la-mai multe (n:n sau m:n). Mai multe entităţi din S1 sunt
în relaţie cu una sau mai multe entităţi din S 2. Spre exemplu, fiecare produs sau
serviciu trebuie/poate să (nu) fie valorificat niciodată, o dată, sau de mai mulţi
furnizori şi fiecare furnizor trebuie/poate să (nu) comercializeze niciunul, unul sau mai
multe produse sau servicii. Acest tip de relaţie nu este suportat în mod direct de către
modelul relaţional, dar poate fi simulată prin adăugarea unei entităţi intermediare (S 3)
între cele două. În aceste circumstanţe vom avea o relaţie de tip 1:n între S1 şi S3 şi
una n:1 între S3 şi S2.
Cele mai frecvente tipuri de relaţii ce pot fi întâlnite în bazele de date relaţionale sunt
1:n şi n:1.
15
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
PRODUSE
Rec Cod Denumire Lungime Unitate Greutate Diametru
# masura
1 C001 CUI 5 cm 2 3
2 S001 SURUB 3 inch 6 8
3 S002 SURUB 5 cm 6 3
VANZARI
Rec # Cod Date Cantitate
1 C001 25/11/2008 100000
2 S002 25/11/2008 100000
3 S002 30/09/2009 50000
4 S002 21/06/2010 100000
Figura 1. 4 – Tabelele PRODUSE şi VANZARI
REGULI LA INSERARE
Tabela părinte. Se poate adăuga orice tuplu, dar cu evitarea duplicatelor şi a valorilor
NULL pentru cheia candidată. În caz contrar se încalcă integritatea entităţii, NU cea
referenţială. Exemplu: În PRODUSE, un nou tuplu poate avea codul C002, S003 etc.,
dar nu C001, S001 sau S002, şi nici NULL.
Tabela fiu.
Regula de restricţionare spune că nu putem insera un tuplu care să aibă o
valoare a cheii străine pe care să n-o regăsim printre valorile cheii candidate, dar poate
fi în mod excepţional NULL. Exemplu: În VANZARI, se poate introduce orice
înregistrare având C001, S001, S002, sau NULL în Cod, dar nimic altceva.
Introducând spre exemplu C002, ar însemna că intenţionăm să vindem un produs
inexistent. Setând regula de restricţie la inserare se vor stopa astfel de încercări.
REGULI LA ŞTERGERE/ACTUALIZARE
16
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Tabela părinte. Putem şterge/actualiza orice tuplu care nu este conectat la vreun tuplu
din tabela-fiu, dar cu respectarea integrităţii entităţii în cazul actualizărilor. Această
„conectare” se traduce în acest caz particular ca „efectuarea a cel puţin unei vânzări din
produsul respectiv”. Exemplu: În PRODUSE, doar înregistrarea #2 poate fi
ştearsă/actualizată, în raport cu atributul Cod – nu au existat vânzări pentru S001 – la
actualizare evitându-se însă ca noile valori să fie diferite de C001, S002, sau NULL. Orice
altă încercare de ştergere/actualizare va implica alegerea uneia din următoarele reguli:
Regula de restricţionare. Se va interzice orice încercare de ştergere/actualizare a
vreunui tuplu care este în legătură cu orice tuplu din tabela-fiu. Exemplu: Tuplele #1 şi #3
nu pot fi şterse/actualizate.
Regula de cascadare. Dacă un astfel de tuplu este şters/actualizat, atunci toate
tuplele din tabela-fiu cu care acesta relaţionează, vor fi la rândul lor actualizate/şterse.
Exemplu: În cazul în care se va şterge înregistrarea #3 din PRODUSE, atunci înregistrările
#2-#4 din tabela VANZARI vor fi şterse automat. Atunci când valoarea cheii candidate
dintr-un astfel de tuplu se actualizează, atunci toate valorile cheii străine corespondente din
tabela-fiu, vor fi şi ele automat actualizate. Exemplu: Dacă în PRODUSE modificăm codul
lui S002 în S005, atunci înregistrările #2-#4 din VANZARI vor avea şi ele S005, în loc de
S002, în cadrul atributului Cod; respectiv, dacă se actualizează codul C001 în C002 din
PRODUSE, automat se va actualiza şi înregistrarea #1 din VANZARI, codul devenind
C002.
Tabela fiu. În ceea ce priveşte ştergerea, nu există nicio restricţie, putând şterge orice tuplu.
Exemplu: În VANZARI se poate şterge înregistrarea #1, pentru care codul este N001; la fel
oricare din celelalte înregistrări. Se poate actualiza orice valoare a vreunei chei candidate,
însă noua valoare trebuie să fie, fie una din valorile cheii candidate corespondente din
tabela-părinte, fie NULL. Exemplu: În VANZARI, la înregistrarea #3, putem schimba codul
S002, fie în C001 sau S001, fie în NULL.
Unele SGBD-uri sunt mai restrictive în aplicarea şi menţinerea unor astfel de reguli,
altele mai puţin. Referitor la menţinerea integrităţii referenţiale, din punct de vedere teoretic,
există câteva strategii în cursul operaţiilor de actualizare. Acestea sunt surprinse în cele ce
urmează.
În teorie, constrângerile de integritate pot fi descrise grafic cu diagrame referenţiale
sau cu tabele referenţiale. Diagramele au relaţiile (tipurile de entităţi) drept noduri, în
timp ce arcele evidenţiază constrângerile. Şi tabelele furnizează o imagine destul de clară.
SGBD-urile oferă proiectantului atât comenzi, clauze sau opţiuni specifice, cât şi variate
moduri de vizualizare pentru reprezentarea şi descrierea acestor restricţii.
Capitolul 2 – Primii paşi în Access
18
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
DeschidereaDepartamentul
unei sesiuni dedelucru
Informatica Economică
Access se poate face prin mai multe modalităţi:
Pentru a părăsi cele două aplicaţii pot fi utilizate oricare din modurile obişnuite de a
ieşi din ferestrele aplicaţiilor Windows:
File → Exit sau Exit Access;
Opţiunea Close din meniul sistem sau de control al ferestrei aplicaţiei sau din bara de
sarcini (după activarea meniului contextual);
Utilizarea combinaţiei de taste Alt + F4 sau clic pe butonul Close ;
Din Task Manager (Ctrl + Alt + Del) → End Task5;
2.3. Termeni
În capitolul anterior au fost deja expuşi o serie de termeni din domeniul bazelor
de date. Aceştia sunt Baza de date şi Tabela. În acest material la termenii amintiţi
adăugăm şi:
Formular (Form) – un obiect ce are legătură cu baza de date, o fereastră ce
permite vizualizarea şi/ sau introducerea de date într-o bază de date. Poate conţine o
varietate de controale;
Interogare (Query) – un obiect ce are legătură cu baza de date ce facilitează
modul de regăsire a informaţiilor dintr-o bază de date în funcţie de anumite criterii.
Există de asemenea şi anumite interogări ce pot fi utilizate să se creeze, populeze sau
actualizeze baza de date;
Raport (Report) – reprezintă un tip de document care colectează informaţii
dintr-o bază de date şi le afişează utilizatorilor, într-o formă detaliată sau sintetică, şi
în general într-un format şi o aranjare în pagină atractive;
Pagină (Page) – este o structură specială destinată publicării bazei de date în
internet sau intranet;
3
Aceste căi de acces sunt interpretabile, deoarece în general utilizatorii în sistemul de operare Windows pot să
le personalizeze, de obicei la instalare
4
Aceeaşi personalizare se poate aplica şi în acest caz
5
În general, FoxPro crează anumite probleme atunci când se încearcă oprirea de această manieră. Mesajul
“Cannot Quit FoxPro” apare afişat pe ecran în aceste circumstanţe
19
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
CodDepartamentul de Informatica
(Code) – acestea sunt fişiere Economică
text conţinând secvenţe de programare VFP
sau SQL. Acestea sunt seturi de instrucţiuni care sunt executate când intervine un
eveniment pentru un obiect anume;
Modul (Module) – este suportul pentru introducerea unei sau mai multor
proceduri sau funcţii VBA în MS Office.
File. Începand cu Access 2007 avem atunci când nu este deschisă vreo bază de date,
nu avem nicio filă disponibilă (vezi Figura 2. 1). În schimb există categoriile de
şabloane de baze de date stocate local sau online şi panoul de sarcini cu ultimele
fişiere de baze de date deschise. Pe lângă acestea avem posibilitatea de creare a unei
noi baze de date, fără a se apela la vreun şablon; respectiv accesarea diferitelor
facilităţi (training, informaţii de ultimă oră, posibilităţi de suport tehnic şi actualizări
etc.) online oferite de Microsoft pentru acest tip de produs şi cele înrudite.
20
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
În cele ce urmează vom prezenta câteva din opţiunile cel mai frecvent utilizate.
Buton/Opţiune Funcţionalitate
New… Deschide o fereastră de dialog care ajută la crearea unui nou
(Ctrl+N) fişier
Open… Deschide o fereastră de dialog ce permite navigarea printre
(Ctrl+O) directoarele sistemului în vederea găsirii şi deschiderii unui fişier
existent
Save (Ctrl+S) Salvarea modificărilor în cadrul fişierului sau obiectului activ
sub un anumit nume, sau înlocuire versiunii precedente a
acestuia
Print … Imprimă conţinutul obiectului curent sau a unei selecţii din
(Ctrl+P) acesta
Print Preview Previzualizarea în aceiaşi parametri ca ai imprimării
21
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
Buton/Opţiune de Informatica Economică
Funcţionalitate
Cut (Ctrl+X) Şterge selecţia curentă şi o transferă în memoria-tampon
(clipboard). Se foloseşte atunci când se doreşte mutarea
informaţiei dintr-o zonă într-alta
Copy (Ctrl+C) Copiază obiectul selecţiei în clipboard
Paste (Ctrl+V) Preia din memoria-tampon ultima intrare – rezultată din una din
cele două acţiuni precedente – şi o plasează în locaţia curentă
Undo (Ctrl+Z) Anulează ultima acţiune
Redo (Ctrl+Y) Anihilează efectul ultimei comenzi Undo
Grup Funcţionalitate
Permite comutarea între diferite moduri
de vizualizare ale obiectului curent
6
Grupul Clipboard nu va fi prezentat deoarece butoanele acestuia apar la punctual a)
22
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
Suprafaţa Departamentul de Informatica
de lucru. Aceasta reprezintăEconomică
cea mai mare zonă din cadrul ecranului
principal, locul care oferă „suport” pentru afişarea rezultatelor generate de comenzi
sau programe, precum şi pentru ferestre, bare de instrumente, diverşi constructori (de
formulare, rapoarte etc.) şi alte obiecte.
Bara de stare. Este localizată în partea de jos a ferestrei principale şi oferă indicii în
legătură cu operaţiunile sau stările contextuale (ex. mesaje furnizate de sistem,
descrierea succintă a opţiunilor de meniu), precum şi stadiul de execuţie a unor acţiuni
care sunt executate (ex. în timpul rulării unor interogări).
Fereastra de comandă. Microsoft Access are pe lângă interfaţa grafică şi una mod
comandă interactivă destinată scrierii de cod VBA în cadrul macrocomenzilor de sine
stătătoare sau asociate controalelor din formulare sau alte tipuri de obiecte. Şi codul
SQL al interogărilor poate fi vizualizat sau editat direct – cu respectarea dialectului
SQL utilizat de Access – atunci când modul SQL View este activ.
23
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
(Shutter Bar Close Button), iar restaurarea făcându-se cu ajutorul (Shutter
Bar Open/Close Button).
24
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
opţiunii Close a meniului de Informatica
contextual. Economică
Fereastra principală se deschide odată cu prima
filă şi se închide odată cu ultimul obiect închis. Închiderea tuturor obiectelor se
realizează cu opţiunea Close All din acelaşi meniu contextual, prezentat şi în imaginea
din dreapta.
Observaţie: Unele ferestre, precum cea a editorului VBA se deschid separat,
nefiind incluse în fereastra principală.
2.4.2.5. Noi facilităţi privind filtrarea şi sortarea
Începand cu Access 2007, pentru efectuarea unor operaţiuni de sortare sau
filtrare e suficient să se acţioneze săgeata orientată în jos, din partea dreaptă a
antetului oricărui câmp . Astfel avem posibilitatea de a efectua diverse
facilităţi de filtrare automată, fără a fi nevoiţi să accesăm diverse opţiuni din anumite
file.
Faţă de variantele de filtrare/sortare din versiunile anterioare de Office, filtrarea
a fost îmbunătăţită. Prin simpla acţionare a săgeţii din dreapta numelui de câmp, se
poate efectua sortarea după acel câmp crescător sau descrescător, precum şi facilităţi
de filtrare disponibile doar în cazul filtrărilor avansate, sau care puteau fi realizate prin
instrumente mai puţin intuitive şi cunoştinţe mai aprofundate (ex. Advanced
Filter/Sort… sau Filter By Form… din Access 2003 sau necesitatea utilizării unor
funcţii). Se pot selecta mai multe valori individuale ale câmpului respectiv, dar există
şi o serie de filtre predefinite pentru fiecare tip de dată.
25
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
2.4.2.6. Adăugarea detotalizatoare
funcţiilor Informatica la
Economică
vizualizarea datelor
O altă noutate în ceea ce priveşte informaţiile pe care le poate obţine
utilizatorul, chiar în modul de introducere a datelor, este şi afişarea
unei linii de Total la final. Astfel, fără a fi nevoie să se efectueze
anumite calcule mai mult sau mai puţin greoaie sau să se apeleze la
interogări, o serie de funcţii statistice, precum: suma, media,
contorizarea, maximul, minimul, deviaţia standard sau varianţa, stau
acum la dispoziţia noastră. Trebuie doar adăugat rândul totalizator,
apoi pentru fiecare câmp în parte se poate alege funcţia dorită, sau
cea care se pretează cel mai bine aspectului semantic al câmpului. Se va selecta
funcţia dorită din lista prezentată în imaginea din stânga. Conţinutul listei poate fi
restrâns, de exemplu pentru tipuri de date precum cele text.
Observaţie: Dacă avem coloana de preţ unitar, iar produsele sunt similare,
atunci putem alege afişarea preţului mediu. La fel, putem alege preţul maxim sau
minim, dar aproape niciodată nu vom însuma preţurile. La fel, puţin probabil să
selectăm sumă pentru date calendaristice, precum data de naştere; pentru coduri
numerice de identificare, precum codul de bare, codurile poştale, numerele matricole,
sau codul numeric personal.
26
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
vizual, atunci de Informatica
când realizăm Economică
aplicaţii, meniuri, formulare, sau pentru elemente de
complexitate superioară sau personalizări.
Meniul File– creează, deschide, salvează, trimite mesaje electronice (dacă un client
implicit de mail este instalat şi configurat), tipăreşte şi închide aplicaţiile. Opţiunile pe
care acestea le conţin permit gestiunea tuturor fişierelor pe care cele două SGBD-uri
le suportă. Este facilitat şi import/exportul de fişiere către şi pentru alte SGBD-uri.
Pentru acest scop Access are submeniul Save As, restul instrumentelor de acest tip
găsindu-se într-o filă specializată acestui schimb, şi anume External Data, grupurile
Import şi Export. Compatibilitatea cu versiunile precedente MS Access se realizează
cu al doilea grup – Save the database in another format – al submeniului Save As.
Tot aici există câteva instrumente destinate întreţinerii şi depanării bazei de date
(opţiunile submeniului Manage).
Meniul View/ Fila Home → grupul Views – afişează/ascunde bare de instrumente sau
comută între modurile de lucru. In Access nu este nicio filă disponibilă. În Access,
grupul– a cărui opţiuni sunt prezentate în imagine – are ca scop comutarea între
diferite moduri de operare asupra obiectului curent. Gestionarea modurilor de lucru se
poate realiza şi cu ajutorul grupului de butoane din partea dreaptă a
barei de stare.
27
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentuldededate
creare de aplicaţie/bază Informatica Economică
executabilă (comanda Make ACCDE). Utilizatorul
poate efectua personalizări prin definirea unor meniuri sau bare de instrumente, dar şi
prin adăugarea de noi facilităţi, neincluse în instalarea standard (Add-ins).
Meniul Help/– oferă diverse tipuri de asistenţă: online sau offline, generală sau
contextuală, informaţii de contact pentru obţinere asistenţă tehnică, training-uri,
demonstraţii, grupuri de discuţii sau comunităţi tematice. În Access, diferite tipuri de
asistenţă sunt disponibile direct din pagina de introducere în aplicaţie, iar apoi se poate
folosi la nevoie butonul , aflat în colţul din dreapta sus al panglicii Microsoft
Office Fluent, sub butonul de închidere al aplicaţiei. Fereastra îmbunătăţită de
asistenţă din Access arată precum în Figura 2. 4. Setări suplimentare relative la
aplicabilitatea căutărilor se pot face din lista verticală a butonului .
Solicitarea asistenţei în cele două aplicaţii ce urmează a fi prezentate mai în detaliu se
realizează şi cu tasta F1, tradiţională acestui scop în familia produselor Microsoft.
28
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
2.5. Obiecte de control de Informatica Economică
şi containere
Lucrând sub sistemul de operare Windows, este evident că elementul de bază
în cadrul acestuia va fi fereastra. Aceasta este o suprafaţă dreptunghică ce se
caracterizează prin poziţie, dimensiune, culoare fundal şi multe alte proprietăţi şi
obiecte, destinate facilitării dialogului dintre utilizator şi sistem. Există două tipuri
mari de ferestre:
Ferestre sistem. În general, proprietăţile lor nu pot fi modificate de către utilizator, el
interacţionând cu fereastra prin selectare, navigare, apăsare, sau scriere de text în
cadrul unor controale din cadrul ei.
Exemplu: Ferestrele principale Access, ferestrele diverşilor constructori, fereastra de
comandă, ferestre de dialog precum File → New…, File → Open…, Tools →
Options…etc.
Ferestre utilizator. Ferestrele definite de utilizator sunt similare celor sistem, dar
conţin atât ele cât şi componentele lor metode şi proprietăţi definite de utilizator.
Astfel de ferestre pot fi formularele şi rapoartele. Ele pot conţine o varietate de obiecte
de control.
Butonul de opţiuni (sau buton radio) se întâlneşte individual doar în Access, sub
forma obiectelor Option Button şi Toggle Button,
diferenţiate doar prin reprezentarea grafică (cerc versus
buton). Option Group se întâlneşte în ambele aplicaţii. În
acest caz, după cum e şi firesc avem un grup de astfel de
butoane (containerul OptionGroup), principala caracteristică a acestuia fiind că dintr-
un astfel de grup doar unul şi numai unul poate fi selectat. Opţiunile unui astfel de
grup trebuie să fie neapărat disjuncte (intersecţia cazurilor determinate de acestea să
fie nulă) şi să acopere toate cazurile posibile. Exemplu: Culoare ochi - căprui, negri,
verzi, albaştri; Sex - masculin, feminin; Cota TVA - 24%, 9%, 0% ş.a.m.d.
Caseta de validare (Check Box) are particularitatea că niciuna, una sau mai multe
opţiuni ale grupului format din unul sau mai
mulţi astfel de itemi sunt selectate la un moment
dat. Deci, în acelaşi timp, o persoană poate avea
29
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
mai mult deDepartamentul
35 de ani, poatede Informatica
fi economist,Economică
poate avea păr castaniu, sau niciuna dintre
aceste caracteristici să nu i se aplice.
Caseta de text (Text Box) se foloseşte pentru editarea de text provenit dintr-o
variabilă, câmp, masiv. Se poate utiliza doar împreună cu elemente de tip şir de
caractere, dar şi dată calendaristică sau timp. Incrementarea sau
decrementarea valorilor de tip dată/timp se realizează prin
acţionarea tastelor +/- .
Caseta de editare (Edit Box) este similară cu cea de dinainte, însă se utilizează de
obicei atunci când avem text de lungime mai mare. Mai mult de
atât, chiar dacă în cazul casetelor de text nu există o delimitare
implicită a lungimii conţinutului, în casetele de editare textul poate
fi dispus pe linii multiple. Pentru o mai bună vizualizare a
informaţiei conţinute, acest tip de obiect poate conţine şi bare de
defilare.
Lista simplă (List Box) afişează o listă verticală de elemente. Acest control permite
selecţii multiple ale itemilor afişaţi. Dacă numărul elementelor
din listă depăşeşte dimensiunea listei, se pot folosi barele de
defilare. Conţinutul listei simple este întotdeauna vizibil, spre
deosebire de obiectul următor.
Liste derulante (Combo Box). Există două tipuri de astfel de controale, şi anume
combo şi listă (drop-down combo şi
drop-down
list). Ambele
controale sunt nişte liste ale căror elemente sunt ascunse,
cu excepţia elementului curent. Dacă se acţionează
săgeata orientată în jos din dreapta obiectului, atunci lista
se derulează, relevând conţinutul său. Noua selecţie va
deveni elementul curent, ocazie cu care lista se şi închide, revenind la forma iniţială.
Diferenţa dintre cele două tipuri de liste este aceea că în cazul obiectului de control de
tip combo, elementele sunt editabile, iar introducerea de itemi noi este de asemenea
permisă.
30
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
File multiple de Informatica
(Page Frame/Tab Control)Economică
este un container, ceea ce înseamnă că
acest obiect poate conţine la rândul său mai multe alte controale. Pot exista mai multe
file în cadrul unei astfel de obiect, fiecare filă fiind etichetată. Doar o pagină poate fi
activă la un moment dat.
< > Neterminali (nume de câmp sau de fişier) care trebuie să fie înlocuiţi cu numele
respective.
Exemple:
7
Object Linking and Embedding – legarea şi încapsularea obiectelor
31
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
<câmp>; <listă câmpuri>; <fişier> etc. → Pret; Nume, Prenume, Salariu;
Personal.accde
[ ] Secvenţe opţionale simple sau compuse. Pot fi omise din comenzi la nevoie
{ } Grupuri de elemente.
Exemplu:
33
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
Observaţie: Existădeexcepţii
Informatica
de laEconomică
regula de compoziţie a expresiilor. Acest
lucru se întâmplă atunci când sunt implicaţi operanzi de tip boolean (logic).
Operatori. Există următoarele tipuri de operatori:
(1) Aritmetici: ^ sau **, *, /, +, -, % (restul împărţirii,
modulo)
(1) Concatenare: +, -, &
(1) Dată şi Timp: +, -
(2) Relaţionali: <, >, <=, >=, =; <>, # sau !=; ==, $
(3) Logici: NOT, AND, OR.
Atunci când avem expresii compuse mixte avem de-a face cu problema ordinii
de evaluare a subexpresiilor. Aceasta se rezumă la aşa-numita precedenţă a
operatorilor, adică prioritatea unui operator faţă de celălalt. Numerele din parantezele
fiecărei categorii de operatori reprezintă chiar această precedenţă. Atunci când vrem
să schimbăm ordinea naturală – sau nu suntem siguri de ordinea firească – putem dicta
o nouă ordine prin utilizarea de paranteze în subexpresii.
8
4th Generation Language
34
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
Microsoft aDepartamentul de Informatica
introdus formatul Economică
de dată strict. În Access delimitatorul pentru constante
Date/Time este caracterul diez (#).
Observaţie:
1. Cea mai întâlnită eroare la introducerea datelor în tabele este introducerea datelor
calendaristice. RECOMANDAREA noastră este setarea formatului care vi se pare cel
mai potrivit, înainte de introducerea acestui tip de date. In Access se configurează
setările regionale (Regional and Language Options din Control Panel) şi
proprietatea Input Mask.
2. Pentru afişarea anului pe 4 cifre trebuie să acordăm atenţie sporită proprietăţilor
Format şi Input Mask în Access.
3. Variabile. Sunt tratate similar cu câmpurile din tabele, însă valorile lor nu
sunt menţinute decât în memoria operativă a sistemului. Ele se pierd odată cu
încheierea execuţiei unui program, ieşirea din sesiunea de lucru, întreruperea
alimentării cu energie etc. Variabilele stochează temporar constante, valori
intermediare sau valori introduse de la tastatură.
Variabilele au nume pentru a putea fi referite.
Indiferent că sunt câmpuri în tabele, variabile sau constante, toate datele sunt
memorate într-un format specific, precum text, numeric, dată calendaristică, sau logic.
Tipuri principale de date:
Numeric
Alfanumeric
Logic
Gestiune timp
Special.
Toate tipurile, exceptându-l pe cel logic, au la rândul lor subtipuri.
35
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
TipDepartamentul
Dată de Informatica Economică
Subtip Denumire în Access
Numeric Simple numeric Single
Double numeric Double, Decimal
Integer Byte, Integer, Long Integer
AutoNumber,
SelfIncremental Replication ID
integer Currency
Currency Replication ID
-
Alfanumeric Character Text
Binary character -
Tipuri de bază
FORMAT SE UTILIZEAZĂ PENTRU A AFIȘA
Text Valori scurte, alfanumerice, cum ar fi numele sau adresa străzii.
Număr Valori numerice, cum ar fi distanțe. Rețineți că există un tip de date separat
pentru valori monetare.
Simbol Valori ale simbolurilor monetare.
monetar
Da/Nu Valori Da și Nu și câmpuri care conțin o singură valoare din două.
Dată/Oră Valorile de dată și oră pentru anii cuprinși în intervalul 100 și 9999.
Text Text sau combinații de text și numere care pot fi formatate utilizând controale de
îmbogățit fonturi și culori.
Câmp Rezultatul unui calcul. Calculul trebuie să se refere la alte câmpuri din același
calculat tabel. Se poate utiliza Generatorul de expresii pentru a crea calculul.
Atașare Imagini atașate, fișiere foi de calcul, documente, nomograme și alte tipuri de
fișiere acceptate pentru înregistrările din baza dvs. de date, asemănător cu
atașarea fișierelor la mesajele de poștă electronică.
Hyperlink Text sau combinații de text și numere stocate ca text și utilizate ca adresă
hyperlink.
Memo Porțiuni lungi de text. O utilizare obișnuită a câmpului Memo este descrierea
detaliată a unui produs.
36
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Căutare Afișează o listă de valori care este regăsită dintr-un tabel sau o interogare sau un
set de valori pe care l-ați specificat când ați creat câmpul. Va porni expertul
Căutare și poate fi creat un câmp Căutare. Tipul de date al unui câmp Căutare
este Text sau Număr, în funcție de opțiunile pe care le selectați în expert.
NOTĂ Câmpurile Căutare au un set suplimentar de proprietăți de câmp, care se
află în filaCăutare din panoul Proprietăți câmp.
Număr
FORMAT SE UTILIZEAZĂ PENTRU A AFIȘA
General Numere fără formatare condițională, așa cum sunt sortate.
Simbol monetar Valori monetare generale.
Euro Valori monetare generale stocate în format EU.
Fix Date numerice.
Standard Date numerice cu zecimale.
Procent Procente.
Științific Calcule.
Data și ora
FORMAT SE UTILIZEAZĂ PENTRU A AFIȘA
Dată scurtă Afișarea datelor în format scurt. Depinde de setările regionale de dată și oră. De
exemplu, 14.03.2001 pentru Europa.
Dată medie Afișarea datei în format mediu . De exemplu, 3-Mar-09 pentru Europa.
Dată lungă Afișarea datelor în format lung. Depinde de setările regionale de dată și oră. De
exemplu, Miercuri, 14 martie 2001 pentru Europa.
Ora am/pm Afișează ora utilizând un format de 12 ore care va răspunde la modificările
efectuate în setările regionale de dată și oră.
Oră fmt. Afișarea orei urmată de pe AM/PM.
mediu
Ora în 24 de Afișează ora utilizând un format de 24 ore care va răspunde la modificările
ore efectuate în setările regionale de dată și oră.
Logic (Da/Nu)
TIPUL DE DATE SE UTILIZEAZĂ PENTRU A AFIȘA
Casetă de selectare O casetă de selectare.
Da/Nu Opțiuni Da sau Nu
Adevărat/Fals Opțiuni Adevărat sau Fals.
Activat/Dezactivat Opțiuni Activat sau Dezactivat.
37
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
2.9.7. Conversia dintre diferite tipuri de date
Produsele software destinate prelucrării bazelor de date, spre deosebire de
tabeloare şi procesoare de texte, sunt foarte sensibile la tipul de dată. Dacă un câmp a
fost declarat dată sau număr, atunci acesta nu poate accepta şiruri de caractere. Şi nici
operatorii specifici nu pot fi interschimbaţi între tipurile de date. Astfel, nu poţi face
operaţii aritmetice cu texte sau cu valori logice, aşa cum nu poţi aplica operatorul de
concatenare numerelor, datelor, sau valorilor logice. Totuşi, în realitatea concretă, pot
apărea cazuri când trebuie să faci operaţii de genul celor amintite anterior. Pentru a
putea totuşi să le efectuezi nu poţi schimba pur şi simplu regulile fundamentale ale
aritmeticii sau procesării textelor, în schimb poţi modifica temporar tipul operanzilor
pentru a-ţi atinge scopul. Deci, nu trebuie reinventată matematica pentru a adăuga un
text la un număr, dar poţi aplica anumite transformări acelui text – dacă se
conformează unui şablon – pentru a deveni număr şi a efectua apoi calculul. Acest tip
de transformare se numeşte conversia tipului de date şi poate fi realizată uneori
implicit de către unele SGBD-uri, dar conversia explicită, prin utilizarea funcţiilor
specializate, este varianta cea mai utilizată. Trebuie să aducem datele la tipul potrivit
pentru efectuarea cu succes a procesării.
38
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
În ceea ce priveşte a doua posibilitate, utilizatorul este cel care hotărăşte dacă va
apela la un şablon de bază de date predefinit – disponibil online sau local – sau
operaţiunea se va desfăşura de la 0, fără a lua în considerare vreun element
prefabricat.
Categoriile de şabloane disponibile.
Selectarea unei categorii are ca efect detalierea mostrelor de baze de date din acea
categorie, în panoul central, suprafaţa de lucru.
Posibilitatea creării unei baze de date vide poate fi exploatată doar atunci când
categoria Featuring este activă, prin selectarea butonului Blank Database,
prezentat aici în imaginea de dimensiune redusă din partea stângă. La acţionarea
lui, va apărea în partea dreaptă panoul Blank Database momentan completat cu
informaţii implicite (locaţie, nume fişier).
39
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
40
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
Grupul Departamentul de Informatica
Views permite comutarea întreEconomică
diferite moduri de vizualizare a tabelei.
41
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
direct în modul de introducere/vizualizare a datelor (Table/Datasheet
View);
în modul de proiectare (Design View/Table Design);
prin utilizarea unor şabloane (Table Templates);
prin import din alte produse sau din versiunile precedente (Import).
Mai mult, câmpul care începe să fie completat cu valori, va primi automat tipul
celui mai probabil tip de dată care i se potriveşte. Totuşi, în modul Datasheet
View nu se poate şterge coloana implicită – ID – chiar dacă poate fi redefinită şi
redenumită. Crearea tabelelor în modul de introducere al datelor este facilă şi se
recomandă începătorilor.
42
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
Crearea Departamentul
tabelelor înde Informatica
Table DesignEconomică
Modul tradiţional, specific şi de referinţă în acest material pentru crearea
tabelelor este modul de proiectare (Table Design, Design View), şi nu cel de
introducere de date.
Pentru a-l activa în cazul în care dorim să creăm o nouă tabelă, alegem
Create → Table Design. Pentru comutarea dintr-un alt mod, alegem fie Home →
View → Design View, fie Datasheet → View → Design View Home → Design
View.
Cu această ocazie apare fila Design, care pentru tabele arată precum în
Error! Reference source not found.. Aceasta are 4 grupuri, dintre care cel mai
important este Tools.
În zona de lucru va apărea structura curentă a tabelei, sub forma unui tabel
cu 3 coloane, în care liniile tabelului vor reprezenta câmpurile. Caracteristicile
fiecărui câmp pot fi rafinate în fereastra Field Properties, din partea de jos a zonei
de lucru, care poate avea conţinut diferenţiat în funcţie de tipul de dată al câmpului
curent. Fereastra are două file – General şi Lookup – în coloana din stânga sunt
trecute numele proprietăţilor, iar cea din dreapta este editabilă de către utilizator,
aici introducându-se valorile asociate acelor proprietăţi.
Field Name (Denumire). Aceste nume trebuie să fie uşor de înţeles de către
persoanele care urmează să opereze cu această bază de date. Chiar dacă sunt
acceptate câmpuri de până la 64 de caractere lungime, denumirile e recomandat să
43
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
fie cât mai de Informatica
scurte şi cuprinzătoare Economică
posibil. Pentru informaţii detaliate cu privire la
acesta, se recomandă utilizarea coloanei Description. Nu pot să înceapă cu spaţiu
sau cu un caracter special, însă poate să conţină aceste caractere în interiorul lor.
Data Type (Tip de dată). Există 10 tipuri de date selectabile, plus unul impropriu.
Acestea se pot alege din lista derulantă din coloana Data Type. Tipul de date
descrie domeniul câmpului şi impune anumite reguli de domeniu pe acel câmp.
44
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Tip de dată Descriere Exemplu
încapsulate într-o tabelă Access.
Attachment În cadrul unui astfel de câmp se Unul sau mai multe
stochează fişiere de genul celor registre de calcul Excel,
ataşabile la un mesaj electronic. documente Word, grafice,
sunete ataşate unei valori a
unui câmp
Lookup Nu reprezintă un câmp anume, ci o Alegerea unităţii de
Wizard … facilitare a modului de introducere a măsură dintr-o listă, a
datelor, prin definirea unor liste pe valutei, a localităţii
baza unor valori-utilizator, sau
generate din alte câmpuri.
Calculat Pe baza de formula
Tabelul 3. 1 – Tipuri de date în MS Access
45
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Format Valoare Afişaj
–3456.789 ($3,456.79)
3456.789 3456.79
Fixed –3456.789 –3456.79
3.56645 3.57
Standard 3456.789 3,456.79
3 300%
Percent
0.45 45%
3456.789 3.46E+03
Scientific
–3456.789 –3.46E+03
Tabelul 3. 2 – Formate numerice1
La Date/Time avem – General Date, Long date, Medium Date, Short Date, Long
Time, Medium Time, Short Time – detaliate în Tabelul 3. 3 – Formate Date/Time.
Format Descriere
(Implicit) Dacă valoarea este o dată calendaristică,
atunci informaţia despre timp lipseşte; dacă valoarea
General Date este un mmoment de timp, atunci informaţia referitoare
la dată nu este afişată. Această setare este o combinaţie
între setările Short Date şi Long Time. Exemple:
4/3/93, 05:34:00 PM şi 4/3/93 05:34:00 PM.
Identic cu setările regionale (Control Panel) pentru
Long Date
Long Date. Exemplu: Saturday, April 3, 1993.
Medium Date Exemplu: 3-Apr-93.
Identic cu setările regionale pentru Short Date.
Short Date
Exemplu: 4/3/93.
Identic cu setările regionale din fila Time. Exemplu:
Long Time
5:34:23 PM.
Medium Time Exemplu: 5:34 PM.
Short Time Exemplu: 17:34.
Tabelul 3. 3 – Formate Date/Time2
Formatele prezentate anterior sunt formate predefinite. Pe lângă acestea mai pot
exista şi formate personalizate.
Ex.
ddd", "mmm d", "yyyy – Sun, Oct 31, 2010
1
[Access 2007 Help]
2
[Access 2007 Help]
46
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
mmmmDepartamentul de Informatica
dd", "yyyy – October 31, 2010Economică
"Aceasta este saptamana numarul "ww – Aceasta este saptamana numarul 44
"Today is "dddd – Today is Friday
0000-000000 – 0749-504287
Ex. $#,##0.00[Green];($#,##0.00)[Red];"Zero";"Null"
47
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Caracter Descriere
datelor; semnele + şi – sunt admise).
L Literă (A - Z, introducere obligatorie).
? Literă (A to Z, introducere opţională).
A Literă sau cifră (introducere obligatorie).
a Literă sau cifră (introducere opţională).
& Orice caracter sau spaţiu (introducere obligatorie).
C Orice caracter sau spaţiu (introducere opţională).
Simboluri separatoare pentru mii, punct zecimal, separatori pentru timp
. , : ; - / şi date. (Caracterul actual depinde de setările regionale din Control
Panel).
< Transformă toate caracterele în minuscule.
> Transformă toate caracterele în majuscule.
Face ca masca de introducere să fie afişată de la dreapta la stânga.
! Caracterele tipărite în mască vor fi afişate întotdeauna de la stânga la
dreapta. Simbolul poate fi inclus oriunde în mască
Caracterul care îi urmează să fie afişat doar ca şi caracter literal (de
\
exemplu, \A este afişat doar ca A).
Tabelul 3. 4 – Caractere speciale utilizabile în masca de intrare
Observaţie: Introducerea în masca de intrare a cuvântului "Password" va
crea un obiect de control care va gestiona parolele. Orice caracter tastat va fi
memorat aşa cum a fost introdus, dar va fi afişat ca un asterisc (*). [Access 2007
Help]
Exemple:
Mască de intrare Valori de testare
(000) 000-0000 (206) 555-0248
(999) 999-9999 (206) 555-0248
( ) 555-0248
(000) AAA-AAAA (206) 555-TELE
#999 –20
2000
>L????L?000L0 GREENGR339M3
MAY R 452B7
>L0L 0L0 T2F 8M4
00000-9999 98115-
98115-3007
48
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
>L<?????????????? Maria
Gheorghe
SSN 000-00-0000 SSN 555-55-5555
>LL00000-0000 DB51392-0493
Tabelul 3. 5 – Exemple de măşti de intrare
Caption (Antet alternativ). Permite afişarea unui alt antet pentru câmp
decât numele acestuia
Default Value (Valoare implicită). Este valoarea de iniţializare. Când
introducem date în tabelă, dar nu ne atingem de anumite câmpuri, atunci acestea se
vor completa automat cu valoarea stabilită aici. Valoarea implicită pentru numere
este 0. Pentru date se poate pune de multe ori data curentă
Validation Rule (Regulă de validare). Se testează dacă valoarea introdusă
corespunde unor reguli definite de utilizator. Vom seta aceste reguli în funcţie de
cerinţele afacerii modelate. Exemplu: preţurile şi stocurile nu pot fi negative,
notele să fie între 1 şi 10, data angajării să fie mai mare decât data naşterii etc.
Validation Text (Mesaj de eroare la validare). În cazul în care valorile
introduse contravin regulilor stabilite la rubrica precedentă, se va afişa un mesaj de
eroare. Se recomandă ca mesajul să fie sugestiv şi să descrie negaţia regulii.
Exemplu: Dacă avem pentru preţ regula că trebuie să fie POZITIV, atunci mesajul
ar putea fi: „Preţul nu poate fi NEGATIV!”.
Required (Obligativitate). Stabileşte dacă la completarea acestui câmp e
obligatoriu sau nu să punem o valoare. Se traduce ca NOT NULL/NULL.
Indexed (Indexare). Menţionează dacă acest câmp va fi un index sau nu.
Dacă da, se va mai preciza dacă acceptă sau duplicate.
Smart Tags (Etichete inteligente). Se poate alege dintr-o colecţie
predefinită cu facilităţi de actualizare automată.
Atunci când există date într-un câmp îmbogăţit cu
această facilitate, simbolul este afişat în partea
dreaptă a valorii câmpului respectiv. Atunci când
simbolul este accesat, o listă verticală se va
desfăşura. Când se selectează o intrare din acea listă, vom fi direcţionaţi către o
adresă a unui site în vederea realizării unei căutări sau generării unei situaţii.
49
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Există şi alte proprietăţi – de exemplu pentru câmpurile de tip text – dar care nu
prezintă interes pentru acest material. În afară de acestea, mai există o fereastră de
proprietăţi, destinată de această dată tabelei, nu câmpurilor.
50
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
câmpul/câmpurile) apoidebutonul
Informatica Economică
Primary Key. Pentru compunerea unor expresii
mai complexe utilizabile în diferite proprietăţi ale câmpului (ex. la reguli de
validare, la expresii implicite) se acţionează butonul Builder sau butonul din
dreapta zonei în care se introduc proprietăţile.
Când toate câmpurile sunt configurate corespunzător cerinţelor, putem
închide şi salva tabela. Dacă nu am făcut-o încă, putem să-i atribuim o denumire.
În cazul în care nu s-a definit cheia primară, Access ne chestionează în legătură cu
posibilitatea inserării uneia automat. Putem accepta sau declina invitaţia. Dacă
răspundem afirmativ o primă coloană de tip AutoNumber, cu numele ID va fi
introdusă din oficiu.
Crearea tabelelor prin import din alte produse sau din versiunile
precedente
În Access se pot realiza şi folosi tabele care n-au fost neapărat create în
versiunea curentă Access, sau nu sunt produse Access. Nu trebuie neapărat să
creăm/populăm o tabelă, atât timp cât aceasta a fost deja creată într-un alt produs
şi se află stocată într-o locaţie accesibilă nouă, sub forma unui fişier cu format
tabelar. Pentru astfel de probleme avem facilităţile de import. În Access, putem să
51
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
apelăm Departamentul
la acestea, prindeintermediul
Informaticafilei
Economică
External Data, grupul Import. Putem
prelua tabele din Access versiunile anterioare, Excel, SharePoint, Outlook, fişiere
XML sau text, precum şi din alte SGBD-uri sau tabeloare. Nu vom insista pe
modul de realizare al acestor importuri, Access punând la dispoziţie un instrument
interactiv pentru realizarea lor.
Manipularea obiectelor
În Access, manipularea obiectelor se realizează prin intermediul panoului
de navigare şi a ferestrelor cu file multiple.
În panoul de navigaţie sunt prezente toate obiectele disponibile în baza de date
curentă – în cazul în care n-au fost efectuate filtrări – organizate după bunul plac
al utilizatorului. Pot fi efectuate operaţiuni asupra lor în genul celor
întâlnite în utilitarele de gestiune ale fişierelor, precum Windows
Explorer/(My) Computer. Se poate utiliza şi meniul contextual
pentru manipularea lor. Alegerea opţiunii Open are ca efect
deschiderea obiectului în mod vizualizare într-o filă a ferestrei cu file
multiple ce acoperă suprafaţa de lucru. Acelaşi lucru se poate realiza
şi cu dublu-clic. Comutarea/Deschiderea în modul de proiectare se
realizează cu a doua opţiune, şi anume Design View. Schimbarea
modului de vizualizarea al obiectelor sunt operaţiuni frecvente în
lucrul cu tabele sau alte obiecte. Pe lângă modalitatea amintită acum,
se folosesc opţiunile butonului View, prezent în fila Home şi alte file contextuale,
precum şi utilizarea pictogramelor miniaturale din partea dreaptă a barei de stare
. Nu este importantă modalitatea prin care se operează comutarea
între diferitele moduri disponibile, important este să se ştie când şi de ce trebuie
făcută (diferenţa între conţinut şi structură), iar operaţiunea în sine să nu dureze
mai mult de câteva secunde.
52
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
Personalizarea de Informatica
modului Economică
de vizualizare al datelor
În paragraful anterior s-a discutat despre comutarea
în vederea vizualizării conţinutului. În afară de acest lucru,
şi datelor sau tabelei îi poate fi conferit un alt aspect decât
cel standard. Astfel, folosind butoanele existente în
grupurile Font şi Rich Text din cadrul filei Home, se pot
efectua formatări ale întregului conţinut, în acelaşi mod
precum în Word sau Excel. Aspectul devine mai atractiv.
Dimensiunea coloanelor poate fi mărită/redusă în funcţie
de necesităţi cu sprijinul meniului contextual (Column
Width…)– prezent în imaginea din partea dreaptă –
obţinut la selectarea uneia sau mai multor coloane. Se pot
efectua de asemenea glisări cu mouse-ul la nivelul
antetelor de coloane. Dacă într-un anumit context nu
suntem interesaţi de conţinutul anumitor coloane, atunci le putem ascunde (Hide
Columns), putându-se mai târziu reveni (Unhide Columns…), fără a afecta în
vreun fel structura tabelei. Atunci când tabela noastră are un număr foarte mare de
coloane şi trebuie să efectuăm vizualizări/editări în coloanele mai „îndepărtate”,
pentru a şti exact la ce înregistrare ne referim, este recomandat ca să plasăm în
partea stângă, fără posibilitate de defilare la nivelul lor, acele coloane care sunt
cele mai relevante (ex. Denumire). Pentru aceasta, mutăm coloanele relevante prin
operaţiuni drag&drop, pentru a ajunge în poziţie adiacentă. Apoi le selectăm şi
alegem din meniul contextual, sau din Home → Records → More, opţiunea
Freeze Columns, iar coloanele rămân blocate în partea stângă a ferestrei.
Operaţiunea inversă este Unfreeze All Columns.
Asupra înregistrărilor, în ceea ce priveşte schimbarea aspectului, doar
modificarea înălţimii este permisă. Se poate realiza prin glisare, din meniul
contextual rezultat în urma selectării unei linii, sau din Home → Records →
More→ Row Heigh….
Atunci când avem tabele corelate, se poate defini pentru tabela
curentă un subset de date, provenit din tabela cu care aceasta este în
legătură. Spre exemplu, fiind deschisă tabela Produse, în momentul în
care selectez un anumit produs, să pot vedea în ce facturi este prezent
acesta sau care este partenerul care îl furnizează sau căruia îi este
furnizat. Gestiunea subseturilor se realizează prin intermediul opţiunilor
submeniului Home → Records → More → Subdatasheet, ilustrate în imaginea
din dreapta.
53
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Ştergerea de înregistrări
Căutarea înregistrărilor
Actualizarea înregistrărilor
Ordonarea înregistrărilor şi
Filtrarea înregistrărilor.
Cât timp programarea în Access nu reprezintă un obiectiv al acestui
material, vom prezenta doar abordarea „vizuală”. Toate operaţiile amintite vor fi
efectuate în modul Datasheet View.
Adăugarea de înregistrări noi
Se pot adăuga noi înregistrări direct la sfârşitul tabelei, în linia goală
marcată cu simbolul . Când tabela noastră are multe înregistrări, iar pentru a
ajunge la ultima înregistrare ar trebui să folosim bara de defilare verticală, se poate
trece la adăugarea unei înregistrări vide fără a apela la barele de defilare, ci se
selectează direct butonul – New (blank) Record – din bara de navigare aflată
în partea de jos a ferestrei Datasheet View. Se poate alege şi butonul Home
→
Records →
, Home → Go To → New, combinaţia Ctrl ++, sau opţiunea
din meniul contextual obţinut la selectarea unei înregistrări.
54
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
ştergere.Departamentul
Trebuie să ledeselectăm,
Informatica
apoiEconomică
fie apăsăm tasta Del, fie alegem Delete
Record din meniul contextual sau din opţiunea Home → Records → Delete.
55
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Căutarea se poate face în toată tabela, sau într-un anumit câmp (lista Look
In), să fie exactă sau parţială (lista Match), să se caute în ambele sensuri sau doar
într-unul (lista Search), cu ignorarea sau nu a tipului de caractere sau al
formatării. O căutare rapidă se poate efectua prin tastarea textului/valorii căutate,
chiar în zona Search din partea dreaptă a butoanelor de navigaţie, prezentată şi
aici în partea dreaptă. Căutarea se realizează concomitent cu tastarea.
Actualizarea înregistrărilor
Conţinutul tabelelor este volatil. Modificările pot fi făcute direct în tabelă
prin intermediul editării valorilor curente din cadrul celulelor. Actualizările din
cadrul unei înregistrări pot fi anulate, dacă înainte de părăsirea acelei înregistrări
se tastează Esc, indiferent de numărul celulelor care au fost modificate. O
facilitate semiautomată de modificare a conţinutului ar fi exploatarea capabilităţii
de înlocuire a valorii căutate Home → Replace sau Ctrl + H.
56
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
57
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
tabelă cu de Informatica
mai multe câmpuri, C1, C2, Economică
…, Cn şi noi avem nevoie de o sortare C4,
C2? Putem face una C2, C3, C4, sau C1, C2, dar nu ne sunt de nici un folos. Ce
facem? Va trebui să apelăm la următorul artificiu: înainte de a efectua sortarea,
vom muta câmpul C4 chiar înaintea lui C2. Mutările se fac prin glisarea antetelor
de coloană şi nu afectează structura. Acum se poate realiza şi sortarea dorită.
58
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
FiltrareaDepartamentul
înregistrărilor de Informatica Economică
Filtrarea reprezintă afişarea doar a înregistrărilor care satisfac un anumit
criteriu. Există mai multe opţiuni de filtrare, îmbogăţit şi îmbunătăţite faţă de
versiunile Access anterioare.
59
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
60
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Regulile de păstrare ale integrităţii referenţiale,
Denumiri lungi pentru tabele şi câmpuri,
Nume alternative pentru câmpuri,
Formate pentru câmpuri,
Reguli de validare la nivel de înregistrare şi câmp,
Proceduri stocate şi declanşatori,
Tabele virtuale locale şi la distanţă,
Conexiuni la baze de date şi tabele.
Chiar dacă o bază de date conţine în esenţă tot tabele, ele beneficiază în
acest moment de un statut mai „special” faţă de cele libere.
Tabelele din cadrul unei baze de date se numesc tabele legate sau corelate.
În acest moment, nu mai există limitarea la 10 caractere lungime pentru câmpuri,
se pot specifica denumiri alternative pentru câmpuri, reguli de validare, moduri de
definire a cheilor primare, posibilitate interrelaţionării tabelelor şi menţinerea
regulilor de consistenţă a datelor, nu numai în cadrul tabelei, ci şi între tabele.
Acestea sunt doar câteva dintre funcţionalităţile „exclusiviste” ale tabelelor legate.
61
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Adăugarea de noi tabele se face din fila Create, grupul dedicat tabelelor.
Importurile sau legăturile fişierele externe se gestionează prin intermediul filei
External Data → Import and Link.
Totodată, un subset de facilităţi de import sunt prezentate şi sub formă de opţiuni
ale submeniului Import din cadrul meniului contextual obţinut prin selectarea unei
tabele din cadrul panoului de navigaţie, şi prezent în imaginea din dreapta.
62
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Figura 4. 1 – Stabilirea tipului de fişier pentru importul de tabele din Visual FoxPro
63
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
să putemDepartamentul de Informatica
să accesăm importul Economică
direct din lista Saved Imports, fără a mai trebui să-
l parcurgem pas cu pas. Tabelele importate apar precum cele două din imaginea
din stânga, unde cel de-al doilea este o legătură la un fişier dBASE extern, deci nu
o tabelă de sine stătătoare tip Access.
64
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Deoarece
Departamentul de Informatica
relaţiile se stabilescEconomică
între două elemente (tabele), se numesc
relaţii binare. Una dintre tabele este denumită tabelă-părinte, iar cealaltă tabelă-
fiu. Tabela părinte (principală, primară) este acea tabelă care are câmpul de
legătură în calitate de cheie primară sau candidată. Cealaltă, a cărei câmp de
legătură este cheie străină, este tabela fiu (secundară, dependentă).
Tipuri de relaţii:
Relaţia una-la-una (1:1). Fiecare înregistrare din tabela părinte poate fi în relaţie
cu una şi numai una înregistrări din tabela fiu şi fiecare înregistrare din tabela fiu
trebuie să fie în relaţie cu una şi numai una înregistrări din tabela părinte
Relaţia una-la-mai multe (1:n). Fiecare înregistrare din tabela părinte poate fi în
relaţie cu una sau mai multe înregistrări din tabela fiu şi fiecare înregistrare din
tabela fiu trebuie să fie în relaţie cu una şi numai una înregistrări din tabela
părinte. Uneori literatura menţionează despre un nou tip de relaţie, şi anume mai
multe-la-una (n:1), care este de fapt o relaţie una-la-mai multe (1:n) inversă.
Relaţia mai multe-la-mai multe (n:n sau m:n). Fiecare înregistrare din tabela
părinte poate fi în relaţie cu una sau mai multe înregistrări din tabela fiu şi
invers. Acest tip de relaţie nu există în modelul relaţional.
Dar, relaţiile de acest tip pot fi simulate prin adăugarea unei tabele intermediare,
denumită tabelă intersecţie.
În aceste noi circumstanţe, vom avea două relaţii 1:n, ambele având partea cu una
şi numai una către tabela originală, iar partea cu mai multe către tabela
intersecţie.
Exemplu. Avem tabelele Clienti şi Produse. Între acestea există o relaţie m:n,
pentru că fiecare client poate achiziţiona unul sau mai multe produse, iar fiecare
produs poate fi achiziţionat de către mai mulţi clienţi.
Trebuie aşadar să găsim o nouă tabelă – precum Tranzactii sau Cumparari –
care să facă legătura dintre cele două. În acest caz, fiecare client poate face una sau
mai multe tranzacţii (cumpărături), tranzacţia (cumpărarea) trebuie făcută de unul
şi numai unul clienţi; în timp ce fiecare produs poate fi pe una sau mai multe
tranzacţii, iar o tranzacţie poate conţine mai multe produse.
65
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de
2. Adăugaţi/creaţi Informatica
tabelele Economică
implicate în relaţie şi populaţi-le cu date, dacă e
necesar
3. Definiţi cheile (indecşii) primari/candidaţi în tabelele părinte. Asiguraţi-vă
înainte că acele câmpuri ce vor fi alese, nu conţin duplicate. Indecşii
candidaţi sunt reprezentaţi în zona Indexes ca având denumirea scrisă
îngroşat, precum . În plus, cheia primară are înaintea denumirii şi o
cheie stilizată, precum
4. Definiţi cheile străine (regular indexes) în tabelele fiu. Acestea se reprezintă
sub forma unor etichete fără vreo formatare aparte, în care este trecut
numele lor şi sunt plasate în zona Indexes
5. Tragerea cu mouse-ul (drag & drop) dinspre indecşii primari/candidaţi din
tabela părinte peste indecşii regular din tabela fiu. Doar elementele din zona
Indexes pot fi implicate în acest proces.
66
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
REGULI Departamentul de Informatica
LA ACTUALIZARE Economică
(IGNORE, RESTRICT, CASCADE)
Tabela părinte. Se poate actualiza orice înregistrare de care nu este legată vreo
înregistrare din tabela fiu, dar cu respectarea regulilor de actualizare impuse de
integritatea entităţii. Pentru orice altă înregistrare, va trebui să stabilim care
alternativă o alegem:
Restricţionarea. Nu se permite actualizarea niciunei înregistrări
conectate la cel puţin o înregistrare din tabela fiu;
Cascadarea. Dacă o valoare a cheii primare/candidate este actualizată,
atunci toate înregistrările din tabela fiu cu care aceasta aveau legătură, vor
fi şi ele actualizate automat, la nivelul cheii străine.
Tabela fiu. Se poate actualiza orice valoare a cheii străine, dar doar la o valoare
ce aparţine setului de valori ale cheii primare/candidate din tabela părinte, sau
la NULL.
67
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Toate
Departamentul de Informatica
înregistrările Economică
din tabela fiu care rămân fără vreo referinţă cu tabela
părinte, se numesc înregistrări orfane. În aceste circumstanţe ele nu pot fi
returnate de interogările sau rapoartele obişnuite extrase din baza de date (cererea
de informaţii din mai multe surse de date se face de regulă pe baza egalităţii
valorilor cheii primare/candidate cu cea străină). Nu ne mai putem pune preţ pe
baza noastră de date, deoarece întâmpinăm pierderi informaţionale, inconsistenţe
şi relaţii deteriorate. Acestea sunt calităţi indezirabile ale unei baze de date.
Relaţii temporare
Relaţiile persistente dintre tabele reprezintă fundamentul pentru interogări,
rapoarte, formulare care conţin subformulare sau alte obiecte bazate pe tabele şi nu
în ultimul rând pentru menţinerea integrităţii referenţiale. Unul dintre dezavantaje
este acela că înregistrările din tabela de legătură nu sunt corelate.
De exemplu, într-o fereastră Datasheet, dacă suntem pe o înregistrare care are
valoarea 10 pentru cheia primară/candidată, o fereastră Datasheet utilizată pentru
prezentarea informaţiilor din tabela fiu ar trebui să afişeze doar acele înregistrări
pentru care cheia străină ia doar valorile 10. Ar trebui să fie precum în Figura 4. 2.
Se poate observa că există 3 astfel de înregistrări în tabela fiu cu o valoare
identică cu valoarea curentă a cheii primare (10). În aceste condiţii, conţinutul unei
ferestre Datasheet pentru tabela fiu este dinamic, deoarece se modifică odată cu
modificarea indicatorului de înregistrare din tabela părinte.
Fereastra Datasheet însă pentru tabela părinte rămâne neschimbată,
indiferent pe ce înregistrare ne aflăm. Aici sunt prezente toate înregistrările din
tabela părinte, însă au apărut în plus n-1 înregistrări false, câte una pentru fiecare
înregistrare din tabela fiu, minus cea originală.
68
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor În
Departamentul de Informatica
exemplul nostru Economică cu cheia străină corespunzătoare
am avut 3 înregistrări
având valoarea 10. Deci, în tabela părinte avem înregistrarea originală cu această
valoare a cheii primare şi celelalte câmpuri, plus alte 2 (3-1) articole false umplute
cu o mulţime de semne asterisc „*”. Această facilitate poate fi utilizată doar în
cadrul relaţiilor temporare. Acest tip de relaţii sunt utilizate în general în
programare. Ei pot să îmbogăţească potenţialul relaţiilor permanente, sau pot fi
utilizate ca instrumente de sine stătătoare.
Pentru declararea acestor relaţii mai întâi trebuie deschise în zone diferite
toate tabelele implicate în aceste relaţii. Putem defini relaţii 1:1, 1:n şi relaţii
multinivel. Aici sunt prezente primele două tipuri, liniile orizontale simple fiind
pentru relaţii 1:1, în timp ce cele duble, pentru relaţii 1:n, tabela în dreptul căreia
avem liniile duble fiind reprezentată de tabelele fiu. Pentru definirea relaţiilor de
tip 1:1, selectăm una câte una tabelele implicate din lista Aliases, apoi acţionăm
butonul de comandă Relations. Relaţiile de tip 1:n pot fi create după ce s-a creat
mai întâi o relaţie de tip 1:1. Butonul 1 to many apare şi devine activ doar când o
relaţie 1:1 este deja definită şi selectată.
69
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
70
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
astfel deDepartamentul
relaţie poate fide Informatica
convertită Economică
în două relaţii de tip 1:n, aşa cum s-a discutat în
secţiunea precedentă.
Când relaxăm mouse-ul, fereastra din Figura 4. 4 este afişată. Aici trebuie
să verificăm dacă tabela părinte este plasată în partea stângă (Table/Query), iar
cea fiu în dreapta (Related Table/Query). Dacă ordinea tabelelor este inversată,
înseamnă că s-a definit greşit cheia primară. Pe de altă parte, trebuie revizuită şi
corespondenţa câmpurilor de legătură. Dacă am plasat cheia primară peste un alt
câmp decât cel de legătură, se poate remedia şi în acest moment situaţia prin
selectarea celui potrivit din lista derulantă din partea dreaptă. În partea de jos a
ferestrei se observă tipul relaţiei.
71
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Pentru
Departamentul de Informatica
alte opţiuni, Economică
trebuie să selectăm butonul Join Type …. Rezultatul
este afişat în Figura 4. 5. Acestea sunt outer joins (joncţiune/uniune externă),
right outer join (joncţiune la dreapta) şi left outer join (joncţiune la stânga).
Prima apare atunci când câmpurile de legătură au sunt definite pe tipuri, sau doar
dimensiuni diferite.
Exemplu. Într-o tabelă părinte codul este definit ca număr, în timp ce în tabela fiu,
câmpul de legătură este text sau dată calendaristică; sau ambele pot fi numere, dar
unul este Integer, iar celălalt e Long Integer. Problema se rezolvă prin
reconcilierea tipurilor/dimensiunilor, în Table Designer.
72
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Dacă deja sunt date introduse în tabele, se recomandă ca modificarea
subtipului să se facă în favoarea câmpului cu dimensiunea mai mare. În cel de-al
doilea exemplu, vom selecta pentru ambele câmpuri Number, Long Integer.
Dacă am fi selectat Integer, atunci e posibil să se piardă sau altereze date în cazul
în care erau valori peste 32.767, valoarea maximă acceptată de Integer.
73
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
74
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Server
Clinet (Proiect Access) (Baza de date SQL Server)
OLE DB
Tabele
Forme Interogări (imagini,
Rapoarte proceduri stocate,
Pagini funcţii utilizator)
Module Diagrame de date
75
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
stocate, funcţii şi declanşatori (triggers) şi nu proiectul. Deci, proiectul nu
conţine datele, acestea fiind stocate pe un server de baze de date, dar acest
aspect este transparent pentru utilizatori. Proiectul creează atât conexiuni la
un server de baze de date, cât şi facilitează dialogul dintre utilizator şi date.
Nu insistăm pe gestiune proiectelor de acest fel.
Capitolul 5 – Interogări
5.1. Elemente generale privind interogările
Stocarea datelor în baze de date este fundamentul şi pentru interogări,
vederi, sau rapoarte. În funcţie de dimensiunea afacerii pe care ne propunem s-o
oglindim, putem efectua zilnic, orar, din minut în minut sau chiar mai des,
operaţiuni de adăugare/ştergere/actualizare pentru clienţi, furnizori, produse,
tranzacţii etc. Însă, e nevoie de mult mai mult decât atât.
Dorim de fapt să fim capabili să vedem de fapt cum merge afacerea, ceea ce
înseamnă diferite statistici, rapoarte.
Trebuie să fim capabili să răspundem la întrebări de genul:
1
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
„Care sunt cei mai buni cumpărători sau furnizori de materii prime?”;
„Care este volumul mediu al unei tranzacţii?”;
„Care este valoarea comisionului obţinut de un agent de vânzări, sucursala,
agenţie, sau punct de lucru, vânzările realizate de fiecare sau clasamentul lor?”;
„Care este cel mai (puţin) eficient reprezentant de vânzări?” etc.
Interogările sunt cele care extrag informaţii – cu grad mai mic sau mai mare
de sinteză – din bazele de date, în funcţie de un anumit criteriu, denumit criteriu
de interogare.
Interogările sunt o „traducere formalizată” a unor întrebări prin intermediul
unui limbaj de interogare (precum SQL1 sau QBE2), în vederea obţinerii de
„răspunsuri” furnizate de datele noastre.
Exemplu.
Întrebare: Care este numărul de vânzări realizat de fiecare reprezentant de
vânzări şi care a fost clasamentul acestora pe ultimul an, în funcţie de acelaşi
criteriu?
Interogare:
SELECT NumeRepr, COUNT(Vanzare) AS Tranzactii
FROM Vanzari
WHERE Year(DataTranz)=2009
GROUP BY NumeRepr
ORDER BY Tranzactii DESC
1
Structured Query Language
2
Query by Example, un instrument vizual ce permite formularea de interogări şi generarea de aserţiuni
SQL
2
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
Răspuns posibil: de Informatica Economică
NumeRepr Tranzactii
Ion 78
Maria 59
Ana 10
Figura 5. 1 – Numărul de tranzacţii în 2009 pe fiecare vânzător şi clasamentul acestora
Interogările există în baza de date Access şi sunt plasate în categoria Queries din
panoul de navigare. Există patru tipuri de interogări:
Interogări de selecţie (Design View, Simple Query Wizard; interogări
specializate în operaţii de regăsire: Find Duplicates Query Wizard şi
Find Unmatched Query Wizard
Interogări Cross-tab (Crosstab Query Wizard)
Interogări de acţiune (Make-Table Query, Update Query, Append
Query şi Delete Query).
În acest material vom insista pe primul tip, interogările de selecţie fiind cele mai
răspândite.
După modalitatea după care decurge proiectarea, există două tipuri principale de
interogări în MS Access: interactiv, sau prin intermediul constructorului de
interogări.
3
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
În fila Create, în cadruldegrupului
Informatica Economică
Others există două butoane – Query Wizard şi
Query Design – pentru fiecare existând câte un buton, prezentate aici în imaginea
din partea dreaptă/stângă a paginii.
4
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Query Wizard
Cel mai simplu mod de crearea a unei interogări, care este înzestrat şi cu o
interfaţă prietenoasă interactivă, este instrumentul Query Wizard. Nu vom insista
pe detalii prezentate cu alte ocazii, atât legate de acesta, cât şi de interogări.
Instrumentul wizard poate avea un număr diferit de paşi, în funcţie de
complexitatea setărilor din paşii anteriori. Mai întâi trebuie să alegem câmpurile
care dorim să fie returnate. Acestea pot face parte atât din surse unice, cât şi din
surse multiple (tabele sau alte interogări).
5
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Funcţiile de grup care se pot aplica, sunt SUM, AVG, MIN şi MAX şi sunt
disponibile doar dacă se alege opţiunea Summary şi se acţionează butonul
Summary Options… Setările se confirmă prin acţionarea butonului OK.
6
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Denumirile
Departamentul de Informatica
interogărilor Economică
se tastează în cadrul unei ferestre furnizează un
nume predefinit, pornind de la denumirea unei tabele/interogări implicate în
realizarea noului obiect al bazei de date.
7
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Query Designer
Administrarea facilităţilor se realizează prin intermediul unor file, prin
intermediul unui format tabelar.
8
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Atunci
Departamentul de Informatica
când demarăm Economică
construcţia unei noi interogări (Create → Query
Designer), fereastra Show Table apare pe ecran, pentru facilitarea includerii
surselor de date.
Putem să adăugăm mai multe la un moment dat, nu doar una precum în Visual
FoxPro.
În exemplul nostru au fost introduse ca surse de date 4 tabele: Facturi,
Continut_Fact, Produse şi Istoric_Pret. Abia după închiderea acestei ferestre,
avem acces la Query Designer. Totodată, o filă specializată gestiunii interogărilor
va fi prezentă.
9
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Valoare_Vanzare: [Continut_Fact].
[Cant]*[Istoric_Pret].[PU]*(1- [Facturi].
[Disc])*(1+[Istoric_Pret].[CotaTVA]), unde
Exemplu:
Produse.Cod şi Istoric_Pret.Cod, ce nu pot fi referite simplu Cod.
Observaţie: Atunci când avem de-a face cu mai multe surse de date, care
sunt bogate în câmpuri, selecţia unuia dintre aceste câmpuri devine puţin mai
complicată. Pentru eficientizarea modului de lucru, se recomandă mai întâi
alegerea din cadrul listei de la Table a sursei de date şi abia apoi a elementului din
lista Field. Procedând astfel, se realizează mai întâi o filtrare la nivelul sursei de
date, fiind prezente doar câmpurile din acea sursă de date şi nu din toate cele
prezente în panoul superior.
În cazul nostru, pentru prima coloană am selectat sursa Produse, pentru a
doua nu s-a specificat nimic, fiind o expresie, iar pentru ultimele două avem
Facturi.
10
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
linie joacă de Informatica
rolul unei singure Economică
expresii compuse, a cărei condiţii individuale (dintr-o
celulă) sunt conectate prin operatorul logic AND.
Pentru câmpul Denumire avem două condiţii conectate prin operatorul
logic OR (produsele a căror denumire începe cu litera „C” SAU conţine litera
„p” în poziţia a treia). Se poate trece aici întreaga condiţie, folosind în expresia
compusă şi operatorul OR, sau se trece una dintre expresii, iar în linia Or,
cealaltă. Pentru a lua în consideraţie doar un anumit preţ şi cel corect din istoric,
vom filtra data facturii (am discutat despre acest aspect şi în secţiunile anterioare,
în cazul Visual FoxPro). Deoarece avem nevoie doar de valoarea vânzărilor, vom
filtra şi facturile după tip (V).
11
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
12
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Interogări
Departamentul
cu de Informatica
parametri. NuEconomică
întotdeauna anumite cerinţe din cadrul
enunţului unei interogări sunt cunoscute cu exactitate din timpul fazei de
proiectare. Pentru astfel de situaţii, alegerea definirii unei interogări
parametrizabile este o opţiune potrivită.
Se observă că interogarea a fost deja salvată sub un nume – Top – iar denumirea
iniţială a câmpului calculat, Valoare_Vanzare a fost acum modificat în Valoare,
deoarece fiind o interogare parametrizabilă, coloana poate referi atât valoarea unei
vânzări, cât şi a unei cumpărări.
13
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Într-o interogare putem avea mai mulţi parametri şi putem să-i folosim şi în
expresii mai elaborate.
14
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
Exemplu.Departamentul
Identificarea de Informatica
partenerilor dinEconomică
acelaşi oraş.
Create → Query Wizard →Find Duplicates Query Wizard
15
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
La primul pas vom alege sursa din care face parte câmpul a cărui valori vrem să le
examinăm
16
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
SelectămDepartamentul
sursa de date de
în Informatica Economică
care se vor căuta apariţiile câmpului din prima sursă de
date.
Se stabileşte criteriul pe baza căruia s-a stabilit relaţia dintre cele două surse de
date, Cod şi CodProd.
Totuşi, nouă ne este mai greu să identificăm un produs prin cod, decât prin
denumirea sa şi alte caracteristici. De aceea, vom furniza informaţii suplimentare,
necesare pentru identificarea mai facilă a produselor care n-au fost comercializate.
17
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
După atribuirea de Informatica
unui nume în cadrul Economică
pasului următor, vom descoperi că boxele
Parrot nu au fost nici vândute, nici cumpărate până în momentul de faţă, după
cum indică şi imaginea din dreapta.
Interogări Cross-Tab
Crosstab Query Wizard permite crearea interogărilor de tip cross-tab,
într-o manieră interactivă. Rezultatul se prezintă sub forma unui tabel. Şi aceste
interogări pot fi editate în Query Designer. În modul Design View destinat
acestui tip de interogări, avem o linie adiţională denumită Crosstab. Valorile
acceptate în cadrul ei, sunt:
18
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
Row Heading de Informatica
– Se foloseşte pentru Economică
câmpul afişat pe o linie a tabelului. Spre
deosebire de celelte două componente, pot exista mai multe astfel de instanţe,
plasate în coloane diferite. În acest caz avem numărul de factură şi cantitatea
consolidată (însumată) pe factură, fără a ţine cont de unitatea de măsură.
Column Heading – Pentru acele câmpuri care vor fi afişate ca antet în cadrul
coloanelor tabelului. Aici avem codul produselor comercializate.
Interogări de acţiune
Aceste interogări efectuează operaţiuni de actualizare a tabelelor, precum şi
crearea de tabele noi, într-o manieră cvasiautomată. Nu va mai fi necesar calculul
şi popularea manuală a unor câmpuri care se pot obţine pe baza unei expresii
19
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
computaţionale bazate pe alte câmpuri.
Definim doar o interogare simplă care
are la bază sursa de date în care vom
opera, iar apoi transformăm
interogarea de selecţie într-una de
acţiune.
Nu le putem crea direct, nici chiar din comenzi SQL. Tipurile de interogări
disponibile – marcate prin butoane specifice în fila Design şi prezente în imaginea
din dreapta – sunt:
Make-Table Query – Creează o nouă tabelă bazată pe rezultatul
aplicării unei interogări de selecţie asupra unor surse de date existente;
Append Query – Adaugă noi înregistrări în cadrul unei surse de date
existente;
Delete Query – Permite efectuarea de ştergeri a unor înregistrări în
funcţie de un anumit criteriu;
Update Query – Actualizează valorile existente din cadrul unei surse
de date, sau le completează.
Ele pot fi selectate şi din meniul contextual, submeniul Query Type, prezent mai
sus.
Make-Table Query. Trebuie selectate câmpurile şi configurate criteriile
necesare pentru crearea noii tabele. Se acţionează butonul Make Table, care va
lansa o fereastră cu acelaşi nume, în care se va specifica numele noii tabele, care
poate fi plasată fie în baza de date curentă, sau în alta.
20
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
21
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Delete Query. Înregistrările din tabela sursă vor fi şterse automat, dacă sunt
îndeplinite criteriile. Se alege butonul Delete sau opţiunea echivalentă, o linie cu
acelaşi nume apărând ulterior şi în fereastra Query Design. Insistăm pe cele două
aspecte care decurg din această operaţiune. În lista derulantă apar următoarele
intrări:
From – Specifică tabela în care vor fi efectuate ştergerile;
Where – Menţionează condiţia de ştergere. Se pot specifica mai multe
condiţii, în linii şi coloane diferite.
Observaţie: Dacă sunt omise condiţiile, atunci toate înregistrările vor fi şterse.
Dacă se selectează o altă sursă de date, ştergerea se va efectua în aceasta. Deci,
trebuie să mânuim cu mare atenţie condiţiile Where şi să avem mare atenţie ce
sursă de date folosim.
22
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Rezultatul
Departamentul de Informatica
setărilor unei astfel Economică
de interogări poate fi cel din Figura . În
panoul de navigare vom recunoaşte o astfel de interogare după simbolul care-i
precede numele, precum .
Interogările de mai jos conţin toate datele din tabele corelate şi o serie de
informaţii suplimentare, precum preţul efectiv al unui produs comercializat,
valoarea, TVA-ul şi valoarea cu TVA.
Spre exemplu, preţul se află în funcţie de preţul unitar aferent acelui produs,
pentru perioada de timp (Istoric_Pret) în care se află data tranzacţiei (Facturi), la
care se mai aplică discountul.
Preţul se poate schimba frecvent – spre exemplu avem promoţii pentru anumite
produse – şi din câte am observat recent, chiar si cota de TVA. Toate aceste
actualizări sunt surprinse în tabela Istoric_Pret.
24
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Access SQL
În limbajul SQL standardizat de ISO nu se folosesc termenii formali de relaţie, atribut, tuplu,
ci tabela, coloană, rând.
2
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
Deşi SQLDepartamentul de format
este un limbaj cu Informatica
liber, Economică
o instrucţiune este mai lizibilă dacă se utilizează
indentarea şi alinierea. De ex:
• fiecare clauză dintr-o instrucţiune trebuie să înceapă pe o linie nouă
• începutul fiecărei clauze să fie aliniat cu începutul celorlalte
• dacă o clauză are mai multe părţi, fiecare parte trebuie să apară pe câte o linie
separată şi trebuie indentată faţă de începutul clauzei
Identificatorii SQL sunt utilizaţi pentru a numi obiecte din BD. Pentru caracterele utilizate,
standardul ISO permite A...Z, a...z, 0...9, _. Restricţii impuse identificatorilor:
• nu poate fi mai lung de 128 caractere (majoritatea dialectelor au o limită mult mai joasă)
• trebuie să înceapă cu o literă
• nu poate conţine spaţii libere
Teoretic, comenzile pentru definirea datelor fac parte din modulul corespunzător
componentei LDD din SGBD. Totuşi, în majoritatea implementărilor SQL comenzile de
definire a datelor sunt prelucrate de acelaşi interpretor care rezolvă şi interogările şi operaţiile
de manipulare a datelor. Componentele DML şi DDL ale SGBD sunt implementate în acelaşi
modul software.
Crează un tabel şi defineşte structura unei înregistrări precum şi tipurile de date asociate
câmpurilor. Numele tabelului trebuie să fie unic în BD. Clauza NOT NULL arată că în
câmpul respectiv nu se memorează valori de tip NULL.
3
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
DROP TABLE de Informatica Economică
nume_tabel
Şterge complet o tabelă din BD.
Instrucţiunile de selecţie reprezintă una din categoriile cele mai importante ale limbajului
SQL ACCESS. Indiferent dacă sunt cereri simple sau complexe, cuvântul cheie este
SELECT. Pentru cererile de interogare simple, sintaxa instrucţiunii este:
Sunt acele interogări în care apar funcţiile agregat, asocierile sau combinările.
4
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
FuncţiileDepartamentul de Informatica Economică
agregat (de grup)
Permit construirea unor interogări complexe, prin care utilizatorul cere gruparea
înregistrărilor care au câmpuri cu aceeaşi valoare, în scopul efectuării unor calcule.
În standardul ISO sunt definite 5 funcţii de grup:
COUNT returnează numărul de valori dintr-o coloană specificată
SUM returnează suma valorilor dintr-o coloană specificată
AVG returnează media valorilor dintr-o coloană specificată
MIN returnează cea mai mică valoare dintr-o coloană specificată
MAX returnează cea mai mare valoare dintr-o coloană specificată
Sintaxa instrucţiunii:
5
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
DeoareceDepartamentul
în instrucţiunile de
SQLInformatica
care descriuEconomică
joncţiuni se utilizează câmpuri care fac parte din
tabele diferite, trebuie specificat numele tabelului de care aparţin, folosind sintaxa
nume_tabelă.nume_câmp
Echivalentul QBE al acestor categorii de joncţiuni este alegerea opţiunilor 1, 2, sau 3 din
caseta Join Properties.
Sintaxa instrucţiunii:
Obs: SQL ACCESS acceptă scrierea fără specificarea explicită a lui OUTER.
Semnificaţia elementelor noi:
JOIN specifică tabelul care va fi asociat (nume_tabel2, nume_tabel3) celui din clauza
FROM
ON arată între ce câmpuri trebuie să existe relaţia pe care se bazează joncţiunea.
Criteriul de asociere conţine obligatoriu operatorul „=”.
Există mai multe restricţii pentru instrucţiunile care genereză interogările UNION, şi anume:
6
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
• Numărul câmpurilorde
dinInformatica Economică
lista de câmpuri din fiecare instrucţiune SELECT şi UNION
SELECT trebuie să fie aceeaşi
• Secvenţa de nume din fiecare listă de câmpuri trebuie să corespundă unor intrări
identice
• Este permisă utilizarea doar o dată a clauzei ORDER BY, după ultima instrucţiune
UNION SELECT
Exemple:
SELECT nume, prenume, vârstă FROM Colaboratori2001
UNION SELECT nume, prenume, vârstă FROM Colaboratori2002
ORDER BY nume;
Interogările de acţiune tip CREATE duc la generarea unui nou tabel pornind de la
structura şi conţinutul unor tabele deja existente.
Se foloseşte instrucţiunea SELECT ... INTO
SELECT [domeniu] (câmp1,câmp2...)
INTO tabel_nou
FROM tabel_sursa
[WHERE criteriu_de_adăugare];
Interogările de acţiune tip INSERT sunt folosite pentru adăugarea de înregistrări dintr-un
tabel în altul. Există două forme ale instrucţiunii şi anume:
• INSERT ... VALUES
• INSERT ... SELECT
7
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
b). Este posibil să se copieze mai multe înregistrări dintr-un tabel în unul sau mai multe
tabele.
INSERT INTO tabel_destinaţie (câmp1, câmp2...)
SELECT [domeniu] câmp1, câmp2...
FROM tabel_sursă
WHERE criteriu_de_adăugare;
Reguli:
• aceleaşi ca mai sus
• numărul şi natura câmpurilor din clauza INTO să fie aceleaşi cu cele returnate de
instrucţiunea SELECT
• dacă nu se introduce WHERE, toate înregistrările din tabel_sursă vor fi adăugate în
tabel_destinaţie
Interogările de acţiune tip DELETE şterg parţial sau total înregistrările dintr-un tabel. Nu
se foloseşte pentru ştergerea de valori din câmpuri individuale, ci acţionează asupra
înregistrării în totalitatea ei. Dacă se şterg toate înregistrările, structura de tabel rămâne,
ea putând fi eliminată numai cu DROP TABLE.
DELETE *
FROM Vânzări;
DELETE *
FROM Angajaţi
WHERE Vârsta>60;
Interogările de acţiune tip UPDATE pot introduce înregistrări noi şi pot modifica valorile
câmpurilor din înregistrări existente.
UPDATE nume_tabel
SET nume_câmp1=valoare1 [,nume_câmp2=valoare2]...
[WHERE criteriu_de_actualizare];
Ca şi în celelalte locuri unde apare clauza WHERE, restricţionarea se poate accentua folosind
şi operatori logici.
Exemplu:
UPDATE Comunicaţii
SET Reţea=”Orange”
WHERE Reţea=”Dialog” AND Data>#12.12.2001;
8
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
6.5. Cereri de interogare imbricate
Scrierea unei interogări în cadrul alteia duce la apariţia unei subinterogări, setul de
rezultate obţinute de la aceasta constituind argument pentru prima interogare.
SELECT lista_câmpuri
FROM tabel1
WHERE tabel1.nume_câmp=
(SELECT nume_câmp
FROM tabel2
WHERE criteriu_de_selecţie);
Cele două tabele trebuie să aibă un câmp comun (nume_câmp) care va reprezenta câmpul de
legătură ce stă la baza construirii subinterogării.
6.6. Exemple
unde nume_coloana_i este numele unei coloane din tabelă. Când selectăm coloane din
mai multe tabele, forma generală a numelor coloanelor unei tabele este
nume_tabela.nume_coloana
deoarece numele coloanelor din diverse tabele pot coincide. Atributul nume_coloana al
obiectului nume_tabela este accesat cu operatorul punct.
Dacă vrem să selectăm toate coloanele tabelei, instrucţiunea SELECT are forma
SELECT *
FROM nume_tabela;
PROIECT_ANGAJAT
9
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
Proiectarea dedin
tabelei este cea Informatica
Figura 6.1.Economică
10
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
Dacă vrem să selectăm de Informatica
toate coloanele Economică
liniilor unei tabele ce îndeplinesc o condiţie,
instrucţiunea SELECT are forma
SELECT *
FROM nume_tabela
WHERE conditie
ORDER BY nume_coloana_1 [ASC | DESC] [, nume_coloana_2 [ASC
| DESC] …];
In cazul instrucţiunii SELECT, când se selectează date dintr-o singură tabelă, în numele
coloanei se poate omite numele tabelei.
D. Condiţii compuse
In următorul exemplu vom selecta angajaţii de la departamentele Suport şi Documentare
din tabela PROIECT_ANGAJAT cu instrucţiunea SELECT de mai jos.
11
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
SELECT ID_ANG, NUME_ANGAJAT, DPT_ANG, SAL_ORA
FROM PROIECT_ANGAJAT
WHERE DPT_ANG = ‘Documentare’ OR DPT_ANG = ‘Suport’;
Condiţia din clauza WHERE se completează în celulele DPT_ANG din liniile Criteria
şi or. Formularul corespunzătoare acestei interogări este:
12
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Clauza WHERE a instrucţiunii SELECT conţine o condiţie care este o expresie booleană.
Expresiile booleene sunt constituite din expresii relaţionale separate de operatorii
booleeni AND, OR şi NOT. In cazul cel mai simplu, o expresie booleană este constituită
dintr-o singură expresie relaţională.
In unele cazuri avem nevoie să comparăm un şir de caractere cu elementele unei coloane
care sunt şiruri de caractere, ca în interogarea din Figura . Sirurile de caractere sunt scrise
între ghilimele. O operaţie ce se poate efectua asupra şirurilor este concatenarea.
Operatorul de concatenare este &. Pentru a testa dacă un şir de caractere corespunde unui
şablon se utilizează operatorul LIKE, vezi o lucrare anterioară.
13
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
ExpresiaDepartamentul de Informatica
booleană ce reprezintă condiţiaEconomică
din clauza WHERE se poate scrie direct în
câmpurile Criteria şi or sau se poate crea cu aplicaţia Expression Builder, ca într-o
lucrare anterioară.
Implicit, în fereastra de proiectare există o singură linie or. Se pot adăuga mai multe linii
or cu un clic pe linia or existentă şi apoi clic pe meniul Insert Rows.
Liniile or se pot şterge cu un clic pe linie şi apoi clic pe meniul Edit Delete Rows.
14
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
Pentru aDepartamentul de Informatica
lansa aplicaţia Expression BuilderEconomică
se procedează astfel:
1. se afişează meniul contextual al coloanei formularului cu un clic cu butonul drept pe
coloana pentru care vrem să creăm condiţia;
2. clic pe opţiunea Build ce afişează caseta Expression Builder cu care se crează
expresia dorită.
15
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
OpţiuneaDepartamentul de Informatica
Table Names afişează Economică
sau ascunde linia Table din formular ce afişază numele
tabelelor.
E. Reuniunea tabelelor
Una dintre operaţiile ce se pot aplica asupra tabelelor rezultat este reuniunea acestor
tabele. Pentru reuniune, liniile tabelelor trebuie să aibe aceleaşi coloane. Reuniunea
tabelelor se face cu instrucţiunea SQL UNION cu forma:
SELECT coloane
FROM nume_tabela_1
UNION
SELECT coloane
FROM nume_tabela_2;
SITUATIE_FINANCIARA
DATE_CONTABILE
Vom crea o tabelă ce reuneşte liniile celor două tabele în felul următor:
1. se afişază fereastra Database; în partea stângă, se selectează opţiunea Queries; în
partea dreaptă se afişază opţiunile existente, Create query by using wizard şi Create
query in Design view şi interogările (Queries) existente,
2. clic pe opţiunea Create query in Design View care afişază caseta Show Table; clic
pe butonul Close
3. clic pe meniul Query SQL Specific, şi în submeniul afişat, clic pe opţiunea Union.
16
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Funcţia Semnificaţia
AVG Valoarea medie
MIN Valoarea minimă
MAX Valoarea maximă
SUM Suma valorilor din coloană
VAR Dispersia
STD Abaterea medie pătratică
Tabelul 2. Funcţii SQL pentru agregarea datelor în instrucţiunea SELECT.
Cea mai simplă interogare a unei baze de date cu utilizarea acestor funcţii este aplicarea
lor asupra unor coloane dintr-o tabelă. Acestă interogare corespunde instrucţiunii
SELECT următoare:
17
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
SELECTDepartamentul de Informatica Economică
funcţie(nume_coloana_1), funcţie(nume_coloana_2), …,
funcţie(nume_coloana_k)
FROM nume_tabela;
In acest caz nu s-a precizat numele coloanelor din tabela rezultat a interogării, şi aplicaţia
atribuie acestor coloane nişte nume standard. Instrucţiunea SELECT are şi o formă în
care putem atribui coloanelor tabelei rezultat ce nume dorim. Această formă este
18
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
19
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
20
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
7. clic pe butonul Run , , al barei de instrumente şi tabela rezultat este cea din Figura .
21
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Modificăm Expr1 în celula liniei Field în AN 2001, şi la fel numele celorlalte
coloane pentru a fi mai semnificative. Tabela rezultat este :
Capitolul 7 – Formulare
7.1. O privire asupra formularelor
1
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Un formular este o fereastră de tipul celor pe care le are la bază sistemul de
operare, în cazul nostru, Windows. Este un obiect având anumite proprietăţi –
denumire, titlu, dimensiune, poziţie, diverse proprietăţi ale fundalului sau ale
aspectului exterior sau scrisului în cadrul formularului etc. – metode (secvenţe de
cod de programare) asociate unor evenimente (clic, dublu-clic, clic dreapta,
mouse deasupra, obţinerea sau pierderea controlului, redimensionarea, acţionarea
unei taste etc.).
Figura 7. 1 – Formular
2
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
7.2. Detalii legate de obiectele vizuale gestionate de formulare
Detalii asupra tipurilor de obiecte
Există mai multe moduri de a caracteriza obiectele, dar suntem interesaţi doar în
următoarele trei categorii.
Exemplu. Dacă o casetă de text va afişa datele din cadrul câmpului Denumire din
cadrul tabelei Partners într-un formular, atunci proprietatea ControlSource se
va seta la valoarea “Partners.Denumire”; în cazul în care caseta de text se leagă
de o variabilă de memorie specifică aceluiaşi câmp, atunci aceeaşi proprietate va fi
configurată pe valoarea “m.Denumire”. Dacă vrem să punem într-un formular
anumite porţiuni din tabela Produse vom alege obiectul Grid, în timp ce
proprietatea RecordSource va lua valoarea “Produse”.
3
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
Un formular de Informatica
se poate utiliza la afişareaEconomică
unor secţiuni din una sau mai multe tabele
sau interogări, navigarea între înregistrări, actualizarea (inserare, modificare,
ştergere), procesare de date, manipularea componentelor bazei de date etc.
Tipuri de formulare
Formularele create în Access într-o anumită bază de date, vor fi
reprezentate în cadrul panoului de navigare, dedesubtul
benzii Forms şi însoţite fiind fiecare de icoana
specifică - .
4
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
4
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
multiînregistrare, de Informatica
ce conferă Economică
o perspectivă globală asupra sursei de date, putându-
se regăsi date mai facil. L-am întâlnit şi la introducerea/vizualizarea datelor în/din
tabele. Se aseamănă cu o fereastră BROWSE, unde câmpurile sunt în antetul
tabelului, iar valorile dispuse sub acestea, pe coloane. Este sub butonul Datasheet.
În modul Design View, formularele de acest tip se prezintă precum în imaginea
din partea dreaptă.
Split Form – Este un tip de formular mai complex, a cărui machetă este
divizată în două panouri. Panoul
superior este practic un formular de
tipul Form, iar cel de jos este de tip
Datasheet.
Cele două formulare sunt
corelate – similar cu partiţiile unei
ferestre BROWSE/EDIT, dispuse vertical, nu orizontal (una lângă cealaltă), o
celulă selectată dintr-o partiţie va genera şi în cealaltă partiţie aceeaşi selecţie.
Un astfel de formular poate combina avantajele celor două descrise
anterior: panoul de jos îl folosim pentru localizarea unei înregistrări, o selectăm,
fiindu-ne însă mai uşor s-o vizualizăm/modificăm în panoul superior.
Este sub butonul Multiple Items. În modul Design View, aspectul este cel
din imaginea din partea dreaptă.
Blank Form – Este un formular gol, nelegat la nicio sursă de date, care va putea fi
configurat de utilizator. Se deschide implicit în modul Layout View.
Form Design – Este un formular similar cu cel anterior, fiind însă deschis în
modul Design View în vederea proiectării.
Formulare interactive
Modal Dialog – Este un formular cu două butoane predefinite, sub
forma unei ferestre de tip modal. Implicit, nu este legată la nicio sursă de date.
5
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
ModuriDepartamentul
de vizualizarede specifice
Informaticaformularelor
Economică
În cazul formularelor există 3 moduri de vizualizare. Ele sunt prezentate în
cadrul butonului de tip listă ascunsă View al grupului cu acelaşi nume, fie din fila
Home, fie din fila contextuală Format.
6
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Acesta este şi motivul pentru care – atunci când nu este nicio tabelă selectată –
doar butoanele Blank Form, Form Design, More Forms (numai cu Form
Wizard, Modal Dialog) sunt active.
Pentru a avea o gamă mai largă de opţiuni la dispoziţie, se recomandă selectarea în
prealabil a tabelei care va sta la baza formularului.
7
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Putem selecta date din mai mult de două surse, însă nu întotdeauna
ajungem la rezultatul dorit. Dacă alegem câmpuri din surse de date multiple – dar
nu necorelate – ordinea în care tabele sunt luate în considerare atunci când alegem
diverse câmpuri, nu este importantă. Dacă avem două tabele-fiu şi doar una
părinte, atunci referinţele vor fi stabilite automat; dacă însă avem una sau mai
multe tabele-părinte şi doar o tabelă-fiu, atunci trebuie să specificăm care va fi
tabela-reper în afişarea datelor. Doar în astfel de cazuri, pasul adiţional apare
(fig.7.6.). Neavând obiect, nu va fi prezent nici în cazul surselor de date unice.
8
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
când vorDepartamentul de Informatica
fi toate deschise, deplasareaEconomică
indicatorului în formularul în care avem
sursa de date de referinţa, va genera automat filtrarea în formularul creat după
sursa referită, producând doar afişarea înregistrărilor corelate cu înregistrarea de
referinţă.
9
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
formular, de Informatica
în care vom avea Economică
atât elementele formularului principal, cât şi ale celui
subordonat. Deci, un formular care va mai conţine un subformular, sau mai multe.
Subformularele vor fi create automat şi ca obiecte distincte ale bazei de date. Deci,
vom avea toate subformularele separat şi un formular care conţine atât formularul
principal, cât şi aceste subformulare.
10
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
11
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
Open theDepartamentul
form to viewdeorInformatica Economicăfie se va deschide pentru
enter information),
reproiectarea lui (opţiunea Modify the form’s design).
12
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
modificarea de în
formularului Informatica Economică
modul Design sau Layout View. Dacă problemele de
genul celui de-al doilea exemplu se pot rezolva şi în Layout View, primul gen de
problemă necesită imperios utilizarea modului Design View, detaliat în
următoarea secţiune.
b. Crearea formularelor în Design View
Pentru gestiunea formularelor în acest mod de lucru, avem nevoie de:
Fereastra formularului deschisă în Design View;
Filele contextuale, în special gupul Controls din fila Design;
Meniu contextual;
Fereastra de proprietăţi (Property Sheet);
Lista de câmpuri (Field List);
Diverse utilitare auxiliare (Expression Builder, instrumente wizard pentru
controale, eventual Macro Builder, Code Builder).
Un formular poate fi creat de la bun început în modul de proiectare, sau se
poate modifica ulterior. În cazul primei variante, se va alege unul dintre butoanele
Blank Form sau Form Design din Create → grupul Forms. Pentru cea de-a doua
variantă se va comuta pe modul de proiectare: Home → View → Design View.
Dacă formularul e nou, va apărea atât fereastra de proiectare a unui formular (care
nu conţine niciun element), cât şi filele contextuale Design (vezi fig.7.11) şi
Arrange (fig.7.12).
Vom insista mai mult pe fila Design, filă din a cărui conţinut am omis
grupul Views şi Font, care aparţin de drept filei Home.
Formularul nou apare deschis în fereastra cu file multiple şi poartă un
nume generic: Form1, Form2 etc. În partea superioară apare o bandă în care este
înscris cuvântul , însoţit de o săgeată orientată în jos. Acest lucru
înseamnă că sub această bară şi până la următoarea, se va întinde zona Detail,
zonă în care dacă plasăm un element, va fi repetat pentru fiecare înregistrare a
13
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
sursei de de Informatica
date, cu eventualele filtrări Economică
dictate de relaţiile dintre surse şi filtrările
impuse de utilizator.
Implicit, aceasta este singura zonă prezentă în costructorul de formulare.
Adăugarea altor zone – antet şi subsol – se realizează fie din grupul Controls
opţiunea Title , fie din fila Arrange → Show/Hide → Form Header/Footer
. Diferenţa constă în faptul că la prima variantă apare în plus şi un control de tip
etichetă (Label) în care se va înscrie şi titlul formularului. Componentele înscrise
în aceste zone apar o singură dată la nivel de formular. Tot din Arrange se mai
pot insera două zone adiţionale, dar la nivel de pagină a formularului (se repetă o
singură dată în cadrul unei pagini): Arrange → Show/Hide → Page
Header/Footer . Se pot utiliza şi opţiunile meniului contextual în acest scop.
Toate zonele sunt ajustabile (prin glisări cu mouse-ul sau modificare proprietăţi).
Prin intermediul unui formular se asigură dialogul utilizatorului cu baza de
date sau o parte din aceasta. Un formular vid nu are însă nicio legătură cu datele.
Acest lucru se configurează din cadrul ferestrei Property Sheet. Apare pe ecran la
selectarea butonului cu acelaşi nume din fila Design, sau a opţiunii Properties din
meniul contextual. Relaţionarea datelor cu formularul se realizează prin
intermediul proprietăţii Record Source, după cum se observă şi în fig. 7.13.
trebuie neapărat ca în lista derulantă din partea de sus – Selection type – să fie
selectat Form.
Din cadrul listei de câmpuri se pot glisa în cadrul ferestrei formularului, fie
individual, fie mai multe odată. Rezultatul este apariţia pe formular a câmpurilor,
pentru fiecare existând perechea etichetă (Label) – casetă de text (TextBox).
Conţinutul etichetei – implicit având numele câmpului urmat de două puncte (:) –
poate fi editat direct în formular sau prin modificarea proprietăţii Caption. Caseta
de text va avea proprietăţile Control Source şi Name identice cu numele
câmpului. Nu se recomandă modificarea manuală a primei proprietăţi.
De multe ori în cadrul proprietăţilor – spre exemplu Control Source – suntem
nevoiţi să apelăm la expresii care depăşesc nivelul de complexitate cerut de
introducerea unei valori scalare sau a unui nume de câmp.
Caseta de text şi eticheta corespunzătoare unui câmp pot fi gestionate
împreună, dar şi separat. Atunci când se selectează unul dintre ele,
ambele vor fi însoţite de un marcaj de jur împrejur, iar în colţul
15
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
stânga-sus de Informatica
al fiecăreia apare un pătrăţelEconomică
de culoare închisă . Un astfel de marcaj
se poate observa în figura din dreapta. Chiar dacă apar marcaje pentru ambele
obiecte, doar unul dintre ele este selectat, cel de culoare mai vie. Chiar şi aşa,
anumite operaţiuni – precum mutarea – afectează ambele obiecte, atunci când
indicatorul specific al mouse-ului nu se află deasupra vreunuia din cele două
pătrăţele . Orice glisare care îşi are punctul de pornire în vreunul din acele
pătrăţele, se referă la obiectul căruia îi aparţine. Dacă am selectat doar unul dintre
cele două şi am acţionat tasta Del, sau am ales opţiunea Delete din meniul
contextual, atunci se va şterge acel obiect. La încercarea de ştergere doar a casetei
de text, se va produce şi ştergerea etichetei însoţitoare, chiar dacă n-a fost selectată
în prealabil.
Se pot efectua şi selecţii multiple, prin utilizarea butonului din fila
Design, prin încadrarea mai multor obiecte cu ajutorul mouse-ului, sau prin clicuri
pe obiecte individuale, concomitent cu acţionarea tastei Shift. Această operaţiune,
precum şi altele referitoare la selecţii multiple, se execută la fel ca şi în Visual
FoxPro).
Access dispune cam de o intreagă gamă de controale şi containere.
Majoritatea apar şi în imaginea din dreapta, altele sunt cazuri particularizate ale
acestora (ex. Title este un tip special de Label, PageNumbers e un tip de
TextBox).
Atunci când dorim doar text, alegem controlul Label , iar pentru
expresii variabile (câmpuri, funcţii, calcule aritmetice), selectăm TextBox .
Observaţie: După cum am văzut în paragrafele anterioare, fiecare casetă de
text va fi însoţită de câte o etichetă.
Totuşi, există cazuri când vrem să plasăm eticheta într-o zonă a
formularului (ex. în Page/Form Header), iar caseta de text în Detail. Acest lucru
este foarte greu de realizat cu o astfel de pereche, căci ele pot sta doar în aceeaşi
zonă. În astfel de cazuri, plasăm perechea în zona Detail. Apoi, vom şterge
eticheta care apare cu caseta de text, iar în locul ei vom lua un obiect de tip Label,
pe care îl plasăm în zona în care avem nevoie de el (Page/Form Header).
În afară de Label şi Text Box, avem următoarele obiecte Button, Option
Group, Toggle, Option Button Check Box, Combo Box, List Box, Image, Tab
Control, Subform/Subreport, Line, Rectangle etc. Trebuie doar să selectăm
obiectul şi să-l plasăm pe formular. La anumite obiecte – de obicei la containere şi
la cele care trebuie să asociem o mică secvenţă de cod – dacă butonul
este apăsat.
16
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
17
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
18
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor La
Departamentul de Informatica
pasul următor Economică
vom fi chestionaţi în legătură cu tipul relaţiei dintre
formularul principal şi subformular. Se poate alege fie relaţia existentă deja între
tabele, fie defini una nouă fig.7.18.
19
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
Exemplu.Departamentul de Informatica Economică
Avem obiectele cu numele PU, respectiv Cantitate şi avem de calculat preţul
unitar cu TVA, respectiv valoarea cu TVA.
Calculând mai întâi preţul amintit într-un obiect cu numele PUTVA (=PU *
124/100), la calculul valorii cu TVA, ne va fi mai uşor să scriem =PUTVA *
Cantitate, decât =PU * 124/100 * Cantitate.
In subformular, pentru fiecare produs din cel principal, vom avea cel puţin o
înregistrare. Lucrul acesta nu ne convine, deoarece pe noi ne interesează doar un
singur preţ, şi anume preţul actual.
Acest lucru impune o filtrare, astfel că va trebui să afişăm doar acea înregistrare
pentru care data curentă (memorată în caseta Data) se află în intervalul DataStart
şi DataFinal (câmpuri din tabela Istoric_Pret) al unei modificări de preţ.
20
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
eventualele probleme cudesetările
Informatica Economică
regionale, este de preferat să utilizăm expresii de
genul 24/100, în loc de 0,19 sau 0.19.
Mai trebuie să adăugăm cele două butoane. Alegem câte un control de tip
Button, pe care le plasăm pe formular. Dacă este activ utilitarul de asistenţă, va
trebui să urmăm câţiva paşi simpli.
Pentru al doilea buton se va selecta acţiunea Find Record din cadrul aceleiaşi
categorii. Pentru primul buton se va alege menţionarea unui text pe exteriorul său,
iar pentru celălalt se va trece o imagine miniaturală.
21
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Crearea macrocomenzilor
In Microsoft Access, foarte multe sarcini pot fi realizate cu ajutorul macromenzilor sau prin
intermediul interfetei grafice. In alte aplicaţii de baze de date, multe dintre aceste sarcini necesită
programare. Situația în care se va utiliza o macrocomanda sau cod Visual Basic forApplications
(VBA) depinde de cele mai multe ori de ceea ce trebuie făcut.
2
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
d.Crearea sau manipulareade Informatica Economică
obiectelor
In majoritatea cazurilor, crearea si modificarea unui obiect este mult mai usor de realizat în
fereastra Design a obiectului. Totusi, în unele situatii este posibil sa fie nevoie de manipularea
prin cod a definitiei unui obiect. Folosind VBA, se pot manipula toate obiectele din baza de
date și însasi baza de date.
f. Manipularea inregistrarilor
Codul VBA poate fi utilizat pentru a parcurge un setde inregistrari, inregistrare cu inregistrare, si
a executa o operatie pe fiecare inregistrare;in timp ce, macrocomenzile lucreaza cu intregul set
de inregistrari o dată.
Access oferă utilizatorilor un set puternic de acţiuni ce se pot programa şi stoca în obiecte macro.
Un ansamblu de acţiuni care împreună automatizează o anume activitate formează ceea ce în
practică numim o macrocomandă.
Un obiect macro poate stoca una sau mai multe macrocomenzi.
3
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
Acţiunile Access de Informatica
utilizate la construirea Economică se pot grupa funcţional după cum
de macro-comenzi
urmează : obiect, ferestre, transfer (import/export), control al executării aplicaţiei, interfaţa
cu utilizatorul, navigare între înregistrări.
Editorul de macro-comenzi afişează pentru fiecare acţiune argumentele specifice şi atribuie
unora valori implicite.
4
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
5
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Acţiuni pentru navigarea înregistrărilor bazei de date
6
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Actiuni pentru controlul executiei aplicatiei
7
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Crearea/executarea/modificarea obiectelor macro
Pentru a crea un obiect macro clic pe opţiunea Macro din tabul Macros&Code. Fiecare colecţie
de obiecte tip este desemnată printr-o etichetă distinctă şi se acţionează prin clic pe butonul care
efectuează comanda rapidă New. Ca efect pe ecran se afişează fereastra de editare Macro în
structura minimală.
În coloana Action, se trec acţiunile de executat, fiecare acţiune pe o linie distinctă. Precizarea
acţiunii se face prin selectare din lista derulantă afişată de Access.
Pentru fiecare acţiune selectată sunt precizate argumentele acţiunii în zona Action arguments
(pentru anumite argumente Access completează automat valorile implicite).
Precizarea valorilor argumentelor se realizează, de regulă, tot prin alegere din listele derulante
afişate de Access în funcţie de tipul acţiunii şi respectiv natura argumentului.
Coloana Comment este opţională; ea poate conţine explicaţii (comentarii) cu privire la acţiunea
selectată.
Exemplu : acţiunea OpenForm care la execuţie va deschide formularul intitulat Intr noi clienţi
(acest formular trebuie să fie creat înainte de a crea obiectul macro care conţine acţiunea de
deschidere a lui).
Obiectul macro creat se salvează prin comanda Save As din meniul File; moment în care se
redenumeşte obiectul macro prin tastarea numelui în zona de text Save Macro '… ' To din
caseta de de dialog Save As.
Numele Autoexec se poate atribui unui singur obiect macro dintr-o aplicaţie pentru a desemna
macro ce se execută automat la activarea aplicaţiei. Un obiect macro trebuie testat pentru a vedea
dacă acţiunile au fost corect programate.
Pentru testare, de regulă, se dă comanda ! Run din meniul Run ataşat ferestrei de editare a
obiectelor macro, sau se acţionează prin clic pe butonul de comandă Run cu pictograma ! din
bara cu instrumente asociate ferestrei de editare macro. Pentru a modifica conţinutul unui obiect
macro se deschide obiectul macro în mod Design. Modificările pot viza argumentele acţiunilor
existente, adăugarea de noi acţiuni, suprimarea unor acţiuni existente sau schimbarea ordinii
acestora.
8
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Exemplu TransferDatabase:
Grupuri de macro-comenzi
Un obiect macro poate conţine grupuri de acţiuni separate prin una sau mai multe linii albe. În
acest caz fiecare grup este desemnat printr-un nume de macro. Toate acestea se vor memora în
acelaşi obiect macro.
Exemplu: obiectul macro Group macro care conţine două macro numite DescTabelaParteneri şi
respectiv DescTabelaProduse.
În cadrul aplicaţiei se poate lansa în execuţie fiecare macro din grup. Access califică o
macrocomandă din grup pe structura
9
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
• Obiectul macro de Informatica
Test Cod client în care sunt Economică
incluse acţiunile :
• MsgBox pentru a afişa mesajul „Cod client eronat” în cazul în care condiţia [Cod client] < 20
este îndeplinită;
• CancelEvent, pentru a anula evenimentul care a cauzat executarea obiectului macro.
Prin condiţionarea acţiunilor se poate simula structura alternativă (If.... Then .... Else...) după
modelul :
<Nume macro1>
<condiţie> RunMacro pentru a executa obiectul macro <Nume macro 2>
acţiune 2
.............
.............
acţiune n
<Nume macro2>
acţiune 11
acţiune 12
................
.............
Exemplu:
Se cere ca la deschiderea bazei de date numită GVFact (prescurtare de la gestiunea vânzărilor) să
se afişeze pe ecran formularul TB (tablou de bord) şi meniul personalizat GestiuneVanzări care
să includă comenzile Introducere facturi, Introducere clienţi şi Părăsire aplicaţie.
Primele două comenzi deschid formulare pentru a introduce/actualiza date privind facturile şi
respectiv clienţii. Pentru a putea adăuga un meniu personalizat la un formular se construieşte un
alt obiect macro(în exemplul luat numele dat obiectului macro este MPVanzări) în care se
precizează acţiunea AddMeniu cu argumentele:
• Macro Name Gestiune vânzări;
• Menu Macro Name Comenzi;
• Status Bar Text Gestiune vânzări
Meniul personalizat astfel descris se instalează precizând la proprietatea Menu Bar a
formularului numele obiectului macro care conţine acţiunile de adăugare meniuri.
Unui formular i se pot asocia unul sau mai multe meniuri personalizate. Formularului Tablou de
bord i se asociază trei meniuri personalizate :
• Introducere date, care conţine comenzile Clienti, Facturi şi respectiv Produse (fiecare
comandă deschide un formular pentru introducerea datelor;
• Listare rapoarte, care conţine comenzile pentru listarea rapoartelor tip solicitate de utilizator;
• Sfârşit, pentru părăsirea aplicaţiei Access (acţiunea Quit)
10
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
Notă: Aceleaşi deefectua
comenzi se pot Informatica
şi prin Economică
intermediul evenimentului Click asupra butoanelor
de comandă prevăzute în zona de detaliu a formularului (Facturi, Produse, Clienţi şi respectiv
Produse facturate).
Comenzile meniurilor asociate sunt descrise în obiectele macro ComenziIntrDate,
ComenziListare şi respectiv Sfârsit.
Folosind obiectele tip macro care conţin acţiuni specifice meniurilor personalizate se pot crea
bare cu instrumente.
Access permite conversia conţinutului obiectelor macro în funcţii VBA (opţiunea Convert
Macro to Visual Basic din meniul Tools).
11
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
12
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
În concluzie,Departamentul
desi comenzile de Informatica
macro Economică
pot da soluții rapide problemelor simple, limitarile lor
determină necesitatea folosirii limbajului VBA pentru dezvoltarea soluțiilor mai complexe.
a. Module specifice unui anumit formular sau raport. Modulele specifice unui formular sau
raport sunt în general numite coduri din spatele formularelor (Code Behind Forms –
CBF). Rutinele din acest loc pot fi vizibile (cunoscute, apelabile) doar din modulul
respectiv de cod. Codul din spatele formularului sau raportului se poate accesa prin
acționarea pictogramei specifice codului VBA (dupa selecția obiectului respectiv) sau prin
apasarea celor trei puncte (…) din dreptul unui eveniment al paginii respective a unui
obiect apar_inând formularului sau raportului respectiv.
Daca procedura eveniment nu este creata, atunci automat un Wizard va crea structura acesteia,
adica instrucțiunile de declarare si sfârsit precum si completarea listei de parametri daca este
cazul.
Daca procedura eveniment a fost creata anterior, atunci se va afisa porțiunea din pagina de cod a
formularului sau raportului care conține respectiva procedura.
b. Modulele globale (generale), se pot afisa prin acționarea paginii Module, din fereastra
Database.
Foarte important este faptul că rutinele scrise în această zona pot fi vizibile (dacă sunt declarate
Public) nu numai din toate modulele de cod ale aplicației, dar chiar din obiecte ale aplicației, din
formulare, rapoarte, cereri sau tabele.
Exemplu. Daca în modulul global se gaseste o funcție declarata public, cu numele 'Prag', aceasta
va putea fi folosita în expresii din orice:
− modul general sau din spatele unui formular sau raport;
− controale calculate din formulare sau rapoarte;
− proprietați ale controalelor sau ale tabelelor (de exemplu Validation Rule, Default Value);
− criterii din cereri;
− câmpuri calculate din cereri;
− practic de oriunde este acceptata o expresie.
13
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
O funcție este un tip specialdede
Informatica Economică
rutina, datorita faptului ca poate întoarce o valoare, chiar în
numele ei.
Deci codul VBA poate fi gasit în rapoarte, formulare si module de cod. În formulare si rapoarte,
codul VBA poate fi plasat în rutinele (funcții sau proceduri) definite de utilizator, ca si în
procedurile eveniment, pe când în modulele generale, codul VBA este plasat numai în rutinele
definite de utilizator.
De fapt, pentru a construi cu succes rutine în cod VBA, sunt foarte importante două lucruri:
• ce determina stabilirea domeniului de vizibilitate (valabilitate) al variabilelor si rutinelor;
• cum se transmit si se întorc valorile din rutine;
În concluzie, putem spune ca programarea în VBA nu este procedurala, adica nu avem de-a face
cu un program clasic, cu început si sfârsit, care rezolva pașii unui algoritm. Codul VBA este
practic format din rutine, care sunt executate numai atunci când se produc anumite evenimente.
Deci codul VBA implică realizarea unui programări discontinue.
14
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
• toate instrucțiunile de Informatica
au o anumita Economică
sintaxa care ține seama de numarul de rânduri pe care
sunt scrise;
• semnul de continuare a unui rând este format din doua caractere, spațiu si liniuța cu shift ( _ );
• semnul pentru începutul unui comentariu este apostroful ('). Sfârsitul comentariului este la
sfârsitul rândului.
a. Editarea rutinelor
Sunt oferite facilitațile curente de editare promovate de Microsoft în produsele sale. Există și mai
multe trucuri speciale destinate activității de programare, printre care:
− recunoasterea cuvintelor cheie ale limbajului;
− afisarea listelor cu proprietațile si metodele obiectelor utilizate;
− marcarea recunoasterii unei denumiri date de utilizator (unei variabile, rutine etc.) prin
refacerea formei introduse la declararea acesteia;
În VBA sistemul nu face deosebire între literele mari si mici. Daca la declararea unui obiect, sunt
folosite combinații de litere mari si mici, (după anumite convenții), atunci când se vor introduce
denumirile respective cu acelasi tip de litera, sistemul va reface forma inițiala a lor. În acest fel
programatorul va sesiza imediat eventualele greseli comise la introducerea denumirii obiectelor.
b. Compilarea rutinelor
Exista 3 comenzi de compilare :
− compilarea întregii aplicații si salvarea codului obiect rezultat;
− compilarea întregii aplicații dar fara modificarea codului obiect existent;
− compilarea numai a modulelor de cod deschise (încarcate în memorie).
Prezența erorilor de compilare este marcata punctual si este însoțită de informațiile necesare unei
depanări rapide.
De asemenea, sistemul încă din faza de editare semnalează imediat erorile de compilare
depistabile în acel moment (de exemplu cele referitoare la corectitudinea sintaxei instrucțiunilor).
c. Execuția dupa o comanda manuala (deci nu ca urmare a producerii unui
eveniment) a rutinelor
O rutină fara parametri se poate executa direct din modulul de cod. Acest lucru se face:
o prin plasarea cursorului pe instrucțiunea de la care se doreste începerea execuției; în felul
acesta rutina se poate executa pornind de la oricare dintre instrucțiunile sale executabile;
o prin acționarea uneia dintre cele 4 comenzi de RUN si anume:
− Run: execuția tuturor instrucțiunilor rutinei (eventual si a rutinelor apelate) fara oprire;
− Step Into: execuția tuturor instrucțiunilor rutinei (eventual si a rutinelor apelate) cu oprire
dupa fiecare instrucțiune executata;
− Step Over: execuția tuturor instrucțiunilor rutinei (eventual si a rutinelor apelate) cu oprire
dupa fiecare instrucțiune executată în rutina apelanta, dar fără oprire în rutinele apelate;
− Step Out: execuția tuturor instrucțiunilor pâna la sfârsitul rutinei principale, dar cu oprire
numai în rutinele de rang superior celei din care s-a dat aceasta comanda; se foloseste când se
doreste reluarea execuției dintr-o rutina apelata, dar fara oprire la instrucțiunile din aceasta.
15
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Un tip de date este noțiunea folosită pentru a defini mulțimea valorilor pe care le pot avea datele,
dimensiunea efectiva pe care o ocupa în memorie datele, precum si operațiile ce se pot efectua
asupra acestor date.
VBA pune la dispoziția programatorului tipuri de date predefinite (standard), cum ar fi cele
pentru numerele întregi, numerele reale, caractere sau booleene (logice), precum si posibilitatea
de declarare a unor tipuri de date proprii (definite de programator) cu ajutorul instrucțiunii Type.
Tipurile de date pot fi:
− elementare (simple) – o variabilă de acest tip va conține o singura valoare;
− structurate – o variabilă de acest tip va conține mai multe valori elementare.
16
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Utilizarea tablourilor se face numai prin referirea fiecarui element în parte (folosind numele
tabloului indexat la elementul respectiv). Deci în VBA nu se pot efectua operații direct cu
întreaga structura a tabloului; de exemplu o mutare de date dintr-un tablou în altul cu aceeasi
structura se poate face numai prin mutarea separata a tuturor elementelor tabloului.
Tablourile de octeți constituie o excepție la ultima afirmație.
Exemplu. Pentru a stoca cheltuielile pe care le facem în fiecare zi a unui an vom declara o
singura variabila de tip Array, cu 365 elemente de tip numeric, 365 variabile individuale. Fiecare
element din tablou va conține o singura valoare. Implicit un tablou se indexeaza de la 0.
Declararea variabilei se va face:
Sub ExempluArray()
Dim cCheltuieli(364) As Currency
Dim intI As Integer
For intI = 0 to 99
cCheltuieli(intI) = 22
Next
End Sub
17
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Referirea la variabilele de un tip definit de utilizator, se poate face:
− pentru întreaga structură (folosind numele variabilei);
− pentru fiecare element în parte (folosind numele elementului respectiv calificat – cu semnul
punct – cu numele variabilei).
Declararea unui tip de date nu se poate face decât la nivelul unui modul de cod. Deci nu se pot
declara tipuri de date la nivelul unei rutine.
Exemplu.
Option Compare Database
Option Explicit
Public Type Person 'se declara tipul de date la nivelul modulului
Nume As String
Prenume As String
Virsta As Integer
End Type
Sub TypeTest ()
Dim Primul As Person, Doilea As Person 'se declara 2 var. de tip Person
Primul.Nume = "Ionescu" 'se folosesc elementele tipului Person
Primul.Prenume = "Ion"
Primul.Virsta = 21
Doilea = Primul 'se transfera întregul tip de data Person
MsgBox Doilea.Nume & " " & Doilea.Prenume & ", _
varsta=" & Doilea.Virsta & " ani"' afiseaza si valoarea unei expresii
End Sub
8.5. Variabile
Variabilele sunt nume de locații de memorie care conțin valori de un anumit tip, ce se modifica
în timpul execuției programului. Variabilele se caracterizează prin:
Domeniul de vizibilitate: se refera la momentul când acestea apar si dispar din 'codul sursa'.
Variabilele apar atunci când sunt declarate prima data, dupa care apar si dispar în funcție de
domeniul lor de vizibilitate. În momentul când variabilele apar (devin vizibile), li se pot atribui
18
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
valori de unDepartamentul
anumit tip si potde Informatica
fi folosite Economică
în cadrul instrucțiunilor. În rest, ele sunt invizibile si nu
se pot referi.
Nespecificarea unui tip de date duce la crearea unor variabile de tip Variant.
Se pot declara mai multe variabile pe acelasi rând, separate prin virgula, dar este obligatorie
folosirea explicita a tipului de data pentru fiecare variabila.
O greseala obisnuita este declararea mai multor variabile pe aceeasi linie, fara a se specifica tipul
pentru fiecare variabila declarata ca în exemplul de mai jos.
În acest caz, numai ultima variabila este declarata ca o variabila de tip Integer (întreg). Celelalte
variabile sunt declarate de tipul Variant (tipul implicit al unei variabile este variant).
Aceasta eroare este foarte periculoasa, deoarece unele limbaje de programare (PASCAL),
folosesc o asemenea notare pentru a declara toate variabilele de pe aceeasi linie de acelasi tip.
19
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
Dim AnulDepartamentul
As Variant de ~ Informatica
Dim Anul Economică
Introducerea instrucțiunii declarative Option Explicit în fiecare modul, formular sau raport se
poate face automat prin activarea opțiunii Require Variable Declarations (cere declarații de
variabile) din meniul Tools | Options | Editor.
Cea mai eficienta si mai sigura metoda de declarare a variabilelor este de a folosi în totalitate
instrucțiunea declarativa Dim, pentru fiecare variabila, ca în exemplul urmator:
Asa cum se vede, acest tip de declarație conține atât numele variabilei, cât si tipul datelor pe care
le poate conține. Acest lucru permite compilatorului sa intercepteze erori de genul memorarii
unui sir într-o variabila de tip întreg.
De asemenea, prin selectarea celui mai scurt tip de date pentru fiecare variabila, se reduc
substanțial resursele necesare executarii programului.
Deci variabilele globale sunt vizibile din orice rutina aparținând modulului în care au fost
declarate.
Valoarea variabilei poate fi schimbata de orice subrutina sau funcție din modulul respectiv.
20
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
În urmatorulDepartamentul de globala
exemplu variabila Informatica Economică
miCounter:
− ia valoarea 20 în procedura Fact20;
− ia valoarea 10 în procedura Fact10;
− este afisata valoarea care se gaseste în ea în procedura Afisez.
Observații:
− convenția de numire a variabilei modale prin folosirea literei m ca prefix al numelui acesteia.
Aceasta o face sa fie usor recunoscuta de programator ca o variabila de nivel modul (globala);
− folosim declarațiile de nivel modul numai pentru variabilele care trebuie sa fie vazute din mai
multe rutine;
− încercăm să evităm (atunci când este posibil) utilizarea variabilelor globale. Această metodă
face codul mai modular si mai usor de depanat.
Pentru declararea variabilelor publice se foloseste cuvântul cheie PUBLIC, în loc de DIM.
Option Explicit
Public piCounter As Integer
De obicei, convențional se indică tipul public al unei variabile, folosind prefixul p la numele
acesteia. Rutina următoare, atașata evenimentului Click al butonului de comanda cmdPublic,
dupa ce face 50 variabila publica piCounter, o afiseaza.
Se poate folosi cuvântul cheie PRIVATE, în loc de DIM, pentru a declara variabile private în
secțiunea de declarații generale a modulului de cod, adica variabile care nu sunt vizibile decât de
rutinele aparținând modulului respectiv de cod.
Variabile Statice
Variabile statice se pot declara numai în rutine, prin folosirea cuvântului cheie STATIC, în loc
de cuvântul cheie DIM. Variabilele statice au proprietatea de a-si pastra valoarea între două
apeluri ale rutinei în care au fost declarate.
Exemplul următor ilustrează diferența dintre variabilele locale si cele statice. Deoarece
variabilele locale sunt inițializate la fiecare apel al codului, de fiecare data când se execută
aceasta procedura, se va afisa numarul 1.
De fiecare data când acest cod este executat, instruc_iunea declarativa Dim defineste variabila
iCounter si o inițializeaza cu 0.
Ea este puțin diferita fața de urmatoarea secvența de cod, care ilustreaza folosirea variabilelor
statice:
De fiecare data când acest cod este executat, variabila cu numele iCounter este incrementata si
reținuta. Deci la prima execuție se va afsa 1, la a doua se va afisa 2, la a treia se va afisa 3 etc.
Practic o variabila statica este definita numai la primul apel al rutinei în care a fost declarata.
Deoarece, fiind statica, nu mai este distrusa la terminarea rutinei, la urmatoarea apelare nu va
mai fi definita si va avea deci valoarea anterioara apelului.
22
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
determinândDepartamentul de Informatica
ca variabila respectiva Economică
sa fie locala, modala (globala) sau publica si sa poata fi
folosita numai într-o rutina, la nivelul unui modul de cod sau în toate modulele de cod.
Ar trebui făcut tot posibilul ca majoritatea variabilelor din cod să fie locale, deoarece acestea
sunt ferite de o eventuala modificare (accidentala) de catre alte rutine.
Durata de viață sau valabilitate a variabilelor reprezinta, asa cum am mai aratat, timpul cât
variabila are alocat spațiu în memorie. Fara alte instrucțiuni speciale, o variabila se creeaza în
momentul în care modulul în care este declarata, este apelata si dispare (se distruge, elibereaza
spațiul de memorie ocupat) în momentul terminarii modulului respectiv.
Astfel:
− variabila locala, declarată într-o procedura eveniment, va fi alocata numai în timpul
execuțieiprocedurii respective (bineînțeles daca nu este statica);
− variabila globala, declarata într-un modul de cod al unui formular, va fi alocata cât timp
formularul respectiv va fi în execuție;
− variabila publica, declarata într-un modul general de cod va fi alocata în tot timpul execuției
aplicației.
Variabilele Array (tablou) se declara la fel ca orice alta variabila folosindu-se instrucțiunile
declarative Dim, Static, Private, sau Public. Diferența fața de declararea unei variabile simple
este aceea ca la tablouri, între paranteze, trebuie sa se specifice pentru fiecare dimensiune – în
ordine si separate prin virgula daca sunt mai multe dimensiuni – valoarea minima (de obicei se
omite fiind implicita) si maxima a indicelui dimensiunii respective.
Asa cum se observa, marginea de jos a indicelui a fost omisa. Ea implicit se considera a avea
valoarea 0. Totusi marginea de jos a indicelui se poate fixa la valoarea 1, daca este introdusa în
modulul respectiv de cod, în secțiunea de declarații generale, instrucțiunea declarativa Option
Base 1.
Exemplu. Declarația
Dim MyArray (9, 10) As Integer
va crea un tabel cu 2 dimensiuni, cu 10 si respectiv 11 elemente, cu primul indice cu valori între
(0 - 9) si al doilea indice cu valori între (0 - 10), în care toate cele 110 elemente (celule) sunt de
tip Integer.
Ca orice declarație care nu specifica tipul, si tablourile declarate fara tip sunt de tip Variant. În
acest caz, fiind Variant, fiecare element va ocupa 16 bytes daca este numeric sau 22 bytes daca
este string. Deci la tablouri mari se poate ajunge la un consum mare de memorie, ceea ce trebuie
sa determine o rezerva în folosirea tablourilor de Variant.
23
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
În timp ce tablourile de Informatica
cu dimensiuni Economică
fixe vor ocupa din etapa de compilare o anumita dimensiune
de memorie care nu mai poate fi modificata în timpul execuției, tablourile dinamice pot sa-si
modifice dimensiunile în timpul execuției.
Un tablou dinamic se declara la fel, cu Static, Dim, Private sau Public, făra însa a se specifica
nimic între paranteze.
Dim NumeTablou () As TipDeData
Cu instrucțiunea executabila ReDim (cu o structura asemanatoare cu cea a lui Dim), care se
poate plasa oriunde în cod dupa declararea unui tablou dinamic, se va redimensiona în momentul
execuției acesteia tabloul cu noile dimensiuni, eventual putându-se schimba si tipul de date.
Instrucțiunea ReDim provoaca pierderea datelor din tabloul pe care îl redimensionam. Pentru a se
evita acest lucru se poate folosi clauza Preserve. Folosirea acestei clauze nu permite însa
modificarea numarului de dimensiuni sau a marginii de jos ai indecsilor.
Utilizarea tablourilor
Un tablou poate fi utilizat ca orice variabila simpla de tipul respectiv. Referirea unui element al
tabloului se face prin numele tabloului, urmat între paranteze de indicele (indicii) elementului
respectiv.
Exemplu.
Sub FillArrayMulti ()
Dim intI As Integer, intJ As Integer
Dim sngMulti (1 To 5, 1 To 10) As Single
For intI = 1 To 5
For intJ = 1 To 10
sngMulti (intI, intJ) = intI * intJ ' indroduce în fiecare element _
produsul indicilor elementului.
' afiseaza indicii elementului si valoarea din acesta.
MsgBox " Tablou ( " & intI & ", " & intJ & " ) = " & sngMulti
(intI, intJ)
Next intJ
Next intI
End Sub
24
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
8.6. Constante
Prin declararea unei constante, se poate atribui unui nume, o valoare. Aceasta se face prin
instrucțiunea declarativa Const. Dupa declarare, o constanta nu îsi mai poate modifica valoarea.
Exemplu. Public Const conAge As Integer = 34 ' conAge este o constanta _ Publica, Integer, cu
valoarea 34.
25
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
− Instrucțiuni executabile, de
careInformatica Economică
reprezinta descrierea unei acțiuni pe care o va efectua sistemul
de calcul, în special privind datele aplica_iei (If, For, Do etc.).
Ca exemplu de operații pe care le face unitatea centrala a sistemului de calcul sunt operațiile de
adunare, scadere, citire, scriere, comparație, etc.
Limbajele moderne de programare au un set redus de instrucțiuni complexe:
− declararea structurilor de date;
− instrucțiunea de atribuire – prin care se calculeaza expresii;
− structurile de control – prin care se determina "traseul" printre instrucțiuni, adica ordinea în
care se executa instrucțiunile;
− declararea si apelarea rutinelor;
− crearea modulelor de clase de obiecte;
− crearea si manipularea obiectelor.
Practic, instrucțiunile executabile ale limbajelor moderne de programare sunt instrucțiunea de
atribuire si instrucțiunile prin care se realizeaza structurile de control. Alte operații necesare
unei aplicații (ca de exemplu executarea opera_iilor de Input/ Output), sunt realizate prin
rutine din bibliotecile de obiecte, funcții si proceduri disponibile limbajului respectiv de
programare.
Totusi compilatorul încearcă trecerea peste anumite incompatibilitați, a căror rezolvare este
evidentă, efectuând automat conversiile între tipuri diferite de date, daca este posibil.
Exemplu.
Operatorii sunt asezați de la stânga la dreapta în ordinea prioritații lor în execuție, care este în
general cea obisnuita din matematica. Parantezele rotunde sunt folosite pentru stabilirea unei
ordini explicite a prioritații în execuție a operațiilor.
Asa cum am mai aratat, daca un termen al unei expresii este NULL, atunci si rezultatul expresiei
este tot NULL. Spunem ca NULL-ul se propaga în expresii. Totusi exista o excep_ie, si anume la
operatorul de concatenare a sirurilor, &: daca un termen este NULL, iar celalalt nu este NULL,
atunci rezultatul va fi chiar termenul diferit de NULL.
Valoarea EMPTY în expresii este considerata, în func_ie de tipul de date pe care îl reprezinta,
chiar valoarea cu care se ini_ializeaza variabilele de tipul respectiv (astfel, în expresii, daca un
termen numeric este EMPTY, atunci se va considera = 0; daca este logic = False; daca este string
= sir vid; etc.).
Structura secvențială
Reprezinta execuția secvențiala a instrucțiunilor, în ordinea în care au fost scrise. Nu necesita
folosirea unei instrucțiuni.
27
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Structura al ternativă
Reprezinta execuția din mai multe grupuri de instrucțiuni introduse numai a unui singur grup, în
funcție de evaluarea unor condiții.
If condiție Then
Grup 1 de instrucțiuni
[Else
Grup 2 de instrucțiuni]
End IF
Structura If... Then... Else evalueaza daca condiția este adevarata sau falsa. Daca:
□ condiția este adevarata, vor fi executate toate instrucțiunile dintre If si Else (Grup 1
de instrucțiuni);
condiția este falsa, vor fi executate toate instrucțiunile dintre Else si End If (Grup 2 de
instrucțiuni).
Folosirea clauzei Else este opționala. O condiție cu rezultatul NULL este tratata ca si cum ar fi
FALSE.
Exemplu.
Private Sub cmdIf_Click () ' evenimentul click al unui buton de comanda
If IsNull(Me!txtValue) Then ' Condiția testeaza daca în controlul txtValue, este
introdusa o valoare. Acest lucru se face cu funcția IsNULL, studiata în alt modul
MsgBox "Trebuie sa introduceti o valoare"
Else
28
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
MsgBox "AtiDepartamentul
introdus:"de Informatica Economică
& Me!txtValue
End If
End Sub
Aceasta instrucțiune evalueaza mai multe condiții formate prin verificarea egalitaților între
valoarea variabilei atasate instrucțiunii (NumeVariabila), si valorile din dreptul cuvintelor cheie
CASE (ValoareI).
Condițiile sunt evaluate pe rând, în ordinea plasarii lor în instrucțiune, pâna când se gaseste una
adevarata. Dupa gasirea unei condiții advarate atunci se va executa grupul corespunzator de
instrucțiuni, dupa care instrucțiunea Select Case se termina, programul continuând cu prima
instrucțiune plasata dupa aceasta.
Daca toate condițiile sunt false atunci se vor executa – daca exista – instrucțiunile dintre Else ….
End Select (Grup else de instrucțiuni).
Daca mai multe condiții sunt adevarate, atunci se va executa numai un singur grup de instrucțiuni
si anume cel aflat dupa prima condiție gasita adevarata.
Exemplu.
Procedura urmatoare este atasata evenimentului Click a unui buton de comanda cu numele
cmdCase, care se afla într-un formular, în care se mai afla si un control textbox cu numele
txtValue. Aceasta secvența se va executa numai atunci când se va face click pe butonul de
comanda cu numele cmdCase.
Private Sub cmdCase_Click ()
Dim IResponse As Integer
' Me!NumeControl este o expresie prin care se acceseaza datele aflate _ într-un control plasat în
formularul respectiv.
' Un control se comporta ca o variabila de tip variant.
' Daca controlul este NULL atunci nu este introdusa nici o valoare.
If IsNull(Me!txtValue) Then
iResponse = 0
Else
IResponse = Val(Me!txtValue) 'VAL transforma în numar un string.
End If
Select Case iResponse
Case 0
MsgBox "Trebuie sa introduceti un numar"
Case 1 To 5
MsgBox "Ati introdus o valoare intre 1 si 5"
Case 7, 11, 21
MsgBox "Ati introdus 7, 11 sau 21"
Case Else
MsgBox "Ati introdus un numar incorect"
End Select
End Sub
30
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul
Aceasta procedura utilizeazade
în Informatica
prima parte oEconomică
instrucțiune If pentru a evalua daca txtValue este
Null, caz în care se memoreaza un zero într-o variabila numita iResponse. În caz contrar,
valoarea conținuta în controlul txtValue este memorata în iResponse. Instrucțiunea Case
evalueaza conținutul variabilei iResponse. Daca valoarea este 0, este afisata o caseta de text cu
mesajul "Trebuie sa introduceți un numar".
Daca valoarea este între 1 si 5 inclusiv, este afisata o caseta de text conținând mesajul "Ați
introdus o valoare între 1 si 5". Daca utilizatorul introduce 7, 11 sau 21, este afisat un mesaj
corespunzator. În celelalte cazuri, utilizatorul primeste un mesaj care indica introducerea unui
numar incorect.
Folosirea clauzei Else este opționala. O condiție cu rezultatul NULL este tratata ca si cum ar fi
FALSE.
Exemplu.
Sub TestElseIf()
Dim V1 As String
Dim V2 As String
V1 = InputBox("V1=")
V2 = InputBox("V2=")
If V1 = "" Then 'nu se introduce valoare în V1- sir gol
MsgBox "In V1 nu este nici o valoare"
ElseIf V2 = "" Then
MsgBox "In V1 este ceva, dar nu si in V2"
Else
MsgBox "Valorile introduse:V1=" & V1 & "; V2=" & V2
End If
End Sub
31
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Structura repetitivă
Reprezinta execuția repetata a unui anumit grup de instrucțiuni, numit ciclu sau bucla, pâna când
o condiție ia o anumita valoare.
Instrucțiunea Exit Do provoaca iesirea forțata din ciclu. De obicei se executa în funcție de
evaluarea unei condiții într-o instrucțiune IF.
Este permisa folosirea instrucțiunii Do si fara nici o condiție. În acest caz este obligatorie
inserarea în ciclul Do a unei instrucțiuni Exit Do sau Exit Sub | Function, pentru a nu se genera
un ciclu fara sfârsit.
Condiția este evaluata în funcție de locul unde este plasata în instrucțiune si anume:
− la prima forma a instrucțiunii (cea din stânga) – înaintea executarii ciclului;
− la a doua forma a instrucțiunii (cea din dreapta) – dupa executarea ciclului.
Ciclul se executa minim de la:
− prima forma a instrucțiunii (cea din stânga) – se poate ca ciclul sa nu se execute de loc;
− a doua forma a instrucțiunii (cea din dreapta) – ciclul se va executa minim o data.
32
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
Exemplu. Departamentul de Informatica Economică
Private Sub cmdLoop1_Click ()
Dim iCounter As Integer
iCounter = 1
Do While iCounter < 5
MsgBox iCounter
ICounter = iCounter + 1
Loop
End Sub
Daca secvența de cod trebuie sa fie executata necondiționat cel puțin o data, se va folosi
urmatoarea structura:
Exemplu.
Private Sub cmdLoop2_Click ()
Dim iCounter As Integer
iCounter = 5
Do
MsgBox iCounter
ICounter = iCounter + 1
Loop While iCounter < 5
End Sub
Procedura va afisa un mesaj cu numarul 5. Acest cod va fi executat cel puțin o data, indiferent de
valoarea din iCounter, deoarece evaluarea condiției se face dupa executatea ciclului.
Structura Do... Loop While|Until face evaluarea condiției dupa executarea ciclului si de aceea
execuția acestuia este asigurata cel puțin o data.
33
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
b) Structura repetitiva cu contor. Instrucț iunea For…Next
Repeta un ciclu de un anumit numar de ori.
a) se determina în funcție de valoarea (pozitiva sau negativa) pe care o are pasul (step),
condiția de terminare a ciclului si anume:
− Daca PAS >=0, condiția va fi: contor > end;
− Daca PAS < 0, condiția va fi: contor < end;
34
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Exemplu :
For I = 1 To 10
For J = 1 To 10
For K = 1 To 10
...
Next
K
Next
J
Next
I
Într-un For trebuie evitată schimbarea valorii contorului. Structura For... Next este
folosită atunci când sunt un numar exact de iterații de executat.
Exemplu.
Private Sub cmdForNext_Click
() Dim iCounter As Integer
For iCounter = 1 To
5 MsgBox iCounter
Next
iCounter
End Sub
Exemplu.
Private Sub cmdForNext_Click
() Dim iCounter As Integer
For iCounter = 5 To 1 Step
-1 MsgBox iCounter
Next
iCounter
End Sub
Capitolul 9. Rapoarte
Un raport reprezintă un mod formatat şi organizat de prezentare al datelor. Majoritatea
SGBD-urilor dispun de constructori specifici, ce permit proiectarea şi generarea de
rapoarte.
Rapoartele sunt informaţia care poate fi extrasă din tabele şi sau interogări/vederi, ce
poate fi afişată într-un mod organizat şi formatat, fie pe ecran , fie imprimat, fie stocat în
cadrul unor fişiere text.
Ca obiect, un raport are două componente:
Componenta de date – include sursele 35 de date ce susţin raportul
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Componenta de vizualizare – constă în benzi şi zone, precum şi în obiecte ce
fac legătura cu sursele de date ale raportului.
După cum se poate vedea în Figura 9.1, există mai multe moduri de a crea un raport şi
anume:
Report – se va construi în mod automat un nou raport (folosind configurările
implicite) pentru obiectul selectat din cadrul listei de obiecte;
Labels – duce la construirea asistată a unui set de etichete cu ajutorul
utilitarului Label Wizard care au ca sursa de date o tabelă sau o interogare din
baza de date. Se pot selecta diverse dimensiuni ale etichetei, diverse formatări
ale caracterelor, etc;
Blank Report – permite construirea unui nou raport. Câmpurile existente în
cadrul tabelelor bazei de date se vor introduce în macheta raportului prin
metoda drag-and-drop;
36
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica
Report Wizard Economicăasistată a unui nou raport folosind
– permite construirea
utilitarul Report Wizard;
Report Design – permite construirea unui nou raport pornind de la zero. Oferă
o liberate totală în ceea ce priveşte configurarea proprietăţilor raportului şi a
obiectelor din acesta.
Pasul al doilea permite gruparea datelor, utilizatorul poate alege, dintre câmpurile
selectate anterior, un indicator care să constituie criteriul de grupare a datelor. În partea
dreaptă a ferestrei sunt indicate câmpurile selectate, în ordinea stabilirii lor în pasul
anterior. În cazul în care se doreşte ca un câmp anume (din partea stângă a ferestrei) să
devină cheie de grupare, acest câmp se instalează în partea dreaptă, ca şi cap de pagină
într-un chenar distinct, iar celelalte câmpuri se aliniază mai jos.
37
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
38
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Pasul
Departamentul de Informatica
patru permite Economică
stabilirea modului de afişare a datelor în cadrul raportului,
putând alege din mai multe moduri (fig.9.5) precum şi orientarea paginii raportului
(Portrait sau Landscape). Se poate forţa afişarea raportului pe lăţimea unei singure pagini
prin ajustarea lăţimii fiecărui câmp afişat.
Pasul 5 permite alegerea, dintre stilurile predefinite, a stilului de tipărire pe care dorim să-l
conţină raportul.
39
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
40
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
Se pot “trage”(aduce) câmpuri ale tabelului selectat pe suprafaţa de editare (details)
a raportului. Page Header conţine de obicei titlurile de coloană, iar Page Footer poate
conţine data editării, subtotalizări de pagină, etc.
Odată introdus un obiect se pot aduce modificări din fereastra de proprietăţi (se
procedează în acelaşi mod ca şi în cazul obiectelor introduse în cadrul formularelor). Tot
din fereastra Properties se pot aduce modificări întregului raport sau oricărei secţiuni a
acestuia. În cadrul acestei ferestre se pot vizualiza fie toate proprietăţile (tab-ul All) fie
proprietăţile împărţite pe categorii (Format, Data, Event Other). Dintre proprietăţile
importante amintim:
1. Categoria Format permite modificarea proprietăţilor legate de modul în care arată
raportul:
o Caption - reprezintă titlul raportului, afişat în fereastra de titlu;
o Default View - prezintă modul iniţial de afişare al raportului. Report View
afişează raportul, Print Preview afişează raportul înaintea imprimării;
o Picture - permite asocierea unei imagini personalizate raportului;
o Fit to Page - forţează încadrarea datelor din raport pe lăţimea unei pagini;
o Border Style - permite alegerea tipului de ramă pentru fereastra în care este afişat
raportul;
o Scroll Bars - permite doar afişarea barei de deplasare orizontală, verticală, a
ambelor bare sau a niciuneia;
o Close Button - afişază sau ascunde butonul de închidere al ferestrei;
o Min Max Buttons - afişază sau ascunde butoanele de minimizare sau maximizare a
ferestrei;
2. Categoria Data permite modificarea proprietăţilor legate de datele afişate în cadrul
raportului:
o Record Source - permite selectrarea sursei de date pe care se bazează raportul.
Sursa de date poate fi un tabel, o interogare sau o comandă SQL. Prin apăsarea
butonului din dreapta câmpului se vor afişa toate tablelele şi interogările din baza
de date. Prin apăsarea butonului din dreapta câmpului se va deschide
constructorul de expresii (Expression Builder) care permite definirea unei surse de
date personalizate;
o Filter - permite aplicarea unei expresii care să filtreze înregistrările afişate în cadrul
raportului;
o Filter on Load - permite aplicarea filtrului la încarcarea raportului sau ulterior;
o Order By - permite stabilirea unei ordini de afişare a datelor;
o Order By on Load - permite aplicarea ordonării la încarcarea raportului sau ulterior;
o Allow Filters - stabileşte permisiune pentru aplicarea filtrelor.
3. Categoria Event permite scrierea unor bucăţi de cod care se va executa în cazul
apariţiei evenimentului respectiv.
4. Categoria Other grupează diverse alte proprietăţi ale raportului:
o Toolbar - permite asocierea unei bare de instrumente raportului;
o Menu Bar - permite afişarea unei bare de meniuri raportului;
o Shortcut Menu Bar - permite asocierea unui meniu contextual raportului;
o Use Default Paper Size - permite folosirea mărimii foii din setările implicite
al imprimantei.
41
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
42
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
43
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
In al treilea pas, selectăm câmpul din articol care va constitui conţinutul etichetei.
44
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Intrucât
Departamentul
eticheteledepoştale
Informatica Economică
vor fi generate pentru fiecare articol editat, în pasul al
patrulea se poate solicita eventuala sortare a articolelor etichetate.
In ultimul pas se salvează eticheta, dându-i un nume.
In final avem disponibil un număr de etichete corespunzător numărului de articole
din tabela/interogarea sursă.
Pentru a adăuga un text sau o imagine în antetul sau subsolul unui raport, este necesar să
deschidem raportul prin efectuarea unui clic dreapta pe numele tabelului şi alegerea din
meniul contextual apărut a opţiunii Design View (Figura 9.38.). Fereastra de editare a
raportului va fi afişată.
Pe ecran va fi afişată filele Report Design Tools – Design, Report Design Tools –
Arrange şi Report Design Tools – Page Setup corespunzătoare constructorului de
rapoarte, cu ajutorul cărora putem realiza diferite modificări în raport. Pentru a introduce
un text în antet sau în subsol, va trebui, cu ajutorul mouse-ului, să selectăm antetul sau
subsolul, să efectuăm click pe obiectul dorit (de obicei o etichetă) şi apoi, în spaţiul creat,
să introducem textul dorit.
Gruparea datelor
Dacă în momentul în care am creat raportul nu am dorit gruparea datelor după diferite
criterii, putem realiza acest lucru cu ajutorul comenzii Sorting and Groupping. Această
comandă poate fi apelată din fila Report Design Tools – Design. Pe ecran va apărea
fereastra Sorting and Grouping în care putem alege ce dorim să realizăm: gruparea
datelor, sau sortarea lor. În cazul grupării datelor (analog se procedează şi în cazul sortării),
din lista Select Field alegem câmpul după care dorim să realizăm grupul. Se mai pot
selecta:
ordinea în care se afişează datele în cadrul grupului;
modul efectiv de grupare a datelor care depinde de tipul fiecărui câmp şi de valorile
deja introduse (de exemplu, în cazul unui câmp denumit data_facturii poate exista
opţiunea grupării datelor pe trimeste);
dacă fiecare grup va conţine sub-totaluri;
dacă fiecare grupare ca avea un titlu;
45
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor
dacă Departamentul
fiecare gruparede
vaInformatica Economică
avea o zonă de antet sau de subsol;
dacă un grup trebuie forţat să apară pe aceeaşi pagină sau poate apărea pe pagini
diferite.
Imprimarea rezultatelor
Un lucru important, înaintea imprimării, îl reprezintă vizualizarea datelor care vor fi
imprimate. Vizualizarea înaintea imprimării se realizează cu ajutorul meniului operaţiunii
Print Preview din fila Home – View – Print Preview. Cu aceasta comandă putem vizualiza
datele din tabele, formulare sau rapoarte.
După prelucrarea datelor, dacă dorim imprimarea acestora, avem foarte multe opţiuni
referitoare la setarea paginii. Aceste opţiuni le putem alege sau modifica din fila Print
Preview (dacă se realizează vizualizarea înaintea imprimării) sau din fila cu ajutorul
Report Design Tools – Page Setup dacă se realizează modificarea design-ului raportului).
Opţiunea Page Setup oferă accesul la fereastra cu acelaşi nume din care se pot modifica
opţiuni ca mărimea marginilor paginii, mărimea paginii, orientarea ei precum şi numărul
de coloane care va fi afişat în cadrul paginii sau spaţierea rândurilor. Din fila Report
Design Tools este posibilă selectarea unor parametrii legaţi de orientarea scrisului în
pagină (pe lung - Portrait sau pe lat- Landscape), cât şi dimensiunea paginii (A4 , letter,
legal, executive şi altele). Dacă se doreşte doar listarea datelor se poate alege opţiunea
Print Data Only.
Din fereastra Print, putem alege imprimarea datelor din diferite interogări sau rapoarte.
Selectarea anumitor înregistrări se poate realiza cu ajutorul opţiunii Selected Record(s) din
fereastra Print. Putem, de asemenea, crea un fişier de imprimare folosind una din opţiunile
din secţiunea Data, în cazul în care raportul este vizualizat înainta imprimării (Print
Preview). De exemplu, se poate genera un fisier PDF, Word sau chiar de tip TXT (se va
genera un fişier de tip text utilizabil în orice editor de texte).
46
Universitatea Babeș-Bolyai din Cluj-Napoca SUPORT DE CURS
Baze de date și programe
Facultatea de Çtiințe Economice și Gestiunea
Afacerilor Departamentul de Informatica Economică
47