Documente Academic
Documente Profesional
Documente Cultură
Access - Obiecte de Tip Interogare
Access - Obiecte de Tip Interogare
efectuarea de calcule;
Tipuri de interogri
Access permite crearea a patru tipuri de interogri:
Interogri de tip Select pentru extragerea datelor din unul sau mai multe tabele i de a
tabel existent
Interogri de tip Delete care permit tergerea unor nregistrri dintr-o
parametrii diferii.
Dintre acestea cererile de selecie sunt cele mai utilizate ele, asigurnd utilizatorilor
posibilitatea consultrii bazei de date..
Operaii privind un obiect de tip interogare
Operaiile privind obiectele de tip cerere se refer la crearea, utilizarea (activarea
interogrii i afiarea datelor) i respectiv modificarea acestora.
Pentru exemplificarea cererilor de interogare din acest curs vom considerare o baz de
date constituit pentru gestionarea produselor (stocurilor) dintr-un magazin, avand schema de
mai jos :
Pentru crearea unei cereri de selecie se alege opiunea Design View din caseta New
Query sau a opiunii Create query in design View , aa cum se observ n figura urmtoare:
.
Dup alegerea modului de creare, se trece la selectarea tabelelor surs din care se vor
extrage datele. Caseta Show Table, din figura de mai jos ofer posibilitatea precizrii sursei de
date pentru construirea cererii.
tabele i interogri.
Se vor selecta tabela/tabelele i/sau cererile surs i se va aciona butonul Add pentru a
realiza aducerea acestora n fereastra de proiectare a cererii. Dup a fost precizat sursa de date
se va nchide fereastra Show Table prin acionarea butonului Close . La nevoie se poate
redeschide fereastra folosind butonul Show Table din bara de instrumente
sau opiunea
Grila Query
Design
Fereastra Select Query (de mai sus ) este mprit n dou zone:
a. Zona superioar, n care se vizualizeaz tabelele/interogrile surs de date precum i relaiile
definite ntre acestea;
b. Grila Query Design structurat astfel:
Linia Field: rezervat pentru definirea numelui atributului selectat;
Linia Table: destinat precizrii sursei de date;
Linia Sort: permite precizarea sensului sortrii pentru atributul din coloana respectiv;
Linia Show: permite inhibarea afirii realizrilor cmpului respectiv;
Linia Criteria: ofer posibilitatea precizrii criteriilor de selecie prin introducerea
expresiilor Access corespunztoare;
Liniile Or: permit precizarea mai multor criterii de selecie n cazul expresiilor Access
utiliznd operatorul OR.
Odat specificat sursa de date, definirea interogrii de selecie presupune parcurgerea
urmtorilor pai:
1. Selectarea tipului de interogare se poate face din meniul principal, opiunea Query:
Obs. Butonul
2. Precizarea atributelor ale cror realizri urmeaz s le returneze cererea. Numele acestor
atribute se vor preciza n grila Query Design n rndul Field utiliznd una din urmtoarele
modaliti:
Selectarea atributului din cadrul listei Field Name ce poate fi deschis prin acionarea
cu mouse-ul a butonului List Box ;
Executarea unui dublu clic de mouse asupra atributului dorit din tabela/interogarea
aflat n panoul superior;
Metoda drag-and-drop care presupune selectarea cu mouse-ul a atributului dorit din
panoul superior i tractarea acestuia n linia Field.
Dac este necesar s fie aduse n panoul inferior toate atributele aparinnd unei tabele se va
proceda n unul din urmtoarele moduri:
Selectarea tuturor atributelor din tabela surs (aflat n panoul superior) printr-un
dublu clic de mouse pe numele tabelei i glisarea atributelor n grila Design (panoul
inferior);
Utilizarea asteriscului aparinnd tabelei surs: tragei cu mouse-ul asteriscul n prima
coloan Field. Chiar dac n grila de proiectare este completat doar prima coloan Field
la execuie interogarea va returna realizrile tuturor atributelor;
proprietii
liber a panoului superior, n linia Output All Fields se va preciza Yes (figura de mai sus ) .
Precizarea valorii Yes pentru proprietatea Output All Fields nu va determina aducerea n
grila de proiectare a cmpurilor din tabela surs, dar, n momentul executrii cererii, DynaSet-u\
va cuprinde realizrile tuturor atributelor.
n mod implicit n DynaSet, antetul coloanelor este reprezentat de numele atributului, cu
excepia cazului n care la crearea tabelei ai precizat o alt etichet prin intermediul proprietii
Caption. Dac dorii afiarea n DynaSet a unei noi etichete pentru un atribut plasai mouse-ul n
linia Field naintea numelui atributului, tastai eticheta dorit urmat de caracterul ":".
3. Se precizeaz criteriul de selecie (n mod implicit se returneaz realizrile tuturor
tuplurilor pentru atributele specificate) prin introducerea unei expresii Access valide n
rndul Criteria (eventual i rndul OR). Acest criteriu permite selectarea doar a anumitor
nregistrri care ndeplinesc anumite condiii Introducerea expresiei Access se face prin
tastare sau se construiete prin intermediul generatorului de expresii (Expression
Builder) a crui fereastr se deschide selectnd opiunea Build a meniului contextual pe
care l activai printr-un clic dreapta de mouse n rndul Field.
:
Se va pune n execuie astfel Expression Builder:
n figura de mai sus se prezint modul n care s-a definit interogarea de selecie prin care
se realizeaz afiarea stocului pentru produsul faina. Sursa de date a cererii este reprezentat de
trei tabele ale bazei de date: Furnizori, Produse i respectiv Stocuri.
In privina cererilor de selecie care au ca surs mai multe tabele trebuie precizat c, n
mod implicit, Access utilizeaz operaia de echicompunere, fapt ce conduce la selectarea
nregistrrilor ce au corespondent n ambele tabele (interogri de tip Inner Join).
De exemplu, dac se realizeaz o cerere asupra tabelelor Produse i Stocuri, fr a se
specifica vreun criteriu, n lista rezultatelor nu vor figura dect produsele pentru care exist ceva
n stoc. Dac se dorete realizarea unei interogri de tip Outer Join (folosind operaia de
compunere extern) se va efectua dublu click asupra liniei de legtur dintre tabele i, n caseta
Join Properties (ca n figura de mai jos ) se poate preciza selectarea tuturor nregistrrilor din
una dintre tabele, indiferent dac au sau nu corespondent n cealalt tabel.
Pentru realizarea operaiei de compunere pe baza unei relaii de inegalitate (<, >, o) a cmpurilor
de legtur dintre tabele se poate folosi limbajul SQL. O cerere ce are ca surs dou tabele ntre
care nu exist nici o relaie va avea ca rezultat produsul cartezian al nregistrrilor din cele dou
tabele.
unui anumit format de afiare se va plasa cursorul mouse-ului n coloana dorit i se va executa
clic dreapta, selectndu-se din meniul contextual opiunea Properties.
Va fi afiat caseta Field Properties (figura alturat) n care se va putea specifica numrul
de zecimale dorit sau un format de afiare pentru cmpul respectiv.
Operatori',
Constantele;
Identificatorii;
Funciile.
Operatori de identificare
Operatorii de identificare , ! i . , sunt specific programului Access. Operatorul ! se mai
numete i operatorul bang. Ei sunt folosii n urmtoarele situaii:
Textbox1.Fontsize=10
Identificarea anumitor cmpuri din tabele : studenti!marca
Ali operatori
Operator
Is
Like
In
Between
Descriere
Folosit cu valoarea logic Null pentru a stabili dac o
valoare este Null sau nu
Determin dac un ir de caractere ncepe cu un
anumit prefix
Determin dac o valoare de tip ir apare ntr-o list
de valori
Determin dac o valoare numeric sau o dat
calendaristic se gsete ntr-un anumit interval de
valori
Exemplu
Is Null
Is Not Null
Like EXE*
Like FILE????
X In (ABC,ggg,FILE)
Between 1 and 6
Expresiile Access utiliznd operatorul Like permit specificarea unor criterii de selecie prin
cutarea unui ir ntr-un text. n interiorul textului se pot folosi caracterele generice ? (poate
nlocui orice caracter n poziia n care apare) i * (orice n poziia n care apare i n
urmtoarele).
Figura 4. 21
Astfel expresia Like "Tom*" selecteaz toate numele care conin pe primele trei poziii
caracterele "Tom", iar expresia Like u*escu" va permite selecia numelor terminate n "eseu".
Operatorul In precizeaz mulimea de valori admise pentru un atribut. Interogarea din Figura 4.
22 va selecta clienii de tip SRL (a cror denumire se termin cu aceste trei caractere) ce au
comandat produsele "cablu telefonic" sau "banda izolanta".
Figura 4. 22
Constantele utilizate n construirea expresiilor Access pot fi de natur:
numeric (ex:1200,5,0) ;
Acest text va fi afiat n caseta de dialog Enter Parameter Value n momentul n care se
pune n execuie interogarea, iar utilizatorul poate introduce criteriul de selecie n mod dinamic,
la execuie.
studenti.marca,
studenti.nume,
studenti.DataN,
profile.cod_prof,
special.cod_spec
FROM ((profile INNER JOIN (ani INNER JOIN PLANE ON ani.an = PLANE.as) ON
profile.cod_prof = PLANE.cod_prof) INNER JOIN special ON (special.cod_spec =
PLANE.cod_spec) AND (profile.cod_prof = special.cod_prof)) INNER JOIN studenti ON
(ani.an = studenti.an_s) AND (special.cod_spec = studenti.cod_spec) AND (profile.cod_prof =
studenti.cod_prof)
WHERE
(((studenti.DataN)
Between
#1/1/1970#
And
#1/1/1980#)
AND
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 care conduce la respectiv. 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.
Lista conine nou funcii de tip agregat ce sunt prezentate n tabelul urmtor:
Funcia
Returneaza
AVG
Media aritmetic
COUNT
FIRST
LAST
MAX
Toate tipurile
Toate tipurile
Toate tipurile
Text, Number, Date, Currency, AutoNumber
MIN
STDEV
Valoarea minim
Deviaia standar a
SUM
valorilor
Suma valorilor
VAR
Varianta valorilor
Opiunea Where se va utiliza dac un cmp trebuie utilizat pentru a preciza anumite criterii
la nivelul grupului.
Practic, este posibil elaborarea unor tabele n care gruparea i ordonarea datelor se
realizeaz att pe linii ct i pe coloane la intersecia crora se pot efectua calcule complexe.
Etapele ce trebuie urmate pentru realizarea unei astfel de cereri de interogare sunt urmtoarele :
1. Elaborarea unei interogri de selecie n modul Design View. Se vor alege tabelele ce conine
datele i se vor selecta cmpurile dorite pentru afiare i eventualele cmpuri pentru care se vor
impune restricii.
2. Din meniul Query se va selecta opiunea CrossTab Query ce va avea ca efect imediat afiarea
liniilor Total i Crosstab n grila interogrii.
3. Se va specifica modul de agregare a datelor, respectiv funciile totalizatoare n linia Total.
4. In linia CrossTab se va opta pentru Row Heading n cazul cmpurile ce vor fi afiate pe liniile
tabelului, Column Heading pentru cmpul ce va fi afiat pe vertical, i Value pentru valorile ce
vor fi afiate la intersecia liniilor cu coloanele. Este permis existena mai multor cmpuri
ordonate pe orizontal (Row Heading), dar a unui singur cmp Column Heading i a unui singur
cmp Value
Exemplu: O interogare care va avea ca rezultat un tabel sintetic cu rezultatele la examene
ale unei specializri ar putea avea urmtoarea structur:
Pentru a crea o interogare se selecteaz cmpurile dorite din unul sau mai multe tabele,
apoi se specific unul dintre cmpuri ca fiind de tipul Column Heading, unul sau mai multe
cmpuri, de tipul Row Heading i unul de tip value.
Cmpul de tip value va apare la intersecia unei linii cu o coloan; pentru acest cmp se
specific o funcie agregat ca de exemplu Sum, Count, etc din linia Total. Celelalte cmpuri, care
apar n tabelul sintetic vor avea clauza Where n linia Total i vor fi folosite la specificarea
unor criterii din interogare.
Noul tabel va prelua din tabelele existente toate cmpurile selectate n linia Field din
tabelele existente, eventual cu specificarea unui criteriu.
Traducerea SQL va fi:
SELECT studenti.marca, profile.cod_prof, special.cod_spec, ani.an, PLANE.cod_disc
INTO [note]
FROM ani INNER JOIN (((profile INNER JOIN PLANE ON profile.cod_prof =
PLANE.cod_prof) INNER JOIN special ON (special.cod_spec = PLANE.cod_spec) AND
(profile.cod_prof = special.cod_prof)) INNER JOIN studenti ON (special.cod_spec =
studenti.cod_spec) AND (profile.cod_prof = studenti.cod_prof)) ON (ani.an = studenti.an_s)
AND (ani.an = PLANE.as);
n limbaj SQL:
UPDATE [note] SET [note].nota_fin = Int(0.6*[note]![nota_ex]+0.4*[note]![nota_lab]
+0.5)
WHERE ((([note]![nota_ex])>=5) AND (([note]![nota_lab])>=5));
Trebuie menionat c n cadrul interogrilor Update nu sunt admise modificri asupra
cmpurilor cheie primar sau modificri ce ar putea conduce la nerespectarea restriciilor de
integritate. O situaie ce ar putea genera erori survine atunci cnd, n cazul cmpurilor de tip text,
valoarea rezultat depete lungimea cmpului din tabel, n acest caz valoarea va fi trunchiat
din partea dreapt.
pe linia Delete a aprut clauza From n dreptul tabelului din care se fac tergerile, iar n dreptul
celorlalte cmpuri a aprut clauza Where, care specific o condiie.
n limbaj SQL:
DELETE studenti.*, ani.an
FROM ani INNER JOIN ((profile INNER JOIN special ON profile.cod_prof =
special.cod_prof) INNER JOIN studenti ON (special.cod_spec = studenti.cod_spec) AND
(profile.cod_prof = studenti.cod_prof)) ON ani.an = studenti.an_s
WHERE (((ani.an)="5"));
care se dorete aplicarea unor criterii de selecie a acestora, se vor aduga cmpurile de
restricionat.
2. Se vor tasta eventualele condiii n linia de criterii a interogrii.
3. Din meniul Query se va selecta opiunea Append Query ce va conduce la afiarea casetei
Append n care se va selecta numele tabelei n care dorim adugarea.
4. Transformarea interogrii de selecie ntr-o interogare de adugare are ca efect imediat
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 corspondent din tabela
unde vor fi adugate.
Processing
Language
(TPL)
cuprinde
comanzile:
BEGIN
Pentru crearea
Dac sunt mai multe tabele surs se folosete caracterul punct ca delimitator
(ex. Studenti.marca)
Caracterul # se folosete
singure cifre, sau pentru delimitarea valorilor de tip Date/Time din expresii
Crearea unei interogri cu instruciuni SQL
1. Se deschide baza de date dorit (de ex. Studeni), apoi o interogare n Design View
2. Se nchide Show Table fr a selecta un tabel.
3. Se deschide SQL View.
4. Se scrie instruciunea (SELECT de ex.)
Folosirea funciilor agregate din SQL
Aceste funcii se folosesc pentru a calcula totalul, media sau alte date statistice pentru
grupurile de nregistrri cu o valoare de atribut comun (se va aduga clauza GROUP BY). Se
poate limita i mai mult rezultatul clauzei GROUP BY folosind calificativul opional HAVING.
Sintaxa:
SELECT [ALL|DISTINCT|DISTINCTROW]
Functie_agregat(camp) AS nume_alias
[, lista]
FROM nume_tabele
[WHERE condiie]
GROUP BY criteriu_grupare
[HAVING criteriu_agregat]
[ORDER BY criteriu_sortare]
unde cmpul folosit ca parametru ntr-o funcie agregat trebuie s fie numeric.
Ex:
SELECT Avg(nota_fin) AS media, cod_disc
FROM [note]
WHERE cod_spec="CE" AND an="1"
GROUP BY cod_disc
ORDER BY Avg(nota_fin) DESC;
Se obine ca rezultat media pe discipline a unei specializri (CE).
[WHERE conditie_stergere]
Interogri de tip Crosstab
TRANSFORM functie_agregat(camp) [AS alias]
SELECT [ALL|DISTINCT|DISTINCTROW]
From nume_tabel {INNER|LEFT|RIGHT} JOIN tabel_legatura
ON criteriu_legatura
[ nume_tabel {INNER|LEFT|RIGHT} JOIN tabel_legatura
ON criteriu_legatura ]
PIVOT cmp