Sunteți pe pagina 1din 93

Informatică Curs 12

Utilizarea S.G.B.D. MS Access în crearea și exploatarea bazelor de date III.

1. Operaţii asupra înregistrărilor dintr-o tabelă


2. Obiecte de tip interogare
Într-o tabelă Access se pot realiza următoarele operaţii:

• Adăugarea înregistrărilor;
• Ştergerea de înregistrări;
• Căutarea de înregistrări;
• Modificarea înregistrărilor;
• Ordonarea înregistrărilor;
• Filtrarea înregistrărilor;

Pentru a efectua aceste operaţii este necesar ca tabela să fie deschisă în modul DataSheet View (meniul View
comanda DataSheet).

1.1. Adăugarea înregistrărilor. Dacă tabela este deschisă imediat după creare, Access va afişa o foaie de
date vidă, iar pointerul de înregistrare va fi plasat pe prima şi unica linie, pe butonul ei de selecţie (butonul
gri din prima coloană din tabela afişată în modul DataSheet View).
Pentru a introduce date se plasează pur şi simplu cursorul pe câmp şi se introduce o valoare, în timp ce se
efectuează această operaţie, pointerul de înregistrare se transformă într-un creion, ilustrând faptul că se editează o
înregistrare. O nouă linie vidă apare dedesubtul primei linii, în locul pointerului de înregistrare figurează un asterisc
(*) indicând o nouă înregistrare.
Dacă tabela care se deschide în modul DataSheet conţine date, pentru a adăuga o nouă înregistrare trebuie
plasat cursorul pe ultima linie (al cărei pointer este un asterisc) şi se introduce noua înregistrare. Pentru plasarea
cursorului pe ultima linie se execută clic pe butonul New Record de pe bara cu instrumente sau se alege Insert,
Record sau se utilizează tasta săg. în jos.

1.2. Ştergerea de înregistrări. Pentru a şterge una sau mai multe înregistrări se selectează înregistrarea sau
înregistrările şi se acţionează tasta Delete sau butonul Delete Record de pe bara cu instrumente sau se
alege din meniul Edit opţiunea Delete. Oricare ar fi metoda aleasă, Access deschide o casetă de mesaj
care cere confirmarea ştergerii. Dacă se execută clic pe butonul Yes, înregistrările sunt şterse. Se
recomandă o atenţie deosebită la ştergerea înregistrărilor deoarece Access nu permite anularea ştergerii
înregistrării.

1.3. Căutarea unei înregistrări se realizează în acces secvenţial sau în acces direct.
Căutarea secvenţială a unei înregistrări se face utilizând setul de butoane din partea stângă a barei aflate în
partea de jos a ferestrei DataSheet: butonul Next Record, First Record, Last Record, Previous Record sau bara
de derulare verticală dacă sunt prezente mai multe înregistrări decât pot încăpea în dimensiunea verticală a ferestrei
DataSheet.
Pentru consultarea în acces direct se selectează câmpul în care se face căutarea şi se utilizează butonul Find
de pe bara cu instrumente sau se alege Edit, Find. Access deschide caseta de dialog Find in Field. în caseta de text
Find What se specifică criteriul de căutare. Butoanele de comandă Find First (găsirea primei apariţii) şi Find Next
(găsirea următoarei apariţii) sunt activate când se introduc date în caseta de text. Căutarea se poate realiza în întreaga
1
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

tabelă (AH), începând cu înregistrarea curentă până la sfârşitul tabelei (Down), de la înregistrarea curentă spre prima
înregistrare (Top) sau de la ultima înregistrare spre începutul tabelei (Up), opţiuni care se pot preciza în zona Search.
Din lista derulantă Match (potrivire) se poate selecta Whole Field (întregul câmp), Start of Field (începutul
câmpului) şi Any Part of Field (orice parte a câmpului). Pentru a indica o căutare care să ţină seama de literele mari
şi mici, se marchează caseta de validare Match Case.

1.4. Modificarea înregistrărilor. În timp, apare necesitatea actualizării datelor conţinute în baza de date.
Modificarea conţinutului unei înregistrări se realizează plasând cursorul în câmpul respectiv şi
modificând datele.
Pentru înlocuirea automată a valorilor dintr-un câmp din mai multe înregistrări se utilizează caseta de dialog Replace
in Field (o variaţiune a casetei Find in Field). Caseta Replace in Field se afişează prin comanda Edit, Replace sau
a combinaţiei de taste Ctrl + H .
Comanda va înlocui valorile din câmpurile care se potrivesc cu valorile introduse în caseta de text Find What.
înlocuirea se face cu valorile specificate în caseta de text Replace With. înlocuirea se poate face selectiv prin căutarea
fiecărei valori de înlocuit şi confirmarea înlocuirii (butoanele Field Next şi Replace) sau pentru toate înregistrările
care corespund criteriul de înlocuire (butonul Replace AH). Obs. Datele pot fi modificate şi folosind interogări
speciale.

1.5. Ordonarea înregistrărilor. Ordonarea şi filtrarea înregistrărilor sunt operaţii deosebit de importante
pentru utilizatori, dar ele vizează îndeosebi cererile informaţionale ale utilizatorilor, motiv pentru care
ele sunt realizate pentru obiectele tip Query (cereri de interogare).

1.6. Îngheţarea afişării câmpurilor. Dacă o tabelă conţine prea multe câmpuri, ele nu pot fi afişate toate în
modul DataSheet View. Pentru a vizualiza toate câmpurile se foloseşte bara de derulare orizontală sau
îngheţarea afişării câmpurilor. Pentru îngheţarea afişării câmpurilor se deschide tabela în modul
DataSheet View, se selectează coloana sau coloanele a căror afişare se va îngheţa executând clic pe
butoanele antetelor acestor coloane, apoi din meniul Format se alege opţiunea Freeze Columns
(îngheţarea coloanelor). Pentru "dezgheţarea" coloanelor "îngheţate" se alege Format, Unfreeze AH
Columns.

2. Obiecte de tip interogare


Interogarea unei baze de date înseamnă regăsirea şi extragerea informaţiilor stocate în aceasta. Pentru
realizarea interogărilor SGBD Access pune la dispoziţia utilizatorilor obiectele de tip cereri (Query). Rezultatul
cererii se prezintă sub forma unei foi de răspuns dinamic care poartă numele de DynaSet. O cerere poate avea drept
sursă de date unul sau mai multe tabele ale bazei de date sau chiar o altă cerere creată anterior.
Interogările reprezintă un instrument esenţial în lucrul cu orice sistem de gestiune a bazelor de date. Ele sunt
folosite pentru selectarea înregistrărilor, actualizarea tabelelor şi adăugarea de noi înregistrări într-un tabel.
Interogările se folosesc cel mai frecvent pentru selectarea anumitor grupuri de înregistrări care îndeplinesc anumite
condiţii. De asemenea ele pot fi folosite pentru combinarea informaţiilor din diferite tabele .
Interogările se pot crea cu ajutorul rutinei Simple Query Wizard sau prin proiectare în fereastra Query Design.
O cerere 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;

2
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

2.1. Tipuri de interogări


Access permite crearea a patru tipuri de interogări:
Interogări de tip Select pentru extragerea datelor din unul sau mai multe tabele şi de a le afişa în formă tabelară.
Interogările de tip Select nu permit actualizarea datelor selectate, ci doar vizualizarea lor. De obicei acest
tip de interogare constituie o sursă de date pentru un raport sau formular.
Interogări de tip Crosstab pentru sintetizarea datelor din unul sau mai multe tabele ca foaie de calcul
(asemănător cu foile de calcul Excel).
Interogări de tip Action pentru crearea unor noi tabele, sau pentru modificarea datelor dintr-un tabel existent.
Există următoarele categorii de interogări de acţiune:
▪ Interogări de tip Make Table care permit crearea de noi tabele prin extragerea informaţiilor din
tabelele existente în baza de date;
▪ Interogări de tip Update care permit actualizarea (modificarea) datelor din tabelele existente fără a
crea tabele noi sau înregistrări noi;
▪ Interogări de tip Append care permit adăugarea de noi înregistrări într-o tabelă existentă
▪ Interogări de tip Delete care permit ştergerea unor înregistrări dintr-o tabelă existentă funcţie de
criteriile introduse de utilizator.
Interogările de tip Parameter care folosesc aceeaşi interogare de mai multe ori cu parametrii diferiţi.
Dintre acestea cererile de selecţie sunt cele mai utilizate ele, asigurând utilizatorilor posibilitatea consultării
bazei de date..
2.2. Operaţii privind un obiect de tip interogare
Operaţiile privind obiectele de tip cerere se referă la crearea, utilizarea (activarea interogării şi afişarea
datelor) şi respectiv modificarea acestora.
Pentru exemplificarea cererilor de interogare din acest curs vom considerare o bază de date pentru gestionarea
produselor (stocurilor) dintr-un magazin, avand schema de mai jos :

3
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

a. Crearea unui obiect de tip interogare


Crearea unei cereri de selecţie se poate realiza în mod grafic (mod implicit) sau în mod SQL (prin construirea
unui bloc de cerere folosind limbajul declarativ Structured Query Language).
Vom prezenta ambele moduri de construire a interogărilor bazei de date
Fiind un obiect Access, inceperea creării interogării se realizează în fereastra Database prin activarea fişei
Query (specificând astfel tipul de obiect Access pe care dorim să îl creăm) şi apoi apăsarea butonului New, sau
selectând din meniul Insert opţiunea Query.
Access oferă mai multe modalităţi de creare a cererilor. Aceste modalităţi sunt enunţate în caseta de dialog
New Query, afişată ca urmare a iniţierii operaţiei de creare a cererii:
- modul grafic de proiectare, Design View (proiectarea interogărilor utilizând interfaţa grafică este
cunoscută sub numele Query By Example);
- utilizarea asistentului pentru cereri simple, Simple Query Wizard;
- utilizarea asistentului pentru cereri încrucişate, Crossîab Query Wizard;
- utilizarea asistentului pentru căutarea înregistrărilor duplicat, Find Duplicates Query Wizard;
- utilizarea asistentului pentru căutarea înregistrărilor care nu au corespondent în două tabele, Find
Unmatched Query Wizard.

4
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

Pentru crearea unei cereri de selecţie se alege opţiunea Design View din caseta New Query sau a opţiunii
Create query in design View , aşa cum se observă în figura următoare:

.
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 precizării sursei de date pentru construirea cererii.

5
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

Sursa de date pentru o cerere (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 fereastra de proiectare a cererii. După a fost precizată sursa de date se va închide fereastra Show Table prin
acţionarea butonului Close. La nevoie se poate redeschide fereastra folosind butonul Show Table din bara de
instrumente sau opţiunea Show Table din meniul Query.
După selectarea tabelelor fereastra principală Access va fi:
Sursa de
Date

Grila Query
Design

Fereastra Select Query (de mai sus) este împărţită în două zone:
a. Zona superioară, în care se vizualizează tabelele/interogările sursă de date precum şi relaţiile definite între
acestea;
b. Grila Query Design structurată astfel:
6
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

• 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: permit precizarea mai multor criterii de selecţie în cazul expresiilor Access utilizând
operatorul OR.
Odată specificată sursa de date, definirea interogării de selecţie presupune parcurgerea următorilor paşi:
1. Selectarea tipului de interogare se poate face din meniul principal, opţiunea Query:

sau de la butonul Query type de pe bara de butoane:

7
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

Obs. Butonul permite punerea în execuţie a interogării.

2. Precizarea câmpurilor (atributelor) ale căror realizări urmează să le returneze cererea. Numele acestor atribute
se vor preciza în grila Query Design în rândul Field utilizând una din următoarele modalităţi:
• Selectarea atributului din cadrul listei Field Name ce poate fi deschisă prin acţionarea 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 aparţinând unei tabele se va proceda în unul din
următoarele 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 aparţinând tabelei sursă: trageţi cu mouse-ul asteriscul în prima coloană Field. Chiar
dacă în grila de proiectare este completată doar prima coloană Field la execuţie interogarea va returna
realizările tuturor atributelor;

8
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

Caseta Query Properties


• Utilizarea proprietăţii Output All Fields: Se va deschide caseta Query Properties utilizând
butonul

Properties din bara de instrumente sau executând dublu click într-o zonă 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 câmpurilor din tabela sursă, dar, în momentul executării cererii, DynaSet-u\ va cuprinde realizările tuturor
atributelor.
În mod implicit în DynaSet, antetul coloanelor este reprezentat de numele atributului, cu excepţia cazului în
care la crearea tabelei aţi precizat o altă etichetă prin intermediul proprietăţii Caption. Dacă doriţi afişarea în
DynaSet a unei noi etichete pentru un atribut plasaţi mouse-ul în linia Field înaintea numelui atributului, tastaţi
eticheta dorită urmată de caracterul ":".

3. Se precizează criteriul de selecţie.


În mod implicit se returnează realizările tuturor tuplurilor pentru atributele specificate. Prin introducerea unei
expresii Access valide în rândul Criteria (eventual şi rândul OR). Acest criteriu permite selectarea doar a anumitor
înregistrări care îndeplinesc anumite condiţii Introducerea expresiei Access se face prin tastare sau se construieşte
prin intermediul generatorului de expresii (Expression Builder) a cărui fereastră se deschide selectând opţiunea
Build a meniului contextual pe care îl activaţi printr-un clic dreapta de mouse în rândul Field.

9
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

Criteriile de selectare se pot construi cu ajutorul constructorului de expresii care poate fi activat fie prin
intermediul butonului “Build” de pe bara de butoane:

fie din meniul local activat cu butonul dreapta a

mouseului :
Se va pune în execuţie astfel Expression Builder:
10
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

4. Se precizează, dacă este necesar, câmpul/câmpurile după care se doreşte o eventuală sortare şi sensul
acestei a în linia Sort.

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
stocului pentru produsul faina. Sursa de date a cererii este reprezentată de trei tabele ale bazei de date: Furnizori,
Produse şi respectiv Stocuri.

11
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

In privinţa cererilor de selecţie care au ca sursă mai multe tabele trebuie precizat că, în mod implicit, Access
utilizează operaţia de echicompunere, 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 Stocuri, fără a se specifica vreun criteriu,
în lista rezultatelor nu vor figura decât produsele pentru care există ceva în stoc. Dacă se doreşte realizarea unei
interogări de tip Outer Join (folosind operaţia de compunere externă) se va efectua dublu click asupra liniei de
legătură dintre tabele şi, în caseta Join Properties (ca în figura de mai jos ) se poate preciza selectarea tuturor
înregistrărilor din una dintre tabele, indiferent dacă au sau nu corespondent în cealaltă tabelă.
Pentru realizarea operaţiei de compunere pe baza unei relaţii de inegalitate (<, >, o) a câmpurilor de legătură
dintre tabele se poate folosi limbajul SQL. O cerere 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.

Caseta Join Properties


5. Executarea interogării de acţiune se poate realiza în unul din următoarele moduri:

• Utilizând butonul Query View (primul în bara de instrumente);

• Utilizând butonul Run din bara de instrumente;


• Utilizând opţiunea Datasheet din meniul View;
• Utilizând opţiunea Run din meniul Query.
In Figura de mai jos este redat rezultatul executării cererii anterior proiectate.

12
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

Rezultatul unei interogari de selectie


Revenirea în modul Design se realizează prin activarea butonului Design View bara de instrumente sau
selectând din meniul View opţiunea Design View.
Salvarea interogării proiectate se poate realiza prin opţiunea Save din meniul File sau închizând fereastra
Select Query, în ambele situaţii utilizatorul fiind invitat să tasteze numele interogării create (în mod implicit este
atribuit numele Query n, unde n indică numărul cererii).
6. Modificarea unei cereri
Pentru a modifica o cerere, aceasta trebuie deschisă în modul Design. Modificările se pot realiza inserând
noi coloane sau ştergând coloane deja definite. Inserarea unei noi coloane se efectuează selectând coloana înaintea
căreia dorim să introducem noua coloană şi alegând opţiunea Colum n din meniul Insert.
Ştergerea unei coloane din grila de proiectare se realizează selectând coloana şi acţionând tasta Delete sau
butonul Cut din bara de instrumente sau executând opţiunea Delete Column din meniul Edit.
Modificarea unei cereri poate presupune şi extinderea sursei de date (utilizând fereastra Show Table). De
asemenea modificarea cererii poate implica şi precizarea unor formate de afişare asociate unor coloane pentru ca
datele returnate să fie uşor de parcurs (pentru precizarea unui anumit format de afişare se va plasa cursorul
mouseului în coloana dorită şi se va executa clic dreapta, selectându-se din meniul contextual opţiunea
Properties. Va fi afişată caseta Field Properties (figura alăturată) în care se va putea specifica numărul de
zecimale dorit sau un format de afişare pentru câmpul respectiv.

13
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

Pe lângă modurile de vizualizare Design şi Datasheet Access permite utilizatorilor vizualizarea şi modificarea
codului SQL al interogărilor. Pentru aceasta se va apela din meniul View opţiunea SQL View. Fraza SQL ce stă la
baza cererii exemplificate anterior este prezentată mai jos:

Modificarea interogărilor în modul SQL 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 camp calculat intr-o interogare

14
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

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ă.

Expresii şi operatori pentru interogări

Elementele unei expresii Access sunt:


- Operatori',
- 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), A (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.
• De concatenare a şirurilor de caractere: +, &.
• Operatori de identificare
Operatorii de identificare , ! şi . , sunt specific programului Access. Operatorul ! se mai numeşte şi operatorul
bang. Ei sunt folosiţi în următoarele situaţii:
Combinarea denumirilor claselor de obiecte şi a denumirilor obiectelor pentru a selecta un anumit obiect sau
a proprietăţii unui obiect. Exemplu:
Forms!Note
Deosebirea denumirilor obiectelor de denumirea proprietăţilor; exemplu:
Textbox1.Fontsize=10
Identificarea anumitor câmpuri din tabele : studenti!marca
Caracterul ! este folosit pentru separarea referinţelor de obiecte. Sintaxa:
Clasa_obiect!Denumire_obiect.
Caracterul . separă obiectele şi proprietăţile sau metodele acestora, sintaxa fiind:
Clasa_Obiect!Obiect.Proprietate sau Clasa_Obiect!Obiect.Metoda

15
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

Alţi operatori
Operator Descriere Exemplu
Folosit cu valoarea logic ă Null pentru a stabili dac ă o Is Null
Is
valoare este Null sau nu Is Not Null
Determină dac ă un şir de caractere începe cu un Like “EXE*”
Like
anumit prefix Like “FILE????”
Determină dac ă o valoare de tip şir apare într-o list ă
In X In (“ABC”,”ggg”,”FILE”)
de valori
Determină dac ă o valoare numeric ă sau o dat ă
Between calendaristică se g ăseşte într-un anumit interval de Between 1 and 6
valori

Expresiile Access utilizând operatorul Like permit specificarea unor criterii de selecţie prin căutarea unui şir întrun
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).

Fig 4.23.
Astfel expresia Like "Tom*" selectează toate numele care conţin pe primele trei poziţii caracterele "Tom",
iar expresia Like u*escu" va permite selecţia numelor terminate în "escu".
Operatorul In precizează mulţimea de valori admise pentru un atribut. Interogarea din Figura 4. 22 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".

16
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

Fig 4.24
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].
Prin intermediul identificatorilor se pot prelua valori pentru definirea criteriilor de pe formulare create anterior.
Exemplul din Figura 4. 23 prezintă o interogare ce va afişa comenzile şi data comenzilor pentru un produs a cărui
nume a fost selectat într-o caseta' de tip LisîBox (numită ListaProdu.se) pe un formular numit Selecţie.
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, TrimQ - 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.

17
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

Expresii pot fi utilizate într-o interogare de selecţie fie drept criterii de selecţie fie pentru a calcula anumiţi
indicatori. Expresia poate fi tastată în rândul Field al unei coloane (exemplul din Figura 4. 20) sau poate fi
construită cu ajutorul generatorului de expresii (a cărui fereastră se activează efectuând clic dreapta în linia Field şi
selectând din mediul contextual opţiunea Build). Exemplul din Figura 4. 24 prezintă utilizarea generatorului de
expresii pentru a calcula valoarea fiecărui produs de pe o comandă.

Fereastra Expresion Builder cu un alt exemplu


Parametrizarea interogărilor
Interogările de selecţie prezentate până în acest moment returnează întotdeauna tuplurile 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 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.
Practic în aceste interogări se doreşte ca expresia (criteriul) din interogare să fie variabil de la o execuţie la
alta se poate crea o interogare cu parametru. În acest caz criteriile sunt introduse în caseta de dialog Enter Parameter
Value. Se deschide interogarea în mod design view, şi în câmpul criteria se introduce un text între paranteze drepte.

18
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

Acest text va fi afişat în caseta de dialog Enter Parameter Value în momentul în care se pune în execuţie
interogarea, iar utilizatorul poate introduce criteriul de selecţie în mod dinamic, la execuţie.

Traducerea SQL va fi:


SELECT 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 ((profile.cod_prof)=[Introduceţi
cod profil:]));

Interogări de sintetizare a datelor (gruparea 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

19
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

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 care conduce la respectiv. 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 agregat ce sunt prezentate în tabelul următor:
Funcţia Returneaza 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 Varianta 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.

Interogări de tip Crosstab


Interogările Crosstab sunt interogări sintetice cu ajutorul cărora se poate determina cu exactitate modul în
care sunt afişate pe ecran datele sintetice. Interogările Crosstab afişează datele sintetice în forma tradiţională a foilor
de calcul tabelar asemănătoare cu tabelele pivot din Excel.
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ătoarele :

20
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

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. Din meniul Query 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. In 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: O interogare care va avea ca rezultat un tabel sintetic cu rezultatele la examene ale unei specializări
ar putea avea următoarea structură:

Pentru a crea o interogare se selectează câmpurile dorite din unul sau mai multe tabele, apoi se specifică unul
dintre câmpuri ca fiind de tipul „Column Heading”, unul sau mai multe câmpuri, de tipul „Row Heading” şi unul de
tip „value”.
Câmpul de tip „value” va apare la intersecţia unei linii cu o coloană; pentru acest câmp se specifică o funcţie
agregat ca de exemplu Sum, Count, etc din linia Total. Celelalte câmpuri, care apar în tabelul sintetic vor avea clauza
„Where” în linia Total şi vor fi folosite la specificarea unor criterii din interogare.

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.
21
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

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.
Modificările asupra bazei de date sunt efectuate doar în momentul execuţiei interogării care se poate realiza
prin apăsarea butonului din bara de instrumente Query Design sau prin deschiderea interogării în fereastra
Database .
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 de tip Make Table
La crearea acestor tipuri de interogări, după includerea tabelelor sursă şi alegerea tipului de interogare „Make
table”, Access va solicita utilizatorului numele tabelului de date care se va crea:

Noul tabel va prelua din tabelele existente toate câmpurile 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);

22
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

Interogări de tip Update


Aceste tipuri de interogări permit actalizarea datelor dintr-un tabel sau mai multe tabele. După alegerea tipului
de interogare “Update Query” şi specificarea câmpurilor care se vor actualiza, în linia Update To se va introduce
expresia care va actualiza câmpul respectiv, eventual cu specificarea unui criteriu, ca în exemplul următor:

Î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 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. O situaţie ce ar putea genera
erori survine atunci când, în cazul câmpurilor de tip text, valoarea rezultată depăşeşte lungimea câmpului din
tabelă, în acest caz valoarea va fi trunchiată din partea dreaptă.

Interogări de tip Delete


Interogările de tip delete permit ştergerea înregistrărilor dintr-o tabelă de date, eventual cu specificarea unui
criteriu. Se vor selecta tabelele sursă pentru interogare, apoi se va selecta tabela din care se fac ştergerile astfel: se
poziţionează mouse-ul pe caracterul * de la tabelul din care se vor face ştergerile, apoi se trage acest caracter până în
prima coloană; restul câmpurilor care se vor introduce vor fi utilizate doar la specificarea unui criteriu de ştergere.
Se observă că pe linia Delete a apărut clauza From în dreptul tabelului din care se fac ştergerile, iar în dreptul
celorlalte câmpuri a apărut clauza Where, care specifică o condiţie.

23
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

Î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"));

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. Din meniul Query 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.
24
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

Interogari in Access

Din fereastra Database putem alege dintre cele 2 optiuni de a crea interogari asupra bazei de date:

Create query in Design view


Create query by using wizard

Vom lucra cu fiecare dintre cele doua optiuni.

Create query by using wizard


Asa cum “spune” si optiunea vom folosi un Expertul pentru a crea interogarile de care avem nevoie.
La alegerea optiunii se va deschide o fereastra in care avem posibilitatea sa alegem din fiecare tabele ce campuri
dorim a fi afisate in urma interogarii. Presupunem ca vom dori sa aflam numele agentilor, clientilor, si al
produselor comandate:
- din fereastra Simple Query Wizard vom alege pe rand fiecare tabela in parte

- apoi aleg campul/rile dorite din acea tabela


25
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

Dup ace veti termina de ales campurile din tabele in urma finalizarii operatiei de interogare va rezulta o un
table in care vor fi afisate valorile campurilor selectate.
In acest mod nu se pot realize decat interogari foarte simple asupra tabelelor.
Cu ajutorul acestei optiuni se pot face si cateva calcule foarte simple ca SUM, AVG, MAX,MIN si COUNT
dupa anumite campuri numerice.
Alegeti optiunea Summary din fereastra Simple Query Wizard inainte de a finalize interogarea si apoi pe
Summary Options:

La pasul urmator alegeti operatia dorita:

26
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

Create query in design view


La alegerea acestei optiuni se va deschide o fereastra de unde puteti alege tabelele pentru care veti efectua
interogarile dumneavoastra:

Sa incercam sa realizam exemplele de mai inainte: sa alegem numele agentilor, al clientilor si al articolelor care
au fost comandate.
Pentru aceasta vom alege in campurile:
- Fields - campul corespunzator din fiecare tabela in parte;
- Table – tabela corespunzatoare;
- Sort – dupa caz ascending sau descending pentru un anumit camp;
- Show- stabileste aparitia sau nu a unui camp in tabela rezultata
- Criteria – aici se va scrie un eventual criteriu de selectie

27
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

Pentru a rulaun query trebuie sa apasati pe Run query:

Rezultatul va fi o tabela cu campurile selectate.


Pentru a va intoarce in modul design pentru a realize o alta interogare sau a o modifica pe cea realizata apasati
View:

In campul Field putem de asemenea sa folosim si campuri calculate. De exemplu vrem sa vedem clientii de la
ce agenti si ce produse au comandat impreuna cu valoarea lor finala care se obtine din pretul produsului *
cantitatea comandata:

Rezultatul va fi acesta:

28
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

Daca analizam expresia: valoare finala: [articole].[art pret]*[comenzi].[cant] se poate deduce ca:
- valoare finala reprezinta eticheta sau numele campului calculate care va apare in tabela rezultata;
- fiecare camp este apelat prin sitanxa: <nume tabela> . <nume camp>. Folosinde-se operatorul “.” se arata
astfel apartenenta campului la acea tabela. Parantezele patrate sunt folosite pentru a grupa numele
compuse asa cum avem in exemplul nostrum in cazul campului: art pret ce semnifica articol pret. Accessul
va pune implicit “[ ]” pentru fiecare nume de table si camp folosit. In final inmultirea dintre pretul unui
articol care se afla in tabela articole si cantitatea comadata, camp care se afla in tabela comenzi este:
[articole].[art pret] * [comenzi].[cant]

Pentru a realiza diferite criterii de selecţie se poate utiliza şi generatorul de expresii (Expression Builder) a cărui
fereastră se deschide selectând opţiunea Build a meniului pe care îl activaţi printr-un click dreapta de mouse în
rândul Criteria.

De exemplu vrem sa selectăm doar agentii care au primit comision. Asta înseamnă ca valoarea din comision să fie
mai mare decât 0. Interogarea va fi creată cu ajutorul generatorului de expresii.
Se face click dreapta sub câmpul comision in rândul Criteria si se allege Build:

29
Conf.univ.dr.habil. Marian Cristescu
Informatică Curs 12

30
Conf.univ.dr.habil. Marian Cristescu
Microsoft Access Curs 12

La sfârşit se apasă butonul OK. Rulaţi interogarea.

Alegeţi acum toţi clienţii care sunt din oraşul Bacău sau Iaşi. Pentru a nu scrie în rânduri
separate ale câmpului Criteria numele fiecărui oraş, se va scrie într-un singur rand Bacău şi
Iaşi folosindu-se operatorul OR.

Utilizarea operatorilor
Pentru a construi expresii pe rândul Criteria se utilizează operatorii:
• aritmetici: adunare (+); scădere (–), înmulţire (*), împărţire (/), ridicare la putere (^),
împărţirea a două numere cu returnarea unui întreg (\), împărţirea a două numere cu
returnarea restului împărţirii (MOD).
• de comparaţie: <, >, =, <=, >=. 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.
• asociaţi operatorilor de comparare:
– IS NULL, IS NOT NULL – o valoare NULL (câmp necompletat) nu este nici TRUE nici FALSE.
Înregistrările care au valoarea NULL în câmpurile selectate nu apar ca rezultate ale interogării;
– LIKE – se foloseşte împreună cu caracterele de înlocuire „* ” şi „?” pentru a stabili dacă o valoare
începe cu unul sau mai multe caractere; caracterul „* ” poate înlocui orice număr de caractere;
caracterul „? ” înlocuieşte numai un caracter;
– IN – stabileşte dacă o valoare este cuprinsă într-o listă;
– BETWEEN – stabileşte dacă o valoare aparţine unui interval specificat.
• logici:
– NOT – negaţia;
– AND – pentru conjuncţia a două valori;
– OR – pentru disjuncţia a două valori;
– XOR – pentru disjuncţia exclusivă a două valori; – Eqv – verifică echivalenţa a două valori.
• de concatenare a şirurilor de caractere: + şi &.
• constante: constantele utilizate în construirea expresiilor Access pot fi de natură –
numerică (ex: 1200,5,0);
– text (“123”, “Toma Ion”, ’str. Viilor 15’);
– dată calendaristică (ex: #12.31.01# ceea ce indică data de 31 decembrie 2001).
• Funcţiile: pot fi de natură:
– Dată calendaristică : Date(), Month(), Year (), etc.
Exemple:
1. Date() – returnează data curentă;
2. Month(Date()) returnează numărul lunii calendaristice curente.
3. Year(Date()) returnează anul curent.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

– De tip text:
1. Len() – returnează lungimea unui şir;
2. Trim() – elimină spaţiile de la începutul şi de la sfârşitul unui şir; 3. Left() –
returnează primele n caractere de la începutul unui şir, etc.
– Matematice şi trigonometrice:
1. ABS() – returnează valoarea absolută a unui număr;
2. INT() – returnează partea întreagă dintr-o valoare numerică, ROUND() – rotunjeşte o valoare
cu un anumit număr de zecimale;
3. SUM() – calculează suma; 4. AVG() – calculează media, etc.
– Financiare:
1. PV() returnează valoarea actuală a unei unităţi plătite în rate periodice egale;
2. SLN() returnează valoarea amortizării unui mijloc fix după o anumită perioadă
(amortizare
liniară) etc.
– Funcţii diverse: ISNUMERIC(), ISNULL(), etc

Reguli de formare a expresiilor introduse pe câmpul Criteria:


– datele de tip Text se tastează ca atare, iar Access adaugă automat ghilimele;
– pentru datele de tip Number şi Currency se tastează cifrele şi eventual simbolul zecimal, fără
simbolul monetar sau separatorul de mii;
– referirile la numele de câmpuri trebuie incluse între paranteze drepte, altfel se adaugă automat
ghilimele, considerându-se text;
– formatul internaţional de dată calendaristică este mm/dd/yy. Access adaugă automat delimitatorul
# ; Exerciţii:
Creaţi trei interogări în care să folosiţi la alegere unul din operatorii descrişi mai
sus.
Exerciţii:
1. Realizarea unei interogări pentru obţinerea unei liste cu clienţii a căror numele începe
cu A.
Sub câmpul [cl nume] pe rândul Criteria se scrie expresia: LIKE “ A* ”
2. Realizarea unei interogări pentru obţinerea unei liste cu clienţii a căror numele NU
începe cu A.
Sub câmpul [cl nume] pe rândul Criteria se scrie expresia: NOT LIKE “ A* ”
3. Realizarea unei interogări pentru obţinerea unei liste cu clienţii care nu au reducere (nu
aţi scris nimic în acest cîmp nici măcar valoare 0). Sub câmpul reducere pe rândul
Criteria se scrie expresia: IS NULL
4. Realizarea unei interogări pentru obţinerea unei liste cu clienţii din oraşul Bacău care
nu au reducere sau dacă au să fie mai mare ca 10 şi a căror nume începe cu litera A.
Pe rândul Criteria sub câmpul [cl oraş] se scrie “Bacau”, iar sub câmpul reducere se scrie expresia:
IS NULL OR [reducere] > 2 şi sub câmpul [cl nume] se scrie Like “A* ”.
5. Interogarea pentru obţinerea listei clienţilor cărora li s-a acordat o reducere între valorile
10 şi 15.
Sub câmpul reducere în rândul Criteria se scrie expresia: >="2" And <="5". Pentru date
calendaristice se va folosi expresia: >= # 01.12.2004 # And <= # 31.12.2004 # ce reprezinta
perioada cuprinsă între 1 decembrie 2005 şi 31 decembrie 2004.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

6. Pentru a obţine o listă a clienţilor cu [cl Id] dintre numerele 1, 2,3, se va realiza
interogarea:
Sub câmpul [cl Id] se scrie expresia: IN (1 ; 2 ; 3).
7. Pentru a obţine o listă cu clienţii cu reducere intre valorile 5 şi 10 se scrie: Between 1
And 3.
8. Mergeţi în structura tabelei Clienţi şi adăugaţi câmpul: data de tipul Date/Time şi daţi
apoi valori acestui camp. Aflaţi apoi clienţii care au făcut comenzi între perioada
01.01.2006 şi 31.12.2007.
Sub câmpul data pe rândul Criteria veţi scrie: Between #01.01.2006# And #31.12.2007#.

Revenire asupra câmpurilor calculate din interogările de selecţie. se introduce în celula


Field a grilei de interogare un nume de coloană (dacă nu se specifică se atribuie numele
implicit Expr l, Expr2, ...), urmat de semnul “ : ” şi formula de calcul, astfel:
stoc_final: [stoc_initial] + [Cant_intrata] - [Cant_iesita]
(cu precizările: au fost folosite doar numele de câmpuri şi nu s-a mai scris în faţa lor şi numele tabelei
urmată de semnul „ .” sau semnul „ ! ”).

• câmpuri calculate pot fi create şi pentru text (concatenarea câmpurilor): Numepren: [Nume] & “ ”
& [ Prenume]

• câmpurile calculate pot fi sortate, li se pot aplica criterii de selecţie sau se pot totaliza.
• în câmpurile calculate se poate utiliza funcţia IIF cu următoarea sintaxă:
IIF ( <expresie>, valoare 1, valoare2)
unde:
– <expresie> – este o expresie a cărei valoare de adevăr este evaluată pentru fiecare
înregistrare;
– valoare 1 – este valoarea returnată dacă expresie este adevărată; – valoare2 – este
valoarea returnată dacă expresie este falsă.

Exemple pentru fiecare:


1. Calculaţi TVA-ul pentru fiecare articol în parte:

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Rezultatul este:

2. Să realizăm o interogare în care să calculam pentru fiecare agent in parte, şi fiecărui client
căruia s-a furnizat un articol, valoarea articolului furnizat (din pret * cantitate), TVA-ul,
valoarea finală (din valoare + TVA) şi apoi să verificăm cât anume a plătit clientul scăzând
din suma finala (câmpul din comenzi) valoarea finală calculată.

Rezultatul interogării este unul de forma:

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

După cum se vede numele de coloană sunt corespunzătoare cu identificatorii scrişi pentru fiecare
expresie calculată:
Valoare, TVA, valoare finala şi Suma platita. Se poate observa cala Suma platita clinetul este pe minus,
adică mai are de plată respectiva suma din valoarea finală.

3. Afişaţi pentru fiecare comandanda in parte următorul text: comanda a fost realizata intre:
agentul: [numele agentului din baza de date] furnizează clientului: [numele clientului din
baza de date] articolul: [numele articolului din baza de date]

4. Afişaţi pentru fiecare comandă în parte, după ce calculaţi cât mai are de dat clientul, dacă
are restanţă sau a plătit în plus.
Pentru a rezolva această interogare vă veţi folosi de interogarea cu numărul doi de mai sus.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Rezultatul este următorul:

Expresia IIF se scrie în rândul FIELD al grilei de interogare.

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 (în cazul în care mai multe coloane au selectată în linia Total opţiunea
Group By, gruparea se va face întâi după primul câmp din stânga, apoi după al doilea, ş.a.m.d.).
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ă.

S-a realizat o interogare realizându-se o grupare după fiecare agent, ce produs şi cantitatea
comandată.
TEMA
Realizaţi o interogare de grupare după fiecare produs şi cantitatea comandată.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Putem de asemenea să realizăm sumă de valoare produs comandată pentru fiecare articol:

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Interogări de acţiune
Interogările de acţiune 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)

Interogările de acţiune se realizează similar interogărilor de selecţie de până acuma,


specificându-se în plus prin meniul Query tipul de cerere dorit.

1. Interogări pentru crearea de noi tabele (Make Table Query)


Crearea unei tabele noi în urma interogării tabelelor deja existente, presupune realizarea
următorilor paşi:

• Elaborarea unei interogări de selecţie în modul Design View (vor fi luate în calcul doar
câmpurile ce dorim să facă parte din structura noii tabele, iar, în cazul în care sunt necesare
şi alte câmpuri pentru aplicarea unor criterii, acestea nu vor fi marcate în linia Show a grilei
de interogare.
• Apelarea din meniul Query a opţiunii Make Table Query şi specificarea în casete Make
Table a numelui noii tabele (se poate opta pentru crearea noii tabele într-o altă bază de date
bifând opţiunea Another Database şi specificând numele fişierului).
• Lansarea în execuţie a interogării.

Exemplu:
Crearea unei tabele ce va conţine numele clienţilor şi pentru fiecare client cantitatea totală de
articole comandate. Vom face o grupare după numele clienţilor, iar ca expresie calculată vom
face sumă după cantităţile de produse comandate. După ce am ales cîmpurile care vor forma
noua tabelă, vom alege din meniul Query opţiunea Make-Table Query. După care vom lansa
în execuţie interogarea.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Am ales câmpurile care vor ap ărea în noua


tabelă.

Din meniul Query alegem Make-Table


query.

Va ap ărea o fereastr ă unde vi se cere un


nume pentru tabela
nou creată.

După ce veţi scrie numele tabelei veţi rula interogarea apăsând butonul: . Apăsaţi Yes
pentru ferestrele de atenţionare care vor apărea.
Apoi mergeţi în fereastra Database, pe tabul Tables şi verificaţi dacă a fost creată noua tabelă.
Daţi Open să vedeţi rezultatul interogării.

Exemplul 2:
PDF created with pdfFactory Pro trial version www.pdffactory.com
Microsoft Access Curs 12

Crearea unei tabele care să conţină aceleaşi câmpuri ca tabela comenzi însă, câmpul suma
finală va fi redenumit în valoare finală care va fi calculat după formula cant * pret, iar
comenzile vor fi doar pentru clienţii din oraşul Bacău.

De asemenea dvs. puteţi să bifaţi caseta de pe rândul Show, şi astfel va apare şi oraşul unde au
avut loc comezile.
Apoi alegeţi opţiunea Make- Table Query şi ca titlu pentru tabel puteţi scrie „comenzi dupa
localitate”.

Rulaţi interogarea şi vedeţi tabela nou opţinută.

2. Interogări pentru actualizarea datelor (Update Query).


Acest tip de înregistrare permite modificarea valorilor pentru înregistrările care satisfac
condiţiile impuse la crearea interogării.

Exemplu:
Pentru clienţii din oraşul Bacau vom pune o reducere de valoarea 10.
Pentru a realiza o interogare de tip Update, se vor realiza următorii paşi:

a) În modul
Design View se vor
selecta câmpurile
sunt: pentru care aplicăm
modificarea:
oraş cu criteriul
reducere, pentru care vom Câmpurile folosite

Nume client, client „bacau”, şi face modificarea.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

b) Din meniul Query se va selecta opţiunea Update Query:

c) În linia Update To se va completa formula de calcul sau valoarea dorită pentru


actualizare:

Mergeţi apoi şi verificaţi în tabela clienţi daca valorile dorite au fost modificate.
Î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.

3. Interogări pentru adăugarea de înregistrări (Append Query).


Interogările pentru adăugare oferă utilizatorilor posibilitatea inserării de noi înregistrări în tabel
pornind de la înregistrările existente.
Pentru exemplificare vom presupune că dorim adăugarea în tabela comenzi după localitate (ce
conţine în momentul actual doar comenzile pentru clienţii din Bacău) a comenzilor pentru
clienţii din Iaşi (existenţi în tabela comenzi).
Pentru a realiza o interogare de tip Append este necesară parcurgerea următoarelor etape:
PDF created with pdfFactory Pro trial version www.pdffactory.com
Microsoft Access Curs 12

a) Elaborarea unei interogări de selecţie în modul Design View. Se va alege tabela/tabelele 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.

b) Din meniul Query sau din bara de unelte de sub meniu, se va selecta opţiunea Append
Query ce va conduce la afişarea ferestrei Append în care se va selecta numele tabelei în
care dorim adăugarea.

c) Transformarea interogării de selecţie într-o interogare de adăugare are ca efect 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 corespondent din
tabela unde vor fi adăugate.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Rulaţi interogarea şi vedeţi dacă au fost adăugate înregistrări în tabela comenzi după localitate.

4. Interogări pentru ştergerea de înregistrări (Delete Query).

Interogările de ştergere deînregistrări - Delete oferă posibilitatea eliminării mai multor


înregistrări din tabele pe baza unor criterii impuse de utilizator. Atenţie însă, ştergerea de
înregistrări poate fi realizată doar atunci când nu sunt încălcate reguli de integritate ale bazei
de date. Prin urmare nu putem şterge înregistrări dintr-o tabelă (părinte) dacă de acele
înregistrări depinde înregistrările din altă tabelă (copil).
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 apelează din meniul Query
sau folosindu-se shortcut-ul respectiv, opţiunea Delete.
Exemplul următor prezintă modalitatea în care se pot şterge din baza de date toate comenzile
efectuate de clienţii ce au codurile 2 sau 3.

Se selectează câmpurile după care aplicăm criteriul dorit. Apoi se allege opţiunea Delete Query.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Interogarea va arăta astfel:

Rulaţi apoi interogarea.

4. Folosirea SQL în Access


Limbajul SQL este limbajul comun pentru gestiunea bazelor de date client-server.
Principalul său avantaj este faptul că este un limbaj standardizat, putându-se folosi un set comun
de instrucţiuni în toate sistemele de gestiune a bazelor de date compatibile SQL.
SQL este un limbaj de aplicaţie pentru bazele de date relaţionale, nu un limbaj de
programare.
Sintaxa SQL
Comenzile SQL se impart în şase categorii:
1. Data Query Language (DQL) cuprinde comenzi care returnează date din tabele şi
determină modul în care sunt prezentate rezultatele. Comanda SELECT este
principala comandă din această categorie.
2. Data Manipulation Language (DML) conţine comenzile INSERT şi DELETE care
permit adăugare sau ştergere de rânduri întregi precum şi comanda UPDATE care
modifică datele din coloanele specificate de rânduri.
3. Transaction Processing Language (TPL) cuprinde comanzile:
BEGIN
TRANS[ACTION], COMMIT TRANS[ACTION|WORK] şi ROLLBACK
TRANS[ACTION|WORK], care grupează mai multe operaţii DML. Dacă operaţia
DML a unei tranzacţii nu reuşeşte, operaţiile DML precedente sunt anulate
(derulate înapoi) .
4. Data Definition Language (DDL) include instrucţiunea CREATE TABLE care
defineşte structura tabelelor. Comenzile DDL se pot folosi pentru modificarea

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

tabelelor precum şi pentru crearea şi ştergerea indexurilor. Pentru crearea


indexurilor se foloseşte comanda CREATE INDEX.
5. Cursor Control Language (CCL) permite selectarea pentru procesare a unui singur
rând din setul de rezultate al interogării..
6. Data Control Language (DCL) efectuează funcţii administrative cum ar fi
acordarea şi ridicarea privilegiilor de folosire a bazei de date (GRANT şi
REVOKE).

Cuvintele cheie se clasifică în:


Comenzi (ex. SELECT)
Calificative (ex. WHERE)
Clauze (ex. ORDER BY)
Operatori (Operatorii cunoscuţi sau JOIN)
Funcţii pentru sintetizarea grupurilor (ex. MIN()) Alte
cuvinte cheie

4.1. Scrierea interogărilor de selectare cu SQL

Se foloseşte o instrucţiune SELECT care returnează un tabel de interogare (denumit set de


rezultate). Sintaxa:

SELECT [ALL|DISTINCT|DISTINCTROW] [TOP n [PERCENT]] lista_selectie


FROM lista_tabele
[WHERE conditie]
[ORDER BY criteriu [ASC|DESC]] unde:
lista_selectie determină câmpurile care se vor include în rezultatul interogării (sunt cele
din linia Fields în mod Design, validate cu caseta de validare show).
Calificativele opţionale ALL, DISTINCT şi DISTINCTROW specifică dacă sunt permise
rânduri cu acelaşi conţinut sau nu.
Modificatorul opţional TOP n [PERCENT] limitează rezultatele interogării la primele n
rânduri sau la n procente din totalul rezultatelor interogării.
FROM TABLE lista_tabele specifică sursa de tabele a interogării.
WHERE condiţie filtrează rezultatele interogării

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

ORDER BY criteriu specifică ordinea de sortare a unui obiect din sursa de date a
interogării.
Exemplu:
SELECT nume, marca
FROM studenţi
WHERE dataN LIKE “*/*/1980”
ORDER BY nume;

În SQL toate instrucţiunile se încheie cu caracterul “;”.

Folosirea semnelor de punctuaţie şi a simbolurilor din SQL

Virgula se foloseşte pentru separarea membrilor unei liste


Parantezele drepte se folosesc atunci când denumirea unui obiect include caractere
albe
Dacă sunt mai multe tabele sursă se foloseşte caracterul punct ca delimitator (ex.
Studenti.marca)
Ghilimelele “ se folosesc pentru valori de tip text
Caracterele % şi * permit substituirea cu un singur caracter sau cu mai multe.
Caracterul # se foloseşte în operatorul LIKE pentru reprezentarea unei singure cifre,
sau pentru delimitarea valorilor de tip Date/Time din expresii

4.2. Crearea unei interogări cu instrucţiuni SQL în Access.

1. Se deschide baza de date dorită (de ex. Studenţi), apoi o interogare în Design View
2. Se închide Show Table fără a selecta un tabel.
3. Se deschide SQL View.
4. Se scrie instrucţiunea (SELECT de ex.)

4.3. Folosirea funcţiilor agregate din SQL.

Aceste funcţii se folosesc pentru a calcula totalul, media sau alte date statistice pentru
grupurile de înregistrări cu o valoare de atribut comună (se va adăuga clauza GROUP BY). Se
poate limita şi mai mult rezultatul clauzei GROUP BY folosind calificativul opţional HAVING.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Sintaxa:
SELECT [ALL|DISTINCT|DISTINCTROW]
Functie_agregat(camp) AS nume_alias
[, lista]
FROM nume_tabele
[WHERE condiţie]
GROUP BY criteriu_grupare
[HAVING criteriu_agregat]
[ORDER BY criteriu_sortare]

unde câmpul folosit ca parametru într-o funcţie 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 obţine ca rezultat media pe discipline a unei specializări (CE).

4.4.Crearea uniunilor cu SQL.

Se utilizează structura JOIN ON care specifică tabelul care trebuie unit şi relaţia dintre
câmpuri.
Sintaxa:
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 ]
[WHERE conditie] [ORDER BY criteriu] unde: nume_tabel {INNER|LEFT|RIGHT}
JOIN tabel_legatura specific[ denumirea tabelului cuplat cu celelalte tabele. Fiecare tabel care
participă într-o uniune trebuie introdus înaintea clauzei JOIN. INNER defineşte o uniune internă,
LEFT, RIGHT definesc uniuni externe.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

ON criteriu_legatura defineşte cele două câmpuri care trebuie unite şi relaţia dintre ele.

Exemplu: Testaţi efectul instrucţiunii:

SELECT nume, studenti.marca, nota_fin, cod_disc


FROM studenti INNER JOIN [note] ON studenti.marca=note.marca
WHERE (studenti.cod_spec="CE") and (note.cod_disc=1407)
ORDER BY studenti.nume;

4.5. Creare interogări de acţiune cu SQL

4.5.1. Interogări Update Sintaxa:

UPDATE tabel {INNER|LEFT|RIGHT} JOIN tabel_legatura


ON criteriu_legatura
[ nume_tabel {INNER|LEFT|RIGHT} JOIN tabel_legatura
ON criteriu_legatura ]
SET camp=expresie [, camp=expresie]
[WHERE conditie]

4.5.2. Interogări Make table

SELECT lista_câmpuri
INTO tabel_nou
FROM tabel {INNER|LEFT|RIGHT} JOIN tabel_legatura
ON criteriu_legatura
[ nume_tabel {INNER|LEFT|RIGHT} JOIN tabel_legatura
ON criteriu_legatura ]
[WHERE conditie]

4.5.3. Interogări de tip Append

INSERT INTO table_destinaţie

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

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 ]
[WHERE conditie_adaugare]
[ORDER BY criteriu]

4.5.4. Interogări de tip Delete

DELETE FROM tabel


[WHERE conditie_stergere]

Interogări 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 câmp

Interogarea bazelor de date


O interogare a bazei de date (Query) este o cerere către baza de date de a obţine date ce satisfac
anumite criterii. Operaţia de interogare produce o tabelă cu datele cerute, care se va numi în
continuare tabelă rezultat. Instrucţiunea SQL cu care se interoghează baza de date este SELECT.
In Access se crează un formular grafic corespunzător instrucţiunii SELECT cu o aplicaţie vrăjitor.
O interogare este un obiect al bazei de date. Obiectele de acest tip se vor numi Select Query. Un
asemenea obiect poate fi examinat în două vederi:
▪ Design View, care este fereastra de proiectare, ▪
Datsheet View care afişază tabela rezultat.
Rezultatul unei interogări este o tabelă cu date.
Menţionăm că există şi alte tipuri de interogări cu care se modifică tabelele bazei de date. Aceste
tipuri de interogări vor fi prezentate într-o lucrare ulterioară.

Selectarea coloanelor unei tabele


Cea mai simplă interogare a unei baze de date este selectarea unor coloane dintr-o tabelă. Acestă
interogare corespunde instrucţiunii SELECT următoare

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

SELECT nume_coloana_1, nume_coloana_2, …, nume_coloana_k


FROM nume_tabela;

unde nume_coloana_i este numele unei coloane din tabelă. Când selectăm coloane din mai multe
tabele, forma generală a numelor coloanelor unei tabele este nume_tabela.nume_coloana
deoarece numele coloanelor din diverse tabele pot coincide. Atributul nume_coloana al obiectului
nume_tabela este accesat cu operatorul punct.
Dacă vrem să selectăm toate coloanele tabelei, instrucţiunea SELECT are forma

SELECT *
FROM nume_tabela;

In exemplele următoare vom utiliza tabela PROIECT_ANGAJAT de mai jos. Tabela conţine
angajaţii ce lucrează la diverse proiecte ale unei intreprinderi, cu salariul orar, SAL_ORA şi
numărul de ore prestate la proiect, ORE. Cheia primară a tabelei este formată din câmpurile
ID_PRJ şi ID_ANG. Câmpurile NUME_ANGAJAT şi DPT_ANG sunt de tip text, celelalte de tip
numeric.

PROIECT_ANGAJAT

ID_PRJ ID_ANG NUME_ANGAJAT DPT_ANG SAL_ORA ORE

Proiectarea tabelei este cea din Figura 1.

Figura 1. Proiectarea tabelei PROIECT_ANGAJAT. Tabela


cu date este cea din Figura 2.

Figura 2. Tabela cu date PROIECT_ANGAJAT.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

In intreprindere există trei departamente, Informatica, Support, Documentare. Numele lor se va


introduce cu o casetă combinată (Combo Box).
Vom exemplifica crearea unui formular corespunzător unei instrucţiuni SELECT pentru selectarea
câmpurilor ID_ANG, NUME_ANGAJAT, DPT_ANG şi SAL_ORA.
Formularul corespunzător instrucţiuni SELECT de mai sus se crează astfel:
1. se afişază fereastra Database din Figura 3, în care se selectează în partea stângă opţiunea
Queries,
2. clic pe opţiunea Create query by using wizard din partea dreaptă şi se afişază caseta aplicaţiei
Simple QueryWizard din Figura 4; se poate selecta aceeaşi opţiune dintr-o casetă afişată cu clic
pe meniul Insert Query, sau cu clic pe butonul New al barei de instrumente a ferestrei
Database,

Figura 3. Fereastra Database cu opţiunea Queries selectată.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 4. Pasul I. Selectarea coloanelor ce vor fi afişate.


3. la pasul I se selectează coloanele ce vor apărea în interogare. Caseta cu listă Tables / Queries
conţine toate tabelele bazei de date; se selectează tabela dorită din lista Tables / Queries şi în
lista Available Field se afişază coloanele tabelei, ca în Figura 5. Se mută în lista Selected
Fields coloanele ce vor apărea în formular; mutarea se face cu butoanele şi .
Butonul mută câmpul selectat, butonul mută toate câmpurile. Butoane şi
transferă câmpurile în sens invers. Rezultatul pasului I este arătat în Figura 5,

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 5. Pasul I. Coloanele selectate ce vor fi afişate. 4.


clic pe butonul Next care afişază caseta din Figura 6,

Figura 6. Pasul II. Alegerea tipului interogării.


5. la pasul II se alege tipul interogării Detail (shows every field of every record); cu această
opţiune se afişază fiecare câmp din fiecare linie a tabelei; clic pe butonul Next ce afişază caseta
din Figura 7,

Figura 7. Pasul III. Alegerea titlului interogării.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

6. la pasul III se alege titlul interogării; se poate trece la execuţia cererii prin selectarea opţiunii
Open the query to view information, sau se poate modifica proiectarea ei prin selectarea
opţiunii Modify the query design. Pentru execuţia interogării clic pe butonul Finish şi se
afişază tabela rezultat din Figura 8.

Figura 8. Rezultatul interogării unei tabele.


Aplicaţia Access generează o instrucţiune SELECT pe baza formularului proiectat. Această
instrucţiune se poate afişa cu clic pe opţiunea SQL View a unuia din meniurile contextuale ale
formularului sau a meniului View din Tabelul 1 şi Tabelul 3. Instrucţiunea SQL pentru interogarea
proiectată este arătată în Figura 9.

Figura 9. Instrucţiunea SELECT corespunzătoare formularului proiectat anterior.

Selectare liniilor unei tabele ce satisfac anumite criterii


Selectarea coloanelor liniilor unei tabele ce satisfac anumite criterii se face cu instrucţiunea
SELECT cu clauza WHERE care conţine criteriile de selecţie. Instrucţiunea are forma

SELECT nume_coloana_1, nume_coloana_2, …, nume_coloana_k


FROM nume_tabela
WHERE conditie
ORDER BY nume_coloana_1 [ASC | DESC] [, nume_coloana_2 [ASC | DESC] …];

Condiţia din clauza WHERE este o expresie booleană ce are ca argumente nume_coloana_1,
nume_coloana_2, …, nume_coloana_k. O linie a tabelei este selectată când condiţia din clauza
WHERE are valoarea adevărat.
Dacă vrem să selectăm toate coloanele liniilor unei tabele ce îndeplinesc o condiţie, înstrucţiunea
SELECT are forma

SELECT *

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

FROM nume_tabela
WHERE conditie
ORDER BY nume_coloana_1 [ASC | DESC] [, nume_coloana_2 [ASC | DESC] …];

Access permite să creăm formulare grafice corespunzătoare acestei instrucţiuni. Elementele


acestor formulare sunt traduse de Access într-o instrucţiune SELECT care este executată pentru a
obţine tabela rezultat.
Reamintim că forma generală a nume_coloana este nume_tabela.nume_coloana
Atributul nume_coloana al obiectului nume_tabela este accesat cu operatorul punct. Această formă
generală se utilizează atunci când selectăm coloane din mai multe tabele, după cum se va vedea în
capitolele următoare, deoarece anumite coloane din diverse tabele pot avea aceleaşi nume şi doar
forma generală a nume_coloana le poate distinge.
Access permite ca nume_tabela şi nume_coloana să conţină şi spaţii, în acest caz ele sunt incluse
între paranteze drepte, [ şi ] şi forma generală a nume_coloana este
[nume_tabela].[nume_coloana]
In cazul instrucţiunii SELECT, când se selectează date dintr-o singură tabelă, în numele coloanei
se poate omite numele tabelei.

Crearea unui formular de interogare în modul Design View


Fie din nou tabela PROIECT_ANGAJAT repetată mai jos

PROIECT_ANGAJAT

ID_PRJ ID_ANG NUME_ANGAJAT DPT_ANG SAL_ORA ORE

Vom exemplifica crearea unui formular corespunzând instrucţiunii

SELECT ID_ANG, NUME_ANGAJAT, DPT_ANG, SAL_ORA


FROM PROIECT_ANGAJAT
WHERE NUME_DEPARTAMENT = ‘Informatica’;

Crearea formularului corespunzător acestei instrucţiuni SELECT se face în următorii paşi:


1. se afişază fereastra Database; în partea stângă, se selectează opţiunea Queries; în partea dreaptă
se afişază opţiunile existente, Create query by using wizard şi Create query in Design view
şi interogările (Queries) existente, vezi Figura 10,

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 10. Fereastra Database cu opţiunea Queries selectată.


2. clic pe opţiunea Create query in Design View care afişază caseta Show Table din Figura 11
şi fereastra de proiectare a unei interogări din Figura 12. Cele două ferestre se pot afişa şi în
alte feluri
▪ cu clic pe butonul Design din bara de instrumente a casetei Database,
▪ un clic pe butonul New al barei de instrumente a casetei Database sau cu clic pe meniul
Insert Query afişază caseta de dialog New Query din Figura 13; un clic pe opţiunea
Design View afişază caseta Show Table din Figura 11 şi fereastra de proiectare din Figura
12,
▪ butonul Show Table, , şi comanda Query Show Table afişază caseta Show Table din
Figura 11, cu tabelele bazei de date utilizate în interogare.

Figura 11. Caseta Show Table.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 12. Fereastra de proiectare a unei interogări.

Figura 13. Caseta de dialog New Query.


3. secţiunea Tables a casetei Show Tables din Figura 11 afişază toate tabelele din baza de date;
se selectează tabela dorită, în cazul nostru tabela PROIECT_ANGAJAT; clic pe butonul Add
şi apoi pe butonul Close; în acest moment tabela se afişază în partea de sus a formularului
Select Query ca în Figura 14, sub forma unei casete tip listă cu coloanele tabelei. Primul
element din listă este *; el corespunde selectării tuturor coloanelor tabelei. In partea de jos se
introduc clauzele corespunzătoare instrucţiunii SELECT: coloanele ce vor fi selectate în linia
Field, numele tabelei din clauza FROM în linia Table, condiţiile de selectare din clauza
WHERE în liniile Criteria şi or şi ordonarea liniilor selectate din clauza ORDER BY în linia
Sort.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 14. Formularul Select Query.


Pentru a introduce clauzele ce vor interveni în interogare se procedează astfel:
1. se completează celulele liniei Field cu numele coloanelor tabelei ce trebuie selectate (clauza
SELECT); pentru a completa o celulă a liniei Field cu numele unei coloane din tabelă (un
atribut), se poate proceda în două feluri:
▪ clic pe o celulă a liniei Field din Figura 14 (ea va fi o coloană din tabela rezultat), şi se
afişază o listă cu coloanele tabelei ca în Figura 15; clic pe coloana dorită, (elementul din
listă); dacă am selectat mai multe tabele, lista conţine coloanele tuturor tabelelor selectate,
sub forma nume_tabela.nume_coloana; primul element din lista coloanelor unei tabele are
forma nume_tabela*, în cazul nostru PROIECT_ANGAJAT*; dacă vrem să selectăm toate
coloanele tabelei respective, clic pe acest element;
▪ un alt mod de a completa o celulă a liniei Field cu o coloană a tabelei este de a selecta
coloana dorită din caseta cu numele tabelei afişată deasupra formularului, în cazul nostru
PROIECT_ANGAJAT; se trage coloana selectată cu butonul stâng al mousului apăsat
deasupra unei celule a liniei Field,

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 15. Completarea câmpurilor, tabelei, criteriilor şi ordonării datelor.


2. linia Table din formular se completează automat cu numele tabelei,
3. pentru a introduce modul de sortare al liniilor (clauza ORDER BY), clic pe celula
corespunzătoare a liniei Sort; se afişază lista din Figura 16, din care se alege opţiunea dorită,

Figura 16. Alegerea modului de sortare a liniilor tabelei rezultat.


4. în linia Show se marchează coloanele ce vor fi vizibile, ca în Figura 17,
5. în linia Criteria se introduc condiţiile de selectare pentru fiecare coloană din clauza WHERE;
pentru fiecare coloană putem avea o condiţie compusă, formată din două condiţii legate prin
operatorul or; în acest caz prima condiţie se introduce pe linia Criteria, a doua pe linia or;
după cum se va vedea mai jos, condiţiile se pot introduce direct sau se pot crea cu aplicaţia
Expression Builder,
6. se completează toate coloanele dorite şi se obţine formularul din Figura 17.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 17. Formularul completat a unei interogări.


Pentru a salva formularul creat se utilizează opţiunile Save şi Save As ale meniului File sau clic
pe butonul de închidere a ferestrei formularului.
Pentru a şterge o coloană din interogare se selectează coloana şi clic pe meniul Edit Delete sau se
apasă tasta Delete.
Butonul Run, , al barei de instrumente sau comanda Query Run produc execuţia cererii.
Pentru exemplul de mai sus tabela rezultat este cea din Figura 18.

Figura 18. Tabela rezultat a cererii din Figura 17.


In partea de jos a tabelei rezultat există un cursor pentru navigare printre liniile selectate.
Instrucţiunea SELECT generată de Access din formularul proiectat se poate afişa cu clic pe
opţiunea SQL View a unuia din meniurile contextuale ale formularului sau a meniului View din
Tabelul 1 şi Tabelul 3 sau cu clic pe opţiunea SQL View din lista View, vezi Figura 20.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 19. Instrucţiunea SELECT generată din formular.

Meniurile unei interogări


Orice formular de interogare poate fi afişat în două moduri (în două vederi):
▪ modul Proiectare (Design View),
▪ modul Formular (Datasheet View) în care se poate examina tabela rezultat.
Fiecărei vederi îi corespund meniuri, bare de instrumente şi meniuri contextuale diferite.
Comutarea între cele două vederi se poate face în multe moduri. Un clic pe butonul View din
stânga barei de meniu afişază lista View din Figura 20 cu opţiunile de comutare a vederilor.

Figura 20. Lista View cu opţiunile de comutare a vederilor.

Meniurile unei interogări in modul Design View


Meniul View şi meniul contextual al formularului în vederea Design sunt arătate în Tabelul 1.
Opţiunile lor permit comutarea între cele două vederi, Design şi Datasheet. Alte opţiuni ale acestor
meniuri vor fi prezentate ulterior.

a)meniul View b) meniul contextual al formularului


Tabelul 1. Meniurile formularului în modul Design View.
Bara de meniuri şi barele de instrumente în vederea Design sunt arătate în Figura 21.

Figura 21. Barele de meniuri şi de instrumente Design View.


Meniul Query are opţiuni pentru crearea formularului de proiectare dorit. Butonul Query Type,

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

, al barei de meniu în vederea Design, afişază lista Query Type cu aceste opţiuni, vezi Figura
22.

a) meniul Query b) lista Query Type


Figura 22. Meniul Query şi lista Query Type cu opţiunile de creare a unui formular de interogare.
Semnificaţia acestor opţiuni este cea din Tabelul 2.

Opţiune Instrucţiunea SQL


SELECT
SELECT
CREATE TABLE
UPDATE
INSERT
DELETE
Tabelul 2. Opţiunile de creare a unui formular de interogare.
Exerciţiu. Se va deschide prima interogare, proiectată cu aplicaţia vrăjitor, în modul Design şi se
va compara formularul generat de vrăjitor cu cel proiectat pentru a doua interogare.
Se vor compara apoi cele două instrucţiuni SELECT generate de Access în cazul celor două
interogări.

Meniurile unei interogări în modul Datasheet View


Barele de meniuri şi de instrumente ale vederii Datasheet sunt arătate în Figura 23.

Figura 23. Barele de meniuri şi de instrumente Datasheet View.


Meniul View şi meniul contextual al formularului în vederea Datasheet sunt arătate în Tabelul 3.
Opţiunile Design View, Datasheet View şi SQL View ale acestor meniuri permit trecerea în
modul Proiectare (Design), Formular (Datasheet), respectiv afişază instrucţiunea SQL generată de
Access pe baza formularului de proiectare. Alte opţiuni permit sortarea datelor tabelei rezultat.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Microsoft Access Curs 12

a) meniul View b) meniul contextual al formularului


Tabelul 3. Meniurile formularului în modul Datasheet View.
Pentru a afişa tabela rezultat se procedează în unul din următoarele moduri
▪ se trece în modul Datasheet View cu clic pe opţiunea Datasheet View din unul din meniurile
afişate în Tabelul 1, vezi şi Figura 20,
▪ se trece în vederea Design şi clic pe butonul Run, al barei de instrumente sau pe meniul
Query Run.

Sortarea şi filtrarea liniilor tabelei rezultat


Este posibilă sortarea şi filtrarea liniilor tabelei rezultat aşa cum s-a arătat într-o lucrare anterioară.
Pentru aceasta tabela se afişază în modul Datasheet View.
Sortarea liniilor tabelei rezultat se face astfel:
1. se selectează o coloană după care se va face sortarea,
2. sortarea liniilor după elementele coloanei selectate crescător / descrescător se realizează cu
butoanele Sort Ascending, , şi Sort Descending, , ale barei de instrumente sau opţiunile
Sort Ascending şi Sort Descending ale meniului Records Sort.
Liniile tabelei se pot filtra, pentru a afişa doar acele linii ce satisfac un criteriu.
Filtrarea prin selectarea valorilor se face astfel:
1. se găseşte într-o coloană o instanţă a valorii ce trebuie să apară în rezultatul filtrării,
2. se selectează toată celula sau se plasează cursorul la începutul celulei,
3. clic pe butonul al barei de instrumente.
Pentru a indepărta filtrul creat clic pe butonul al barei de instrumente.
Pentru a selecta linii ce încep cu acelaşi caracter, se selectează acest prim caracter într-o celulă şi
se procedează ca mai sus.
Pentru a selecta liniile ce conţin un şir de caractere, se selectează acest subşir într-o celulă şi se
procedează ca mai sus.
Ca exemplu, pentru a sorta câmpul ID_ANG al tabelei rezultat a interogării precedente în ordine
descrescătoare se selectează o celulă cu clic şi clic pe butonul . Rezultatul este cel din Figura 24.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 24. Tabela rezultat a cererii din Figura 17 cu câmpul ID_ANG sortat în ordine
descrecătoare.

Condiţii compuse
In următorul exemplu vom selecta angajaţii de la departamentele Suport şi Documentare din tabela
PROIECT_ANGAJAT cu instrucţiunea SELECT de mai jos.

SELECT ID_ANG, NUME_ANGAJAT, DPT_ANG, SAL_ORA


FROM PROIECT_ANGAJAT
WHERE DPT_ANG = ‘Documentare’ OR DPT_ANG = ‘Suport’;

Condiţia din clauza WHERE se completează în celulele DPT_ANG din liniile Criteria şi or.
Formularul corespunzătoare acestei interogări este cel din Figura 25.

Figura 25. Forma pentru selectarea angajaţilor departamentelor Documentare şi Suport.


Instrucţiunea SELECT generată de Access din formularul creat mai sus este cea din Figura 26

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 26. Instrucţiunea SELECT corespunzătoare formei din Figura 25. Tabela
rezultat este cea din Figura 27.

Figura 27. Tabela rezultat pentru forma din Figura 25.


Clauza WHERE a instrucţiunii SELECT conţine o condiţie care este o expresie booleană.
Expresiile booleene sunt constituite din expresii relaţionale separate de operatorii booleeni AND, OR
şi NOT. In cazul cel mai simplu, o expresie booleană este constituită dintr-o singură expresie
relaţională.
Expresiile relaţionale sunt constituite din expresii aritmetice separate de operatorii relaţionali <,
<=, >, >= , = şi <> şi operatorul Between … And … care testează dacă o valoare este cuprinsă într-
un interval.
In unele cazuri avem nevoie să comparăm un şir de caractere cu elementele unei coloane care sunt
şiruri de caractere, ca în interogarea din Figura 25. Sirurile de caractere sunt scrise între ghilimele.
O operaţie ce se poate efectua asupra şirurilor este concatenarea. Operatorul de concatenare este
&. Pentru a testa dacă un şir de caractere corespunde unui şablon se utilizează operatorul LIKE,
vezi o lucrare anterioară.
Expresiile aritmetice au ca termeni numere, atributul numeric respectiv (coloana numerică din
tabelă) şi operatorii aritmetici +, -, * şi / pentru numere reale şi +, -, \ şi Mod pentru numere întregi.
Priorităţile operatorilor sunt cele cunoscute. Termenii expresiilor aritmetice pot fi grupaţi în
paranteze rotunde.
Exemplu. Să testăm dacă atributul SAL_ORA al tabelei PROIECT_ANGAJAT din exemplele
anterioare este cuprins între valorile 40 şi 60. Condiţia se poate scrie în mai multe feluri:
>= 40 AND <= 60
>=30+10 AND <= 60
>=(30+10) AND <= 60
BETWEEN 40 AND 60
NOT < 40 AND NOT > 60
In a doua expresie am folosit expresia 30+10 în loc de 40 pentru a sublinia că în expresiile
relaţionale putem utiliza expresii aritmetice oricât de complicate. In expresia a treia am utilizat
paranteze rotunde. Ultima condiţie este arătată în Figura 28.
Expresia booleană ce reprezintă condiţia din clauza WHERE se poate scrie direct în câmpurile
Criteria şi or sau se poate crea cu aplicaţia Expression Builder, ca într-o lucrare anterioară.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Microsoft Access Curs 12

Implicit, în fereastra de proiectare din Figura 28 există o singură linie or. Se pot adăuga mai multe
linii or cu un clic pe linia or existentă şi apoi clic pe meniul Insert Rows. Liniile or se pot şterge
cu un clic pe linie şi apoi clic pe meniul Edit Delete Rows.

Figura 28. Exemplu de condiţie compusă.


Uneori este dificil de a scrie condiţia, deoarece spaţiul din celulă este prea mic. Se poate afişa o
fereastră în care să se introducă expresia cu clic pe celulă, apoi se apasă tastele Shift + F2 şi se
afişază fereastra din Figura 29.

Figura 29. Afişarea unei ferestre pentru introducerea unei expresii.


Pentru a lansa aplicaţia Expression Builder se procedează astfel:
1. se afişază meniul contextual al coloanei formularului din Figura 30, cu un clic cu butonul drept
pe coloana pentru care vrem să creăm condiţia;
2. clic pe opţiunea Build ce afişază caseta Expression Builder din Figura 31, vezi şi o lucrare
anterioară, cu care se crează expresia dorită.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 30. Meniu contextual al unei coloane a formularului.


O altă posibilitate de a lansa aplicaţia Expression Builder este cu clic pe butonul Build, , al
barei de instrumente, vezi Figura 21.
In partea din stânga jos a casetei Expression Builder sunt afişate pe lângă funcţii, constante,
operatori şi tabelele, formularele şi alte obiecte din baza de date, ale căror elemente se pot utiliza
în expresii.

Figura 31. Caseta Expression Builder.


Opţiunea Table Names din meniul din Figura 30 afişază sau ascunde linia Table din formular ce
afişază numele tabelelor.

Crearea de interogări cu parametri


După cum s-a văzut mai sus, linia Criteria este utilizată pentru introducerea de condiţii pentru
selectarea liniilor tabelelor. Este posibil de a introduce parametri în criteriul de selectare a liniilor,
de exemplu elementele unei coloane să fie cuprinse între două valori. Putem crea interogări ce

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

afişază casete de dialog pentru introducerea parametrilor interogării. Acest lucru se face prin
introducerea condiţiei în câmpul Criteria, iar parametri sunt înlocuiţi cu mesaje scrise între
paranteze drepte, [ şi ]. La efectuarea interogării, Access afişază casete de dialog cu mesajele ce
au fost introduse între parantezele drepte.
Vom exemplifica acest lucru prin crearea unei interogări a tabelei PROIECT_ANGAJAT în care
vrem să selectăm angajaţii cu salarii orare între două limite, care să fie parametrii interogării, pe
care îi vom introduce în casete de dialog afişate de Access. Definiţia tabelei PROIECT_ANGAJAT
este repetată mai jos.

PROIECT_ANGAJAT

ID_PRJ ID_ANG NUME_ANGAJAT DPT_ANG SAL_ORA ORE

1. creăm un formular de interogare cu aplicaţia Create Query by using Wizard, în care selectăm
câmpurile ID_ANG, NUME_ANGAJAT, DPT_ANG şi SAL_ORA,
2. deschidem fromularul creat în vederea Query Design, ca în Figura 32,
3. în câmpul Criteria al coloanei COST_ORA introducem condiţia
Between [cost minim ora] And [cost maxim ora], ca în Figura 32.

Figura 32. Exemplu de condiţie cu parametri.


La executarea interogării se afişază casetele de dialog din Tabelul 4

Tabelul 4. Mesaje pentru introducerea parametrilor. Rezultatul


interogării este tabela din Figura 33.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 33. Rezultatul interogării cu parametri.


Putem controla ordinea în care sunt afişaţi parametrii în felul următor:
1. se afişază caseta Query Parameters din Figura 34 cu clic pe meniul Query Parameters,
2. în această caseta se introduce câte un mesaj pe rând, în ordinea în care dorim să fie afişate;
textul trebuie să fie exact cel din fereastra de proiectare. In coloana din dreapta se introduce
tipul parametrului, din caseta de dialog afişată cu clic pe celula respectivă.

Figura 34. Caseta Query Parameters.

Ca un alt exemplu, vom selecta toţi angajaţii din tabela PROIECT_ANGAJAT al căror nume
conţine un anumit şir de caractere. Procedura este următoarea:
1. creăm un formular de interogare cu aplicaţia Create Query by using Wizard, în care selectăm
câmpul NUME_ANGAJAT,
2. deschidem fromularul creat în vederea Query Design şi introducem condiţia ca în Figura 35.
Condiţia pentru testarea unui şir de caractere are forma
LIKE expresie regulată
După cum s-a arătat într-o lucrare anterioară, în cazul nostru expresia regulată are forma “*sir*”.
Acest şablon se construieşte ca “*” & sir & “*”, unde sir este şirul de caractere ce va fi introdus
într-o casetă de dialog. Pentru acesta condiţia va fi scrisă
LIKE “*” & [Litere in nume] & “*”
vezi Figura 35. Reamintim că operatorul & concatenează şiruri de caractere.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 35. Exemplu de condiţie cu parametri.


La execuţie se va afişa o casetă de dialog cu mesajul Litere in nume, în care vom introduce şirul
de caractere dorit.
Presupunem că vrem să selectăm angajaţii ale căror nume conţin şirul “esc”. La execuţia interogării
se afişază caseta de dialog din Figura 36.

Figura 36. Caseta de mesaj pentru introducerea parametrului. Rezultatul


interogării este tabela din Figura 37.

Figura 37. Rezultatul interogării cu parametri.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Reuniunea tabelelor
Una dintre operaţiile ce se pot aplica asupra tabelelor rezultat este reuniunea acestor tabele. Pentru
reuniune, liniile tabelelor trebuie să aibe aceleaşi coloane. Reuniunea tabelelor se face cu
instrucţiunea SQL UNION cu forma

SELECT coloane
FROM nume_tabela_1
UNION
SELECT coloane
FROM nume_tabela_2;

Pentru exemplificare, vom considera tabela SITUATIE_FINANCIARA de mai jos, ce conţine


datele financiare pe anii trecuţi ale unei intreprinderi

SITUATIE_FINANCIARA

AN VENITURI CHELTUIELI PROFIT_BRUT IMPOZIT PROFIT_NET

şi tabela DATE_CONTABILE cu datele financiare pe anul curent

DATE_CONTABILE

AN VENITURI CHELTUIELI PROFIT_BRUT IMPOZIT PROFIT_NET

Vom crea o tabelă ce reuneşte liniile celor două tabele în felul următor:
1. se afişază fereastra Database; în partea stângă, se selectează opţiunea Queries; în partea dreaptă
se afişază opţiunile existente, Create query by using wizard şi Create query in Design view
şi interogările (Queries) existente,
2. clic pe opţiunea Create query in Design View care afişază caseta Show Table; clic pe butonul
Close,
3. clic pe meniul Query SQL Specific, şi în submeniul afişat, clic pe opţiunea Union, vezi Figura
38,

Figura 38. Meniul Query. Opţiunea Union.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

4. se afişază caseta de text din Figura 39, în care se introduce instrucţiunea UNION din Figura
39,

Figura 39. Instrucţiunea UNION.


5. clic pe butonul Run, , al barei de instrumente şi se obţine tabela rezultat.

Utilizarea funcţiilor de agregare SQL în interogări


Instrucţiunea SELECT poate utiliza câteva funcţii standard SQL pentru a face suma valorilor unei
coloane, calculul valorii medii, minime sau maxime a unei coloane, etc. Aceste funcţii sunt cele
din Tabelul 5.

Funcţia Semnificaţia
AVG Valoarea medie
MIN Valoarea minimă
MAX Valoarea maximă
SUM Suma valorilor din coloană
VAR Dispersia
STD Abaterea medie pătratică
Tabelul 5. Funcţii SQL pentru agregarea datelor în instrucţiunea SELECT.
Cea mai simplă interogare a unei baze de date cu utilizarea acestor funcţii este aplicarea lor asupra
unor coloane dintr-o tabelă. Acestă interogare corespunde instrucţiunii SELECT următoare

SELECT funcţie(nume_coloana_1), funcţie(nume_coloana_2), …, funcţie(nume_coloana_k)


FROM nume_tabela;

In acest caz nu s-a precizat numele coloanelor din tabela rezultat a interogării, şi aplicaţia atribuie
acestor coloane nişte nume standard. Instrucţiunea SELECT are şi o formă în care putem atribui
coloanelor tabelei rezultat ce nume dorim. Această formă este

SELECT funcţie(nume_coloana_1) AS nume_1, funcţie(nume_coloana_2) AS nume_2, …,


funcţie(nume_coloana_k) AS nume_k
FROM nume_tabela;

Vom exemplifica utilizarea acestor funcţii la tabela VANZARI, proiectată în Figura 40. Tabela cu
date este cea din Figura 41.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 40. Proiectarea tabelei VANZARI.

Figura 41. Tabela VANZARI.


Vom calcula suma vânzărilor pe fiecare an. Procedura este următoarea:
1. se afişază fereastra de proiectare a interogării din Figura 42, după cum s-a arătat mai înainte,

Figura 42. Fereastra de proiectarea interogării.


2. se selectează prima celulă din linia Fields cu un clic,
3. clic pe butonul Build, , al barei de instrumente, care lansează aplicaţia Expression
Builder din Figura 43; se selectează în fereastra stângă opţiunea Functions Built-In
Functions, în fereastra din mijloc se selectează SQL Aggregate, iar în fereastra din dreapta
funcţia Sum; clic pe butonul Paste şi în fereastra superioară apare expresia Sum(“expr”) pentru
care trebuie să completăm argumentul expr,

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 43. Fereastra aplicaţiei Expression Builder.


4. selectăm argumentul “expr” al funcţiei Sum cu un clic, ca în Figura 44,

Figura 44. Selectarea argumentului unei expresii.


5. selectăm apoi tabela VANZARI în fereastra din stânga cu clic pe opţiunea Tables
VANZARI; în acest moment în fereastra din mijloc apar câmpurile tabelei; clic pe câmpul
VANZARI_2001 şi se generează expresia din fereastra superioară din Figura 45; numele
coloanei este introdus ca [nume_tabela].[nume_coloana], adică
[VANZARI]![VANZARI_2001],

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 45. Expresia pentru însumarea unei coloane.


6. se repetă paşii de mai sus şi pentru celelalte coloane; linia Field este cea din Figura 46,

Figura 46. Fereastra de proiectare.


Expresia din prima celulă a liniei Field este cea din Figura 47. Numele coloanei atribuit de aplicaţia
Expression Builder este Expr1.

Figura 47. Expresia primei coloane a interogării.


7. clic pe butonul Run , , al barei de instrumente şi tabela rezultat este cea din Figura 48.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 48. Tabela rezulatat a interogării.


După cum se observă, coloanele tabelei rezultat au numele Expr1, …, Expr4, atribuite de aplicaţia
Expression Builder. Acest caz corespunde primei forme a instrucţiunii SELECT prezentate în acest
paragraf

SELECT funcţie(nume_coloana_1), funcţie(nume_coloana_2), …, funcţie(nume_coloana_k)


FROM nume_tabela;

Modificăm Expr1 în celula liniei Field în AN 2001, ca în Figura 49 şi la fel numele celorlalte
coloane pentru a fi mai semnificative. Tabela rezultat este cea din Figura 50.

Figura 49. Modificarea numelui coloanei tabelei rezultat.

Figura 50. Tabela rezultat a interogării.


Acest caz corespunde celei dea doua forme a instrucţiunii SELECT

SELECT funcţie(nume_coloana_1) AS nume_1, funcţie(nume_coloana_2) AS nume_2, …,


funcţie(nume_coloana_k) AS nume_k
FROM nume_tabela;

In final, instrucţiunea SELECT este cea din Figura 51.

Figura 51. Instrucţiunea SELECT a interogării.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Reprezentarea datelor agregate


Este posibil să afişăm rezultatul unei interogări sub forma unei matrice, ce are ca elemente valorile
agregate ale unui câmp, grupate funcţie de alte câmpuri. Interogarea de acest tip se numeşte
Crosstab Query.
Fie tabela CHELTUIELI cu cheltuielile unei intreprinderi pe categorii şi trimestre a cărei proiectare
este cea din Figura 52 iar datele din tabelă sunt cele din Figura 53.

Figura 52. Proiectarea tabelei CHELTUIELI.


Introducerea datelor din câmpul CATEGORIE se va face cu o caseta combinată (Combo Box).

Figura 53. Tabela CHELTUIELI.


Vrem să afişăm cheltuielile sumarizate, pe categorii şi pe trimestre ca în tabela de mai jos

TRIMESTRU Materiale Piese Utilaje


I x x x
II x x x
III x x x
IV x x x

Categoriile de cheltuieli vor fi afişate pe coloane, trimestrele pe linii şi suma cheltuielilor pe tipuri
de cheltuieli şi pe trimestre în celulele tabelei.
Vom crea această interogare cu aplicaţie vrăjitor.
1. se afişază fereastra Database; în partea stângă, se selectează opţiunea Queries,
PDF created with pdfFactory Pro trial version www.pdffactory.com
Microsoft Access Curs 12

2. clic pe butonul New al barei de instrumente care afişază caseta New Query din Figura 54; se
selectează opţiunea Crosstab Query Wizard, care lansează aplicaţia vrăjitor,

Figura 54. Caseta New Query.


3. la pasul I al aplicaţiei vrăjitor se afişază tabelele şi interogările din baza de date şi se aleg cele
din care se va crea interogarea dorită; în cazul nostru selectăm tabela CHELTUIELI, vezi
Figura 55; clic pe butonul Next,

Figura 55. Pasul I. Se aleg tabelele şi interogările din care se vor selecta câmpurile interogării.
4. la pasul II al se afişază câmpurile disponibile şi se aleg maxim trei ale căror valori vor constitui
antetele liniilor. In cazul nostru alegem câmpul TRIMESTRU, vezi Figura 56; clic pe butonul
Next,

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 56. Pasul II. Se aleg câmpurile ale căror valori vor constitui antetele liniilor.
5. la pasul III se afişază câmpurile disponibile şi se aleg cele ale căror valori vor constitui antetele
coloanelor. In cazul nostru alegem câmpul CATEGORIE, vezi Figura 57; clic pe butonul Next,

Figura 57. Pasul III. Se aleg câmpurile ale căror valori vor constitui antetele coloanelor.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Microsoft Access Curs 12

6. la pasul IV se afişază câmpurile disponibile şi se aleg cele ale căror valori vor fi afişate la
intersecţia liniilor şi coloanelor. Asupra valorilor acestor câmpuri se va aplica o funcţie de
sumarizare din cele afişate în lista Function. In cazul nostru se alege câmpul VALOARE şi
funcţia de sumarizare Sum, vezi Figura 58. Este posibil de a sumariza în plus rezultatele fiecărei
linii într-un câmp separat. Pentru aceasta se va marca butonul Yes, include row sums; clic pe
butonul Next,

Figura 58. Pasul IV. Se aleg câmpurile ale căror valori vor fi afişate la intersecţia liniilor şi
coloanelor.
7. la pasul V se alege numele interogării create, vezi Figura 59. Clic pe butonul Finish şi se afişază
tabela rezultat din Figura 60.
Menţionăm că tabela rezultat conţine şi un câmp Total Of VALOARE ce sumarizează valorile
liniilor. Acest câmp apare deoarece la pasul IV am marcat butonul Yes, include row sums.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 59. Pasul V. Se alege numele interogării create.

Figura 60. Interogarea tabelei CHELTUIELI.


Aplicaţia vrăjitor generează formularul de interogare din Figura 61.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 61. Formularul de interogare generat de aplicaţia vrăjitor.


Vom crea acum o interogare tip Crosstab a aceleiaşi tabele CHELTUIELI în care categoriile de
cheltuieli vor fi afişate pe linii, trimestrele pe coloane şi suma cheltuielilor pe tipuri de cheltuieli
şi pe trimestre în celulele tabelei, ca mai jos.

CATEGORIE I II III IV
Materiale x x x x
Piese x x x x
Utililaje x x x x

In consecinţă, valorile câmpului CATEGORIE vor fi antetele liniilor, valorile câmpului


TRIMESTRU vor fi antetele coloanelor, iar valorile câmpului VALOARE vor fi sumarizate în
coloanele matricei.
Ca exerciţiu vom crea o interogare de tip Crosstab proiectând un formular în felul următor:
1. se crează o interogare în care se selectează tabela CHELTUIELI,
2. clic pe meniul Query Crosstab Query vezi Figura 38; se afişază fereastra de proiectare
Crosstab Query din Figura 62,

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 62. Fereastra de proiectare Crosstab Query.


In fiecare celulă a liniei Field se poate afişa caseta cu câmpurile tabelei, din care se alege câmpul
dorit, ce va fi afişat pe linii, pe coloane sau sumarizat în celulele tabelei.
In fiecare celulă a liniei Crosstab se poate afişa caseta Crosstab din Figura 63b, în care se alege
tipul câmpurilor. Câmpurile ale căror valori vor fi antetele liniilor vor avea tipul Row Heading,
cele ale căror valori vor fi antetele coloanelor vor avea tipul Column Heading. Câmpurile ce vor
fi sumarizate vor avea tipul Value.
In fiecare celulă a liniei Total se poate afişa caseta Total din Figura 63a, în care se alege funcţia
câmpului, de grupare a datelor, de sumarizare, etc. Pentru câmpurile de tip Row Heading şi
Column Heading se va alege Group By. Pentru câmpurile sumarizate se va alege funcţia de
agregare dorită, Sum Avg, etc.

a) caseta Total b) caseta Crosstab


Figura 63. Casetele Total şi Crosstab.
3. vom afişa câmpul CATEGORIE pe linii, câmpul TRIMESTRU pe coloane şi în celulele tabelei
suma câmpurilor VALOARE; proiectarea interogării este cea din Figura 64,

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 64. Proiectarea interogării.


4. clic pe butonul Run, şi se obţine tabela din Figura 65.

Figura 65. Tabela rezultat a interogării.


In al doilea exemplu, afişăm câmpul TRIMESTRU pe linie şi câmpul CATEGORIE pe coloane.
Proiectarea interogării este arătată în Figura 66. Se va compara acest formular cu cel generat mai
înainte de aplicaţia vrăjitor.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 66. Proiectarea interogării Tabela


rezultată din interogare este cea din Figura 67.

Figura 67. Tabela rezultat a interogării.


Se va compara această tabelă cu cea generată mai înainte cu aplicaţia vrăjitor.

Formatarea tabelei rezultat


Tabela rezultat a interogării se formatează în acelaşi fel cu tabelele bazei de date. Pentru formatare
se utilizează opţiunile meniului Format din Figura 68. Opţiunile meniului Format afişază aceleaşi
casete de dialog ca şi în cazul tabelor bazei de date.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Figura 68. Meniul Format al unei interogări.

Probleme propuse
In tabelele de mai jos, atributele ce constituie cheia primară a tabelei sunt subliniate.
1. Fie tabela PROIECTE_ANGAJATI de mai jos. Coloanele ID_PRJ, ID_ANG, SAL_ORA şi
ORE sunt de tip numeric, celelalte de tip text.

PROIECTE_ANGAJATI

ID_PRJ ID_ANG NUME_ANG DPT_ANG SAL_ORA ORE


100 1290 Popescu Informatica 60 10
100 1293 Ionescu Support 40 8
100 1045 Georgescu Documentare 25 12
200 1192 Vasilescu Informatica 60 20
200 1351 Filipescu Support 40 15
300 1348 Popa Informatica 60 20
300 1284 Nicolae Support 40 14
300 1067 Marinescu Documentare 25 12
400 1095 Gheorghe Informatica 60 15

Se va proiecta tabela PROIECTE_ANGAJATI. Se vor defini condiţiile ORE >= 0,


SAL_ORA>=20, ID_PRJ, 100 <= ID_PRJ <= 999, 1000 <= ID_ANG <= 9999. Se vor defini măşti
pentru introducerea câmpurilor ID_PRJ şi ID_ANG. Numele departamentelor se vor introduce cu
o casetă combinată (Combo Box).
Se vor defini formulare de interogare pentru următoarele cereri:
▪ să se selecteze toţi angajaţii intreprinderii,
▪ să se selecteze toţi cu angajaţii cu salariul orar mai mic sau egal cu 35 lei,
▪ să se selecteze toţi cu angajaţii cu salariul orar mai mare sau egal de 38 lei,
▪ să se selecteze toţi angajaţii din departamentul Informatica ce au lucrat cel puţin 15 ore,
▪ să se selecteze toţi angajaţii ce au lucrat un număr de ore cuprinse între două limite ce vor fi
parametri,
▪ să se selecteze toţi angajaţii al căror nume începe cu o literă ce va fi parametru.
La fiecare punct se va scrie instrucţiunea SELECT corespunzătoare cererii. Se vor crea formulare
de afişare a tabelelor rezultat. Codiţiile din clauza WHERE se vor crea direct şi cu aplicaţia
Expression Builder.

2. Fie tabela ANGAJATI de mai jos. Coloanele ID şi SALARIU sunt de tip numeric, celelalte
coloane sunt de tip text.

ANGAJATI

ID NUME PRENUME FACULTATE SALARIU


100 Popescu Ioan Matematica 1100
200 Ionescu Vasile Electrotehnica 1700
136 Vasilescu George Calculatoare 1490
260 Georgescu Nicolae Istorie 820
420 Nicolae Dan Calculatoare 1600
PDF created with pdfFactory Pro trial version www.pdffactory.com
Microsoft Access Curs 12

302 Gheorghe Dan Mecanica 1420


325 Vasile Nicolae Fizica 1360
400 Popa George Chimie 1650

Se va proiecta tabela ANGAJATI. Se vor defini condiţiile de validare ID >= 100, SALARIU >=
600.
Se vor crea formulare de interogare pentru următoarele cereri:
▪ să se selecteze toţi angajaţii intreprinderii,
▪ să se selecteze facultăţile absolvite,
▪ să se selecteze angajaţii cu salarii mai mari ca 1500,
▪ să se selecteze angajaţii cu salarii mai mici sau egale cu 1500,
▪ să se selecteze angajaţii ce au absolvit facultăţile Electrotehnica, Mecanica, Calculatoare,
▪ să se selecteze angajaţii ce au absolvit alte facultăţi decât Electrotehnica, Mecanica şi
Calculatoare.

3. Fie tabela SITUATIE_FINANCIARA de mai jos cu datele contabile ale unei interprinderi.
Toate coloanele sunt de tip numeric.

SITUATIE_FINANCIARA

AN VENITURI CHELTUIELI
2001 420 370
2002 470 410
2003 550 500
2004 620 548
2005 705 590
2006 690 620

Fie tabela DATE_CONTABILE de mai jos cu datele contabile ale aceeaşi intreprinderi pe
următorii trei ani.
DATE_CONTABILE

AN VENITURI CHELTUIELI
2007 712 670
2008 722 690
2009 695 690

Să se creeze o interogare care să calculeze reuniunea celor două tabele. Se vor proiecta cele două
tabele şi se vor defini condiţiile de validare VENITURI > 0, CHELTUIELI > 0.

4. Fie tabela FACTURA_TELEFONICA de mai jos.

NUME PRENUME NUMAR_TELEFON VALOARE LUNA

Câmpurile NUME, PRENUME şi NUMAR_TELEFON sunt de tip text. Câmpurile VALOARE şi


LUNA sunt numerice. Se va proiecta tabela FACTURA_TELEFONICA. Se vor defini regulile de

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

validare VALOARE > 0, LUNA cuprinsă între 1 şi 12, câmpurile NUME şi PRENUME nenule.
In câmpul NUMAR_TELEFON numerele încep cu prefixul 0251. Se vor introduce reguli de
validare şi mesaje de eroare pentru fiecare câmp. Se va crea o mască pentru numerele de telefon
de forma
(0000) 000-000
▪ să se selecteze toate facturile telefonice cuprinse între două luni ce vor fi parametri.

Intrebări de control
1. Care este forma instrucţiunii SELECT pentru selectarea unor coloane dintr-o tabelă?
2. Care este forma instrucţiunii SELECT pentru selectarea unor linii dintr-o tabelă ce satisfac
anumite criterii?
3. Cum se crează o interogare cu parametri?
4. Cum se face sortarea liniilor tabelei rezultat?
5. Care este forma instrucţiunii UNION şi la ce se utilizează?

Comenzi SQL de selecţie

Tabela A

a1 a2 a3 a4 a5 a6

Tabela B

b1 b2 b3 b4 b5 a1

Tabela C

c1 c2 c3 c4 C5 a1

SELECT [domeniu: ALL/DISTINCT/DISTINCTROW] listă selecţie câmpuri


FROM nume tabelă(e)
[WHERE criteriu de selecţie]
[ORDER BY listă câmpuri criterii de ordonare {ASC/DESC}];

Exemple:

SELECT DISTINCTROW a1,a2


FROM A

SELECT DISTINCT a5
FROM A
WHERE a5>1000;

SELECT DISTINCT a5
FROM A
WHERE a5>1000 AND a3=”text”;

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

SELECT DISTINCT a5
FROM A
WHERE a5 (NOT) BETWEEN 1000 AND 10000;

SELECT DISTINCT a5
FROM A
WHERE a3 LIKE ”*text”;

SELECT a2,a4,a5
FROM A
WHERE a2 IN(1500, 13000, 14000)
ORDER BY a2 ASC, a5 DESC;

SELECT DISTINCTROW Max(a5) AS [a5_maxim], Min(a5) AS [a5_minim], Avg(a5) AS [a5_medie] FROM


A

SELECT COUNT(*) AS [Număr de tupluri]


FROM A

SELECT a1, a2, a3, a5, a6, IIF(a5>=a6;a5-a6;a6-a5) AS [funcţie condiţională]


FROM A
WHERE a2 IS NOT NULL;

Interogări de grupare
SELECT [domeniu: ALL/DISTINCT/DISTINCTROW] listă selecţie câmpuri
FROM nume tabelă(e)
[WHERE criteriu de selecţie]
[GROUP BY câmp(uri) de grupare]
[HAVING criteriul câmpului de grupare]
[ORDER BY listă câmpuri criterii de ordonare {ASC/DESC}];

SELECT b1, b2, b4, b5, b3*b4 AS [produs b3 şi b4]


FROM B
WHERE b2=”ctiteriu text”
GROUP BY b4
HAVING Sum(b3)>300000;

Interogări asociative clasice


SELECT [domeniu] listă selecţie câmpuri din tabele diferite
FROM nume tabele
[WHERE criteriu de compunere
[ORDER BY listă câmpuri criterii de ordonare {ASC/DESC}];

SELECT A.a1, A.a2, B.b1, C.c1, C.c3


FROM A, B, C
WHERE A.a1=B.a1 AND B.a1=C.a1
ORDER BY C.c3;

Compuneri interne
SELECT [domeniu] listă selecţie câmpuri din tabele diferite
FROM nume tabelă_1
{INNER/LEFT/RIGHT} JOIN nume tabelă_2
PDF created with pdfFactory Pro trial version www.pdffactory.com
Microsoft Access Curs 12

ON criteriu de asociere
[WHERE criteriu de compunere
[ORDER BY listă câmpuri criterii de ordonare {ASC/DESC}];

SELECT A.a5, B.b3, (A.a5*B.B3) AS [Produs]


FROM A
INNER JOIN B ON A.A1=B.A1
ORDER BY A.a5;

SELECT A.a1, A.a2, A.a5, B.b1, C.c1


FROM A
INNER JOIN (B INNER JOIN C ON B.a1=C.a1) ON
(A.a1=B.a1) AND (B.a10C.a1);

Subinterogări
Interogări pe o tabelă
SELECT [domeniu] listă selecţie câmpuri
FROM nume tabelă
[WHERE criteriu de selecţie pentru o altă interogare
(SELECT [domeniu] listă selecţie câmpuri
FROM nume tabelă
[WHERE criteriu de selecţie pentru sub-interogare)
[ORDER BY listă câmpuri criterii de ordonare {ASC/DESC}];

SELECT DISTINCTROW a1, a2, a3, a5


FROM A
WHERE a5>(SELECT a5 FROM A WHERE a2=”criteriu text”);

SELECT nume, medie, facultate


FROM studenti
WHERE facultate=”FAB” AND medie>(SELECT medie FROM studenţi WHERE
facultate=”CIG”);

Subinterogări construite pe mai multe tabele:


SELECT [domeniu] listă selecţie câmpuri
FROM nume tabelă_1
[WHERE tabelă_1.câmp legătură=(SELECT câmp legătură
FROM nume tabelă_2
[WHERE criteriu de selecţie pentru sub-interogare])

SELECT a1,a2,a5
FROM A
WHERE A.a1=(SELECT a1 FROM B WHERE b3>25000);

Subinterogări pentru care a fost construită o compunere:


SELECT [domeniu] listă selecţie câmpuri

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

FROM nume tabelă_1, nume tabelă_2


[WHERE tabelă_1.câmp legătură=tabelă_2.câmp de legătură AND
tabelă_1.câmp legătură=(SELECT câmp de legătură
FROM nume tabelă_2
[WHERE criteriu de selecţie pentru sub-interogare])

Interogări de reuniune (UNION)


SELECT listă câmpuri FROM tabelă_1
UNION
SELECT listă câmpuri FROM tabelă_2
[GROUP BY câmp(uri) de grupare] [HAVING criteriul câmpului de grupare]
UNION
SELECT listă câmpuri FROM tabelă_3 [GROUP BY câmp(uri) de grupare]
[HAVING criteriul câmpului de grupare]….
[ORDER BY …..]

SELECT a1, a2, a3


FROM A
UNION
SELECT a1, a2, a3
FROM A1
ORDER a1;

SELECT AVG(a5) AS [Medie] FROM A


GROUP BY a3
HAVING a3=1500
UNION
SELECT AVG(a5) AS [Medie] FROM A1
GROUP BY a3
HAVING a3=1500
ORDER a1;

Interogări de tip analiză încrucişată (CROSSTAB)


- permit selecţia datelor, efectuarea de calcule (prin aplicarea unor funcţii agregat) şi
gruparea înregistrărilor în funcţie de două secţiuni: cea a antetelor de rânduri şi cea a
titlurilor coloanelor

[TRANSFORM] funcţie_agregat AS alias


Instrucţiune de selecţie
PIVOT câmp_antet_coloană [IN (val1[,val2[,….]])];

▪ Funcţia agregat operează asupra înregistrărilor prin definirea instrucţiunii de selecţie


(SELECT)
▪ Câmp_antet_coloană reprezintă câmpul sau expresia ce se utilizează în definirea antetelor
de coloane pentru setul de date al interogării
▪ Instrucţiunea de selecţie serveşte pentru furnizarea antetelor de rând ale rezultatelor
interogării
▪ IN se foloseşte atunci când se doreşte o fixare a valorilor care devin antete de coloane.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

„să se afişeze pentru câmpul a1(de ex. furnizor), media câmpului b3 (de ex. preţul) pentru fiecare
câmp b1, pentru care există o condiţie pentru câmpul b4”
TRANSFORM Avg(b3) AS [Media b3]
SELECT A.a1
FROM A INNER JOIN B ON A.a1=B.a1
WHERE b4=”condiţie”
GROUP BY A.a1
ORDER BY A.a1
PIVOT B.b1

Interogări de acţiune implementate în SQL

Interogări de creare a unei tabele noi, plecând de la conţinutul şi structura unei tabele
existente
SELECT [domeniu] listă câmpuri INTO
tabelă_nouă
FROM tabelă_sursă [WHERE criteriu de adăugare];

Exemplu: Să se creeze tabela D(d1,d2,d3), plecând de la tabela A cu 2 restricţii


SELECT DISTINCTROW a1,a2,a3
INTO D
FROM A
WHERE a1>5000 and a3=”text”;

Interogări pentru adăugarea de înregistrări intr-o tabelă


INSERT INTO nume_tabelă(câmp1, câmp2, ……)
VALUES (valoare1, valoare2…….);
Exemplu:
INSERT INTO B(b1,b2,b3,b4)
VALUES (540, „bbb2”,”bbb3”,7895);

Interogări pentru adăugarea de înregistrări dintr-o tabelă în alta

INSERT INTO tabelă_destinaţie(câmp1, câmp2,…..)


SELECT [domeniu] listă câmpuri
FROM tabelă_sursă
[WHERE criteriu de adăugare];

INSERT INTO D(d1, d2, d4)


SELECT a1, a2, a4
FROM A
WHERE a1 BETWEEN 5000 AND 10000;
Interogări de ştergere
DELETE FROM nume_tabelă
[WHERE criteriu_de_ştergere];

PDF created with pdfFactory Pro trial version www.pdffactory.com


Microsoft Access Curs 12

Ex:
DELETE *
FROM D

DELETE *
FROM C
WHERE b3>#01/01/2000# AND #31/12/2000#;

Interogări de modificare
UPDATE nume_tabelă
SET nume_câmp1=valoare1 [,nume_câmp2=valoare2]…..
[WHERE criteriu_de_actualizare];

Exemplu:
UPDATE B
SET b3=”bbb3”
WHERE b3=”bb3”;

PDF created with pdfFactory Pro trial version www.pdffactory.com

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