Baze de date
Bazele interogarilor si rapoartelorBazele interogarilor si rapoartelor1 Construirea unei interogari simpleInterogarea (query) este o definire a datelor din baza de date pe care dorim sa le regasim precizand: campurile, din ce tabele sunt, pe baza caror criterii in ce ordine de sortare le dorim. Avand la baza SQL care a fost prezentat anterior, interogarea este usor de construit. Reamintim faptul ca intr-o interogare se pot extrage date din mai multe tablele care sun relationate pe baza unor campuri in relatii de tipul unu la unu sau unu la mai multi. Putem adauga pe grila de interogare tabelele de care avem nevoie. In imaginea urmatoare vom ilustra modul de creere pentru o interogare.
Interogarea se construieste optand pentru Simple Query Wizard, dupa care vom preciza ce dorim sa avem in interogare, adica campurile si tabelele din care dorim sa le extragem. Vom extrage din tabelele AntetFactura si DetaliuFactura, campurile NrFactura, CodPartener respectiv NrFactura, CodMarfa, Cantitate, Pret asa cum se va vedea in imaginile urmatoare. Obsevam ca in aceasta modalitate de construire a interogarii, avem posibilitatea de a extrage campuri din mai multe tabele (intre cele doua tabele ale noastre legatura este de unu la mai multi), am extras din tabelul AntetFactura campurile NrFactura, CodPartener asa cum observam in imaginea de mai jos. Apoi, vom selecta tabelul DetaliuFactura din care vom extrage campurile: NrFactura, CodMarfa, Cantitate, Pret asa cum observam din cea de a doua imagine. De asemenea remarcam ca avem campul NrFactura selectat din cele doua tabele care este calificat (precedat de numele tabelului). Pe imaginea urmatoare (cea de a treia), ni se cere sa precizam daca dorim detaliile sau rezumatul. In ce ne priveste, dorim sa avem detaliat, pe (cod) partener, marfurile pe care le-am vandut fiecarui partener.
Dupa ce dam nume interogarii create, continutul acesteia, va arata astfel:
Revenim la faptul ca in interogare apare de doua ori campul NrFactura pe baza caruia se face legatura intre cele doua tabele. Vom face ca el sa nu apara, deoarece dorim ca in interogare sa avem toate camuirile mai putin acesta pentru a scoate un raport pe baza acestei interogari. Pentru aceasta, vom deschide interogarea in proiectare si vom opera cateva modificari in ea.
Observam ca am invalidat aparitia
in interogare a campurilor NrFactura
din cele doua tabele si am ordonat crescator dupa CodPartener. Vom introduce in interogare un camp calculat Valoare, care se obtine prin Cantitate*Pret si care se va adauga ca
un
Fraza select care sta la baza interogarii este prezentata in imaginea urmatoare.
Observam ca avem o legatura intre tabelele AntetFactura si DetaliuFactura prin campul NrFactura si pentru fiecare inregistrare din tabelul DetaliuFactura care satisface conditiile, avem cate o inregistrare in interogare (DISTINCTROW). De asemenea, se specifica sortarea prin clauza ORDER BY. Datele continute in interogare sunt reprezentate in imaginea urmatoare.
Dorim acum sa construim un raport din aceasta interogare, dar observam ca la partener avem numai codul partenerului iar in raport dorim sa apara numele partenerului. In acest sens vom modifica interogarea prin includerea tabelului Parteneri, care este legat in relatie de unu la mai multi cu tabelul AntetFactura (prin campul CodPartener) si adaugam in interogare campul NumePart. Imaginile care urmeaza arata cum vizualizam tabelele si cum le adaugam in interogare.
Din tabelul Parteneri adaugam campul NumePart ordonat crescator, iar imaginea urmatoare, ne indica acest lucru. Putem observa care sunt relatiile dinbtre tabelele care sunt utilizate in interogare.
Fraza SELECT care sta la baza interogarii modificate, arata astfel:
De asemenea, dorim sa apara denumirea marfii, deoarece in interogare apare numai codul marfii si in acest sens, pe baza relatiei de unu la mai multi dintre tabelele NomMarfa si DetFactura vom introduce in interogare campul DenMarfa.
Fraza SELECT pentru interogarea modificata, arata astfel:
Obervam ca relatiile necesare sunt definite pe baza corespondentei dintre campurile care permit sa se faca legatura intre tabele si ordonarea modului de grupare intre criteriile de asociere. 2 Proiectarea unui raport Vom utiliza interogarea din paragraful anterior, pentru un raport in car vom pezenta vanzarile ordonate pe beneficiari si in cadrul lor pe marfuri, totalizand valorile pe marfuri si pe beneficiari. Pentru proiectarea raportului, vom utiliza interogarea din care vom extrage campurile necesare si vom solicita gruparea datelor dupa criteriile mentionate.
Deci am extras din interogare acele campuri de care avem nevoie in raportul nostru. In continuare vom solicita gruparea informatiilor si cateva functii cum ar fi suma, valoarea minima, valoarea maxima, media pe elementele de grupare.
Vom solicita inca un nivel de grupare dupa denumire marfa:
In imaginea urmatoare, se observa modalitatea de grupare.
Raportul proiectat, arata ca in imaginea urmatoare.
In baza proiectarii raportului, acesta arata (fara nici o alta modificare) astfel:
Trebuie sa facem cateva comentarii asupra continutului raportului. Observam ca raportul contine pe langa sectiunea detaliu si Antete (Header) si Subsoluri (Footer) pentru fiecare nivel de grupare, pentru pagina si pentru raport. In aceste sectiuni se pot introduce o serie de rezultate cum ar fi insumarea pe un grup in subsolul aferent grupului si altele. Vom face cateva modificari prin adaugarea unui control calculat vcare numeroteaza randurile in cadrul grupului, asa cum se veda in imaginea urmatoare.
Revenim si vom face cateva totaluri pe gruparile care sunt in acest rapoat. Totalurile se pozitioneaza in subsolul gruparii, dar cum aces subsol nu apare pe raport, el trebuie introdus. Pentru aceasta, vom proceda asa cum ne indica imaginile urmatoare:
Vom selecta submeniul Sorting and Grouping unde vom vizualiza antetele si subsolurile dorite:
In imaginea de mai sus, observam ca pentru gruparea pe NumePartener avem antet de grupare dar nu avem subsol, pe care il vom introduce prin pozitionarea Group Footer pe Yes. Aceleasi operatiuni le vom efectua si pentru gruparea DenMarfa.
Dupa adaugarea subsolurilor la cele doua grupari, proiectul raportului, va arata astfel:
Vom introduce totaluri la cantitati pe marfa, totaluri la valori pe
partener si total general (pe raport) la valori. Pentru aceasta, vom introduce
in fiecare subsol, un
Pe partener si pe raport vom insuma valoarea, asa cum se prezinta in imaginile urmatoare:
Se observa faptul ca pentru a face prelucrari pe nivele de grupare, trebuie sa includem in raport antetele (care in mod uzual sunt incluse) si subsolurile. In subsoluri, vom include controalele care ne sunt necesare. De remarcat faptul ca in proiectul raportului, paginarea se face automat, in modalitatea standard, iar data este data prin Now(). 3 Inteorgari crosstab (de tip tabel incrucisat) Sa reluam tabelul de CaiDeRasa pentru care sa construim o interogare de tip crosstab, asa cum vom prezenta in imaginile urmatoare. In prealabil, sa ilustram continutul tabelului CaiDeRasa.
Vom construi interogarea de tip tabel incrucisat, astfel.
Dorim ca pentru fiecare rasa, sa precizam pentru fiecare tata, cati fii are. Pentru aceasta vom construi aceasta interogare astfel. Vom preciza pe linii rasele, apoi pentru fiecare tata vom avea cate o coloana, pe coloane vom numara cati fii are fiecare tata si vom insuma pe fiecare rasa cati fii exista (aceasta prin specificarea cu OK in optiunea pentru suma.
Dupa ce am precizat ce avem pe linii (rasele), vom p reciza pe coloane ca dorim sa apara tatii.
Dupa care specificam ce trabuie sa se calculeze, in cazul nostru dorim sa se numere de cate ori apare un tata la fiecare rasa.
Cum vedem din imaginea precedenta, am inclus si o suma a aparitiilor pe rasa a tatilor. Imaginea urmatoare ne furnizeaza rezultatul dorit.
|