Sunteți pe pagina 1din 16

Lucrare practic nr.

1
Dispunei de baza de date VANZARI cu tabelele CLIENTI(Codcl, Nume, Adresa, Zona),
AGENTI(Codag, Nume, Salbaza, Zona) i COMENZI(Nrcom, Data, Codcl, Codag, Valoare).
Analizaii atributele din fiecare tabel
tabe i stabilii cheile primare corespunztoare
corespunz
acestora.
Clic dreapta n panoul din stnga1, unde apar tabelele, pe tabela pentru care vrem s stabilim cheia
primar i alegerea opiunii Design View.

Dac cheia primar ar fi compus (avnd mai multe cmpuri n coninut), se selecteaz primul atribut,
apoi, dac urmtorul cmp din componen nu este vecin cu cel anterior, se ine tasta Control (Ctrl)
apsat pentru a putea selecta atribute nenvecinate
ne

Definiii legaturile dintre tabele i aplicai restriciile rerereniale.

Clic pe Database Tools Relationships,


Relationships, se adaug toate tabelele. Pentru a face legtura, se selecteaz
cheia primar din tabela printe (de ex. CODAG din AGENI), se ine apsat butonul stnga al mousemouse
ului i se ajunge peste tabela-copil,
copil, eliberndu-se
eliberndu
butonul mouse-ului
ului pe cmpul ce reprezint cheia
strin (de ex. CODAG din COMENZI). n formularul care apare (Edit Relationships) se bifeaz, de
regul, primele dou restricii (Enforce Referential Integrity, pentru a nu avea
vea copii fr prini i
Cascade Update Related Fields, pentru modificarea n cascad, de la printe la copil).
copil

La fel se face i cu cealalt legtur ntre CLIENTI i COMEZI.

Dac n panoul cu obiectele, din stnga, n banda de sus, scrie Tables,, se d clic pe acea band i se alege opiunea
All Access Objects, pentru a putea vedea ulterior i alte obiecte, dect tabelele (interogri, formulare, rapoarte etc.)

Definii o regul de validare pentru data comenzii (data comenzii nu poate depi data
curent).

Atenie la cmpul pe care ne plasm, cnd scriem regula de validare. La deschiderea tabelei, cmpul
implicit este primul de sus, dar noi avem nevoi, n acest exemplu, de al doilea (data).
Funcia Date are obligatoriu dup ea, paranteze rotunde, deci Date().

S se adauge comanda nr. 211 din 11 mai 2010, pentru un client nou (Florio SRL, din
zona Nicolina, pentru care nu se cunoate adresa) care va avea codul 550. Comanda a
fost preluat de agentul A3 i are o valoare de 58 lei2.
Varianta simpl
Se introduc valorile, direct n tabele, avnd n vedere s se populeze nti tabela-printe (CLIENTI),
apoi tabela-copil (COMENZI).

CLIENI

COMENZI

Pentru a fi sigur c n panoul cu obiectele bazei de date se vor vedea toate, se alege, n loc de Tables sau All Tables, opiunea
All Access Objects

Varianta cu APPEND QUERY


Din meniul Create Query Design se nchide formularul Show Table, fr a aduga vreo tabel,
apsndu-se direct butonul Close. Din meniul Design se alege opiunea Append
. Va aprea un
formular, de unde vom alege tabela CLIENTI. Asta va face ca, ulterior s remarcm, n formularul unde
se configureaz interogarea, c a aprut un rnd nou (Append To).

La apsarea butonului RUN (din meniul Design), va aprea un mesaj de avertizare3 c a fost adugat o
nou nregistrare. Dac mai apare i vreun alt mesaj, sigur este vreo problem care va mpiedica
nregistrarea.
La fel se lucreaz i pentru tabela-copil, COMENZI.

Varianta SQL
Din meniul Create Query Design nchidere formular Show Table apsare pe butonul View din
meniul Design pentru a intra n modul SQL4.
o Creare client
INSERT INTO clienti ( codcl, nume, zona )
SELECT 550, "Florio SRL", 'Nicolina'

Se d RUN, apoi se nchide i se repet paii anteriori


o Adugare comand
INSERT INTO comenzi ( nrcom, data, valoare, codcl, codag )
SELECT 211, #5/11/2010#, 58, 550, 'A3'

Dac nu apare aa ceva, este posibil ca, la deschiderea bazei de date s fi nchis bara Security Warning, fr a apsa butonul
Options i a alege Enable.

De dorit este, de regul, s se tearg acel punct i virgul, de dup SELECT, mai mult ncurcnd, dect s ajute.

S se afieze pe ecran o list a comenzilor din ziua de 9 mai 2010, n ordinea zonelor.
Varianta cu Design View
Varianta SQL
SELECT nrcom, data, zona
FROM clienti Cl INNER JOIN comenzi C ON Cl.codcl = C.codcl
WHERE data=#5/9/2010#
ORDER BY zona

Calculai totalul comenzilor pe zone.


Dup adugarea tabelelor, se alege opiunea Totals (cea cu simbolul ) din meniul Design. Va aprea, n
formular, un rnd special, Total.

Varianta cu Design View

Varianta SQL
SELECT ZONA, Sum(valoare) AS Total_pe_zone
FROM clienti INNER JOIN comenzi ON clienti.codcl = comenzi.codcl
GROUP BY zona
ORDER BY zona

S se modifice salariul de baz al agentului cu codul A1 la 460 lei.


Varianta simpl
Se face modificarea direct n tabel

Varianta cu UPDATE QUERY

Varianta SQL

Din meniul Create Query Design adugare tabela AGENTI. UPDATE agenti SET SALBAZA = 460
WHERE CODAG="A1"
Din meniul Design UPDATE

Sa se afieze comenzile cu valoare mai mic de 50 lei din zonele Pcurari sau Bucium
(Nrcom, Codcl, Valoare).
Varianta cu Design View5
Varianta SQL
SELECT nrcom, Cl.codcl, valoare, zona
FROM clienti Cl INNER JOIN comenzi C ON Cl.codcl = C.codcl
WHERE valoare<50
AND (zona="PACURARI" Or zona="BUCIUM")

S se realizeze un raport al comenzilor grupate dup agentul care a preluat comanda


(Nrcom, Data, Valoare). n antetul de grup se va afia numele agentului, iar la sfritul
grupului valoarea total a comenzilor fiecrui agent.

Se aleg, din tabela COMENZI, cmpurile solicitate, apoi, n aceeai pagin a formularului, se adaug
tabela AGENTI, de unde se alege cmpul NUME, dup care se d Next.

O alt variant de a scrie criteriile

n rest se folosete dificila tehnic a Next-urilor.

Definii un formular pentru vizualizarea/ actualizarea comenzilor.


n panoul cu obiectele bazei de date (din stnga), se d clic pe tabela COMENZI, apoi, n meniul Create,
se apas opiunea Form.

Lucrare practic nr. 2


Dispunei de o baz de date Credite_PF n care o banc evideniaz creditele ctre
clienti persoane fizice. Sunt cuprinse tabelele CLIENTI(Codcl, Nume, Adresa, Localit),
CONTRACTE(Nrcontract,
Codcl,
Data,
Valcredit,
Ratadob,
Perioada),
RESTITUIRI(Nrcontract, Dataplata, Sumaplatita).
Analizai atributele din fiecare tabel i stabilii cheile primare corespunztoare acestora.
A se vedea explicaiile pentru cerina similar, de la prima lucrare.

Definii legturile dintre tabele i aplicai restriciile refereniale.


A se vedea explicaiile pentru cerina similar, de la prima lucrare.

S se adauge un contract pentru un client nou ce va avea codul 211: contractul nr.
1255 din 15 mai 2010, pentru un credit n sum de 50 milioane lei, pe 5 ani, cu o rat a
dobnzii de 25%. Clientul se numete lonescu Florin, din Iai, str. Izvor nr. 22.
Varianta simpl
Se introduc valorile, direct n tabele, avnd n vedere s se populeze nti tabela-printe (CLIENTI),
apoi tabela-copil (CONTRACTE).

Varianta cu APPEND QUERY


A se vedea explicaiile pentru cerina similar, de la prima lucrare.

Varianta SQL
A se vedea explicaiile pentru cerina similar, de la prima lucrare.
o Creare client
INSERT INTO clienti ( codcl, nume, localit, adresa )
SELECT 211, 'lonescu Florin', 'IASI', 'Str. Izvor nr. 22'

o Adugare contract
INSERT INTO contracte ( nrcontract, data, valcredit, perioada, ratadob, codcl )
SELECT 1255, #5/15/2010#, 50000000, 5, 0.25, 211

Scriei interogarea SQL pentru a afia o list a contractelor la care rata dobnzii este de
65% i valoarea creditului mai mare sau egal cu 5000 lei (numr contract, data,
valoare).
SELECT nrcontract, data, valcredit
FROM contracte
WHERE valcredit>=5000 AND ratadob=0.65

Scriei interogarea SQL pentru a obine situaia contractelor pe localiti (localitate,


numr de contracte, total valoare credite).
SELECT localit, COUNT(nrcontract), SUM(valcredit)
FROM clienti INNER JOIN contracte ON clienti.codcl = contracte.codcl
GROUP BY localit

S se afieze pe ecran toate restituirile din ziua de 1 martie 2010.


Varianta cu Design View
Varianta SQL

SELECT nrcontract, dataplata, sumaplatit


FROM restituiri
WHERE dataplata=#3/1/2010#

S se ntocmeasc un raport care s cuprind pentru fiecare contract sumele pltite


(data i suma platit), precum i suma total restituit.

n rest, se poate merge cu clasicul NEXT.

Realizai un formular pentru vizualizarea/ actualizarea nomenclatorului de clieni.


n panoul cu obiectele bazei de date (din stnga), se d clic pe tabela CLIENTI, apoi, n meniul Create, se
apas opiunea Form.

Lucrare practic nr. 3


Dispunei de o baz de date VANZARI cu tabelele CLENTI(Codcl, Numecl, Adresa,
Zona), AGENTI(Codag, Numeag, Salbaza, Zona) i COMENZI(Nrcom, Data, Codcl, Codag,
Valoare).
Analizai atributele din fiecare tabel i stabilii cheile primare corespunztoare acestora.
A se vedea explicaiile pentru cerina similar, de la prima lucrare.

Definii legturile dintre tabele i aplicai restriciile refereniale.


A se vedea explicaiile pentru cerina similar, de la prima lucrare.

Definii o regul de validare pentru atributul Codcl (Codcl [200,1999]).

n urma restructurrilor au fost concediai 2 ageni: A7 i A9. S se tearg nregistrrile


corespunztoare.
Varianta simpl
Se terg, pur i simplu,nregistrrile solicitate direct din tabel. n cazul n care apare un mesaj, la
tergere, nseamn c exist nregistrri pentru acei ageni n tabela copil

Varianta cu Design View

Varianta SQL

DELETE codag
FROM agenti
WHERE codag="A7" OR codag="A9"

S se afieze pe ecran o list a comenzilor agentului A1, n ordinea descresctoare a


valorii.
Varianta cu Design View
Varianta SQL

SELECT nrcom, codag, valoare


FROM comenzi
WHERE codag="A1"
ORDER BY valoare DESC

S se afieze prima comand a clientului 330.


Varianta cu Design View

Varianta SQL

SELECT codcl, FIRST(data)


FROM comenzi
GROUP BY codcl
HAVING codcl=330

Varianta mai simpl6


SELECT First(data)
FROM comenzi
WHERE codcl=330

Scriei interogarea SQL pentru a afia o list a comenzilor cu valoare mai mare de 250
lei, din zona Centru (Nrcom, Numecl, Valoare).
SELECT nrcom, nume, valoare
FROM clienti AS Cl INNER JOIN comenzi AS C ON Cl.codcl = C.codcl
WHERE valoare>=250 AND zona="CENTRU"

S se realizeze un raport al comenzilor n ordinea descresctoare a valorii (Nrcom, Data,


Codag, Valoare). La sfrit se va afia valoarea total a comenzilor.

Este de remarcat c, dac se face grupare, condiia nu se mai pune cu WHERE, ci cu HAVING

10

n cazul n care se dorete mutarea cmpului valoare, la final (cum ar fi mai elegant), se apas pe cmpul
VALOARE, n zona Detail (se va portocaliza), apoi, ducnd mouse-ul, n colul din dreapta jos a acestui
textbox, el va lua forma din imaginea de mai sus. innd apsat butonul stnga, se trage spre dreapta. Dac
e fcut bine tragerea, la grania ntre cmpuri va aprea o linie vertical portocalie, care va sri, ntre
cmpuri, pn la final, unde vom elibera mouse-ul.

11

Din meniul Design se d clic pe butonul TextBox, apoi se coboar n Report Footer, unde se d clic cam pe
unde este acea stelu. Vor aprea dou obiecte:
- Label cel pe care scrie Text12 i care, prin clic pe el, poate fi redenumit cu expresia Valoare
total,
- TextBox cel pe care scrie Unbound i n care vom face calculul. Varianta cea mai comod este de
a da clic n interiorul ei, disprnd textul i s scriem =Sum([valoare]).
Mergnd n meniul Design sau Home, pe butonul View i alegnd opiunea Report View sau Print Preview,
va aprea rezultatul final. Aceast aciune poate fi realizat din Design View sau din Layout View.
Desigur, cmpurile aferente totalului (Label i TextBox) mai pot fi ajustate stnga-dreapta ca s se
suprapun locaiei cmpului Valoare, din Detail.

Realizai un formular pentru vizualizarea/ actualizarea nomenclatorului de clieni.


n panoul cu obiectele bazei de date (din stnga), se d clic pe tabela Clieni, apoi, n meniul Create, se
apas opiunea Form.

Lucrare practic nr. 4


Dispunei de o baz de date CREDITE_PF n care o banc evideniaz creditele
ctre clieni persoane fizice. Sunt cuprinse tabelele CLIENTI(Codcl, Nume, Adresa, Localit),
CONTRACTE(Nrcontract,
Codcl,
Data,
Valcredit,
Ratadob,
Perioada),
RESTITUIRI(Nrcontract, Dataplata, Sumaplatita).
Analizai atributele din fiecare tabel i stabilii cheile primare corespunztoare acestora.
A se vedea explicaiile pentru cerina similar, de la prima lucrare.

12

Definii legturile dintre tabele i aplicai restriciile refereniale.


A se vedea explicaiile pentru cerina similar, de la prima lucrare.

Definii o regul de validare pentru atributul Codcl (Codcl [100,999]).

n condiiile n care contractul 1200 este anulat, s se tearg acest contract din tabela
CONTRACTE i toate ncasrile corespunztoare din tabela RESTITUIRI.
Varianta simpl
Se va terge, pur i simplu, nregistrarea din tabel, avnd n vedere ca s se tearg nti cea din tabelacopil (RESTITUIRI), apoi din tabela-printe (CONTRACTE).

Varianta DELETE QUERY


Din meniul Create Query Design n formularul Show Table, se adaug tabela RESTITUIRI (tabelacopil). Din meniul Design se alege opiunea Delete
. Asta va face ca, n formularul unde se
configureaz interogarea, s apar un rnd nou (Detele). Se completeaz ca n figura de mai jos, apoi se
reia procesul identic i pentru tabela-printe CONTRACTE.

nti RESTITUIRI

, apoi CONTRACTE

Varianta SQL
o tergere restituiri (din tabela copil)
DELETE nrcontract
FROM restituiri
WHERE nrcontract=1200

o tergere contract (din tabela printe)


DELETE NRCONTRACT
FROM contracte
WHERE NRCONTRACT=1200

13

Scriei interogarea SQL pentru a afia o list a contractelor cu o valoare mai mare sau
egal cu 5000 lei, ncheiate n luna ianuarie (numr contract, data, valoare).
SELECT nrcontract, data, valcredit
FROM contracte
WHERE Month([data])=1 AND valcredit>=5000

S se afieze pe ecran toate restituirile pentru contractul nr. 1230.


Varianta cu Design View
Varianta SQL

SELECT nrcontract, sumaplatit


FROM restituiri
WHERE nrcontract=1230

S se ntocmeasc un raport care s cuprind restituirile pentru fiecare contract


(identificat n antetul de grup prin numr i dat), indicnd data i suma platit, iar la
sfrit totalul fiecrui contract.

Apoi, se poate merge cu Next, pn la final.

14

Realizati un formular pentru vizualizarea / actualizarea nomenclatorului de clieni.


n panoul cu obiectele bazei de date (din stnga), se d clic pe tabela CLIENTI, apoi, n meniul Create,
se apas opiunea Form.

Lucrare practic nr. 5


Dispunei de o baz de date Credite_PF n care o banc evideniaz creditele ctre
clieni persoane fizice. Sunt cuprinse tabelele CLIENTI(Codcl, Nume, Adresa, Localit),
CONTRACTE(Nrcontract,
Codcl,
Data,
Valcredit,
Ratadob,
Perioada),
RESTITUIRl(Nrcontract, Dataplata, Sumaplatita).
Analizai atributele din fiecare tabel i stabilii cheile primare corespunztoare acestora.
A se vedea explicaiile pentru cerina similar, de la prima lucrare.

Definii legturile dintre tabele i aplicai restriciile refereniale.


A se vedea explicaiile pentru cerina similar, de la prima lucrare.

Definii o regul de validare pentru atributul Codcl (Codcl [150,1999]).


A se vedea imaginea pentru cerina similar, de la lucrare 4.

S se nregistreze restituirea unei rate la contractul 1198, n sum de 350 lei, pe data
de 4 mai 2010.
Varianta simpl
Se introduc valorile, direct n tabel. Este bine, n prealabil, s se verifice n tabela-printe
(CONTRACTE), dac exist contractul cu nr. 1198.

Varianta cu APPEND QUERY


Din meniul Create Query Design se nchide formularul Show Table, fr a aduga vreo tabel,
apsndu-se direct butonul Close. Din meniul Design se alege opiunea Append

. Va aprea un
formular, de unde vom alege tabela RESTITUIRI. Asta va face ca, ulterior s remarcm, n formularul
unde se configureaz interogarea, c a aprut un rnd nou (Append To).

Varianta SQL
INSERT INTO restituiri ( nrcontract, dataplata, sumaplatit )
SELECT 1198, #5/4/2010#, 350

Scriei interogarea SQL pentru a afia o list a contractelor la care rata dobnzii este de
65% i perioada mai mic de 5 ani (numr contract, data, perioada, valoare).
SELECT nrcontract, data, perioada, valcredit, ratadob
FROM contracte
WHERE perioada<=5 AND ratadob=0.65

15

S se afieze pe ecran toate restituirile la contractul 1198 (numr contract, data plii,
suma pltit).
Varianta cu Design View
Varianta SQL

SELECT nrcontract, dataplata, sumaplatit


FROM restituiri
WHERE nrcontract=1198

S se ntocmeasc un raport care s cuprind datele despre contracte i restituirile


aferente. Pentru fiecare contract se specific n antetul de grup numrul, data ncheierii,
valoarea i perioada. Raportul va cuprinde sumele pltite (data i suma platit).

Apoi se poate merge cu ncredere, pe Calea Next-ului, pn la final.

Realizai un formular pentru vizualizarea/ actualizarea nomenclatorului de clieni.


n panoul cu obiectele bazei de date (din stnga), se d clic pe tabela CLIENTI, apoi, n meniul Create,
se apas opiunea Form.

16