Sunteți pe pagina 1din 12

INTEROGRI

O interogare este un set de instruc iuni care poate fi utilizat n lucrul cu date. Pentru efectuarea acestor instruciuni, se execut interogarea. Pe lng returnarea de rezultate care pot fi sortate, grupate sau filtrate o interogare poate s creeze, s copieze sau s modifice datele. De asemenea, le putem folosi ca nite surse pentru formulare i rapoarte. n Access avem urmtoarele tipuri de interogri: A. Select queries. Sunt acele interogri care extrag sau ne arat anumite date. Aceste interogri ne vor afia datele n funcie de anumite criterii. Fiind afiat un rezultat, putem consulta i edita aceste date(n funcie de interogare). O selecie genereaz un tabel logic (l numim aa pentru c el nu este stocat pe hard, ci doar n memoria calculatorului; la fiecare deschidere datele din acest tabel sunt recalculate). B. Action queries. Acest tip de interogri sunt folosite pentru a modifica unele nregistrri. n acest tip de interogri se regsesc urmtoarele aciuni: tergere nregistrare, actualizare nregistrare, inserare date, crearea unui nou tabel din unul deja existent. C. Crosstab queries. Vom folosi acest tip de interogri pentru a calcula sau restructura un tabel pentru o analiz mai uoar a datelor. Astfel putem calcula numrul de nregistrri, media unui cmp, suma elementelor sau alte tipuri de calcule pentru datele care sunt grupate dup dou cmpuri. D. SQL queries. Cnd vrem s realizm o modificare asupra datelor trebuie s apelm la mecanismul Microsoft Jet. SQL este un limbaj pe care Microsoft jet n recunoate i ne permite s comunicm prin ajutorul lui. Atunci cnd crem o interogare n Query Design, Access construiete n spatele acestei secvene o interogare n SQL. Dac vrem putem s vizualim i s editm aceast interogare. Dup ce am fcut modificrile necesare, fereastra Query Design se va modifica, adaptndu-se la noua secven SQL. Sunt anumite cazuri n care nu putem folosi Query Design pentru a defini o interogare. n toate aceste cazuri vom folosi, direct, cod SQL.

Crearea unei interogri Pentru a crea o interogare trebuie s respectm urmtorii pai: - Deschidem baza de date n care trebuie s crem interogarea. - Click pe obiectul Queries aflat n parte stng-lateral al ferestrei Database. - Va aprea urmtoarea fereastr:

Obiectul Query Dup aceasta avem trei alternative: -dublu-click pe opiunea Create query by using wizard . n acest caz se va deschide un set de ferestre vrjitor unde va trebui s introducem tabele din care trebuie s extragem datele, cmpurile pe care dorim s la vizualizm, precum i numele interogrii. n apsul urmtor se va genera automat o interogare. -dublu-click pe Create query in Design view . n acest caz se va deschide fereastra Query design , n care putem defini mai n detaliu interogarea noastr. -click pe butonul din fereastra Database. Va aprea urmtoarea csu de dialog.

Fig.7.2.2. Crearea unei interogri Opiunea Simple Query Wizard este identic cu Create a query using the wizard,menionat anterior. Celelalte tipuri de vrjitori ne permit s generm interogri speciale. Opiunea Design view are aceleai rezultate cu Create a query in Design view. La intrarea n Query design suntem ntrebai ce tabele vom folosi pentru a extrage datele.

Fig.7.2.3. Alegerea tabelului pentru interogare Selectm tabelul de unde dorim s extragem datele i acionm cu un click pe butonul Add (sau doblu-click pe tabelul respectiv). Dac dorims extragem datele din alt interogare, click pe tabul Queries i selectm sursa datelor. Dac dorim s extragem datele din mai multe tabel, trebuie s parcurgem paii de mai sus. n final alegem butonul Close . Astfel va aprea fereastra Design view.

7.3. Fereastra Design view

Fig.7.3.1. Fereastra Design view Dac privim figura de mai sus vom observa o fereastr unde vor aprea tabelele ce vor fi folosi pentru interogri, iar n partea de jos avem un grid(form tabelar), n care vom putea defini aceste interogri. Fiecare coloan din acel grid corespunde unui cmp. Fiecare linie are cte o funcie: Field: -aici vom pune cmpurile folosite n interogare(de obicei vor fi cmpurile pe care le vom vizualiza);poate fi un cmp dintr-un tabel, sau un cmp calculat. n cazul unui cmp nou, calculat, vom folosi urmtoarea form: -numecmpnou : expresie unde: -numecmpnou- va fi umele cmpului nou creat prin diferite calcule; -expresie- va fi format din cmpuri din tabele, operatori, funcii predefinite, numere, care vor contribui la determinarea valorilor aferente cmpului nou. Obs: ntre cele dou componente avem semnul : Table: -numele tabelului de unde extragem cmpul. Aceast linie este foarte folositoare, mai ales n cazul n care avem de fcut o interogare bazat pe mai multe tabele. Sort: -ajut la ordonarea rezultatelor ntr-o anumit ordine. Show: -dac nu este marcat, atunci respectivul cmp nu va apea n rezultatul final al interogrii. Nu este marcat n cazul n care dorim s folosim acest cmp n interogare, dar nu dorim s-l afim. De exemplu, dac vrem s afim toi studenii din Suceava, vom avea nevoie de un cmp care ne arat judeul, dar nu trebuie neaprat s-l afim. Criteria: -specific un criteriu de cutare. Un criteriu de cutare este o condiie pe care o nregistrare trebuie s o ndeplineasc pentru a aprea ca un rezultat a unei interogri. Acest criteriu poate fi compus dintr-una sau mai multe condiii cu ajutorul operatorilor AND i OR. or: -este folosit pentru condiiile multiple.

7.4. Adugarea de cmpuri ntr-o interogare Pentru a aduga noi cmpuri n acel grid avem urmtoarele posibiliti: -dublu-click pe numele cmpului aprut n aria cu tabelele, aceast aciune aducnd respectivul cmp n prima coloan liber a gridului. -click pe numele cmpului din tabel, urmat de tragerea acestuia deasupra coloanei din grid n care vrem s-l punem. -click pe linia Field:, ntr-o coloan liber din grid i n partea dreapt a acelei csue va aprea o sgeat care ne va da posibilitatea (prin aciune asupra ei) s afim o list derulant cu toate cmpurile tabelelor prezente n arealul corespunztor. Dac avem multe tabele i multe cmpuri, putem simplica cutarea cmpului corespunztor prin selectarea unui tabel din linia Table:, iar pe urm din linia Field: selectarea cmpului dorit. -de asemenea, putem specifica un cmp prin tastarea numelui acestuia n linia Field: a unei coloane libere din grid. -dac dorim ca rezultatul unei interogri s cuprind toate cmpurile unui tabel, vom putea folosi semnul * (nlocuitor pentru toate cmpurile unui tabel). Folosirea acestui semn prezint un avantaj major: n cazul n care se modific schema unui tabel (fie tergere cmp, fie adugare cmp) rezultatul interogrii va include n mod automat aceste modificri. 7.5.Definirea cmpurilor obinute prin calcule Aceste cmpuri sunt rezultatul unei expresii. O expresie este alctuit prin combinarea unui operator cu unul sau doi termeni. n marea majoritate a cazurilor un termen este un cmp al unui tabel, iar cellalt termen este o valoare numeric, sau un alt cmp. Operatorii +, pentru adunare -, pentru scdere *, pentru nmulire ^, pentru ridicare la putere /, pentru mprire \, pentru mprire (se obine doar partea ntreag a mpririi) Mod, face mprirea i returneaz doar restul &, folosit pentru concatenarea a dou iruri Un termen poate fi numele unei coloane, o expresie, o valoare concret, o funcie. Valori concrete Valorile concrete trebuie scrise respectndu-se urmtoarele reguli: Valorile numerice sunt indicate scriind doar cifrele ce le compun. Trebuie respectat semnul definit la Regional Settings(Control Panel) pentru a arta care este

partea ntreag i cea zecimal. Putem scrie acest numr fr delimitatorii de mii (de ex: n loc de 6,000 vom scrie 6000). Textul va fi scris ntotdeauna n ghilimele simple (apostrof). De ex:Suceava Valorile referitoare la dat vor fi scrise nsoite de # (#25/10/2007#) Funciile predefinite Access2003 are o multitudine de funcii predefinite ce pot fi utilizate. Deoarece sunt foarte multe, i ne-ar lua mult timp s le descriem pe fiecare, putem consulta seciunea Help furnizat de Access, pentru a afla date despre aceste funcii. De exemplu printre cele mai folosite sunt: DATE()- returneaz data curent NOW()- returneaz data i timpul curent YEAR(datevalue)- returneaz anul expresiei din paranteze MONTH(datevalue)- returneaz luna parametrului CDATE(literalvalue)- convertete parametrul ntr-o dat Numele cmpurilor Dac vrem s ne referim la un cmp anume trebuie doar s-i scriem numele (excepie fcnd acele nume care au n componen spaii;la acestea vom ncadra numele n paranteze ptrate; ex:[nume student]) Folosirea parantezelor Atunci cnd folosim mai multe expresii, putem recurge la parantezele rotunde pentru a indica precedena operatorilor. Ex: pret + (pret * 0.1) n cazul n care nu folosim parantezele operaiile se calculeaz n urmtoarea ordine: -ridicrile la putere -nmulirile i mpririle -adunrile i scderile 7.6. Denumirile coloanelor rezultat Capul de tabel aferent unei coloane conine, de cele mai multe ori numele coloanei, dar putem schimba acest nume cu o alt denumire care s fac uor de neles rezultatul interogrii. Dac vrem s redenumim acest cap de tabel, trebuie s indicm acest lucru n linia din grid, scriind noul nume n fa n csua corespunztoare. Acest nume nou va fi urmat de :. Aceste redenumiri sunt folosite n cazul interogrilor ce fac diverse calcule. De exemplu vrem ca din data ofertei s extragem numai anul(cmpul nou format va fi denumit An) An : Year ([Datao]) 7.7. Schimbarea ordinii cmpurilor

Dac vrei s schimbai ordinea de afiare a vreunei coloane incluse n grid (tabel), putem muta respectiva coloan prin selectarea ei, urmat de mutarea ei n locul dorit, sau cu ajutorul cut i paste. Mutarea prin metoda drag and drop: Poziionm cursorul pe partea de sus a coloanei i cnd apare acionm cu un click i coloana se va ntuneca (este selectat). Mutm cursorul astfel nct s apar sgeata dorit. . Apsm butonul mouse-ului i-l meninem apsat trgnd coloana n poziia

Mutarea prin cut/paste Poziionm cursorul astfel nct s apar . Dm click pe butonul (sau selectm opiunea Cut din meniul Edit, sau tastm Ctrl+X) i coloana va disprea. Pasul urmtor const n crearea, n locul unde dorim s introducem coloana noastr, a unei coloane noi, cu ajutorul opiunii Columns din meniul Insert. Selectm aceast nou coloan i acionm cu un click pe butonul (sau selectm opiunea Paste din meniu Edit, sau tastm Ctrl+V). 7.8. Salvarea interogrilor Putem salva o interogare n felul urmtor: - click pe butonul din bara de instrumente sau, - selectarea opiunii Save din meniul File. Dac salvm pentru prima dat o interogare, o cutie de dialog va aprea, cutie n care vom introduce numele interogrii. Urmeaz un click pe butonul OK. Pentru a nchide interogarea trebuie s dm un click pe butonul . 7.8. Rularea unei interogri Putem rula o interogare fie din ferestra Query design, fie din fereastra Database. A.Din fereastra Database: -mai nti selectm interogarea care vrem s fie rulat; -urmeaz un click pe butonul din ferestra bazei de date. B.n modul design view a unei interogri: -click pe butonul din bara de instrumente. Cnd o interogare furnizeaz ca rezultat o selecie, putem, de asemenea, s acionm pe butonul .(n ferestra Datasheet). n momentul n care vizualizm rezultatul unei interogri, ceea ce vedem este o parte a unui tabel, ce respect anumite criterii, iar n cazul n care vom edita aceste rezultate cu anumite date, aceste date vor fi stocate i n tabele (cu excepia unor interogri).

7.9. Modificarea structurii unei interogri Dac vrem s modificm structura unui tabel, avem de urmat urmtorii pai: -ne poziionm n fereastra Database, n obiectul Queries; -selectm interogarea ce urmeaz a fi modificat; -click pe butonul .

7.10. Ordonarea nregistrrilor Pentru a realiza ordonarea liniilor rezultat a unei interogri vom folosi seciunea Sort: din gridul de definire a interogrii. Nu trebuie dect s acionm cu un click asupra seciunii corespunztoare cmpului dup care vrem s sortm, dup care alegem din lista derulant felul n care dorim s sortm respectivele nregistrri. Dac vom selecta Ascending nregistrrile vor fi aranjate de la cel mai mic la cel mai mare, dac avem cmp numeric, n ordine alfabetic, dac avem cmp de tip text, i n ordine cronologic, dac avem cmp de tip dat; dac selectm Descending se ntmpl invers fa de cele prezentate mai sus. Putem efectua i sortri complexe. Asta nseamn c putem sorta nregistrrile dup mai multe cmpuri, astfel dup unele vom sorta ascendent, iar dup altele, descendent. Cnd apelm la sortri dup mai multe coloane, nregistrrile vor fi sortate dup prima coloan aleas, iar n cazul n care apar valori identice se trece la sortarea dup urmtorul cmp ales, .a.m.d..De exemplu, dac sortm tabelul Clieni dup judee i nume clieni. Sunt anse mari s gsim doi sau mai muli clieni din acelai jude. n acest caz sortarea va trece pe al doilea nivel (sortarea dup nume clieni). 7.11. Selectarea nregistrrilor n cazul unei interogri putem afia toate nregistrrile unui tabel, sau numai unele dintre ele. n cazul n care dorim s afim numai anumite nregistrri trebuie s stabilim anumite condiii de ndeplinit de respectivele linii de tabel. Pentru aceasta vom folosi seciunea Criteria: din gridul de definire a interogrii. De exemplu,vrem s vizualizm furnizorii care-i au sediul n Iai, deci liniile rezultate din interogare trebuie s ndeplineasc condiia jude = Iasi.Deci trebuie s adugm un criteriu n gridul QBE(de descriere a interogrii), n seciunea Criteria: a cmpului Judet condiia =Iasi. Cnd aceast condiie este o egalitate nu este neaprat necesar s folosim semnul =, el fiind considerat implicit de Access n lipsa oricrui alt semn. Pentru a compara dou cmpuri dintr-un tabel (de exemplu, cost i pre), vom scrie n seciunea Criteria: a primului cmp, pe cel de-al doilea cmp, n formatul: [pret].(deci numele cmpului n paranteze ptrate). Criteriile pe care trebuie s le ndeplineasc interogrile pot fi combinate cu ajutorul opratorilor AND i OR.

n cazul n care vom avea operatorul AND n seciunea cu criterii de ndeplinit de ctre nregistrri, liniile trebuie s ndeplineasc toate condiiile prezentate pentru a face parte din rezultat. n cazul operatorului OR, pentru a face parte din rezultat, o nregistrare trebuie s ndeplineasc cel puin o condiie din cele prezentate. Toate condiiile stabilite n aceeai celul a gridului sunt combinate cu operatorul AND. n exemplu urmtor vom selecta nregistrrile care ndeplinesc condiiile Codp=1 AND Datao between #01/01/2000# and #07/14/2005#

Fig.7.11.1. Interogare exemplu n momentul n care stabilim un criteriu pentru aceeai coloan, apelnd la cmpurile or:, Access combin aceste criterii folosind operatorul OR.

Fig.7.11.2. Interogare folosind operatorul OR Prin secvena de mai sus vom vizualiza Codf, Codp i Datao din tabelul Oferte pentru acele nregistrri care au codul produsului 1 i data ntre 01.01.2000 i 14.07.2005, sau cu codul produsului 2 i orice dat. 7.11.1. Operatori folosii pentru comparaii Aceti operatori compar valoarea unei expresii cu valoarea altei expresii. n cazul n care una dintre aceste expresii are valoare nul, atunci rezultatul returnat de operator va fi tot nul. Operator = <> < <= > Semnificaie Egal cu Diferit de Mai mic dect Mai mic sau egal cu Mai mare dect

>= 7.11.2. Operatorul Between

Mai mare sau egal cu

Operatorul are urmtoarea sintax: <expresie>Between valoare1 and valoare2 Acest operator permite examinarea expresiei, prin compararea valorii acesteia cu valoare1 i valoare2. n mod normal acea expresie este vreun cmp dintr-un tabel. (exemplu de folosire a acestui oprator avem n fig.7.11.1.). 7.11.3. Operatorul In Operatorul are urmtoarea sintax: <expresie>In (valoare1, valoare2, valoare3,) Acest operator examineaz dac expresia ia una dintre valorile din paranteze. 7.11.4. Operatorul is Null n cazul n care o coloan care intervine n comparaie are valoare nul, rezultatul condiiei are un rezultat nul. n cazul n care vrem s afim toate nregistrrile care nu au valori n anumite coloane, putem folosi acest operator. De exemplu, dorim s putem condiia ca acel Codp s fie nul:

Fig.7.11.4.1. Operatorul is Null 7.11.5. Operatorul Like Acest operator este folosit n cazul n care vrem s comparm o expresie cu un anumit format(model). De exemplu, vrem s vizualizm toi clienii care ncep cu litera A. Sintaxa pentru acest operator este urmtoarea: <expresie> Like format n tabelul urmtor avem caracterele care sunt folosite pentru defiirea formatului. Caractere din model ? * # Descriere Un singur caracter Zero sau mai multe caractere Cifre

[list de caractere] [!list de caractere]

Orice caracter din lista de caractere Orice caracter care nu se afl n lista de caractere

De exemplu, dac vrem s afim clienii care sunt societi pe aciuni, vom scrie ceva de genul:

Fig.7.11.5.1. Operatorul Like Listele de caractere care se pot include ntre paranteze ptrate pot conine orice caractere, cum ar fi liter, cifr, sau chiar spaiu.De exemplu: pentru a extrage clienii care ncep cu una din literele a,g,r,v vom folosi o secven de genul:[argv]* ntr-o astfel de list de caractere putem folosi i caracterul - care va putea fi trades n limbaj natural cu expresia:de la pn la. De exemplu, n loc de [abcde]* putem scrie [a-e]*. Caractere speciale ?, *, #,i [ i pot pierde din funcionalitate n cazul n care sunt incluse ntre paranteze ptrate. De exemplu, n expresia [*]*, primul * este caracterul de nceput al cuvntului, iar al doilea * ine locul unui ir de caractere. Caracterul ] poate fi folosit ca un caracter normal, dar nu poate face parte dintro list de caractere. Un exemplu pentru folosirea ] ar fi A]*. Asta ar nsemna s cutm un ir de caractere cu primul caracter A, al doilea caracter ], urmnd un alt ir de caractere. Secvena [] este considerat un text cu lungime 0. ntre parantezele ptrate putem avea mai multe intervale. n cazul n care cratima apare ntre paranteze, ea semnific faptul c avem un interval, iar dac apare n afara parantezelor, este un caracter obinuit. Exerciii: 1. S se realizeze o interogare care s afieze denumirea i adresa furnizorilor din baza de date(query1). 2. S se realizeze o interogare care s afieze produsele din baza de date. 3. S se afieze Codp,Cant, Ump, CodDep din tabela Stocuri. 4. S se afieze Codf, Codp, Datao, zile din tabela Oferte, unde n cmpul zile vom avea numrul de zile scurse de la data ofertei pn la data curent. 5. S re realizeze o interogare care s furnizeze ca rezultat urmtoarele cmpuri: Codp, Ump, Cant, pret vechi, pret nou, valoare, unde Codp, Ump, Cant vor fi preluate din Stocuri; pret vechi reprezint cmpul Pret din Stocuri; pret nou reprezint

6. 7. 8.

cmpul Pret din Stocuri majorat cu 15 %; iar valoare reprezint produsul dintre pret nou i Cant. S se afieze Codf, Codp, Ump, Pret, Datao din tabela Oferte pentru nregistrrile care au ca data ofertei nainte de anul 2002. S se afieze Codc, Codp, Ump, Cant din tabela Vanzari pentru nregistrrile care au ca unitate de msur buc i Cant mai mare dect 100. S se afieze Codc, Codp, Cant, Ump, Pret din tabela Vanzari, ordonat dup Ump alfabetic i Cant descresctor.

Folosind operatorul Like,s se afieze Codf, Denf, Adresaf din tabela Furnizori pentru acei furnizori a cror nume se termin cu o vocal

S-ar putea să vă placă și