Sunteți pe pagina 1din 15

Access Queries 1

O interogare (query) Access poate fi utilizată pentru:


 regăsirea şi ordonarea datelor după anumite criterii;

 efectuarea de calcule;

 actualizarea bazei de date (prin cereri de tip acţiune);

 pregătirea datelor în vederea afişării lor în formulare sau rapoarte;

Tipuri de interogări
Access oferă utilizatorilor posibilitatea construirii următoarelor tipuri de cereri (interogări):
 Interogări de selecţie care permit extragerea de date din una sau mai multe tabele şi/sau cereri
precum şi efectuarea de calcule;
 Interogări de analiză încrucişată care permit sintetizarea datelor şi a rezultatelor obţinute din
calcule, sub forma unei foi de calcul tabelar;
 Interogări tip acţiune cu funcţia de creare de noi tabele şi de actualizare a bazei de date;
Dintre acestea cererile de selecţie sunt cele mai utilizate ele, asigurând utilizatorilor posibilitatea
consultării 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 poştei, pe baza comenzilor primite
de la clienţi. Firma dispune de un nomenclator al produselor fabricate în care sunt consemnate
denumirea fiecărui produs, unitatea de măsură şi categoria de calitate aferentă. Clienţii firmei sunt
persoane fizice cărora li se solicită numele, adresa, codul poştal şi numărul de telefon. Comenzile
primite sunt numerotate secvenţial, pe fiecare consemnându-se data recepţionării comenzii şi
termenul de livrare (exprimat în zile) iar, în momentul onorării comenzii, se completează data la care
s-a efectuat livrarea. Pe o comandă pot fi solicitate unul sau mai multe produse în diferite cantităţi.
Preţurile practicate de firmă sunt negociabile şi variabile în timp.
Modelul propus pentru baza de date este prezentat în figura următoare:


Access Queries 2

Sursa de date pentru o interogare


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

 una sau mai multe interogări;

 tabele şi interogări.

Se vor selecta tabela/tabelele şi/sau


cererile sursă şi se va acţiona butonul
Add pentru a realiza aducerea acestora în
Figura 4. 1 Caseta Show table fereastra de proiectare a interogării.

După a fost precizată sursa de date se va închide fereastra Show Table prin acţionarea butonului
Close sau a butonului . La nevoie se poate redeschide fereastra folosind butonul Show Table din
bara de instrumente sau opţiunea Show Table din meniul Query.

Sursa de date

Grila Query Design

Fereastra Select Query


Fereastra Select Query este împărţită în două zone:
 Zona superioară, în care se vizualizează tabelele/interogările sursă de date precum şi relaţiile
definite între acestea;
 Grila Query Design structurată astfel:

 Linia Field: rezervată pentru definirea numelui atributului selectat;


 Linia Table: destinată precizării sursei de date;
 Linia Sort: permite precizarea sensului sortării pentru atributul din coloana respectivă;
 Linia Show: permite inhibarea afişării realizărilor câmpului respectiv;
 Linia Criteria: oferă posibilitatea precizării criteriilor de selecţie prin introducerea expresiilor
Access corespunzătoare;
 Liniile Or: permite precizarea mai multor criterii de selecţie în cazul expresiilor Access
utilizând operatorul OR.
Access Queries 3

Proiectarea unei interogări de selecţie


În figura de mai sus se prezintă modul în care s-a definit interogarea de selecţie prin care se
realizează afişarea numelui clienţilor cu adresa în Ploieşti sau Braşov (primul criteriu de selecţie),
numărului comenzii trimise şi data convenită a livrării care trebuie să fie anterioară datei curente (cel
de al doilea criteriu de selecţie precizat). Afişarea se realizează în ordinea alfabetică după numele
clienţilor. Sursa de date a cererii este reprezentată de două tabele ale bazei de date: Clienti şi
respectiv Comenzi.
Pentru a evita repetarea restricţiei puse asupra câmpului DataLivrare pe mai multe rânduri
(pentru fiecare oraş) s-ar fi putut apela
la soluţia scrierii tuturor localităţilor pe
acelaşi rând şi utilizării operatorului OR
(figura alăturată).

În privinţa cererilor de selecţie care au ca sursă mai multe tabele trebuie precizat că, în mod implicit,
Access utilizează operaţia de INNER JOIN, fapt ce conduce la selectarea înregistrărilor ce au
corespondent în ambele tabele (interogări de tip Inner Join).
De exemplu, dacă se realizează o cerere
asupra tabelelor Produse şi Continut
Comanda, fără a se specifica vreun criteriu,
în lista rezultatelor nu vor figura decât
produsele pentru care s-a efectuat cel puţin o
comandă.

Caseta Join Properties


O interogare ce are ca sursă două tabele între care nu există nici o relaţie va avea ca rezultat produsul
cartezian al înregistrărilor din cele două tabele.
Executarea interogării de acţiune se poate realiza în unul din următoarele moduri:
Access Queries 4

 Utilizând butonul Run din bara de instrumente;


 Utilizând opţiunea Datasheet din meniul View;
În figura următoare este redat rezultatul executării interogării anterior proiectate.

Rezultatul unei interogări de selecţie


Revenirea în modul Design se realizează prin activarea butonului Design View din bara de
instrumente sau selectând din meniul View opţiunea Design View.
Câmpuri calculate în interogări de selecţie
Interogările de selecţie pot cuprinde şi câmpuri calculate. Aceste câmpuri returnează, la executarea
interogării, valoarea expresiilor Access asociate lor.

Exemplu de câmp calculat într-o interogare


Pentru a adăuga un câmp 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ă până la care trebuie onorată fiecare
comandă.Elementele unei expresii Access sunt:
 Operatorii;
 Constantele;
 Identificatorii;
 Funcţiile.

Operatorii utilizaţi în construirea expresiilor Access se pot clasifica astfel:


 Aritmetici: +, - , * , / , Mod (returnează restul împărţirii la un întreg), ^ (ridicare la putere).
 De atribuire şi comparare: =, <, >, <=, >=, < >.
Aceşti operatori returnează valorile logice True şi False. Excepţie 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 colecţiior de obiecte şi numele obiectelor pentru a selecta un anumit
obiect sau proprietate a lui:
Ex: Forms![Clienţi]
o Identifică atribute aparţinând unei tabele:
Ex: Clienţi![Localitate]
o Deosebeşte numele obiectelor de cele ale proprietăţilor:
Ex: TextBox1.FontSize=12 unde: TextBox reprezintă un obiect de control
FontSize reprezintă o proprietate (stabileşte dimensiunea fontului)
 Alţi operatori: IS, LIKE, IN, BETWEEN.
Exemple: Interogarea din figura următoare afişează 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 înregistrări pentru
care nu a fost completată nici o
dată de livrare.
Expresiile Access utilizând
operatorul Like permit
specificarea unor criterii de
selecţie prin căutarea unui şir într-
un text. În interiorul textului se pot
folosi caracterele generice ?
(poate înlocui orice caracter în
poziţia în care apare) şi * (orice în
poziţia în care apare şi în
următoarele).

Astfel expresia Like “Tom*” selectează toate numele care conţin pe primele trei poziţii
caracterele “Tom”, iar expresia Like “*escu” va permite selecţia numelor terminate în “escu”.
Operatorul In precizează mulţimea de valori admise pentru un atribut. Interogarea din figura următoare
va selecta clienţii de tip SRL (a căror 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].
Funcţiile care pot fi de natură:
 Dată calendaristică : Date(), Month(), Year (), etc.
Exemple:
Date() returnează data curentă;
Month(Date()) returnează numărul lunii calendaristice curente.
Year(Date()) returnează anul curent.
 De tip text: Len() – returnează lungimea unui şir, Trim() - elimină spaţiile de la începutul şi
de la sfârşitul unui şir, Left() – returnează primele n caractere de la începutl unui şir, etc.
 Matematice şi trigonometrice: ABS() - returnează valoarea absolută a unui număr, INT() –
returnează partea intreagă dintr-o valoare numerică, ROUND() – rotunjeşte o valoare cu un
anumit număr de zecimale,SUM() – calculează suma, AVG() – calculează media, etc.
 Financiare: PV() returnează valoarea actuală a unei anuităţi plătite în rate periodice egale,
SLN() returnează valoarea amortizarea unui mijloc fix după o anumită perioadă (amortizare
liniară) etc.
 Funcţii diverse: ISNUMERIC(), ISNULL(), etc.

Parametrizarea interogărilor
Interogările de selecţie prezentate până în acest moment returnează întotdeauna înregistrările din tabelele
sursă care corespund unei anumite cereri fixe: clienţii trebuie să aibă domiciliul în Bucureşti sau Ploieşti iar
data livrării să fie anterioare datei curente (vezi exemplul de interogare de selecţie prezentat într-un paragraf
anterior). De multe ori însă, ar fi utilă o interogare al cărei criteriu de selecţie să poată fi precizat la nivel
general şi particularizat de utilizator în funcţie de necesităţile sale de informare (precizându-se concret ce
realizări ale atributului sunt căutate) chiar în momentul execuţiei 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 afişat la executarea cererii permiţând ca utilizatorul să introducă
criteriul de selecţie dorit. Parametrii pot fi utilizaţi nu doar în rândul de criterii, ci şi în formulele câmpurilor
calculate, dacă se doreşte introducerea unui termen variabil în expresii. Exemplul din figura următoare
prezintă o cerere care va solicita utilizatorului numărul comenzii ce se doreşte a fi afişată şi procentul ce va
fi folosit pentru a calcula câmpul Reducere.

Interogare cu parametri

Interogări de sintetizare a datelor


Pe lângă posibilitatea de a utiliza expresii pentru a adăuga câmpuri calculate în interogări, Access
permite utilizatorilor realizarea unor cereri prin intermediul cărora se pot aplica funcţii unor
înregistrări grupate după criterii prestabilite. Prin intermediul acestor query cu rol de sintetizare a
datelor se pot construi cu uşurinţă 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 selecţie
aducându-se în grila Query Design câmpurile
necesare şi adăugându-se eventualele câmpuri
calculate, după care se va apăsa butonul Totals
din bara de instrumente. Ca rezultat al
acestei operaţii, în grila Query Design, va fi
disponibil un nou rând intitulat Total. În mod
implicit, gruparea datelor după valorile
câmpului toate coloanele vor avea selectată
în linia total opţiunea Group By. Se va păstra opţiunea Group By în dreptul câmpurilor de grupare,
urmând ca pentru celelalte câmpuri să fie selectată din lista de selecţie funcţia dorită
Lista conţine nouă funcţii de tip agregat1 ce sunt prezentate în tabelul următor:
Access Queries 8

Funcţia Returnează Tipul de câmpuri pentru care se poate


aplica
AVG Media aritmetică Number, Date, Currency, AutoNumber
COUNT Numărul 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 Deviaţia standar a Number, Date, Currency, AutoNumber
valorilor
SUM Suma valorilor Number, Date, Currency, AutoNumber
VAR Varianţa valorilor Number, Date, Currency, AutoNumber
Pe lângă aceste funcţii mai sunt disponibile opţiunile WHERE şi EXPRESSION.
 Opţiunea Where se va utiliza dacă un câmp trebuie utilizat pentru a preciza anumite criterii de
selecţie, dar nu se doreşte efectuarea grupării după câmpul respectiv.
 Opţiunea Expression se va utiliza pentru câmpurile calculate ce returnează un singur rezultat la
nivelul grupului.
Exemple:
Interograrea din figura următoare calculează numărul de comenzi efectuate de către fiecare client în
ultimele 10 zile.

Interogare totalizatoare şi rezultatul acesteia


Se va observa alegerea câmpului CodClient pentru efectuarea grupării (deoarece acest câmp are valori
unice), a funcţiei First pentru a afişa numele clientului2 şi a opţiunii Where pentru a preciza criteriul de
selecţie (ultimele 10 zile). Trebuie remarcat că un câmp pentru care a fost selectată opţiunea Where nu
mai poate figura în rezultatele cererii.
După cum se poate vedea, câmpurile rezultate ca urmare a aplicării funcţiilor agregat poartă nume ce
includ ca prefix numele funcţiei (CountOf.., FirstOf..). Pentru a evita această situaţie se poate tasta în
linia Field numele dorit urmat de două puncte (la fel ca în cazul câmpurilor calculate).
Interogarea din figura următoare caculează valoarea totală a fiecărei comenzi prin intermediul funcţia
Sum şi, într-un câmp calculat ce utilizează funcţia IIF, determină valoarea unei eventuale reduceri

2
Dacă s-ar fi selectat Group By şi pentru câmpul NumeClient rezultatele interogării ar fi fost identice dar gruprea după cel de-al doilea
câmp ar fi fost inutilă din moment ce codurile clienţilor sunt unice.
Access Queries 9

pentru respectiva comandă (reducerea în sumă de 25% din valoarea comenzii) se acordă doar dacă
comanda depăşeşte 1.000.000 lei.

Folosirea opţiunii Expession

Interogări de analiză încrucişată


Interogările de tip tabel încrucişat (CrossTab Query) sunt extrem de utile în scopul analizei
multidimensionale a datelor permiţând obţinerea unor situaţii sintetice asemănătoare 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ă atât pe
linii cât şi pe coloane la intersecţia cărora se pot efectua calcule complexe.
Etapele ce trebuie urmate pentru realizarea unei astfel de cereri de interogare sunt următoarele3:
1. Elaborarea unei interogări de selecţie în modul Design View. Se vor alege tabelele ce conţine
datele şi se vor selecta câmpurile dorite pentru afişare şi eventualele câmpuri pentru care se vor
impune restricţii.
2. Se va selecta opţiunea CrossTab Query ce va avea ca efect imediat afişarea liniilor Total şi
Crosstab în grila interogării.

3. Se va specifica modul de agregare a datelor, respectiv funcţiile totalizatoare în linia Total.


4. În linia CrossTab se va opta pentru Row Heading în cazul câmpurile ce vor fi afişate pe liniile
tabelului, Column Heading pentru câmpul ce va fi afişat pe verticală, şi Value pentru valorile ce vor
fi afişate la intersecţia liniilor cu coloanele. Este permisă existenţa mai multor câmpuri ordonate pe
orizontală (Row Heading), dar a unui singur câmp Column Heading şi a unui singur câmp Value.
Exemplu următor prezintă modul de obţinere a unei situaţii ce afişează valoarea vânzărilor 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 interogări.
Access Queries 10

Interogare de analiză încrucişată


Rezultatul interogării “Vanzări pe localităţi”

O altă situaţie impune utilizarea unei interogări de tip Crosstab este aflarea numărului de comenzi
realizate de fiecare client în fiecare lună a anului. Pentru a extrage din valorile câmpului
DataComanda numărul lunii se utilizează funcţia Month:

Rezultatele interogării:
Access Queries 11

Figura 4. 2
După cum se poate observa, interogarea nu afişează coloanele aferente lunilor anului în care nu s-a
efectuat nici o comandă. Acest aspect conduce la inconveniente în cazul în care se doreşte elaborarea
unui raport având ca sursă cererea de interogare deoarece raportul presupune specificarea unui număr
fix de câmpuri. O soluţie pentru afişarea coloanelor chiar dacă acestea nu conţin valori este
precizarea numelor acestora în grila de proprietăţi a interogării. Pentru aceasta se va deschide
interogarea în modul de proiectare şi din meniul View se selectează opţiunea Properties,
specificându-se numele coloanelor obligatorii în rândul Column Headings al casetei Query
Properties.

Interogări tip acţiune


Pe lângă interogările pentru selecţia datelor şi cele de tip CrossTab care au fost
exemplificate în paragrafele anterioare, S.G.B.D. Access pune la dispoziţia
utilizatorilor o categorie distinctă de interogări care permit manipularea şi actualizarea
înregistrărilor.
Extrem de utile în exploatarea bazei de date acestea pot avea ca rezultat:
 Crearea de noi tabele (Make Table Query)

 Actualizarea datelor (Update Query)

 Adăugarea de noi înregistrări (Append Query)

 Ştergerea înregistrărilor (Delete Query)

Modul de elaborare a unei interogări tip acţiune este similar celui prezentat în cazul
interogărilor de selecţie, presupunând ca etapă suplimentară specificarea explicită prin
intermediul meniului Query a tipului de cerere dorit.
Access Queries 12

Modificările asupra bazei de date sunt efectuate doar în momentul execuţiei interogării
care se poate realiza prin apăsarea butonului . Este recomandată proiectarea în
prealabil a cererii ca o simplă interogare de selecţie şi verificarea rezultatelor ce vor fi
afectate deoarece nu există posibilitatea revenirii în cazul ştergerii sau modificării
eronate a înregistrărilor.

Interogări pentru crearea de noi tabele


Crearea de noi tabele pe baza înregistrărilor din tabelele deja existente
Trebuie menţionat că tabela rezultată va moşteni doar tipurile de date şi dimensiunile
câmpurilor din tabelele sursă, nu şi cheia primară sau eventualele proprietăţi la nivel
de câmp ori tabelă.
Exemplul următor ilustrează crearea unei tabele (Clienti 2) ce va conţine codurile,
numele şi telefoanele clienţilor din afara ţării:

Exemplu de interogare de tip Make Table


Există posibilitatea generării unor tabele care să conţină câmpuri ce nu există în
tabelele sursă (câmpuri calculate). Un exemplu în acest sens este prezentat în figura
următoare şi reprezintă modul de obţinere a unei tabele în care sunt evidenţiate
cantităţile comandate din fiecare produs:
Access Queries 13

Un alt aspect ce trebuie luat în considere este acela că, în cazul executării repetate a
unei astfel de interogări, sau atunci când se specifică în caseta Make Table numele
unei tabele deja existente, vechea tabelă cu acelaşi nume va fi ştearsă înaintea
generării celei noi.
Interogări pentru actualizarea datelor
Acest tip de interogări permit modificarea valorilor datelor din unul sau mai multe
câmpuri ale înregistrărilor ce satisfac restricţiile impuse de utilizator.
Pentru a realiza o interogare de tip Update este necesară selectarea în modul Design
View a câmpurilor ce vor fi actualizate şi, eventual, a celor ce fac obiectul restricţiilor,
după care se va apela din meniul Query opţiunea Update Query. Ca rezultat al acestei
operaţii î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 hotărât
amânarea livrărilor către 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ă notaţia între paranteze drepte a denumirilor de câmpuri, chiar dacă acestea
nu conţin spaţii.
Access Queries 14

Trebuie menţionat că în cadrul interogărilor Update nu sunt admise modificări asupra


câmpurilor cheie primară sau modificări ce ar putea conduce la nerespectarea
restricţiilor de integritate.
Interogări pentru adăugarea de înregistrări
Interogările pentru adăugare oferă utilizatorilor posibilitatea inserării de noi
înregistrări în tabelele pornind de la înregistrările existente.
Pentru a realiza o interogare de tip Append este necesară parcurgerea următoarelor
etape:
1. Elaborarea unei interogări de selecţie în modul Design View. Se va alege tabela ce
conţine datele şi vor fi luate în calcul doar câmpurile ce conţin valorile ce vor fi
adăugate, iar, în cazul în care se doreşte aplicarea unor criterii de selecţie a acestora,
se vor adăuga câmpurile de restricţionat.
2. Se vor tasta eventualele condiţii în linia de criterii a interogării.
3. Se va selecta opţiunea Append Query ce va conduce la afişarea casetei Append în
care se va selecta numele tabelei în care dorim adăugarea.
4. Transformarea interogării de selecţie într-o interogare de adăugare are ca efect
imediat apariţia rândului Append To în fereastra de proiectare a interogării. În acest
rând se va specifica pentru fiecare câmp din tabela ce conţine datele denumirea
câmpului corspondent din tabela unde vor fi adăugate.
Pentru exemplificare vom presupune că dorim adăugarea în tabela Clienţi 2, ce conţine
în momentul actual doar clienţii din afara ţării, a tuturor clienţilor ce nu au sediul în
Bucureşti:

Interogare pentru adăugarea de înregistrări


Observaţie: Denumirile câmpurilor din linia Append To a grilei QBE sunt completate
automat doar în cazul în care acestea coincid în tabela sursa cu cele din tabela
destinaţie.
Access Queries 15

Interogări pentru ştergerea de înregistrări


Interogările acţiune de tip Delete oferă posibilitatea eliminării mai multor înregistrări
din tabele pe baza unor criterii impuse de utilizator. Acţiunea interogărilor de ştergere
acompaniată de opţiunea 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
selectându-se câmpurile dorite şi impunându-se restricţiile necesare după care se
selecteaza opţiunea Delete.
Exemplul următor prezintă modalitatea în care se pot şterge din baza de date toate
comenzile efectuate după data de 10 octombrie de clienţii ce au codurile 2 sau 3.

Interogare de ştergere

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