Access
Interogari in Access laboratorInterogari in Access laborator 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
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:
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
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:
Daca analizam expresia: valoare finala: [articole].[art pret]*[comenzi].[cant] se paote 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] Interogari in Access laborator 7 (continuare) Pentru a realiza diferite criterii de selectie se poate utiliza si generatorul de expresii (Expression Builder) a carui fereastra se deschide selectand optiunea Build a meniului pe care il activati printr-un click dreapta de mouse in randul Criteria. De exemplu vrem sa selectam doar agentii care au primit comision. Asta inseamna ca valoarea din comision sa fie mai amre decat 0. Interogarea va fi creata cu ajutorul generatorului de expresii. Se face click dreapta in randul Criteria si se allege Build:
La sfarsit se apasa butonul OK. Rulati interogarea. Alegeti acum toti clientii care sunt din orasul Bacau sau Iasi. Pentru a nu scrie in randuri separate ale campului Criteria numele fiecarui oras, se va scrie intr-un singur rand Bacau si Iasi folosindu-se operatorul OR.
Utilizarea operatorilor Pentru a construi expresii pe randul Criteria se utilizeaza operatorii: aritmetici: adunare (+); scadere (), inmultire (*), impartire (/), ridicare la putere (^), impartirea a doua numere cu returnarea unui intreg (), impartirea a doua numere cu returnarea restului impartirii (MOD). de comparatie: <, >, =, <=, >=. Acesti operatori returneaza valorile logice True si False. Exceptie reprezinta cazul in care unul dintre operatori are valoarea NULL si deci orice comparare va returna valoarea NULL. asociati operatorilor de comparare IS NULL, IS NOT NULL o valoare NULL (camp necompletat) nu este nici TRUE nici FALSE. Inregistrarile care au valoarea NULL in campurile selectate nu apar ca rezultate ale interogarii; LIKE se foloseste impreuna cu caracterele de inlocuire * si ? pentru a stabili daca o valoare incepe cu unul sau mai multe caractere; caracterul * poate inlocui orice numar de caractere; caracterul ? inlocuieste numai un caracter; IN stabileste daca o valoare este cuprinsa intr-o lista; BETWEEN stabileste daca o valoare apartine unui interval specificat. logici NOT negatia; AND pentru conjunctia a doua valori; OR pentru disjunctia a doua valori; XOR pentru disjunctia exclusiva a doua valori; Eqv verifica echivalenta a doua valori. de concatenare a sirurilor de caractere: + si &. constante: constantele utilizate in construirea expresiilor Access pot fi de natura numerica (ex: 1200,5,0); text (123, Toma Ion, str. Viilor 15); data calendaristica (ex: #12.31.01# ceea ce indica data de 31 decembrie 2001).
Data calendaristica : Date(), Month(), Year (), etc. Exemple: 1. Date() returneaza data curenta; 2. Month(Date()) returneaza numarul lunii calendaristice curente. 3. Year(Date()) returneaza anul curent. De tip text 1. Len() returneaza lungimea unui sir; 2. Trim() elimina spatiile de la inceputul si de la sfarsitul unui sir; 3. Left() returneaza primele n caractere de la inceputul unui sir, etc. Matematice si trigonometrice 1. ABS() returneaza valoarea absoluta a unui numar; 2. INT() returneaza partea intreaga dintr-o valoare numerica, ROUND() rotunjeste o valoare cu un anumit numar de zecimale; 3. SUM() calculeaza suma; 4. AVG() calculeaza media, etc. Financiare 1. PV() returneaza valoarea actuala a unei unitati platite in rate periodice egale; 2. SLN() returneaza valoarea amortizarii unui mijloc fix dupa o anumita perioada (amortizare liniara) etc. Functii diverse: ISNUMERIC(), ISNULL(), etc Reguli de formare a expresiilor introduse pe campul Criteria: datele de tip Text se tasteaza ca atare, iar Access adauga automat ghilimele; pentru datele de tip Number si Currency se tasteaza cifrele si eventual simbolul zecimal, fara simbolul monetar sau separatorul de mii; referirile la numele de campuri trebuie incluse intre paranteze drepte, altfel se adauga automat ghilimele, considerandu-se text; formatul international de data calendaristica este mm/dd/yy. Access adauga automat delimitatorul # ; Exercitii Creati trei interogari in care sa folositi la alegere unul din operatorii descrisi mai sus Exercitii 1. Realizarea unei interogari pentru obtinerea unei liste cu clientii a caror numele incepe cu A. Sub campul [cl nume] pe randul Criteria se scrie expresia: LIKE A* 2. Realizarea unei interogari pentru obtinerea unei liste cu clientii a caror numele NU incepe cu A. Sub campul [cl nume] pe randul Criteria se scrie expresia: NOT LIKE A* 3. Realizarea unei interogari pentru obtinerea unei liste cu clientii care nu au reducere (nu ati scris nimic in acest cimp nici macar valoare 0). Sub campul reducere pe randul Criteria se scrie expresia: IS NULL 4. Realizarea unei interogari pentru obtinerea unei liste cu clientii din orasul Bacau care nu au reducere sau daca au sa fie mai mare ca 10 si a caror nume incepe cu litera A. Pe randul Criteria sub campul [cl oras] se scrie Bacau, iar sub campul reducere se scrie expresia: IS NULL OR [reducere] > 2 si sub campul [cl nume] se scrie Like A* . 5. Interogarea pentru obtinerea listei clientilor carora li s-a acordat o reducere intre valorile 10 si 15. Sub campul reducere in randul Criteria se scrie expresia: >='2' And <='5'. Pentru date calendaristice se va folosi expresia: >= # 01.12.2004 # And <= # 31.12.2004 # ce reprezinta perioada cuprinsa intre 1 decembrie 2005 si 31 decembrie 2004. 6. Pentru a obtine o lista a clientilor cu [cl Id] dintre numerele 1, 2,3, se va realiza interogarea: Sub campul [cl Id] se scrie expresia: IN (1 ; 2 ; 3). 7. Pentru a obtine o lista cu clientii cu reducere intre valorile 5 si 10 se scrie: Between 1 And 3. 8. Mergeti in structura tabelei Clienti si adaugati campul: data de tipul Date/Time si dati apoi valori acestui camp. Aflati apoi clientii care au facut comenzi intre perioada 01.01.2006 si 31.12.2007. Sub campul data pe randul Criteria veti scrie: Between #01.01.2006# And #31.12.2007#.
|