Home - qdidactic.com
Didactica si proiecte didacticeBani si dezvoltarea cariereiStiinta  si proiecte tehniceIstorie si biografiiSanatate si medicinaDezvoltare personala
referate stiintaSa fii al doilea inseamna sa fii primul care pierde - Ayrton Senna





Aeronautica Comunicatii Drept Informatica Nutritie Sociologie
Tehnica mecanica

Baze de date


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.




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.



  1. 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 datelor

reprezinta procesul de identificare, definire, evaluare, structurare si 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 datelor

reprezinta o proprietate a unei colectii de date care se refera la 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 – Relatie

reprezinta un model de date conceptual de nivel inalt, neformalizat, 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 al Bazei de Date (SGBD)

reprezinta un pachet de programe specializat pentru definirea, crearea, intretinerea si accesul controlat la baza de date.

Administratorul de date (Data Administrator)

gestioneaza resursele de date, fiind responsabil de proiectarea conceptuala si logica a bazei de date, de planificarea bazei de date, de realizarea si intretinerea standardelor, a politicilor si a procedurilor bazei de date.

Administratorul bazei de date (Database Administrator)

este persoana sau grupul de persoane responsabil de proiectarea, implementarea si realizarea fizica a bazei de date, de securitatea si controlul integritatii, de intretinerea intregului sistem.

Proiectantii bazei de date

sunt persoanele implicate in proiectarea logica si cea fizica a bazei 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 definirea datelor (LDD – Data Description Language)

este un limbaj specific pentru fiecare SGBD fiind utilizat pentru a specifica schema bazei de date. Este un limbaj descriptiv care permite administratorului bazei de date, respectiv utilizatorului final sa descrie si sa defineasca entitatile din baza de date precum si relatiile existente intre entitati, adica sa defineasca o schema sau sa o modifice.

Limbajul pentru manipularea datelor (LMD – Data Manipulation Language)

este un limbaj care asigura un set de procedee ce permit operatiile de baza pentru manipularea datelor din baza de date. Operatiile executate in cadrul bazei de date presupun existenta unui limbaj specializat in care comenzile se exprima prin fraze ce descriu actiuni asupra bazei de date.

Limbajul pentru controlul datelor (LCD – Data Control Language)

este un limbaj specific care include comenzi pentru asigurarea confidentialitatii si integritatii datelor, pentru salvarea informatiei cu scopul mentinerii integritatii bazei de date si chiar pentru rezolvarea problemelor 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 prezentare

reprezinta obiecte specifice ACCESS care permit afisarea intr-un 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 Application (VBA) Access

este un limbaj de programare orientat obiect, dezvoltat de Microsoft folosind limbajul Visual BASIC adaptat la cerintele specifice ale sistemelor de gestiune de baze de date.

IDE (Integrated Development Environment)

este mediul in care se poate crea, modifica si testa codul VBA.


Limbajul SQL (Structured Query Language)

este un limbaj de interogari si gestionare a bazelor de date relationale.

Instructiunea SELECT

este cea mai folosita instructiune, corespunzand interogarii Selection din Access. Permite extragerea campurilor unui ansamblu de inregistrari ce corespund unor criterii.

Clauza FROM (SELECT)


specifica tabelele sau interogarile din care sunt extrase datele.

Clauza WHERE (SELECT)

permite filtrarea inregistrarilor dupa anumite criterii.

Clauza Group By (SELECT)

este folosita pentru executarea functiilor de agregare SQL, ca si Sum (suma), Count (calcul), Avg (medie).

Clauza HAVING (SELECT)

specifica inregistrarile regrupate ce trebuie afisate intr-o 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 (SELECT)

determina sortarea (aranjarea in ordine crescatoare sau descrescatoare), inregistrarile rezulta dintr-o interogare in functie de campul/campurile specificat(e).

Instructiunea UPDATE


corespunde unei interogari de actualizare care modifica valorile campurilor intr-un tabel specificat, pentru inregistrarile ce corespund criteriului dat (facultativ).

Instructiunea DELETE

corespunde unei interogari DELETE ce sterge inregistrarile din tabelul mentionat in clauza FROM, dupa criteriile date (facultativ).

Instructiunea INSERT INTO

corespunde unei interogari Add care adauga inregistrari intr-un tabel.

OLE (Object Linking and Embedding) sau OLE Automation

este tehnologia care permite manipularea obiectelor unei alte aplicatii, direct din Access sau din VBA Access.


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 Exchange)

este un protocol de schimb dinamic de date intre doua aplicatii 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.




Contact |- ia legatura cu noi -| contact
Adauga document |- pune-ti documente online -| adauga-document
Termeni & conditii de utilizare |- politica de cookies si de confidentialitate -| termeni
Copyright © |- 2024 - Toate drepturile rezervate -| copyright