Baze de date relationate in Microsoft ACCESS (p. a III-a)

Vom implementa o baza de date complexa ce modeleaza activitatea unui atelier cu vanzare.

Avem o lista de persoane care realizeaza produse in cadrul atelierului. O parte din aceste persoane pot participa si la vanzare.

Din veniturile obtinute, 40% merg la persoanele care au produs articolele vandute, 30% la persoanele care au vandut (in functie de orele petrecute la vanzare) si 30% merg spre reinvestitii.

Se introduc produsele fabricate si produsele vandute in luna curenta (pret si cantitate).

Se vor genera doua rapoarte: Un raport cu producatori si suma care li se cuvine si un raport cu vanzatori si suma care li se cuvine in luna respectiva.

Trebuie sa ne decidem asupra structurii bazei de date (tabele si relationari).

In mod cert va exista un tabel de Persoane care pot fi producatori si vanzatori. Acesta va contine cheia primara CodPersoana si un camp Nume de tip text.

Vom mai avea un tabel de Produse Fabricate care pe langa cheia primara (CodProdus) va contine un camp NumeProdus de tip text si un camp CodFabricant de tip number, cheie straina catre tabelul Persoane.

Vom crea si un tabel care sa contina lunile calendaristice in care isi desfasoara activitatea atelierul. Acest tabel Luni va contine cheia primara CodLuna si un camp text NumeLuna.

Vom mai avea un tabel de Produse Vandute. Acesta va contine o cheie primara CodElement, doua chei straine CodProdus si CodLuna si doua campuri numerice: Pret si Cantitate.

Ultimul tabel, Vanzatori va contine o cheie primara CodVanzator, doua chei straine CodPersoana si CodLuna. Va mai contine un camp NumarOre de tip numeric in care se va specifica cate ore a lucrat ca vanzator persoana respectiva.

Deschideti Microsoft Access. Salvati baza de date cu numele AtelierMagazin.mdb.

Creati tabelele folosind modul Design. Tabelele se creeaza in ordinea urmatoare: Luni, Persoane, ProduseFabricate, ProduseVandute si Vanzatori.

Tabelul Luni are structura urmatoare:

Tabelul Persoane are structura urmatoare:

Tabelul ProduseFabricate are structura urmatoare:

Tabelul ProduseVandute are structura urmatoare:

Tabelul Vanzatori are structura urmatoare:

Apoi realizati relationarile dintre tabele ca in figura de mai jos (meniul Tools->Relationships):

Pasul urmator consta in generarea de formulare pentru fiecare tabel. Pentru aceasta se selecteaza Forms->Create form by using wizard.

Cream mai intai formularul pentru tabelul Luni (deoarece avem nevoie de datele din el pentru tabelele Vanzatori si ProduseVandute) si introducem 3 nume de luni calendaristice: octombrie, noiembrie, decembrie:

Cream apoi formularul pentru tabelul Persoane (deoarece avem nevoie de datele din el in tablele Vanzatori si ProduseFabricate) si introducem 11 nume ca mai jos:

Cream apoi formularul ProduseFabricate (deoarece avem nevoie de datele din el in tabelul ProduseVandute) urmand aceeasi procedura ca mai sus:

Vom particulariza acum formularul ProduseFabricate pentru a introduce mai usor CodPersoana (vom folosi Combo Box).

Un Combo Box este un obiect Windows cu care se poate selecta o valoare dintr-o lista derulanta.

Pentru aceasta se va face clic dreapta pe formularul ProduseFabricate si se va selecta Design View. Observati ca structura formularului cuprinde un antet (Form Header), un corp (Detail) si un subsol (Form Footer). Observati de asemenea bara de instrumente:

Mai intai vom sterge campul CodPersoana. Pentru aceasta se apasa pe campul CodPersoana din dreptunghiul alb si apoi apasati pe tasta DEL. Acum vom introduce in locul lui un Combo Box. Apasati pe Combo box si apoi trageti cu mouseul un dreptunghi sub NumeProdus (acolo unde vreti sa puneti ComboBox). Vi se va deschide o fereastra similara cu cea de mai jos:

Selectati "I want the combo box to look up the values in a table or query" si apasati Next. Apoi selectati Table:Persoane si apasati Next. Selectati campurile CodPersoana si Nume si apasati Next. Selectati Nume Acending ca in figura:

Apasati din nou Next si aveti grija sa fie bifat "Hide Key Column". Apoi selectati "Store that value in this field: CodPersoana" ca mai jos si apasati Finish:

Inchideti si salvati formularul ProduseFabricate. Apoi deschideti-l prin dublu clic. Trebuie sa apara urmatoarea imagine:

Observati ca acum este mult mai usor sa se introduca numele producatorului.

Se vor introduce 7 inregistrari, astfel:

Felicitare - Claudia

Vaza - Marcel

Bratara - Ion

Cercei - Felicia

Caciula - Ortansa

Manusi - Simona

Fotografie - Ion

Vom crea apoi formularul ProduseVandute. Se va urma procedura de mai sus. Vom folosi doua ComboBox pentru campurile CodProdus si CodLuna similar cum am facut la formularul anterior. In final formularul arata astfel:

Se vor introduce 7 inregistrari astfel:

Bratara, octombrie, pret=20, cantitate=3

Caciula, octombrie, pret=30, cantitate=4

Cercei, octombrie, pret=25, cantitate=4

Felicitare, octombrie, pret=50, cantitate=3

Fotografie, octombrie, pret=50, cantitate=3

Manusi, octombrie, pret=30, cantitate=5

Vaza, octombrie, pret=40, cantitate=2

Vom crea apoi formularul Vanzatori. Se va urma procedura de mai sus. Vom folosi doua ComboBox pentru campurile CodPersoana si CodLuna similar cum am facut la formularul anterior. In final formularul arata astfel:

Vom introduce astfel:

Alexandru - 10 ore

Claudia - 10 ore

Felicia - 5 ore

Georgiana - 8 ore

Gheorghe - 12 ore

Ion - 12 ore

Iuliana - 4 ore

Marcel - 4 ore

Ortansa - 20 ore

Simona - 3 ore

Vasile - 4 ore

Acum am terminat de introdus datele si ne ocupam de interogari:

Introducem o interogare ca mai jos:

Sub NumeLuna la Criteria scriem octombrie.

Mai introducem campurile NumeProdus, Nume, Pret, Cantitate. Campurile urmatoare se calculeaza astfel (se introduc expresiile; a se vedea figura de mai sus, incepand cu coloana de dupa Cantitate):

Valoare: ProduseVandute.Pret*ProduseVandute.Cantitate

Productie: ProduseVandute.Pret*ProduseVandute.Cantitate*0.4 (Adica 40% merge la Productie)

Vanzare: ProduseVandute.Pret*ProduseVandute.Cantitate*0.3 (Adica 30% merge la Vanzare)

Reinvestitie: ProduseVandute.Pret*ProduseVandute.Cantitate*0.3 (Adica 30% merge la Reinvestitie)

Inchidem si salvam interogarea cu numele QueryProduseVandute.

Introducem o interogare ca mai jos:

Inchidem si salvam interogarea cu numele QueryVanzare.

Ne ocupam acum de rapoarte:

Selectam Reports->Create Report by using wizard. Selectam QueryProduseVandute ca mai jos:

Selectam By Persoane:

Apasam Next. Apasam Summary Options.

Bifam casutele de la Sum ca mai jos:

Apasam OK si apoi Finish. Acesta este primul raport. Il redenumim ProduseVandute.

Acum vom crea un raport cu plata vanzatorilor in functie de numarul de ore lucrate.

Vom avea nevoie de campul Vanzare din josul raportului generat anterior (a se vedea figura de mai jos). Aceasta variabila o vom nota cu SumaPtVanzatori.

Selectam Reports->Create Report by using wizard. Selectam QueryVanzare.

Selectam By Persoane. Apasam Next de doua ori si apoi apasam Summary Options. Bifam ca mai jos:

Apasam ok si apoi Finish. Inchidem raportul si il redenumim PlataVanzatorilor. Facem clic dreapta pe el. Selectam Design View:

Faceti clic dreapta unde este indicat si selectati Properties si apasati cum este indicat mai jos:

Vi se va deschide fereastra urmatoare unde completati =Sum([NumarOre])/([NumarOre Grand Total Sum])*[SumaPtVanzatori]

In felul acesta ati generat raportul cu suma datorata vanzatorilor.

La Format selectati Currency cu 2 zecimale:

Aveti astfel si cel de al doilea raport cu plata vanzatorilor. Vom redenumi raportul PlataVanzatorilor. Observati ca deschizand raportul, va trebui sa introducem variabila SumaPtVanzatori de mai sus.

In final sa cream un panou de comanda care sa porneasca la deschiderea bazei de date.

Accesati meniul Tools->Database Utilities- >Switchboard Manager.

Apasati Yes.

Apasati Edit. Si apoi apasati New:

Completati ca mai jos:

Apasati OK. Apoi apasati New si completati ca mai jos:

Apasati OK. Apoi apasati New si completati ca mai jos:

Apasati OK. Apoi apasati New si completati ca mai jos:

Apasati OK. Apoi apasati New si completati ca mai jos:

Apasati OK. Apoi apasati New si completati ca mai jos:

Apasati OK. Apoi apasati New si completati ca mai jos:

Apasati apoi Close de doua ori.

Accesati apoi Tools->Startup. Selectati Switchboard ca mai jos:

Inchideti Access si reporniti baza de date. Va aparea panoul de comanda ca mai jos:

THAT'S ALL, FOLKS! ENJOY YOUR LIFE!