You are on page 1of 63

Microsoft Acces

Universitatea OVIDIUS Constana Departamentul ID-IFR Facultatea Stiine Economice Specializarea Finane Bnci Forma de nvmnt ID Anul de studiu 1 Semestrul 2 Valabil ncepnd cu anul universitar 2009-2010

Caiet de Studiu Individual


pentru

Baze de date

Coordonator disciplin: Lect. drd. Jeflea Victor

Baze de date

Microsoft Acces

BAZE DE DATE
CUPRINS
Unitate Titlul de nvare INTRODUCERE 1 TABELE ACCESS
1.1. Familiarizarea cu mediul Access; 1.2. ntelegerea primelor noiuni teoretice: baz de date, tabele, nregistrri, cmpuri, structuri de tabele; 1.3. Definirea primelor structuri de tabele.

Pagina 1 4

CHEIE PRIMAR, CHEIE EXTERN, RELAII INTERTABELARE


2.1.Intelegerea notiunilor de cheie externa, relatii intre tabele, tabele master, tabele detail; 2.2.Definirea structurilor tabelelor din baza de date IMOBILIARE; 2.3.Crearea relatiilor intre tabele.

10

FORMULARE ACCESS
3.1. Proiectarea de formulare; 3.2.Proiectarea de formulare cu subformular;

17

INTEROGRI
4.1. Proiectarea unor interogri de selecie; 4.2.Proiectarea unor interogri de tip Make Table; 4.3. Proiectarea unor interogri de tip Update Query; 4.4.Proiectarea unor interogri de tip Delete; 4.5. Proiectarea unor interogri de tip Append ; 4.6.Proiectarea unor interogri de tip CrossTab

23

INTEROGRI SQL 5
5.1. Proiectarea unor interogri de selecie n SQL 5.2. Proiectarea unor interogri de tip Make Table n SQL 5.3. Proiectarea unor interogri de tip Update Query n 5.4. Proiectarea unor interogri de tip Delete n SQL 5.5. Proiectarea unor interogri de tip Append n SQL

36

Baze de date

Microsoft Acces 6

MACROURI
6.1. Proiectarea unor macro-uri pentru operaiuni asupra obiectelor bazei de date (tabele i formulare); 6.2. Proiectarea unor macro-uri care se lanseaz la apariia unor evenimente; 6.3. Ataarea unor macro-uri la butoane n cadrul formularelor.

45

53 7 VISUAL BASIC PENTRU APLICAII (VBA)


7.1. Utilizarea obiectelor DAO pentru crearea tabelelor; 7.2. Utilizarea obiectelor DAO pentru cutarea unor informaii n tabele; 7.3. Utilizarea obiectelor DAO pentru actualizarea tabelelor.

BIBLIOGRAFIE

63

Baze de date

Microsoft Acces

Unitatea de nvare Nr. 1


Tabele ACCESS
Cuprins Obiectivele Unitii de nvare Nr. 1 1.4. Familiarizarea cu mediul Access; 1.5. ntelegerea primelor noiuni teoretice: baz de date, tabele, nregistrri, cmpuri, structuri de tabele; 1.6. Definirea primelor structuri de tabele.

Test de autoevaluare Rspunsuri i comentarii la ntrebrile din testul de autoevaluare

Baze de date

Microsoft Access

Crearea tabelelor ACCESS


Cel mai raspindit procedeu de creere a unui tablou intr-o baza de date printre cele trei mentionate mai sus, precum: in design view using wizard prin introducerea directa a datelor, similar unei foi de calcul Excel, este cel in design view, pe care vom incerca sa-l explicam in detaliu in cele ce urmeaza. O tabela ACCESS in design view are doua parti: (i) partea superioara care contine numele cimpului (lungime mai mare de 64 de caractere, incluzind si spatile dintre acestea) cit si tipul de date utilizat (text, number, date/time, memo, autonumber, yes/no, currency, OLE object, hyperlink, lookup wizard) partea inferioara care contine proprietatile cimpurilor

(ii)

Deci de fiecare data cind creem un tabel in design view trebuie sa specificam proprietatile tabelului cit al cimpurilor sale. Proprietatile tabelelelor din ACCESS se aplica tabelului in mod global, introducerea acestora fiind optionala. Pentru specificarea acestor proprietati vom executa un clic pe butonul Proprietati de pe bara cu instrumente in modul de afisare Table Design. Drept efect pe ecran va apare o fereastra cu cele 10 proprietati ale tabelului creat anterior, Date personale, precum cea din figura 1.1.

Figura 1.1. Fereastra Table Properties pentru tabelul Date personale

Baze de date

Microsoft Access
Vom descrie pe scurt semnificatia fiecareia din cele zece proprietati: Description: descriere sumara sub forma de text a scopului tabelului (optional) Validation Rule: o expresie (formula) ce stabileste regulile de integritate a domeniului pentru mai multe cimpuri ale unui tabel (optional). Regula de validare introdusa se aplica tuturor cimpurilor din tabel. Validation text: specifica textul din caseta de mesaje care va fii afisata in cazul incalcarii uneia din regulile de validare a tabelului (optional) Filter: specifica o conditie care trebuie aplicata tabelului la deschiderea acestuia, limitind numarul inregistrarilor pe baza unor criterii de selectie indicate de utilizator (optional) Order By: specifica ordinea de sortare care trebuie aplicata unui tabel, ori de cite ori este deschis, inregistrarile fiind afistae in ordinea cheii primare, in cazul in care aceasta exista (optional) Subdatasheet Name: este o noua facilitate introdusa de ACCESS-2000, care determina oportunitatea si modul de afisare a datelor din inregistrarile inrudite in foile secundare. Valoare prestabilita (by default) este [Auto], care aduaga in mod automat foi de date secundare pentru inregistrarile legate din tabele inrudite, pe cind valoarea [None] dezactiveaza foile de date secundare (optional). Link Child Fields: specifica denumirea cimpului legat din tabelul inrudit (subordonat) ale carei inregistrari apar in foaia de date secundare, fiind conditionat de aplicarea optiunii Subdatasheet Name (optional). Link Master Fields: specifica denumirea cimpului de legatura din tabelul foii superioare sau al foii de date secundare, fiind conditionat de aplicarea optiunii Subdatasheet Name (optional). Subdatasheet Height: specifica inaltimea maxima a foii de date secundare, fiind conditionat de aplicarea optiunii Subdatasheet Name. Valoarea prestabilita este 0 si permite afisarea tuturor inregistrarilor inrudite din foaia de date secundare (optional). Subdatasheet Expanded: controleaza aspectul initial al foii de date secundare, fiind conditionata de aplicarea optiunii Subdatasheet Name. Selectia valorii [Yes] are drept effect deschiderea foii de date cu toate foile de date secundare deschise (optional). ACCESS 2000 are o ferestra Indexes pentru specificarea cheii principale si a tuturor indexurilor tabelului. Pentru selectarea cheii primare executam un clic pe Primary Key de pe bara cu instrumente. Este posibila uneori extinderea cheii principale pe mai multe cimpuri, situatie in care spunem ca tabelul are o cheie compusa.

Proprietatile care trebuiesc precizate in reteaua Table Design pentru fiecare cimp sint: Field Name: Specifica denumirea cimpului din prima coloana a tabelului. Denumirea cimpurilor nu poate depasi 64 de caractere, impreuna cu spatiile si semnele de punctuatie inglobate, cu exceptia punctelor (.), a semnelor de exclamatie (!) si a parantezelor drepte ([]). Fiecare cimp va avea un nume unic in tabela, iar asignarea lui este obligatorie pentru identificare. Data Type: specifica unul din urmatoarele tipuri de valoare ce se ataseaza in cea de-a doua coloana fiecarui cimp definit in prima coloana a tabelei:

Baze de date

Microsoft Access
o

o o o o

o o o

Text : este valoarea prestabilita fiecarui cimp din tabela, reprezentind orice combinatie de litere si numere de lungime maxima 255 caractere per fiecare inregistrare Memo: este de tip text care memoreaza pina la 64.000 caractere Number : spcifica orice numar ce poate fii memorat Date/Time : specifica data (ziua/luna/an), timpul sau o combinatie a celor doua Currency: specifica valoarea monedei care poate fii setata, intr-un format care include semnul dolarului ($) ca parte de inceput, numarul corect de zecimale, precum si pozitia virgulei in cazul formatului de reprezentare englezesc AutoNumber: specifica un numar intreg unic asignat automat fiecarei inregistrari in momentul creerii acesteia Yes/No: specifica o valoare logica, binara de tipul True/False, Yes/No, ori On/Off OLE Object (Object Linking and Embedding): specifica un sunet, desen, ori alt obiect precum un document Word, foaie de calcul Excel, etc., care este creat in alt program (embed object) Hyperlink: specifica o legatura (link) a bazei de date cu un anume site al Internetului, Intranetului sau o alta locatie din interiorul aceleiasi baze de date. Datele sint reprezentate printr-un sir de caractere compus din unul pina la patru subsiruri de caractere separate intre ele prin semnul pound (#):

Test de autoevaluare A 1. Gestiune personal A 1.1.1 Crearea bazei de date Gestiune Personal

Baza de date, cu numele Gestiune personal, va fi salvat pe calea C:\STUDENTI\AN 2\GRUPA 2xx\Nume_student. A 1.1.2 Crearea tabelului PERSONAL Pentru crearea unui tabel se apas butonul New , apoi se alege optiunea Design View, OK. n urma acestor aciuni va apare fereastra Table. Se vor introduce numele cmpurilor, tipul de date asociat cmpurilor respective, proprietile cmpurilor respective conform tabelului de mai jos:

Field Name

Data Type

Decimal Field Size / Places Format

Validation Rule

Lookup

Obs

Baze de date

Microsoft Access
Marca Autonumber Cheie primara 40 <>

Nume si Text prenume Adresa Stare civila Text Text

30 15

<> Lista de valori: Casatorit; Necasatorit; Divortat; Vaduv

Vechime Cod functie

Number Number

Integer Integer

>=0 >0

Cod sectie Number Salariu incadrare Currency

Integer Currency 0

>0 >0

Se salveaz tabelul cu numele Personal. A 1.1.3 Crearea tabelului Funcii Tabelul Funcii va avea structura din tabelul de mai jos:

Field Name

Data Type

Field Decimal Size / Places Format Integer

Validation Rule >0

Lookup

Obs

Cod functie Denumire functie

Number

Cheie primara

Text

20

<>

Baze de date

Microsoft Access
Se salveaz tabelul cu numele Functii.

A 1.1.4 Crearea tabelului Secii Tabelul Secii va avea structura din tabelul de mai jos: Field Name Data Type Field Decimal Size / Places Format Integer Validation Rule >0 Cheie primara Lookup Obs

Cod sectie Number

Denumire sectie

Text

20

<>

Se salveaz tabelul cu numele Sectii. A 1.1.5 Crearea tabelului Prezena Tabelul Prezen va avea structura din tabelul de mai jos:

Field Name

Data Type

Field Size Decimal / Format Places

Validation Rule >0

Lookup

Obs

Marca

Number

Long Integer Integer Currency

Ore efectuate Tarif /Ora

Number Currency

>0 >0

Se salveaz tabelul cu numele Prezenta

Baze de date

Microsoft Access

Unitatea de nvare Nr. 2


Cheie primar, cheie extern, relaii intertabelare
Cuprins Obiectivele Unitii de nvare Nr. 2 2.1.Intelegerea notiunilor de cheie externa, relatii intre tabele, tabele master, tabele detail; 2.2.Definirea structurilor tabelelor din baza de date IMOBILIARE; 2.3.Crearea relatiilor intre tabele. Test de autoevaluare Rspunsuri i comentarii la ntrebrile din testul de autoevaluare

Baze de date

10

Microsoft Access

Pentru a evita duplicarea informatiei intr-o baza de date prin repetarea unor cimpuri in mai mult de o tabela, ACCESS gaseste o modalitate simpla prin stabilirea unor relatii (maps) care leaga toate aceste cimpuri din tabele diferite impreuna. Pentru setarea unei baze de date relationale vom parcurge urmatoarele etape: Pasul 1: Clic butonul Relationships din bara de meniu Tools Pasul 2: Din fereastra Show Table clic pe butonul Show Table, double clic pe numele tabelelor pe care dorim sa le includem in relatii, clic pe butonul Add iar dupa ce terminam de adaugat toate aceste tabele care ne intereseaza clic Close, dupa cum putem observa din figura 2.1. Pasul 3: Pentru a lega cimpurile celor doua tabele intre ele vom trage oricare dintre cimpurile primei tabele pina il suprapunem pe unul din cimpurile celei de-a doua tabele si vom relaxa mouseul. Va apare in acest moment pe ecran o ferestra de dialog Edit Relationships. In acesta fereastra vom selecta diferite cimpuri daca este necesar si vom selecta o optiune din Enforce Referential Integrity daca este necesar. Aceste optiuni permit ACCESS-ului sa realizeze actualizarea automata a tabelelor de referinta in cazul unor modificari de inregistrari in una din aceste tabele. Activeaza casuta (check box) Enforce Referential Integrity pentru a ne asigura ca relatiile sint valide si datele nu sint accidental sterse cind datele sint adaugate, editate, sau sterse. Clic Create pentru a crea legatura (link) dintre cele doua tabele. Din acest moment o linie de interconexiune intre cele doua tabele va apare, dupa cum observam in figurile 2.2-2.3.

Figura 2.1.: Show Table-Relatii intre tabelele Date personale si Angajat ale aceleiasi baze de date data1

Baze de date

11

Microsoft Access
Foaia de date (datasheet) a tabelei relationale va furniza indicatori de extindere (expand) sau contractie (collapse) pentru a permite visualizarea foilor secundare (subdatasheets) ce contin informatii comune (matching information) din alte tabele. In exemplul nostru baza de date din tabelul Angajat a fost legata cu baza de date din tabelul Date personale, cele doua putind fii visualizate simultan folosind facilitatile furnizate de extindere (expand). Pentru a extinde sau contracta toate foile secundare impreuna vom utiliza Format|Subdatasheet|Expand All ori Collapse All din bara de meniu.

Figura. 2.2: Edit Relationships intre tabelul Angajat si tabelul date personale

Figura 2. 3: Legatura (link) dintre tabelul Angajat si tabelul Date personale ale aceleiasi baza de date data1

Baze de date

12

Microsoft Access

Test de autoevaluare A 2.1.1 Crearea bazei de date Imobiliare Baza de date, cu numele Imobiliare , va fi salvat pe calea C:\STUDENTI\AN 2\GRUPA 2xx\Nume_student. A 2.1.2. Crearea tabelului Proprietari Tabelul Proprietari va avea structura din tabelul de mai jos:

Field Name

Data Type

Decimal Field Size / Places Format Integer

Validation Rule >0

Lookup

Obs

Numar proprietar Nume proprietar Adresa proprietar Telefon proprietar

Number

Cheie primara

Text

40

<>

Text

30

<>

Text

10

<>

A 2.1.3 Crearea tabelului Ageni Tabelul Ageni va avea structura din tabelul de mai jos:

Field Name

Data Type

Field Decimal Size / Places Format Integer

Validation Rule >0

Lookup

Obs

Numar agent

Number

Cheie primara

Baze de date

13

Microsoft Access
Nume agent Adresa agent Telefon agent Text 40 <>

Text

30

<>

Text

10

<>

A 2.1.4 Crearea tabelului Imobile Tabelul Imobile va avea structura din tabelul de mai jos:

Field Name

Data Type

Field Decimal Size / Places Format Integer

Validation Rule >0

Lookup

Obs

Numar imobil Numar proprietar Numar agent Localitate Zona

Number

Cheie primara Tabel PROPRIETARI Tabel AGENTI Cheie externa Cheie externa

Number

Integer

>0

Number

Integer

>0

Text Text

20 15

<> <> Lista de valori: zona0;zona1; zona2 Lista de valori: garsoniera; apartament;casa

Tip imobil

Text

10

<>

Camere Adresa imobil

Number Text

Byte 30

>0 <>

Baze de date

14

Microsoft Access
Pret solicitat Pret vanzare Data vanzare Currency Currency 0 >0

Currency

Currency

>=0

Date/Time

Short Date

>#01/01/02#

Pentru definirea cheilor externe(Numr proprietar i Numr agent): se apas eticheta Lookup; pe linia Display Control se alege opiunea List Box; pe linia Row Source Type se alege opiunea Table/Query (este opiunea implicit); pe linia Row Source se selecteaz tabelul master (care trebuie pus n Lookup) . A.2.1.5. Crearea relaiilor dintre tabele Crearea relaiilor ntre tabele se face n dou etape: Etapa 1Definirea cheilor primare din tabelele master si a cheilor externe din tabelele detail. Etapa 2Crearea propriu zis a relaiilor dintre tabele. Etapa 1 a fost realizata cnd s-au definit structurile tabelelor. Pentru realizarea etapei 2 se va utiliza instrumentul Relationship. Legtura se face ntre tabelul master i tabelul detail pe cmpul care este cheie primar n master i cheie extern n tabelul detail.
1 MASTER DETAIL

Legturile dintre tabelele bazei de date sunt reprezentate grafic mai jos:
1 Proprietari Nr proprietar Imobile

Baze de date

15

Microsoft Access

1 Agenti Nr agent

Imobile

Crearea relaiilor utiliznd Relationship se va face parcurgnd etapele: Se apas butonul Relationship; Se selecteaz toate cele trei tabele i se apas pe butonul Add. Cele trei tabele apar pe fundalul ferestrei Relationships. Apoi se apasa pe butonul Close. Pentru a face prima legatur, dintre tabelul Proprietari i tabelul Imobile, se ia campul Nr proprietar din tabelul Proprietari si cu tehnica drag and drop se trece peste campul Nr proprietar din tabelul Imobile. Se bifeaz butoanele de validare Enforce Referential Integrity , Cascade Update Related Fields , Cascade Delete Related Records, apoi se apas pe butonul Create. Se procedeaz la fel i pentru legtura dintre tabelele Ageni i Imobile. Se nchide fereastra Relationships i se salveaz nainte de nchidere.

Baze de date

16

Microsoft Access

Unitatea de nvare Nr. 3


Formulare ACCESS
Cuprins Obiectivele Unitii de nvare Nr. 3 3.2.Proiectarea de formulare; 3.2.Proiectarea de formulare cu subformular; Test de autoevaluare Rspunsuri i comentarii la ntrebrile din testul de autoevaluare

Baze de date

17

Microsoft Access
Editarea Formelor In cazul modificarii unei forme in Design View urmatoarele elemente s-ar putea dovedi benefice atit pentru conceptor cit si pentru utilizator: Grid lines Prestabileste o serie de linii si puncte in Design View Form pentru a facilita alinierea cimpurilor din tabela. Pentru a bascula (toggle) aceasta caracteristica selectam View|Grid din bara de meniu. Snap to Grid - Selectam Format|Snap to Grid pentru alinierea formei obiectelor cu gridul pentru alinierea cu usurinta a obiectelor formei sau dezactivam (uncheck) aceasta caracteristica pentru a permite obiectelor sa fie mobile printre liniile de grid si puncte. Resizing Objects Permite redimensionarea obiectelor formei respective cu ajutorul mouseului. Change form object type Permite schimbarea tipului de obiect al formei fara a fii necesara creerea unei noi forme, prin executarea unui dreapta clic cu mouse-ul asupra obiectului respectiv urmata de selectia Change To si apoi reselectarea noului tip de obiect valabil din lista afisata in fereastra. Label/object alignment Fiecare obiect al formei precum si eticheta sa sint limitate si se deplaseaza impreuna ori de cite ori unul din ele este deplasat cu mouse-ul. Prin urmare pentru a schimba pozitia obiectului si a etichetei sale in raport unul cu celalalt mai intii pozitionam mouse-ul deasupra obiectului in coltul sting, executam un clic asupra sa si-l tragem in pozitia dorita. Tab order Altereaza ordinea obiectelor formei prin selectarea View|Tab Order... din bara de meniu. Form Appearance Schimba culoarea de fond a formei prin executarea unui clic pe butonul Fill/Back Color de pe bara de instrumente de formatare. Putem schimba culoarea fiecarui obiect individual al formei prin suprailuminarea obiectului si selectarea unei culori din paleta de culori Font/Fore Color a barei de instrumente de formatare. Fontul si marimea sa, efectul, alinierea, bordarea obiectelor precum si efectele speciale pot fii modificate folosind bara de instrumente de formatare.

Baze de date

18

Microsoft Access
Test de autoevaluare

A.3.1 Desfurarea lucrrii


A3.1.1 Formulare simple 1. S se elaboreze un formular pentru introducerea datelor n tabelul PROPRIETARI. Cu ajutorul acestui formular s se introduc urmtoarele date: Nr proprietar 10 11 Nume proprietar Ivanciu Adriana Daescu Daniel Adresa proprietar Telefon proprietar 0241690915 0217543175

Constanta, Str. Tractorului nr. 1 Bucuresti, Str. Castanilor nr. 26, Bl. A5, Ap 4 Iasi, Str. Razboieni nr. 58, Bl. DV12, Ap. 25 Galati, Str. Universitatii nr. 75

12

Ciulei Anghel

0232334015

13 14

Ismail Aihan

0236445098 0232340123

Motoc Elisabeta Iasi, Str. Eminescu nr. 55, Bl. E4, Ap. 3 Omer Abidin Paunescu Ionel Constanta, Str. Eliberarii nr. 10 Constanta, Str. Iasomiei nr. 33, Bl. ID9, Ap. 9

15 16

0241653308 0241631542

17

Peicu Aurelia

Bucuresti, Str. Arcului nr. 23, Bl. 0217683558 7A, Ap. 43 Bucuresti, Str. Razoare nr. 60, Bl. S2, Ap. 31 Constanta, Str. Nicolae Iorga nr. 34 Constanta, Str. Unirii nr. 187 0216889054

18

Uriasu Constantin Georgescu Mihai Ungureanu Marius Ionescu Maria

19

0241554489

20

0241678542

21

Constanta, Str. Mircea cel Batran 0241653341 nr. 23

Baze de date

19

Microsoft Access
2. S se elaboreze un formular pentru introducerea datelor n tabelul AGENTI. Cu ajutorul acestui formular s se introduca urmtoarele date: Numar agent 1501 Nume agent Adresa agent Telefon agent

Prisacaru Constantin Manea Nicolae Godeanu Maria

Constanta, Bd. Lapusneanu nr. 32, Bl. LS2, Ap. 14 Constanta, Bd. Mamaia nr. 185

0241580648

1502

0241648523

1503

Constanta, Str. Poporului nr. 79

0722586941

A 3.1.2 Formular cu subformular 1. Sa se elaboreze un formular cu subformular pentru tabelele AGENTI si IMOBILE. Cu ajutorul acestora sa se introduca urmatoarele imobile : Nr. proprietar Data vanzare Numar agent Pret solicitat Pret vanzare Tip imobil Localitate Camere Adresa imobil Str. Marasti nr. 56 Str. I.G. Duca nr. 35 Str. Mircea cel Batran nr. 77 Bd. Magheru nr. 44 Bd. Ferdinand nr. 10

Numar imobil

550 0 550 1 550 2

10

150 2 150 2 150 3

Constan ta Constan ta Constan ta

Zon a1 Zon a0 Zon a0

Zona

Apar t. Gars.

$25.000 $25.000 16.02.200 3 $18.000 $16.500 25.09.200 3 $45.000 $0

10

12

Casa

550 3

15

150 1

Bucures ti

Zon a0

Apar t.

$55.000 $53.000 30.10.200 3

550 4

19

150 1

Constan ta

Zon a1

Apar t.

$25.000 $25.000 20.12.200 2

Baze de date

20

Microsoft Access
550 5 11 150 1 Bucures ti Zon a2 Apar t. 2 str. Drumul Taberei nr. 129 Str. Tepes Voda nr. 12 Str. George Cosbuc nr. 23 Str. Unirii nr. 20 $23.000 $0

550 6 550 7

17

150 2 150 2

Bucures ti Bucures ti

Zon a1 Zon a0

Gars.

$14.000 $12.900 20.11.200 2 $18.000 $17.850 25.01.200 3

18

Gars.

550 8

12

150 3

Iasi

Zon a2

Casa

$21.000 $21.000 19.04.200 3

Nr. proprietar

550 9 551 0 551 1

14

150 3 150 1 150 1

Iasi

Zon a1 Zon a2 Zon a1

Garsonier a Apartame nt Apartame nt

Str. Vlaicu $13.00 $12.50 Voda nr. 9 0 0 Str. Viilor nr. 43 $18.00 14.500 0

29.08.20 03 19.05.20 03

16

Constan ta Constan ta

16

Bd. $16.00 $0 Lapusnean 0 u nr. 56 Str. Universita tii nr. 75 Str. Alba nr. 47 Constanta, Str. Unirii nr. 187 $21.00 $0 0

551 2

13

150 3

Galati

Zon a1

Apartame nt

551 3 551 4

13

150 3 150 2

Constan ta Constan ta

Zon a2 Zon a1

Casa

$26.00 $0 0 $30.00 $0 0

20

Apartame nt

Baze de date

Data vanzare
21

Numar agent

Pret solicitat

Pret vanzare

Tip imobil

Localitate

Camere

Adresa imobil

Numar imobil

Zona

Microsoft Access
551 5 21 150 2 Constan ta Zon a1 Casa 3 Constanta, Str. Mircea cel Batran nr. 23 $34.00 $0 0

2. Sa se inchida formularul. Apoi sa se introduca urmatorii proprietari : Numar proprieta Nume proprieta r Adresa proprieta r Telefon proprieta r 0745687123 0788953641 Camere Pret solicitat Pret vanzare

22

Vasilescu George Adam Anamaria

Eforie Nord, Str. Constanta nr. 12

23

Mangalia, Str. Saturn nr. 32, Bl. CS9, Ap. 43

3. Apoi sa se introduca agentul cu numarul 1504, Albu Andrei domiciliat in Mangalia, Bd. Libertatii nr. 43 si numrul de telefon 342657 4. S se introduc cele dou imobile din tabelul de mai jos. Localitat e Numar proprieNu-mar agent Numar imobil Data vanzare
22

5516

22

1504

Eforie Nord

Zona 1

Casa

Str. $55.000 $0 Constanta nr. 12 Str. Saturn nr. 32, Bl. CS9 $18.500 $0

5517

23

1504

Mangalia Zona 0

Apartament

OBS) Att agentul , ct i imobilul se vor introduce cu ajutorul formularului cu subformular.

Baze de date

Adresa imobil

Tip imobil

Zona

Microsoft Access

Unitatea de nvare Nr. 4


Interogri
Cuprins Obiectivele Unitii de nvare Nr. 4 4.1. Proiectarea unor interogri de selecie; 4.2. Proiectarea unor interogri de tip Make Table; 4.3. Proiectarea unor interogri de tip Update Query; 4.4. Proiectarea unor interogri de tip Delete; 4.5. Proiectarea unor interogri de tip Append ; 4.6. Proiectarea unor interogri de tip CrossTab Test de autoevaluare Rspunsuri i comentarii la ntrebrile din testul de autoevaluare

Baze de date

23

Microsoft Access
Query By Examples (QBE) si Structured Query Language (SQL) sunt limbaje industriale standard pentru manipularea si extragerea datelor din bazele de date relationale. Ambele limbaje sint la fel de bine cunoscute in lumea informaticii si cu mici exceptii sunt complet interschimbabile, astfel incit se poate trece usor dintr-un limbaj in celalat printr-un singur click al mouseului. Avantajul limbajului QBE este acela de a fi un limbaj grafic, mai atractiv si mult mai usor de utilizat. El lucreaza la nivelul tabelelor de interogare (dynaseturi) in Design View. Avantajul limbajului structurat SQL este acela de a fi cistigat foarte mult in popularitate in ultimul timp, fiind adoptat ca un limbaj universal in lumea bazelor de date relationale. Daca intelegem bine conceptele pe care se bazeaza filozofia celor doua limbaje, precum PROJECTION, SELECTION, SORT, JOIN, si CALCULATED FIELD, vom fi capabili sa manipulam cu aceeeasi usurinta ambele limbaje. De fapt, in ACCESS vom putea comuta dintr-un limbaj in altul in cadrul unei tabele de interogare printr-un simplu click al mouseului. Formatul grafic al dynasetului utilizat in Design View poate fi in mod egal supranumit QBE View. Bineinteles ca Microsoft utilizeaza in continuare denumirea consacrata de QBE din ratiuni lesne de inteles, atita timp cit acest limbaj a fost inventat de IBM si conceput ca o simpla metoda bazata pe text pentru introducerea formulelor de interogare. Cea de-a doua generatie de QBE devine cunoscuta sub numele de Graphical QBE deoarece utilizeaza o interfata tabelara grafica, similara celei utilizate azi de Microsoft. Pentru a intelege mai bine filozofia unui astfel de limbaj vom incerca sa aplicam toate conceptele de baza ale acestuia pe structura a o serie de tabele printre care ClientiTab, ProduseTab si MagazineTab create in baza de date C:\ tutorial1.mdb, prezentate in figurile 4.1- 4.3.

Figura 4.1: Strucutra tabelului ClientiTab

Figura 4.2: Structura tabelului ProduseTab

Baze de date

24

Microsoft Access

Figura 4.3: Tabelul MagazineTab

De fapt un QBE nu este altceva decit o interogatie pe baza criteriilor de sortare si operatorilor relationali introdusi direct pe interfata grafica reprezentata in figura 4.4.

Figura 4.4: Interfata grafica a unei interogatii Spre exemplu, daca din tabelul MagazineTab dorim sa cream o interogare MagazineQuery care sa contina doar primele trei cimpuri (MagazinID, Statut, TotalVinzari) vom utiliza interfata grafica din figura 4.5:

Baze de date

25

Microsoft Access

Figura 4.5: Interfata grafica pentru interogarea MagazineQuery

Rezultatul executiei prin apasarea butonului RUN din bara de meniu Query este cel prezentat in figura 4.6.

Figura 4.6:Rezultatul executiei actiunii de selectie de pe interfata grafica MagazineQuery

Baze de date

26

Microsoft Access
Daca executam un click pe optiunea SQL View din meniul File (vizibil in partea stinga sus a interogatiei MagazineQuery vom obtine echivalentul SQL al interfetei grafice QBE, prezentat in figura 4.7:

Figura 4.7: Echivalentul SQL al unei interfete grafice QBE Aceasta trecere de la o interfata grafica QBE la echivalentul sau SQL este bidirectionala. Deci putem trece cu aceeasi usurinta de la fereastra editor SQL la echivalentul sau QBE printr-un simplu click pe Design View din meniul File (vizibil in partea stinga sus a interfetei grafice), dupa cum putea vedea in figura 4.8.

Baze de date

27

Microsoft Access

Figura 4.8: QBE-echivalentul ferestrei editor SQL

Test de autoevaluare A.4.1.1. Interogri de selecie simple 1. S se creeze o interogare care s afieze lista localitilor n care au fost scoase imobile la vnzare. Linia FIELD Localitate Linia TABLE IMOBILE Linia SHOW

2. S se modifice interogarea de mai sus astfel nct s afieze doar localitile n care exist imobile nevndute. Linia FIELD Linia TABLE Linia SHOW =0 Linia CRITERIA

Localitate Pret vanzare

IMOBILE IMOBILE

Baze de date

28

Microsoft Access
sau :

Linia FIELD Localitate Data vanzare

Linia TABLE

Linia SHOW

Linia CRITERIA

IMOBILE IMOBILE

Is Null

3. S se proiecteze o interogare care s afieze imobilele vndute ncepnd din 01.08.2003 pn la data de astzi. Linia FIELD Numar imobil Localitate Zona Tip imobil Camere Data vanzare Linia TABLE Linia SHOW >=#01/08/2003# Linia CRITERIA

IMOBILE

IMOBILE IMOBILE IMOBILE IMOBILE IMOBILE

4. S se proiecteze o interogare care s afieze imobilele nevndute (Numar imobil, Localitate, Zona, Adresa, Tip imobil, Camere, Pret solicitat). Este nevoie de un cmp care s nu fie afiat dar n care s se scrie criteriul de selecie. 5. S se proiecteze o interogare care s afieze toi proprietarii din baza de date (Nume proprietar, Adresa proprietar, Telefon proprietar). 6. Sa se proiecteze o interogare care s afieze oferta pentru imobilele din Constana din zona 0 (Tip imobil, Camere, Adresa imobil, Pret solicitat). 7. S se proiecteze o interogare care s afieze toate vnzarile din 2003.

Baze de date

29

Microsoft Access
8. S se proiecteze o interogare care s afieze toate vnzrile dintre 01.05.2003 i 30.09.2003 . 9. S se proiecteze o interogare care s afieze toate vnzrile din Constana. 10. S se proiecteze o interogare care s afieze toate vnzrile realizate de agentul imobiliar Manea. 11. S se proiecteze o interogare care s afieze toate proprietile din Bucureti , zona 0. 12. S se proiecteze o interogare care s afieze toate vnzrile din Constana, realizate de agentul imobiliar Priscaru Constantin n 2002.

A.4.2.1 Interogri de selecie cu sintetizarea datelor 1. S se proiecteze o interogare care s afieze cte imobile a vndut fiecare agent. FIELD Numar agent Nume agent Vanzari efectuate:Nu mar imobil Pret vanzare TABLE IMOBILE AGENTI IMOBILE TOTAL Group by Group by Count SHOW CRITERIA

IMOBILE

Where

<>0

2. S se proiecteze o interogare care s afieze cte imobile are fiecare proprietar. FIELD Numar proprietar Nume proprietar Numar imobile:Numar imobil Data vanzare TABLE IMOBILE TOTAL Group by SHOW CRITERIA

PROPRIE TARI IMOBILE

Group by

Count

IMOBILE

Where

Is Null

Baze de date

30

Microsoft Access
3. S se proiecteze o interogare care s afieze toi agenii care au efectuat mai mult de o tranzactie. FIELD TABLE TOTAL SHOW >1 CRITERI A

Numar agent Nume agent

IMOBILE AGENTI

Group by Group by Count

Vanzari IMOBILE efectuate:Numar imobil Pret vanzare IMOBILE

Where

<>0

4. S se proiecteze o interogare care s afieze toi agenii care au efectuat cel puin trei tranzacii n anul care a trecut. FIELD Numar agent Nume agent TABLE IMOBILE AGENTI TOTAL Group by Group by Count >=3 CRITERIA

Vanzari IMOBILE efectuate:Numar imobil Year([Data vanzare]) IMOBILE

Where

=Year(Date())-1

5. S se proiecteze o interogare care s afieze toi agenii care nu au vndut nimic n ultima lun (Data vanzare< Date()-30 Or Is Null). FIELD TABLE TOTAL SHOW <Date()30 Or Is Null CRITERI A

Numar agent Nume agent Data vanzare

IMOBILE AGENTI IMOBILE

Group by Group by Max

Baze de date

31

Microsoft Access

6. S se proiecteze o interogare care s calculeze preul mediu solicitat pe apartament, n funcie de localitatea i zona n care este situat imobilul. FIELD TABLE TOTAL SHO W CRITERIA

Localitate Zona

IMOBILE IMOBILE

Group by Group by Avg

Pret mediu;Pret IMOBILE solicitat Tip imobil IMOBILE

Where

Apartament

7. Sa se proiecteze o interogare care sa calculeze pretul de vanzare mediu pentru fiecare tip de imobil, in functie de localitatea in care este situat imobilul. 8. Sa se proiecteze o interogare care sa afiseze lista descrescatoare cu sarcinile fiecarui agent (cate imobile mai are de vandut). FIELD Numar agent Nume agent Sarcini:Numar imobil Data vanzare TABLE IMOBILE AGENTI IMOBILE TOTAL Group by Group by Count Descending SORT CRITERIA

IMOBILE

Where

Is Null

9. S se proiecteze o interogare care s afieze suma vnzrilor n luna curent pe fiecare agent (n ordine crescatoare). FIELD TABLE TOTAL SORT CRITERI A

Numar agent

IMOBILE

Group by Group by

Nume agent

AGENTI

Baze de date

32

Microsoft Access
Suma vanzare vanzari:Pret IMOBILE Sum Ascending

Month([Data vanzare])

Where

Month(Da te())

A.4.3.1. Make Table Query 1. S se proiecteze o interogare care s creeze un nou tabel Agenti_A, care cuprinde cmpurile numar agent, nume agent, telefon agent, pentru toi agenii ale cror nume ncep cu litera A . 2. S se proiecteze o interogare care s creeze un nou tabel COMISION, care cuprinde cmpurile nume agent, numar imobil, localitate, zona, tip imobil, camere, comision (7% din pretul de vanzare) pentru toate imobilele vndute n anul curent. FIELD Nume agent Numar imobil Localitate Zona Tip imobil Camere Comision:7/100*[Pret vanzare] Year([Data vanzare]) TABLE AGENTI IMOBILE IMOBILE IMOBILE IMOBILE IMOBILE IMOBILE SHOW CRITERIA

Year(Date())

3. S se creeze o relaie de tip one to many ntre tabelele IMOBILE i COMISION pe cmpul Numr imobil (acest cmp trebuie definit mai inti ca i cheie extern). A 4.4.1. Update Query a) S se creeze o interogare care s mreasca preul solicitat cu 10% pentru imobilele nevndute.

Baze de date

33

Microsoft Access
FIELD Pret solicitat Data vanzare TABLE IMOBILE Update to [Imobile].[Pret solicitat]*110/100 Is Null CRITERIA

IMOBILE

b) S se proiecteze o interogare care s scad preul solicitat cu 5% pentru imobilele cu mai mult de 4 camere . c) S se proiecteze o interogare care s adauge cmpului comision din tabela COMISION nca 10$ . A 4.5.1. Delete Query a) S se creeze o interogare care s tearg din baza de date imobilele vndute nainte de 01.01.2003. FIELD TABLE Delete CRITERIA

Imobile.* Data vanzare

IMOBILE IMOBILE

From Where <#01.01.2003 #

b) S se creeze o interogare care s tearg din tabelul Comision toate nregistrrile corespunztoare agenilor care ncep cu litera M. FIELD Comision. * Nume agent TABLE COMISION Delete From CRITERIA

COMISION

Where

Like M*

c) S se proiecteze o interogare care s tearg din tabelul COMISION toate imobilele pentru care s-a luat un comision mai mic de 910$ (13.000$*7%=910$).

Baze de date

34

Microsoft Access
A.5.1.1. Append Query a) S se creeze o interogare care s adauge n tabelul AGENTI_A toi agenii ale caror nume ncep cu litera G.

FIELD Numar agent Nume agent Telefon agent

TABLE AGENTI

Append To Numar agent

CRITERIA

AGENTI

Nume agent

Like G*

AGENTI

Telefon agent

Baze de date

35

Microsoft Access

Unitatea de nvare Nr. 5


Interogari SQL
Cuprins Obiectivele Unitii de nvare Nr. 5 5.6. 5.7. 5.8. 5.9. 5.10. Proiectarea unor interogri de selecie n SQL Proiectarea unor interogri de tip Make Table n SQL Proiectarea unor interogri de tip Update Query n Proiectarea unor interogri de tip Delete n SQL Proiectarea unor interogri de tip Append n SQL

Test de autoevaluare Rspunsuri i comentarii la ntrebrile din testul de autoevaluare

Baze de date

36

Microsoft Access
Limbajul SQL este un limbaj de interogare orientat pe rezultate folosit la accesarea datelor pentru interogare, insertie, actualizare si modificari structurale. Desi limbajul SQL este cel mai puternic sub aspectul posibilitatii de asigurare a interogarilor, are functii cu mult mai puternice decit simpla regasire a datelor. Printre functiile sale amintim:: Executia de interogari Crearea bazelor de date Crearea si modificarea structurii tabelelor Insertia de inregistrari noi Modificarea inregistrarilor existente Crearea de relatii multitabel Limbajul de programare structurat SQL a fost creat pentru a indica bazei de date CE ANUME doreste utilizatorul sa efectueze, si nu CUM sa se efectueze actiunea respectiva, comparativ cu limbajul VISUAL BASIC pentru APLICATII (VBA) care indica calculatorului exact operatiile pe care acesta trebuie sa le execute secvential. O interogare transmite pur si simplu o cerere de extragere dintr-o baza de date a unor inregistrari care satisfac anumite criterii. Serverul bazei de date care intelege limbajul de interogare structurat SQL determina cele mai eficiente mijloace de satisfacere a cererii de date. Un astfel de limbaje structurat este construit in esenta pentru a permite generarea unui proces de interogare robust. O instructiune SQL este alcatuita, in esenta, din patru formulare: SELECT pentru generarea unei interogari UPDATE pentru modificarea datelor stocate intr-una sau mai multe inregistrari INSERT pentru inserarea unei noi inregistrari in tabelul specificat CREATE pentru construirea unui nou tabel, o noua vedere sau unei noi structuri din baza de date. Limbajul de programare structurat SQL consista dintr-un numar de cuvinte cheie si concepte de baza. Vom aplica toate aceste cuvinte cheie si concepte de baza pe structura mai multor tabele, special create in acest scop, printre care ClientiTab, ProduseTab, MagazineTab,. Pentru a accesa editorul de text vom incerca sa cream in Design View o noua interogare, inchizind de aceasta data caseta de dialog cu optiunea Show Table, fara a adauga vreuna din aceste tabele. Selectam din meniul View optiunea SQL View (figura 5.1) pentru a comuta de pe interfata grafica (QBE) pe editorul de text al liniilor de cod SQL (figura 5.2). Pentru vizualizarea rezultatelor in orice moment in ferestra editor SQL vom inscrie numele interogarii, iar apoi vom selecta ViewDatasheet (figura 5.3). Pentru a comuta din nou in QBE mode (interfata grafica), in scopul vizualizarii aceleasi interogari, vom selecta View Design View. (figura 5.4).

Baze de date

37

Microsoft Access

Figura 5.1: Crearea in Design View a unei noi interogari

Figura 5.2: Fereastra editor SQL cu prima linie de cod SQL de tip SELECT.

Figura 5.3: Vizualizarea rezultatelor in Datasheet View

FiFigura 5.4: Comutarea din SQL mode in QBE mode

Baze de date

38

Microsoft Access

Dupa cum putem observa construirea unei interogari SQL nu prezinta dificultati, ca de altfel nici comutarea dintr-un mod in celalat. Vom vedea in cele ce urmeaza ca nici sintaxa liniilor de cod SQL nu este complicata, cu exceptia cazurilor de scriere a unor linii de cod SQL prea lungi ce ar putea conduce la aparitia erorilor. Din acest motiv in Access este de preferat utilizarea limbajului grafic QBE decit a celui structurat SQL. In general pentru scrierea liniilor de cod SQL pentru operarea unor interogari de baza utilizam urmatoarele cuvinte cheie: SELECTFROM ce returneaza un set de inregistrari din unul sau mai multe tabele SELECTINTO ce transfera inregistrarile unor cimpuri dintr-unul sau mai multe tabele intrun nou tabel (make table-query) DISTINCT ce returneaza numai inregistrarile distincte din cimpurile uni tabel sau a mai multor tabele (elimina inregistrarile duplicate) WHERE ce defineste conditiile folosite pentru evaluarea inregistrarilor returnate WHERELIKE ce defineste sablonul folosit pentru evaluarea inregistrarilor returnate WHEREIN ce defineste un grup de valori folosit pentru evaluarea inregistrarilor returnate ORDER BY ce defineste ordinea de sortare care va fi respectata de inregistrarile din setul de inregistrari returnat dupa anumite criterii GROUP BY ce grupeaza inregistrarile din setul de inregistrari returnat dupa anumite criterii Sum, Avg, Count, Max, Min, Var, StDev, First, Last pentru efectuarea unor operatii aritmetice, calculul unor statistici (medie aritmetica, varianta sau deviatie standard), selectia valorii maxime sau minime a unei inregistrari, sau selectia primei sau ultimei inregistrari dintr-un tabel Having ce specifica care inregistrari grupate sint afisate printr-o instructiune SELECT combinata cu o clauza de tip GROUP BY. AS pentru desemnarea unui alias INNER JOIN, LEFT JOIN, RIGHT JOIN pentru combinarea inregistrarilor a doua sau mai multe tabele INSERT ce insereaza o noua inregistrare si valorile specificate intr-un tabel UNION ce returneaza un set de inregistrari care contine seturile combinate a doua sau mai multe inregistrari UPDATE ce actualizeaza una sau mai multe inregistrari la valorile specificate CREATE TABLE ce defineste un tabel nou in baza de date curenta. ALTER TABLE ce defineste noi cimpuri in cadrul tabelului din baza curenta DROP TABLE ce sterge un tabel al bazei de date CREATE INDEX ce creaza un index pentru un tabel al bazei de date curente pentru care se specifica un anumita inregistrae sau un anumit cimp. DROP INDEX ce sterge indexul aferent unui anumit

Baze de date

39

Microsoft Access

Test de autoevaluare A.5.1 Desfurarea lucrrii

1. Sa se creeze un tabel cu numele Furniz2 n care COD_F este cheie primar : COD_F Number DEN_F Text(20) LOCALIT Text(15) ADRESA Text(30)

CREATE TABLE Furniz2( COD_F Number NOT NULL PRIMARY KEY, DEN_F Char(20), Localit Char(15), Adresa Char(30) ); 2. In tabelul Furniz2 sa se scrie inregistrarea (533,Ionescu Ion,Satu Mare,Str. Republicii nr. 9). INSERT INTO Furniz2 ( COD_F, DEN_F, Localit, Adresa ) VALUES (533, "Ionescu Ion", "Satu Mare", "Str. Republicii nr. 9");

3. In tabelul Furniz2 sa se adauge campul COD_F Text(10). ALTER TABLE Furniz2 ADD COLUMN COD_FIS Char(10);

Baze de date

40

Microsoft Access
4. Sa se adauge in tabelul Furniz2 date din tabelul FURNIZOR pentru Cod furnizor cuprins intre 1 si 4 (Append Query). INSERT INTO Furniz2 ( COD_F, DEN_F, ADRESA, COD_FISC ) SELECT Cod_furnizor, Den_furnizor, Adresa, Cod_fiscal FROM FURNIZOR WHERE Cod_furnizor BETWEEN 1 AND 4;

5. Sa se stearga din tabelul Furniz2 inregistrarea corespunzatoare Query) . DELETE * FROM Furniz2 WHERE COD_F=3;

COD_F=3 (Delete

6. S se tearg din tabelul Furniz2 nregistrarea corespunztoare DEN_F care ncep cu litera O (Delete Query) . DELETE * FROM Furniz2 WHERE DEN_F LIKE "O*";

7. Sa se stearga tabelul Furniz2 din baza de date. DROP TABLE Furniz2;

8. Sa se vizualizeze campurile COD_MAT,DEN_MAT,UM,COTA_TVA pentru toate materialele din nomenclatorul de materiale (Interogare simpla de selectie) .

Baze de date

41

Microsoft Access

SELECT COD_MAT, DEN_MAT, UM, COTA_TVA FROM MATERIALE;

9. Sa se vizualizeze campurile NR_FACTURA,DATA,VALOARE pentru facturile emise de furnizorul cu codul=1 (Interogare simpla de selectie) . SELECT NR_FACTURA, DATA, VALOARE FROM FACTURI WHERE COD_FURNIZOR=1;

10. Sa se vizualizeze codurile materialelor si cantitatile consumate pentru materialele de pe bonul de consum cu numarul 2 (Interogare simpla de selectie) . SELECT [MATERIALE CONSUMATE].COD_MAT, [MATERIALE CONSUMATE].CANTITATE FROM [MATERIALE CONSUMATE] WHERE [MATERIALE CONSUMATE].NR_BON_CONSUM=2;

11. Sa se vizualizeze totalul valorilor facturilor emise de fiecare furnizor (Interogare de sinteza) . SELECT COD_FURNIZOR, Sum(VALOARE) AS Total_valoare_facturi FROM FACTURI GROUP BY COD_FURNIZOR;

12. Sa se vizualizeze minimul cantitatii aprovizionate pe fiecare cod_mat (Interogare de sinteza) .

Baze de date

42

Microsoft Access

SELECT COD_MAT, MIN(CANTITATE) AS Minim_cant_aprovizionata FROM [MATERIAL APROVIZIONAT] GROUP BY COD_MAT;

13. Sa se vizualizeze media pretului de achizitie pentru materialul cu codul material=3 (Interogare de sinteza) . SELECT COD_MAT, AVG(PRET_ACHIZITIE) AS Medie_pret FROM [MATERIAL APROVIZIONAT] GROUP BY COD_MAT HAVING COD_MAT=3;

14. Cu ajutorul inregistrarilor din tabelul MATERIALE, sa se creeze un tabel cu numele MAT2 care contine campurile COD_MAT, DEN_MAT, UM , pentru materialele al caror nume incepe cu litera C (Make Table Query) . SELECT COD_MAT, DEN_MAT, UM INTO Mat2 FROM MATERIALE WHERE DEN_MAT LIKE "C*";

15. Cu ajutorul inregistrarilor din tabelul FACTURI, sa se creeze un tabel cu numele Fact2 care contine campurile NR_FACTURA, DATA, VALOARE pentru furnizorii al caror cod este cuprins intre 2 si 5 (Make Table Query) . SELECT NR_FACTURA, DATA, VALOARE INTO Fact2 FROM FACTURI WHERE COD_FURNIZOR BETWEEN 2 AND 5;

Baze de date

43

Microsoft Access
16. Sa se actualizeze valorile facturilor din tabelul Fact2 in sensul cresterii lor cu 1000 unitati (Update Query) . UPDATE Fact2 SET VALOARE = VALOARE+1000;

17. Sa se actualizeze campurile CANTITATE (creste cu 10%) si PRET_ACHIZITIE (scade cu 2%) din tabelul MATERIAL APROVIZIONAT pentru COD_MAT=1 (Update Query) . UPDATE [MATERIAL APROVIZIONAT] SET CANTITATE = CANTITATE*110/100, PRET_ACHIZITIE = PRET_ACHIZITIE*98/100 WHERE COD_MAT=1;

18. Sa se adauge in tabelul Mat2 inregistrari din tabelul MATERIALE pentru DEN_MAT ce incepe cu litera T (Append Query) . INSERT INTO Mat2 ( COD_MAT, DEN_MAT, UM ) SELECT COD_MAT, DEN_MAT, UM FROM MATERIALE WHERE DEN_MAT LIKE "T*";

19. Sa se stearga tabelul Mat2 din baza de date. DROP TABLE Mat2

20. Sa se stearga tabelul Fact2 din baza de date. DROP TABLE Fact2

Baze de date

44

Microsoft Access

Unitatea de nvare Nr. 6


Macrouri
Cuprins Obiectivele Unitii de nvare Nr. 6 6.4. Proiectarea unor macro-uri pentru operaiuni asupra obiectelor bazei de date (tabele i formulare); 6.5. Proiectarea unor macro-uri care se lanseaz la apariia unor evenimente; 6.6. Ataarea unor macro-uri la butoane n cadrul formularelor. Test de autoevaluare Rspunsuri i comentarii la ntrebrile din testul de autoevaluare Pagina

Baze de date

45

Microsoft Access
Termenul macro este o abreviere pentru macro-instructiune sau macroprogram, construit pe baza unei macro-instructiuni sau a mai multora. O instructiune sau comanda nu este altceva decit un ordin dat unui calculator pentru a executa o actiune. Pentru cei care cunosc cite ceva despre limbajul masina al unui calculator (Assembler) pot sa realizeze mai bine modul cum lucreaza aceste instructiuni, stiind faptul ca un program de nivel jos (limbaj masina) este o succesiune de instructiuni executate secvential, adeseori cu intrari in subrutine pentru executarea actiunilor repetitive, cu salturi sau reveniri la programul principal. In cazul unui limbaj de nivel inalt, precum Visual Basic, C, Pascal, Fortran, o instructiune declanseaza in general executia mai multor instructiuni elementare. Prin urmare, o macro-instructiune nu poate fii altceva decit un imperiu al instructiunilor elementare, construit pe baza uneia sau a mai multor instructiuni compuse. Pentru a fi mult mai precis, o macro-instructiune declanseaza executia unui mare numar de sarcini elementare, realizind automatizarea de sarcini repetitive ale unei operatii particulare, precum in Microsoft Access deschiderea sau inchiderea unei tabele, interogatii, formular, raport, editarea sau tiparirea acestora, click-ul unui mouse, afisarea unui mesaj, avertizarea printr-un semnal sonor (Beep), etc. Folosirea expresiilor de macro-program sau macroprogramare in Microsoft Access este improprie, deoarece macro-urile nu sint utilizate pentru a face programare in adevaratul sens al cuvintului, precum limbajul evoluat Visual Basic pentru Aplicatii (VBA), devenit cel mai popular limbaj de programare a aplicatiilor din Microsoft Access, din ultimii ani! Spunem acest lucru bazindu-ne pe urmatoarele argumente: un macro (macroprogram) nu opereaza cu variabile ce pot fii modificate pe parcursul executiei macroprogramului, precum opereaza un adevarat limbaj de programare. De exemplu, daca un macro deschide un fisier, care apoi isi schimba numele, drept consecinta va trebui sa corectam complet macro-ul respectiv. Saltul conditional intr-o subrutina este fie absent sau foarte sumar. Actiunile unui macro se executa secvential si destul de rar intilnim executii conditionale. Nu exista bucle neconditionale sau conditionale de tipul For.Next, If..ThenElse If, DoWhile, Do Until, Select Case, etc., ce sint nelipsite dintr-un limbaj de programare pentru asigurarea unei mari flexibilitati in interpretarea si luarea deciziilor. Tratarea erorilor nu exista. Daca un macro provoaca o eroare de executie, in consecinta afiseaza un mesaj de eroare si apoi se opreste din executie. In ultimul timp, dupa aparitia si cresterea exploziva a evantaiului de aplicatii ale limbajului Visual Basic pentru Aplicatii (VBA) in cadrul Microsoft Access, macro-urile pierd din ce in ce mai mult teren, fiind preferate in special de utilizatori care nu au notiuni de programare sau nu sint confortabili cu utilizarea unui limbaj de programare. Punctul forte al macro-urilor ramine in continuare automatizarea sarcinilor repetitive, ce le intilnim cu o intensitate din ce in ce mai mare in aplicatiile Access, Excel, Word, Outlook, sau in cazul oricarui alt logiciel. O astfel de automatizare prezinta doua avantaje esentiale: Economie de timp Eliminarea riscului de erori

Baze de date

46

Microsoft Access
Se subintelege de fapt faptul ca un macro nu poate automatiza decit operatiile manuale bine puse la punct. Macro-urile sint foarte bine legate de specificul unui anume logiciel. De exemplu, macrourile din Access sint complet diferite de cele din Excel, Word sau Outlook. Intilnim macro-uri intrun mare numar de logiciele de pe piata produselor informatice, ca de altfel si in cadrul anumitor sisteme de exploatare, precum sistemele Windows 9x, 2000, sau XP. Conceptia acestor macro-uri, usurinta cu care pot fi aplicate in rezolvarea unei aplicatii, precum si serviciile pe care le pot aduce utilizatorului, variaza de la un logiciel la altul. In aceasta era informational exploziva Bazele de date au o evolutie dinamica, crescind intr-o maniera regulata capacitatea lor de stocare a datelor. Impactul noilor date cu Baza de date face obiectul unor operatii recursive precum: Import Reformatare (modificari, eliminari) Analiza (interogari multiple) Inregistrare (in afara Bazei de date, intr-un format particular) Introducerea si afisarea datelor intr-un anume format (tabele, interogari, formulare, rapoarte) Expediere prin posta electronica Export (catre o alta Baza de date sau alt calculator), etc.

Macro-urile pot regrupa toate actiunile repetitive asociate acestor operatii, si de fapt aceasta reprezinta obiectivul lor principal. O aplicatie secundara a macro-urilor consista in asocierea butoanelor de comanda, verificare (check) sau de control. Toti utilizatorii Bazelor de date carora le place mediul de reprezentare grafica a informatiilor isi acopera formularele, rapoartele precum si meniurile acestora cu fel si fel de butonase! Inca o data dorim sa precizam faptul ca profesionistii care se ocupa de dezvoltarea aplicatiilor Access se folosesc din ce in ce mai putin de macro-uri. Ei prefera sa utilizeze din ce in ce mai mult Visual Basic pentru Aplicatii (VBA), o extensie a limbajului de programare Visual Basic care permite manipularea obiectelor Access ( tabele, interogatii, formulare, rapoarte, macro-uri, module), fara a se limita la macro-uri. Utilizatorii care nu sint profesionisti prefera mai degraba utilizarea macro-urilor decit VBA-ul, deoarece procesul de invatare si de deprindere a lucrului cu acestea este mult mai rapid si mai usor. In cele ce urmeaza, in cadrul acestui capitol, ne vom limita doar la utilizarea celor mai reprezentative actiuni utilizabile pentru crearea unui macro in scopul dezvoltarii unei aplicatii Access, tinind cont de faptul ca lista Access contine aproape 50 de astfel de actiuni. Scopul nostru este doar de a incinta interesul cititorului in fascinanta lume a macroprogramarii, precum si de a arata ce putem face cu macro-urile, iar cind este cazul sa subliniem ce nu putem face cu acestea!

Baze de date

47

Microsoft Access

Test de autoevaluare

A.6.1. S se scrie un macro care s deschid tabelul Facturi.

1. S se scrie un macro care s deschid formularul Materiale.

Baze de date

48

Microsoft Access

2. S se scrie un macro care s deschid o interogare.

3. S se un macro care s se execute la deschiderea bazei de date (Autoexec). Se va schimba numele unuia din cele de la punctele 1, 2 sau 3 n Autoexec. 4. S se introduc valorile pentru cmpul stoc_inceput cu formularul Materiale. Pentru cmpul stoc_nceput din formularul Materiale la sectiunea Events, After Update se va preciza macroul care contine urmtoarele:

Baze de date

49

Microsoft Access
5. S se scrie un macro care se lanseaz la evenimentul OnMouseMove. Se va utiliza Msgbox cu texte de explicaie despre cmpul respectiv. De exemplu, dac se plaseaz mouse-ul deasupra cmpului den_mat s apar o explicaie de genul : Se introduce denumirea materialului. Pentru aceasta, se va ataa evenimentului OnMouseMove un macro care conine o aciune Msgbox cu textul Se introduce denumirea materialului.

6. S se proiecteze un macro care s gseasc o nregistrare n tabelul Materiale. Se va cuta dup cuvntul cheie. Se vor utiliza aciunile OpenTable i FindRecord.

Baze de date

50

Microsoft Access
7. S se proiecteze un macro care s afieze data curent.

8. S se proiecteze un macro care s afieze ora exact. Se va utiliza funcia Time.

9. S se creeze butoane de navigare n locul celor implicite. Un buton se va denumi Precedent i unul Urmtor. Fiecrui buton i se va ataa un macro cu aciunea GotoRecord i opiunea Record=Previous, respectiv GotoRecord i opiunea Record=Next.

Baze de date

51

Microsoft Access

Baze de date

52

Microsoft Access

Unitatea de nvare Nr. 7


VISUAL BASIC pentru Aplicaii (VBA)
Cuprins Obiectivele Unitii de nvare Nr. 7 7.4. Utilizarea obiectelor DAO pentru crearea tabelelor; 7.5. Utilizarea obiectelor DAO pentru cutarea unor informaii n tabele; 7.6. Utilizarea obiectelor DAO pentru actualizarea tabelelor. Test de autoevaluare Rspunsuri i comentarii la ntrebrile din testul de autoevaluare

Baze de date

53

Microsoft Access

VISUAL BASIC este un limbaj de programare de inalt nivel facindu-si pentru prima data aparitia in prima sa versiune DOS numita BASIC (Beginers Allpurpose Symbolic Instruction Code). El este cel mai prietenos si cel mai usor de invatat limbaj de programare. Diferite companii produc software sub diferite versiuni BASIC, printer care enumeram: Microsoft QBASIC furnizat o data cu sistemul de operare Windows 95, 98. QuickBASIC GWBASIC IBM BASICA VISUAL BASIC este un limbaj de programare VISUAL operind intr-un mediu grafic bazat pe reprezentari sub forma de obiecte pe cind ascendentul sau BASIC este un limbaj de programare ce opereaza intr-un mediu de programare text, programul executindu-se secvential. Un program VISUAL BASIC este o colectie de subprograme , fiecare cu codul sau de program ce poate fii executat independent si simultan, si care pot fii legate intre ele intr-un mod sau altul. In momentul lansarii in executie VISUAL BASIC 6 va afisa un ecran celui din figura 8.1. Putem alege una dintre urmatoarele optiuni: Creerea unui nou proiect Deschiderea unui proiect existent Selectia unei liste a recentelor programe deja deschise

Un proiect reprezinta o colectie de fisiere care compun un anumit tip de aplicatie. Obiectivul prioritar este de a creea programe standard executabile, cu extensia .EXE. Prin urmare vom executa clic pe icoana Standard EXE pentru a intra in mediul de programare VISUAL BASIC. Ecranul care apare din figura 8.2 indica mediul VISUAL elemente: BASIC ce contine urmatoarele

Fereastra Blank Form unde putem realiza design-ul interfetei aplicatiei ce urmeaza so creem Fereastra Project ce afiseaza fisierele ce sint create in aplicatie Fereastra Properties ce afiseaza proprietatile diferitelor controale si obiecte ce sint create in aplicatie
54

Baze de date

Microsoft Access
Un Tolbox ce contine toate controalele esentiale pentru dezvoltarea unei aplicatii VISUAL BASIC (VB). Controalelle sint instrumente cum ar fii : casete (boxes) butoane (buttons) etichete alte obiecte desenate intr-o forma pentru a obtine input sau display output. visual aparente (appeals). Fereastra cu optiuni Icoana STANDARD EXE

Figura 7.1: Fereastra de lansare Microsoft VISUAL BASIC 6

Baze de date

55

Microsoft Access

Figura 7.2: Mediul VISUAL BASIC Test de autoevaluare A.7.1. S se creeze un tabel Facturi1 cu cmpurile serie_factura-text, nr_facturalong integer, data-date, valoare-single, utiliznd metode ale obiectului Database Sub creare_tabel() Dim tdf As TableDef Dim baza As Database Set baza = CurrentDb() Set tdf = baza.CreateTableDef("facturi1") Baze de date
56

Microsoft Access
Set camp = tdf.CreateField("serie_factura", dbText,10) tdf.Fields.Append camp Set camp = tdf.CreateField("nr_factura", dbLong) tdf.Fields.Append camp Set camp = tdf.CreateField("data", dbDate) tdf.Fields.Append camp Set camp = tdf.CreateField("valoare", dbSingle) tdf.Fields.Append camp baza.TableDefs.Append tdf baza.TableDefs.Refresh End sub

1.

S se adauge la tabelul creat cmpul cod_furnizor-long integer Sub adaugare_camp() Dim tdf As TableDef Dim baza As Database Set baza = CurrentDb() Set tdf = baza.TableDefs("facturi1") Set camp = tdf.CreateField("cod_furnizor,dblong) tdf.Fields.Append camp End sub

Baze de date

57

Microsoft Access
2. S se adauge date n tabel (o nregistrare). Se va utiliza obiectul RecordSet i metoda AddNew Sub adauga_date() Dim tabledata As Recordset Dim baza As Database Set baza = CurrentDb() Set tabledata = baza.OpenRecordset("facturi1", dbOpenTable) tabledata.AddNew tabledata!serie_factura = "CT ACD" tabledata!nr_factura = 14536271 tabledata!Data = #1/1/2002# tabledata!valoare = 2345466.5 tabledata!cod_furnizor = 334425 tabledata.Update End Sub

3. S se afieze proprietile cmpului data din tabelul Facturi Sub afis_proprietati() Dim baza As Database, camp As Field, tdf As TableDef Set baza = CurrentDb() Set tdf = baza.TableDefs("facturi") Set camp = tdf.Fields("data") Baze de date
58

Microsoft Access
Debug.Print camp.Type Debug.Print camp.Size Debug.Print camp.DefaultValue Debug.Print camp.ValidationRule Debug.Print camp.ValidationText End Sub

Ordinea tipurilor de date este: dbBoolean, dbByte, dbInteger, dbLong, dbCurrency, dbSingle, dbDouble, dbDate, dbText

4. S se seteze proprietile Validation Rule i Validation Text pentru tabelul Material Aprovizionat Sub setare_proprietati() Dim baza As Database, camp As Field, tdf As TableDef Set baza = CurrentDb() Set tdf = baza.TableDefs("Material Aprovizionat") Set camp = tdf.Fields("cod_mat") camp.ValidationRule = "Is not null" camp.ValidationText = "valoare nula" End Sub

5. S se creeze o interogare care selecteaz cmpurile Nr_bon_consum i Cantitate din tabelul Materiale consumate utiliznd metoda CreateQueryDef i o fraz SQL. Baze de date

59

Microsoft Access
Sub interogare() Dim q As QueryDef Dim baza As Database Set baza = CurrentDb() Set q = baza.CreateQueryDef("int1", "SELECT [MATERIALE CONSUMATE].NR_BON_CONSUM, [MATERIALE CONSUMATE].CANTITATE FROM [MATERIALE CONSUMATE]") End Sub

6. S se afieze nregistrarea din tabelul Materiale care conine cuvntul cuie . Sub find_first() Dim baza As Database Dim rst As Recordset Dim sir_where_find As String Set baza = CurrentDb() Set rst = baza.OpenRecordset("materiale", dbOpenDynaset) sir_where_find = "[den_mat]=""cuie""" rst.FindFirst sir_where_find Debug.Print rst!cod_mat Debug.Print rst!den_mat Debug.Print rst!um Debug.Print rst!cota_tva Debug.Print rst!stoc_inceput Baze de date
60

Microsoft Access
Debug.Print rst!pret_mediu End Sub

7. S se afieze facturile care au fost emise dup data de 07/07/2000 Sub filtru() Dim t As Recordset, tf As Recordset Set t = CurrentDb.OpenRecordset("Facturi", dbOpenDynaset) t.Filter = "data > #07/07/00#" Set tf = t.OpenRecordset Do While Not tf.EOF Debug.Print tf!Data; tf!nr_factura tf.MoveNext Loop End Sub

8. S se editeze nregistrarea corespunztoare den_mat=cuie. Se presupune c nregistrarea exist. Se vor modifica cota_tva la 19, stoc_inceput la 9500. Sub editeaza_inreg() Dim baza As Database Dim rst As Recordset Dim sir_where_find As String

Baze de date

61

Microsoft Access
Set baza = CurrentDb() Set rst = baza.OpenRecordset("materiale", dbOpenDynaset) sir_where_find = "[den_mat]=""cuie""" rst.FindFirst sir_where_find rst.Edit rst!cota_tva = 19 rst!stoc_inceput = 9500 rst.Update End Sub

Baze de date

62

Microsoft Access
BIBLIOGRAFIE [1] Jennings Roger, Totul despre Microsoft Access 2000, Editura Teora, Bucuresti, 2001, traducere in limba romana de Nicolae Ionescu-Crutan. [2] Adamski J. Joseph., Hommel Charles., Finnegan Khatleen, Microsoft ACCESS 2000Comprehensive Enhanced, Course technology, Thomson Learning, 2000. [3] Despi Ioan., Petrov Gheorghe., Reisz Robert., Stephan Aurel., Teoria generala a bazelor de date, Editura Mirton Timisoara, 1999. [4] Schneider I. David., Essentials of Visual Basic 6.0 Programming, Prentice Hall, New Jersey , 1999. [5] Database tutorials for web developers, site web : http://www.katsueydesignworks.com/tutorials-database.htm [6] Visual Basic 5.0 Tutorial DataBase, site web: http://www.stfx.ca/people/dcampbel/VisualBasic/Vb_5_Tutorial/intro.htm [7] Microsoft Access Tutorials, site web: http://databases.about.com/cs/tutorials/ [8] Tudoroiu Nicolae, INFORMATICA DE GESTIUNE-BAZE DE DATE, TUTORIAL, OVIDIUS UNIVERSITY PRESS, CONSTANTA, 2002 [9] Nicolae Tudoroiu.,Victor Jeflea.,Informatic de gestiune-Tutorial1, Editura EUROPOLIS, Constanta, 2003 Database Co [10] Tudoroiu Nicolae, INFORMATICA DE GESTIUNE-PROGRAMAREA BAZELOR DE DATE in VISUAL BASIC PENTRU APLICATII (VBA), TUTORIAL 2, Editura EUROPOLIS, Constanta, 2003 Database Consulting [11] Rahmel Dan, Programarea bazelor de date cu Visual Basic 6 in 24 de ore, Teora , 1999. [12] CD-ROM Microsoft Access 2000 documentatie [13] Claudiu Chiru., Eliodor Constantinescu., Victor Jeflea., Informatic de gestiune , Editura Sigma, 2003 [14] Nicolae Tudoroiu, Claudiu Chiru, Manuela Grigore, Victor Jeflea, Raluca Pcuraru, Informatic de gestiune, Editura Europolis, Constana, 2004, ISBN : 973-676-044-8 Baze de date
63

You might also like