Sunteți pe pagina 1din 21

Interogari in Access laborator 4

Din fereastra Database putem alege dintre cele 2 optiuni de a crea interogari asupra bazei de date:

Create query in Design view Create query by using wizard Vom lucra cu fiecare dintre cele doua optiuni. Create query by using wizard Asa cum spune si optiunea vom folosi un Expertul pentru a crea interogarile de care avem nevoie. La alegerea optiunii se va deschide o fereastra in care avem posibilitatea sa alegem din fiecare tabele ce campuri dorim a fi afisate in urma interogarii. Presupunem ca vom dori sa aflam numele agentilor, clientilor, si al produselor comandate: - din fereastra Simple Query Wizard vom alege pe rand fiecare tabela in parte

apoi aleg campul/rile dorite din acea tabela

Dup ace veti termina de ales campurile din tabele in urma finalizarii operatiei de interogare va rezulta o un table in care vor fi afisate valorile campurilor selectate. In acest mod nu se pot realize decat interogari foarte simple asupra tabelelor. Cu ajutorul acestei optiuni se pot face si cateva calcule foarte simple ca SUM, AVG, MAX,MIN si COUNT dupa anumite campuri numerice. Alegeti optiunea Summary din fereastra Simple Query Wizard inainte de a finalize interogarea si apoi pe Summary Options:

La pasul urmator alegeti operatia dorita:

Create query in design view La alegerea acestei optiuni se va deschide o fereastra de unde puteti alege tabelele pentru care veti efectua interogarile dumneavoastra:

Sa incercam sa realizam exemplele de mai inainte: sa alegem numele agentilor, al clientilor si al articolelor care au fost comandate. Pentru aceasta vom alege in campurile: - Fields - campul corespunzator din fiecare tabela in parte; - Table tabela corespunzatoare; - Sort dupa caz ascending sau descending pentru un anumit camp; - Show- stabileste aparitia sau nu a unui camp in tabela rezultata - Criteria aici se va scrie un eventual criteriu de selectie

Pentru a rulaun query trebuie sa apasati pe Run query:

Rezultatul va fi o tabela cu campurile selectate. Pentru a va intoarce in modul design pentru a realize o alta interogare sau a o modifica pe cea realizata apasati View:

In campul Field putem de asemenea sa folosim si campuri calculate. De exemplu vrem sa vedem clientii de la ce agenti si ce produse au comandat impreuna cu valoarea lor finala care se obtine din pretul produsului * cantitatea comandata:

Rezultatul va fi acesta:

Daca analizam expresia: valoare finala: [articole].[art pret]*[comenzi].[cant] se poate deduce ca: - valoare finala reprezinta eticheta sau numele campului calculate care va apare in tabela rezultata; - fiecare camp este apelat prin sitanxa: <nume tabela> . <nume camp>. Folosinde-se operatorul . se arata astfel apartenenta campului la acea tabela. Parantezele patrate sunt folosite pentru a grupa numele compuse asa cum avem in exemplul nostrum in cazul campului: art pret ce semnifica articol pret. Accessul va pune implicit [ ] pentru fiecare nume de table si camp folosit. In final inmultirea dintre pretul unui articol care se afla in tabela articole si cantitatea comadata, camp care se afla in tabela comenzi este: [articole].[art pret] * [comenzi].[cant]

Interogari in Access laborator 5 (continuare)


Pentru a realiza diferite criterii de selecie se poate utiliza i generatorul de expresii (Expression Builder) a crui fereastr se deschide selectnd opiunea Build a meniului pe care l activai printr-un click dreapta de mouse n rndul Criteria. De exemplu vrem sa selectm doar agentii care au primit comision. Asta nseamn ca valoarea din comision s fie mai mare dect 0. Interogarea va fi creat cu ajutorul generatorului de expresii. Se face click dreapta sub cmpul comision in rndul Criteria si se allege Build:

La sfrit se apas butonul OK. Rulai interogarea. Alegei acum toi clienii care sunt din oraul Bacu sau Iai. Pentru a nu scrie n rnduri separate ale cmpului Criteria numele fiecrui ora, se va scrie ntr-un singur rand Bacu i Iai folosindu-se operatorul OR.

Utilizarea operatorilor Pentru a construi expresii pe rndul Criteria se utilizeaz operatorii: aritmetici: adunare (+); scdere (), nmulire (*), mprire (/), ridicare la putere (^), mprirea a dou numere cu returnarea unui ntreg (\), mprirea a dou numere cu returnarea restului mpririi (MOD).

de comparaie: <, >, =, <=, >=. Aceti operatori returneaz valorile logice True i False. Excepie reprezint cazul n care unul dintre operatori are valoarea NULL i deci orice comparare va returna valoarea NULL. asociai operatorilor de comparare: IS NULL, IS NOT NULL o valoare NULL (cmp necompletat) nu este nici TRUE nici FALSE. nregistrrile care au valoarea NULL n cmpurile selectate nu apar ca rezultate ale interogrii; LIKE se folosete mpreun cu caracterele de nlocuire * i ? pentru a stabili dac o valoare ncepe cu unul sau mai multe caractere; caracterul * poate nlocui orice numr de caractere; caracterul ? nlocuiete numai un caracter; IN stabilete dac o valoare este cuprins ntr-o list; BETWEEN stabilete dac o valoare aparine unui interval specificat. logici: NOT negaia; AND pentru conjuncia a dou valori; OR pentru disjuncia a dou valori; XOR pentru disjuncia exclusiv a dou valori; Eqv verific echivalena a dou valori. de concatenare a irurilor de caractere: + i &. constante: constantele utilizate n construirea expresiilor Access pot fi de natur numeric (ex: 1200,5,0); text (123, Toma Ion, str. Viilor 15); dat calendaristic (ex: #12.31.01# ceea ce indic data de 31 decembrie 2001). Funciile: pot fi de natur: Dat calendaristic : Date(), Month(), Year (), etc. Exemple: 1. Date() returneaz data curent; 2. Month(Date()) returneaz numrul lunii calendaristice curente. 3. Year(Date()) returneaz anul curent. De tip text: 1. Len() returneaz lungimea unui ir; 2. Trim() elimin spaiile de la nceputul i de la sfritul unui ir; 3. Left() returneaz primele n caractere de la nceputul unui ir, etc. Matematice i trigonometrice: 1. ABS() returneaz valoarea absolut a unui numr; 2. INT() returneaz partea ntreag dintr-o valoare numeric, ROUND() rotunjete o valoare cu un anumit numr de zecimale; 3. SUM() calculeaz suma; 4. AVG() calculeaz media, etc. Financiare: 1. PV() returneaz valoarea actual a unei uniti pltite n rate periodice egale; 2. SLN() returneaz valoarea amortizrii unui mijloc fix dup o anumit perioad (amortizare liniar) etc. Funcii diverse: ISNUMERIC(), ISNULL(), etc Reguli de formare a expresiilor introduse pe cmpul Criteria: datele de tip Text se tasteaz ca atare, iar Access adaug automat ghilimele; pentru datele de tip Number i Currency se tasteaz cifrele i eventual simbolul zecimal, fr

simbolul monetar sau separatorul de mii; referirile la numele de cmpuri trebuie incluse ntre paranteze drepte, altfel se adaug automat ghilimele, considerndu-se text; formatul internaional de dat calendaristic este mm/dd/yy. Access adaug automat delimitatorul # ; Exerciii: Creai trei interogri n care s folosii la alegere unul din operatorii descrii mai sus.

Exerciii:
1. Realizarea unei interogri pentru obinerea unei liste cu clienii a cror numele ncepe cu A. Sub cmpul [cl nume] pe rndul Criteria se scrie expresia: LIKE A* 2. Realizarea unei interogri pentru obinerea unei liste cu clienii a cror numele NU ncepe cu A. Sub cmpul [cl nume] pe rndul Criteria se scrie expresia: NOT LIKE A* 3. Realizarea unei interogri pentru obinerea unei liste cu clienii care nu au reducere (nu ai scris nimic n acest cmp nici mcar valoare 0). Sub cmpul reducere pe rndul Criteria se scrie expresia: IS NULL 4. Realizarea unei interogri pentru obinerea unei liste cu clienii din oraul Bacu care nu au reducere sau dac au s fie mai mare ca 10 i a cror nume ncepe cu litera A. Pe rndul Criteria sub cmpul [cl ora] se scrie Bacau, iar sub cmpul reducere se scrie expresia: IS NULL OR [reducere] > 2 i sub cmpul [cl nume] se scrie Like A* . 5. Interogarea pentru obinerea listei clienilor crora li s-a acordat o reducere ntre valorile 10 i 15. Sub cmpul reducere n rndul Criteria se scrie expresia: >="2" And <="5". Pentru date calendaristice se va folosi expresia: >= # 01.12.2004 # And <= # 31.12.2004 # ce reprezinta perioada cuprins ntre 1 decembrie 2005 i 31 decembrie 2004. 6. Pentru a obine o list a clienilor cu [cl Id] dintre numerele 1, 2,3, se va realiza interogarea: Sub cmpul [cl Id] se scrie expresia: IN (1 ; 2 ; 3). 7. Pentru a obine o list cu clienii cu reducere intre valorile 5 i 10 se scrie: Between 1 And 3. 8. Mergei n structura tabelei Clieni i adugai cmpul: data de tipul Date/Time i dai apoi valori acestui camp. Aflai apoi clienii care au fcut comenzi ntre perioada 01.01.2006 i 31.12.2007. Sub cmpul data pe rndul Criteria vei scrie: Between #01.01.2006# And #31.12.2007#.

Interogri n Access laborator 6 (continuare)


Revenire asupra cmpurilor calculate din interogrile de selecie. se introduce n celula Field a grilei de interogare un nume de coloan (dac nu se specific se atribuie numele implicit Expr l, Expr2, ...), urmat de semnul : i formula de calcul, astfel: stoc_final: [stoc_initial] + [Cant_intrata] - [Cant_iesita] (cu precizrile: au fost folosite doar numele de cmpuri i nu s-a mai scris n faa lor i numele tabelei urmat de semnul . sau semnul ! ). cmpuri calculate pot fi create i pentru text (concatenarea cmpurilor): Numepren: [Nume] & & [ Prenume] cmpurile calculate pot fi sortate, li se pot aplica criterii de selecie sau se pot totaliza. n cmpurile calculate se poate utiliza funcia IIF cu urmtoarea sintax: IIF ( <expresie>, valoare 1, valoare2)

unde: <expresie> este o expresie a crei valoare de adevr este evaluat pentru fiecare nregistrare; valoare 1 este valoarea returnat dac expresie este adevrat; valoare2 este valoarea returnat dac expresie este fals. Exemple pentru fiecare: 1. Calculai TVA-ul pentru fiecare articol n parte:

Rezultatul este:

2. S realizm o interogare n care s calculam pentru fiecare agent in parte, i fiecrui client cruia s-a furnizat un articol, valoarea articolului furnizat (din pret * cantitate), TVA-ul, valoarea final (din valoare + TVA) i apoi s verificm ct anume a pltit clientul scznd din suma finala (cmpul din comenzi) valoarea final calculat.

Rezultatul interogrii este unul de forma:

Dup cum se vede numele de coloan sunt corespunztoare cu identificatorii scrii pentru fiecare expresie calculat: Valoare, TVA, valoare finala i Suma platita. Se poate observa cala Suma platita clinetul este pe minus, adic mai are de plat respectiva suma din valoarea final. 3. Afiai pentru fiecare comandanda in parte urmtorul text: comanda a fost realizata intre: agentul: [numele agentului din baza de date] furnizeaz clientului: [numele clientului din baza de date] articolul: [numele articolului din baza de date]

4. Afiai pentru fiecare comand n parte, dup ce calculai ct mai are de dat clientul, dac are restan sau a pltit n plus. Pentru a rezolva aceast interogare v vei folosi de interogarea cu numrul doi de mai sus.

Rezultatul este urmtorul:

Expresia IIF se scrie n rndul FIELD al grilei de interogare. Interogri de sintetizare a datelor Pe lng posibilitatea de a utiliza expresii pentru a aduga cmpuri calculate n interogri, Access permite utilizatorilor realizarea unor cereri prin intermediul crora se pot aplica funcii unor nregistrri grupate dup criterii prestabilite. Prin intermediul acestor query cu rol de sintetizare a datelor se pot construi cu uurin cereri care s returneze totalul, media, minimul sau maximul unor grupuri de tupluri. Pentru a realiza o cerere de sintetizare a datelor se va elabora interogarea de selecie aducndu-se n grila Query Design cmpurile necesare i adugndu-se eventualele cmpuri calculate, dup care se va apsa butonul Totals din bara de instrumente. Ca rezultat al acestei operaii, n grila Query Design, va fi disponibil un nou rnd intitulat Total. n mod implicit, gruparea datelor dup valorile cmpului toate coloanele vor avea selectat n linia total opiunea Group By (n cazul n care mai multe coloane au selectat n linia Total opiunea Group By, gruparea se va face nti dup primul cmp din stnga, apoi dup al doilea, .a.m.d.). Se va pstra opiunea Group By n dreptul cmpurilor de grupare, urmnd ca pentru celelalte cmpuri s fie selectat din lista de selecie funcia dorit.

S-a realizat o interogare realizndu-se o grupare dup fiecare agent, ce produs i cantitatea comandat. TEMA Realizai o interogare de grupare dup fiecare produs i cantitatea comandat.

Putem de asemenea s realizm sum de valoare produs comandat pentru fiecare articol:

Interogri de aciune
Interogrile de aciune pot avea ca rezultat: Crearea de noi tabele (Make Table Query) Actualizarea datelor (Update Query) Adugarea de noi nregistrri (Append Query) tergerea nregistrrilor (Delete Query) Interogrile de aciune se realizeaz similar interogrilor de selecie de pn acuma, specificndu-se n plus prin meniul Query tipul de cerere dorit. 1. Interogri pentru crearea de noi tabele (Make Table Query) Crearea unei tabele noi n urma interogrii tabelelor deja existente, presupune realizarea urmtorilor pai: Elaborarea unei interogri de selecie n modul Design View (vor fi luate n calcul doar cmpurile ce dorim s fac parte din structura noii tabele, iar, n cazul n care sunt necesare i alte cmpuri pentru aplicarea unor criterii, acestea nu vor fi marcate n linia Show a grilei de interogare. Apelarea din meniul Query a opiunii Make Table Query i specificarea n casete Make Table a numelui noii tabele (se poate opta pentru crearea noii tabele ntr-o alt baz de date bifnd opiunea Another Database i specificnd numele fiierului). Lansarea n execuie a interogrii.

Exemplu: Crearea unei tabele ce va conine numele clienilor i pentru fiecare client cantitatea total de articole comandate. Vom face o grupare dup numele clienilor, iar ca expresie calculat vom face sum dup cantitile de produse comandate. Dup ce am ales cmpurile care vor forma noua tabel, vom alege din meniul Query opiunea Make-Table Query. Dup care vom lansa n execuie interogarea. Am ales cmpurile care vor aprea n noua tabel.

Din meniul Query alegem Make-Table query. Va aprea o fereastr unde vi se cere un nume pentru tabela nou creat.

Dup ce vei scrie numele tabelei vei rula interogarea apsnd butonul: . Apsai Yes pentru ferestrele de atenionare care vor aprea. Apoi mergei n fereastra Database, pe tabul Tables i verificai dac a fost creat noua tabel. Dai Open s vedei rezultatul interogrii.

Exemplul 2: Crearea unei tabele care s conin aceleai cmpuri ca tabela comenzi ns, cmpul suma final va fi redenumit n valoare final care va fi calculat dup formula cant * pret, iar comenzile vor fi doar pentru clienii din oraul Bacu.

De asemenea dvs. putei s bifai caseta de pe rndul Show, i astfel va apare i oraul unde au avut loc comezile. Apoi alegei opiunea Make- Table Query i ca titlu pentru tabel putei scrie comenzi dupa localitate.

Rulai interogarea i vedei tabela nou opinut. 2. Interogri pentru actualizarea datelor (Update Query). Acest tip de nregistrare permite modificarea valorilor pentru nregistrrile care satisfac condiiile impuse la crearea interogrii. Exemplu: Pentru clienii din oraul Bacau vom pune o reducere de valoarea 10. Pentru a realiza o interogare de tip Update, se vor realiza urmtorii pai: a) n modul Design View se vor selecta cmpurile pentru care aplicm modificarea: Cmpurile folosite sunt: Nume client, client ora cu criteriul bacau, i reducere, pentru care vom face modificarea.

b) Din meniul Query se va selecta opiunea Update Query:

c) n linia Update To se va completa formula de calcul sau valoarea dorit pentru actualizare:

Mergei apoi i verificai n tabela clieni daca valorile dorite au fost modificate. n cadrul interogrilor Update nu sunt admise modificri asupra cmpurilor cheie primar sau modificri ce ar putea conduce la nerespectarea restriciilor de integritate. 3. Interogri pentru adugarea de nregistrri (Append Query). Interogrile pentru adugare ofer utilizatorilor posibilitatea inserrii de noi nregistrri n tabel pornind de la nregistrrile existente. Pentru exemplificare vom presupune c dorim adugarea n tabela comenzi dup localitate (ce conine n momentul actual doar comenzile pentru clienii din Bacu) a comenzilor pentru clienii din Iai (existeni n tabela comenzi). Pentru a realiza o interogare de tip Append este necesar parcurgerea urmtoarelor etape:

a) Elaborarea unei interogri de selecie n modul Design View. Se va alege tabela/tabelele ce conine datele i vor fi luate n calcul doar cmpurile ce conin valorile ce vor fi adugate, iar, n cazul n care se dorete aplicarea unor criterii de selecie a acestora, se vor aduga cmpurile de restricionat.

b) Din meniul Query sau din bara de unelte de sub meniu, se va selecta opiunea Append Query ce va conduce la afiarea ferestrei Append n care se va selecta numele tabelei n care dorim adugarea.

c) Transformarea interogrii de selecie ntr-o interogare de adugare are ca efect apariia rndului Append To n fereastra de proiectare a interogrii. n acest rnd se va specifica pentru fiecare cmp din tabela ce conine datele, denumirea cmpului corespondent din tabela unde vor fi adugate.

Rulai interogarea i vedei dac au fost adugate nregistrri n tabela comenzi dup localitate. 4. Interogri pentru tergerea de nregistrri (Delete Query). Interogrile de tergere denregistrri - Delete ofer posibilitatea eliminrii mai multor nregistrri din tabele pe baza unor criterii impuse de utilizator. Atenie ns, tergerea de nregistrri poate fi realizat doar atunci cnd nu sunt nclcate reguli de integritate ale bazei de date. Prin urmare nu putem terge nregistrri dintr-o tabel (printe) dac de acele nregistrri depinde nregistrrile din alt tabel (copil). Pentru a realiza o interogare de tergere se elaboreaz n mod normal o cerere selectndu-se cmpurile dorite i impunndu-se restriciile necesare dup care se apeleaz din meniul Query sau folosindu-se shortcut-ul respectiv, opiunea Delete. Exemplul urmtor prezint modalitatea n care se pot terge din baza de date toate comenzile efectuate de clienii ce au codurile 2 sau 3. Se selecteaz cmpurile dup care aplicm criteriul dorit. Apoi se allege opiunea Delete Query.

Interogarea va arta astfel: Rulai apoi interogarea.

Rapoarte i Formulare laborator 7


a) Rapoarte Din fereastra Database alegei Reports i Create report by using wizard.

Vom crea raportul cu numele Raport comenzi. Introducem toate cmpurile din tabela Comezi, clic pe Next, i n continuare vom grupa pe nivele cmpurile.

Pe primul nivel vor fi Id-urile. Dac apare alt cmp ca fiind pe primul nivel (cele scrise cu albastru), l trecem n partea stng prin clic pe butonul < i trecem n partea dreapt cmpul care ne intereseaz (prin clic pe butonul > ). De asemenea ne putem folosi de opiunea Priority pentru a trece un cmp la un nivel mai sus. Clic Next. Putem sorta cmpurile ascendent dupa nume. La opiunea Summary Options se va deschide o fereastr unde putei s alegei una dintre funciile de calcul, astfel nct s avei rapoarte cu cmpuri grupare.

n continuare alegei opiunile pe care le dorii, dai numele Raport comenzi i la urm clic Finish. Un alt exemplu de raport complex este cel n care vom afisa numele agenilor, numele clienilor, denumirea articolelor, cantitatea comandat i valoarea final. Atunci cnd fereastra Report Wizard se va deschide, alegei la cmpul Tables/Queries pe rnd tabelele ageni, si de acolo cmpul agent nume, apoi tabela clieni si de acolo cmpul nume client, tabela articole i de acolo cmpul articol nume, etc. Rezultatul este:

b) Formulare Vom crea un fomular cu numele Date Angeni, pentru introducerea datelor n alt form dect cea tabelar avd n plus i indicaii pentru cel ce introduce datele.

Din fereastra Database facei clic pe Forms i apoi alegei opiunea Create form by using wizard. n fereastra nou aprut alegei tabela Angeni. Vei aduga cmpurile ce trebuie sa apar n formular. Acest lucru este realizat astfel: din Available fields selectai pe rnd fiecare cmp dorit i apoi apsai butonul > pentru a le trece n Selected fields.

Alegei apoi modul de afiare al cmpurilor.

Apoi modul de prezentare al formularuli i la urm denumii formularul. Rezultatul poate fi de forma:

Sau de forma:

Proiectul trebuie sa contina:


1. 2. 3. 4. 5. o BD de 4 tabele minim 10 inregistrari de tabela 10 interogari impartite astfel: 2 interogari simple cu maxim 2 tabele (una dintre interogari sa faca si ordonare) 3 interogari cu campuri calculate 1 interogare cu group by 4 interogari de actiune cate una din fiecare categorie (make table, update, append si delete) 2 rapoarte 1 formular