Documente Academic
Documente Profesional
Documente Cultură
1 Actualizarea bazelor de date.............................................................................................2 1.1 Meniurile unei interogri...........................................................................................2 1.2 Modificarea unor coloane ale tabelei.........................................................................5 1.3 Utilizarea expresiilor aritmetice n interogri............................................................6 1.4 Utilizarea expresiilor booleene n interogri............................................................10 1.5 Utilizarea funciilor de prelucrare a irurilor de caractere......................................14 1.6 Actualizarea unor coloane ale unei tabele cu date din alte tabele...........................16 1.7 Stergerea unor linii din tabele..................................................................................19 1.8 Inserarea unei linii intr-o tabel..............................................................................22 1.9 Inserarea ntr-o tabel a unor linii dintr-o alt tabel..............................................25 1.10 Crearea unei tabele vide........................................................................................28 1.11 Crearea unei tabele cu date din alte tabele............................................................30 1.12 Probleme propuse..................................................................................................32 1.13 Intrebri de control................................................................................................34
a)meniul View
Butonul Run, , al barei de instrumente sau opiunea Run a meniului Query, n modul Design View, (vezi Tabelul 3a) servesc la execuia cererii. Butonul Show Table, , i opiunea Show Table a meniului Query afiaz caseta Show Table din Figura 6, cu tabelele bazei de date, ce pot fi utilizate n interogare. Barele de meniuri i de instrumente ale vederii Datasheet sunt artate n Figura 2.
Meniul View i meniul contextual al formularului n vederea Datasheet sunt artate n Tabelul 2. Opiunile lor permit comutarea ntre cele dou vederi, Design i Datasheet. Opiunile Design View, Datasheet View i SQL View ale acestor meniuri permit trecerea n modul Proiectare, Formular, respectiv afiaz instruciunea SQL generat de Access pe baza formularului de proiectare.
a) meniul View
Butonul View din stnga barelor de meniu afiaz lista din Figura 3 cu aceleai opiuni de comutare a vederilor
Meniul Query are opiuni pentru crearea formularului de proiectare dorit. Butonul Query Type, , , , al barei de meniu n vederea Design, afiaz o list cu aceleai opiuni, vezi Tabelul 3a i Tabelul 3b.
a) meniul Query Semnificaia acestor opiuni este cea din Tabelul 4. Opiune
In exemplele din lucrare vom utiliza tabela SITUATIE_FINANCIARA de mai jos ce conine datele financiare ale unei intreprinderi. 4
In tabel sunt completate doar coloanele AN, VENITURI i CHELTUIELI. Proiectarea tabelei este cea din Figura 4, iar tabela cu date cea din Figura 5.
In tabel sunt completate doar coloanele AN, VENITURI i CHELTUIELI. Celelalte coloane se vor calcula dup formulele: PROFIT_BRUT = VENITURI - CHELTUIELI, IMPOZIT = PROFIT_BRUT * 0.19, PROFIT_NET = PROFIT_BRUT IMPOZIT. Vom proiecta un formular de interogare ce va completa cmpul PROFIT_BRUT. Procedura este urmtoarea: 1. se afiaz caseta Database; n partea stng, se selecteaz opiunea Queries, 2. clic pe opiunea Create query in Design View care afiaz caseta Show Table din Figura 6 i fereastra de proiectare a unei interogri. Alternativ, clic pe butonul New al barei de instrumente al ferestrei Database sau pe meniul Insert Query; se afiaz caseta de dialog New Query n care se selecteaz opiunea Design View, care afiaz caseta Show Table i fereastra de proiectare a unei interogri ca mai sus. In seciunea Tables a casetei Show Table sunt afiate toate tabelele bazei de date.
3. clic pe tabela SITUATIE_FINANCIARA; se afiaz fereastra de proiectare Select Query a interogrii din Figura 7,
4. clic pe meniul Query Update Query din Tabelul 3a; n fereastra interogrii apare linia Update To ca n Figura 8; acelai efect se obine prin selectarea opiunii din lista Query Type din Tabelul 3b, afiat cu butonul Query Type, , 5. se introduce n prima coloan numele cmpului ce va fi actualizat, PROFIT_BRUT i n linia Update To formula [VENITURI] - [CHELTUIELI]; dup cum am spus mai nainte, numele atributelor (coloanelor) tabelei se scriu n expresii ntre paranteze drepte, [ i ],
6. clic pe butonul Run, , al barei de instrumente sau pe meniului Query Run; rezultatul coloanei actualizate este cel din Figura 9.
Inainte de executarea interogrii Access afiaz caseta de dialog din Figura 10 prin care ntreab utilizatorul dac vrea s efectueze actualizarea coloanelor.
Este posibil s vedem valorile cmpurilor nainte de a fi modificate. Pentru aceasta afim fereastra Design i executm clic pe meniul View Datasheet View, i se va afia o tabel cu valorile coloanelor nainte de a fi modificate. In cazul nostru se va afia tabela din Figura 12.
Pentru a salva formularul creat se utilizeaz opiunile Save sau 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 cu tasta Delete. Expresia se poate introduce i cu aplicaia Expression Builder. Pentru aceasta se afiaz caseta Expression Builder din Figura 14 i se introduce expresia. Caseta Expression Builder se afiaz n urmtoarele moduri: se selecteaz cmpul cu clic i apoi clic pe butonul Build, , al barei de instrumente,
se afiaz meniul contextual al cmpului din Figura 13 cu clic cu butonul drept, apoi clic pe opiunea Build.
10
Tabela conine un cmp DATA_CAL cu data calendaristic i un cmp TRIMESTRU ce trebuie completat cu numrul trimestrului, 1, , 4 cu ajutorul unei interogri.
Pentru aceasta se procedeaz ca mai sus: 1. se creaz o interogare ca n Figura 18; n prima celul a liniei Field se introduce numele coloanei TRIMESTRU ce trebuie completat, 2. clic pe meniul Query Update Query din Tabelul 3a sau pe opiunea UpdateQuery din lista Query Type afiat cu clic pe butonul Query Type vezi Tabelul 3b; n fereastra interogrii apare linia Update To ca n Figura 18, 3. n linia Update To se introduce expresia IIf([DATA_CAL]<#4/1/2009#,1,IIf([DATA_CAL]<#7/1/2009#,2,IIf([DATA_CAL]<#1 0/1/2009#,3,4))). Expresia se introduce n caseta Expression Builder ca mai sus, vezi Figura 17, sau direct n cmp ca n Figura 18.
11
Pentru a pune n evident clauzele instruciunii IIf, ea este rescris ca mai jos IIf([DATA_CAL]<#4/1/2009#, 1, IIf([DATA_CAL]<#7/1/2009#, 2, IIf([DATA_CAL]<#10/1/2009#, 3, 4))) 12
Expresia este executat asfel: se evalueaz condiia [DATA_CAL]<#4/1/2009#, cnd condiia este adevrat rezultatul expresiei este 1, cnd condiia este fals se evalueaz expresia [DATA_CAL]<#7/1/2009# din a doua instruciune IIF, cnd condiia este adevrat rezultatul expresiei este 2, cnd condiia este fals se testeaz expresia [DATA_CAL]<#10/1/2009#, cnd condiia este adevrat rezultatul expresiei este 3, cnd condiia este fals rezultatul expresiei este 4. Figura 19 prezint tabela TESTIIF actualizat.
Deoarece expresia instruciunii IIf este foarte lung, Access are posibilitatea de a afia o caset Zoom pentru expresii lungi. Afiarea acestei casete se face cu clic pe opiunea Zoom a meniului contextual a cmpului, vezi Figura 13. Caseta Zoom a cmpului ce conine instruciunea IIf este cea din Figura 21.
13
Vom exemplifica utilizarea acestor funcii cu tabela TESTCAR din Figura 22. In aceast tabela vor fi completate coloanele CNP i NUME, iar celelalte coloane vor fi completate din coloana CNP. Coloana CNP conine pe prima poziie o cifr ce corespunde sexului, 1 pentru masculin i 2 pentru feminin. Urmtoarele ase cifre conin data naterii sub forma AALLZZ, unde AA sunt ultimele dou cifre ale anului naterii LL este luna iar ZZ este ziua. Vom completa coloana SEX cu caracterul M pentru masculin i F pentru feminin, coloana VARSTA cu vrsta i coloana DATA cu data naterii sub forma LL/ZZ/AA. Aceste trei coloane se pot completa din coloana CNP.
14
Vom crea o interogare de tipul Update Query cu care completm coloanele vide. Expresiile introduse pentru actualizarea coloanelor sunt urmtoarele: 1. pentru coloana DATA se construiete irul din coloanele 2-7 ale coloanei CNP Mid([CNP],4,2) & "/" & Mid([CNP],6,2) & "/" & Mid([CNP],2,2) 2. pentru coloana VARSTA se calculeaz vrsta ca data curent cifrele anului din coloana CNP 1900 Year(Date())-Mid([CNP],2,2)-1900 3. pentru a completa coloana SEX se utilizeaz instruciunea IIf care testeaz dac primul character din coloana CNP este egal cu 1 IIf(Left([CNP],1)=1,"M","F") La calculul vrstei funcia Date() furnizeaz un ir cu data curent, iar funcia Year() extrage irul ce conine anul. Formularul de proiectare a interogrii este cel din Figura 24.
15
1.6 Actualizarea unor coloane ale unei tabele cu date din alte tabele
Este posibil s actualizm coloane ale unei tabele cu date obinute prin interogarea altor tabele. Fie tabela SITUATIE_FINANCIARA din Figura 5. Vrem s modificm coloanele VENITURI i CHELTUIELI ale acestei tabele pentru diveri ani. Noile date vor fi luate din tabela DATE_CONTABILE_VECHI de mai jos.
16
Vom modifica cmpurile VENITURI i CHELTUIELI din tabela SITUATIE_FINANCIARA, la valorile cmpurilor VENITURI i CHELTUIELI din tabela DATE_CONTABILE_VECHI, pentru anii 2001 i 2003. Vor fi modificate doar liniile tabelei SITUATIE_FINANCIARA pentru care cheia primar concide cu cheia primar a unei linii din tabela DATE_CONTABILE_VECHI. Vom crea o interogare n felul urmtor: 1. se selecteaz seciunea Queries a ferestrei Database, 2. clic pe opiunea Create Query in Design view, sau clic pe butonul New i, n caseta New Query, clic pe opiunea Design View, 3. se afiaz fereastra Query i caseta Show Table; n caseta Show Table se selecteaz cele dou tabele, SITUATIE_FINANCIARA i DATE_CONTABILE_VECHI, 4. clic pe meniul Query Update Query din Tabelul 3a, ceea ce afiaz fereastra de proiectare din Figura 29; alternativ, clic pe opiunea Update Query din lista Query Type afiat cu clic pe butonul Query Type,
Liniile ferestrei de proiectare au funciile urmtoare: n linia Field se introduc cmpurile tabelei ce trebuie modificate,
17
n linia Update To se introduc cmpurile tabelei ce conin noile valori, n liniile Criteria i or se introduce criteriile ce dau liniile ce vor fi modificate. In cazul nostru, criteriul dup care vor fi actualizate liniile tabelei SITUATIE_FINANCIARA este egalitatea cheilor primare SITUATIE_FINANCIARA.AN = DATE_CONTABILE_VECHI.AN Access ne permite s specificm grafic anumite criterii de forma de mai sus, creind legturi ntre cmpurile celor dou tabele. O asemenea legtur este creat ntre cheile primare ale celor dou tabele n Figura 29. Legtura se creaz trgnd un cmp al unei tabele asupra altui cmp al celeilalte tabele. Legturile se pot terge prin selectarea legturii cu un clic cu butonul drept pe legtur, i clic pe opiunea Delete a meniului contextual afiat. 5. n linia Field a ferestrei de proiectare se introduc cmpurile ce trebuie modificate, n cazul nostru VENITURI i CHELTUIELI din tabela SITUATIE_FINANCIARA, vezi Figura 30,
6. n linia Update To se introduc noile valori, care aici sunt coloanele corespunztoare din tabela DATE_CONTABILE_VECHI, vezi Figura 31,
18
8. clic pe butonul OK i instruciunea este executat. Instruciunea UPDATE generat de Access este cea din Figura 33.
19
WHERE condiie; Instruciunea terge din tabel toate liniile ce satisfac condiia din clauza WHERE. Pentru tergerea unor linii din tabel Access utilizeaz o interogare de tip Delete (Delete Query), vezi meniul Query din Tabelul 3a. Exemplu. Fie tabela PROIECT_ANGAJAT de mai jos. Tabela conine angajaii ce lucreaz la diverse proiecte ale unei intreprinderi, cu salariul orar, SAL_ORA i numrul de ore prestate la proiect, ORE. Cheia primar a tabelei este format din cmpurile ID_PRJ i ID_ANG. Cmpurile 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
20
Interogarea se proiecteaz dup cum urmeaz. 3. se afiaz caseta Database; n partea stng, se selecteaz opiunea Queries, 4. clic pe opiunea Create query in Design View care afiaz caseta Show Table i fereastra de proiectare a unei interogri, 5. seciunea Tables a casetei Show Tables din Figura 6 afiaz 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 afiaz n formularul Select Query, 6. n meniul Query din Tabelul 3a se selecteaz opiunea Delete Query i se afiaz formularul Delete Query din Tabelul 6a, care se completeaz ca n Tabelul 6b.
a)
Tabelul 6. Formular Delete Query.
b)
5. se excut clic pe butonul al barei de instrumente care execut operaia. La execuia operaiei se afiaz casetele de mesaj din Figura 36 i din Figura 37.
21
Access genereaz din formularul de mai sus instruciunea SQL DELETE din Figura 38.
Este posibil de a vedea liniile din tabel ce vor fi terse. Pentru aceasta se procedeaz astfel: 1. se afiaz fereastra Design a formularului, 2. clic pe meniul View Datasheet View care afiaz tabela cu liniile ce vor fi terse, vezi n Figura 39.
2. clic pe opiunea Create Query in Design view, sau clic pe butonul New i, n caseta New Query, clic pe opiunea Design View, 3. se afiaz fereastra Query i caseta Show Table; clic pe butonul Close al casetei Show Table; se afiaz fereastra de proiectare din Figura 40,
4. clic pe meniul Query Append Query din Tabelul 3a; se afiaz caseta Append din Figura 41,
5. n caseta Table Name se alege tabela n care se va insera linia, vezi Figura 42,
23
6. n fereastra de proiectare Query apare acum i linia Append To, vezi Figura 43; n linie apare lista cu cmpurile tabelei selectate pentru inserare,
8. aplicaia Access genereaz instruciunea INSERT din Figura 45, ce trebuie modificat,
24
10. clic pe butonul Open ceea ce va produce execuia instruciunii INSERT. Access afiaz mesajele din Figura 47 i din Figura 48.
25
In Access aceast operaie se face cu o interogare de tip Append ( Append Query), vezi meniul Query din Tabelul 3a. Fie tabela SITUATIE_FINANCIARA din Figura 5. Vrem s inserm n aceast tabel linii din tabela DATE_CONTABILE de mai jos.
Tabelele DATE_CONTABILE i SITUATIE_FINANCIARA conin aceleai cmpuri. Pentru insera liniile tabelei DATE_CONTABILE n tabela SITUATIE_FINANCIARA vom crea o interogare n felul urmtor: 1. se selecteaz seciunea Queries a ferestrei Database, 2. clic pe opiunea Create Query in Design view, sau clic pe butonul New i n caseta New Query clic pe opiunea Design View, 3. se afiaz fereastra Query i caseta Show Table; n caseta Show Table se selecteaz tabela surs, DATE_CONTABILE, i se creaz o interogare, ca n Figura 51; aceast interogare corespunde instruciunii SELECT din instruciunea INSERT de mai sus,
26
4. clic pe meniul Query Append Query din Tabelul 3a; n fereastra interogrii apare caseta Append ca n Figura 52; n lista Table Name se selecteaz tabela n care se vor insera linii, n cazul nostru SITUATIE_FINANCIARA,
5. clic pe butonul OK al casetei Append; n fereastra de proiectare apare linia Append To cu cmpurile corespunztoare din tabela destinaie, n acest caz SITUATIE_FINANCIARA, ca n Figura 53. In linia Field apar valorile ce se vor salva n cmpurile destinaie. Ele pot fi expresii ce conin constante i nume de cmpuri. In linia Criteria se pot introduce criteriile ce trebuie satisfcute de liniile ce vor fi inserate n tabel. In cazul nostru sunt cmpurile cu aceleai nume din tabela DATE_CONTABILE,
6. clic pe butonul Run, , al barei de instrumente i se afiaz mesajul din Figura 54. La un clic pe butonul Yes se execut instruciunea INSERT.
27
Instruciunea INSERT generat de Access pe baza interogrii proiectate este cea din Figura 55.
28
3. se afiaz caseta de dialog New Query n care se selecteaz opiunea Design View, care afiaz caseta Show Table i fereastra de proiectare a unei interogri, 4. clic pe butonul Close al casetei Show Table, 5. clic pe meniul Query SQL Specific Data Definition, vezi Figura 56,
6. se afiaz caseta de text n care se scrie instruciunea CREATE TABLE din Figura 57; numele cmpurilor se scriu ntre paranteze drepte, [ i],
7. clic pe butonul Run i se creaz tabela n baza de date. Tabela creat de Access ape baza instruciunii CREATE TABLE de mai sus are proiectarea din Figura 58.
29
30
5. pentru a vedea datele ce vor fi introduse n noua tabel vom trece n vederea Datasheet; un clic pe butonul View, , afiaz lista View din Figura 3, n care alegem opiunea Datasheet View; liniile noii tabele vor fi cele din Figura 61,
6. Clic pe butonul Run i se afiaz caseta cu mesajul din Figura 62; clic pe butonul Yes i tabela este creat. Instruciunea SQL de creare a noii tabele este cea din Figura 63.
31
Se va proiecta tabela PROIECTE_ANGAJATI. Se vor defini condiiile de validare ORE >= 0, SAL_ORA>=20, ID_PRJ, 100 <= ID_PRJ <= 999, 1000 <= ID_ANG <= 9999. Se vor defini mti pentru introducerea cmpurilor ID_PRJ i ID_ANG. Se va defini nc un cmp, SALARIUL_TOTAL, ce va conine salariul total. Se va defini o interogare care s calculeze salariul total dup formula SALARIUL_TOTAL = SAL_ORA * ORE Se va scrie instruciunea UPDATE corespunztoare interogrii. 2. Fie tabela ANGAJATI de mai jos. Coloanele ID i SALARIU sunt de tip numeric, celelalte coloane sunt de tip text.
32
ANGAJATI ID 100 200 136 260 420 302 325 400 NUME Popescu Ionescu Vasilescu Georgescu Nicolae Gheorghe Vasile Popa PRENUME Ioan Vasile George Nicolae Dan Dan Nicolae George FACULTATE Matematica Electrotehnica Calculatoare Istorie Calculatoare Mecanica Fizica Chimie SALARIU 1100 1700 1490 820 1600 1420 1360 1650
Se va proiecta tabela ANGAJATI. Se vor defini condiiile de validare ID >= 100, SALARIU >= 600. Se va crea formulare de interogare care s micoreze salariul cu 15%. Se va scrie instruciunea UPDATE corespunztoare interogrii. 3. Fie tabela CHELTUIELI_PERSONALE de mai jos cu cheltuielile lunare ale unei familii. Toate coloanele sunt de tip numeric. CHELTUIELI_PERSONALE AN 2001 2002 2003 2004 2005 2006 VENITURI CHELTUIELI 420 370 430 410 520 500 540 548 625 590 590 620
Fie tabela NOI_CHELTUIELI_PERSONALE de mai jos cu cheltuielile lunare ale aceeai familii pe urmtorii trei ani. DATE_CONTABILE AN 2007 2008 2009 VENITURI CHELTUIELI 612 590 652 660 645 650
Se vor proiecta cele dou tabele. Se vor defini condiiile de validare VENITURI > 0, CHELTUIELI > 0. S se creeze o interogare care s insereze liniile tabelei NOI_CHELTUIELI_PERSONALE n tabela CHELTUIELI_PERSONALE.
33
4. Fie tabela SITUATIE_FINANCIARA_ORAS de mai jos. Toate coloanele sunt de tip numeric. SITUATIE_FINANCIARA_ORAS AN 2001 2002 2003 2004 2005 2006 VENITURI CHELTUIELI IMPRUMUTURI 420 440 470 410 550 500 620 648 705 690 690 720
Se va proiecta tabela SITUATIE_FINANCIARA_ORAS. Se vor defini condiiile de validare pentru cmpuri, VENITURI > 0, CHELTUIELI > 0, IMPRUMUTURI >= 0. Se va proiecta un formular de interogare pentru completarea cmpului IMPRUMUTURI. Formula de calcul a mprumuturilor este if(VENITURI < CHELTUIELI) IMPRUMUTURI = CHELTUIELI VENITURI else IMPRUMUTURI = 0 Se va proiecta un formular pentru inserarea unei linii n tabel cu datele anului 2007, VENITURI = 702, CHELTUIELI = 740.
34