Creeaza.com - informatii profesionale despre


Cunostinta va deschide lumea intelepciunii - Referate profesionale unice
Acasa » referate » informatica » access

Interogari Access


Interogari Access


Performantele unui SGBD depind in mare masura de capacitatea extragerii rapide a diferitor informatii in forma dorita. In multe cazuri este necesar de a selecta date din mai multe tabele simultan. De exemplu, pentru a selecta cartile din domeniul informaticii editate in Franta dupa anul 2001, utilizam 3 tabele: CARTI, TARI si TEMATICI. Pentru a formula conditii de selectie, in MS Access exista o clasa speciala de obiecte (alaturi de tabel )numite Interogari (engl. Queries).


Sinonime: Interogari - Cereri - Interpelari.


Interogarile reprezinta modalitati de selectie si afisare a informatie din unu sau mai multe tabele, formulate cu ajutorul unor conditii logice.




Tipuri de interogari

In functie de modul de definire si rezultatele actiunii, interogarile pot fi clasificate astfel:

a) interogari de selectie (folosind conditii logice);

b interogari de sortare (indicind cimpul/cimpurile si ordinea sortarii);

c) interogari de excludere a unor inregistrari din BD (de exemplu,
excluderea tuturor cititorilor care nu au imprumutat carti in
ultimii 2 ani);

d) interogari de modificare a unor inregistrari din BD (de exemplu,
majorarea preturilor tuturor cartilor cu 20%);

e)interogari de obtinerea a unor informatii rezultante (in cimpuri noi)

in baza informatiei existente (de exemplu, obtinerea virstei cititorului prin scaderea anului de nastere din anul curent);

f) interogari de obtinere a unor totaluri, medii etc.;

g) interogari incrucisate.

In toate cazurile, cu exceptia ultimelor doua, rezultatul interogarii este un nou set de date, numit set dinamic (engl: Dynaset). Setul dinamic (rezultalul interogarii) contine doar cimpurile specificate ale inregistrarilor din tabelele specificate care satisfac conditiilor specificate. Denumirea ''Set dinamic' este legata de faptul ca orice modificari ale datelor din tabelele specificate in interogare implica modificari respective ale rezultatului interogarii (la o noua executare a ei). Si invers, orice modificari in setul dinamic implica modificari in tabelele respective (cu conditia respectarii integritatii datelor). Seturile dinamice nu se memorizeaza; ele se formeaza din nou de fiecare data cind executam o interogare. Dac in tabelele BD intervin modificari, rezultatele executarii a doua interogari identice pot fi diferite, in cele ce urmeaza vom descrie modalitatile de definire si executare a interogarilor nominalizate.



1 Interogari de selectie a inregistrarilor(Select Query)

Exemplu:1

Pentru a defini o interogare de selectie (de exemplu, afisarea emisiunilor cu desene animate), actionam fila Queries din fereastra Database (fig. 10), apoi butonul New.



fig.10 Fereastra cu clasele de obiecte Access


In continuare indicam unul din cele 5 moduri de creare a interogarilor (in cazul nostru Design View

Din caseta care apare (fig. 11) selectam consecutiv (in orice ordine) tabelele necesare (in cazul nostru,Emisiuni,Genuri,Canale TV) si pentru fiecare actionam butonul Add.


fig.11 Selectarea tabelelor pentru definirea interogarii


Dupa selectarea tabelelor actionam butonul Close. Daca tabelele au cimpuri comune (definite in procesul crearii lor), Access stabileste in mod automat legaturile respective (fig. 12). In continuare indicam, in partea de jos a ferestrei, cimpurile din fiecare tabel (in ordinea dorita) care urmeaza a fi afisate sau pentru care se vor specifica conditii de selectie si/sau de sortare. Includerea cimpurilor se face prin 'tragerea' lor cu ajutorul mouse-ului din tabelele din caseta de sus in rindul Field al casetei de jos sau prin executarea unui dublu-clic pe denumirile respective. Dupa aceasta specificam conditiile selectiei si/sau ordinea sortarii, in acest fel interogarea se considera definita (fig. 12).


fig12.Specificarea conditiilor de selectie


In rindul Criteria din partea de jos a ferestrei specificam conditia selectiei Des* pentru cimpul DenGen al tabelului Genuri. Daca dorim ca inregistrarile sa fie afisate intr-o anumita ordine (crescatoare/alfabetica sau descrescatoare) pentru cimpul respective specificam optiunile Ascending sau Descending in rindul sort. Daca indicam Ascending pentru cimpul DenEmisiunii al tabelului emisiuni denumirile emisiunilor vor fi afisate in ordenea alfabetica.

Interogarea astfel definita poate fi executata imediat in scopul obtinerii rezultatului (fig. 13), sau salvata pentru a fi executata ulterior. In primul caz actionam butonul (Datasheet View) din bara cu instrumente in aldoile caz executam comanda Save din meniul File. La salvarea interogarii indicam numele ei, care nu trebuie sa coincida cu numele unor tabele sau ale unor interogari definite anterior. Setul dinamic (rezultatele interogarii) contine cimpurile marcate cu simbolul in rindul Show al ferestrei. Celelalte cimpuri chiar daca sunt incluse in interogare, nu se afiseaza.



fig.13 Rezultatele interogarii



Exemplu 2. Lista emisiunilor cu durata mai mica de 30 de minute.


Pentru afisarea emisiunilor cu durata mai mica de 30 minute actionam fila Queries din fereastra Database , apoi butonul New. In continuare indicam unul din cele 5 moduri de creare a interogarilor, in cazul nostru Design View (fig.14).


fig.14


Din caseta care apare (fig.15) selectam tabelul Emisiuni,Canale TV si Genuri si actionam butonul Add.



fig.15


Dupa selectarea tabelului actionam butonul Close. Apoi executam dublu clic pe denumirile campurilor si vor trece in rindul Field din caseta de jos (fig.16).

fig.16

Dupa aceasta specificam conditiile selectiei. In rindul Criteria scrim conditia <30 pentru campul Durata Emisiunii al tabelului Emisiuni si ne va afisa lista emisiunilor cu durata mai mica de 30 minute.


fig.17. Rezultatul interogarii


Exempul 3: Lista emisiunilor stiri

Pentru afisarea emisiunilor stiri actionam fila Queries din fereastra Database , apoi butonul New. In continuare indicam unul din cele 5 moduri de creare a interogarilor, in cazul nostru Design View (fig.14).

Din caseta care apare (fig.15) selectam tabelul Emisiuni , Genuri actionam butonul Add .Dupa selectarea tabelului actionam butonul Close.

Apoi executam dublu clic pe denumirile campurilor si vor trece in rindul Field din caseta de jos (fig.18).

fig.18
Dupa aceasta specificam conditiile selectiei. In rindul Criteria scrim conditia "stiri" pentru campul DenGen al tabelului Genuri si ne va afisa lista emisiunilor stiri.

fig.19. Rezultatul interogarii



Exemplul 4: Lista emisiunilor in limba rusa


Fie ca dorim sa afisam lista emisiunilor in limba rusa. Pentru aceasta executam urmatorii pasi:

Definim o interogare in care includem tabelele Emisiuni, Limbi, Canale TV din care selectam campurile DenEmisiunii, DenCanal, DenLimba (fig.20)


fig.20

Dupa aceasta specificam criteriul de selectie in rindul Criteria pentru campul DenLimba din tabelul Limbi si ne va afisa lista emisiunilor in limba rusa.

fig.21

2 Interogari de sortare a inregistrarilor


Dupa ce am definit conditiile de selectie, putem stabili conditii de sortare pentru unul sau mai multe campuri.

Exemplu 1: Pentru afisarea emisiunilor in ordine alfabetica executam un clic in rindul Sort al casetei (fig.22) in dreptul campului DenEmisiuni si din lista derulanta alegem optiunea Ascending.


fig.22


Pentru a afisa rezultatul interogarii (fig.23), actionam butonul (Datasheet View) din bara cu instrumente.

fig.23


Sortarea datelor poate fi facuta si fara a specifica conditii de selectie. In acest caz se vor afisa toate inregistrarile, dar ordinea lor va corespunde conditiilor stabilite in rindul Sort pentru campurile respective.

Exemplu 2:Lista emisiunilor in ordinea duratei lor.


Pentru afisarea emisiunilor in ordine duratei lor executam un clic in rindul Sort al casetei (fig.24) in dreptul campului Durata emisiunii si din lista derulanta alegem optiunea Ascending.


fig.24

Pentru a afisa rezultatul interogarii (fig.25), actionam butonul (Datasheet View) din bara cu instrumente.


fig.25



3 Interogari de actualizare a inregistrarilor (Update Query)


In cazul cind este necesar de a modifica un numar mare de inregistrari conform unuia si aceluiasi algoritm, putem defini o interogare de modificare (Update Query)

Vom descrie in continuare modul de definire a unei interogari pentru care stirile se maresc cu 5 minute.

1. Definim interogarea in modul descris in p.1.

2. Includem tabelul Emisiuni si Genuri.

3. Selectam Update din meniul Query sau actionam butonul din bara de instrumente.Ca rezultat titlul ferestrei se modifica in Update Query, iar in partea de jos apare rindul Update To (fig.26).


fig.26


4. Includem (prin "tragere") in celulele rindului Field campurile DenEmisiunii, DenGen, Durata emisiunii.

Introducem in rindul Update To pentru campul DenEmisiunii expresia [DenEmisiunii], DenGen expresia [DenGen], Durata emisiunii expresia [Durata emisiunii]+5

6. Introducem in rindul Criteria pentru campul DenGen conditia Stiri.

7. Actionam butonul din bara cu instrumente, pentru a obtine valorile curente ale campului Durata emisiunii care urmeaza a fi modificate (fig.27).


fig.27



Modificarile propriu-zise vor fi operate numai dupa trecerea in regimul Design View si actionarea butonului din bara cu instrumente sau executarea comenzii Run din meniul Query. In acest caz pe ecran va aparea un mesaj despre numarul total al inregistrarilor care urmeaza a fi modificate. Actionind butonul Yes , Access va efectua modificarile (fig.28). Pentru a renunta la modificari, actionam butonul No .

fig.28

Remarca: Interogarile de tip Update se executa de regula o singura data. In cazul executarii repetate a interogarii definite in exemplul de mai sus, vom obtine de fiecare data marirea emisiunilor stiri cu 5 minute.


4 Interogari de excludere a inregistrarilor (Delete Query)


Fie, de exemplu, ca dorim sa excludem din tabelul Emisiuni toate emisiunile intre ora 1000 -1200. Pentru aceasta, executam urmatoarele actiuni:

1.        Definim interogarea in modul descris in p 1.

2.    Includem tabelul Emisiuni.

3.    Selectam Delete Query din meniul Query sau actionam butonul
(daca este afisat) din bara cu instrumente. Ca rezultat, titlul ferestrei se
schimaг in Delete Query iar in partea de jos a ferestrei apare rindul Delete.

4.   Din lista cimpurilor tabelului Emisiuni, afisata in partea de sus a
ferestrei (fig. 8.12), selectam campurile care vor fi afisate sau pentru care vor
fi specificate conditii de selectie DenEmisiunii si Timpul inceperii si le 'tragem' in celulele respective ale rindului Field din partea
de jos. Ca rezultat, in celulele respective pentru fiecare camp apare optiunea
Where
(din engleza - Unde, In care).

5.    Introducem in celulele rindului Criteria conditiile selectiei. In cazul
nostru pentru cimpul Timpul inceperii scriem conditia Between 1000 And 1200.

fig.29

6. Pentru a obtine lista inregistrarilor care urmeaza a fi excluse (dar inca n-au fost excluse), actionam butonul (Datasheet View) din bara cu instrumente. Ca rezultat, obtinem fereastra, reprezentata in figura 8.13.


fig.30

7. Daca rezultatele obtinute in p.6 sunt cele dorite, revenind la regimulDesign View, putem elimina realmente inregistrarile, executind comanda Run din meniul Query sau actionind butonul (Run) din bara cu instrumente. Ca rezultat, pe ecran apare un mesaj despre numarul total al inregistrarilor care urmeaza a fi eliminate. Daca actionam butonul Yes, inregistrarile vizate sunt eliminate definitiv. Pentru renuntare, actionam butonul No.

8. Salvam interogarea, executind comanda Save As din meniul File si
indicind numele interoga



5 Interogari de grupare si totalizare a inregistrarilor


In multe cazuri apare necesitatea de a obtine valori rezumative referitoare la toate inregistrarile din tabel sau pentru o submultime a lor. De exemplu, ar putea sa ne intereseze cite emisiuni de fiecare gen sunt. In acest scop in Access pot fi definite interogari in care sunt specificate conditii de grupare si totalizare.

Pentru obtinerea valorilor rezumative, sunt prevazute urmatoarele functii:

-Sum, pentru calcularea sumei valorilor cimpului;

-Avg, pentru calcularea mediei valorilor cimpului;

-Min, pentru gasirea valorii minime;

-Max, pentru gasirea valorii maxime;

Count, calculeaza numarul de valori ale cimpului (excluzind cele vide);

-StDev pentru calcularea abatem standard;

-Var pentru calcularea dispersiei.

Valorile rezumative pot fi obtinute atit pentru toate inregistrarile din tabel cit si pentru grupuri de inregistrari.

Fie ca dorim sa obtinem informatii despre cite emisiuni de fiecare gen sunt. Pentru aceasta executam urmatoarele actiuni:

1.     Definim o interogare in care includem tabelele Emisiuni si Genuri din care selectam cimpurile DenGen si DenEmisiunii (fig)

fig.31

2. Selectam optiunea Totals din meniul View; ca rezultat in caseta de jos apare rindul Total, iar in celulele respective ale cimpurilor selectate optiunea Group By

3. Din lista derulanta a cimpului DenEmisiunii (rindul Total) selectam optiunea Count.

4. Actionam butonul pentru a obtine valorile cautate (fig)



fig.32




7 Interogari incrucisate (Crosstab Query)


In multe cazuri rezultatele unei interogari sunt greu de perceput din cauza volumului mare de informatii selectate. In figura   sunt prezentate datele despre cite emisiuni de fiecare gen sunt, obtinute cu ajutorul unei interogari de grupare si totalizare.

fig

Access permite gruparea si reprezentarea datelor intr-o forma compacta, forma care se aseamana cu un tabel electronic.In acest scop se definesc interogari speciale, numite interogari incrucisate (Crosstab Query).

Pentru a defini o interogare incrucisata procedam initial ca in cazul unei interogari de selectie obisnuita, adica selectam tabelele Emisiuni, Canale TV, Genuri, din care selectam campurile DenGen, DenCanal, DenEmisiunii (fig)

fig

In continuare parcurgem urmatorii pasi:

1.       Selectam optiunea Crosstab din meniul Query. Ca rezultat, titlul ferestrei
se schimba in Crosstab Query, iar in partea de jos apare rindul Crosstab.

2.   Definim campul DenGen, valorile caruia vor servi in calitate de denumiri ale rindurilor tabelului. Pentru aceasta actionam butonul cu sageata din rindul Crosstab pentru campul DenGen si din lista derulanta care apare selectam optiunea Row Heading.

3.    In mod analogic definim campul DenCanal, valorile caruia vor servi in calitate de denumiri ale coloanelor tabelului . Pentru aceasta actionam butonul cu sageata din rindul Crosstab pentru campul DenCanal si din lista derulanta care apare selectam optiunea Column Heading.

4.   In rindul Total inlocuim optiunea Group By din campul DenEmisiunii prin
operatorul Count.

5.    Pentru campul DenEmisiunii in rindul Crosstab stabilim optiunea Value pe
care o selectam din lista derulanta prin analogie cu actiunile descrise mai sus.

6. Actionam butonul pentru vizualizarea rezultatelor (fig)


fig



Politica de confidentialitate


.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.