Sunteți pe pagina 1din 15

Access Queries 1

O interogare (query) Access poate fi utilizat pentru:


regsirea i ordonarea datelor dup anumite criterii;

efectuarea de calcule;

actualizarea bazei de date (prin cereri de tip aciune);

pregtirea datelor n vederea afirii lor n formulare sau rapoarte;

Tipuri de interogri
Access ofer utilizatorilor posibilitatea construirii urmtoarelor tipuri de cereri (interogri):
Interogri de selecie care permit extragerea de date din una sau mai multe tabele i/sau cereri
precum i efectuarea de calcule;
Interogri de analiz ncruciat care permit sintetizarea datelor i a rezultatelor obinute din
calcule, sub forma unei foi de calcul tabelar;
Interogri tip aciune cu funcia de creare de noi tabele i de actualizare a bazei de date;
Dintre acestea cererile de selecie sunt cele mai utilizate ele, asigurnd utilizatorilor posibilitatea
consultrii bazei de date.
Toate aceste tipuri de cereri pot fi parametrizate.

Pentru exemplificarea cererilor de interogare se va lua n considerare o baz de date constituit


pentru o firm care i comercializeaz produsele prin intermediul potei, pe baza comenzilor primite
de la clieni. Firma dispune de un nomenclator al produselor fabricate n care sunt consemnate
denumirea fiecrui produs, unitatea de msur i categoria de calitate aferent. Clienii firmei sunt
persoane fizice crora li se solicit numele, adresa, codul potal i numrul de telefon. Comenzile
primite sunt numerotate secvenial, pe fiecare consemnndu-se data recepionrii comenzii i
termenul de livrare (exprimat n zile) iar, n momentul onorrii comenzii, se completeaz data la care
s-a efectuat livrarea. Pe o comand pot fi solicitate unul sau mai multe produse n diferite cantiti.
Preurile practicate de firm sunt negociabile i variabile n timp.
Modelul propus pentru baza de date este prezentat n figura urmtoare:

Access Queries 2

Sursa de date pentru o interogare


(Query) poate fi reprezentat de:
una sau mai multe tabele;

una sau mai multe interogri;

tabele i interogri.

Se vor selecta tabela/tabelele i/sau


cererile surs i se va aciona butonul
Add pentru a realiza aducerea acestora n
Figura 4. 1 Caseta Show table fereastra de proiectare a interogrii.

Dup a fost precizat sursa de date se va nchide fereastra Show Table prin acionarea butonului
Close sau a butonului . La nevoie se poate redeschide fereastra folosind butonul Show Table din
bara de instrumente sau opiunea Show Table din meniul Query.

Sursa de date

Grila Query Design

Fereastra Select Query


Fereastra Select Query este mprit n dou zone:
Zona superioar, n care se vizualizeaz tabelele/interogrile surs de date precum i relaiile
definite ntre acestea;
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: permite precizarea mai multor criterii de selecie n cazul expresiilor Access
utiliznd operatorul OR.
Access Queries 3

Proiectarea unei interogri de selecie


n figura de mai sus se prezint modul n care s-a definit interogarea de selecie prin care se
realizeaz afiarea numelui clienilor cu adresa n Ploieti sau Braov (primul criteriu de selecie),
numrului comenzii trimise i data convenit a livrrii care trebuie s fie anterioar datei curente (cel
de al doilea criteriu de selecie precizat). Afiarea se realizeaz n ordinea alfabetic dup numele
clienilor. Sursa de date a cererii este reprezentat de dou tabele ale bazei de date: Clienti i
respectiv Comenzi.
Pentru a evita repetarea restriciei puse asupra cmpului DataLivrare pe mai multe rnduri
(pentru fiecare ora) s-ar fi putut apela
la soluia scrierii tuturor localitilor pe
acelai rnd i utilizrii operatorului OR
(figura alturat).

n privina cererilor de selecie care au ca surs mai multe tabele trebuie precizat c, n mod implicit,
Access utilizeaz operaia de INNER JOIN, 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 Continut
Comanda, fr a se specifica vreun criteriu,
n lista rezultatelor nu vor figura dect
produsele pentru care s-a efectuat cel puin o
comand.

Caseta Join Properties


O interogare 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.
Executarea interogrii de aciune se poate realiza n unul din urmtoarele moduri:
Access Queries 4

Utiliznd butonul Run din bara de instrumente;


Utiliznd opiunea Datasheet din meniul View;
n figura urmtoare este redat rezultatul executrii interogrii anterior proiectate.

Rezultatul unei interogri de selecie


Revenirea n modul Design se realizeaz prin activarea butonului Design View din bara de
instrumente sau selectnd din meniul View opiunea Design View.
Cmpuri calculate n interogri de selecie
Interogrile de selecie pot cuprinde i cmpuri calculate. Aceste cmpuri returneaz, la executarea
interogrii, valoarea expresiilor Access asociate lor.

Exemplu de cmp calculat ntr-o interogare


Pentru a aduga un cmp calculat ntr-o interogare se tasteaz numele acestuia ntr-o nou coloan din grila
Query Design, se adaug dou puncte: i apoi se completeaz expresia dorit.
Exemplu: Interogarea din figura anterioara calculeaz data limit pn la care trebuie onorat fiecare
comand.Elementele unei expresii Access sunt:
Operatorii;
Constantele;
Identificatorii;
Funciile.

Operatorii utilizai n construirea expresiilor Access se pot clasifica astfel:


Aritmetici: +, - , * , / , Mod (returneaz restul mpririi la un ntreg), ^ (ridicare la putere).
De atribuire i comparare: =, <, >, <=, >=, < >.
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.
Logici: And, Or, Not. Se pot utiliza pentru construirea expresiilor Access compuse.
Access Queries 5

De concatenare a irurilor de caractere: +, &.


De identificare: ! i . (punct). Aceste dou caractere sunt utilizate ca separatori, astfel:
o Combin numele coleciior de obiecte i numele obiectelor pentru a selecta un anumit
obiect sau proprietate a lui:
Ex: Forms![Clieni]
o Identific atribute aparinnd unei tabele:
Ex: Clieni![Localitate]
o Deosebete numele obiectelor de cele ale proprietilor:
Ex: TextBox1.FontSize=12 unde: TextBox reprezint un obiect de control
FontSize reprezint o proprietate (stabilete dimensiunea fontului)
Ali operatori: IS, LIKE, IN, BETWEEN.
Exemple: Interogarea din figura urmtoare afieaz comenzile din luna ianuarie 2002 care nu au fost
nc livrate. Se va folosi operatorul Between pentru a selecta comenzile primite n intervalul 01.01.2002
- 31.01.2002 i expresia Is Null pentru a selecta acele nregistrri pentru
care nu a fost completat nici o
dat de livrare.
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).

Astfel expresia Like Tom* selecteaz toate numele care conin pe primele trei poziii
caracterele Tom, iar expresia Like *escu va permite selecia numelor terminate n escu.
Operatorul In precizeaz mulimea de valori admise pentru un atribut. Interogarea din figura urmtoare
va selecta clienii de tip SRL (a cror denumire se termin cu aceste trei caractere) ce au comandat produsele
cablu telefonic sau banda izolanta.
Access Queries 6

Constantele utilizate n construirea expresiilor Access pot fi de natur:


numeric (ex:1200,5,0);
text (ex:123, TOMA ION, str. Viilor 15);
Dat calendaristic (ex: 12.31.01# ceea ce indic data de 31 decembrie 2001).

Identificatorii sunt nume de obiecte Access (tabele, atribute, formulare,etc) ca de exemplu


[Produse]![cod produs].
Funciile care pot fi de natur:
Dat calendaristic : Date(), Month(), Year (), etc.
Exemple:
Date() returneaz data curent;
Month(Date()) returneaz numrul lunii calendaristice curente.
Year(Date()) returneaz anul curent.
De tip text: Len() returneaz lungimea unui ir, Trim() - elimin spaiile de la nceputul i
de la sfritul unui ir, Left() returneaz primele n caractere de la nceputl unui ir, etc.
Matematice i trigonometrice: ABS() - returneaz valoarea absolut a unui numr, INT()
returneaz partea intreag dintr-o valoare numeric, ROUND() rotunjete o valoare cu un
anumit numr de zecimale,SUM() calculeaz suma, AVG() calculeaz media, etc.
Financiare: PV() returneaz valoarea actual a unei anuiti pltite n rate periodice egale,
SLN() returneaz valoarea amortizarea unui mijloc fix dup o anumit perioad (amortizare
liniar) etc.
Funcii diverse: ISNUMERIC(), ISNULL(), etc.

Parametrizarea interogrilor
Interogrile de selecie prezentate pn n acest moment returneaz ntotdeauna nregistrrile din tabelele
surs care corespund unei anumite cereri fixe: clienii trebuie s aib domiciliul n Bucureti sau Ploieti iar
data livrrii s fie anterioare datei curente (vezi exemplul de interogare de selecie prezentat ntr-un paragraf
anterior). De multe ori ns, ar fi util o interogare al crei criteriu de selecie s poat fi precizat la nivel
general i particularizat de utilizator n funcie de necesitile sale de informare (precizndu-se concret ce
realizri ale atributului sunt cutate) chiar n momentul execuiei cererii. O astfel de interogare se
Access Queries 7

caracterizeaz prin faptul c n grila Design, pe coloana dorit, n linia Criteria, se va preciza ntre
paranteze drepte un mesaj ce urmeaz a fi afiat la executarea cererii permind ca utilizatorul s introduc
criteriul de selecie dorit. Parametrii pot fi utilizai nu doar n rndul de criterii, ci i n formulele cmpurilor
calculate, dac se dorete introducerea unui termen variabil n expresii. Exemplul din figura urmtoare
prezint o cerere care va solicita utilizatorului numrul comenzii ce se dorete a fi afiat i procentul ce va
fi folosit pentru a calcula cmpul Reducere.

Interogare cu parametri

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. 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 agregat1 ce sunt prezentate n tabelul urmtor:
Access Queries 8

Funcia Returneaz Tipul de cmpuri pentru care se poate


aplica
AVG Media aritmetic Number, Date, Currency, AutoNumber
COUNT Numrul total de valori Toate tipurile
FIRST Prima valoare Toate tipurile
LAST Ultima valoare Toate tipurile
MAX Valoarea maxim Text, Number, Date, Currency,
AutoNumber
MIN Valoarea minim Text, Number, Date, Currency,
AutoNumber
STDEV Deviaia standar a Number, Date, Currency, AutoNumber
valorilor
SUM Suma valorilor Number, Date, Currency, AutoNumber
VAR Variana valorilor Number, Date, Currency, AutoNumber
Pe lng aceste funcii mai sunt disponibile opiunile WHERE i EXPRESSION.
Opiunea Where se va utiliza dac un cmp trebuie utilizat pentru a preciza anumite criterii de
selecie, dar nu se dorete efectuarea gruprii dup cmpul respectiv.
Opiunea Expression se va utiliza pentru cmpurile calculate ce returneaz un singur rezultat la
nivelul grupului.
Exemple:
Interograrea din figura urmtoare calculeaz numrul de comenzi efectuate de ctre fiecare client n
ultimele 10 zile.

Interogare totalizatoare i rezultatul acesteia


Se va observa alegerea cmpului CodClient pentru efectuarea gruprii (deoarece acest cmp are valori
unice), a funciei First pentru a afia numele clientului2 i a opiunii Where pentru a preciza criteriul de
selecie (ultimele 10 zile). Trebuie remarcat c un cmp pentru care a fost selectat opiunea Where nu
mai poate figura n rezultatele cererii.
Dup cum se poate vedea, cmpurile rezultate ca urmare a aplicrii funciilor agregat poart nume ce
includ ca prefix numele funciei (CountOf.., FirstOf..). Pentru a evita aceast situaie se poate tasta n
linia Field numele dorit urmat de dou puncte (la fel ca n cazul cmpurilor calculate).
Interogarea din figura urmtoare caculeaz valoarea total a fiecrei comenzi prin intermediul funcia
Sum i, ntr-un cmp calculat ce utilizeaz funcia IIF, determin valoarea unei eventuale reduceri

2
Dac s-ar fi selectat Group By i pentru cmpul NumeClient rezultatele interogrii ar fi fost identice dar gruprea dup cel de-al doilea
cmp ar fi fost inutil din moment ce codurile clienilor sunt unice.
Access Queries 9

pentru respectiva comand (reducerea n sum de 25% din valoarea comenzii) se acord doar dac
comanda depete 1.000.000 lei.

Folosirea opiunii Expession

Interogri de analiz ncruciat


Interogrile de tip tabel ncruciat (CrossTab Query) sunt extrem de utile n scopul analizei
multidimensionale a datelor permind obinerea unor situaii sintetice asemntoare tabelelor pivot
consacrate de procesoarele de tabele (Microsoft Excel, Lotus 123, etc.).
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 urmtoarele3:
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. 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. n 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 urmtor prezint modul de obinere a unei situaii ce afieaz valoarea vnzrilor realizate
de firm de la nceputul anului din fiecare produs n fiecare localitate:

3
Microsoft Access dispune i de un program wizard ce permite elaborarea asistat a unor astfel de interogri.
Access Queries 10

Interogare de analiz ncruciat


Rezultatul interogrii Vanzri pe localiti

O alt situaie impune utilizarea unei interogri de tip Crosstab este aflarea numrului de comenzi
realizate de fiecare client n fiecare lun a anului. Pentru a extrage din valorile cmpului
DataComanda numrul lunii se utilizeaz funcia Month:

Rezultatele interogrii:
Access Queries 11

Figura 4. 2
Dup cum se poate observa, interogarea nu afieaz coloanele aferente lunilor anului n care nu s-a
efectuat nici o comand. Acest aspect conduce la inconveniente n cazul n care se dorete elaborarea
unui raport avnd ca surs cererea de interogare deoarece raportul presupune specificarea unui numr
fix de cmpuri. O soluie pentru afiarea coloanelor chiar dac acestea nu conin valori este
precizarea numelor acestora n grila de proprieti a interogrii. Pentru aceasta se va deschide
interogarea n modul de proiectare i din meniul View se selecteaz opiunea Properties,
specificndu-se numele coloanelor obligatorii n rndul Column Headings al casetei Query
Properties.

Interogri tip aciune


Pe lng interogrile pentru selecia datelor i cele de tip CrossTab care au fost
exemplificate n paragrafele anterioare, S.G.B.D. Access pune la dispoziia
utilizatorilor o categorie distinct de interogri care permit manipularea i actualizarea
nregistrrilor.
Extrem de utile n exploatarea bazei de date acestea 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)

Modul de elaborare a unei interogri tip aciune este similar celui prezentat n cazul
interogrilor de selecie, presupunnd ca etap suplimentar specificarea explicit prin
intermediul meniului Query a tipului de cerere dorit.
Access Queries 12

Modificrile asupra bazei de date sunt efectuate doar n momentul execuiei interogrii
care se poate realiza prin apsarea butonului . Este recomandat proiectarea n
prealabil a cererii ca o simpl interogare de selecie i verificarea rezultatelor ce vor fi
afectate deoarece nu exist posibilitatea revenirii n cazul tergerii sau modificrii
eronate a nregistrrilor.

Interogri pentru crearea de noi tabele


Crearea de noi tabele pe baza nregistrrilor din tabelele deja existente
Trebuie menionat c tabela rezultat va moteni doar tipurile de date i dimensiunile
cmpurilor din tabelele surs, nu i cheia primar sau eventualele proprieti la nivel
de cmp ori tabel.
Exemplul urmtor ilustreaz crearea unei tabele (Clienti 2) ce va conine codurile,
numele i telefoanele clienilor din afara rii:

Exemplu de interogare de tip Make Table


Exist posibilitatea generrii unor tabele care s conin cmpuri ce nu exist n
tabelele surs (cmpuri calculate). Un exemplu n acest sens este prezentat n figura
urmtoare i reprezint modul de obinere a unei tabele n care sunt evideniate
cantitile comandate din fiecare produs:
Access Queries 13

Un alt aspect ce trebuie luat n considere este acela c, n cazul executrii repetate a
unei astfel de interogri, sau atunci cnd se specific n caseta Make Table numele
unei tabele deja existente, vechea tabel cu acelai nume va fi tears naintea
generrii celei noi.
Interogri pentru actualizarea datelor
Acest tip de interogri permit modificarea valorilor datelor din unul sau mai multe
cmpuri ale nregistrrilor ce satisfac restriciile impuse de utilizator.
Pentru a realiza o interogare de tip Update este necesar selectarea n modul Design
View a cmpurilor ce vor fi actualizate i, eventual, a celor ce fac obiectul restriciilor,
dup care se va apela din meniul Query opiunea Update Query. Ca rezultat al acestei
operaii n grila QBE va fi disponibil linia Update To n care se va putea completa
formula de calcul sau valoarea dorit pentru actualizare.
Pentru exemplificare presupunem c, n urma renegocierii termenelor, s-a hotrt
amnarea livrrilor ctre clientul SQL SRL cu 5 zile. Modificarea se va produce
evident doar n cazul comenzilor care nu au fost nc expediate

Interogare pentru actualizarea datelor (Update Query)


Se remarc notaia ntre paranteze drepte a denumirilor de cmpuri, chiar dac acestea
nu conin spaii.
Access Queries 14

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.
Interogri pentru adugarea de nregistrri
Interogrile pentru adugare ofer utilizatorilor posibilitatea inserrii de noi
nregistrri n tabelele pornind de la nregistrrile existente.
Pentru a realiza o interogare de tip Append este necesar parcurgerea urmtoarelor
etape:
1. Elaborarea unei interogri de selecie n modul Design View. Se va alege tabela 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.
2. Se vor tasta eventualele condiii n linia de criterii a interogrii.
3. 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.
Pentru exemplificare vom presupune c dorim adugarea n tabela Clieni 2, ce conine
n momentul actual doar clienii din afara rii, a tuturor clienilor ce nu au sediul n
Bucureti:

Interogare pentru adugarea de nregistrri


Observaie: Denumirile cmpurilor din linia Append To a grilei QBE sunt completate
automat doar n cazul n care acestea coincid n tabela sursa cu cele din tabela
destinaie.
Access Queries 15

Interogri pentru tergerea de nregistrri


Interogrile aciune de tip Delete ofer posibilitatea eliminrii mai multor nregistrri
din tabele pe baza unor criterii impuse de utilizator. Aciunea interogrilor de tergere
acompaniat de opiunea de tergere n cascad configurat n fereastra Relationships
poate conduce la tergerea simultan a datelor din mai multe tabele.
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
selecteaza opiunea Delete.
Exemplul urmtor prezint modalitatea n care se pot terge din baza de date toate
comenzile efectuate dup data de 10 octombrie de clienii ce au codurile 2 sau 3.

Interogare de tergere