Sunteți pe pagina 1din 30

Qdidactic 

» stiinta & tehnica » informatica » baze de date


Aplicatii practice rezolvate – baze de date

Aplicatii practice rezolvate – baze de date

Aplicatii practice rezolvate – BAZE DE DATE


1. Rezumat

Acest capitol propune un indrumator pentru orele de laborator, in vederea insusirii deprinderilor
practice de utilizare a programului Microsoft Access 2003. Acesta va cuprinde atat aplicatii rezolvate
cat si aplicatii propuse studentilor pentru munca individuala. Suntem constienti ca notiunile prezentate
prin exemple in acest capitol nu acopera toate facilitatile de prelucrare oferite de Microsoft Access.
Propunerea noastra este prezentarea unora dintre cele mai utile instrumente de utilizare a SGBD-ului
studiat in partea teoretica.

2. Aplicatia 1

1. Sa cere informatizarea activitatii unei firme. Furnizorii sunt identificati prin cod furnizor, denumire


furnizor (numele si prenumele furnizorului), localitatea, adresa, email, banca furnizor  si  cont
furnizor.  Despre produse se cunosc cod produs, denumire produs, unitate de masura, stoc, pret
unitar. Produsele sunt depozitate in magazii, pentru care se cunosc cod magazie, denumire
magazie, gestionar (numele persoanei care are in gestiune depozitul respectiv). Operatiunile se
desfasoara pe baza unor facturi, care trebuie sa contina numarul facturii si data facturii. Fiecare
factura va avea detaliate liniile facturii in tabelul LiniiFact, care va contine numar factura, cod
produs si cantitate.
2. Se cere afisarea tuturor produselor in ordinea alfabetica a denumirii acestora.
3. Sa se afiseze toate produsele cu unitatea de masura bucati care au cantitatea strict mai mare
decat 2, ordonate alfabetic dupa denumirea produsului.

Obiective:

Crearea unei baze de date.

Crearea tabelelor in Design View. Analiza informatiilor si stabilirea structurii tabelelor. Stabilirea
cheilor primare si a indecsilor.

Crearea relatiilor dintre tabele.

Afisarea unei liste ordonate si aplicarea filtrelor pentru afisarea datelor dupa anumite criterii.

Rezolvare
1. Propunem urmatoarea schema de structurare a datelor:

In tabela LiniiFact se observa faptul ca pentru campul nr_f nu poate fi definita o cheie primara, de
aceea vom adauga campul ID.

Se stie ca un furnizor va apare pe mai multe facturi. Deci relatia dintre tabelele Furnizori si Facturi
este de tipul one-to-many. Pentru a crea aceasta relatie, este necesara adaugarea campului cod_f in
tabela Facturi. Intr-o magazie se gasesc mai multe produse, deci relatia dintre tabela Magazii si tabela
Produse este de tipul one-to-many. Pentru aceasta este necesara adaugarea campului cod_m in tabela
Produse. In acelasi timp un produs se regaseste de mai multe ori (posibil) pe liniile unei facturi, sau pe
liniile mai multor facturi. Deci relatia dintre tabela Produse si tabela Liniifact este one-to-many. Pentru
a o crea este necesara adaugarea campului cod_p in tabela Liniifact. In final, o factura are mai multe
linii, deci relatia dintre tabelele Facturi si Liniifact este de tipul one-to-many.

Pentru a realiza aceste leagaturi, unele tabele trebuie completate cu anumite campuri suplimentare,
care sa permita crearea ulterioara a relatiilor. Pentru aceasta, in tabela copil, se adauga campul pe care
a fost creata cheia primara din tabela parinte. Campurile de tip cheie primara alese vor fi: Furnizori
(cod furnizor), Produse (cod produs), Magazii (cod magazin), Facturi (nr fact) si Liniifact (ID). Deci
tabelele parinte sunt: Furnizori, Magazii si Facturi, iar Produse si Liniifact sunt tabele Copil.
Adaugand si rearanjand tabelele, acestea vor arata ca in figura urmatoare:

Primul pas este crearea bazei de date. Aceasta va purta numele Firme. Pentru a crea baza de date, din
meniul File se alege optiunea New, iar din Task Pane-ul New File se alege optiunea Blank Database.
Primul pas este alegerea locatiei in care va fi salvat fisierul, apoi denumirea propriu-zisa a acestuia.

Dupa crearea bazei de date se trece la analiza fiecarui tabel in parte si alegerea tipului de camp cel mai
potrivit datelor care vor fi salvate in acesta. Propunem urmatoarele:

in tabela Furnizori: cod_f (codul furnizorului) – cheie primara, de tip Number, Field Size: Integer,


Decimal Places:0, Caption: cod furnizor, Validation Rule: <=200, Validation Text: “Maxim 200 de
furnizori”, Required: Yes; den_f (denumirea furnizorului) – de tip Text, Field Size: 30, Format: >,
Caption: denumire furnizor, Required: Yes, Allow Zero Length: No, Indexed: Yes (Duplicates
OK); loc_f (localitate) – de tip Text, Field Size: 30, Caption: localitate, Default Value:
Timisoara; adresa – de tip Memo; email – de tip Hyperlink; banca – de tip Text, Field Size: 30,
Format: >, Required: Yes, Allow Zero Length: No; cont (contul din banca, IBAN) – de tip Text, Fields
Size: 24, Input Mask: 'RO'99>AAAA0000099999999999.

Dupa ce toate campurile au fost create, se salveaza tabela alegand butonul Save, apoi se apasa sageata
de pe butonul View, de unde se alege Datasheet View, pentru a introduce datele a trei furnizori in
tabela.

in tabela Magazii: cod_m (cod magazin) – Primary key, de tip Number, Field Size: Byte, Caption:
Cod magazin, Required: Yes; den_m – de tip Text, Field Size: 15, Caption: Denumire magazie,
Indexed: Yes (Duplicates OK), gest – de tip Text, Field Size: 30, Caption: Gestionar. Vom introduce
in continuare 3 magazii, cu codurile magazilor 111, 112 si 113;

in tabela Produse: cod_p – Primary key, de tip Number, Field Size: Long Integer, Caption: Codul
produsului, Required: Yes; den_p (denumirea produsului) – tipul campului Text, Field Size:15,
Caption: denumirea produsului; um (unitate de masura) – de tipul Lookup Wizard, apoi selectam – I
will type in the values that I want, la optiunea Number of Columns lasam 1, iar in lista col1 vom tasta
pe rand, una sub alta, valorile dorite: kg, l, cm, buc, selectand butonul Next, apoi Finish; stoc (stocul
disponibil in magazie) – de tip Number, Field Size: Long Integer, Caption: unitate de masura,
Required: Yes; pret_u, de tip Currency, Caption: Pret unitary; cod_m (cod magazie) – un camp de tip
Lookup Wizard – vom selecta optiunea I want the lookup column to lookup the values in a table or
query, apoi se allege tabela Magazii; selectam campul cod_m (cod magazie):
Ordonarea va fi facuta dupa acelasi camp cod_m, putandu-se observa valorile introduse anterior in
tabela Magazii:

In continuare se selecteaza butonul Next, apoi Finish. Intre cele doua tabele (Magazii (tabela parinte)
si Produse (tabela copil) va fi creata automat o relatie). Pentru ca aceasta relatie sa fie de tipul one-to-
many, vom introduce minim 4 produse, 2 dintre ele gasindu-se in aceeasi magazine, de exemplu cea cu
codul 113;

tabela Facturi: nr_f (numarul facturii) – Primary key, de tip Number, Field Size: Long integer,
Caption: Numarul facturii, Required: Yes; data_f – de tip Date/Time, Caption: Data Facturii,
Required: Yes, Format: Short date, cod_f (cod furnizor) – tipul de date Lookup Wizard, ne legam de
tabela Furnizori, campul cod_f, Caption: Cod furnizor. Tabela Facturi este copilul tabelei Furnizori.
Avand 3 furnizori in tabela parinte, vom introduce minim 4 facturi, codul furnizorului 125 repetandu-
se de 2 ori:
tabela Liniifact: ID – Primary Key, un camp de tip Autonumber, Caption: Numar
curent; nr_f (numarul facturii) – un camp de tip Lookup Wizard, ne legam de tabela Facturi, campul
nr_f, Caption: Numarul facturii; cod_p (codul produsului) – un camp de tip Lookup Wizard, ne legam
de tabela Produse, campul cod_p si cant – un camp de tip Number, Field Size: Integer, Caption:
Cantitate. Acest tabel fiind copilul tabelelor Produse si Facturi, vom introduce minim 5 inregistrari:

Pentru a verifica relatiile si a seta regulile de integritate referentiala, se selecteaza butonul

Relationships de pe bara de unelte:  :

Pentru fiecare relatie in parte, se apeleaza meniul contextual, se alege optiunea Edit


Relationship Pentru a seta regulile de integritate referentiala se selecteaza optiunea Enforce
Referential Integrity, bifand optiunea Cascade Update Related Field. Daca se doreste modificarea
tipului de relatie dintre cele doua tabele, se selecteaza butonul Join Type, alegand una dintre cele trei
tipuri de relatii.

Selectand pentru fiecare relatie in parte optiunile respective, se obtine urmatoarea situatie:
2. Pentru a vizualiza datele intr-o anumita ordine se pot folosi butoanele de pe bara de unelte  , sau:

Pentru aceasta trebuie sa fim pozitionati pe o anumita coloana din tabel, in modul de
vizualizare Datasheet View.

3. Pentru a filtra datele dintr-o anumita tabela putem selecta fie unul dintre butoanele:   Filter
by selection, respectiv Filter by form, si Apply/Remove filter, fie una dintre optiunile din
urmatoarea figura. Optiunea Filter by Form ascunde inregistrarile, permitand fie selectarea valorii
dorite utilizand combo-box-ul corespunzator coloanei dorite, fie introducerea unei sau mai multor
valori, operatorul dintre conditiile multiple fiind AND. Pentru a vedea rezultatul, se selecteaza
butonul Apply Filer de pe bara de unelte Table Datasheet.

Optiunea Filter by selection permite selectarea cu mouse-ul a valorii cautate (efectuandu-se un click


in celula respectiva), rezultatul fiind vizibil atunci cand se apasa butonul Apply Filter. Daca se doreste
anularea filtrului, se selecteaza butonul Remove Filter (acest buton este un buton de tip
On/Off). Filter excluding selection functioneaza exact ca si optiunea Filter by selection, diferenta
fiind operatorul NON pus in fata conditiei.

Ultima optiune – Advanced Filer/Sort permite deschiderea unei ferestre cu ajutorul careia putem
sorta si compune conditii compuse, putandu-se utiliza operatorul OR intre conditii:
2.1. Aplicatie propusa

Se cere informatizarea activitatii unei societati de asigurari. Clientii pot fi persoane fizice sau juridice
caracterizate printr-un numar unic, nume si prenume/denumire, adresa si telefon. Acestia pot sa
incheie diferite tipuri de asigurari (de bunuri, de viata etc). Asigurarile sunt incheiate de agentii ce sunt
identificati printr-un cod unic, nume si prenume. Contractul de asigurare este caracterizat printr-un
numar, data incheierii, obiectul asigurarii, perioada (in luni), valoarea asigurata si prima ce va trebui sa
fie platita in fiecare luna de client. Clientii efectueaza plata primelor prin ordin de plata (persoane
juridice) sau direct la casierie (persoane fizice), eliberandu-se chitante. Documentul de plata contine:
numarul documentului, data la care a fost intocmit si suma platita. In momentul producerii riscului
pentru care a fost intocmita asigurarea, societatea plateste clientului despagubiri. La plata
despagubirilor se intocmeste un proces verbal care este caracterizat prin nume, data incheierii,
descrierea cauzei ce a generat despagubirea si procentul in care este despagubit clientul.

2.2. Aplicatie propusa

Se cere informatizarea activitatii la o filiala CEC. Clientii filialei sunt identificati prin seria si numarul
de buletin, data eliberarii buletinului, nume, prenume si adresa. Fiecare client poate sa detina unul sau
mai multe cecuri. Pentru fiecare cec se cunoaste: seria, numarul, data la care a fost eliberat, suma
depusa in momentul eliberarii si tipul cecului (poate fi la termen si la vedere). De asemenea, fiecare
cec poate sa aiba unul sau mai multi titulari. Fiecare client poate efectua depuneri si restituiri.
Depunerile se efectueaza prin intermediul unei foi de depunere (FD) caracterizata prin: numar, data si
suma depusa. Restituirile se efectueaza prin intermediul foilor de restituire (FR) caracterizate prin:
numar, data si suma restituita. Fiecare cec se poate lichida de catre unul din titulari prin intermediul
unei foi de lichidare (FL) caracterizata prin: numar, data si suma din momentul lichidarii. Dobanda
acordata pentru cecuri se modifica de la o zi la alta si este diferita pentru cecurile la termen fata de cele
la vedere.

3. Aplicatia 2

Sa se paroleze baza de date.

Pentru a vizualiza cat mai sugestiv relatiile dintre tabele, se vor crea formulare cu subformulare.

Formularele create vor fi modificate pentru a adauga titluri, butoane de comanda si controale de tip
Textbox pentru afisarea si calcularea valorilor TVA si VALOARE.
Se cere crearea unei forme de meniu. Aceasta va apela cu ajutorul butoanelor de comanda alte forme,
cate una pentru fiecare table, pentru vizualizarea datelor.

Se doreste crearea unui panou de comanda (Switchboard) pentru crearea unui meniu care sa contina
toate formele.

Obiective:

Protejarea bazei de date.

Vizualizarea datelor cu posibilitatea efectuarii unor operatii elementare asupra acestora.

Afisarea unor valori calculate dupa anumite formule.

Crearea unei interfete vizuale cu utilizatorul.

Rezolvare

1. Pentru a proteja baza de date cu o parola, aceasta trebuie deschisa in mod Exclusive. Pentru aceasta,
vom inchide baza de date, alegem optiunea Open, dupa selectarea bazei de date se apasa sageata din
dreptul butonului Open, pentru a alege optiunea Open Exclusive.

Apoi, pentru a seta o parola, Tools/Security/Set Database Password:


     

2. Pentru a crea un formular pentru fiecare tabel in parte, se selecteaza tabelul, apoi din
meniul Insert se alege optiunea Autoform.

De exemplu, pentru tabela Facturi, fiind tabela parinte tabelei Liniifact, automat se va crea un formular
cu un subformular.

3. Pentru a adauga un titlu in antet si butoane de comanda acestei forme, vom utiliza
butonul View pentru a trece in Design View:

Pentru a adauga un antet/subsol, din meniul Insert vom alege optiunea Form Header/Footer. Pentru


a adauga controale pe forma este necesara afisarea barei de unelte Toolbox, prin apasarea
butonului Toolbox de pe bara de unelte.

Pentru a adauga un titlu in partea de antet (Header), se utilizeaza controlul Label de pe bara de

unelte,  , se tasteaza textul dorit, apoi se formateaza folosind butoanele de pe bara de unelte.
Pentru a adauga un control de tip buton de comanda, trebuie ca butonul Control Wizards 

sa fie selectat. Apoi, se alege butonul Command Button  , dand un click in zona de subsol.
Aceasta va porni asistentul care permite construirea butonului. Actiunile pe care le putem atasa
butonului de comanda sunt grupate in mai multe categorii. De exemplu, pentru a inchide o forma, se
selecteaza categoria Form Operations, selectand apoi actiunea Close Form. La apasarea
butonului Next asistentul va ghideaza pentru a alege fie o imagine grafica asociata butonului, fie un
text. Ultimul pas este dat de denumirea butonului. Dupa conventiile cunoscute, orice buton de
comanda are un antet de 3 litere, cmd, deci numele acestuia va fi cmdIesire. Analog se construiesc
restul butoanelor dorite. Forma se va salva cu numele Facturi-Liniifact. Analog se construiesc restul
formelor.

Vom construi o forma care sa contina datele din tabelele Produse si Liniifact. Pentru aceasta, vom
selecta optiunea Create Form in Design View. Vom deschide fereastra Properties pentru a selecta
tabelele de unde vor fi preluate datele. Pentru aceasta, fiind pozitionati pe forma, apelam meniul
contextual (click-dreapta) si alege Properties:

Daca se alege obiectul Form, prima optiune pe pagina All este Record Source. Daca dorim sa


extragem datele dintr-o singura tabela, alegem una dintre cele afisate atunci cand este selectat combo-
box-ul. Daca se doreste extragerea datelor din mai multe tabele, se apasa butonul cu trei puncte. Din
fereastra Show Table vom alege cele doua tabele, Liniifact si Produse.
Vom alege din cele doua tabele campurile nr_f, den_p, um, pret_u si cant. La inchiderea ferestrei se
salveaza interogarea. Pentru a putea utiliza campurile, daca acestea nu apar implicit, se apasa

butonul  . Prin drag-and-drop, aceste cimpuri vor fi asezate pe forma.

Referat: Referat la informatica - retele de


calculatoare
Eseu: Liste circulare simplu inlantuite

Pentru a calcula un camp, acesta trebuie creat cu ajutorul controlului Text-box de pe bara de unelte
Toolbox. Selectand controlul si dand un click pe forma, vom observa o eticheta cu numele Text urmat
de un numar, si un text-box in care apare completat Unbound. In locul textului se completeaza: TVA,
iar in locul lui Unbound se tasteaza =0,19*[cant]*[pret_u]. Pentru a formata aceasta caseta de text, din
fereastra Properties, optiunea Format, se alege Currency.

Analog se calculeaza campul Valoare.

4. Pentru a crea o forma de meniu, se creaza o forma cu ajutorul optiunii Create a Form in Design
View, apoi se creeaza butoanele de comanda (cu ajutorul asistentului Control Wizards), selectindu-se
de la categoria Form Operation, actiuneaOpen a form, urmand a selecta numele formei care se
doreste a fi deschisa atunci cand se executa click pe buton.

6. Pentru a construi un panou de comanda (Switchboard):


Daca apare acest mesaj de eroare, se alege optiunea Yes:

Din fereastra Switchboad Manager se alege optiunea Edit, pentru a edita panoul de comanda


principal (Main).

Pentru a crea o noua optiune (un nou buton pe panoul de comanda) se alege butonul New:

Analog se creaza pentru fiecare forma o noua optiune. Pentru a crea un buton care permite parasirea
aplicatiei:
Putem alege oricare actiune dintre urmatoarele:

Forma poate fi regasita oricand in cadrul formularelor:

3.1. Aplicatie propusa:


Sa se creeze o interfata grafica cu utilizatorul cu ajutorul optiunii Switchboard, fiind create formulare
cu subformulare, imbogatite cu butoane de comanda si campuri calculate, pentru baza de date de la
Aplicatia 2.1. si 2.2.

4. Aplicatia 3

Sa se creeze o interogare care sa permita afisarea informatiilor de pe toate facturile (nr_f, data_f,
den_p, cant si pret unitar) pentru data curenta.

Sa se creeze o interogare pentru tabela Produse, afisandu-se pentru fiecare inregistrare TVA-ul si
Valoarea (cant*pret).

Sa se creeze o interogare care sa permita citirea interactiva in momentul executiei a unui numar de
factura si afisarea informatiilor legate de aceasta.

Sa se creeze o interogare care sa permita afisarea tuturor facturilor eliberate intre 2 date calendaristice
(operatorii Between cu And).

Sa se creeze prin intermediul unei interogari un nou camp cu numele Observatii care va contine textul
“Produs eficient” daca valoarea este mai mare decat o anumita valoare sau “Produs ineficient” daca
valoarea este mai mica decat acea valoare.
Sa se afiseze toate facturile eliberate luna aceasta.

Operatorul Like:

a.     Sa se afiseze toate produsele care incep cu litera p.

b.    Sa se afiseze doar produsele care sunt din 5 litere si incep cu litera p.

Sa se afiseze toate produsele care au preturile 3 si 5 lei.

Sa se afiseze toate produsele care nu au completat campul denprodus.

Sa se determine pentru fiecare factura valoarea totala.

Sa se creeze un nou tabel pe baza tabelelor Facturi, Produse si LiniiFact, rezultatul unei interogari,
care sa contina toate datele din toate tabele, suprimand aparitia dublata a campurilor de legatura,
tabelul fiind ordonat alfabetic dupa denumirea produselor.

Sa se numere cate produse au pretul mai mic decat 100 lei. Sa se salveze interogarea cu numele
Minim.

Sa se calculeze valoarea totala a facturii cu numarul citit de la tastatura. Sa se salveze interogarea cu


numele ValoareTot.

Sa se calculeze valoarea medie a valorii tuturor facturilor. Sa se salveze interogarea cu numele Medie.

Obiective:

Crearea interogarilor de selectie.

Functii pentru date calendaristice.

Crearea unor campuri calculate.

Interogari cu parametru.

Operatorii Between, Like, In, Is Null.

Functia IIF.

Interogari de tip Totals.

Interogari de tip Make Table.

Rezolvare:

1. Pentru a crea o interogare, se alege obiectul Query, selectand apoi optiunea Create Query In


Design View. In fereastra Show table vom selecta pe rand tabelele Facturi, Liniifact si Produse,
apasand apoi butonul Add, apoi se inchide fereastra. Pentru a alege campurile dorite, acestea se
selecteaza prin dublu-click. Pentru a selecta conditia ne pozitionam sub coloana data_f, pe
linia Criteria, unde tastam =Date(). Se salveaza interogarea apasand pe butonul Save. Pentru a
vizualiza rezultatul interogarii, de pe butonul View se alege Datasheet View.

Observatie: Daca interogarea nu returneaza nici un rezultatul, inseamna ca nici o inregistrare nu a


verificat conditia ca data facturii sa fie data curenta.

2. Pentru a crea a doua interogare, se alege tabela Produse din fereastra Show Tables, apoi se


calculeaza campurile TVA si valoare, pe rand, pe linia Field, prima coloana libera: TVA:
[pret_u]*[cant]*0,19, respectiv Valoare: [pret_u]*[cant]*1,19. Se salveaza si vizualizeza rezultatul
interogarii. Pentru a formata o anumita coloana din interogare (TVA si Valoare), in Design View se
selecteaza coloana, se apeleaza meniul contextual optiunea Properties, iar la optiunea Format se
alege Currency. Analog se procedeaza si cu coloana Valoare.

Se salveaza interogarea si se vizualizeaza rezultatele.

3. Se selecteaza tabelele Facturi, Produse si Liniifact, campurile: nr_f, data_f, den_p, pret_u si cant.
Pentru a crea o interogare cu parametru, care sa permita citirea interactiva a numarului facturii de pe
tastatura, pe coloana nr_f, linia Criteria se tasteaza [Introduceti numarul facturii]

4. Se selecteaza tabela Facturi, Liniifact si Produse, campurile: nr_f, data_f, den_p, pret_u si cant:


5. Se deschide interogarea de la punctul 2, in Design View, se salveaza cu alt nume (Save as). Se
apeleaza meniul contextual asociat unui nou camp, se alege optiunea Build Event:

Se selecteaza functia IIF, modificand-o astfel: Observatii: IIf([valoare]>50;'Produs


eficient';'Produs ineficient').

6. Vom folosi 2 functii care pot fi aplicate unor date calendaristice: Datepart (o parte dintr-o data
calendaristica) si functia Month (extrage luna dintr-o data calendaristica).

a). Se alege tabela Produse, campurile: den_p, pret_u, stoc, um si cod_m. Pe coloana den_p,


linia Criteria se tasteaua conditia: LIKE 'p*'.
b) Se deschide interogarea de la punctul a), se salveaza cu alt nume, se trece in modul de
vizualizare Design View si se modifica conditia: Like 'p????'.

8. Se alege tabela Produse, coloana pret_u, utilizandu-se operatorul IN.

9. Tabela aleasa va fi Produse, campurile: den_p, cant, cod_m. Pe coloana den_p, linia Criteria se


tasteaza IS NULL.

10. Deschidem interogarea de la punctul 2, unde avem calculata valoarea. Salvam interogarea cu un alt
nume, trecem in Design View si stergem sau modificam restul campurilor, lasand doar
urmatoarele: nr_f si valoare.

Se selecteaza butonul Totals de pe bara de unelte, iar sub valoare, pe linia Total, se alege


functia SUM.

11. Pentru a crea o noua tabela cu toate inregistrarile din tabelele Facturi, Produse si Liniifact, se
adauga toate campurile din aceste tabele, fara a duplica respectivele campuri, iar din meniul Query se
alege optiunea Make Table Query, se da un nume tabelei noi create, apoi se salveaza interogarea, si
apasa butonul Run  pentru a executa actiunea:
Mesajul urmator este doar unul de avertizare, si anume datele salvate in tabele vor fi adaugate in
tabelul nou creat. Deci vom apasa butonul Yes.

12. Din fereastra Show Table se alege tabela Produse, utilizandu-se functia COUNT:

13. Pentru a calcula valoarea totala pe fiecare factura in parte, se grupeaza datele dupa numarul facturii
(interogari de tip Totals) si se alege functia SUM:

14. Pentru a calcula media se aplica functia AVG:


4.1. Aplicatie propusa

Sa se incerce toate tipurile de interogari din exemplul anterior pe problemele propuse 2.1 si 2.2.

5. Aplicatia 4

Sa se creeze un raport pentru tabelul Furnizori, datele fiind grupate dupa localitate.

Sa se creeze un raport pentru afisarea datelor de pe fiecare factura in parte, calculandu-se valoarea
facturii si valoarea totala a tuturor facturilor.

Sa se creeze rapoarte pentru fiecare tabel si interogare create anterior.

Obiective:

Crearea rapoartelor cu ajutorul Wizard-ului.

Crearea rapoartelor cu datele provenind din mai multe tabele.

Adaugarea unor campuri calculate.

Rezolvare:

1. Pentru a crea un raport cu ajutorul asistentului, se alege optiunea Create Report by Using Wizard.
La primul pas se alege tabela sau interogarea pe baza careia se va crea raportul (Tables/Forms). Din
caseta Available Fields se selecteaza campurile dorite, apoi se apasa butonul Next.
La pasul 2 se selecteaza criteriul de grupare, in cazul de fata vom grupa furnizorii dupa localitate.
Daca se apasa butonul Grouping Options se pot alege mai multe variante de grupare: dupa prima
initiala, a doua, etc

La pasul urmator se selecteaza ordinea in care vor fi afisate inregistrarile in raport:

In continuare se selecteaza orientarea paginii (verticala, orizontala), precum si modul de afisare al


informatiilor pe pagina:
La pasul urmator se alege un stil din lista afisata. Ultimul pas permite modificarea titlului raportului
(nu este vorba de numele cu care va fi salvat raportul, ci doar textul care va apare in antentul
raportului), apoi putem alege intre a vizualiza raportul si a modifica raportul. Pentru a incheia crearea
raportului se alege optiunea Finish.

Raportul in modul Design va apare ca in figura urmatoare:

Daca datele care dorim sa apara provin din mai multe tabele, sau avem nevoie de unele campuri
calculate, putem crea o interogare in care sa selectam tabelele, calculand campurile dorite, apoi cream
raportul pe baza interogarii.
Daca se doreste adaugarea unui camp care va fi calculat, se alege de pe bara de
unelte Toolbox controlul TextBox. In caseta in care apare Unboand, se incepe cu simbolul =, apoi se
tasteaza functia sau formula dorita. Numele campurile vor fi trecute intre paranteze drepte. De
exemplu, un camp valoare ar putea fi calculat astfel =[cant]*[pret_u]*0,19

2. Pentru a crea raportul, vom alege ca sursa a datelor interogarea cu numele Valoare. Daca in aceasta
interogare avem campuri de tip Numeric, la pasul 3 se selecteaza butonul Summary Option, bifand
check-box-urile de sub functia SUM pentru campurile TVA si Valoare.

Pentru a vizualiza raportul, de pe butonul View se alege optiunea Print Preview.

5.1. Aplicatie propusa

Sa se creeze rapoarte cu ajutorul Wizard-ului si cu ajutorul optiunii Create Report in Design


View pentru problemele propuse 2.1 si 2.2.

6. Aplicatia 5

1. Sa se creeze urmatoarea forma de meniu.

Obiective:
Crearea butoanelor de comanda fara ajutorul asistentului.

Utilizarea ferestrei Properties pentru a customiza butonul.

Prezentarea mediului de programare VBA.

Utilizarea comenzii DoCmd cu metodele OpenTable, RunSQL si Quit.

Instructiuni VBA – citirea de la tastatura a datelor prin InputBox.

Instructiuni SQL – inserarea unei noi inregistrari, modificarea valorii unui camp, selectia datelor.

Rezolvare:

In acest caz se va folosi facilitatea Create form in Design View. De pe bara de unelte Toolbox se


verifica daca butonul Control Wizard   este selectat. Acesta trebuie sa fie deselectat pentru a
permite crearea manuala a controalelor, fara ajutorul asistentului. In continuare se alege butonul de

comanda Command Button  , acesta fiind depozitat pe forma. Apeland meniul contextual


asociat butonului de comanda creat pe forma, se selecteaza optiunea Properties si se modifica
proprietatile Name: cmdDesPr si Caption: Produse – Design. Analog se procedeaza pentru restul
butoanelor.

Pentru a introduce instructiuni atasate butoanelor trebuie sa apelam editorul Visual Basic. Pentru
aceasta, se apeleaza meniul contextual al fiecarui buton in parte, se alege Build event, Code builder,
OK.

Mediul de programare Visual Basic Application arata ca in figura urmatoare:

In zona de declarare a variabilelor se tasteaza:


Butonul 1

Private Sub cmdDesPr_Click()

' se deschide tabela Produse pt. vizualizare in Design

DoCmd.OpenTable 'Produse', acViewDesign

End Sub

Toate liniile care incep cu caracterul apostrof sunt comentarii, ele vor fi ignorate de compilatorul
Visual Basic.

Butonul 2

Private Sub cmdDescPr2_Click()

' se deschide tabela Produse pt. vizualizare in Datasheet View

DoCmd.OpenTable 'Produse'

End Sub

Butonul 3

Private Sub cmdInsPr_Click()

'adaugarea unei noi inregistrari

DoCmd.RunSQL 'insert into produse values (cod_produs, den_produs, um_produs, stoc_produs,


pret_produs, cod_mag)'

End Sub

Butonul 4

Private Sub cmdModDen_Click()


'modificarea denumirii unui produs la care este cunoscut codul

v_cod = InputBox('Introduceti codul produsului la care doriti sa ii modificati denumirea:')

DoCmd.RunSQL 'update produse set den_p=denumire where cod_p=' & v_cod

End Sub

Butonul 5

Private Sub cmdCrTNou_Click()

'selectarea produselor cu stoc 0 si crearea unei tabele cu aceste produse

DoCmd.RunSQL 'Select cod_p, den_p, um, stoc, pret_u, cod_m into StocNul from produse where
stoc=0'

DoCmd.OpenTable 'StocNul'

End Sub

Butonul 6

Private Sub cmdViz_Click()

'vizualizarea produselor cu codul >= o valoare introdusa de la tastatura

v_cod = InputBox('Introduceti un cod pentru a fi afisate produsele cu codul mai mare decat aceasta
valoare')

DoCmd.RunSQL 'Select cod_p,den_p,um,stoc, pret_u, cod_m into Temp1 from produse where
cod_p>=' & v_cod

DoCmd.OpenTable 'Temp1'

End Sub

Butonul 7

Private Sub cmdValoare_Click()

DoCmd.RunSQL 'select cod_p, den_p, um, categorie, pret, cant, cant*pret as valoare into Valoare
from produse'

DoCmd.OpenTable 'Valoare'

End Sub

Butonul 8
Private Sub cmdIesire_Click()

DoCmd.Quit

End Sub

6.1 Aplicatie propusa


Sa se creeze un formular cu optiuni corespunzatoare tabelelor existente create pentru problemele
propuse 2.1 si 2.2.

GLOSAR DE TERMENI
Data o informatie codificata si stocata pe un suport de memorare. Din
punctul de vedere al prelucrarii de calculator, in cadrul aplicatiilor,
datele se definesc cu ajutorul unui nume (identificator), a
atributelor pe care le are si de o valoare.
Organizarea reprezinta procesul de identificare, definire, evaluare, structurare si
datelor memorare a informatiilor, in cadrul unui sistem informational. Prin
organizarea datelor se realizeaza gruparea datelor in colectii de
date omogene, se stabilesc care sunt relatiilor dintre date, dintre
elementele colectiilor si dintre colectii, precum si modul de stocare
a datelor pe suportul fizic de memorare.
Fisierul este o structura care grupeaza date dintr-un anumit domeniu care
au anumite caracteristici comune. Din punct de vedere fizic fisierul
este o colectie finita de inregistrari fizice, iar din punctul de vedere
al semnificatiei, o colectie de inregistrari logice, numite si articole.
Din punctual de vedere al sistemului de operare fisierul are un
nume si eventual o extensie de fisier.
Redundanta reprezinta o proprietate a unei colectii de date care se refera la
datelor faptul ca unele componente ale colectiei de date sunt memorate de
mai multe ori pe suportul de memorare. Cresterea redundantei are
ca efect aparitia de erori frecvente datorate neconcordantei
informatiilor memorate in fisiere apartinand unor aplicatii diferite,
rezultand costuri de actualizare marite corespunzator.
Baza de date este un ansamblu structurat de date legate structural intre ele, un
depozit de date unic definit o singura data si utilizat simultan de
mai multi utilizatori. Baza de date este o resursa comuna si
partajata. Baza de date contine nu numai date ci si descrierea
acestora.
Modelul de date este o colectie integrata de concepte, necesare descrierii datelor, a
relatiilor dintre date si a constrangerilor asupra datelor dintr-o
organizatie, o reprezentare abstracta a obiectelor si a evenimentelor
lumii reale si a asocierilor dintre acestea, cu ajutorul caruia se
reprezinta o organizatie.

Modelul Entitate – reprezinta un model de date conceptual de nivel inalt, neformalizat,


Relatie care descrie structura bazei de date, precum si tranzactiile de
regasire, respectiv de reactualizare asociate. Acest model, permite
o reprezentare a unui sistem real, grupand elementele sistemului
real in entitati si asocieri (legaturi) intre entitati.
Cheie candidat este atributul sau multimea de atribute ale unei entitati care
identifica in mod unic aparitiile individuale ale unui tip de entitate.
Un tip de entitate poate avea mai multe chei candidat.
Cheie primara din multimea de chei candidat se alege un singura care va fi
numita cheie primara.
Chei alternative se numesc celelalte chei candidat, ramase nealese.
Cheie compusa este o cheie candidat formata din mai multe atribute.
Relatie (relationship este o asociere, o comunicare, o corespondenta intre doua sau
) mai entitati. Relatia exprima raportul existent intre respectivele
entitati si exista doar daca entitatile exista.
Sistemul de Gestiune reprezinta un pachet de programe specializat pentru definirea,
al Bazei de crearea, intretinerea si accesul controlat la baza de date.
Date (SGBD)
Administratorul de gestioneaza resursele de date, fiind responsabil de proiectarea
date (Data conceptuala si logica a bazei de date, de planificarea bazei de date,
Administrator) de realizarea si intretinerea standardelor, a politicilor si a
procedurilor bazei de date.
Administratorul este persoana sau grupul de persoane responsabil de proiectarea,
bazei de implementarea si realizarea fizica a bazei de date, de securitatea si
date (Database controlul integritatii, de intretinerea intregului sistem.
Administrator)
Proiectantii bazei de sunt persoanele implicate in proiectarea logica si cea fizica a bazei
date de date. Proiectarea conceptuala si logica presupune identificarea
entitatilor, a relatiilor dintre entitati, a constrangerilor asupra
datelor ce vor fi stocate in baza de date.

Limbajul pentru este un limbaj specific pentru fiecare SGBD fiind utilizat pentru a
definirea specifica schema bazei de date. Este un limbaj descriptiv care
datelor (LDD – Data permite administratorului bazei de date, respectiv utilizatorului
Description final sa descrie si sa defineasca entitatile din baza de date precum
Language) si relatiile existente intre entitati, adica sa defineasca o schema sau
sa o modifice.
Limbajul pentru este un limbaj care asigura un set de procedee ce permit operatiile
manipularea de baza pentru manipularea datelor din baza de date. Operatiile
datelor (LMD – executate in cadrul bazei de date presupun existenta unui limbaj
Data Manipulation specializat in care comenzile se exprima prin fraze ce descriu
Language) actiuni asupra bazei de date.
Limbajul pentru este un limbaj specific care include comenzi pentru asigurarea
controlul confidentialitatii si integritatii datelor, pentru salvarea informatiei cu scopul
datelor (LCD – Data mentinerii integritatii bazei de date si chiar pentru rezolvarea problemelor
Control Language) de acces concurential la date.
Tabelele contin datele propriu-zise corespunzatoare entitatilor din baza de date,
organizate sub forma unei matrice in care coloane reprezinta atribute
(campuri), iar liniile aparitiile, realizarile entitatii (inregistrari).
Inregistrarea este o linie dintr-un tabel, in care fiecare camp contine o valoare concreta
dintr-un domeniu de valori si contine informatii care identifica o anumita
realizare concreta a entitatii; persoana, loc sau obiect
Campul este o informatie individuala din componenta unei inregistrari, iar fiecare
coloana din tabelul Access reprezinta un camp diferit.
Interogarile sunt obiecte virtuale de tip tabela, adica vizualizari, care nu au
corespondent fizic, fiind definite cu ajutorul tabelelor definite deja in baza
de date.
Formularele sunt obiecte folosite pentru a consulta sau actualiza datele dintr-un
tabel sau o structura de interogare.

Rapoartele sunt obiecte folosite pentru a sintetiza datele stocate intr-o tabela
reala sau virtuala si a oferi un rezultat tiparit al informatiilor din
baza de date – un raport ACCES, de la cea mai simpla lista a unui
tabel pana la rapoartele cele mai complexe ce contin regrupari de
inregistrari si calcule.
Paginile de reprezinta obiecte specifice ACCESS care permit afisarea intr-un
prezentare format accesibil care permite transmiterea rapida a datelor prin
Internet sau Intranet.
Macro-urile reprezinta o modalitate optima de acces la date, care permit
automatizarea mai multor sarcini folosind un limbaj specific.
Pentru a rezolva o sarcina mai complexa se poate construi
un macro (format dintr-o multime de actiuni) sau
o procedura  (formata dintr-o succesiune de instructiuni in Visual
Basic).
Modulele contin o parte a codului VBA al aplicatiei, si anume declaratiile de
variabile si constante, functiile si procedurile globale ale intregii
aplicatii. VBA reprezinta un mediu de programare orientat
obiect.
Evenimentul reprezinta actiunea utilizatorului sau a sistemului asupra unui
obiect ceea ce declanseaza executia codului program
corespunzator.

Metoda consta in codul program predefinit ce se raporteaza la un tip de


obiect si care se executa in momentul aparitiei unui eveniment.
Procedura este alcatuita dintr-un set de instructiuni (un modul program) ce nu
returneaza nici o valoare ci executa o anumita actiune.
Functia consta dintr-un set de instructiuni (un modul program) care in urma
executiei returneaza o valoare de un anumit tip.
Visual Basic este un limbaj de programare orientat obiect, dezvoltat de
Application (VBA) Microsoft folosind limbajul Visual BASIC adaptat la cerintele
Access specifice ale sistemelor de gestiune de baze de date.
IDE (Integrated este mediul in care se poate crea, modifica si testa codul VBA.
Development
Environment)

Limbajul SQL este un limbaj de interogari si gestionare a bazelor de date


(Structured Query relationale.
Language)
Instructiunea este cea mai folosita instructiune, corespunzand interogarii
SELECT Selection din Access. Permite extragerea campurilor unui
ansamblu de inregistrari ce corespund unor criterii.
Clauza FROM specifica tabelele sau interogarile din care sunt extrase datele.
(SELECT)

Clauza WHERE permite filtrarea inregistrarilor dupa anumite criterii.


(SELECT)
Clauza Group este folosita pentru executarea functiilor de agregare SQL, ca si
By (SELECT) Sum (suma), Count (calcul), Avg (medie).
Clauza HAVING specifica inregistrarile regrupate ce trebuie afisate intr-o
(SELECT) instructiune SELECT dotata cu o clauza GROUP BY. Odata ce
regruparea este efectuata se afiseaza lista de campuri a clauzei
GROUP BY si sunt selectate doar inregistrarile care respecta
conditia specificata in clauza HAVING.
Clauza ORDER BY determina sortarea (aranjarea in ordine crescatoare sau
(SELECT) descrescatoare), inregistrarile rezulta dintr-o interogare in functie
de campul/campurile specificat(e).
Instructiunea corespunde unei interogari de actualizare care modifica valorile campurilor
UPDATE intr-un tabel specificat, pentru inregistrarile ce corespund criteriului dat
(facultativ).

Instructiunea corespunde unei interogari DELETE ce sterge inregistrarile din


DELETE tabelul mentionat in clauza FROM, dupa criteriile date (facultativ).
Instructiunea corespunde unei interogari Add care adauga inregistrari intr-un
INSERT INTO tabel.
OLE (Object este tehnologia care permite manipularea obiectelor unei alte
Linking and aplicatii, direct din Access sau din VBA Access.
Embedding) sau
OLE Automation

Biblioteca de obiecte un fisier prevazut de obicei cu o extensie .olb, furnizand informatii


ce permit maipularea obiectelor puse la dispozitia  utilizatorului de
un server. Se poate folosi Exploratorul de obiecte pentru a examina
continutul unei biblioteci de obiecte.
DDE (Dynamic Data este un protocol de schimb dinamic de date intre doua aplicatii
Exchange) Windows, una denumita Clineti sau Destinatie, cealalta denumita
Server sau Sursa. Legatura este intrerupta daca una dintre cele
doua aplicatii este inchisa.

Bibliografie
T.Connolly, C.Beg, A.Strachan, „Baze de date – proiectare, implementare, gesionare”, Ed. Teora,
Bucuresti, 2001;

S.Biriescu, „Baze de date in mediul Acces”, Ed. Mirton, Timisoara, 2006;

D.Danaiata, C.Margea, D.Mogosanu, A.Popovici, „Baze de date in mediul Acces”, Editura Mirton,


Timisoara, 2001;

I.Despi, G.Petrov, R.Reisz, A.Stepan, „Teoria generala a bazelor de date”, Ed. Mirton, Timisoara, 2000;
C.Fehily, „SQL –visual quickstart guide”, Ed. All, Bucuresti, 2004;

V. Florescu, P.Nastase, F.Berbec, „Baze de date – fundamente teoretice si practice”, Ed. Infomega,
Bucuresti, 2002;

C.Giulvezan, G.Mircea, „Baze de date. Teorie si practica. Acces si VBA”, Ed.Universitatii de Vest, Timisoara,
2006;

M.J.Hernandez, „Proiectarea bazelor de date”, Ed. Tora, Bucuresti, 2003;

L.Hurbean, „Baze de date. Concepte teoretice si abordare practica in Microsoft Access”, Ed. Mirton,
Timisoara, 2006;

F. Ionescu, „Baze de date relationale si aplicatii”, Ed. Tehnica, Bucuresti, 2004;

M.Lupulescu, M.Muntean, C.Giulvezan, „FoxPro de la initiere la performanta”, Ed. de Vest, Timisoara,


1994;

M.Milosescu, „Baze de date in Visual FoxPro”, Ed. Teora, Bucuresti, 2003;

G.Mircea, Access 2002. Tehnici de programare in VBA , Ed. Mirton, Timisoara, 2003

M.Muntean, „Note de curs – Baze de date”, 2007-2008;

M.Muntean, „Baze de date in sisteme informatice economice”, Ed. Mirton, Timisoara, 2002;

P.Nastase s.a. „Baze de date – Microsoft Access 2000”, Ed. Teora, Bucuresti, 1999;

J.V.Petersen, „Baze de date pentru incepatori”, Ed. All, Bucuresti, 2002;

I.Popescu, „Modelarea bazelor de date”, ed. Tehnica, Bucuresti, 2001;

R.Smith, D.Sussman, „Programare in ACCESS 97 VBA, pentru incepatori”, Ed. Tora, Bucuresti, 1999;

M.Velicanu, I.Lungu, M.Muntean, „Dezvoltarea aplicatiilor cu Visual FoxPro”, Ed. All, Bucuresti, 2001;

***, „Microsoft Visual Basic 6.0 – ghidul programatorului”, Ed. Teora, Bucuresti, 1999.

S-ar putea să vă placă și