Ce este un raport si cand il folosesti
Un raport se construieste intotdeauna pe baza unui tabel sau a unei interogari — niciodata pe date "libere". Daca ai nevoie de un camp calculat (de exemplu o valoare = cantitate x pret), acel camp trebuie sa existe deja in interogarea sursa, inainte sa construiesti raportul. Retine acest lucru — revenim la el la finalul lectiei, la cea mai frecventa greseala.
O lista de materiale consumate intr-o luna, grupata pe categorii, cu total pe fiecare categorie si total general.
Un catalog de produse in stoc, sortat alfabetic, gata de printat si pus pe raft.
O fisa de comenzi pe client, grupata pe client, cu valoarea fiecarei comenzi si totalul platit de acel client.
Aplicatia noastra: doua tabele si o interogare cu camp calculat
Cheie primara — campul care identifica unic fiecare rand dintr-un tabel (nu se repeta niciodata); Access il marcheaza cu o iconita de cheie.
AutoNumber — tip de camp pe care Access il completeaza singur, cu un numar care creste automat (1, 2, 3...) — de obicei asa se face cheia primara, ca sa nu o completezi tu manual.
Cheie externa — un camp dintr-un tabel care contine valoarea cheii primare din alt tabel, ca sa lege cele doua randuri intre ele (aici: ID_Material din Consumuri arata spre ID_Material din Materiale).
Text scurt — tip de camp pentru text de cel mult 255 de caractere (nume, denumiri, coduri).
Currency — tip de camp pentru sume de bani, afisat automat cu simbolul monedei si doua zecimale.
ID_Material — AutoNumber, cheie primara
Denumire — Text scurt
Categorie — Text scurt (Electric / Lemn / Mecanic / Intretinere)
Pret_Unitar — Currency
Trei randuri de exemplu: Sarma electrica (Electric, 3,50 lei), Placaj lemn (Lemn, 45,00 lei), Surub M6 (Mecanic, 0,20 lei).
1. Fila Create, grupul Tables, butonul Table Design (iti da control pe tipul fiecarui camp, spre deosebire de Table simplu).
2. Scrii pe primul rand numele campului ID_Material si alegi tipul AutoNumber; dai clic dreapta pe randul lui si alegi Primary Key (sau apesi iconita de cheie din panglica) — asa devine cheie primara.
3. Adaugi randurile urmatoare: Denumire (Text scurt), Categorie (Text scurt), Pret_Unitar (Currency).
4. Salvezi tabelul cu numele Materiale (Ctrl+S), apoi treci in Datasheet View si tastezi cele trei randuri de exemplu de mai sus — ID_Material se completeaza singur.
ID_Consum — AutoNumber, cheie primara
ID_Material — Number, cheie externa spre Materiale.ID_Material
Data — Date/Time
Cantitate — Number
Clasa — Text scurt (clasa care a consumat materialul)
Patru randuri de exemplu: Sarma electrica — 10.03.2026, 15 m, XI A · Sarma electrica — 12.03.2026, 8 m, XI B · Placaj lemn — 11.03.2026, 2 buc, X C · Surub M6 — 10.03.2026, 50 buc, XI A.
Aceiasi pasi ca la Materiale: ID_Consum AutoNumber marcat Primary Key, apoi ID_Material (Number), Data (Date/Time), Cantitate (Number), Clasa (Text scurt). Salvezi cu numele Consumuri si introduci in Datasheet View cele patru randuri de exemplu — pe coloana ID_Material scrii direct 1, 2 sau 3, dupa ordinea in care ai introdus materialele in celalalt tabel (1 = Sarma electrica, 2 = Placaj lemn, 3 = Surub M6).
Inchizi ambele tabele, apoi fila Database Tools, grupul Relationships, butonul Relationships. Adaugi in fereastra ambele tabele (Show Table). Tragi cu mouse-ul campul ID_Material din Materiale peste campul ID_Material din Consumuri; se deschide fereastra Edit Relationships — bifezi Enforce Referential Integrity (ca sa nu poti introduce un consum pentru un material inexistent) si apesi Create. Access deseneaza o linie intre cele doua tabele: asta e relatia unu-la-multi de care vorbeste interogarea de mai jos.
In fereastra de proiectare a interogarii (Design View) adaugi ambele tabele, legate automat prin relatia dintre ID_Material din Consumuri si ID_Material din Materiale (cea creata mai sus in Relationships). Aduci in grila campurile Categorie, Denumire, Data, Cantitate, Pret_Unitar, iar intr-o coloana noua, goala, scrii in randul Field un camp calculat:
Valoare: [Cantitate]*[Pret_Unitar]
Numele dinaintea celor doua puncte (Valoare) devine titlul coloanei calculate; formula de dupa foloseste numele campurilor din tabele, intre paranteze drepte. Salvezi interogarea cu numele Consum_cu_valoare — pe ea o vom folosi la raport.
Expertul de rapoarte (Report Wizard), pas cu pas
Consum_cu_valoare creata mai sus.
1. In panglica (ribbon), deschide fila Create, apoi in grupul Reports apasa butonul Report Wizard.
2. In lista Tables/Queries, alege Query: Consum_cu_valoare. Din lista Available Fields muta in Selected Fields campurile Categorie, Denumire, Data, Cantitate, Pret_Unitar, Valoare, folosind butonul cu sageata simpla (un camp) sau dubla (toate campurile). Apasa Next.
3. Fereastra de grupare te intreaba daca vrei niveluri de grupare. Selectezi Categorie si apesi sageata pentru a o adauga ca nivel de grupare. Apasa Next.
4. Fereastra de sortare iti permite pana la patru campuri de sortare in interiorul fiecarui grup — alegi Data, crescator. Aici apare si butonul Summary Options, unde poti bifa Sum (suma) pentru campul Valoare direct din expert. Apasa Next.
5. Alegi aspectul paginii (Layout: Stepped/Block/Outline) si orientarea (Portrait/Landscape — pentru multe coloane alegi Landscape). Apasa Next.
6. Dai un titlu raportului, de exemplu Raport consum materiale, si alegi Finish pentru a-l vedea in Print Preview, gata format.
Daca am fi ales direct tabelul Consumuri, nu am fi avut coloana Categorie (ea sta in tabelul Materiale) si nici coloana Valoare (nu exista in niciun tabel, e calculata). Interogarea aduna informatia din ambele tabele si adauga calculul — abia dupa aceea raportul are ce arata.
Sectiunile unui raport si gruparea in Design View
Report Header — apare o singura data, la inceputul raportului (ex. titlul raportului).
Page Header — se repeta in capul fiecarei pagini (ex. numele coloanelor).
Group Header — se repeta la inceputul fiecarui grup (ex. numele categoriei: "Electric").
Detail — se repeta o data pentru fiecare inregistrare (fiecare rand de consum).
Group Footer — se repeta la sfarsitul fiecarui grup (aici pui subtotalul grupului).
Page Footer — se repeta la baza fiecarei pagini (ex. numarul paginii).
Report Footer — apare o singura data, la sfarsitul raportului (aici pui totalul general).
In fila Design a raportului, in grupul Grouping & Totals, apesi butonul Group & Sort. Se deschide, jos, panoul "Group, Sort, and Total". Apesi Add a group, alegi campul Categorie; apoi apesi More pe randul grupului si bifezi with a footer section, ca sa apara sectiunea Group Footer in care vei pune totalul.
Campuri de total: Sum, Avg si formula exacta
1. In fila Design, grupul Controls, alege unealta Text Box.
2. Deseneaza-l in sectiunea Categorie Footer (Group Footer), sub coloana Valoare.
3. Deschide Property Sheet (F4), fila Data, si in proprietatea Control Source scrie exact:
=Sum([Valoare])
4. Pentru totalul general, adaugi un alt Text Box in sectiunea Report Footer, cu aceeasi formula =Sum([Valoare]) — Access stie sa insumeze pe toata plaja potrivita sectiunii in care se afla caseta.
Categoria Electric: 15 m x 3,50 + 8 m x 3,50 = 52,50 + 28,00 = 80,50 lei
Categoria Lemn: 2 buc x 45,00 = 90,00 lei
Categoria Mecanic: 50 buc x 0,20 = 10,00 lei
Total general (Report Footer): 80,50 + 90,00 + 10,00 = 180,50 lei
=Avg([Valoare]) — media valorilor din grup.
=Count(*) — numarul de inregistrari din grup (cate consumuri); * inseamna "toate randurile", nu un camp anume — folosesti asta pentru ca interogarea noastra nu aduce niciun camp de tip ID in grila (vezi campurile din atomul 2: Categorie, Denumire, Data, Cantitate, Pret_Unitar, Valoare).
=Max([Cantitate]) / =Min([Cantitate]) — cea mai mare, respectiv cea mai mica cantitate consumata.
Pregatirea pentru tiparire — si greseala tipica
1. Clic dreapta pe raport in Panoul de navigare -> Print Preview (sau deschizi raportul si comuti vederea din butonul View).
2. In fila Print Preview, grupul Page Layout: butonul Margins pentru marginile paginii, butonul Portrait/Landscape pentru orientare (Landscape cand ai multe coloane, ca la raportul nostru cu sase campuri).
3. Daca vrei un fisier de trimis pe e-mail sau de arhivat fara sa mai poata fi modificat, fila External Data, grupul Export, butonul PDF or XPS — alegi locul de salvare si Access creeaza un fisier .pdf identic cu ce ai vazut in Print Preview.
4. Abia dupa ce arata bine in Print Preview apesi efectiv Print.
Construiesti raportul direct pe un tabel (nu pe o interogare) sau uiti sa adaugi campul calculat in interogare inainte de a rula expertul. Rezultat: in coloana Valoare apare #Name? in loc de o suma, pentru ca formula =Sum([Valoare]) cauta un camp care, de fapt, nu exista acolo unde raportul se uita dupa el.
Cum se recunoaste: textul #Name? in locul unei valori numerice, in orice caseta calculata.
Cum se repara: deschizi interogarea sursa in Design View, verifici ca formula Valoare: [Cantitate]*[Pret_Unitar] exista si scrisa corect, salvezi interogarea, apoi redeschizi raportul — Access va recalcula automat.
Recapitulare — drumul complet de la tabel la raport tiparit
Tabele Materiale + Consumuri, legate prin ID_Material
↓
Interogare Consum_cu_valoare — aduna campurile din ambele tabele + camp calculat Valoare: [Cantitate]*[Pret_Unitar]
↓
Raport, construit cu Expertul, pe interogare — grupat dupa Categorie, sortat dupa Data
↓
Totaluri — =Sum([Valoare]) in Group Footer (80,50 / 90,00 / 10,00 lei) si in Report Footer (180,50 lei)
↓
Print Preview + orientare Landscape + export PDF — hartia gata de pus la dosar
Raportul afiseaza, nu editeaza — pentru introdus date foloseste formularul.
Orice camp calculat trebuie sa existe deja in interogarea sursa, nu se inventeaza in raport.
Group Header/Group Footer apar o data pe grup; Report Header/Report Footer o singura data pe tot raportul.
Formula unui total: =Sum([NumeCamp]), scrisa in Control Source al unei casete Text Box neasociate.
Print Preview e verificarea finala inainte de tiparire sau export PDF.
Aceasta a fost ultima lectie a modulului Baze de Date (Access). Ai parcurs deja tabelele si cheile, formularele, interogarile si filtrele — iar acum rapoartele inchid cercul, aratand cum ajunge informatia dintr-o baza de date pe o hartie clara, gata pentru seful de atelier, pentru profesor sau pentru dosarul de arhiva.