Sunteți pe pagina 1din 63

Microsoft Acces

Baze de date 1

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




Microsoft Acces
Baze de date 2

BAZE DE DATE

CUPRINS

Unitate
de
nvare


1





2





3



4






5


Titlul


INTRODUCERE

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.

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.

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

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

INTEROGRI SQL
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

Pagina


1

4





10





17


23




36



Microsoft Acces
Baze de date 3

6



7

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.

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


45


53



63















Microsoft Acces
Baze de date 4

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













Microsoft Access

Baze de date 5


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)
(ii) partea inferioara care contine proprietatile cimpurilor

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


Microsoft Access

Baze de date 6

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:


Microsoft Access

Baze de date 7

o Text : este valoarea prestabilita fiecarui cimp din tabela, reprezentind orice
combinatie de litere si numere de lungime maxima 255 caractere per fiecare
inregistrare
o Memo: este de tip text care memoreaza pina la 64.000 caractere
o Number : spcifica orice numar ce poate fii memorat
o Date/Time : specifica data (ziua/luna/an), timpul sau o combinatie a celor doua
o 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
o AutoNumber: specifica un numar intreg unic asignat automat fiecarei inregistrari in
momentul creerii acesteia
o Yes/No: specifica o valoare logica, binara de tipul True/False, Yes/No, ori On/Off
o 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)
o 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 Field
Size /
Format
Decimal
Places
Vali-
dation
Rule
Lookup Obs


Microsoft Access

Baze de date 8

Marca Autonumber Cheie
primara
Nume si
prenume
Text 40 <>
Adresa Text 30 <>
Stare
civila
Text 15 Lista de valori:
Casatorit;
Necasatorit;
Divortat;
Vaduv

Vechime Number Integer >=0
Cod
functie
Number Integer >0
Cod sectie Number Integer >0
Salariu
incadrare
Currency Currency 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
Size /
Format
Decimal
Places
Vali-
dation
Rule
Lookup Obs
Cod
functie
Number Integer >0 Cheie
primara
Denumire
functie
Text 20 <>



Microsoft Access

Baze de date 9

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
Size /
Format
Decimal
Places
Vali-
dation
Rule
Lookup Obs
Cod sectie Number Integer >0 Cheie
primara
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
/ Format
Decimal
Places
Vali-
dation
Rule
Lookup Obs
Marca Number Long
Integer
>0
Ore efectuate Number Integer >0
Tarif /Ora Currency Currency >0

Se salveaz tabelul cu numele Prezenta




Microsoft Access

Baze de date 10

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












Microsoft Access

Baze de date 11


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 mouse-
ul. 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


Microsoft Access

Baze de date 12

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


Microsoft Access

Baze de date 13



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 Field
Size /
Format
Decimal
Places
Vali-
dation
Rule
Lookup Obs
Numar
proprietar
Number Integer >0 Cheie
primara
Nume
proprietar
Text 40 <>
Adresa
proprietar
Text 30 <>
Telefon
proprietar
Text 10 <>

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

Field
Name
Data Type Field
Size /
Format
Decimal
Places
Vali-
dation
Rule
Lookup Obs
Numar
agent
Number Integer >0 Cheie
primara


Microsoft Access

Baze de date 14

Nume
agent
Text 40 <>
Adresa
agent
Text 30 <>
Telefon
agent
Text 10 <>

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

Field
Name
Data Type Field
Size /
Format
Decimal
Places
Vali-
dation Rule
Lookup Obs
Numar
imobil
Number Integer >0 Cheie
primara
Numar
proprietar
Number Integer >0 Tabel
PROPRIETARI
Cheie
externa
Numar
agent
Number Integer >0 Tabel AGENTI Cheie
externa
Localitate Text 20 <>
Zona Text 15 <> Lista de valori:
zona0;zona1;
zona2

Tip
imobil
Text 10 <> Lista de valori:
garsoniera;
apartament;casa

Camere Number Byte >0
Adresa
imobil
Text 30 <>


Microsoft Access

Baze de date 15

Pret
solicitat
Currency Currency 0 >0
Pret
vanzare
Currency Currency 0 >=0
Data
vanzare
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.



Legturile dintre tabelele bazei de date sunt reprezentate grafic mai jos:





MASTER DETAIL
Proprietari Imobile
1
Nr proprietar
1


Microsoft Access

Baze de date 16





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.























Agenti Imobile
Nr agent
1


Microsoft Access

Baze de date 17

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














Microsoft Access

Baze de date 18

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 mouse-
ului.
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.









Microsoft Access

Baze de date 19

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
Nume
proprietar
Adresa proprietar Telefon
proprietar
10 Ivanciu Adriana Constanta, Str. Tractorului nr. 1 0241690915
11 Daescu Daniel Bucuresti, Str. Castanilor nr. 26,
Bl. A5, Ap 4
0217543175
12 Ciulei Anghel Iasi, Str. Razboieni nr. 58, Bl.
DV12, Ap. 25
0232334015
13 Ismail Aihan Galati, Str. Universitatii nr. 75 0236445098
14 Motoc Elisabeta Iasi, Str. Eminescu nr. 55, Bl.
E4, Ap. 3
0232340123
15 Omer Abidin Constanta, Str. Eliberarii nr. 10 0241653308
16 Paunescu Ionel Constanta, Str. Iasomiei nr. 33,
Bl. ID9, Ap. 9
0241631542
17 Peicu Aurelia Bucuresti, Str. Arcului nr. 23, Bl.
7A, Ap. 43
0217683558
18 Uriasu
Constantin
Bucuresti, Str. Razoare nr. 60,
Bl. S2, Ap. 31
0216889054
19 Georgescu
Mihai
Constanta, Str. Nicolae Iorga nr.
34
0241554489
20 Ungureanu
Marius
Constanta, Str. Unirii nr. 187 0241678542
21 Ionescu Maria Constanta, Str. Mircea cel Batran
nr. 23
0241653341



Microsoft Access

Baze de date 20

2. S se elaboreze un formular pentru introducerea datelor n tabelul AGENTI. Cu ajutorul
acestui formular s se introduca urmtoarele date:
Numar
agent
Nume agent Adresa agent Telefon agent
1501 Prisacaru
Constantin
Constanta, Bd. Lapusneanu nr. 32,
Bl. LS2, Ap. 14
0241580648
1502 Manea
Nicolae
Constanta, Bd. Mamaia nr. 185 0241648523
1503 Godeanu
Maria
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 :
N
u
m
a
r

i
m
o
b
i
l

N
r
.

p
r
o
p
r
i
e
t
a
r

N
u
m
a
r

a
g
e
n
t

L
o
c
a
l
i
t
a
t
e

Z
o
n
a

T
i
p

i
m
o
b
i
l

C
a
m
e
r
e

A
d
r
e
s
a

i
m
o
b
i
l

P
r
e
t

s
o
l
i
c
i
t
a
t

P
r
e
t

v
a
n
z
a
r
e

D
a
t
a

v
a
n
z
a
r
e

550
0
10 150
2
Constan
ta
Zon
a 1
Apar
t.
3 Str. Marasti
nr. 56
$25.000 $25.000 16.02.200
3
550
1
10 150
2
Constan
ta
Zon
a 0
Gars. 1 Str. I.G.
Duca nr. 35
$18.000 $16.500 25.09.200
3
550
2
12 150
3
Constan
ta
Zon
a 0
Casa 5 Str. Mircea
cel Batran
nr. 77
$45.000 $0
550
3
15 150
1
Bucures
ti
Zon
a 0
Apar
t.
3 Bd.
Magheru nr.
44
$55.000 $53.000 30.10.200
3
550
4
19 150
1
Constan
ta
Zon
a 1
Apar
t.
4 Bd.
Ferdinand
nr. 10
$25.000 $25.000 20.12.200
2


Microsoft Access

Baze de date 21

550
5
11 150
1
Bucures
ti
Zon
a 2
Apar
t.
2 str. Drumul
Taberei nr.
129
$23.000 $0
550
6
17 150
2
Bucures
ti
Zon
a 1
Gars. 1 Str. Tepes
Voda nr. 12
$14.000 $12.900 20.11.200
2
550
7
18 150
2
Bucures
ti
Zon
a 0
Gars. 1 Str. George
Cosbuc nr.
23
$18.000 $17.850 25.01.200
3
550
8
12 150
3
Iasi Zon
a 2
Casa 5 Str. Unirii
nr. 20
$21.000 $21.000 19.04.200
3


N
u
m
a
r

i
m
o
b
i
l

N
r
.

p
r
o
p
r
i
e
t
a
r

N
u
m
a
r

a
g
e
n
t

L
o
c
a
l
i
t
a
t
e

Z
o
n
a

T
i
p

i
m
o
b
i
l

C
a
m
e
r
e

A
d
r
e
s
a

i
m
o
b
i
l

P
r
e
t

s
o
l
i
c
i
t
a
t

P
r
e
t

v
a
n
z
a
r
e

D
a
t
a

v
a
n
z
a
r
e

550
9
14 150
3
Iasi Zon
a 1
Garsonier
a
1 Str. Vlaicu
Voda nr. 9
$13.00
0
$12.50
0
29.08.20
03
551
0
16 150
1
Constan
ta
Zon
a 2
Apartame
nt
3 Str. Viilor
nr. 43
$18.00
0
14.500 19.05.20
03
551
1
16 150
1
Constan
ta
Zon
a 1
Apartame
nt
2 Bd.
Lapusnean
u nr. 56
$16.00
0
$0
551
2
13 150
3
Galati Zon
a 1
Apartame
nt
3 Str.
Universita
tii nr. 75
$21.00
0
$0
551
3
13 150
3
Constan
ta
Zon
a 2
Casa 3 Str. Alba
nr. 47
$26.00
0
$0
551
4
20 150
2
Constan
ta
Zon
a 1
Apartame
nt
3 Constanta,
Str. Unirii
nr. 187
$30.00
0
$0


Microsoft Access

Baze de date 22

551
5
21 150
2
Constan
ta
Zon
a 1
Casa 3 Constanta,
Str.
Mircea cel
Batran nr.
23
$34.00
0
$0
2. Sa se inchida formularul. Apoi sa se introduca urmatorii proprietari :
N
u
m
a
r

p
r
o
p
r
i
e
t
a
N
u
m
e

p
r
o
p
r
i
e
t
a
r

A
d
r
e
s
a

p
r
o
p
r
i
e
t
a
r

T
e
l
e
f
o
n

p
r
o
p
r
i
e
t
a
r

22 Vasilescu
George
Eforie Nord, Str. Constanta nr. 12 0745687123
23 Adam Anamaria Mangalia, Str. Saturn nr. 32, Bl. CS9,
Ap. 43
0788953641
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.
N
u
m
a
r

i
m
o
b
i
l

N
u
m
a
r

p
r
o
p
r
i
e
-
N
u
-
m
a
r

a
g
e
n
t

L
o
c
a
l
i
t
a
t
e

Z
o
n
a

T
i
p

i
m
o
b
i
l

C
a
m
e
r
e

A
d
r
e
s
a

i
m
o
b
i
l

P
r
e
t

s
o
l
i
c
i
t
a
t

P
r
e
t

v
a
n
z
a
r
e

D
a
t
a

v
a
n
z
a
r
e

5516 22 1504 Eforie
Nord
Zona
1
Casa 6 Str.
Constanta
nr. 12
$55.000 $0
5517 23 1504 Mangalia Zona
0
Apartament 2 Str.
Saturn nr.
32, Bl.
CS9
$18.500 $0
OBS) Att agentul , ct i imobilul se vor introduce cu ajutorul formularului cu subformular.






Microsoft Access

Baze de date 23

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














Microsoft Access

Baze de date 24

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



Microsoft Access

Baze de date 25



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:



Microsoft Access

Baze de date 26



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





Microsoft Access

Baze de date 27

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.



Microsoft Access

Baze de date 28



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.




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 Linia
CRITERIA
Localitate IMOBILE
Pret vanzare IMOBILE =0

Linia FIELD Linia TABLE Linia SHOW
Localitate IMOBILE


Microsoft Access

Baze de date 29

sau :

Linia
FIELD
Linia TABLE Linia SHOW Linia
CRITERIA
Localitate IMOBILE
Data
vanzare
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
Linia TABLE Linia SHOW Linia CRITERIA
Numar
imobil
IMOBILE
Localitate IMOBILE
Zona IMOBILE
Tip imobil IMOBILE
Camere IMOBILE
Data
vanzare
IMOBILE >=#01/08/2003#

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.


Microsoft Access

Baze de date 30

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 TABLE TOTAL SHOW CRITERIA
Numar agent IMOBILE Group by
Nume agent AGENTI Group by
Vanzari
efectuate:Nu
mar imobil
IMOBILE Count
Pret vanzare IMOBILE Where <>0

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



Microsoft Access

Baze de date 31

3. S se proiecteze o interogare care s afieze toi agenii care au efectuat mai mult de o
tranzactie.
FIELD TABLE TOTAL SHOW CRITERI
A
Numar agent IMOBILE Group by
Nume agent AGENTI Group by
Vanzari
efectuate:Numar imobil
IMOBILE Count >1
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 TABLE TOTAL CRITERIA
Numar agent IMOBILE Group by
Nume agent AGENTI Group by
Vanzari
efectuate:Numar imobil
IMOBILE Count >=3
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 CRITERI
A
Numar agent IMOBILE Group by
Nume agent AGENTI Group by
Data vanzare IMOBILE Max <Date()-
30 Or Is
Null


Microsoft Access

Baze de date 32


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 IMOBILE Group by
Zona IMOBILE Group by
Pret mediu;Pret
solicitat
IMOBILE Avg
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 TABLE TOTAL SORT CRITERIA
Numar agent IMOBILE Group by
Nume agent AGENTI Group by
Sarcini:Numar
imobil
IMOBILE Count Descending
Data vanzare 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

Nume agent AGENTI Group
by



Microsoft Access

Baze de date 33

Suma vanzari:Pret
vanzare
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 TABLE SHOW CRITERIA
Nume agent AGENTI
Numar imobil IMOBILE
Localitate IMOBILE
Zona IMOBILE
Tip imobil IMOBILE
Camere IMOBILE
Comision:7/100*[Pret
vanzare]
IMOBILE
Year([Data vanzare]) 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.


Microsoft Access

Baze de date 34

FIELD TABLE Update to CRITERIA
Pret
solicitat
IMOBILE [Imobile].[Pret
solicitat]*110/100

Data
vanzare
IMOBILE Is Null
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.







b) S se creeze o interogare care s tearg din tabelul Comision toate
nregistrrile corespunztoare agenilor care ncep cu litera 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$).


FIELD TABLE Delete CRITERIA
Imobile.* IMOBILE From
Data
vanzare
IMOBILE Where <#01.01.2003
#
FIELD TABLE Delete CRITERIA
Comision.
*
COMISION From
Nume
agent
COMISION Where Like M*


Microsoft Access

Baze de date 35

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 TABLE Append To CRITERIA
Numar
agent
AGENTI Numar agent
Nume
agent
AGENTI Nume agent Like G*
Telefon
agent
AGENTI Telefon agent
















Microsoft Access

Baze de date 36

Unitatea de nvare Nr. 5

Interogari SQL

Cuprins
Obiectivele Unitii de nvare Nr. 5

5.6. Proiectarea unor interogri de selecie n SQL
5.7. Proiectarea unor interogri de tip Make Table n SQL
5.8. Proiectarea unor interogri de tip Update Query n
5.9. Proiectarea unor interogri de tip Delete n SQL
5.10. Proiectarea unor interogri de tip Append n SQL

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














Microsoft Access

Baze de date 37

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 View Datasheet (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).


Microsoft Access

Baze de date 38


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


Microsoft Access

Baze de date 39


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 intr-
un 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








Microsoft Access

Baze de date 40


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 DEN_F LOCALIT ADRESA
Number Text(20) Text(15) 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);





Microsoft Access

Baze de date 41

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 COD_F=3 (Delete
Query) .

DELETE *
FROM Furniz2
WHERE COD_F=3;

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


Microsoft Access

Baze de date 42


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


Microsoft Access

Baze de date 43


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;



Microsoft Access

Baze de date 44

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



Microsoft Access

Baze de date 45

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





Microsoft Access

Baze de date 46

Termenul macro este o abreviere pentru macro-instructiune sau macro-
program, 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


Microsoft Access

Baze de date 47

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, macro-
urile din Access sint complet diferite de cele din Excel, Word sau Outlook. Intilnim macro-uri intr-
un 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!








Microsoft Access

Baze de date 48


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.






Microsoft Access

Baze de date 49


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 macro-
ul care contine urmtoarele:





Microsoft Access

Baze de date 50

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.









Microsoft Access

Baze de date 51

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.




Microsoft Access

Baze de date 52




























Microsoft Access

Baze de date 53

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














Microsoft Access

Baze de date 54


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 BASIC ce contine urmatoarele
elemente:
Fereastra Blank Form unde putem realiza design-ul interfetei aplicatiei ce urmeaza s-
o 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


Microsoft Access

Baze de date 55

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





Microsoft Access

Baze de date 56


Figura 7.2: Mediul VISUAL BASIC

Test de autoevaluare

A.7.1. S se creeze un tabel Facturi
1
cu cmpurile serie_factura-text, nr_factura-
long 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")


Microsoft Access

Baze de date 57

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



Microsoft Access

Baze de date 58

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


Microsoft Access

Baze de date 59

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.



Microsoft Access

Baze de date 60

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


Microsoft Access

Baze de date 61

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



Microsoft Access

Baze de date 62

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














Microsoft Access

Baze de date 63

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 2000-
Comprehensive 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