Documente Academic
Documente Profesional
Documente Cultură
CUPRINS
PARTEA ÎNTÂI
PARTEA A DOUA
sistem de
conducere
sistem informaţional
sistem
operativ
FIG.1
Nivelul intern sau baza de date fizică este o colecţie de fişiere conţinând
datele fizice, la care se adaugă diverse structuri auxiliare menite să asigure
accesul operativ la aceste date. Structurile auxiliare pot fi: directoare, indecşi,
pointeri, etc.
Baza de date fizică este rezidentă în memoria permanentă a calculatorului,
în general pe discuri magnetice sau optice. Modul de organizare al bazei de date
fizice depinde puternic de configuraţia echipamentelor hardware care suportă
baza de date şi de sistemul de operare. Schimbarea sistemului de operare sau
modificarea echipamentului de calcul pot atrage modificări ale bazei de date
fizice. Dacă e satisfăcută condiţia de independenţă fizică a datelor, modificările la
nivelul intern al bazei de date nu vor afecta nivelele superioare ale acesteia.
Modelul conceptual este o abstractizare a unei părţi din lumea reală şi
constă din descrierea structurii logice a datelor în baza de date. Fiecare bază de
date are un model conceptual propriu prin care sunt numite şi descrise toate
unităţile logice şi legăturile dintre acestea.
Modelul conceptual integrează viziunile tuturor utilizatorilor asupra datelor
şi specifică ce anume poate face parte din baza de date (descrierea datelor) şi
ce nu poate fi memorat în baza de date (constrângerile la care sunt supuse
datele).
Independenţa fizică a datelor este realizată de nivelul conceptual al bazei
de date. La acest nivel nu se face referire la modul de memorare al datelor sau la
strategia de acces la date.
Modelul extern poate fi privit ca o descriere a unei baze de date,
corespunzătoare fiecărui utilizator în parte. Modelul extern cuprinde o parte a
unităţilor logice din modelul conceptual, la care se adaugă un număr de unităţi
"virtuale" care nu au corespondent în baza de date fizică.
Unităţile logice "virtuale" pot fi obţinute prin modificare unor unităţi logice
din modelul conceptual sau prin combinarea acestora potrivit nevoilor unui
utilizator. Unităţile "virtuale" pot intra în operaţii de prelucrare alături de unităţile
logice reale, cu anumite limitări legate de ştergerea datelor sau logica prelucrării.
La nivel extern se defineşte conceptul de vedere, ca o viziune
individualizată şi simplificată asupra bazei de date, corespunzătoare unui anumit
Note de curs şi aplicaţii 21
G = Gs + Gc
Structura +
constrangeri Constrangeri
implicite explicite
Fiecare instanţiere a unui tip proprietar este proprietarul unui set. Un set
Orice atribut care face parte dintr-o cheie se numeşte atribut prim. Cheia
primară este aceea cheie a unei baze de date pe care un SGBD o foloseşte
pentru identificarea unică a n-tuplelor. Asupra unei chei primare se impun
următoarele restricţii:
Nu sunt admise valori nedefinite pentru atributele unei chei primare.
Nici o valoare a unui atribut al cheii primare nu poate fi modificat în
cadrul operaţiilor de actualizare în baza de date.
Modelul relaţional foloseşte o singură modalitate de structurare a datelor:
relaţiile. Structurarea datelor implică definirea schemei de relaţii. Astfel, modelul
conceptual al bazei de date relaţionale include numele relaţiilor şi atributele
acestora.
Intensiunea unei baze de date relaţionale este tocmai schema de relaţii.
Extensiunea unei astfel de baze de date este reprezentarea ei sub formă de
tabele.
Un subset FK al atributelor unei relaţii R2 este o cheie străină dacă:
Există o relaţie R1, nu neapărat distinctă, având o cheie K;
Pentru fiecare valoare a lui FK din relaţia R2 există o valoare
identică a cheii K, în relaţia R1.
În cazul unei baze de date relaţionale, se pune problema respectării
următoarelor principii:
Principiul integrităţii domeniului. Acesta se referă la posibilitatea verificării
semantice şi sintactice a valorilor din baza de date folosind definiţia
domeniului din care fac parte. Realizarea acestui principiu face imposibilă
înregistrarea de valori din afara domeniului de definiţie al unui atribut.
Principiul integrităţii entităţii sau al relaţiei. Acesta se referă la condiţiile
impuse cheilor primare, de a avea valori unice şi nenule.
Principiul integrităţii referinţei care se enunţă astfel: Dacă A este o cheie
primară monoatribut în relaţia R1 şi B este o componentă a unei chei
primare multiatribut în relaţia R2, B fiind definită pe acelaşi domeniu cu
atributul A, atunci mulţimea valorilor lui B în R2 trebuie să fie inclusă în
mulţimea valorilor lui A în R1.
Note de curs şi aplicaţii 27
1.5.1 Etapele 1 şi 2
1.5.2 Etapele 3 şi 4
Câteva dintre cele mai populare SGBD-uri sau produse soft cu facilităţi de
SGBD, sunt: dBase, Paradox, Clipper, FoxPro, Lotus, QuattroPro, Excel, Access,
Oracle, etc. Fiecare utilizator va alege dintre aceste produse pe cel care se
potriveşte cel mai bine dimensiunii bazei de date, aplicaţiei pe care o concepe
şi/sau cunoştinţelor sale în domeniu.
Programul MS-Access se adresează celor care doresc să creeze o bază
de date de complexitate medie, dispunând de o interfaţă prietenoasă, cu un efort
de programare cât mai redus.
multe versiuni de Microsoft Office care includ diferite combinaţii ale aplicaţiilor
primare şi secundare. Principalele componente ale familiei sunt:
Microsoft Word – un editor de texte profesional. El permite scrierea, editarea
şi tipărirea documentelor de tip text. Include facilităţi superioare pentru
controlul fontului, stilului şi mărimii caracterelor, configurarea paragrafelor şi
paginilor, crearea şi prelucrarea de tabele, inserarea şi prelucrarea figurilor,
verificarea ortografică şi sintactică a textului în mai multe limbi, realizarea de
sinteze şi cuprinsuri automate, îmbinarea textului în vederea automatizării
corespondenţei, etc.
Microsoft Excel – un program de calcul tabelar deosebit de complex care
include şi facilităţi rudimentare pentru prelucrarea bazelor de date. El permite
utilizarea unor funcţii complexe incorporate pentru efectuarea calculelor
matematice, statistice şi economice. Aceste calcule pot fi de la cele mai
simple, precum totalul sau media valorilor pe un rând sau o coloană, la cele
mai complexe, precum evaluarea duratei de amortizare a unei investiţii.
Totodată, programul include facilităţi de analiză a datelor şi statistică
economică. Gama largă de funcţii financiare, multitudinea de tipuri de
diagrame disponibile şi interfaţa prietenoasă fac din mediul MS-Excel unul
dintre cele mai utilizate programe.
Power Point – un sistem grafic pentru crearea prezentărilor pe folii
transparente, hârtie, diapozitive sau pe monitor. El permite formatarea
avansată a textelor, adăugarea de diagrame, imagini, tabele, comentarii şi
elemente de animaţie utilizate pentru mărirea impactului vizual al informaţiei
prezentate.
Microsoft Access – un sistem profesional de gestiune şi programare pentru
baze de date (iniţial, inclus numai în versiunea profesională a pachetului
MS-Office). El permite memorarea şi organizarea informaţiei în seturi de
tabele, definirea conversaţională şi utilizarea relaţiilor între tabele, interogarea
tabelelor şi afişarea informaţiei sub formă de liste, formulare sau rapoarte,
efectuarea unor operaţii statistice, calculul mediilor şi totalurilor, ordonarea şi
căutarea datelor, realizarea de grafice, etc.
36 Sisteme de gestiune a bazelor de date
În prezent, aplicaţia Microsoft Access este unul dintre cele mai utilizate
SGBD-uri relaţionale care lucrează sub Windows.
Prima versiune stabilă a programului a fost Access 2.0. Deşi avea toate
caracteristicile unui mediu avansat de programare şi dezvoltare, versiunea 2.0 a
Note de curs şi aplicaţii 37
pătruns relativ greu pe o piaţă în care leader absolut era produsul FoxPro.
Principalele motive sunt legate de necesarul superior de resurse hard şi de
reticenţa programatorilor profesionişti faţă de utilizarea obiectelor predefinite şi a
interfeţei grafice în activitatea de programare.
Creşterea performanţelor configuraţiilor hard “uzuale”, integrarea
programului Access în pachetul MS-Office – versiunile ‘95 şi ‘97, facilităţile noi
introduse, precum şi îmbunătăţirile aduse funcţionării produsului, recomandă
mediul MS-Access ca fiind cel mai adecvat realizării aplicaţiilor de gestiune
avansată a bazelor de date de dimensiune şi complexitate medie.
Programul MS-Access 97 este o versiune stabilă care utilizează facilităţile
oferite de arhitectura pe 32 de biţi a sistemului de operare, exploatează memoria
în mod eficient, introduce noi tipuri de date şi noi obiecte, utilizează noul
mecanism Jet 3.5, îmbunătăţeşte utilitarul CodeBuilder şi pe cel de introducere a
comenzilor din module, etc.
Versiunile Access 2000 şi Access XP aduc noi îmbunătăţiri, poate mai
puţin evidente. Din punctul de vedere al utilizatorului, se constată o interfaţă uşor
schimbată, mici modificări în scrierea Macro-urilor, apariţia obiectului Pages şi a
unor noi utilitare, etc.
La fel ca majoritatea produselor Microsoft, diferitele versiuni ale mediului
Access sunt compatibile de sus în jos, dar există mai multe limitări ca la
celelalte programe.
Chiar dacă există “moda”, destul de controversată, a traducerii
programelor în limba română, până în prezent complexitatea produsului Access
a împiedicat apariţia unei versiuni complete în limba română. Pe lângă
dificultatea traducerii profesioniste, unul din motivele întârzierii ar putea fi şi lipsa
de solicitare din partea utilizatorilor. Aceasta, deoarece facilităţile de programare
ale mediului Access vizează totuşi un segment de utilizatori avansaţi, care sunt
obişnuiţi cu folosirea în limba engleză a noţiunilor de informatică.
Astfel, la crearea unui nou fişier bază de date, mediul Access solicită
precizarea numelui fişierului şi a directorului în care va fi salvat. Conţinutul
fişierului poate fi stabilit doar după denumirea acestuia.
Pentru economie de timp, utilizatorului i se oferă aplicaţii “prefabricate”,
adică şabloane de fişiere, accesibile la crearea unui nou fişier, prin opţiunea
Database Wizard. Şabloanele se referă la baze de date tipice (adrese,
gestionarea contactelor sau a clienţilor, evidenţa şi efectuarea corespondenţei,
aplicaţii de facturare, etc). Modificarea şabloanelor în concordanţă cu necesităţile
utilizatorului se face conversaţional. Totuşi, în mod obişnuit este mai rapidă
creare unei baze de date pornind de la un fişier blank, deoarece structura, datele
de intrare şi situaţiile de ieşire reale, de regulă, diferă foarte mult de cele propuse
de şablon. Mai mult, pentru utilizatorii finali ai aplicaţiei create cu ajutorul
şablonului, trebuie adaptate numele de câmpuri şi traduse meniurile din limba
engleză.
Spre deosebire de semnificaţia generală de salvare a fişierului curent sub
un alt nume sau o altă versiune, opţiunea File \ SaveAs… din MS-Access
permite multiplicarea sau copierea diferitelor obiecte ale bazei de date. Pentru
realizarea unei copii a fişierului .mdb, de exemplu pe o dischetă, trebuie utilizat
un program de gestionare a fişierelor cum ar fi Windows Explorer sau
My Computer.
Una dintre facilităţile specifice deosebit de utile este compactarea
fişierului lansată simplu prin opţiunea Tools\ DatabaseUtilities\ Compact and
Repair Database. Aceasta permite reducerea substanţială a dimensiunilor
fişierului bază de date curent prin eliberarea spaţiului neutilizat dar declarat
ocupat. Acest spaţiu excedentar “fals ocupat” provine din zonele în care s-au
stocat temporar date precum şi din nedeclararea liberă a zonelor din care s-au
şters date pe parcursul proiectării sau utilizării aplicaţiei. Se recomandă
compactarea fişierului după fiecare sesiune de lucru sau înainte de copierea lui
pe un alt mediu de stocare.
Mediul Access efectuează salvarea automată a obiectelor după cele mai
multe operaţii ale utilizatorului. Astfel, opţiunea Edit \ Undo este rareori activă,
ceea ce limitează posibilitatea anulării acţiunilor anterioare.
40 Sisteme de gestiune a bazelor de date
FIG.4
2.1 Tabele
FIG.5
Note de curs şi aplicaţii 43
Proprietatea Format permite stabilirea unui şablon pentru datele din câmp.
Mediul Access include un număr de şabloane prestabilite, dar utilizatorul îşi
poate defini propriile şabloane. Principalele caractere folosite în definirea
şabloanelor pentru câmpurile de tip text sunt:
- @ - acceptă doar introducerea unui caracter de tip text sau a unui spaţiu;
- > - transformă textul introdus în majuscule (UpperCase);
- < - transformă textul introdus în caractere mici (LowerCase);
- # - acceptă doar introducerea unei cifre, afişează o cifră sau nimic;
- 0 - acceptă doar introducerea unei cifre, afişează o cifră sau „0”.
Pentru valorile Null sau ZeroLength se pot defini valori iniţiale implicite după
sintaxa “şablon câmp ; valoare în caz de Null sau lungime Zero”.
De exemplu, pentru a converti în majuscule, automat, la introducerea
datelor, valorile unui câmp Numele, se va utiliza şablonul “>”. Pentru
un câmp NumeleTatalui, se poate utiliza şablonul “> ; necunoscut”;
astfel, în cazul în care lipseşte numele tatălui unui candidat, câmpul
va fi completat automat cu valoarea “necunoscut”.
Proprietatea Caption permite afişarea în capul de tabel a unui text diferit
de numele câmpului.
De exemplu, dacă pentru simplitate un câmp a fost denumit
Nume_Pren, pentru utilizatorul aplicaţiei se poate afişa textul: Numele
şi Prenumele.
Proprietatea DefaultValue stabileşte o valoare implicită pentru câmpul
respectiv, valoare care se introduce automat în cazul în care utilizatorul nu
efectuează modificări asupra ei.
De exemplu, dacă tabelul conţine candidaţii pentru o şcoală militară,
unde majoritatea sunt băieţi, un câmp denumit Sexul_(M/F) va fi
iniţializat cu valoarea “M”, economisind astfel timp la introducerea
datelor.
Proprietatea ValidationRule permite validarea datelor la introducere,
adică stabilirea unor condiţii pe care datele trebuie să le îndeplinească pentru a fi
acceptate. Se elimină astfel o mare parte a greşelilor de operare la culegerea
datelor. Regula de validare conţine o expresie a cărei evaluare conduce la un
Note de curs şi aplicaţii 45
Câmpul de tip Number conţine valori numerice formate din cifre, punctul
zecimal şi semn. El prezintă o mare varietate de subtipuri, în funcţie de destinaţia
datelor. Principalele proprietăţi ale unui câmp de tip Number sunt: FieldSize,
Format, DecimalPlaces, Caption, DefaultValue, ValidationRule, Required,
Indexed.
46 Sisteme de gestiune a bazelor de date
Câmpul de tip Yes/No poate conţine numai valorile Yes, True sau On
pentru valoarea logică “adevărat” şi respectiv No, False sau Off pentru valoarea
logică “fals”. La introducerea datelor, câmpul de tip logic, independent de
formatul ales, este reprezentat printr-un control de tip CheckBox.
De exemplu, se poate considera un câmp logic Platit prin care se
verifică plata taxei de înscriere la concurs. În cazul în care
candidatul a plătit taxa, operatorul va “bifa” controlul; în caz contrar,
CheckBox-ul rămâne neselectat.
Principalele proprietăţi ale unui câmp de tip Yes/No sunt: Format,
DefaultValue, Caption, Required, Indexed.
Câmpul de tip OLE Object conţine un obiect legat sau încapsulat, după
regulile de legare şi încapsulare ale standardului OLE (Object Linking and
Embeding).
Valorile unui astfel de câmp sunt, de obicei, obiecte grafice care pot fi
inserate în următoarele moduri:
- crearea unui obiect grafic nou, cu ajutorul unei aplicaţii externe accesate
prin opţiunea Insert\Object…\CreateNew;
- inserarea unui fişier grafic creat şi salvat anterior, prin opţiunea
Insert\Object…\CreateFromFile;
- lipirea directă în câmp (Ctrl+V) a conţinutului Clipboard-ului.
La utilizarea tabelelor, vizualizarea obiectelor conţinute într-un câmp de tip
OleObject se realizează cu ajutorul aplicaţiei sursă în care a fost creat obiectul.
Aceasta se lansează automat la executarea unui double-cllick pe câmpul
respectiv. La utilizarea formularelor se poate opta pentru vizualizarea imediată a
conţinutului tuturor câmpurilor.
Dimensiunea obiectelor legate sau încapsulate poate fi de max. 1GB, fiind
limitată doar de spaţiul disponibil pe hard-disc.
Datorită tipului de date stocate, un câmp de tip OleObject nu poate fi folosit
pentru sortare, indexare, efectuarea de calcule, etc.
De exemplu, fotografia candidaţilor poate fi scanată şi introdusă
direct într-un câmp Poza, de tip OleObject.
Note de curs şi aplicaţii 49
2.1.2 Exemplu
FIG.6
FIG.7 FIG.8
Se alege o lungime de max. 15 Pentru câmpul DataNast se alege
caractere pentru câmpul Nume. formatul de dată MediumDate şi
Proprietatea Indexed = Yes proprietatea Caption =Data
(DuplicatesOK) permite introdu- nasterii.
cerea a doi candidaţi cu acelaşi Comentariile apar în dreptul
nume fiecărui câmp.
Note de curs şi aplicaţii 51
FIG.10
Se alege tipul OLE object pentru
câmpul Poza
FIG.9
Pentru câmpul Sexul se stabileşte valoarea
iniţială şi condiţia de validare la introducere
FIG.11
După salvarea tabelului şi stabilirea cheii primare, valoarea câmpului Poza se
preia dintr-un fişier grafic salvat anterior. Se selectează opţiunea Link pentru a
realiza legarea şi nu încapsularea imaginii. În locul imaginii, în tabel apare
descrierea obiectului (ImageObject)
În articolul nou, se observă valoarea implicită stabilită pentru câmpul Sexul.
52 Sisteme de gestiune a bazelor de date
2.2.2 Exemplu
FIG.12
Pentru tabelul
tbl_Candidati, prin
selectarea câmpului
Legitimaţie şi activarea
butonului PrimaryKey, se
stabileşte explicit cheia
primară.
54 Sisteme de gestiune a bazelor de date
FIG.13
Se creează şi se salvează tabelul tbl_Probe.
FIG.14
Access afişează mesajul de avertizare.
FIG.15
Dacă utilizatorul selectează opţiunea Yes, mediul Access caută (şi găseşte !)
un câmp de tip AutoNumber pe care îl desemnează cheie primară. Se încheie
salvarea tabelului.
Note de curs şi aplicaţii 55
Folosind utilitarul Lookup Wizard se pot crea câmpuri care aleg şi afişează
date memorate în prealabil într-o listă cu număr fix de valori.
Lista cu valori se introduce la crearea câmpului şi se poate modifica în
modul proiectare. Tipul câmpului este determinat de tipul datelor stabilit înainte
de lansarea utilitarului Lookup Wizard.
Principalele proprietăţi din tab-ul General utilizate de câmpurile de acest
tip sunt: FieldSize, Required, Indexed. În mod obişnuit valorile se repetă în câmp,
prin urmare pentru proprietatea Indexed sunt recomandat valorile No sau
Yes (DuplicatesOK).
Cele mai importante proprietăţi ale câmpurilor create folosind utilitarul
Lookup Wizard sunt grupate în tab-ul Lookup. Acestea sunt: DisplayControl,
RowSourceType, RowSource, BoundColumn, ColumnCount, ColumnWidth,
ListRows, ListWidth, LimitToList.
Semnificaţia şi modul de utilizare ale acestor proprietăţi vor fi ilustrate în
exemplele prezentate în continuare.
2.2.4 Exemplu
FIG.16
În structura tabelului
tbl_Candidati se inserează
câmpul Oraşul.
Se presupune că majoritatea
candidaţilor provin din
câteva localităţi; la
introducerea datelor,
utilizatorul va avea la
dispoziţie o listă derulantă
din care să aleagă datele.
56 Sisteme de gestiune a bazelor de date
FIG.17
Din dialogul utilitarului se alege sursa datelor
(de la tastatură la crearea tabelului).
FIG.18
Se introduce lista cu valorile cel mai des folosite.
Trecerea la valoarea următoare se face prin coborârea cursorului cu
ajutorul tastei “săgeată jos”. Apăsarea tastei “Enter” determină trecerea
la pasul următor.
Note de curs şi aplicaţii 57
FIG.19
Aspectul tab-ului FieldProperties\Lookup
după închiderea utilitarului Lookup Wizard.
Observaţii:
Tipul câmpului rămâne Text; folosirea utilitarului LookupWizard este
evidenţiată prin proprietăţile grupate în tab-ul Lookup.
DisplayControl – stabileşte tipul controlului care conţine valorile posibile
(implicit: ComboBox).
RowSourceType – specifică sursa datelor. Pentru o listă care conţine valori
introduse explicit de la tastatură, RowSourceType este setată automat la
valoarea ValueList.
RowSource – conţine valorile posibile pentru câmpul considerat. În modul
Design, proprietatea poate fi modifică explicit prin adăugarea unor noi valori;
separatorul folosit este caracterul “ ; ”.
LimitToList - stabileşte dacă valorile posibile pentru câmp se limitează la
cele cuprinse în listă sau utilizatorului i se va permite şi introducerea unei
valori în afara listei explicite.
58 Sisteme de gestiune a bazelor de date
FIG.20
Dacă LimitToList = No, în modul DataseetView se poate
introduce o valoare care nu există în lista originală.
tabelului sursă sau a unor câmpuri, schimbarea tipului de date, etc.) atrage după
sine necesitatea de modificare manuală a proprietăţilor câmpului care se
bazează pe Lookup Wizard.
Majoritatea proprietăţilor utilizate de câmpurile create cu ajutorul
utilitarului Lookup Wizard, adică: FieldSize, Required, Indexed, DisplayControl,
RowSourceType, ColumnWidth, ListRows, ListWidth, LimitToList, au fost
prezentate şi exemplificate anterior.
Modul de utilizare a proprietăţile RowSource, BoundColumn şi
ColumnCount diferă faţă de situaţia anterioară, în care sursa datelor era o listă
explicită. Astfel:
RowSource conţine o interogare bazată pe tabelul sursă. Ea defineşte modul
de selectare şi afişare a datelor în câmp. Interogarea este creată automat de
utilitarul LookupWizard şi afişată în modul SQL View; pentru eventuale
modificări, utilizatorul poate comuta în modul Design, mult mai uşor de folosit.
ColumnCount specifică numărul de coloane pe care le utilizează Lookup
Wizard pentru afişare în lista derulantă.
BoundColumn reprezintă numărul de ordine al coloanei, dintre cele cuprinse
în interogare, care va deveni valoare a controlului ComboBox.
Observaţie: În mod implicit, indiferent de tipul de dată stabilit anterior,
câmpul creat cu ajutorul utilitarului Lookup Wizard având ca sursă a datelor un
alt tabel, va prelua tipul datelor din câmpul cheie primară a tabelului sursă. În
urma selectării unei valori din ComboBox, în câmp NU se va introduce valoarea
vizualizată ci tocmai valoarea cheii primare a articolului corespunzător din
tabelul sursă.
De exemplu: Pentru o cheie primară de tip Autonumber noul câmp
va fi de tipul Numeric \ LongInteger, pentru o cheie primară de tip
Text, noul câmp va fi tot de tipul Text.
Pentru a obţine un comportament diferit de cel implicit, utilizatorul trebuie
să efectueze modificări în modul DesignView al interogării din câmpul
RowSource după care să ajusteze valorile celorlalte proprietăţi.
Clarificarea noţiunilor prezentate se realizează prin exemplele care
urmează şi coroborarea lor cu noţiunile privind relaţiile.
60 Sisteme de gestiune a bazelor de date
2.2.6 Exemplu
FIG.21
FIG.22
În fereastra Database, obiectele apar în ordine alfabetică, independent
de ordinea în care au fost create.
FIG.23
Pentru
câmpul
Candidat
din tabelul
tbl_Note se
lansează
utilitarul
Lookup
Wizard.
Note de curs şi aplicaţii 61
FIG.24
Se alege tabelul
tbl_Candidati ca
sursă a datelor
pentru câmpul
Candidat din
tabelul tbl_Note.
FIG.25
Folosind
butoanele
“săgeţi” se
selectează
cheia
primară a
tabelului
sursă şi
câmpurile
care vor fi
afişate în
lista
derulantă.
FIG.26
Utilitarul
afişează
macheta listei
derulante şi
propune
ascunderea
cheii primare.
62 Sisteme de gestiune a bazelor de date
FIG.27
După denumire şi salvare, se vor introduce date în modul DatasheetView.
La afişare, lista conţine toate câmpurile; după selectare se afişează primul câmp
vizibil, iar valoarea controlului ComboBox e dată de valoarea câmpului desemnat
prin proprietatea BoundColumn = 1.
FIG.28
În modul Design se pot vizualiza proprietăţile câmpului creat cu utilitarul Lookup
Wizard. Câmpul a preluat numele şi tipul cheii primare din tabelul sursă (Legitimatie de
tip LongInteger) iar vechea denumire este atribuită ca valoare a proprietăţii Caption.
Corespunzător tipului numeric şi proprietăţii BoundColumn = 1 în câmp se memorează
valoarea câmpului Legitimatie.
Notă: la unele versiuni ale Access, se păstrează numele iniţial al câmpului destinaţie.
Note de curs şi aplicaţii 63
FIG.29
Interogarea
RowSource poate fi
vizualizată în modul
DesignView. Ea se
modifică similar cu
modul de prelucrare a
oricărei interogări de
tip Select.
FIG.30
FIG.31
Se introduc date în
tabelul tbl_Note,
folosind listele
create prin utilitarul
Lookup Wizard.
64 Sisteme de gestiune a bazelor de date
2.3 Relaţii
FIG.32
FIG.33
FIG.37
articolul corespunzător din celălalt tabel, legătura fiind concretizată prin aceeaşi
valoare a câmpului de legătură.
Din punct de vedere al corespondenţei realizate, între două tabele (A şi B)
se pot stabili relaţii de tipul:
one-to-many sau unu-la-mai-mulţi: fiecare articol din tabelul A poate avea
unul sau mai multe articole corespondente în tabelul B şi fiecărui articol din
tabelul B îi corespunde cel mult un articol în tabelul A. Este tipul de relaţie cel
mai folosit în sistemele de gestiune a bazelor de date.
Câmpul pe baza căruia se creează relaţia este cheia primară din tabelul A.
Câmpul corespondent din tabelul B se numeşte cheie străină.
one-to-one sau unu-la-unu: fiecare articol din tabelul A poate avea un singur
articol corespondent în tabelul B şi fiecărui articol din tabelul B îi corespunde
cel mult un singur articol în tabelul A. De obicei, cele două tabele au aceeaşi
cheie primară.
În cazul relaţiei unu-la-unu, tabelul B este o “prelungire” a tabelului A. Relaţia
este utilă dacă se doreşte separarea datelor în vederea protejării lor sau dacă
tabelul A are prea multe coloane şi o parte din ele se pot “muta” în tabelul B.
many-to-many sau mai-mulţi-la-mai-mulţi: pe baza unui câmp, mai multe
articole din tabelul A sunt în corespondenţă cu mai multe articole din
tabelul B, adică unui articol din tabelul A îi corespund mai multe articole din
tabelul B şi invers, unui articol din tabelul B îi corespund mai multe articole din
tabelul A. Prin crearea unui tabel intermediar, o relaţie de tipul mai-mulţi-la-
mai-mulţi se descompune în două relaţii de tipul unu-la-mai-mulţi. De obicei,
tabelul de legătură are o semnificaţie utilă pentru aplicaţie.
FIG.38
FIG.39
FIG.40
Tipul de asociere este proprietatea prin care se stabileşte dacă vor exista
articole neasociate, astfel:
Asocierea internă (inner join) este tipul de asociere implicit. Este o
asociere caracterizată prin faptul că rezultatul unei interogări bazată pe
cele două tabele va conţine numai articolele pentru care valoarea
câmpului de legătură este aceeaşi.
Asocierea externă stânga (left-outer join) este caracterizată prin faptul
că rezultatul unei interogări bazată pe cele două tabele va include toate
articolele din tabelul primar A, chiar dacă acestea nu au articole
asociate în tabelul B.
Asocierea externă dreapta (right-outer join) este caracterizată prin
faptul că rezultatul unei interogări bazată pe cele două tabele va include
toate articolele din tabelul B, chiar dacă în acesta există articole care nu
au corespondent în tabelul A.
72 Sisteme de gestiune a bazelor de date
2.4 Interogări
Interogările sunt obiecte Access folosite pentru combinarea datelor din mai
multe tabele sau alte interogări, ordonarea, sortarea, filtrarea şi totalizarea
listelor, efectuarea de calcule, actualizarea, adăugarea şi ştergerea articolelor din
tabele, precum şi pentru crearea de noi tabele pe baza unui model.
Spre deosebire de celelalte obiecte, pentru interogări există trei moduri de
vizualizare:
DesignView – afişează fereastra de proiectare a interogării, numită şi
QBE (QueryByExample);
DatasheetView – afişează rezultatul interogării, similar unui tabel;
SQL View – afişează secvenţa SQL corespunzătoare interogării
(Structured Query Language).
Note de curs şi aplicaţii 73
FIG.41
FIG.43
FIG.42
2.4.2 Exemplu
FIG.44
Fereastra de proiectare a interogării qry1_Candidati, bazată pe tbl_Candidati
Interogarea s-a creat prin QueryWizard. Dialogul de alegere a câmpurilor este
asemănător cu cel folosit la utilitarul LookupWizard.
Sunt incluse toate câmpurile din tabel şi s-a impus o sortare în ordine alfabetică a
candidaţilor. Interogarea poate fi folosită atât pentru afişare cât şi pentru
introducerea / modificarea datelor în tabelul pe care se bazează.
FIG.45
Rezultatul interogării din FIG.44.
Prin coroborarea numărului de legitimaţie cu ordinea de afişare,
la candidaţii cu Nume = “Popescu”, se observă rolul celor două chei de sortare.
Note de curs şi aplicaţii 79
FIG.46
Includerea unei condiţii de filtrare determină vizualizarea candidaţilor din
oraşul Arad. Pentru criterii impuse unui câmp de tip text, mediul Access
adaugă automat separatorul “ghilimele”.
FIG.47
Pentru a vizualiza numai candidaţii din oraşul Arad a căror nume începe cu litera
“M”, se introduce o nouă condiţie de filtrare. În scrierea expresiilor se poate folosi
caracterul global “ * “.
Cele două criterii sunt scrise pe aceeaşi linie; ele trebuie îndeplinite simultan
(se aplică operatorul logic “And”).
80 Sisteme de gestiune a bazelor de date
FIG.48
Interogarea afişează toţi candidaţii din oraşele Arad şi Timişoara.
Implicit, comparaţia este non case sensitive.
Obs.:Pentru fiecare articol, trebuie îndeplinit criteriul Arad sau criteriul Timişoara.
În loc de două criterii scrise pe două linii distincte, de poate utiliza expresia:
”Arad” or ”Timisoara”
FIG.49
Interogarea afişează toţi candidaţii născuţi după 1 ianuarie 1970.
Pentru câmpurile de tip dată calendaristică, mediul Access adaugă
separatorul “ # “.
Note de curs şi aplicaţii 81
FIG.50
Se afişează candidaţii născuţi între 1965 şi 1970. Pentru simplitatea expresiilor
interogarea conţine o dublură nevizualizată a câmpului DataNast.
FIG.51
Se creează o interogare parametrizată care permite utilizatorului să stabilească
ulterior oraşul de provenienţă al candidaţilor pe care doreşte să-i vizualizeze.
Numele parametrului este Introduceti_orasul şi trebuie scris între paranteze drepte.
FIG.52
Se lansează dialogul Query\Parameters…
Se completează numele şi tipul parametrului.
Observaţii:
- pentru parametrii de tip text, declararea este
opţională.
- dacă se utilizează mai mulţi parametrii, ordinea
declarării lor va determina ordinea în care
mediul Access va afişa dialogul utilizator
pentru introducere a valorilor.
82 Sisteme de gestiune a bazelor de date
FIG.53
La executarea interogării, se afişează
dialogul pentru a fi completat de
utilizator.
Rezultatul interogării va fi acelaşi ca în
cazul precizării valorii câmpului Oras în
grila de proiectare.
FIG.54
Cu ajutorul utilitarului Query Wizard, se creează interogarea qry2_Calcule prin
combinarea datelor din două tabele. Pentru a calcula media probelor / candidat, se
aplică funcţia agregat Avg în câmpul Nota. (se lucrează în DesignView)
Datorită integrităţii referenţiale impuse relaţiei, rezultatul interogării include numai
candidaţii care s-au prezentat la cel puţin o probă.
Obs.: Tabelul tbl_Probe figurează în zona sursă deoarece a fost folosit într-o fază de
proiectare anterioară. S-a renunţat la utilizarea datelor din acest tabel, dar s-a omis
ştergerea lui din fereastra interogării. Prezenţa unui tabel suplimentar nu influenţează
funcţionarea interogării.
Note de curs şi aplicaţii 83
FIG.55
Pentru a impune afişarea mediei cu 2 zecimale, din meniul suplimentar
care se deschide prin click cu butonul drept al mouse-ului pe câmpul
respectiv, se alege opţiunea Properties….
FIG.56
Se modifică structura tabelului tbl_Note,
introducându-se şi notele atribuite de cei
doi corectori.
Astfel, valoarea câmpului Nota va fi
calculată ca medie aritmetică a celor
două corecturi.
FIG.57
Se creează interogarea qry3_CampCalculat combinând câmpurile din cele două tabele. Se
introduce un câmp calculat Media, care va conţine media corecturilor pentru fiecare articol.
După numele câmpului calculat trebuie utilizat separatorul “ : “.
84 Sisteme de gestiune a bazelor de date
FIG.58
Pentru
construirea
expresiei de
calcul se
foloseşte
utilitarul
Build…
FIG.59
Secvenţa SQL corespunzătoare interogării qry3_CampCalculat, de tip Select
Obs.: Câmpul calculat are efect numai pentru interogare; în tabelul tbl_Nota, nu se
regăseşte media calculată pentru cele două corecturi.
FIG.60
Observaţie:
La toate interogările de acţiune, pentru precizarea articolelor implicate în
operaţie, se poate utiliza filtrarea prin intermediul liniei Criteria şi/sau ordonarea
prin intermediul liniei Sort.
2.4.4 Exemplu
FIG.61
Se creează
interogarea
qry4_NotaZece,
de tip Select, se
transformă în
Update Query şi
se precizează
UpdateTo …
valoarea 10 pentru
câmpul Nota.
Note de curs şi aplicaţii 87
FIG.62
La fiecare lansare a
interogării se afişează
un mesaj de
avertizare.
În acest moment,
tabelul tbl_Note are 8
articole.
FIG.63
Toate cele 8 articole ale
tabelului tbl_Note se
actualizează.
Obs.: Pentru afişare,
câmpurile Corectura1 şi
Corectura2 au fost
reduse la dimensiune
zero.
FIG.64
FIG.65
FIG.66
În caseta de dialog se
completează numele noului
tabel: tbl_Inscrieri.
FIG.67
FIG.68
Pe baza tabelului
tbl_Inscrieri, se creează
o interogare de tip
Select care include
numai câmpurile
corespunzătoare
tabelului tbl_Candidati.
Se transformă în
Append Query.
FIG.69
Din caseta de dialog se
alege numele tabelului
tbl_Candidati, la care se
vor adăuga date.
Interogarea se va salva
sub numele de
qry7_AdaugCandidati.
FIG.70
Se creează o interogare de tip Select bazată pe tabelul tbl_Candidaţi. Pentru a şterge
toţi candidaţii de sex feminin, se scrie condiţia de filtrare în câmpul Sexul, după care
interogarea se transformă în Delete Query.
FIG.71
Înainte de ştergerea
articolelor, mediul
Acces afişează un
mesaj de avertizare /
confirmare.
Observaţie:
După prima rulare a interogărilor de acţiune, la revenirea în modul Design,
se va observa că în structura interogării există un număr mai mic de
câmpuri decât cel prevăzut iniţial de utilizator. Această modificare este des
întâlnită la interogările de tip Update. Explicaţia constă în faptul că, de
obicei, utilizatorul include toate câmpurile care îi permit să folosească
utilitarul Build… pentru construirea expresiilor; ulterior, mediul Access
elimină automat câmpurile care nu sunt absolut necesare pentru rularea
interogării.
Note de curs şi aplicaţii 91
FIG.72
După crearea interogărilor prezentate,
tab-ul Queries al ferestrei Database
are aspectul din figură. Simbolurile şi
numele interogărilor sugerează rolul
acestora.
2.5 Formulare
FIG.73
FIG.74
Dividing
lines
FIG.75
Note de curs şi aplicaţii 95
2.5.2 Exemplu
Observaţie:
Formularele vor fi create folosind utilitarul FormWizard şi vor avea la bază chiar
tabelele în care se efectuează introducerea datelor. Modificarea formularelor se
va realiza cu ajutorul elementelor disponibile pe bara cu instrumente Toolbox. În
scopul exemplificării a cât mai multor proprietăţi şi operaţii aplicate formularelor
de acest tip, se vor parcurge etape care în mod obişnuit nu sunt necesare pentru
un utilizator cu experienţă.
Note de curs şi aplicaţii 97
FIG.76
Pentru crearea formularului frm_Candidati se utilizează FormWizard şi se aleg câmpuri
din ambele tabele implicate. Câmpul Legitimatia nu va fi inclus în formular deoarece
introducerea datelor de tip Autonumber se face automat.
Se alege modul Columnar şi stilul Standard, recomandate pentru formularele de
introducere a datelor, după care se denumeşte formularul.
FIG.77
Aspectul formularului obţinut, înainte de prelucrarea personalizată.
98 Sisteme de gestiune a bazelor de date
FIG.78
FIG.79
Note de curs şi aplicaţii 99
FIG.80
FIG.81
Aspectul dialogului
Properties pentru
formularul
frm_Candidati.
100 Sisteme de gestiune a bazelor de date
Observaţie:
Formularul frm_Candidati are la bază tabelele tbl_Candidati şi
tbl_DatePersonale. În procesul de creare a formularului cu ajutorul utilitarului
FormWizard, mediul Access construieşte automat o interogare de tip Select,
bazată pe cele două tabele. În proprietatea RecordSource a formularului se
regăseşte tocmai această interogare.
FIG.82
Sursa de date pentru formularul frm_Candidati.
Interogarea este asociată formularului şi nu este salvată separat.
FIG.83
Aspectul formularului în
DesignView, cu primul
tab selectat.
102 Sisteme de gestiune a bazelor de date
FIG.84
Stabilirea proprietăţilor pentru tab-ul tab_DatePersonale.
FIG.85
Aspectul celor două tab-uri ale formularului, în modul de vizualizare FormView.
Note de curs şi aplicaţii 103
FIG.86
Se creează în mod similar, formularul frm_Probe cu ajutorul
căruia se introduc date în tabelul tbl_Probe.
FIG.87
Se creează formularul frm_Note, cu ajutorul căruia se
introduc date în tabelul tbl_Note.
FIG.88
Pentru crearea câmpului calculat se utilizează instrumentul TextBox de pe
Toolbox. Se stabilesc proprietăţile Name şi Caption pentru câmpul
fld_MediaCalculata şi pentru eticheta lbl_MediaCalculata corespunzatoare.
Proprietatea ControlSource a câmpului calculat va conţine expresia de calcul a
mediei, introdusă folosind utilitarul Build.
FIG.89
Aspectul formularului frm_VizuCandidati, în modul FormView,
înainte de aplicarea sortării sau filtrării.
FIG.90
Modul DesignView al formularului frm_VizuCandidati.
Câmpul DataNasterii a fost introdus pentru a servi la construirea expresiei de calcul
a vârstei; pentru a nu fi vizualizat în FormView, pentru câmpul DataNasterii, se
stabileşte proprietatea Visible = No.
FIG.91
Expresia de calcul a vârstei se introduce ca valoare a proprietăţii ControlSource
pentru câmpul calculat fld_Varsta;
se foloseşte dialogul ExpressionBuilder, al cărui casetă de dialog este asemănătoare
celei de introducere a funcţiilor în mediul MS-Excel.
Note de curs şi aplicaţii 107
2.5.4 Exemplu
FIG.95
Sortare ascendentă (A la Z) asupra datelor din formularul frm_VizuCandidati
În momentul sortării, cursorul mouse-ului se afla pe Nume.
FIG.96
Condiţia de filtrare şi rezultatul aplicării filtrului pentru afişarea candidaţilor
de sex masculin.
110 Sisteme de gestiune a bazelor de date
2.5.6 Exemplu
FIG.97
Se creează un formular pentru introducerea datelor.
Primul buton, creat cu ajutorul utilitarului ControlWizards, va determina
deschiderea formularului frm_Candidati.
FIG.98
Se
stabileşte
textul
(Caption) şi
numele
butonului
de
comandă.
112 Sisteme de gestiune a bazelor de date
FIG.99
În mod similar se creează butoane
de comandă pentru lansarea
celorlalte formulare.
Pentru obţinerea aspectului din
figură, se utilizează comenzile
Format\Size, Format\Align,
opţiunile privind font-ul şi utilitarul
FormatPainter.
FIG.100
Aspectul formularului prin
care se va lansa
introducerea datelor.
S-a adăugat o etichetă
(Label) pentru care s-a
ales efectul special
Etched.
2.5.8 Exemplu
FIG.101
Se construieşte interogarea qry_ChartRezultate, pe baza tabelelor tbl_Candidati
şi tbl_Note. Se adaugă câmpul calculat Candidat.
Se vizualizează linia Total şi se aplică funcţia agregat Average pentru calculul
mediei celor două probe. Pentru câmpul AvgOfNota, se stabilesc proprietăţile
de formatare Fixed cu 2 zecimale.
(Se presupune că toţi candidaţii s-au prezentat la ambele probe alese.)
114 Sisteme de gestiune a bazelor de date
FIG.102
Se construieşte diagrama, folosind utilitarul ChartWizard.
Se stabilesc proprietăţile de formatare pentru formularul frm_Chart care conţine
diagrama.
FIG.103
Pentru efectuarea
de modificări
asupra diagramei,
se activează
opţiunea
ChartObject\Edit
din meniul
suplimentar care se
deschide prin click
cu butonul drept al
mouse-ului pe
diagrama din
formularul afişat în
DesignView.
Note de curs şi aplicaţii 115
FIG.104
Pentru editarea diagramei se foloseşte aplicaţia MicrosoftGraph care se
deschide automat şi tratează diagrama ca un obiect încapsulat în
formularul frm_Chart.
Utilizarea aplicaţiei MS-Graph este aceeaşi ca în cazul lansării sale din
mediul MS-Word sau dintr-o altă aplicaţie MS-Office.
2.6 Rapoarte
Rapoartele de sinteză sunt cele mai folosite dintre toate tipurile de situaţii
de ieşire oferite de mediul Access. Scopul lor este prezentarea informaţiei din
baza de date astfel ca să poată fi interpretată de către utilizator în vederea luării
unei decizii.
Rapoartele de sinteză se bazează pe tabele şi / sau interogări create în
prealabil. În mod obişnuit, pentru crearea rapoartelor se foloseşte utilitarul
ReportWizard. Modificarea rapoartelor create automat este necesară atât pentru
îmbunătăţirea aspectului cât şi pentru ridicarea gradului de interpretabilitate al
sintezelor.
Rapoartele se pot construi pe mai multe nivele. Utilitarul ReportWizard
analizează datele sursă din punct de vedere logic, ţine cont de relaţiile dintre
tabele şi sugerează o posibilitate a împărţirii raportului pe nivele. Utilizatorul
poate accepta cele propuse de mediul Access sau poate să îşi alcătuiască o
structură proprie, în concordanţă cu scopul raportului.
Pentru datele din secţiunea Detail se pot aplica funcţiile agregat. Utilitarul
ReportWizard oferă posibilitatea calculării de totaluri pentru majoritatea
câmpurilor, pentru toate nivelele logic posibile; se pot folosi funcţiile agregat
obişnuite: Sum, Avg, Count, Min, Max, etc. Câmpurile calculate se pot adăuga şi
ulterior, procedura fiind similară cu cea din cazul formularelor.
Note de curs şi aplicaţii 117
2.6.2 Exemplu
FIG.105
Utilitarul ReportWizard permite afişarea ordonată a datelor după
cel mult patru chei de sortare
Sursa datelor este tabelul tbl_Candidati.
118 Sisteme de gestiune a bazelor de date
FIG.106
Fereastra DesignView pentru raportul rpt_ListaCandidati, obţinută cu
ajutorul utilitarului ReportWizard, înainte şi după modificarea manuală.
Modificările efectuate se referă la ştergerea sau editarea etichetelor,
mutarea, dimensionare şi formatarea câmpurilor,
editarea funcţiilor şi macro-urilor implicite folosite pentru numerotarea
paginilor şi afişarea datei curente.
Note de curs şi aplicaţii 119
FIG.107
Rezultatul (PrintPreview) înainte şi după efectuarea modificărilor.
FIG.108
Pentru raportul
rpt_Medii, sursa
datelor o
constituie tabelele
tbl_Candidati,
tbl_Probe şi
tbl_Note.
Modificarea
nivelelor propuse
de utilitarul
ReportWizard se
poate face
acţionând
controlul Priority.
120 Sisteme de gestiune a bazelor de date
FIG.109
Dialogul SummaryOptions permite precizarea funcţiilor agregat.
Se aplică funcţia Average pentru câmpul Nota.
FIG.110
Fragment din raportul creat automat, înainte de efectuarea modificărilor.
Note de curs şi aplicaţii 121
FIG.111
Raportul rpt_Medii, după efectuarea modificărilor.
122 Sisteme de gestiune a bazelor de date
2.6.3 Etichete
FIG.112
Note de curs şi aplicaţii 123
2.6.4 Exemplu
FIG.113
Sursa datelor pentru etichete este tabelul tbl_Candidati.
S-a completat structura tabelului prin adăugarea câmpului Adresa.
FIG.114
Modul DesignView al
etichetei create cu
ajutorul utilitarului
LabelWizard.
124 Sisteme de gestiune a bazelor de date
FIG.115
Fragment din raportul creat automat, înainte de efectuarea modificărilor.
Ordonarea datelor s-a realizat după valoarea câmpului Legitimatie.
FIG.116
Raportul rpt_Etichete, după efectuarea modificărilor.
Note de curs şi aplicaţii 125
Observaţii:
Chenarul s-a obţinut cu ajutorul unui Rectangle de pe Toolbox; pentru
chenar s-a stabilit proprietatea BackStyle = Transparent.
Câmpul text “Dl. / D-na.” s-a înlocuit cu un câmp nou creat, de tip TextBox,
care conţine o formulă de adresare în funcţie de valoarea câmpului Sexul
din tabel. Proprietatea DataSource a acestuia se completează cu expresia
de calcul aferentă; se foloseşte utilitarul ExpressionBuilder.
Pentru a scrie expresia corespunzătoare formulei de adresare, este
necesară includerea câmpului Sexul din tabelul tbl_Candidati; acest câmp
se va ascunde prin stabilirea proprietăţii Visible = No.
2.7 Macro-uri
Macro-urile sunt obiecte Access care asigură legarea într-un flux continuu
a execuţiei operaţiilor referitoare la diferite obiecte. Comenzile macro permit
automatizarea lansării acţiunilor prin asocierea la un singur eveniment utilizator a
întregii succesiuni de operaţii.
De obicei, un macro se denumeşte după şablonul: mac_NumeMacro sau
macNumeMacro..
Din punct de vedere logic, un macro este similar unei secvenţe de program
VBA care execută succesiv aceleaşi comenzi. Avantajul utilizării macro-ului este
că acesta poate fi scris în mod conversaţional, fără ca utilizatorul să aibă
cunoştinţe de programare.
126 Sisteme de gestiune a bazelor de date
FIG.117
2.7.2 Exemplu
FIG.118
Se creează interogarea qry_ScriuNota, de tip Select, folosind toate
câmpurile din tabelul tbl_Nota (care urmează să fie actualizat).
FIG.119
Se transformă interogarea Select în
interogare de tip Update, după care se
completează expresia de calcul folosind
utilitarul Build.
După prima rulare, mediul Acces ascunde
automat câmpurile a căror valoare nu se
modifică în procesul de actualizare.
128 Sisteme de gestiune a bazelor de date
FIG.120
Se creează macro-ul
mac_ScriuNota care va
lansa interogarea de
acţiune qry_ScriuNota.
FIG.121
Pentru formularul frm_Note, se stabileşte proprietatea OnClose. În acest mod, la
activarea evenimentului OnClose (acţionarea butonului de închidere a formularului), se
lansează mac_ScriuNota şi implicit, interogarea qry_ScriuNota.
Note de curs şi aplicaţii 129
FIG.122
Folosind opţiunea Insert \ Rows din
fereastra de proiectare a macro-ului,
se adaugă comanda
SetWarning = No
pentru inhibarea mesajelor.
Observaţie:
Pentru completarea aplicaţiei se vor crea următoarele obiecte:
- formularul frm_Vizualizare care include butoane de comandă pentru
lansarea rapoartelor;
- formularul frm_Start care include butoane de comandă pentru lansarea
fomularelor frm_IntroDate şi frm_Vizualizare.
Cititorului acestei cărţi i se recomandă crearea formularelor precizate
precum şi a altor obiecte considerate utile în rezolvarea problemei propuse.
130 Sisteme de gestiune a bazelor de date
FIG.123
FIG.124
2.8.1 Obiecte
O colecţie conţine obiecte ale aceleiaşi clase (de exemplu, colecţia Forms
dintr-o bază de date).
Ierarhia obiectelor de acces la date este prezentată în FIG.125.
DBEngine Errors
Workspaces
Workspace Connections
Users
Groups
Databases
FIG.125
Database TableDefs
QueryDefs
unde:
Containers
Obiect Recordsets
Colecţie Relations
2.8.2 Evenimente
OnClick, OnDblClick
Se utilizează cel mai frecvent pentru butoane de comandă sau liste
derulante (ComboBox). Se declanşează în momentul executării unui click,
respectiv a unui dublu-click, cu butonul stâng al mouse-ului atunci când
cursorul se află deasupra controlului.
Evenimentul OnDblClick declanşează automat un eveniment OnClick care
îl precede.
OnChange
Se utilizează pentru controale de tip TextBox, ComboBox, etc. Se
declanşează atunci când datele din control sunt modificate.
On Enter
Se utilizează frecvent pentru controale. Se declanşează chiar înainte de
transferul cursorului către control în vederea selectării. Evenimentul opus
este On Exit.
On GotFocus
Se utilizează frecvent pentru controale. Se declanşează la selectarea unui
control, înainte de activarea acestuia. Evenimentul opus este On
LostFocus.
BeforeUpdate
Se utilizează atât pentru controale cât şi pentru formulare. Se declanşează
chiar înainte ca datele din sursa de date aflată la baza controalelor să fie
actualizată cu noile valori.
134 Sisteme de gestiune a bazelor de date
AfterUpdate
Se utilizează atât pentru controale cât şi pentru formulare. Se declanşează
atunci când se editează sursa de date.
On NotInList
Se utilizează pentru controale de tip listă derulantă (ComboBox). Se
declanşează atunci când utilizatorul introduce în caseta de editare o
valoare care nu există în lista predefinită.
On Open
Se utilizează pentru formulare sau rapoarte. Se declanşează la
deschiderea obiectului, înainte de afişarea sau previzualizarea vreunui
articol din sursa de date.
On Load
Se utilizează pentru formulare sau rapoarte. Se declanşează la
deschiderea obiectului şi încărcarea sursei de date.
On UnLoad
Se utilizează pentru formulare sau rapoarte. Se declanşează la închiderea
obiectului, înainte de ştergerea lui de pe ecran.
On Activate
Se utilizează pentru controale, formulare sau rapoarte. Se declanşează în
momentul în care obiectul devine fereastră activă, în sens Windows.
On Error
Se utilizează frecvent pentru controale şi formulare. Se declanşează în
momentul în care se produce o eroare pe formularul curent. Procedura
asociată evenimentului are doi parametri:
- DataErr – returnează codul erorii care a declanşat evenimentul;
- Response – permite utilizatorului să stabilească dacă se va afişa sau
se va omite mesajul de eroare implicit. Valorile posibile sunt date de
constantele implicite: acDataErrContinue şi respectiv acDataErrDisplay.
A. Declararea variabilelor
În cazul recomandat în care antetul de modul VBA conţine comanda
Option Explicit, toţi identificatorii care denumesc variabile trebuie declaraţi
înainte de folosirea lor. Tipul variabilelor se poate alege dintr-o listă derulantă
oferită de utilitarul editorului de program.
Concordanţa de tip se aplică similar cu majoritatea limbajelor de programare.
În plus, VBA pune la dispoziţia utilizatorului tipul Variant, compatibil cu toate
celelalte tipuri de variabile.
Cel mai frecvent folosite declaraţii de variabile au sintaxa:
Prin cuvântul cheie Dim se declară o variabilă locală pentru procedură iar
Public declară un identificator global, cu vizibilitate în întreg modulul.
B. Comentarii
Comentariile sunt texte introduse de către programator în scopul măririi
clarităţii textului programului; se recomandă inserarea comentariilor deoarece ele
uşurează mult înţelegerea programului şi efectuarea oricăror modificări
ulterioare. Compilatorul ignorează comentariile.
Sintaxa comentariilor în VBA este:
C. Afişarea datelor
Modul cel mai simplu de afişare a mesajelor sau a valorii variabilelor este
folosirea unei casete de dialog predefinită, cu un buton <OK>. Sintaxa
simplificată a comenzii este:
unde:
- prompt este un argument obligatoriu care defineşte ceea ce se
afişează. Poate conţine un text, numele unei variabile sau o expresie.
- title este un argument opţional prin care utilizatorul poate personaliza
titlul casetei de dialog.
unde:
Note de curs şi aplicaţii 137
F. Decizia simplă
Instrucţiunile de decizie ramifică execuţia programului în funcţie de valoarea
de adevăr a unei condiţii logice. În VBA, decizia este implementată de
instrucţiunile If şi Select Case.
Sintaxa bloc simplificată a instrucţiunii If este:
If condiţie Then
instrucţiuni_1
[Else
instrucţiuni_2]
End If
138 Sisteme de gestiune a bazelor de date
G. DoCmd
Pentru programatorul începător, obiectul DoCmd poate fi privit ca una dintre
cele mai folosite comenzi Access. Cu ajutorul lui se pot lansa comenzi
referitoare la majoritatea obiectelor, de exemplu: deschiderea / închiderea
ferestrelor, formularelor sau rapoartelor, rularea interogărilor, etc.
Sintaxa simplificată este:
unde:
- metodă este un argument obligatoriu care precizează comanda care
trebuie lansată (de exemplu: OpenForm, Close, OpenReport, RunSQL,
SertWarnings, etc);
- arg1, arg2,… reprezintă argumentele metodei respective.
Observaţie: în scrierea corectă a comenzii utilizatorul începător este mult
ajutat de facilitatea de autocompletare a editorului VBA.
2.8.4 Exemplu
FIG.126
eroare = True
End If
End Sub
Observaţii:
- Variabila eroare este o variabilă globală (valoarea ei se transmite de la o
procedură la alta). Din acest motiv ea trebuie declarată în secţiunea de
declaraţii a modulului folosind clauza Public.
- Cuvântul chete Me! desemnează formularul curent.
- Funcţia chr(13) returnează caracterul CarriageReturn.
- Editarea liniei de cod pe mai multe rânduri se realizează folosind separatorul
“ _ “.
- Proprietăţile tip Events ale formularului frm_Note sunt prezentate în FIG.127.
FIG.127
142 Sisteme de gestiune a bazelor de date
FIG.128
- În locul folosirii unui macro pentru scrierea notelor în tabel, se poate utiliza o
procedură asociată formularului frm_Note, declanşată de evenimentul
OnClose.
Secvenţa de cod care înlocuieşte macro-ul mac_ScriuNota este:
3. APLICAŢII
Proiectul director este principalul document care stă la baza realizării unei
aplicaţii dedicată informatizării unei activităţi economice precizate. El este un
instrument de definire şi conducere a acţiunilor de informatizare în concordanţă cu
cerinţele specifice şi posibilităţile tehnico-economice.
Proiectul director creează cadrul organizatoric şi precizează
responsabilităţile în elaborarea, execuţia şi implementarea sistemului informatic.
Astfel, el trebuie să puncteze următoarele:
justificarea sistemului informatic prin prisma efortului şi a rezultatelor previzibile;
personalul, din interiorul sau exteriorul unităţii, care participă la realizarea şi/sau
implementarea sistemului;
principalele etape ale realizării sistemului informatic şi aproximarea perioadei de
timp afectate fiecărei etape.
∗ PROIECTAREA RELAŢIILOR
∗ PROIECTAREA UNITĂŢILOR DE
PRELUCRARE
∗ ELABORAREA DOCUMENTAŢIEI
IMPLEMENTAREA FAZELOR DE PROIECTARE A DATELOR ŞI
SISTEMULUI PRELUCRĂRILOR
INFORMATIC
∗ TESTAREA SISTEMULUI INFORMATIC
∗ DEFINITIVAREA SISTEMULUI
∗ DAREA ÎN FOLOSINŢĂ A SISTEMULUI INFORMATIC
EXPLOATAREA ŞI ∗ RECEPŢIONAREA SISTEMULUI INFORMATIC DE CĂTRE
DEZVOLTAREA UNITATEA BENEFICIARĂ
SISTEMULUI ∗ EXPLOATAREA CURENTĂ A SISTEMULUI
INFORMATIC ∗ ÎNTREŢINEREA SISTEMULUI INFORMATIC
∗ PERFECŢIONAREA SISTEMULUI INFORMATIC
FIG.129
148 Sisteme de gestiune a bazelor de date
∗ Introducere de date:
Date referitoare la categoriile de produse comercializate,
Lista gramajelor uzuale pentru băuturile comercializate,
Date referitoare la produse nou introduse în nomenclator,
Date referitoare la modificările de preţuri,
Date referitoare la reducerile de preţuri practicate.
Note de curs şi aplicaţii 155
Având în vedere cele de mai sus, s-a optat pentru Microsoft Access. Acesta
este un SGBD relaţional modern, componentă a pachetului de programe
Microsoft Office, deosebit de răspândit pe calculatoarele personale. MS-Access
prezintă toate facilităţile necesare pentru realizarea aplicaţiei, siguranţă în
exploatare şi rulează în condiţii de viteză satisfăcătoare pe majoritatea
calculatoarelor personale existente momentan în România.
Observaţii:
- Câmpul CategorieID este cheia primară a tabelului; pe baza informaţiei
din acest câmp se identifică univoc articolele tabelului.
- Tipul de date din fiecare câmp rezultă din figură.
Note de curs şi aplicaţii 157
FIG.130
Observaţii:
- Pentru memorarea valorilor se utilizează un
tabel (în locul unei liste simple de tip Look-up
în tabelul tblProduse) deoarece, pe parcursul
utilizării aplicaţiei, tabelul va fi completat cu
valorile întâlnite la diverse tipuri de ambalaje.
- Câmpul Gramaj este de tip text pentru a
permite introducerea datelor într-un format cât
mai apropiat de cel uzual în comerţ.
FIG.131
158 Sisteme de gestiune a bazelor de date
FIG.132
Observaţii:
- Cheia primară este de tipul AutoNumber şi reprezintă un număr de ordine,
fără a avea o semnificaţie deosebită în evidenţa produselor. În caz că este
necesară identificarea produselor pe baza unui cod alfanumeric, se va
renunţa la câmpul de tip Autonumber şi se va folosi un câmp CodProdus, de
tip text, care va fi cheia primară a tabelului.
- Câmpul CategorieID asociază produsului una dintre categoriile prezentate în
tabelul tblCategorii. Câmpul este de tip Number şi conţine identificatorul
categoriei (CategorieID), aşa cum este el definit în tabelul tblCategorii. Pentru
uşurinţa folosirii aplicaţiei, se afişează numele categoriei, iar corespondenţa
este făcută printr-un Look-up Wizard cu căutarea datelor existente într-un alt
tabel. În figură se vizualizează începutul interogării aferente, în SQL View.
- La realizarea câmpului GramajID s-a folosit un Look-up Wizard cu căutarea
datelor într-un alt tabel. În acest mod se afişează o listă derulantă din care
utilizatorul poate selecta capacitatea ambalajului pentru produsul
comercializat sau, dacă este necesar, poate introduce o nouă valoare de tip
text.
Note de curs şi aplicaţii 159
FIG.133
FIG.134
Relaţiile dintre tabele sunt stabilite în urma analizei efectuate mai sus, astfel:
unu-la-mai-mulţi, între tblCategorii şi tblProduse, astfel unui articol din
tblCategorii îi pot corespunde mai multe articole din tblProduse, adică: în mod
normal, pentru fiecare categorie se găsesc în nomenclator mai multe produse.
Note de curs şi aplicaţii 161
Observaţii:
- Ambele relaţii au fost create automat, concomitent cu folosirea utilitarului
Look-up Wizard pentru câmpurile implicate.
- Deoarece se şterge şi se re-creează ori de câte ori se efectuează reduceri de
preţ, tabelul auxiliar nu este implicat în procesul de stabilire a relaţiilor.
FIG.135
FIG.136
FIG.137
Note de curs şi aplicaţii 163
Observaţii:
- Se creează întâi interogarea de tip Select, bazată pe câmpurile care vor
constitui viitorul tabel.
- Se transformă în interogare de tip Make-Table; numele noului tabel e Lista.
- Mesajele de avertizare pentru suprascrierea tabelului vor fi ignorate.
164 Sisteme de gestiune a bazelor de date
FIG.138
FIG.139
Note de curs şi aplicaţii 165
FIG.140
FIG.141
Observaţii:
- Câmpul Pret va fi actualizat şi va conţine preţul produsului după aplicarea
reducerii de preţ; expresia pentru efectuarea calculelor, creată cu utilitarul
Build este:
[Pret]-[Pret]*[Procent reducere]/100
166 Sisteme de gestiune a bazelor de date
- Interogarea are doi parametri de tip text prin care se solicită utilizatorului
introducerea explicită a denumirii categoriei la care se face reducere şi
valoarea procentuală a acestei reduceri.
În FIG.142 se prezintă dialogul datorat celor doi parametri, pentru cazul în
care se face o reducere de 10% la bere. Dialogul se lansează la fiecare rulare
a interogării.
FIG.142
FIG.143
FIG.188
FIG.144
Observaţii:
- Raportul, creat cu ajutorul utilitarului ReportWizard, are la bază tabelul Lista;
- Gruparea produselor se face după denumirea categoriei din care fac parte;
- Pentru ca datele din câmpul Pret să fie afişate în formatul personalizat din
figură, se intervine asupra câmpului Pret din banda Detail a raportului şi se
stabileşte pentru acesta proprietatea Format la aceeaşi valoare ca în tabelul
tblProduse: #,##0.00" LEI";-#,##0.00" LEI"
- Pentru îmbunătăţirea aspectului, s-au folosit instrumentele cuprinse în
ToolBox (linii, culori), precum şi modificarea elementelor de text, antet şi
poziţii ale câmpurilor.
168 Sisteme de gestiune a bazelor de date
d. Se rulează de câteva ori cele două interogări, în ordinea în care au fost create
şi se verifică funcţionarea aplicaţiei prin afişarea listei de preţuri cu ajutorul
raportului.
FIG.145
Observaţii:
- Comanda SetWarnings, cu argumentul No, inhibă afişarea mesajelor de
informare / confirmare aferente tuturor comenzilor care o urmează.
- Versiunile MS-Access 2000 şi XP, permit folosirea comenzii OpenQuery în loc
de comanda RunSQL, simplificând astfel scrierea argumentelor.
' Fac_Reduceri
Function Fac_Reduceri()
On Error GoTo Fac_Reduceri_Err
VCateg = InputBox("La ce categorie doriti sa faceti reducere ? ")
VRed = InputBox("Procentul de reducere aplicat: ")
Fac_Reduceri_Exit:
Exit Function
Fac_Reduceri_Err:
MsgBox Error$
Resume Fac_Reduceri_Exit
End Function
Observaţii:
Modulul conţine funcţia Fac_Reduceri () care execută toate operaţiile pe care
trebuie să le îndeplinească modulul; ea va fi lansată ulterior dintr-un macro.
Pentru a renunţa la utilizarea interogărilor cu parametru, se foloseşte
comanda RunSQL.
Textul interogării, argument al comenzii RunSQL, se preia în modul următor:
- se afişează interogarea în SQL View,
- se selectează textul şi se copiază în Clipboard,
- se comută în fereastra de proiectare a modulului şi se “lipeşte” textul
interogării în zona argument a comenzii RunSQL,
- interogarea se închide fără salvare.
Se modifică textul SQL astfel încât parametrii interogărilor se înlocuiesc cu
variabilele de tip text declarate în partea publică a modulului.
Modulul conţine comentarii sugestive pentru fiecare comandă inclusă.
FIG.146
FIG.147
Observaţii:
- Formularul are la bază tabelul tblCategorii;
172 Sisteme de gestiune a bazelor de date
FIG.148
Observaţii:
- Formularul are la bază tabelul tblGramaj;
- Formularul va fi folosit atât pentru introducerea datelor în mod explicit, cât şi
pentru actualizarea listei de gramaje pe parcursul introducerii unui produs
nou.
FIG.149
Note de curs şi aplicaţii 173
Observaţii:
- Formularul are la bază tabelul tblProduse;
- Listele derulante pentru câmpurile Categorie şi Gramaj, create în tabel prin
utilitarul LookupWizard, au fost preluate automat în formular;
- În situaţia în care capacitatea ambalajului pentru noul produs lipseşte din listă,
programul afişează un mesaj de avertizare (FIG.150), după care iniţiază
dialogul de introducere a noului ambalaj (FIG.151).
Procedura declanşată de evenimentul NotInList din modulul de clasă asociat
formularului frm_IntroProduse este prezentată în FIG.152.
FIG.150
FIG.151
FIG.152
174 Sisteme de gestiune a bazelor de date
FIG.153
FIG.154
Observaţii:
- Formularul are la bază interogarea qry_ModificPret.
- Formularul s-a creat cu ajutorul utilitarului FormWizard, articolele grupându-se
după câmpul CategorieNume.
Note de curs şi aplicaţii 175
a. Nomenclatorul de produse
Pentru a realiza nomenclatorul de produse, se creează interogarea
qry_NomenclatorProduse şi raportul rpt_Nomenclator.
FIG.155
176 Sisteme de gestiune a bazelor de date
Observaţie:
Expresia totalizatoare implementată prin funcţia agregat FirstOf, determină
includerea în foaia de calcul a primului articol din grupul pentru care celelalte
câmpuri au aceeaşi valoare. De exemplu, produsul “Suc de mere” apare o
singură dată în listă, deşi în tabelul tblProduse el figurează ca două
sortimente distincte, în ambalaj de 1 l şi 7,5 l.
FIG.156
Note de curs şi aplicaţii 177
c. Lista de preţuri
Pentru a realiza lista care include preţurile actuale, inclusiv eventualitatea
unei reduceri de preţuri, se utilizează raportul rpt_Lista_de_preturi prezentat
anterior.
FIG.157
178 Sisteme de gestiune a bazelor de date
FIG.158
Observaţii:
- Preţul unui litru se calculează cu expresia:
- S-au utilizat funcţiile Right, Left, Len şi Trim pentru a selecta partea numerică
a valorii câmpului Gramaj.
- S-a utilizat funcţia IIf pentru a transmite valoarea gramajului în aceeaşi unitate
de măsură (ml).
FIG.159
FIG.160
180 Sisteme de gestiune a bazelor de date
Observaţii:
- Raportul se creează folosind utilitarul LabelWizard;
- Se îmbunătăţeşte aspectul estetic în modul Design astfel: se modifică
denumirea câmpurilor, se formatează şi poziţionează câmpurile în spaţiul
etichetei, se adaugă un chenar dreptunghiular, etc.
Observaţii:
- Proiectarea formularelor meniu are loc în următoarea ordine: frm_IntroDate,
frm_Rapoarte, frm_START Formularele sunt prezentate în capitolul §3.
- Butoanele create la proiectare lansează acţiunea aferentă, conform celor
descrise în capitolele anterioare. În §4.Anexă se face precizarea exactă a
obiectelor şi modul legării acestora de butoanele formularelor – meniu.
Note de curs şi aplicaţii 181
FIG.161
FIG.162
182 Sisteme de gestiune a bazelor de date
FIG.163
FIG.164
FIG.165
§3.2. Rapoarte
FIG.166
FIG.167
Note de curs şi aplicaţii 185
FIG.168
FIG.169
186 Sisteme de gestiune a bazelor de date
FIG.170
frm_START
(3 butoane - OnClick)
frm_IntroDate frm_Rapoarte
(4 butoane - OnClick) (5 butoane - OnClick) mac_Afisez_ListaDePreturi
rpt_Etichete
(bazat pe Lista_pret_redus)
FIG.171
Note de curs şi aplicaţii 187
Structura funcţională a aplicaţiei derivă din natura activităţii vizate. Astfel sunt:
∗ Introducere de date:
Date referitoare la societăţile comerciale cotate,
Note de curs şi aplicaţii 191
Având în vedere cele de mai sus, s-a optat pentru Microsoft Access.
Acesta este un SGBD relaţional modern, componentă a pachetului de programe
Microsoft Office, deosebit de răspândit pe calculatoarele personale, care
satisface necesităţile aplicaţiei.
192 Sisteme de gestiune a bazelor de date
♦ tblFirme conţine toate datele despre clienţi, aşa cum sunt ele incluse în fişa
societăţii. În FIG.172 este prezentat tabelul tblFirme în modul de vizualizare
proiectare (DesignView)
FIG. 172
Note de curs şi aplicaţii 193
Observaţii:
- Câmpul CUI este cheia primară a tabelului; pe baza informaţiei din acest
câmp se identifică univoc articolele tabelului. S-a ales un tip numeric,
caracterul R considerându-se implicit.
- Tipul de date din fiecare câmp rezultă din figură.
- Pentru câmpul Localitate, de tip text, se foloseşte un Look-up Wizard cu valori
introduse manual, prin care se creează o listă derulantă conţinând localităţile
în care îşi au sediul firmele din portofoliu.
FIG. 173
194 Sisteme de gestiune a bazelor de date
Observaţii:
- Tabelul reprezintă un registru de evidenţă în care se „memorează” tranzacţiile
după ce au fost prelucrate de program. Din modul de funcţionare al aplicaţiei
rezultă ca acesta va fi un tabel independent, fără a fi în relaţie cu alte tabele.
- Cheia primară este de tipul AutoNumber şi reprezintă un număr de ordine,
fără a avea o semnificaţie deosebită în evidenţa tranzacţiilor.
- La realizarea câmpului Tip_Tran s-a folosit un Look-up Wizard cu
introducerea manuală a datelor; în acest mod se afişează o listă derulantă din
care utilizatorul poate selecta “Vânzare” sau “Cumpărare”.
FIG.174
196 Sisteme de gestiune a bazelor de date
FIG.175
Relaţiile dintre tabele sunt stabilite în urma analizei efectuate mai sus, astfel:
unu-la-mai-mulţi, între tblFirme şi tblCrt; deşi tblCrt conţine cel mult un articol,
relaţia este necesară pentru funcţionarea căutării de tip Look-up Wizard.
Câmpul de legătură este CUI, cheie primară în tabelul tblFirme şi cheie
străină în tabelul tblCrt.
unu-la-unu, între tblFirme şi tblValoare_Sold, astfel unui articol din tabelul
tblFirme îi corespunde un articol din tblValoare_Sold, adică fiecare client are
un număr de acţiuni actual, faţă de care se efectuează operaţiunile de
vânzare / cumpărare.
Observaţie: săgeţile marcate „a” şi respectiv „b” de pe FIG.175 ilustrează
modul de actualizare al soldului de acţiuni, conform funcţionării descrise
mai sus.
Note de curs şi aplicaţii 197
FIG.176
198 Sisteme de gestiune a bazelor de date
FIG.177
FIG.178
Observaţii:
- Se creează întâi o interogare de tip Select, pe baza tabelului tblCrt.
- Se transformă în interogare de tip Update.
- Se scrie expresia de actualizare cu ajutorul utilitarului Build (FIG.179).
FIG.179
FIG.180
200 Sisteme de gestiune a bazelor de date
FIG.181
FIG.182
Observaţii:
- Se creează întâi o interogare de tip Select, pe baza tabelului tblCrt.
- Se transformă în interogare de tip Update.
- Se scrie expresia de actualizare cu ajutorul utilitarului Build. Se utilizează
funcţia integrată IIF, având o sintaxă asemănătoare funcţiei IF din mediul
Excel. Expresia de calcul este:
- Se salvează şi se rulează.
Note de curs şi aplicaţii 201
FIG.183
Observaţii:
- Se creează întâi o interogare de tip Select, pe baza tabelului tblValoare_Sold.
- Se transformă în interogare de tip Update.
- Se scrie expresia de actualizare cu ajutorul utilitarului Build.
- La încercarea de rulare, interogarea afişează un mesaj de eroare. Pentru a
completa datele lipsă, în zona de date se va adăuga tabelul tblCrt, cu ajutorul
butonului ShowTable. Cele două tabele nu sunt în relaţie directă, prin urmare
se realizează o relaţie „locală”, prin tragerea cheii primare CUI din tabelul
tblValoare_Sold peste câmpul corespunzător Cod din tabelul tblCrt.
- Se salvează şi se rulează.
FIG.184
Observaţii:
- Se creează întâi interogarea de tip Select, bazată pe tabelul tblCrt (sursa
datelor).
- Se transformă în interogare de tip Append.
- Se precizează tabelul tblTranzactii ca destinaţie a datelor; corespondenţa
între câmpurile celor două tabele se face automat, pe baza denumirilor
identice.
- Se salvează, se rulează.
FIG.185
Note de curs şi aplicaţii 203
Observaţii:
- Se creează întâi interogarea de tip Select, bazată pe tabelul tblCrt (din care
se şterg articole).
- Se transformă în interogare de tip Delete.
- Se salvează, se rulează.
FIG.186
Observaţii:
- Formularul s-a creat cu ajutorul utilitarului Form Wizard.
- Pentru estetizarea formularului s-au utilizat proprietăţile: Caption, Record
Selector, ScrollBars, NavigationButtons, MinMaxButtons.
FIG.187
Observaţii:
- Comanda SetWarnings, cu argumentul No, inhibă afişarea mesajelor de
informare / confirmare aferente tuturor comenzilor care o urmează.
- Pentru deschiderea formularului se foloseşte comanda OpenForm; pentru a
permite introducerea datelor, proprietatea WindowMode trebuie setată la
valoarea „Dialog”.
- Argumentul comenzilor OpenQuery îl reprezintă chiar interogările respective.
FIG.188
Observaţii:
- Formularul are la bază tabelul tblFirme.
- S-au modificat proprietăţile Caption, MinMaxButtons şi DataEntry (Yes).
- Lista derulantă pentru câmpul Localitate, creată în tabel, a fost preluată
automat în formular.
- Formularul va fi folosit atât pentru introducerea datelor despre clienţii
noi cât şi pentru modificarea datelor referitoare la clienţii existenţi.
FIG.189
Observaţii:
- În caz că utilizatorul tastează în zona de editare a ComboBox-ului numele
unei societăţi inexistente în listă, apare un mesaj de avertizare în urma căruia
utilizatorul poate opta pentru reluare sau pentru introducerea în listă a unui
nou client (FIG.190). Pentru introducere se lansează acelaşi formular
frm_FirmaNoua.
FIG.190
Note de curs şi aplicaţii 207
a. Jurnalul de clienţi
Jurnalul de clienţi este realizat prin raportul rpt_JurnalClienti. Raportul a fost
construit folosind utilitarul ReportWizard având la bază tabelul tblFirme.
Pentru a obţine o formă convenabilă, s-a intervenit în DesignView prin
mutarea unor câmpuri şi modificarea expresiei de afişare a numărului de
pagină.
FIG.191
Note de curs şi aplicaţii 209
c. Jurnalul de operaţiuni
Jurnalul de clienţi este realizat prin raportul rpt_JurnalOperatiuni. Raportul a
fost construit folosind utilitarul ReportWizard prin combinarea datelor din
tabelul tblFirme şi tabelul tblTranzactii. Pentru a obţine o formă convenabilă,
s-a intervenit în DesignView prin mutarea unor câmpuri şi modificarea
expresiei de afişare a numărului de pagină.
FIG.192
210 Sisteme de gestiune a bazelor de date
FIG.193
Observaţii:
- Pentru a obţine o formă convenabilă, s-a intervenit în DesignView prin
mutarea unor câmpuri şi modificarea expresiei de afişare a numărului de
pagină.
- Faţă de interogarea qry_VizuFirme_Tran, raportul conţine în plus câmpul
Valoare Tranzactie. Pentru raport, acesta reprezintă un câmp calculat, creat
prin folosirea instrumentului TextBox şi a utilitarului Build.
- În secţiunea de titlu s-au inclus două controale, Societatea şi CUI, a căror
valoare se preia din interogare, după ce articolele acesteia au fost filtrate.
FIG.194
Observaţii:
- Se interzice tastarea numelui unui client inexistent. Pentru aceasta,
proprietatea LimitToList a controlului Combo0 este setată pe Yes.
- Alegerea unei valori din lista derulantă determină lansarea în execuţie a
raportului rpt_QryVizu. Vizualizarea raportului cu filtrarea datelor afişate,
astfel încât ele să se refere numai la societatea aleasă din listă, se realizează
prin secvenţa de cod prezentată în FIG.195.
FIG.195
PM: Sum([Cant]*[Pret_Tranz])/Sum([Cant])
212 Sisteme de gestiune a bazelor de date
FIG.196
FIG.197
Note de curs şi aplicaţii 213
Observaţie: pentru afişarea datei curente în titlul raportului, s-a utilizat funcţia
Date() ca valoare a unui câmp calculat.
Observaţii:
- Interogarea qry_PMediu_Firma s-a creat prin copiere din interogarea
qry_Pmediu.
- S-a adăugat câmpul Societatea necesar pentru filtrarea datelor.
FIG.198
FIG.199
214 Sisteme de gestiune a bazelor de date
FIG.200
FIG.201
Observaţii:
- Se ordonează articolele descendent, după valoarea preţului mediu ponderat.
Note de curs şi aplicaţii 215
FIG.202
Observaţii:
- Formularul frm_TopC se creează folosind utilitarul FormWizard, cu alegerea
stilului tabular apoi se fac modificări în fereastra DesignView.
- Se stabileşte modul de vizualizare ContinousForm.
- Se modifică denumirea câmpurilor.
216 Sisteme de gestiune a bazelor de date
FIG.203
Observaţii:
- Raportul se creează folosind utilitarul LabelWizard.
- Se îmbunătăţeşte aspectul estetic în modul Design astfel: se modifică
denumirea câmpurilor, se formatează şi poziţionează câmpurile în spaţiul
etichetei, se adaugă un chenar dreptunghiular, etc.
Note de curs şi aplicaţii 217
Una dintre cele mai simple modalităţi de crea meniuri în MS-Access este
utilizarea formularelor cu butoane. Spre deosebire de formularele de introducere
/ vizualizare date, formularele - meniu se creează în modul Design.
În cele mai multe cazuri, pentru stabilirea acţiunilor pe care le lansează
butoanele se foloseşte utilitarul interactiv de tip Wizard, activat de pe Toolbox
odată cu crearea butoanelor de comandă.
Ulterior se îmbunătăţeşte aspectul formularelor prin modificarea
proprietăţilor Caption, ScrollBars, RecordSelectors, NavigationButtons,
DividingLines, MinMaxButtons, etc.
Facilităţile oferite de aplicaţie se grupează logic în două categorii:
introducere / modificare date,
vizualizare date.
Corespunzător acestor două categorii, se vor crea două formulare
distincte: frm_IntroDate şi frm_Rapoarte care se vor lansa dintr-un formular
principal frm_START.
În plus, este necesară utilizarea unui formular care să selecteze cele două
posibilităţi de afişare a preţului mediu ponderat: pentru toate societăţile sau
numai pentru clientul ales de utilizator.
Observaţii:
- Proiectarea formularelor meniu are loc în următoarea ordine: frm_PretMediu,
frm_Rapoarte, frm_IntroDate, frm_START.
- Butoanele create la proiectare lansează acţiunea aferentă, conform celor
descrise în capitolele anterioare. În Anexă se face precizarea exactă a
obiectelor şi modul legării acestora de butoanele formularelor – meniu.
- Butonul Top aparţinând formularului frm_Rapoarte, cu rolul de lansare a
formularelor frm_TopC şi frm_TopV, s-a creat fără folosirea utilitarului Wizard.
Secvenţa de cod aferentă este prezentată în FIG.204.
218 Sisteme de gestiune a bazelor de date
FIG.205
FIG.206
FIG.207
FIG.208
220 Sisteme de gestiune a bazelor de date
FIG.209
§3.2. Rapoarte
FIG.210
222 Sisteme de gestiune a bazelor de date
FIG.211
FIG.212
FIG.213
Note de curs şi aplicaţii 223
FIG.214
FIG.215
224 Sisteme de gestiune a bazelor de date
§4. ANEXĂ
Organigrama aplicaţiei
frm_START
(2 butoane - OnClick)
frm_IntroDate frm_Rapoarte
(3 butoane - OnClick) (7 butoane - OnClick)
frm_PretMediu qry_TopC
qry_TopV
rpt_Adrese
FIG.216
Note de curs şi aplicaţii 225
4. PROBLEME REZOLVATE
După cum rezultă din capitolul anterior, etapele cele mai dificile în realizarea
aplicaţiilor de baze de date sunt cele în care se proiectează tabelele, se stabilesc
relaţii între tabele, se descriu şi se implementează algoritmii de procesare a
datelor.
Problemele rezolvate în continuare sunt exemple de abordare a unor
probleme reale pentru care se construieşte structura de date, se prezintă logica
aplicaţiei şi modul de implementare a principalelor sarcini. Interfaţa aplicaţiei şi
listele utilizator pot fi realizate uşor, după modele prezentate în capitolul 3.
FIG.217
FIG.218
Note de curs şi aplicaţii 227
FIG.219
FIG.220
228 Sisteme de gestiune a bazelor de date
Observaţii:
- Câmpurile Disponibile şi Locuri rămase sunt adăugate ulterior, folosind
butonul TextBox de pe bara cu instrumente. Acestea rămân câmpuri
nelegate, valoarea lor fiind dată de expresii calculate.
- Butonul cmdRezervati va declanşa succesiunea de operaţii necesare pentru
efectuarea şi înregistrarea rezervării.
FIG.221
FIG.222
Note de curs şi aplicaţii 229
FIG.223
FIG.224
FIG.225
FIG.226
FIG.227
FIG.228
FIG.229
232 Sisteme de gestiune a bazelor de date
FIG.230
FIG.231
Note de curs şi aplicaţii 233
End Sub
FIG.233
Sub citeste()
n1 = InputBox ("Introdu primul numar ")
FIG.234
n2 = InputBox ("Introdu al doilea numar ")
End Sub
FIG.236
Sub citeste()
n1 = InputBox("Introdu primul numar ")
n2 = InputBox("Introdu al doilea numar ")
End Sub
rezultat = n1 + n2
MsgBox rezultat, , "Suma este"
End Sub
FIG.237
Note de curs şi aplicaţii 239
FIG.238
Lista derulantă pentru alegerea abonatului preia datele din tabelul Abonati.
Valoarea proprietăţii Row Source este o interogare de tip Select realizată manual
(FIG.239).
FIG.239
240 Sisteme de gestiune a bazelor de date
FIG.240
Response = acDataErrAdded
Set rec = CurrentDb.OpenRecordset("Abonati")
With rec
.AddNew
!Nume = numeabonat
!Premune = prenabonat
.Update
.Close
End With
DoCmd.OpenForm "frm_abonati"
DoCmd.GoToRecord acDataForm, "frm_abonati", acLast
Else
Response = acDataErrContinue ’ continua, indiferent de eroare
Aleg_Abonat.Undo
242 Sisteme de gestiune a bazelor de date
End If
End Sub
FIG.241
FIG.242
FIG. 243
FIG.245
FIG.246
Note de curs şi aplicaţii 245
BIBLIOGRAFIE
2. Cernuşca L.,
Concepte şi practici ale contabilităţii de gestiune,
Ed. Universităţii "Aurel Vlaicu", Arad, 2004
3. Cohen J.C.,
Les informanageurs, Les édition d'organisation, Paris, 1990
4. Dollinger R.,
Baze de date şi gestiunea tranzacţiilor, Ed. Albastră, Cluj-Napoca,1998,
reeditată 2002
5. Fehily C.,
SQL, Visual Quickstart Guide, Ed. Bic-All, Bucureşti, 2004
6. Fotache M.,
Proiectarea bazelor de date. Normalizare şi postnormalizare,
Implementări SQL şi Oracle., Ed. Polirom, Iaşi, 2005
7. Hernandez M.J.,
Proiectarea bazelor de date, Ed. Teora, Bucureşti, 2003
9. Kovacs S.,
Access 2000. Implementarea bazelor de date,
Ed. Albastră, Cluj-Napoca, 2004
27. *** Microsoft Office 2000, Curs rapid, Ed. Teora, Bucureşti, 2000
29. www.bvb.ro
30. www.edu.ro
31. www.microsoft.com
32. www.mmssf.ro
33. www.sas.mmssf.ro