Sunteți pe pagina 1din 149

Universitatea Babeș-Bolyai din Cluj-Napoca

Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator


Departamentul de Informatica Economică Baze de date și programe

Lucrarea de laborator 2. Prezentarea mediului de lucru


Access. Crearea și lucrul cu tabele.
Fila Home

Grupul Views permite comutarea între diferite moduri de vizualizare ale obiectului curent

Grupul Records realizează gestiunea operaţiunilor asupra înregistrărilor, verificare ortografică.

Grupul Sort & Filter realizează sortări, filtrări simple sau avansate asupra înregistrărilor.

Grupul Find permite operaţiuni de selecţie, regăsire şi navigare

1
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Grupul Text Formatting permite formatări extinse la nivel de paragraf (indentări, liste
numerotate sau cu marcatori, evidenţieri)

Restul filelor sunt: Create, External Data, DataBaseTools, Fields, Table dependente de context.

Problema 1.
Să se creeze baza de date care va stoca informaţiile legate de activitatea unui magazin. Baza de
date se va numi Magazin.accdb.
1.Se deschide aplicaţia Microsoft Access. Se alege opţiunea Blank Desktop Database, pentru
crearea bazei de date de pornire cu numele Magazin.accdb. Se alege numele folderului de lucru
şi numele fişierului.

2.Se alege butonul Create.

2
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Observaţie. Crearea bazei de date se face o singură dată. La aceasta se adaugă toate obiectele
care vor fi create ulterior.

Problema 2. Să se stocheze date legate de activitatea magazinului. Ce date urmează să fie


stocate din factura de cumpărare din figura următoare? Unde urmează să fie acestea stocate?

Rezolvare. Se creează trei tabele. Primul dintre acestea va fi denumit Facturi și va conține
următoarele coloane:
Facturi
Denumire câmp Tip date Lungime
Nr Number LongInteger
Data Date/Time
Tip ShortText FieldSize=1
Partener ShortText FieldSize=35
Disc Number FieldSize=Single
Produs ShortText FieldSize=35
Cant Number Double
Pret ShortText FieldSize=35
Pentru crearea tabelei Facturi se parcurg următorii paşi:
1. In fila Create se alege opţiunea Table Design. Se introduce de la tastatură în coloana Field
Name numele primului câmp şi anume Nr, se alege în coloana DataType tipul Number şi se
selectează mărimea câmpului din secţiunea Field Size, Long Integer.

3
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

2. Se procedează asemănător pentru fiecare câmp al tabelei astfel încât să se ajungă la structura
prezentată în figura următoare.

3. Se salvează tabela cu ajutorul butonului Save iar în fereastra nou apărută se introduce numele
tabelei Facturi.
4. Deoarece în cadrul tabelei nu s-a creat cheia primară apare o fereastră de dialog denumită
„There is no primary key defined”. Pentru a păstra tabela fără cheie primară se apasă butonul No.

Se repetă pașii de la 1 la 4 pentru crearea tabelelor Parteneri şi Produse, conform structurii din
tabelele de mai jos.
Parteneri
Denumire câmp Tip date Lungime
Cod Fiscal Number FieldSize=Double
Denumire ShortText FieldSize=35
Adresa ShortText FieldSize=35

4
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Localitate ShortText FiledSize=35


Tel ShortText FieldSize=35
Produse
Denumire câmp Tip date Lungime
Cod Number Long Integer
Denumire ShortText FieldSize=40
Marca ShortText FieldSize=20
Stoc Number FieldSize=Single
Obs ShortText FieldSize=80
După crearea celor trei tabele ale bazei de date în Panoul de Navigare (Navigation Pane) vor fi
afișate cele trei tabele, după cum se poate observa în figura următoare:

Observaţie. Afişarea obiectelor din cadrul bazei de date se poate face personalizat, în funcţie de
opţiunile utilizatorului prin efectuarea unui click pe titlul Panoului de Navigare:
- Împărţirea obiectelor (Navigate To Category) se poate face fie după criterii personalízate
(Custom), fie in categorii de obiecte (Object Type), fie pe ramuri de obiecte, pornind de la
tabelele sursă (Tables and Related Views), fie după data creării (Created Date) sau după
data modificării (Modified Date).
- Filtrarea datelor înseamnă afişarea doar a unor anumite obiecte: tabele (Tables),
interogări (Queries), formulare (Forms), rapoarte (Reports) respectiv afişarea tuturor
obiectelor (All Access Objects).

5
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Problema 3. Se setează proprietăţi noi pentru câmpuri după cum reiese din tabelele de mai jos.
Cheile primare apar subliniate şi boldate, în cazul în care există.
In tabela Facturi
Denumire câmp Format şi proprietăţi
Nr Required=Yes, Indexed=Yes (Duplicates OK)
Data Format=Medium Date
Tip Format=@
Disc Format=Percent

In tabela Parteneri
Denumire câmp Format şi proprietăţi
Cod Fiscal Required=Yes, Indexed=Yes, No Duplicates, Primary Key
Denumire Format=@
Adresa Format=@
Localitate Format=@
Tel Format=@, Input Mask !0999\-000.000;0;_

In tabela Produse
Denumire câmp Format şi proprietăţi
Cod Required=Yes, Indexed=No duplicates, Primary Key
Denumire Format=@
Marca Format=@
Stoc Decimal Places=2
Obs Format=@
1. Pentru modificarea câmpului Cod din tabelul Produse se parcurg următorii paşi:
1.1. Se efectuează clic dreapta pe numele tabelei şi se alege opţiunea Design View.
1.2. Se efectuează clic pe numele câmp Cod.
1.3. În lista cu proprietățile câmpului, se efectuează clic pe cămpul Required, după care se alege
din lista derulantă opțiunea Yes;
1.4. În lista cu proprietățile câmpului, se efectuează clic pe cămpul Indexed, după care se alege
din lista derulantă opțiunea Yes (No Duplicates);
1.5. Pentru setarea câmpului ca și cheie primară (Primary Key),se slectează tab-ul Tabel Tools -
Design şi se selectează opţiunea Primary Key. După efectuarea tuturor modificărilor,
proprietățile câmpului Cod trebuie să coincidă cu figura următoare;
1.6. Se salvează tabela.

6
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

2. Pentru setarea proprietăţii Input Mask al tabelei Parteneri, de deschide tabela în modul Design
şi se parcurg următorii paşi:
2.1. Se efectuează clic pe butonul de mai jos din cadrul proprietăţii Input Mask.

2.2. Porneşte utilitarul de tip Wizzard. Se alege tipul Phone Number. Apoi clic pe butonul Next.

2.3. In câmpul Input Mask se editează o formulă ca mai jos, apoi clic pe butonul Finish.

7
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Analog se procedează pentru implementarea modificărilor în restul tabelelor.

Problema 4. S-a omis la crearea tabelei Produse introducerea în structură a câmpului Unitate
de măsură (UM). Acest tip nou de câmp va fi de tip LookupWizard. Să se adauge acest nou
câmp astfel încât să fie poziţionat după câmpul Marca şi înaintea câmpului Stoc.
Rezolvare. Se modifică structura tabelei Produse prin adăugarea următorului câmp care să fie
situat între câmpul Marca şi Stoc:

Denumire camp Tip de date Lungime şi format


UM Short Text 6

Dacă se doreşte efectuarea unor modificări în structura unei tabele:


1. Din secţiunea Tables se efectuează click dreapta pe tabelul dorit. Se selectează opţiunea
Design View.
2. Se introduce denumirea noului câmp, tipul de date şi lungimea câmpului.
3. Se efectuează clic pe zona din stânga denumirii câmpului şi ţinând apăsat butonul de mouse se
trage câmpul în poziţia dorită.
4. Se închide fereastra şi se alege salvarea modificărilor.

In cazul acesta se procedează astfel:


1.Clic dreapta pe câmpul Stoc şi apoi opţiunea Insert Rows. Se trece numele câmpului UM. La
secţiunea DataType se alege câmp de tip Lookup Wizard. Se alege opțiunea I will type in the
values that I want după care se selectează butonul Next;

8
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

2. Se alege numărul de coloane şi se introduc valorile dorite, în cazul nostru buc, cut, set. Se
selectează butonul Next;

3.Se alege numele câmpului nou creat iar apoi butonul Finish.

9
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Problema 5. Să se adauge în structura tabelei Parteneri :


- un câmp denumit Web, de tip Hyperlink ;
- un câmp denumit Sigla, de tip OLE Object care conţine o imagine cu sigla fiecărui partener.

Rezolvare. Se procedează ca şi la problemele anterioare în vederea modificării structurii. Pentru


introducerea siglei trebuie să existe în folderul de lucru fişiere de tip imagini grafice.

Problema 6. Să se introducă datele din factura afișată la Problema 2 în toate cele 3 tabele. În
plus, firma primește și alte facturi de intrare de la furnizori şi emite facturi de ieşire către clienţi.

Rezolvare:
1. În secţiunea Tables se efectuează click dreapta pe tabela în care se doreşte introducerea datelor
după care se selectează opţiunea Open. O alternativă este efectuarea unui dublu clic pe numele
tabelei în care se doreşte introducerea datelor.
2. Se introduc datele de la tastatură.
Pe lângă datele preluate din factura de la Problema 2, se introduc în tabele și datele din tabelele
următoare.

Facturi
Nr Data Tip Partener Disc Produs Cant Pret
6000 23-nov.-14 C Royal 10,00% Laptop 1 1150
6000 23-nov.-14 C Royal SA 10,00% DVD 10 80
4000 25-iul.-14 V Royal Sa 0,00% Carte Access 2013 15 80
6000 23-nov.-14 C Royal SA 10,00% Laptop 2 3200
1000 16-apr.-14 V Alfa SA 10,00% Laptop 2 1200
3000 18-apr.-14 V Electronica SRL 15,00% Rama digitala 4 200
5000 22-nov.-14 V CartiOnline SA 0,00% Carte Access 2013 -5 80

10
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Parteneri
Cod Fiscal Denumire Adresa Localitate Tel Web Sigla
224422 CartiOnline SA Strada Alba FN Dej 0724-000.222
336633 Alfa SA Strada Libertatii nr 42-48 Cluj-Napoca 0364-334.488
448844 Electronica IMPEX SRL Piata Unirii nr 7/25 Dej 0761-773.300
551155 Foto Muzica SA Strada Lata nr 12 Turda 0264-555.333
663366 Royal SA B-dul 1 Decembrie 1918 nr 19 Cluj-Napoca 0264-222.777

Produse
Cod Denumire Marca UM Stoc Obs
10 Laptop Dell buc 10 10.1" , 1.6GHz, 1GB RAM, HDD 160GB
20 Monitor TFT Samsung buc 8 WIDE 19"
30 DVD Player Philips buc 1 DVD+-/RW, DIVX, MP3, AUDIO CD, JPEG
40 Rama digitala Samsung buc 15 8" TFT, 500:1, 1GB, USB, Telecomanda
50 DVD TDK cut 60 100 buc/cutie
60 Laptop Lenovo buc 3 13.3", 1.3 GHz, 2x2GB RAM, HDD 320GB
70 Boxe Parrot set 5 5.1, Wireless, Bluetooth
80 Carte Access 2013 buc 200 MS Access 2013
90 CD cut 2000 100 buc pe cutie

Observaţii.
a) În cazul în care există cheie primară nu se va putea trece la următoarea înregistrare decât după
completarea câmpului cheie primară cu o valoare unică.
b) Câmpurile Web şi Sigla se pot completa cu date la alegere (opțional). Fisierele imagine grafică
trebuie să existe în folderul de lucru.
Problema 7. Să se ordoneze alfabetic după câmpul denumire înregistrările tabelei Produse.
Rezolvare:
1. Se deschide tabela Produse în modul de introducere date (dublu-click pe numele tabelei sau
click dreapta pe tabelă după care se selectează opţiunea Open).
2. Se poziţionează cursorul pe câmpul Denumire.
3.Fie se efectuează click pe butonul aflat în dreapta numelui câmpului, fie se efectuează click
pe butonul (sau pe butonul după caz) aflat in secţiunea Sort & Filter .
În dreapta numelui câmpului se va afişa o săgeată care indică modul de sortare al câmpului
(ascendent sau descendent).
4.Renunţarea la sortare se face prin efectuarea unui click pe butonul aflat in secţiunea Sort &
Filter.

11
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Problema 8. Care sunt partenerii din Cluj-Napoca?


Rezolvare: Problema se poate pune şi astfel: „Să se filtreze tabela Parteneri astfel încât să fie
afişate doar firmele din Cluj-Napoca”.
1.Se deschide tabela Parteneri în modul de introducere date.
2.Se poziţionează cursorul într-una din celulele din câmpul localitate.
Fie se efectuează click pe butonul aflat în dreapta numelui câmpului, fie se efectuează click

pe butonul .
Din lista de valori aferente câmpului se selecteaza doar valorile care vor fi afişate în continuare
(în cazul de faţă rămâne bifată doar localitatea Cluj-Napoca). Se pot selecta dacă se vor afişa sau
nu celulele vide prin bifarea sau de-bifarea casuţei Blanks. Se apasă butonul OK.

În bara de navigaţie aflată in partea din stânga jos a ferestrei va fi afişat faptul că tabela este
filtrată:

Renunţarea la filtrare se face afişând fereastra de filtrare şi bifând opţiunea (Select All) sau prin
apăsarea butonului Toggle Filter din secţiunea Sort & Filter.

Problema 9. Să se realizeze ordonarea descrescătoare a tabelei Facturi după câmpul cantitate.


Rezolvare: Problema se poate rezolva prin adăugarea unui index tabelei Facturi. Adăugarea unui
nou index se realizează astfel:
1. Se deschide tabela Facturi în modul Design View.
2. Se efectuează click pe tab-ul Table Tools – Design și se selectează opțiunea Indexes.
Dacă se doreşte adăugarea unui nou index care să fie primul criteriu de aranjare al înregistrărilor
acesta trebuie să fie aşezat pe primul rând. Dacă se doreşte păstrarea indecşilor existenti si
impunerea câmpului cantitate ca prim criteriu de aranjare se efectuează click dreapta pe primul
rând şi se alege opţiunea Insert Rows.

12
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Dacă există rânduri deja create în fereastra Indexes: Facturi se pot îndepărta prin efectuarea unui
click dreapta pe fiecare rând si alegerea opţiunii Delete rows .
3. Se introduce de la tastatură în celula goală apărută în coloana Index Name numele indexului, în
acest caz acesta fiind index_cantitate.
4.Se efectuează clic pe celula aferentă câmpului Field Name şi după aceea un nou clic pe butonul
▼ apărut în dreapta celulei. Din lista cu câmpurile tabelei se selectează câmpul dorit, în acest caz
Cantitate.
5.Se selectează modul de sortare ascendent sau descendent din coloana Sort Order.
Se păstrează proprietăţile Primary, Unique şi Ignore Nulls cu valorile implicite.

6.Se închide fereastra de dialog, realizându-se astfel salvarea modificărilor.


7.Se deschide tabela în modul introducere date si se verifică dacă înregistrările sunt ordonate după
câmpul Cantitate, conform figurii următoare:

Problema 10. Să se realizeze ordonarea descrescătoare a tabelei Produse după câmpul


unitate_masura.
Rezolvare: Se respectă paşii de la problema anterioară.

Problema 11. Să se modifice modul de introducere a datei calendaristice în câmpul


data_factura din tabela Facturi astfel încât să se sugereze formatul ZZ-LLL-AA (de ex. _ _-_ _ _-
_ _ pentru introducerea unei date de forma 10-Sep-13).

13
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Rezolvare: Problema se rezolvă prin modificarea formatului de introducere date (Input Mask).
Modificarea acestui format se realizează astfel:
1.Se selectează tabela în care se face modificarea, în cazul nostru tabela Facturi, şi se deschide în
modul Design View.
2.Se poziţionează cursorul pe câmpul Data care va fi modificat.
3.În fila General se poziţionează cursorul în câmpul Input Mask.
4.Se acţionează butonul cu simbolul „...” apărut în dreapta câmpului. Acţionarea acestui buton
declanşează un vrăjitor (wizard) cu următorii paşi:
– se selectează din lista disponibilă tipul de format dorit, în cazul nostru Medium Date
după care se acţionează butonul Next;
– se selectează caracterul de înlocuire (Placeholder character) din lista disponibilă după
care se acţionează butonul Next;
– se acţionează butonul Finish pentru încheierea vrăjitorului.
5.Se salvează modificările şi se închide fereastra Design View.
6.Se deschide tabela în modul de introducere date şi se efectuează clic pe câmpul Data aferent
unei noi înregistrări pentru a vizualiza modificarea adusă câmpului.

Problema 12. Să se modifice tipul de dată al câmpului Pret din tabela Facturi în monedă
(currency). De ce apar mesaje de avertizare la salvarea modificării?

Problema 13. Să se modifice proprietăţile câmpului cantitate din tabela Facturi astfel încât să
nu se permită introducerea unor valori negative. În cazul în care se introduce în mod eronat o
valoare negativă se va afişa mesajul „Cantitatea nu poate fi negativa!”. Toate datele care sunt
introduse în tabel se vor păstra nemodificate.

Rezolvare: Problema se pune astfel:


„Să se permită introducerea acelor date care satisfac o anumită condiţie.”
1. Se selectează tabela Facturi în care se face modificarea şi se deschide în modul Design View.
2. Se poziţionează cursorul pe câmpul cantitate care va fi modificat.
3. În fila General se poziţionează cursorul în celula Validation Rule în care se va specifica regula
care trebuie îndeplinită, în cazul nostru regula fiind exprimată sub forma inegalităţii „>=0”.
4. Se poziţionează cursorul în câmpul Validation Text unde se scrie de la tastatură mesajul care
va fi afişat în cazul introducerii unei valori care nu satisface regula impusă. În cazul nostru se
introduce de la tastatură „Cantitatea nu poate fi negativă”.
5. Se salvează modificările şi se închide fereastra Design. Elementele modificate pot fi observate
în fereastra următoare:

14
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

6. Se răspunde Nu mesajului prin care se solicită verificarea datelor deja introduse în tabel;
7. Se deschide tabela în modul de introducere date, dacă este posibil, şi se încearcă introducerea
unei valori negative în câmpul cantitate aferent ultimei înregistrări. Se încearcă poziţionarea
cursorului pe alt câmp şi se constată apariţia unei ferestre de atenţionare care conţine mesajul
specificat anterior. Se forţează închiderea tabelei fără salvarea modificărilor.

Problema 14. Să se modifice proprietăţile câmpului Pret din tabela Facturi astfel încât să nu
se permită introducerea unor valori negative. În cazul în care se introduce în mod eronat o
valoare negativă se va afişa mesajul „Preţul nu poate fi negativ!”.
Rezolvare: Asemănător problemei precedente.

Problema 15. Să se seteze o proprietate astfel ca implicit toate Facturile să fie de tip Vânzare
Rezolvare: In fila de proprietăţi General se setează Default Value = “V”

Problema 16. Să se seteze o proprietate astfel ca implicit toate facturile să aibă data curentă.

Rezolvare: In fila de proprietăţi General se setează Default Value = Date()

Problema 17. Să se facă modificari asupra datelor din tabela Facturi astfel: se impun
următoarele reguli pentru discountul de facturi, în funcție de valoarea lor.
Cumpărări: sub 2500: 10%, intre 2500-5000: 15%, peste 7500 20%;
Vânzări: sub 2000: 0%, peste 2000: 5%

15
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Probleme propuse
Problema 1. Se dorește ținerea evidenței pentru transportul in comun din Cluj-Napoca. Se are
în vedere emiterea de abonamente, gestiunea liniilor și stațiilor, precum și a mijloacelor de
transport. Baza de date se salvează sub numele Transport in comun. Ce date sunt legate de
transportul în comun? Care din aceste date trebuie stocate? Câte tabele va conține baza de date?
Problema 2. Să se populeze baza de date Transport în comun cu înregistrări legate de diferite
abonamente, linii și stațiile aferente, precum și mijloace de transport.
Problema 3. Să se ordoneze alfabetic după câmpul Număr linie înregistrările tabelei Linii.
Problema 4. Care sunt numele staţiilor existente în cartierul Mănăştur?
Problema 5. Care sunt numerele de linii deservite de autobuze?
Problema 6. Să se modifice modul de introducere a datei calendaristice în câmpul
data_inceput din tabela Abonamente.
Problema 7. Să se seteze o proprietate a tabelei Mijloace de transport astfel ca valoarea
implicită să fie autobus.
Problema 8. Să se modifice proprietăţile câmpului număr linie din tabela Linii astfel încât să
nu se permită introducerea unor valori negative. În cazul în care se introduce în mod eronat o
valoare negativă se va afişa mesajul „Numărul liniei nu poate fi negativ!”.

Soluții:
Problema 1
Tabela Abonamente:

Observatie : Câmpul Serie va avea lungimea 2,


câmpul Tip abonament lungime 10.

Tabela Linii:

16
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Tabela Mijloace de transport:

Observatie : Câmpul Număr Imatriculare va avea lungimea 7.

Tabela Statii:
Tabela Tipuri de abonamente:

17
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Problema 2

18
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Lucrarea de laborator 3. Relații între tabele și constrângeri


Problema 1.
Să se stabilească la ce adresă trebuie expediată factura numărul 4000?

Discuție: pentru a găsi factura numărul 4000 utilizatorul trebuie să deschidă tabelul Facturi în
modul de vizualizare date și să inspecteze coloana Nr, găsind înregistrarea care se referă la
această factură. Parcurgând înregistrarea, se poate găsi câmpul Partener cu valoarea Royal
SA, dar nu se poate găsi adresa acestui partener (vezi figura următoare).

Figura 3.1 Înregistrarea facturii 4000 în tabelul Facturi

Pentru a găsi adresa, utilizatorul trebuie să deschidă tabelul Parteneri, să caute înregistrarea
firmei Royal, iar în cadrul înregistrării respective să găsească câmpul Localitate și Adresa.
Astfel se poate stabili că produsele trebuie trimise la Cluj-Napoca, B-dul 1 Decembrie 1918
nr 19 (vezi figura următoare).

Figura 3.2. Înregistrarea partenerului Royal SA în tabelul Parteneri

Privind tabelele Facturi și Parteneri, se poate observa că acestea au o coloană comună.


Valorile identice din această coloană (Royal SA în cazul acesta) permit ca datele din două
înregistrări să fie unite, trăgându-se astfel concluzia că factura 4000 urmează să fie livrată la
Cluj-Napoca. În cazul în care două tabele au o coloană comună, spunem că ele au o relație.

1
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Înregistrările care pot fi unite datorită relației între Parteneri și Facturi sunt prezentate în
figura următoare.

Figura 3.3 legăturile care pot fi stabilite pe baza relației între tabelele Parteneri și Facturi

Soluție: Pentru a stabili o relație:


1. Se creează o coloană comună celor două tabele din relație. Coloana comună trebuie să aibă
același tip de date și aceeași lungime.
2. Se selectează tab-ul Database tools, opțiunea Relationships, rezultatul fiind deschiderea
unei ferestre cu titlul Relationships. Dacă tabelele nu sunt afișate în fereastra, se selectează
opțiunea Show Table din tab-ul Relationship Tools – Design iar din fereastra afișată se
efectuează dublu-clic pe fiecare din tabelele Parteneri și Facturi.
3. Se selectează câmpul Denumire din tabela Parteneri se ține apăsat butonul mouse-ului după
care se trage și se eliberează peste câmpul Partener din tabela Facturi. Rezultatul este apariția
ferestrei Edit Relationships, conform figurii de mai jos.

Figura 3.4 Fereastra de crearea și modificare a unei relații

4. Se selectează butonul Create. Rezultatul va fi cel afișat în figura următoare.

2
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 3.5 Vizualizarea relației între tabelele Parteneri și Facturi

Problema 2 Se constată că există probleme în relația între tabelele Parteneri și Facturi.


Aceste probleme sunt evidente dacă se examinează înregistrarea stocată în tabela Parteneri
sub numele Royal SA. În tabela Facturi, valorile din câmpul de legătură Partener sunt Royal,
Royal SA respectiv Royal Sa. Aceeași problemă apare și în cazul firmei Electronica Impex
SRL Ca urmare, deși pot fi create și relații între câmpuri de tip text, este recomandat să se
realizeze relații între câmpuri numerice deoarece același lucru nu poate fi scris în mai multe
moduri. Cerința problemei este: să se modifice relația între tabelele Parteneri și Facturi astfel
încât să se realizeze pe baza câmpului Cod fiscal.
1. Se creează un nou câmp în tabelul Facturi cu denumirea Cod și tipul de date și lungimea
câmpului Cod fiscal din tabelul Parteneri. Pentru fiecare înregistrare, se introduc codurile
fiscale ale partenerilor. În acest moment, câmpul Partener din tabelul Facturi este inutil.
Totuși, dacă se încearcă ștergerea va apare un mesaj de eroare care avertizează că este
implicat într-o relație;
2. Se deschide fereastra Relationships (se selectează tab-ul Database Tools, opțiunea
Relationships);
3. Se efectuează clic-dreapta pe linia care unește cele două tabele, iar din meniul contextual
apărut se selectează opțiunea Edit Relationship;
4. Se selectează câmpul Cod Fiscal din lista derulantă aflată în coloana Parteneri, respectiv
câmpul Cod din lista derulantă aflată în coloana Facturi (vezi figura următoare). Se
selectează butonul OK.

3
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 3.6. Modificarea unei relații existente

5. Se șterge câmpul Partener din tabelul Facturi.

Problema 3 Are sens o relație între tabelele Parteneri și Produse? De ce?

Problema 4 Managerii firmei stabilesc ca în anumite perioade să vândă anumite produse la


prețuri promoționale. Cum trebuie modificată baza de date pentru a satisface această nevoie?
1. Se stabilesc ce date trebuie stocate in baza de date în legătură prețurile care diferă de la o
perioadă la alta. Evident, trebuie stocat prețul produsului (deocamdată există un astfel de
câmp în tabela Facturi). Legat de perioada de valabilitate, este recomandată stocarea datei de
început și a datei de sfârșit (de preferat de exemplu unei combinații dată de început și număr
de zile de valabilitate). În cele din urmă, se poate stoca și cota de TVA aferentă prețului,
deoarece diferă în funcție de produse.
2. Se stabilesc ce câmpuri există deja în baza de date și ce câmpuri noi trebuie create.
Singurul câmp care există este Pret în tabelul Facturi. Trebuie create câmpurile noi: Data
început, Data sfârșit, respectiv Cota TVA.
3. Se stabilesc în câte tabele urmează să fie stocate aceste câmpuri. În acest caz, este suficient
un singur tabel. Acesta va purta denumirea Istoric_Pret.
4. Se stabilește cu ce tabela existente vor avea relații noile tabele. Dat fiind că este vorba de
un singur tabel care se referă la prețul unor produse, este evident că relația urmează să fie
creată cu tabela Produse, pe baza codului de produs. Ca urmare, câmpului Cod se adaugă
câmpurilor din tabelul Istoric_Preț, menționate la Pasul 2.
5. Se implementează design-ul stabilit astfel:
5.1. Se creează un nou tabel denumit Istoric_Preț care va conține 5 câmpuri (pentru fiecare
din aceste câmpuri se va selecta tipul de date potrivit);
5.2. Se creează o relație între Produse și Istoric_Preț. Rezultatul trebuie să arate ca în figura
următoare;
5.3. Se șterge câmpul Pret din tabelul Facturi.

Figura 3.7. Relația între tabelele Produse și Istoric_Pret

4
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Problema 5 Să se introducă următoarele înregistrări în tabelul Istoric_Pret:


ISTORIC_PRET
Cod DataStart DataFinal PU CotaTVA
10 01.01.2014 30.06.2014 1.200,00 24%
100 01.07.2014 25.10.2014 1.100,00 24%

Problema 6 În urma introducerii datelor, au apărut inconsistențe în baza de date. Care sunt
erorile introduse? Să se modifice datele introduse la Problema 5 pentru a evita apariția
inconsistențelor.

Problema 7 Pentru a evita posibilele inconsistențe apărute în problema anterioară, se va


impune integritatea referențială pentru relația între tabelele Produse și Istoric_Pret.
Integritatea referențială se referă la restricționarea introducerii de înregistrări în tabela
Istoric_Preț (în cazul acesta aceasta fiind tabelul copil) care în câmpul Cod (cheie străină
pentru acest tabel) să conțină alte valori decât cele existente în câmpul cheie primară (Cod în
acest caz) din tabelul Produse (tabel părinte). Tot impunerea regulii de integritate referențială
împiedică ștergerea unei înregistrări din tabelul Produse, în cazul în care există înregistrări
referite în tabelul Istoric_stoc.
Pentru a seta reguli de integritate referențială se parcurg următorii pași:
1. Se deschide fereastra Relationships prin selectarea tab-ului Database Tools și a opțiunii
Relationships;
2. Se efectuează clic-dreapta pe linia care unește cele două tabele, după care se selectează
opțiunea Edit Relationship;
3. În fereastra Edit Relationship se efectuează clic pe check-box-ul Enforce Referential
Integrity.
Rezultatul trebuie să coincidă cu figura de mai jos.

Figura 3.8.Impunerea integrității referențiale pentru relația între tabelele Produse și


Istoric_Pret

4. Se selectează butonul OK.

Atenție! Dacă la Problema 6 nu au fost modificate datele introduse, va apărea mesajul de


eroare din figura următoare.

5
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 3.9. Mesajul care avertizează că integritatea referențială nu poate fi impusă din cauza
datelor deja introduse în tabela copil

Acest mesaj semnalează faptul că datele deja introduse în tabela Istoric_Pret vor genera
înregistrări orfan (înregistrări a căror valori din cheia străină nu pot fi legate cu valori din
cheia primară). Ca urmare, e necesară corectarea valorilor din cheia străină. În cazul acesta, e
vorba de a doua înregistrare introdusă la Problema 5, care are codul 100. Acest cod nu poate
fi regăsit în câmpul Cod din tabelul Produse. Corecția necesară e modificarea valorii 100 în
10 deoarece acesta este codul corect al produsului Laptop. Se refac pașii 1-4 pentru
impunerea integrității referențiale.

Problema 8 Să se introducă și următoarele înregistrări în tabelul Istoric_Pret. De ce nu se


pot introduce toate înregistrările?

ISTORIC_PRET
Cod PU DataStart DataFinal CotaTVA
10 1.150,00 26.10.2014 15.12.2014 24%
20 500,00 01.01.2014 30.06.2014 24%
30 400,00 01.01.2014 30.06.2014 24%
30 400,00 01.07.2014 25.10.2014 24%
40 200,00 01.01.2014 30.06.2014 24%
50 80,00 01.07.2014 15.12.2014 24%
60 3.200,00 01.10.2014 15.12.2014 24%
70 700,00 01.10.2014 15.12.2014 24%
80 80,00 01.01.2014 15.12.2014 9%
90 10,00 01.01.2014 10.12.2014 9%
90 9,00 11.01.2014 21.12.2014 9%

Problema 9 Să se examineze înregistrările din tabelul Facturi (prezentate și în figura


următoare). Câte înregistrări trebuie modificate dacă se constată că data facturii cu numărul
2000 a fost eronat introdusă (de exemplu, data corectă este 28 aprilie 2014)? Dar dacă
numărul facturii 6000 trebuie modificat în 6010?

6
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 3.10.Înregistrările stocate în tabelul Facturi

Se constată că există redundanță (valori care se repetă fără a fi necesar). Redundanța duce pe
de o parte la consum de timp (la introducerea datelor) și de resurse (spațiu pe disc pentru
stocare, sau memorie la manipularea înregistrărilor). Pe de altă parte, în cazul modificării
valorilor deja introduse, poate duce la erori dacă modificarea trebuie realizată în mai multe
locuri.

Problema 10 Să se elimine redundanța identificată în problema anterioară. Metoda de


eliminare a redundanței presupune divizarea unui tabel în două sau mai multe tabele, și
crearea de relații între acestea.
Problema redundanței în tabelul Facturi provine din faptul că o factură poate conține mai
multe poziții (produse cumpărate sau vândute). De fapt, câmpurile care se referă strict la
factură sunt Nr, Data, Tip și Discount. Câmpurile Produs și Cant se referă la fiecare rând
(poziție) din factură (de exemplu, cu factura 6000 s-au achiziționat 3 produse: două tipuri de
Laptopuri în cantitate de 1 bucată și 2 bucăți, respectiv 10 DVD-uri). Câmpul Cod se referă la
codul fiscal al furnizorului/clientului și el se referă la întreaga factură și nu la pozițiile
acestuia. Deci, va fi păstrat în tabelul Facturi. Ca urmare, pașii pentru rezolvarea redundanței
sunt:
1. Se creează tabelul suplimentar și câmpurile acestuia:
1.1 Se creează un tabel suplimentar denumit Conținut_Fact;
1.2 Se creează un câmp denumit Cant, de tip numeric și lungime Single;
1.3 Se creează un câmp denumit Produs, cu proprietățile câmpului Produs din tabelul Facturi;
1.4 Pentru a păstra legătura dintre produsele de pe factură și numărul facturii, se creează un
câmp cheie străină în Conținut_Fact denumit Fact, cu tipul de date și lungimea câmpului Nr
din tabelul facturi;
2. Se introduc datele care trebuie stocate în tabelul suplimentar, după care se șterg din tabelul
inițial:
1.1 Se copiază toate numele de produs, cantitățile și numerele de facturi din tabelul Facturi în
tabelul Conținut_Fact;
1.2 Se șterg câmpurile Cant și Produs din tabelul Facturi.
1.3 Se șterg rândurile duplicat (cu valori identice pentru toate înregistrările);
1.4. Se setează câmpul Nr din tabelul Facturi ca și cheie primară, deoarece acum fiecare
înregistrare a tabelei se referă la o singură factură.
3. Se creează relația între tabelul Facturi și tabelul Conținut_Fact pe baza câmpului comun,
pentru a nu pierde legătura între cantitățile produselor și facturile cu care acesta au fost
achiziționate/vândute:
3.1 Se creează o relație între câmpul cheie străină Fact din Conținut_Fact și câmpul cheie
primară Nr din tabelul Facturi.

7
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

3.2 Se impune regula de integritate referențială;


După implementarea acestor modificări, înregistrările din tabelele Conținut_Fact și Facturi,
precum și relațiile din baza de date vor fi cele prezentate în figura următoare.

Figura 3.11. Tabelele și înregistrările aferente, după rezolvarea redundanței din tabelul
Facturi

Problema 11 Să se rafineze și creeze relația dintre tabelul Continut_Fact și Produse. Să se


impună integritatea referențială. După rezolvarea problemei, relațiile dintre tabelele din baza
de date vor coincide cu cele din figura următoare:

Figura 3.12. Relațiile între toate tabelele din baza de date

Problema 12 S-a constat că, dintr-o eroare de editare, codul fiscal al partenerului Royal
SA este greșit stocat în baza de date. Să se modifice codul fiscal al partenerului Royal SA în

8
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

122221. Ce problemă identificați în cazul realizării acestei modificări? Să se revină la


valoarea inițială (663366).

Problema 13 Să se modifice relația între Parteneri și Facturi, astfel încât orice modificare
adusă Codului Fiscal al unui partener să actualizeze Codul înregistrărilor din tabelul Facturi.
Pentru modificarea unei relații se urmează pașii 1-4 de la Problema 7. Diferența este că în
fereastra Edit Relationship se bifează și check-box-ul Cascade Update Related Fields,
conform figurii următoare.
Să se modifice codul fiscal al partenerului Royal SA în 122221. Ce modificări s-au realizat în
tabelul Facturi?

Figura 3.13. Setarea regulii de actualizare în cascadă

Problema 14. Să se modifice relația dintre Produse și Istoric_Pret astfel încât la ștergerea
unui produs să se șteargă automat și istoricul de prețuri al produsului respectiv.
1. Se modifică relația, iar în fereastra Edit Relationship se bifează check-box-ul Cascade
Delete Related Fields, conform figurii următoare:

Figura 3.14. Setarea regulii de ștergere în cascadă

2. Se verifică înregistrările din tabelul Istoric_Preț și se număra câte înregistrări au codul de


produs 90;
3. Se șterge produsul cu codul 90 din tabelul Produse:

9
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

4. Se verifică din nou înregistrările din tabelul Istoric_Preț și se număra câte înregistrări au
codul de produs 90.

Probleme propuse

Problema 1. Să se seteze chei primare în tabelele construite anterior ale bazei de date
transport în comun.
Problema 2. Să se traseze următoarele relaţii:

10
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

LUCRAREA DE LABORATOR 4.
Construirea şi utilizarea interogărilor
Problema 1.Să se afişeze toate informaţiile despre produse. Cum se va proceda în cazul
partenerilor?
Rezolvare: Pentru construirea interogării se parcurg următorii paşi:
1. Se selectează tabela Produse;
2. Se selectează fila Create şi se efectuează clic pe butonul Query Wizard;
3. Se va afişa fereastra New Query ce conţine o listă cu toate tipurile de interogări
realizabile în mod asistat, cu instrumente de tip wizard. Alegem Simple Query
Wizard.

4. În lista Table/Queries este deja selectată tabela Produse, datorită selectării ei încă
de la început. Astfel, acum nu mai trebuie să facem această alegere. Acţionăm
butonul pentru a trece toate atributele din lista Available Fields în Selected
Fields. Pentru mutare unul câte unul, selectăm câmpul şi utilizăm butonul cu
săgeată simplă, iar pentru a renunţa la o selecţie folosim butoanele cu săgeţi
orientate invers, spre stânga. Acţionăm apoi butonul Next;

5. Dacă nu am fi avut nevoie de o situaţie detaliată, am fi ales Summary, activându-


se şi Summary Options…Acţionăm deci doar butonul Next;
6. Dăm un nume sugestiv interogării, pentru a o putea reutiliza pe viitor („Informatii
detaliate Produse”);

1
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

7. Acţionăm butonul Finish, pentru a rula interogarea realizată;

Se observă că în panoul de navigare din stânga apare categoria Queries cu un element ce


poartă numele pe care l-am dat interogării, precedat de o pictogramă specifică interogărilor de
selecţie . În cadrul suprafeţei de lucru a ferestrei Access se afişează rezultatul. Afişarea
datelor se realizează în modul Datasheet View, selectabil din fila HOME – View, sau din
colţul dreapta-jos al ferestrei Access.
Celelalte două modalităţi de vizualizare sunt SQL View şi Design View. Conform acestora,
pentru prima avem următoarea imagine:

2
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

De reţinut (pe baza vizualizării din SQL View):


1. O interogare se poate scrie direct în SQL View;
2. Pentru interogări care extrag informaţii din baza de date se foloseşte
comanda SELECT.
3. Clauzele SELECT şi FROM sunt obligatorii în orice interogare;
4. În cadrul clauzei SELECT se trece lista de atribute de afişat, atributele fiind
separate cu virgulă;
5. În clauza FROM se pune sursa de date.
În cazul partenerilor se poate proceda similar, doar că alegeam tabela Parteneri, şi nu
Produse. Dar, vom indica o altă modalitate de rezolvare, tot cu instrumente vizuale,
însă fără asistenţă pas cu pas: – Create – Query Design. Selectăm Parteneri din
fereastra Show Table – Add.

Apare în cadrul suprafeţei de lucru fereastra constructorului/proiectantului de


interogări (Query Designer). Dăm dublu-clic pe prima linie de sub numele
tabelei. Fereastra Design View are 2 panouri orizontale, cel superior conţinând sursa
sau sursele de date necesare interogării (tabele, sau la rândul lor alte interogări
selectabile din fereastra Show Table). Panoul inferior are format tabelar, fiecare
coloană reprezentând atributul sau expresia a cărui/cărei rezultat va fi afişat la rulare,
respectiv în raport cu care formulăm criterii de filtrare şi sortare. Trecerea unui atribut
din panoul cu sursele de date într-o coloană se efectuează cu dublu-clic, sau selectarea
atributului direct din liniile Table şi Field, recomandat în această ordine pentru

3
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

existenţa a mai multe surse de date. Sort permite ordonarea crescătoare sau
descrescătoare a rezultatelor după acea coloană, Show indică dacă acea coloană se va
afişa în cadrul rezultatelor. În Criteria se trec condiţii, reguli, filtre, iar în Or avem
condiţii alternative.

Pentru vizualizarea rezultatului, deci practic pentru comutarea în


modul Design View folosim unul dintre butoanele View/Run.

În partea dreaptă avem codul SQL. Pentru salvarea interogării acţionăm opţiunea Save ,
sau la închiderea ferestrei constructorului de interogări vom fi solicitaţi să denumim
interogarea („Informatii detaliate Parteneri”), sau să renunţăm la această operaţiune.
De reţinut (pe baza vizualizării din SQL View):
Pentru menţionarea eficientă a tuturor atributelor din cadrul unei surse de date, în
clauza SELECT folosim „*”, opţional prefixat de numele sursei de date.
Problema 2.Să se afişeze produsele, marca şi unitatea de măsură.
Produse aflată în panoul superior, ce gestionează sursele de date; Rezolvare: Se va rezolva în
Design View, fără utilizare wizard. Pentru construirea interogării dorite se parcurg următorii
paşi:
1. Se selectează fila Create şi se efectuează clic pe butonul Query Design;

4
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

2. Se afişează fereastra Show Table; se selectează tabela Produse, se acţionează


butonul Add (sau dublu-clic); se termină operaţia de selectare prin acţionarea
butonului Close;
3. Se efectuează dublu-clic pe fiecare din cele 3 atribute – Denumire, Marca, UM –
din cadrul tabelei

4. Se rulează interogarea, apoi se salvează cu numele Produse si unitate masura.

Problema 3.Să se afişeze produsele, marca şi unitatea de măsură, la produs apărând în


capul de tabel „Unitate de masura”, în loc de „UM”.

Rezolvare: Avem aceeași interogare ca la problema anterioară, cu diferenţa că se modifică


antetul unei coloane.
1. Se deschide interogarea Produse si unitate masura în modul Design View: se
efectuează clic-dreapta pe numele interogării din cadrul panoului de navigaţie, iar din
meniul contextual alegem Design View;
2. Ne poziţionăm pe prima linie din coloana a treia, plasând cursorul înaintea textului
„UM”. Tastăm denumirea ce se doreşte să apară în capul de tabel, urmată de „:”. Deci,
vom avea Unitate de masura: UM;

5
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

3. Se rulează interogarea şi se verifică rezultatul. Se conspectează şi codul SQL;

4. Se salvează interogarea menţinând numele iniţial.


De reţinut (pe baza vizualizării din SQL View):
Pentru specificare unei denumiri alternative de coloane, alias, se utilizează clauza
AS între cele două denumiri. Dacă aliasul este format din mai multe cuvinte, se va
intercala între paranteze drepte.
Problema 4.Să se afişeze denumirile produselor exprimate în bucăţi.
Rezolvare: Pentru această problemă vom folosi ca punct de pornire interogarea anterioară. O
vom duplica, o redenumim şi facem modificările conform enunţului.
1. Selectăm interogarea şi efectuăm Copy – Paste. În fereastra Paste As introducem
noua denumire, Produse exprimate in bucati – OK;

2. Deschidem noua interogare mai întâi în Datasheet View (din meniul contextual
alegem Open, sau dăm dublu-
clic), pentru a vedea cum se
reflectă la nivelul datelor faptul că avem produse exprimate în bucăţi. Se observă că
acestea conţin textul „buc” în coloana cu unitatea de măsură. Comutăm în modul de
proiectare: HOME – View – Design View;

6
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

3. Pentru specificarea condiţiei, în linia a cincea (Criteria), coloana a treia, tastăm „buc”.
Fiind vorba de text, Access va pune automat ghilimele.

4. Se rulează interogarea pentru verificare;

5. Deoarece nu ne interesează să afişăm decât denumirea, vom şterge coloana a doua. O


selectăm, dând clic pe antetul de coloană şi apăsăm tasta Del. Coloana a treia nu o
putem şterge deoarece condiţia este formulată în raport cu aceasta, deci doar debifăm
căsuţa Show (linia 4) din cadrul coloanei aferente acesteia;

6. Se salvează modificările.
De reţinut (pe baza vizualizării din SQL View):
Pentru specificare unei condiţii de filtrare la nivel de linie/înregistrare, se foloseşte clauza
WHERE.
Problema 5.Să se afişeze denumirile produselor ordonate alfabetic.

7
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

Rezolvare: Se va duplica interogarea Produse exprimate in bucati. Copiem această interogare


sub numele Lista produse.
1. Deschidem interogarea Lista produse în modul Design View;
2. Ştergem coloana a doua, cea cu condiţia referitoare la unitatea de măsură
3. Efectuăm ordonarea alfabetică crescătoare după denumire. În prima coloană, la
rubrica Sort (linia 3) selectăm Ascending din cadrul listei derulante.

4. Se vizualizează rezultatul şi codul SQL;

5. Salvăm modificările.
De reţinut (pe baza vizualizării din SQL View):
Pentru specificare unui criteriu de ordonare, se foloseşte clauza ORDER BY, cu opţiunea
ASC (opţională) pentru ordonare crescătoare, respectiv DESC pentru descrescătoare.
Problema 6.La fel ca problema anterioară dar un produs să apară afişat o singură dată.
Rezolvare:
Se observă în urma ordonării alfabetice că un produs apare afişat de mai multe ori, fiind o
informaţie duplicată la afişarea unei singure coloane, chiar dacă produsele nu sunt identice,
fiind de mărci diferite. Aşadar, modificăm interogarea Lista produse, dar o redenumim
înainte ca Lista generica produse.
1. Verificăm să fie închisă interogarea Lista produse, apoi după selectarea ei acţionăm
fie F2, fie alegem opţiunea Rename din meniul contextual. Înlocuim numele existent
cu Lista generica produse. Deschidem interogarea în Design View;

8
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

2. Deschidem fereastra de proprietăţi pentru interogare: fila DESIGN – opţiunea


. În panoul de sus dăm un clic pe o zonă în care nu se află sursa de date.
Ne asigurăm că în fereastra de proprietăţi, la rubrica Selection type apare „Query
Properties”. Căutăm proprietatea Unique Values, căreia îi asociem valoarea Yes din
cadrul listei derulante.

3. Se rulează interogarea.

6. Salvăm.
De reţinut (pe baza vizualizării din SQL View):
Pentru eliminarea liniilor duplicate se foloseşte în cadrul clauzei SELECT opţiunea
DISTINCT.

Problema 7.Să se afişeze stocul şi denumirile produselor exprimate în bucăţi care au stoc
de cel puţin 15 unităţi.
Rezolvare: Folosim şi multiplicăm interogarea Produse exprimate in bucati. Noua copie va fi
intitulată. Produse exprimate in bucati cu stoc >= 15.

9
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

De reţinut (pe baza vizualizării din SQL View):


Condiţiile de filtrare pot fi si compuse. Pentru formularea unei condiţii care presupune
satisfacerea simultană a două sau mai multe criterii, condiţiile individuale se combină
prin utilizarea operatorului relaţional AND. Dacă aceste condiţii individuale trebuie
împlinite fie una, fie alta atunci operatorul va fi OR.

Problema 8.Să se afişeze numai produsele care au unitatea de măsură exprimată în set şi
cut utilizând tabelul Produse din baza de date MAGAZIN.
Rezolvare: Pentru construirea interogării se parcurg următorii paşi:
1. se selectează fila Create şi se efectuează click pe butonul Query Design
2. se afişează fereastra Show Table ce conţine o listă a tabelelor şi interogărilor care
pot reprezenta sursa de date pentru interogare. Se selectează tabela Produse, se
acţionează butonul Add. Se termină operaţia de selectare prin acţionarea butonului
Close.

Observaţie - se pot selecta în orice moment şi alte tabele prin apăsarea butonului Show Table
din fila Query Design Tools.
- Fereastra Design View conţine două zone principale: zona din partea de sus a
ferestrei unde sunt afişate tabelele şi relaţiile între acestea, iar cea din partea de jos afişează
câmpurile şi criteriile de filtrare.

10
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

3. se selectează câmpurile care vor participa la construirea interogării. Se efectuează


click pe prima coloană, rândul Field, se efectuează click pe butonul apărut în dreapta
celulei şi se selectează câmpul Denumire al tabelului PRODUSE .

4. se procedează în mod asemănător pentru selectarea câmpului UM al tabelului


PRODUSE
5. în rândul Criteria al coloanei UM se va preciza criteriul set. (De câte ori se va
preciza un criteriu de tip text, acesta va fi inclus automat între ghilimele de maniera
următoare ”set”).
6. în rândul or al coloanei UM se va preciza criteriul cut.

7. vizualizarea rezultatului interogării precum şi trecerea de la un mod de vizualizare


la altul se face folosind butoanele Run respectiv View din fila Query Tools Design.

11
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

Rezultatul rulării interogării în urma acţionării butonului RUN este următorul:

8. Se salvează modificările aduse interogării. Interogarea se va numi


SelectieProduseUM

Problema 9. Să se afişeze numai partenerii care au sediul în localitatea Cluj-Napoca sau


Turda.
Rezolvare: Pentru construirea interogării dorite se parcurg următorii paşi:
1. se selectează fila Create şi se efectuează click pe butonul Query Design.
2. se afişează fereastra Show Table; se selectează tabela PARTENERI, se acţionează
butonul Add; se termină operaţia de selectare prin acţionarea butonului Close.

3. se selectează câmpurile care vor participa la constuirea interogării; se tastează


criteriile pentru interogarea de selecţie, localitate Cluj-Napoca sau (or) Turda.

12
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

4. vizualizarea rezultatului interogării precum şi trecerea de la un mod de vizualizare


la altul se face folosind butoanele Run respectiv View din fila Query Tools Design.

Rezultatul rulării interogării în urma acţionării butonului RUN este următorul:

Problema 10. Care sunt produsele cu stoc între 10 şi 100?


Rezolvare: Se poate considera varianta în care intervalul îl scriem ca două inegalităţi
îndeplinite concomitent, sau prin utilizarea operatorului de comparaţie
BETWEEN.
În coloana în care am pus atributul Stoc, linia Criteria, dăm clic-dreapta şi alegem opţiunea
Build… Sau, selectăm opţiunea din fila DESIGN. În fereastra
constructorului de expresii – Expression Builder – care apare, alegem din
cadrul primei liste Operators, din a doua Comparison, iar din a treia Between
şi formăm expresia de mai jos.

13
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

Se va salva ca Produse cu stoc intre 10 si 100.

Problema 11. Dar produsele care au unul din următoarele stocuri: 8, 5, 200, 60?
Rezolvare: De această dată nu avem un interval, ci o mulţime de valori discrete, neordonate.
Se procedează similar cu problema anterioară, dar în loc de Between alegem operatorul In.

14
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

Salvăm interogarea sub numele Produse cu stoc 8,5,200,60.

Problema 12. Să se afişeze o singură coloană, a cărei înregistrări să fie de forma:


Produsul x are codul y.

Rezolvare: Afişarea fiind pe o singură coloană indică faptul că va trebui să comasăm în


aceasta elemente din mai multe atribute, interconectate. Practic avem text concatenat cu
valori ale unor câmpuri. Operatorul de concatenate este „&”, iar textul se scrie între
ghilimele. Expresia se va defini utilizând constructorul de expresii. Pentru ca să nu apară în
antetul coloanei o denumire abstractă de tipul Expr1, vom crea un alias de coloană:
Informatie: "Produsul " & [Produse]![Denumire] & " are codul " & [Produse]![Cod]

15
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

Se salvează interogarea cu denumirea Informatie Produs – Cod.


De reţinut (pe baza vizualizării din SQL View):
Aşadar, în clauza SELECT nu avem doar *, sau o listă de atribute, ci şi expresii la nivel de
linie.
Problema 13. Să se afişeze numele şi marca produselor cu un stoc ipotetic pesimist,
pe jumătate din cel actual. Nu se acceptă decât unităţi întregi, în prima situaţie având
rotunjire în sus, iar în a doua în jos pentru stocurile impare.
Pentru rezolvare se vor calcula expresii matematice.

Problema 14. Să se afişeze lista produselor care încep cu litera „D”. Şi pe cea a
celor care se termină în „a”. Dar cele care conţin litera „p”? Dar dacă avem litera „a”
pe poziţia a doua?
Rezolvare: Pentru acest tip de probleme se foloseşte operatorul pentru şiruri de caractere
LIKE. El va fi urmat de un şablon de căutare, pentru compunerea sa utilizându-se caractere
speciale de înlocuire, care în SQL-ul utilizat în Access sunt „*” şi „?”. Primul ţine locul la
oricâte caractere, sau chiar niciunul, în timp ce al doilea înlocuieşte strict un caracter.
Rezolvaţi în continuare problema pentru a obţine următoarele rezultate.

16
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

Problema 15. Să se afle numărul de produse.


Rezolvare: Această problemă conţine date agregate, cumulate prin considerarea unui număr
mai mare de linii, faţă de una singură ca până acum.
1. Adăugăm tabela Produse în constructorul de interogări;
2. Adăugăm în prima coloană a panoului de jos orice atribut al tabelei;

3. Acţionăm butonul din fila DESIGN. Cu această ocazie, în cadrul tabelului din
panoul inferior va apărea o nouă linie, Totals. Din lista derulantă aferentă acestei linii
alegem funcţia Count, care va număra produsele.
4. Ataşăm un alias acestei coloane;

5. Se salvează interogarea ca Numar produse.


Problema 16. Să se afle numărul de produse generice.
Rezolvare: Se va rula interogarea de mai înainte nu pe tabela Produse, ci pe o altă interogare,
şi anume pe cea care returnează produsele luate o singură dată după nume, fără duplicate:
Lista generica produse.
1. Pentru a putea selecta o interogare ca sursă de date pentru o altă interogare, în
fereastra Show Table accesăm fila Queries.

17
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

2. Efectuăm paşii 2-4 ca în cazul problemei anterioare;


3. Salvăm interogarea ca Numar produse generice.
Problema 17. Care este cea mai mare cantitate dintr-un produs existentă pe stoc? Dar cea
medie?
Rezolvare: Rezolvaţi problema utilizând cunoştinţele dobândite până acum.
Problema 18. Să se afişeze numele partenerilor cu sediul într-o localitate introdusă de
utilizator la fiecare rulare a interogării.
Rezolvare:
1. Diferenţa faţă de interogarea de selecţie constă în tastarea pe rândul Criteria a
parametrului [tastaţi localitatea]; parametrul este simbolizat de parantezele drepte
între care acesta este inclus.
2. Se salvează interogarea sub numele Parametru; la rularea interogării se va afişa în
primul rând următoarea fereastră, iar în funcţie de localitatea tipărită de utilizator se
vor afişa doar partenerii din localitatea respectivă.

3. Rezultatele următoare sunt obţinute prin două rulări succesive ale aceleiaşi interogări:

18
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

..

Problema 19. Să se afişeze produsele exprimate într-o anumită unitate de măsură,


dar care se va introduce de la tastatură la fiecare rulare.
Rezolvare: Se procedează asemănător cu problema anterioară. Ca interogare de pornire
folosim Produse exprimate in bucati.

19
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

Problema 20.Să se găsească facturile de intrare înregistrate în tabelul corespunzător după


data de 25 aprilie martie 2014.
Problema 21.Să se găsească facturile de ieşire înregistrate în tabelul corespunzător înainte
de data de 22 noiembrie 2014
Problema 22.Să se realizeze o interogare asupra tabelei CONTINUT_FACT în care să se
stabilească un câmp numit Tva care să conţină tva-ul aferent preţului de vânzare.

PROBLEME PROPUSE
Problema 1. Pe baza de date transport in comun să se evidenţieze ce tip de abonament
există pe linia 25 .
Problema 2. Pe baza de date transport in comun să se determine numărul de staţii pentru
fiecare linie.
Problema 3 Pe baza de date transport in comun să se vizualizeze care este capacitatea
mijloacelor de transport neelectrificate.
Problema 4. Pe baza de date transport in comun să se vizualizeze care este tipul de
abonament efectuat pe fiecare linie iar apoi să se vizualizeze numărul total de
abonamente efectuate pe fiecare linie.

20
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

LUCRAREA DE LABORATOR 5
Construirea şi utilizarea interogărilor complexe

Problema 1.Să se afişeze unitatea de măsură şi numărul produselor din nomenclator


pentru fiecare tip de unitate de măsură în parte (deci doar 3 linii).
Rezolvare: Pentru construirea interogării se parcurg următorii paşi:
1. Se deschide baza de date Magazin.accdb;
2. HOME – Create – Query Design. Selectăm Produse din fereastra Show Table
– Add – Close. Asfel va apărea fereastra constructorului de interogări;
3. Pentru a rezolva această problemă avem nevoie de două informaţii: una este unitatea
de măsură, iar cealaltă poate fi orice atribut – atât timp cât nu se solicită efectuarea
unei însumări sau a unei medii – spre exemplu, codul produsului. Adăugăm cele două
coloane executând dublu-clic pe numele lor, din cadrul sursei de date afişate în panoul
superior;

4. Acest tip de problemă este una pentru calculul subtotalurilor în raport cu


un anumit criteriu. Pentru introducerea informaţiilor agregate – de
exemplu să vedem câte coduri avem completate în liniile aferente unei anumite unităţi
de măsură – din cadrul filei DESIGN alegem opţiunea Totals. Aceasta are ca efect
introducerea unei noi linii în tabelul din panoul inferior, linie denumită Total,
precompletată cu Group by pentru fiecare coloană ce conţine informaţii.

1
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

5. În cadrul coloanei UM lăsăm Group by în linia 3, Total. Acest lucru înseamnă că


efectuăm o grupare după unitatea de
măsură. În accepţiunea bazelor de date
relaţionale, un grup reprezintă un
subset de tuple care conţin aceeaşi
valoare în cadrul criteriului de gupare.
Adică, inspectând puţin valorile din
tabela originală Produse, înregistrările
acesteia se împart în 3 grupuri după
unitatea de măsură: unul în care toate valorile câmpului UM sunt buc, altul în care
sunt cut şi ultimul în care sunt set. Pentru contorizarea numărul liniilor din cadrul
fiecărui grup cu valori completate – adică nu NULL – în câmpul Cod, selectăm
funcţia Count din lista derulantă din linia 3 a coloanei Cod.

6. Rulăm interogarea cu ajutorul butonului View (Datasheet View) sau Run din fila
DESIGN;

7. Observăm că denumirea coloanei a doua nu este sugestivă, motiv pentru care revenim
în modul de proiectare (Design View) şi îi atribuim un alias;

8. Rulăm din nou interogarea;

2
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

9. Se salvează interogarea.

De reţinut (pe baza vizualizării din SQL View):


1. Pentru calculul subtotalurilor pe unul sau mai multe niveluri, este necesar să se
realizeze gruparea, în timp ce pentru indicatorul calculat, se va utiliza o funcţie de agregare.
Gruparea se realizează cu clauza GROUP BY din cadrul comenzii SQL SELECT, în timp ce
agregarea se face cu una din funcţiile COUNT, SUM, AVG, MAX, MIN etc.
2. Într-o interogare ce conţine în cadrul clauzei SELECT una sau mai multe funcţii
de grup împreună cu atribute şi/sau expresii/funcţii la nivel de linie, acestea din urmă vor
trebui toate incluse în procesul de grupare (o listă de elemente separate cu virgulă în clauza
GROUP BY în cazul codului SQL, respectiv menţinerea intrării Group by în linia Total din
modul Design View).
Problema 2. Să se afişeze unitatea de măsură şi numărul produselor din
nomenclator pentru fiecare tip de unitate de măsură în parte, însă doar pentru acele unităţi
pentru care avem cel puţin 3 produse diferite.
Rezolvare: Se va rezolva în mod asemănător cu problema anterioară, însă nu se vor lua în
considerare toate unităţile de măsură, ci doar cele care satisfac o condiţie suplimentară.
Această condiţie nu este una la nivel de linie – unitatea de măsură să înceapă sau să
conţină o anumită literă, sau stocul să fie mai mare decât o anumită valoare etc. – deci nu
se poate efectua cu o condiţie de filtrare (clauza WHERE). Criteriul referă o informaţie
agregată, la nivel de grup, şi anume că suntem interesaţi doar de acele rezultate pentru
care în cadrul grupurilor avem cel puţin 3 linii.
1. Se copiază interogarea anterioară sub un alt nume, apoi se deschide în Design
View;

2. În coloana a doua, în linia Criteria se completează condiţia >=3

3
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

3. Se rulează interogarea, se afişează rezultatul şi codul SQL. Apoi se salvează


modificările.

De reţinut (pe baza vizualizării din SQL View):


Pentru specificarea unei condiţii la nivel de grup
(care implică funcţii de agregare) se va folosi clauza HAVING. Ea îşi are rostul în prezenţa
clauzei GROUP BY.

Problema 3. Care sunt mărcile pentru care avem mai multe produse în nomenclator?

4
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

Problema 4. Câte modificări de preţ s-au efectuat pe fiecare cod de produs în parte?
Rezolvare: Se va considera tabela Istoric_Pret.

Problema 5. Afişaţi numărul de parteneri din fiecare localitate.


Rezolvare: Se va considera tabela Parteneri.

Problema 6. Să se afişeze numărul, tipul şi data facturii, precum şi numele partenerului


implicat.
Rezolvare: Se vor urma paşii descrişi mai jos:
1. Analizând enunţul şi structura bazei de date, constatăm că primele 3 informaţii se
vor extrage dintr-o tabelă (Facturi), în timp ce numele partenerului se regăseşte în
cadrul tabelei Parteneri. Deci, la deschiderea proiectantului de interogări, din
fereastra Show Table alegem atât tabela Facturi, cât şi Parteneri.

5
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

2. Se observă legătura dintre atributele Cod şi Cod Fiscal ale celor două tabele.
Legătura este moştenită de la etapa de trasare a relaţiilor din cadrul bazei de date,
dar se poate oricând renunţa la ea (selectare şi ştergere). Dacă extragem în acest
moment codul SQL, acesta va fi:
SELECT FROM Parteneri INNER JOIN Facturi ON Parteneri.[Cod Fiscal] = Facturi.Cod;
Deci, se realizează o relaţie de tip INNER JOIN sau EQUI-JOIN între cele două tabele, ceea
ce înseamnă că vor fi luate în considerare doar acele înregistrări pentru care există egalitate
între cele două coduri. Mai concret, fiecare partener va apărea doar
pe facturile emise de/către el, nu şi pe celelalte. Deci, partenerului cu
codul fiscal 112211 îi vor fi asociate doar facturile la care codul este
numai şi numai 112211, adică factura cu numărul 2000 şi 3000.
Acum adăugăm informaţiile ce dorim să fie extrase din cele două
tabele. Utilizăm fie varianta cu dublu-clic, fie cu selecţie directă din
listele Table şi Field, dar exact în această ordine. În caz contrar, când
avem mai multe surse de date şi/sau multe câmpuri, ar putea fi
destul de dificil de gestionat, după cum se vede şi în imaginea din
dreapta;

3. Se rulează interogarea, se vizualizează rezultatele şi codul SQL;

6
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

4. Salvăm interogarea cu numele Facturi cu denumire partener;


5. Oare ce s-ar întâmpla dacă n-ar exista această legătură?! Revenim în Design View,
dăm clic pe legătură şi apăsăm tasta Delete;

Se observă că rezultatul contravine realităţii, generându-se 36 de înregistrări pentru un număr


de doar 6 facturi. Ceea ce avem în imaginea de mai sus reprezintă combinaţia tuturor
facturilor cu toţi partenerii, operaţie cunoscută în teorie sub numele de produs cartezian.
Cardinalitatea rezultatului reprezintă produsul cardinalităţilor surselor de date implicate (36 =
6 x 6). Vă puteţi închipui ce-ar însemna ca tabelele noastre să conţină mii de înregistrări şi să
fie implicate în produs cartezian 3, 4, 5, … surse de date.

7
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

6. Putem să refacem relaţia dintre tabele prin efectuarea unei operaţii drag&drop
între atributele implicate, sau să închidem fereastra interogării, fără a salva
ultimele modificări.
De reţinut (pe baza vizualizării din SQL View):
Atunci când intervin mai multe surse de date în panoul superior al ferestrei de
proiectare a interogărilor, toate trebuie să fie conectate între ele în peste 99% din cazuri.
Atunci când relaţia presupune stabilirea unei legături exacte pe baza egalităţii valorilor
atributelor corespondente, avem de-a face cu operaţiunea de join intern. Pentru aceasta, în
SQL se foloseşte clauza INNER JOIN.
Problema 7. Să se afişeze numărul, tipul şi data facturii, precum şi numele
partenerului implicat, precum şi numele celorlalţi parteneri, chiar dacă n-
au efectuat nicio tranzacţie.
Rezolvare: Pentru această problemă se parcurg următorii paşi:
1. Pentru optimizare, vom porni de la interogarea anterioară – Facturi cu denumire
partener – pe care o vom multiplica şi denumi Parteneri cu si fara facturi & info
facturi;

2. Având implicate două surse de date, între ele trebuie să existe o relaţie, în cazul în
care nu suntem interesaţi de obţinerea produsului cartezian. La problema
anterioară afişam informaţii doar pentru partenerii care au emis sau cărora li s-a
emis vreo factură. Dacă dorim afişarea în plus şi a partenerilor care nu au facturi,
sau/şi ipotetic vorbind facturile care nu au partener, vom apela la un altfel de
uniune, şi anume operaţiunea de join extern (OUTER JOIN). Pentru modificare
tipului implicit de uniune, se dă dublu-clic pe relaţie sau se selectează relaţia şi se
efectuează un clic-dreapta de mouse, alegându-se Join Properties din cadrul
meniului contextual.

8
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

În Access, un join extern se distinge vizual prin prezenţa unei săgeţi la capătul relaţiei.
Săgeata se va afla legată de sursa de date deficientă de informaţii, în cazul nostru tabela
Facturi. Concret, în cazul acestui exemplu, după modul de referire al tabelelor, avem o
uniune la stânga. Un join la dreapta aici n-ar aduce niciun rezultat suplimentar faţă de un join
intern, deoarece nu este încălcată integritatea referenţială, adică nu avem facturi fără să
cunoaştem emitentul sau beneficiarul.
3. Afişăm rezultatul interogării;

Observaţie: Se vede că primele 6 facturi au partener cunoscut, în timp ce ultimele două nu.
Cu toate acestea sesizăm că Electronica IMPEX SRL totuşi apare ca fiind un partener fără
vreo factură. De ce? Relaţiile dintre sursele de date s-au stabilit pe baza codului fiscal şi nu
a numelui. În cazul de faţă avem doi parteneri cu nume identic, dar doar unul dintre ei a
efectuat tranzacţii.
De reţinut (pe baza vizualizării din SQL View):
O operaţie de join extern la stânga, presupune existenţa unei legături dintre două
surse de date S şi D şi se notează S LEFT JOIN D ON … şi presupune afişarea tuturor
înregistrărilor din S, completate cu date coloanele din D doar unde este satisfăcută condiţia
de egalitate între atributele de legătură, restul fiind completate cu NULL-uri.
Problema 8.Afişati denumirea, marca şi cantitatea vândută din fiecare produs.
Rezolvare: Pentru această problemă se parcurg următorii paşi:

9
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

1. Avem nevoie de informaţii din 3 tabele, deoarece denumirea şi marca sunt în Produse,
cantitatea în Continut_Fact, iar tipul facturii îl găsim doar în Facturi. Între ele trebuie
să existe 2 relaţii;

2. Se rulează interogarea;

3. Se salvează cu denumirea Cantitati produse vandute.


Problema 9. Să se afişeze lista produselor comercializate efectiv.
Rezolvare:
1. Sunt implicate două surse de date, iar din rezultat se elimină liniile duplicate;

10
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

2. Afişarea rezultatului şi salvarea interogării ca Lista produse comercializate.

Problema 10. Să se specifice în câte tranzacţii a apărut fiecare produs din


nomenclator.
Rezolvare:

Problema 11. Să se afişeze pentru fiecare produs prețul valabil în acest moment. În
cazul în care data curentă este după 15/12/2014, se va considera o dată în intervalul
01/01/2014 şi 15/12/2014.
Rezolvare: Se va consulta istoricul schimbării preţului. Interogarea solicită două surse
de date.
1. Se adaugă Produse şi Istoric_Pret în fereastra constructorului de interogări şi se
adaugă câteva informaţii relevante cu privire la identitatea produsului. Pentru
introducerea condiţiei se va folosi constructorul de expresii, iar coloana în care se
introduce criteriul, poate fi sau nu afişată;

11
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

2. Se rulează interogarea;

3. Se salvează interogarea cu numele Lista pret la data curenta.


Problema 12. Să se afişeze detaliat produsul, marca, data, cantitatea şi valoarea vânzării,
ţinându-se cont şi de discount-ul acordat în acea vreme şi TVA.
Rezolvare: Enunţul pare destul simplu, însă rezolvarea este mai complexă, dar nu complicată.
Trebuie să ţinem cont de o serie de aspecte, precum:
 numărul destul de mare al surselor de date implicate şi relaţionarea lor,
 complexitatea de calcul a valorii, în special datorită dispersării elementelor
componente,
 condiţia pentru extragerea preţului din momentul tranzacţiei şi
 faptul că ne interesează doar vânzările.
Vom rezolva problema pe subprobleme, testând gradual rezultatul:
1. Adăugăm toate tabelele, mai puţin partenerii. Sunt necesare deoarece fie trebuie să
afişăm informaţii direct din ele, să efectuăm calcule, sau să fixăm condiţii;
2. Adăugăm apoi informaţiile pe care le găsim fără a fi nevoie să efectuăm calcule;
3. Salvăm o primă variantă a interogării ca Vanzari detaliate.

12
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

Relaţiile dintre sursele de date sunt moştenite, deci nu mai trebuie create în cadrul
interogării. Momentan avem 16 rezultate returnate. Fără existenţa relaţiilor, numărul
de înregistrări generate ar fi în momentul de faţă 4.752. Inacceptabil!

4. Introducem formula de calcul pentru valoarea tranzacţiilor unitare, ţinând cont de


TVA şi discount: PU x Cant x (1-Disc) x (1+CotaTVA). Rotunjim rezultatul la nivel
de bani;

13
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

5. Considerăm doar vânzările. Avem în acest moment 6 înregistrări.

6. Observăm însă că aceleaşi produse ar fi fost vândute în aceeaşi dată la valori diferite,
posibil la acelaşi partener. Trebuie să stabilim preţul exact al vânzării, nu toate
preţurile posibile. Aşadar, data facturii trebuie să cadă în intervalul unui istoric de preţ
al produsului comercializat. Deci, introducem şi această condiţie, asemănătoare cu cea
de la problema anterioară;

14
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

7. Rulăm interogare şi efectuăm salvarea modificărilor.

Problema 13. Să se afişeze cantităţile aprovizionate de la furnizori în luna aprilie


(începând cu data de 01/04/2014 şi până data de 30/04/2014).
Rezolvare:
1. se selectează fila Create şi se efectuează click pe butonul Query Design.
2. se afişează fereastra Show Table ce conţine o listă a tabelelor şi interogărilor care pot
reprezenta sursa de date pentru noua interogare. Se selectează tabelele
corespunzătoarea, se acţionează butonul Add. Se termină operaţia de selectare a
tabelelor prin butonul Close.
3. se selectează câmpurile care vor fi afişate în urma interogării

4. pentru câmpul Data se tastează cele două date (de început şi de sfârşit) folosind
expresia between ... And .... iar valorile sub cuprinse între „#”.
5. se salvează interogarea cu numele Cantitaticumparateaprilie.
Se obţine următorul rezultat:

15
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

Problema 14. Să se afişeze facturile de cumpărare care au cantităţi mai mari de


valoarea 7.
Rezolvare: Datele necesare interogării provin din două tabele diferite: FACTURI respectiv
CONTINUT-FACT din baza de date MAGAZIN.
1. se construieşte o nouă interogare în modul Design View.
2. prin intermediul ferestrei Show Table se vor alege doar acele tabele de care avem
nevoie (în cazul acesta FACTURI respectiv CONTINUT-FACT).

3. se selectează câmpurile care urmează a fi afişate în cadrul interogării.


4. se introduc criteriile: tip C iar cantitatea mai mare decât 7.
Suplimentar, înregistrările se vor sorta crescător după localitatea partenerilor.

5. se salvează interogarea sub numele Facturipeste7. Rezultatul interogării va fi:

Problema 15. Să se afişeze toate produsele care au fost cumpărate sau vândute de
firma.
Rezolvare: Interogarea va afişa câmpurile Denumire (tabelul PRODUSE) şi Cant (tabelul
CONTINUT-FACT).
1. se construieşte în modul Design View interogarea
2. se selectează în fereastra Show Table tabelele PRODUSE şi CONTINUT-FACT.

16
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

3. se selectează câmpurile amintite mai sus.

Interogarea se salvează sub numele ProduseVanduteCumparate iar rezultatul afișat va fi:

Problema 16. Să se determine totalul cantităţii aprovizionate din fiecare produs.


Rezolvare:
1. se construieşte în modul Design View o interogare nouă
2. se selectează în fereastra Show Table tabelele FACTURI, PRODUSE respectiv
CONTINUT-FACT.
3. se selectează câmpurile Tip, Denumire respectiv Cant.

4. pentru a obţine totalul cantităţilor se va folosi butonul Totals din fila Query Tools
Design; în rândul Total se va selecta funcţia Sum pentru câmpul Cant şi Group by
pentru câmpul Tip respectiv Denumire; acesta înseamnă că denumirile identice se
grupează, iar pentru fiecare grup astfel obţinut se însumează cantităţile.

17
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

5. Se salvează înregistrarea cu numele TotalcantitatiC. Rezultatul interogării va fi:

Problema 17. Să se găsească produsele care au stoc minim respectiv cea mai mare
cantitate de marfă aprovizionată.
Rezolvare:
a. pentru cantitatea minimă interogarea în Design View este următoarea:

Se salvează interogarea cu numele StocMin. Rezultatul interogării va fi:

18
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

b. Pentru cantitatea maximă de la fiecare partener interogarea în Design View arată


astfel:
- Modul de construire al interogării și cantitatea aprovizionată de la fiecare
partener sunt afișate în figura următoare:

- Se modifică interogarea pentru a extrage doar cantitatea maximă


aprovizionată de la fiecare partener. Rezultatele sunt afișate în figura următoare. Se
salvează interogarea cu numele CantMaxCumparata.

Problema 18. Care este partenerul care a efectuat cumpărături totale de valoarea cea
mai mare? Dar furnizorul de la care s-au realizat achizițiile totale cele mai
mari?
Rezolvare: Vom evidenţia în cadrul prezentării rezolvării, doar elementele de noutate utilizate
aici.

19
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

Cum se abordează problema furnizorului?


De reţinut (pe baza vizualizării din SQL View):
Pentru afişarea doar a primei, sau a mai multor înregistrări – exprimare absolută sau
procentuală – s-a utilizat clauza SQL TOP. Dacă n-ar fi fost implementată, atunci trebuia să
utilizăm mai multe interogări imbricate. În mod obligatoriu trebuie utilizat un criteriu de
ordonare în raport cu care se vor extrage acele înregistrări.
Problema 19. Care este produsul care a adus cele mai mari venituri?
Rezolvare: Dacă vorbim de venit, atunci nu vom lua în calcul TVA-ul.

20
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

Problema 20. Să se afle valoarea tuturor veniturilor, respectiv a cheltuielilor din


activitatea de exploatare. Cât este profitul/pierderea?
Rezolvare: Considerăm că activitatea magazinului nostru se rezumă la vânzările şi
cumpărările de produse surprinse în cadrul bazei de date. Calculăm separat venitul, respectiv
cheltuiala totală, folosind algoritmul de calcul de mai sus, apoi într-o nouă interogare facem
diferenţa indicatorilor calculaţi din fiecare. Fiind o singură înregistrare în fiecare, n vom avea
probleme datorită lipsei legăturii dintre sursele de date.

Problema 21. Să se afle valoarea tuturor vânzărilor, respectiv a achiziţiilor. Cât este
deficitul/excedentul comercial?
Rezolvare: Utilizăm acelaşi raţionament ca la problema anterioară, cu diferenţa că în formula
de calcul vom utiliza şi TVA-ul, la cota aferentă fiecărei tranzacţii.

Problema 22. Să se afle care sunt produsele necomercializate, respectiv produsele


comercializate de cel puţin două ori. Dar partenerii inactivi, respectiv cei mai activi?
Rezolvare: Pentru rezolvare se vor utiliza interogările predefinite de tip wizard.
Problema 23. Afişaţi pentru fiecare partener numărul facturilor de cumpărare.

Problema 24. Afişaţi pentru fiecare produs în parte cantitatea totală vândută.

Problema 25. Afişaţi aceeaşi informaţie pe fiecare partener în parte.

21
Universitatea Babeș-Bolyai din Cluj-Napoca
Lucrări de laborator
Facultatea de Științe Economice și Gestiunea Afacerilor Baze de date și programe
Departamentul de Informatica Economică

Problema 26. Afişaţi numărul facturii, tipul şi valoarea fiecărei facturi, ţinând cont şi
de TVA şi discount.
Problema 27. Care este cumpărătorul care a efectuat cele mai multe achiziții?
Achiziţiile pot fi: facturi diferite, linii din cadrul facturilor, dar nu cantităţi.

PROBLEME PROPUSE

Problema 1. Câte abonamente s-au emis pe fiecare linie în octombrie-noiembrie?


Problema 2. Câte linii au staţie în Piaţa Mihai Viteazul?
Problema 3. Care este suma încasată de RATUC pentru toate abonamentele de tip
„reducere 1 luna 1 linie”?
Problema 4. Care este cea mai profitabilă linie din punct de vedere al sumelor totale
încasate?
Problema 5. Care este cel mai popular tip de abonament?

22
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Lucrarea de laborator 6. Manipularea datelor în SQL

Problema 1. Să se extragă din tabelele bazei de date toate informațiile aferente unei singure
facturi, introdusă de la tastatură de către utilizator. De exemplu, se extrag toate datele care
urmează a fi listate pe factura emisă către un client (figura de mai jos reprezintă exemplul de
factură folosit pentru introducerea datelor în laboratorul 2).
Ce format vă așteptați să aibă datele estrase din baza de date?

Rezolvare: În esență, este necesară unirea tuturor datelor aflate în acest moment stocate în cele 5
tabele ale bazei de date. Pentru a ajunge la rezultatul final se poate proceda în două feluri: fie
creând o singură interogare complexă, fie creând mai multe interogări intermediare. Vom
compara cele două abordări, pentru a evalua avantajele si dezavantajele.
1. Se agregă datele din toate tabelele printr-o singură înregistrare. Se unesc datele din tabelele
Parteneri, Facturi, Conținut_Fact, Produse și Istoric_Pret. Se filtrează datele după numărul
facturii, printr-un parametru. Se salvează interogarea cu numele ListareFactura_1.

1
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Se rulează interogarea pentru numărul facturii 1000

Se rulează interogarea pentru numărul facturii 6000

2. Se adoptă abordarea pașilor mărunți, verificabili.


2.1. Se unesc datele din tabelele Parteneri, Facturi și Continut_Fact. Se salvează interogarea cu
numele ListareFactura_21.

Se rulează interogarea pentru facturile cu numărul 1000 respectiv 6000.

2
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

2.2. Se unesc datele din tabelele Produse și Istoric_Pret. Se salvează interogarea cu numele
ListareFactura_22.

Se rulează interogarea.

2.3. Se unesc datele din interogările ListareFactura_21 și ListareFactura_22. Atentie: trebuie


creata o relație între câmpurile CodProd din interogarea ListareFactura_21 și Prod din
interogarea ListareFactura_22.

3
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Se rulează interogarea pentru factura cu numărul 1000.

Se rulează interogarea pentru factura cu numărul 6000.

Sunt diferențe între rezultatele generate de ListareFactura_1 și ListareFactura_23?

Problema 2. Să se extragă informații legate de ultima tranzacție pentru fiecare produs și


stocul curent al produsului respectiv, iar datele rezultate să se stocheze permanent in baza de
date. Datele care trebuie stocate se referă la Codul produsului, Denumirea produsului și Stocul
curent după ultima factură emisă sau primită.
Observații: o interogare de tip Select Query (cum au fost toate interogările create până acum),
stochează datele în memoria RAM a calculatorului. Ca urmare, pentru a stoca permanent datele,
rezultatul interogării trebuie plasat într-un tabel care este stocat pe harddisk. Acest lucru este
posibil prin utilizarea unei interogări de acțiune de tip Make Table.

Rezolvare:
1. Se creează o integrare care extrage ultima tranzacție pentru fiecare produs. Această interogare
este una de tip Select Query. Se salvează interogarea sub numele MakeTableStoc_1.

2. Se creează o interogare care stochează în tabelul Stoc valorile stocului curent, împreună cu
data ultimei facturi cu care s-au tranzacționat produse. Pentru a crea o interogare de tip Make
Table, se urmează pașii:

4
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

2.1. Se creează, în Design View, o interogare Select Query care extrage datele necesare. În acest
caz, sursa de date este o interogare (MakeTableStoc_1) și un tabel (Produse). Se trasează relația
între câmpul CodProd al interogării MakeTableStoc_1 și câmpul Cod al tabelului Produse,
pentru a evita extragerea unui produs cartezian.

2.2. Se convertește interogarea Select Query într-una Make Table prin selectarea filei Query
Tools – Design, opțiunea Make Table. Rezultatul este apariția ferestrei din figura următoare, în
care se poate introduce sau selecta tabelul de destinație. În acest caz, deoarece tabelul Stoc nu
există, se introduce de la tastatură denumirea lui.

2.3. Se salvează interogarea sub denumirea MakeTableStoc_2. La execuția interogării se va afișa


un mesaj care avertizează că un nou tabel va fi creat și că în acesta vor fi copiate un număr de
rânduri.
Rezultatele obținute pentru această problemă vor fi cele din figura următoare: structura tabelului
nou creat Stoc în care sunt stocate datele, datele extrase, respectiv codul SQL al interogării care
în același timp creează tabelul și extrage datele care sunt stocate în acesta.

5
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Problema 3. Se modifică toate prețurile curente ale produselor din tabelul Istoric_Preț cu zece
puncte procentuale (10%). Se consideră că data curentă este 20.10.2014.

Rezolvare:
1. Se creează o interogare Select Query care va extrage toate înregistrările din tabelul
Istoric_Pret cu prețul în perioada de valabilitate (data curentă se află între data de început și data
de sfârșit a prețului).
2. Se convertește interogarea Select Query într-una Update prin selectarea filei Query Tools –
Design, opțiunea Update. Rezultatul este apariţia în cadrul zonei de output a rândului Update
To. Se introduce în linia Update To a câmpului PU expresia care calculează noua valoare (se
poate folosi Expression Builder), conform figurii următoare:

3. Se salvează interogarea sub numele UpdateIstoricPret. Se rulează interogarea. O fereastră de


dialog va avertiza asupra modificării înregistrărilor din tabel:

6
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

4. Rezultatul interogării de tip update va fi cel din fereastra de mai jos. Pentru comparaţie se
poate vedea varianta iniţială a tabelului Istoric_Preț.

Problema 4. Se introduce în baza de date o nouă factură primită de la Carti Online SA cu


numărul 6500 din data de 23.11.2014 cu care se achiziționează 100 de Carti Access 2013. Să se
actualizeze valorile stocurilor din tabelul Stoc (construit la Problema 2). La modul general,
această problemă este formulată: Să se actualizeze stocul după fiecare nouă factură introdusă.
Rezolvare:
1. Se introduc noile date în tabelele Facturi și Conținut_Fact.
2. Se creează o interogare Select Query care extrage ultima tranzacție (cea mai recenta data de
factura) pentru un cod de produs (vom folosi un parametru pentru a selecta produsul). Se
salvează interogarea cu numele UpdateStocCumparari_1.

7
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

3. Se creează o a doua interogare Select Query, care extrage cantitatea aferentă ultimei tranzacții.
Dat fiind că una din sursele de date este interogarea UpdateStocCumparari_1, pentru a evita
produsul cartezian, se vor crea 2 relații: intre CodProd și Continut_Fact.CodProd respectiv între
MaxofData și Facturi.Data. În acest fel ne asigurăm că se extrag, pe de o parte doar facturile care
au data egala cu ultima factura, iar pe de alta parte dintre facturile înregistrate cu data respectivă
doar produsul cu codul care prezintă interes (introdus ca parametru). Se convertește interogarea
într-una de tip Make Table, iar numele tabelului creat va fi Actualizare_Stoc. Se salvează
interogarea cu numele UpdateStocCumparari_2.

4. Se creează o interogare Update care adună la stocul anterior din tabelul Stoc, cantitatea de pe
această ultimă factură. Atenție, pentru a evita produsul cartezian, se creează o relație între
Stoc.Cod și Actualizare_Stoc.CodProd. Se salvează interogarea cu numele
UpdateStocCumparari_3.

8
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

5. La rulare se va afișa mesajul de avertizare „You are about to update 1 row(s)”. Rezultatele
comparative (înainte de rulare și după rulare) sunt afișate în figura următoare, diferențele fiind
subliniate:

Atenție: Ce se întâmpla dacă se rulează de mai multe ori interogările UpdateStocCumparari_2


respectiv UpdateStocCumparari_3?

Problema 5. Pentru a putea face descărcarea de gestiune (folosind metode ca FIFO sau LIFO)
e nevoie ca intrările și ieșirile să fie afișate împreună (într-o interogare sau tabel). Să se separe pe
o coloană toate cumpărările de produse, iar pe altă coloană toate vânzările de produse.
Vom rezolva această problemă astfel încât rezultatele să se stocheze într-un tabel denumit
Fișă_Magazie care va conține câmpurile: Data Factură, Număr Factură, Cod Produs, Cantitate
Cumpărată, Cantitate Vândută.

Rezolvare:
1. Se creează tabelul Fișă_Magazie care conține coloanele indicate.

2. Se construiesc două interogări de tip Select Query, care extrag toate cumpărările respectiv
toate vânzările de produse. Se salvează cu numele Fisa_Magazie_C respectiv Fisa_Magazie_V.

9
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

3. Se modifică cele două interogări din Select Query în Append Query. Modificarea se face prin
selectarea filei Query Tools – Design și a opțiunii Append. Rezultatul este apariția unei ferestre
în care trebuie introdus tabelul în care se face adăugarea înregistrărilor (în cazul acesta tabelul
Fisa_Magazie – vezi figura următoare)

4. În zona de output a înregistrării apare un nou rând în care se poate specifica în ce câmp vor fi
adăugate datele. Se vor alege câmpurile de destinație conform figurii următoare.

5. Se rulează interogările Fisa_Magazie_C și Fisa_Magazie_V construite anterior şi se constată


apariţia unor ferestre de avertizare care informează utilizatorul că datele din tabelul
Fisa_Magazie urmează să fie modificate. Se acceptă modificările. Se deschide tabelul
Fisa_Magazie pentru a vizualiza datele adăugate prin intermediul interogărilor Append.

10
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Atenție: Ce se întâmpla dacă se rulează de mai multe ori interogările UpdateStocCumparari_2


respectiv UpdateStocCumparari_3?

Problema 6. Să se ofere posibilitatea ștergerii din Fisa de Magazie a unor rânduri de pe


facturi. În particular, s-a constatat că s-a introdus în mod eronat pe factura 2000 produsul cu cod
20. Se vor șterge toate înregistrările din tabelul Fisa_Magazie care se referă la factura 200 și
produsul cu cod 20.
Rezolvare: Se va folosi o interogare de tip Delete Query, în care selectarea rândurilor care se
șterg se face cu ajutorul a doi parametri.
1. se creează o interogare Select Query care extrage date din tabelul Fisa_Magazie pe baza a doi
parametri pentru câmpurile Nr_Factura și CodProd. Se salvează sub numele DeleteFisaMagazie.
Se testează dacă selecția câmpului de șters se face corect.
2. se transformă interogarea Select Query într-o interogare Delete prin selectarea filei Query
Tools – Design, opţiunea Delete. În zona de output a înregistrării apare un nou rând Delete, în
care se selectează clauza Where. Astfel, parametrul care era criteriul de filtrare de la Select
Query devine criteriu de ștergere.

11
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

3. Se salvează interogarea și se rulează. Un mesaj de avertizare va afișa numărul de rânduri care


urmează să fie șterse. Înregistrările din tabelul Fisa_Magazie (comparativ înainte și după rularea
interogării Delete) sunt prezentate în figura următoare:

Atenție: Ce se întâmplă dacă se rulează interogarea DeleteFisaMagazie cu aceeași parametri (nr


factura 2000 și cod produs 20)?

Problema 7. Să se găsească o metodă alternativă de a ajunge la Fișa de Magazie (creată la


Problema 5), fără dezavantajele folosirii interogărilor de tip Append Query (care sunt acestea?).
Rezolvare: La datele stocate in tabelul Fisa_Magazie se paote ajunge printr-o singură interogare
de tip Union. Metoda vizuală de a crea o interogare Union. Pași:
1. Se construiesc separat interogări de tip Select Query care extrag datele necesare. În acest caz,
se construiesc cele două interogări din figura de mai jos. Se salvează cu numele
UnionFisaMagazie_C și UnionFisaMagazie_V. Se testează dacă cele două interogări produc
rezultatele așteptate.

2. Se vizualizează codul SQL al interogărilor Select Query (clic-dreapta pe interogare, opțiunea


SQL View)

12
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

3. Se creează o nouă interogare și se vizualizează în SQL View (fereastra va conține doar clauza
SELECT, care se șterge).
4. Se copiază codul SQL din prima interogare Select, se scrie de la tastatură clauza UNION,
după care se copiază codul SQL al celei de-a doua interogări. Atenție: interogările Union
funcționează doar dacă interogările Select din care sunt compuse extrag același număr de
câmpuri. Se salvează sub numele UnionFisaMagazie.

5. Se testează rezultatul, care va fi cel din figura următoare. Este cel așteptat?

6. Deoarece nu s-a realizat separarea pe coloane diferite, se modifică interogările


UnionFisaMagazie_C și UnionFisaMagazie_V conform figurii următoare. În esență, se introduce
artificial o coloană Cant_Vanduta care conține valoarea 0 în interogarea UnionFisaMagazie_C și
vice-versa. Atentie: trebuie păstrată aceeași ordine a câmpurilor ca și în figura următoare. Se
testeaza dacă cele două interogări produc rezultatele dorite.

13
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

7. Se repetă punctul 4.

8. Se salveaza și se rulează interogarea Union. Rezultatul va fi cel din figura următoare.

Atenție: Care este rezultatul unei interogări de tip Join creată pe baza interogărilor
UnionFisaMagazie_C și UnionFisaMagazie_V? Cum și de ce diferă față de interogarea Union?

Problema 8. Care este ponderea fiecărui produs în totalul veniturilor din vânzări? Se salvează
interogarea finală sub numele PondereVanzariProdus.
Rezolvare:

14
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

1. Se extrage pretul de vanzare aferent fiecărei facturi de vanzare. Se va realiza o interogare de


tip Join și filtrări (asemănătoare cu cele realizare în interogarea Cheltuiala totala). Rezultatul
interogării va fi cel din figura următoare:

2. Se grupează pe produse și se calculează valoarea fiecărei vânzări folosind formula


PretUnitar*Cantitate*(1-Discount). Rezultatul interogării va fi cel din figura următoare:

3. Se calculează totalul valorilor ca sumă a valorilor produselor din precedenta interogare.


Rezultatul interogării va fi cel din figura următoare:

4. Se unesc interogările (într-un produs cartezian!) și se calculează procentul aferent fiecărui


produs folosind formula ValoareProdus/ValoareTotala și se rotunjește. Rezultatul interogării va
fi cel din figura următoare:

Problema 9 Sa se afișeze evoluția preturilor și procentele de modificare a preturilor unui


produs de la o perioada la alta. Se salvează interogarea finală sub numele EvolutiePretProdus.

Problema 10 Sa se calculeze veniturile aduse de un produs introdus de utilizator, grupate după


preturile de vânzare (mai general formulat - Să se evalueze impactul discount-urilor pentru un

15
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

produs în veniturile aduse de produsul respectiv). Se salvează interogarea finală sub numele
VenitProdus.
Problema 11 Care este profitul adus de un vânzările unui produs într-o perioadă aleasă de
utilizator/manager (de ex. laptopuri)? Profitul se calculează ca sumă a profiturilor aduse de
fiecare vânzare (Cantitate Vândută * (Preț Vânzare – Pret Cumpărare)). Se salvează interogarea
finală sub numele ProfitProdus. Care sunt cele mai profitabile produse?
Problema 12 Care sunt regiunile (localitățile) care aduc cele mai mari vânzări. Dar cele din
care se fac cele mai mari aprovizionări?
Probleme Propuse
Problema 1. Să se extragă numărul de abonamente valabile de fiecare tip, pentru liniile de
troleibuz. Se presupune că data curentă este 15.12.2014.
Problema 2. Să se extragă capacitatea totală de transport a mijloacelor de transport aferente
fiecărei linii. Rezultatul să conțină numărul liniei și capacitatea aferentă și să fie stocat în tabelul
CapacitatiTransport.
Problema 3. Se creează o nouă stație Fabrica de bere. Să se creeze o interogare care să
introducă o stație preluată de la tastatură pe traseul liniei selectate de utilizator, având poziția
introdusă de utilizator. La rularea interogării se introduce stația Fabrica de Bere pe traseul liniei
25 pe poziția 2.
Sugestie: se vor utiliza un Append Query și două Update Query.
Soluții
Problema 1

Problema 2

16
Universitatea Babeș-Bolyai din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Problema 3

17
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Lucrarea de laborator 8. Organizarea interfeței grafice


(prin utilitarul de tip Wizard).

Problema1. Să se realizeze un formular automat pentru tabelele Continut_Fact, Facturi și


Parteneri cu scopul de a vizualiza datele și a le modifica.
Rolul creării acestor formulare este :
1. vizualizarea datelor din tabele Cont_Facturi, Facturi și Parteneri într-un format mai accesibil
utilizatorului.
2. toate acțiunile de bază dintr-o tabelă se pot efectua prin noile formulare, mai exact: adăugare,
modificare, căutare, ștergere, Inserare de date.
3. deplasarea prin înregistrările tabelei într-o manieră mai facilă decât în tabelă.
Rezolvare:
1. Din panoul de navigare, se selectează tabela Continut_Fact, prin clic stânga de mouse.

Figura 8.1. Selectare tabelă Continut_Fact

2. Se selectează fila Create a Ribbonului

Figura 8.2. Selectare comandă Form

3. Se selectează din zona Forms butonul Form (vezi fereastra de la pas2). Rezultatul acțiunii
este apariția pe ecran a formularului.

1
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 8.3. Autoforms Continut_Fact

Observație. În momentul generării formularului CONTINUT_FACT se generează în cadrul său


un subformular cu coloane care afișează datele din tabela Istoric_Pret.

4. Se închide forma efectuând click pe butonul Close din colțul dreapta-sus a lui form.

Figura 8.4. Închidere Autoforms Continut_Fact

5. Mediul Access solicită în mod automat salvarea formularului

Figura 8.5. Salvare Autoforms Continut_Fact (Pas1)

2
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

5. Ferestra de dialog destinată introducerii numelui formularului.

Figura 8.6. Denumire Autoforms Continut_Fact (Salvare Pas2)

Pentru a crea formulare pentru tabele Facturi și Parteneri se reiau pașii 1-5 prezentați mai sus.

Problema 2. Să se insereze 2 înregistrări în tabela Parteneri folosind formularul creat la


Problema1.
Rezolvare : 1. Se deschide formularul Parteneri executând în Navigation Pane dublu clic stânga
de mouse pe acesta

Figura 8.7. Formular Parteneri

2. Se selectează din bara de stare butonul


3. Se completează atât tabela Parteneri cu date cât și tabelul fiu ce apare în subformular.

3
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 8.8. Formular Parteneri

Problema 3. Să se creeze un formular wizard de tip Columnar pentru tabela Produse care să
care să permită acțiuni de adăugare, modificare, ștergere, navigare prin acesta.
Rezolvare
Pas1. Se selectează din Navigation Pane tabela Produse.
Pas2. Se selectează din Ribbon fila Create.
Pas3. Din fila Create, zona Forms, se selectează butonul Form Wizard

Figura 8.9. Fila Create/zona Forms/buton Form Wizard

Pas4. Se lansează utilitarul FormWizard care are rolul de asista pas cu pas utilizatorul în procesul
de creare a formularelor

4
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 8.10. Form Wizard

Pas5. În fereastra FormWizard se verifică dacă în zona Tables/Queries este selectată tabela pt
care se crează formularul, în cazul nostru tabela Produse
Pas6. Din zona Available Fields se selectează câmpurile(click stânga de mouse) care vor face
parte din formular, iar apoi cu click stânga pe butoanel,e din centrul ferestrei, pe care apar
săgețile la dreapta se transferă câmpurile selectate în zona Selected Fields . Câmpurile selectate
vor fi Denumire, Marca, UM, Stoc, Obs.

Figura 8.11. Selectare câmpuri

Pas7. Se execută click pe butonul Next acțiune ce va genera apariția pe ecran a ferestrei destinat
alegerii Aspectului Formular-ului.

Figura 8.12. Fereastra Aspect Formular

5
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Pas8. Se alege un format pentru Form din cele 4 existente, în cadrul acestei probleme alegem
Columnar
Pas9 Activarea butonului Next acține ce va genera apariția pe ecran a ferestrei Definire nume
Formular

Figura 8.13. Fereastra Definire nume Formular

Pas10. Se stabilește numele formularului astfel: fie se lasă numele implicit a formularului, mai
exact numele tabelei pe care s-a construit fie se editează propriul nume de formular. În cazul
nostru frxProduse.

Figura 8.14. Fereastra Definire nume Formular

Pas11. Se selectează una din opțiunile Open the form to view or enter information – pentru
execuţie; Modify the form's design – pentru eventuale modificări. Prin clic pe cercul care
apare în dreptul lor. În cazul de față alegem Open the form to view or enter information
Pas12. Activarea butonului Finish acține ce va genera apariția pe ecran a formularului în modul
de deschidere selectat la pas 11

6
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 8.15. Formular Produse

Problema4. Să se realizeze cu ajutorul formularului creat la problema3 următoarele acțiuni:


4.1. Să se navigheze printre înregistrările tabelului Produse
4.2. Să se realizeze un filtru astfel încât să se afișeze doar produsele cu UM buc.
4.3. Să se insereze o înregistrare Cod:61, Denumire:Tastatura, Marca:Samsung,Stoc:12,Obs
Tastaura Wireless
4.4. Să se modifice ultima înregistrarea adăugată astfel încât câmpul Stoc să devină 10

Rezolvare :
Cerința 4.1.Navigare prin formular impune realizarea următorilor pași:
Pas4.1.1 Se selectează din Navigation Pane formularul frxProduse, se dă dublu click stânga de
mouse pe acesta, acțiune ce va genera apariția pe ecran a formularului.
Pas4.1.2. Se selectează din taskbar-ul formularului butonul destinat direcției dorite de
parcurgere a înregistrărilor:
Pas.4.1.2.1.butoul de deplasare la stânga înregistrare cu înregistrare

Figura 8.16. Formular Produse cu butonul Previous record selectat

7
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Pas.4.1.2.2.butoul de salt pe prima înregistrare

Figura 8.17. Formular Produse cu butonul First record selectat

Pas.4.1.2.3.butoul de deplasare la dreapta înregistrare cu înregistrare

Figura 8.18. Formular Produse cu butonul Next record selectat

Pas.4.1.2.4.butoul de salt pe ultima înregistrare

Figura 8.19. Formular Produse cu butonul Last record selectat

Cerința 4.2.Să se realizeze un filtru astfel încât să se afișeze doar produsele care încep cu
UM=buc.
Rezolvare :
Pas4.2.1 Se selectează din Navigation Pane formularul frxProduse, se dă dublu click stânga de
mouse pe acesta, acțiune ce va genera apariția pe ecran a formularului.
Pas4.2.2. Se selectează din taskbar-ul formularului butonul destinat filtrării înregistrărilor:

8
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Pas4.2.2.1. Se selectează cu click sânga câmpul, UM, cu valoare după care se dorește să
se realizeze filtrarea, în cazul de față UM=buc
Pas4.2.2.2. Se selectează cu click sânga pe butonul Filter/Unfiltered existent în taskbarul
formularului acțiune ce va genera rezultatul filtrării.

Figura 8.20. Fereastra de selectare a condiției de filtrare

Observație. Rezultatul filtrării: se pot vizualiza prin navigare doar înregistrările care îndeplinesc
condiția de filtrare definită la pasul 4.2.2.1.
Pas4.2.2.3. Ștergerea condiției de filtrare impune să se efectueze un click sânga pe
butonul Filter/Unfiltered existent în taskbarul formularului acțiune ce va genera eliminarea
filtrării.
Observație. Butonul de filtrare existent în taskbar funcționează în cazul în care s-a realizat
anterior folosirii lui definirea unei filtrări cu ajutorul instrumentelor dedicate acestei acțiuni din
Ribbon, fila Home, zona Sort&Filter
Cerința4.3.Să se insereze o înregistrare Cod:61, Denumire:Tastatura,
Marca:Samsung,Stoc:12,Obs Tastaura Wireless
Pas4.3.1 Se selectează din Navigation Pane formularul frxProduse, se dă dublu click
stânga de mouse pe acesta, acțiune ce va genera apariția pe ecran a formularului.
Pas4.3.2. Se selectează din taskbar-ul formularului butonul destinat inserării
înregistrărilor:

Figura 8.21. Fereastra de selectare a acțiunii de inserare

9
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Pas4.3.3. Se selectează din taskbar-ul formularului butonul destinat inserării înregistrărilor:

Figura 8.22. Fereastra rezultat al acțiunii de inserare

Observație. Pentru a reuși inserarea ne asigurăm că în tabelul Stoc există o înregistrare cu


CodProd:61. În caz că nu există vom insera înregistrarea:
Stoc
CodProd Denumire Tip Cant Stoc
61 Tastatura D 3 3
Figura 8.23. Table Stoc

Cerința 4.4. Să se modifice înregistrare nou introdusă astfel încât Stoc:10


Pas4.4.1 Se selectează din Navigation Pane formularul frxProduse, se dă dublu click
stânga de mouse pe acesta, acțiune ce va genera apariția pe ecran a formularului.
Pas4.4.2. Se selectează câmpul Stoc se șterge vechea valoare și se introduce valoarea 10
astfel:

Figura 8.24. Form frxProduse de modificare a câmpului Stoc

Problema 5. Să se creeze un formular wizard de tip Tabular pentru tabela Stoc care să
permită acțiuni de adăugare, modificare, ștergere, navigare prin acesta. Formularul se va numi
frxStoc.

10
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Rezolvare : se reiau pașii de la problema 3 cu modificarea tabele selectate și alegerea tipului


Tabular în loc de Columnar.
Rezultatul este:

Figura 8.25. Formular frxStoc

Problema6. La formularul creat la problema 5 pentru tabela Stoc să se adauge butoane


destinate acțiunilor de inserare, modificare, ștergre înregistrări, închidere form.
Rezolvare
Pas1. Se deschide formularul Produse executând în Navigation Pane dublu click stânga de mouse
pe acesta. Rezultatul fiind:

Figura 8.26. Fereastra frxStoc

Pas2. Se selectează din Ribbon fila Home zona Views din meniul derulant se selectează
comanda Design View

11
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 8.27. Selectare Design View

Pas3. Modul de vizualizare Form Design, determină apariția în Ribbon a lui Form Design Tools
în care se alege din fila Design zona Controls Toolbox. Din zona Controls Toolbox se
selectează butonul aferent controlului Command Button cu opțiunea User Control Wizard
selectată.

Figura 8.28.Selectare Command Button

Pas4. Se desenează cu stânga de mouse apăsat butonul pe suprafața formularului, iar la eliberarea
mouse-ului apare pe ecran fereastra Command Button Wizard.

Figura 8.29.Fereastra Command Button Wizard

12
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Pas5. Din Fereastra Command Button Wizard se selectează din zona Categories opțiunea
Record Operations, acțiune ce va genera apariția pe ecran în zona Action a opțiunilor destinate
oprațiilor de gestiune a înregistrărilor: inserare, ștergere, duplicare, printare,salvare și revenire.
Pentru a adăuga un command button destinat inserării datelor se selectează din zona Action
opțiunea Add New Record. Click pe butonul Next.

Figura 8.30. Fereastra Command Button Wizard corespunzătoare

Pas6. Rezultatul pasului anterior este apariția pe ecran a ferestrei Command Button Wizard
destinată alegerii designului butonului: imagine sau text. Noi alegem Imagine prin click stânga
de mouse în cercul din dreptul lui Picture și apoi selectarea lui imaginii Go To New, acțiune ce
va genera apariția în zona Sample a modului în care va arăta butonul. Click pe butonul Next.

Figura 8.31.Selectare imagine sau text pentru buton

Pas7. Rezultatul pasului anterior este apariția pe ecran a ferestrei Command Button Wizard
destinată stabilirii unui nume controlului, în cazul de față se alege cmdAdauga. Click pe butonul
Finish.

Figura 8.32. Definire nume buton


Pas8. Rezultatul pasului anterior este apariția pe ecran a controlului command button creat
formularului.

13
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 8.33. Command Button în Formularul frxStoc

Pas9. Se selectează din Ribbon fila Home zona Views din meniul derulant se selectează
comanda Forms View

Figura 8.34. Alegere opțiune Form Views

Pas10. Rezultatul pasului anterior este apariția pe ecran a formularului frxStoc cu controlul
command button creat.Testarea efectului butonului se face efectuând click stânga pe acesta
după ce ne-am poziționat în cadrul tabelului pe locul în care dorim să adăugăm înregistrarea, cu
ajutorul butoanelor de navigare prezente în zona taskbar a formularului.

14
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 8.35. Fereastra frxStoc cu butonul cmdAdăugare creat

Pas11. Crearea butonului de modificare se face reluând pașii 2-4 și 8-10 modificare apărând la
pasul 5 în cadrul căruia se va alege în zona Action opțiunea Save Record iar la pasul 6 se va
alege să apară Text pe buton prin click stânga de mouse în dreptul opțiunii Text și editarea
numelui Modificare în loc de Save Record. La Pasul 7 în loc de cmdAdaugare se scrie
cmdModificare.

Figura 8.36. Selectare aspect al controlului command button

Pas12. Rezultatul pasului 10 este apariția pe ecran a formularului frxStoc cu controlul command
button creat la pasul 11. Testarea efectului butonului se face efectuând click stânga de mouse pe
înregistrarea pe care dorim să o modificăm, facem modificarea dorită și apoi click stânga de
mouse pe butonul Modificare creat.

15
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 8.37. Fereastra frxStoc cu butonul cmdModificare creat

Pas13. Crearea butonului de ștergere se face reluând pașii 2-4 și 8-10 modificare apărând la pasul
5 în cadrul căruia se va alege în zona Action opțiunea Delete Record iar la pasul 6 se va alege să
apară Text pe buton prin click stânga de mouse în dreptul opțiunii Text și editarea numelui
Sterge în loc de Save Record. La Pasul 7 în loc de cmdAdaugare se scrie cmdStergere.

Figura 8.38. Selectare aspect al controlului command button

Pas14. Rezultatul pasului 10 este apariția pe ecran a formularului frxStoc cu controlul command
button creat la pasul 11. Testarea efectului butonului se selectând înregistrarea pe care dorim să
o ștergem și apoi click stânga de mouse pe butonul Stergere creat.

16
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 8.39. Fereastra frxStoc cu butonul cmdStergere creat

Pas15. Se efectuează click pe butonul Yes din fereastra de sistem apărută pe ecran ca rezultat al
pasului 14 acțiune ce va genera ștergerea înregistrării marcate la pasul 14.
Pas16. Crearea butonului de închidere form presupune repetarea pașilor 1-4, ai prezentei
probleme.
Pas17. Din Fereastra Command Button Wizard se selectează din zona Categories opțiunea
Form Operations, acțiune ce va genera apariția pe ecran în zona Action a opțiunilor destinate
oprațiilor de gestiune a formularelor: aplicare filtre, închidere formular, deschidere formular,
printare formular, reâmprospătare date de pe formular. Pentru a adăuga un command button
destinat închiderii unui formular se selectează din zona Action opțiunea Close Form. Click pe
butonul Next.

Figura 8.40. Fereastra Command Button Wizard

17
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Pas18: Rezultatul pasului anterior este apariția pe ecran a ferestrei Command Button Wizard
destinată alegerii designului butonului: imagine sau text. Noi alegem Imagine prin click stânga
de mouse în cercul din dreptul lui Picture și apoi selectarea lui imaginii Stop, acțiune ce va
genera apariția în zona Sample a modului în care va arăta butonul. Click pe butonul Next.

Figura 8.41.Selectare imagine sau text pentru buton

Pas19. Rezultatul pasului anterior este apariția pe ecran a ferestrei Command Button Wizard
destinată stabilirii unui nume controlului, în cazul de față se alege cmdClose. Click pe butonul
Finish.

Figura 8.42. Definire nume buton

Pas20. Rezultatul pasului anterior este apariția pe ecran a controlului command button creat
formularului.

Figura 8.43. Command Button Close în Formularul frxStoc

18
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Pas21. Se selectează din Ribbon fila Home zona Views din meniul derulant se selectează
comanda Forms View

Figura 8.44. Alegere opțiune Form Views

Pas22. Rezultatul pasului anterior este apariția pe ecran a formularului frxStoc cu controlul
command button creat.Testarea efectului butonului se face efectuând click stânga pe acesta
efectul fiind de închidere formular cu posibilitate de salvare a modificărilor realizat.

Figura.Fereastra 8.45. frxStoc cu efectul butonului Close

Problema7. La formularul creat la Problema 6 pentru tabela Stoc să se adauge un buton care
să permită deschiderea formularului frxProduse, iar în formularul frxProduse un buton de
închidere.
Rezolvare:
Pas1. Se selectează din Navigation Pane formularul frxProduse, se dă dublu click stânga de
mouse pe acesta, acțiune ce va genera apariția pe ecran a formularului.

19
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 8.46. Fereastra frxProduse

Pas2. Se selectează din Ribbon fila Home zona Views din meniul derulant se selectează
comanda Design View

Figura 8.47. Selectare Design View

Pas3. Modul de vizualizare Form Design, determină apariția în Ribbon a lui Form Design
Tools în care se alege din fila Design zona Controls Toolbox. Din zona Controls Toolbox se
selectează butonul aferent controlului Command Button cu opțiunea User Control Wizard
selectată.

Figura 8.48. Selectare command button

20
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Pas4. Din Fereastra Command Button Wizard se selectează din zona Categories opțiunea
Form Operations, acțiune ce va genera apariția pe ecran în zona Action a opțiunilor destinate
oprațiilor de gestiune a formularelor: aplicare filtre, închidere formular, deschidere formular,
printare formular, reâmprospătare date de pe formular. Pentru a adăuga un command button
destinat închiderii unui formular se selectează din zona Action opțiunea Close Form. Click pe
butonul Next.

Figura 8.49. Fereastra Command Button Wizard

Pas5: Rezultatul pasului anterior este apariția pe ecran a ferestrei Command Button Wizard
destinată alegerii designului butonului: imagine sau text. Noi alegem Imagine prin click stânga
de mouse în cercul din dreptul lui Picture și apoi selectarea lui imaginii Stop, acțiune ce va
genera apariția în zona Sample a modului în care va arăta butonul. Click pe butonul Next.

Figura 8.50.Selectare imagine sau text pentru buton

Pas6. Rezultatul pasului anterior este apariția pe ecran a ferestrei Command Button Wizard
destinată stabilirii unui nume controlului, în cazul de față se alege cmdClose. Click pe butonul
Finish.

21
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 8.51. Definire nume buton

Pas7. Rezultatul pasului anterior este apariția pe ecran a controlului command button creat
formularului.

Figura 8.52.Formular frxProduse cu butonul Close

Pas8. Se selectează din Ribbon fila Home zona Views din meniul derulant se selectează
comanda Forms View

Figura 8.53. Alegere opțiune Form Views

22
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Pas9. Rezultatul pasului anterior este apariția pe ecran a formularului frxProduse cu controlul
command button creat.Testarea efectului butonului se face efectuând click stânga pe acesta.
Efectul fiind de închidere a formularului cu posibilitate de salvare a modificărilor realizat .

Figura 8.54.Fereastra frxProduse cu butonul Close

Pas10. Crearea butonului de legătură în cadrul formului frxStoc presupune repetarea pașilor 1-3,
din cadrul prezentei probleme, dar asupra formularului frxStoc.
Pas11. Din Fereastra Command Button Wizard se selectează din zona Categories opțiunea
Form Operations, acțiune ce va genera apariția pe ecran în zona Action a opțiunilor destinate
oprațiilor de gestiune a formularelor: aplicare filtre, închidere formular, deschidere formular,
printare formular, reâmprospătare date de pe formular. Pentru a adăuga un command button
destinat deschiderii unui formular se selectează din zona Action opțiunea Open Form. Click pe
butonul Next.

Figura 8.55. Fereastra Command Button Wizard

23
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Pas12: Rezultatul pasului anterior este apariția pe ecran a ferestrei Command Button Wizard
destinată alegerii formularului care se dorește a se deschide la click pe butonul care se crează. În
cazul problemei curente se selectează frxProduse. În zona Sample a modului în care va arăta
butonul. Click pe butonul Next.

Figura 8.56. Alegere Formularul frxProduse

Pas13. Rezultatul pasului anterior este apariția pe ecran a ferestrei Command Button Wizard
destinată alegerii modalității de deschidere a formularului care se dorește a fi deschis. În cadrul
curentului exemplu se efectuează click stânga de mouse în cercul din dreptul opțiunii:Open the
form and show all the records. Click pe butonul Next

Figura 8.57. Alegere modalitate de deschidere a formularul frxProduse

Pas14. Rezultatul pasului anterior este apariția pe ecran a ferestrei Command Button Wizard
destinată alegerii designului butonului: imagine sau text. Noi alegem Imagine prin click stânga
de mouse în cercul din dreptul lui Picture și apoi selectarea lui imaginii Ms Access Form,
acțiune ce va genera apariția în zona Sample a modului în care va arăta butonul. Click pe
butonul Next.

Figura 8.58. Alegerea designului butonului de Open Form

24
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Pas15.Rezultatul pasului anterior este apariția pe ecran a ferestrei Command Button Wizard
destinată stabilirii unui nume controlului, în cazul de față se alege cmdOpen. Click pe butonul
Finish.

Figura 8.59. Stabilirea numelui controlului

Pas16. Rezultatul pasului anterior este apariția pe ecran a controlului command button creat
formularului.

Figura 8.60. Formular frxProduse cu butonul Open

Pas17. Se selectează din Ribbon fila Home zona Views din meniul derulant se selectează
comanda Forms View

Figura 8.61. Alegere opțiune Form Views

Pas18. Rezultatul pasului anterior este apariția pe ecran a formularului frxStoc cu controlul
command button creat.Testarea efectului butonului se face efectuând click stânga pe acesta
efectul fiind de deschidere formular frxProduse din cadrul formularului frxStoc.

25
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 8.62. Fereastra frxStoc cu butonul Open

Problema 8. Să se creeze un formular care afişează cantitatea maximă comandată de


parteneri.
Rezolvare: Pas1. Se selectează din Navigation Pane interogarea Cantitate maximă parteneri,
se dă dublu click stânga de mouse pe acesta, acțiune ce va genera apariția pe ecran a rezultatului
interogării.

Figura 8.63. Rezultat Interogare Cantitate maximă parteneri

Pas2. Se selectează din Ribbon fila Create.


Pas3. Din fila Create, zona Forms, se selectează butonul Form Wizard

26
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 8.64. Fila Create/zona Forms/buton Form Wizard

Pas4. Se lansează utilitarul FormWizard care are rolul de a asista pas cu pas utilizatorul în
procesul de creare a formularelor.

Figura 8.65. Fereastra Form Wizard

Pas5. Din fereastra deschisă la lansarea utilitarului Form Wizard se verifică dacă în zona Tables-
Queries este selectată interogarea Cantitate maximă parteneri. În zona Available Fields se
selecteză câmpurile pe baza cărora se vor crea formularul (în cazul de faţă toate) se face click
stânga de mouse pe butoanele cu săgeată spre stânga aflate în mijlocul ferestrei, rezultatul fiind
popularea zonei Selected Fields cu câmpurile care vor fi afişate în formular. Click pe butonul
Next.

Figura 8.66. Fereastra Form Wizard zona Selected Fields populată

27
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Pas6. Rezultatul acţiunilor de la pasul 5 este apariţia pe ecran a ferestrei utilitarului Form
Wizard din care se selectează modul în care va arăta formularul. În cadrul acestui exemplu
alegem opţiunea Form with Subform. Click pe butonul Next.

Figura 8.67. Fereastra Form Wizard stil afişare formular


Pas7. Rezultatul acţiunilor de la pasul 5 este apariţia pe ecran a ferestrei utilitarului Form
Wizard din care se selectează modul în care va arăta subformularul. În cazul prezentului
exemplu, alegem Datasheet. Click pe butonul Next.

Figura 8.68. Fereastra Form Wizard stil afişare formular


Pas8. La acest pas se completează numele formularului, în cazul de faţă, frxParteneri1, apoi a
subformularului în cazul de faţă CONTINUT_FACT Subform şi modul în care se va deschide
formularul creat până în acest pas. în cazul de faţă am selectat Open the form to view or enter
information.

Figura 8.69. Fereastra Form Wizard alegere nume formular /subformular

28
Universitatea ”Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Pas9. Afişare formular dorit.

Figura 8.70. Formular frxParteneri1

Observație. Gestiunea datelor din interogare se face cu butonele aflate in taskbar-ul formularului.

Probleme propuse
Problema 1. Să se realizeze un formular automat pentru tabelele Tipuri Abonamente şi
Abonamente cu scopul de a vizualiza datele și a le modifica.
Problema 2. Să se insereze 2 înregistrări în tabela Abonamente folosind formularul creat la
problema1.
Problema 3. Să se creeze un formular wizard de tip Columnar pentru tabela Linii care să
permită acțiuni de adăugare, modificare, ștergere, navigare prin acesta.
Problema4. Să se realizeze cu ajutorul formularului creat la problema3 următoarele acțiuni:
4.1. să se navigheze printre înregistrările tabelului numerele de linie destinate autobuselor
4.2.Să se realizeze un filtru astfel încât să se afișeze doar abonamentele de pe linia 25.
4.3. Să se insereze o înregistrare in tabela Linii Numar linie: 161, Tip linie:autobus, electrificare:
nu
4.4. Să se modifice ultima înregistrarea adăugată astfel încât câmpul tip linie să devină troleibus.
Problema5. Să se creeze un formular wizard de tip Tabular pentru tabela Staţii care să permită
acțiuni de adăugare, modificare, ștergere, navigare prin acesta. Formularul se va numi frxStatii.
Problema6. La formularul creat la problema 4 pentru tabela Linii să se adauge butoane
destinate acțiunilor de inserare, modificare, ștergere înregistrări, închidere formă.

29
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Lucrarea de laborator 9. Proiectarea formularelor Access

Problema 1. Să se creeze un formular frxFacturare, afişându-se toate câmpurile din tabelele


tabele Facturi, Parteneri, Continut_Facturi, Produse, Istoric_Pret care sunt: Denumire Partener,
Nr Factura, Denumire Produs,Cantitate, Pret Unitar,Cota TVA, Discount. Formularul să conţină
câmpuri calculate pentru valoare per factură si TVA. Să se adauge un buton de comandă în Form
Footer pentru a închide forma

Rezolvare

Pas1. Se selectează din ribbon fila Create, zona Forms, opţiunea Forms Design acţiune ce
generează apariţia formularului Form1.

Figura 9.1 Formular Form1

Pas2. Se selectează din zona FormDesignTools, din fila Design, zona Themes, din Themes
opţiunea Slice, rezultatul este că form va prelua formatările definite în cadrul acestei Theme.

Pas3. Se selectează din zona FormDesignTools, din fila Design, zona Header&Footer opţiunea
Title, acţiunea va genera apariţia pe ecran a unui TextBox în cadrul zonei Header a lui form, în
care se va introduce titlul formului.

Figura 9.2. Formular Form

Pas4. Se selectează din fila zona FormDesignTools, din fila Design, zona Tools, opţiunea Add
Existing Fields acţiune ce va genera apariţia pe ecran a Task Paneului din partea stângă cu

1
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

numele Field List. Din Field List se selectează tabelul apoi câmpul şi se glisează pe formular cu
stânga de mouse apăsat.

Figura 9.3. Fereastra Form cu Field List activă

Pas5. Câmpul calculate Valoare se adaugă pe formular astfel:

Pas5.1. se selectează din Ribbon, zona Form DesignTools fila Design, zona Controls şi
obiectul TextBox.

Pas5.2. Se glisează mouseul pe ecran cu click stânga apăsat.

2
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 9.4. Text Box in Form-ul creat

Pas5.3. Labelul se completează cu textul Valoare, iar în Property Sheet se alege tabul
Other şi la opţiunea Name se introduce lblValoare.

Figura 9.5. TextBox Lable Cantitate, Property Sheet

Pas5.3. Se selectează TextBox-ul aferent labelul-ului Valoare, cu click stânga de mouse


pe accesta. În Task Pane Property Sheet, se selectează Fila Data, în câmpul Control Source se
execută click stânga de mouse pe butonul cu trei puncte acţiune ce generează apariţia pe ecran a
ferestrei Expression Builder. Din zona Expresion Categories se selecteză textbox-urile Cant şi

3
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

PU cu dublu click pe aceste. Între ele se introduce semnul “*” şi egal de la tastatură. Click pe
butonul ok are ca efect părăsirea ferestrei Expresion Builder

Figura 9.6. Fereastra Expresion Builder

Pas6. Se selectează din Ribbon fila Home zona Views din meniul derulant se selectează
comanda Form View.

Figura 9.7. Meniu Views

Pas7. Rezultatul pasului 6 este apariţia pe ecran a formularului care reuneşte câmpurile din tabele
tabele Facturi, Parteneri, Continut_Facturi,Produse, Istoric_Pret şi câmpul cantitate care se
calculează cu formula Preţ*catitate. Deplasarea prin înregistrările tabelelor se face cu butoanele
de navigare din taskbar-ul formularului

4
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 9.8. Formular Form frxCalculate

Pas8. Pentru creacrea câmpului calculate TVA se reiau paşii 5-7 doar că în loc de lblValoare
avem lblTVAc respectiv în loc de txtValoare avem txtTvac. Opţiunea Control Source a lui
txtTVAc va fi completată cu formula completată din Expresion Builder:

Figura 9.9. Expresion Builder pentru TVA

5
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Pas9. Se selectează din Ribbon fila Home zona Views din meniul derulant se selectează
comanda Form View

Figura 9.10 Meniu Views

Pas10. Rezultatul pasului 9 este apariţia pe ecran a formularului care reuneşte câmpurile din
tabele Facturi, Parteneri, Continut_Facturi,Produse, Istoric_Pret şi câmpul cantitate care se
calcurlează cu formula Valoare*CotaTva. Deplasarea prin înregistrările tabelelor se face cu
butoanele de navigare din taskbar-ul formularului.

Figura 9.11. Fereastra Form frxCalculate cu Tva calculat

Pas11. Crearea unui buton de închidere se face alegând din se selectează din Ribbon, zona Form
DesignTools fila Design, zona Controls şi controlul CommandButton. Cu click stânga de mouse
se desenează butonul în zona Footer a formularului.

6
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 9.12. Fereastra Command Button Wizard

Pas12. Rezultatul pasului 11 este apariţia ferestrei Command Button Wizard din care în zona
Categories se selectează Form Operation iar în zona Action se selectează Close Form. Click pe
butonul Next.

Figura 9.13. Fereastra Command Button Wizard

Pas13: Rezultatul pasului anterior este apariția pe ecran a ferestrei Command Button Wizard
destinată alegerii designului butonului: imagine sau text. Noi alegem Imagine prin click stânga
de mouse în cercul din dreptul lui Picture și apoi selectarea imaginii Stop, acțiune ce va genera
apariția în zona Sample a modului în care va arăta butonul. Click pe butonul Next.

7
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 9.14.Selectare imagine sau text pentru buton

Pas14. Rezultatul pasului anterior este apariția pe ecran a ferestrei Command Button Wizard
destinată stabilirii unui nume controlului, în cazul de față se alege cmdClose. Click pe butonul
Finish.

Figura 9.15. Definire nume buton

Pas15. Rezultatul pasului anterior este apariția pe ecran a controlului command button creat
formularului.

Figura 9.16.Formular frxCalcule cu butonul Close

Pas16. Se selectează din Ribbon fila Home zona Views din meniul derulant se selectează
comanda Forms View

8
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 9.17. Alegere opțiune Form Views

Pas18. Testarea efectului butonului presupune efectuarea unui click stânga pe acesta efectul fiind
de închidere a formular frxCalcule.

Figura 9.18.Fereastra FrxCalcule cu butonul Close

Metoda 2 Obs. în loc de opţiunea List Fields care permite alegerea câmpurilor din mai multe
tabele şi unirea lor pe suprafaţa unui formular se poate utiliza o altă metodă şi anume de creare a
unei interogări care să cuprindă câmpurile care vor intra în formular. Paşii sunt:

Pas1. Se crează o interogare selectând din fila Create Queries alegând opţiunea Query Design,
cu numele problema9.

Figura 9.19. InterogareProblema9

Pas2.Se creează formularul cu numele frxCalcule.

Pas3. Se crează formularul ca la problema 8.

9
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Pas4. Se efectueză paşii 5,10 pt câmpurile calculate Valoare şi TVA.

Problema 2. Să se creeze un formular frxDateViz. În cadrul formularului să existe un control


combobox care să conţină valorile câmpurilor Fact şi CodProd din tabela Continut_Fact şi un
control de tip subFrom în să se afişeze conţinutul câmpurilor Fact, CodProdus, din tabela
Conţinut_facturi, Denumire din Produse, Data din Facturi, Parteneri_Denumire, Adresa,
Localitate, Telefon din Parteneri. La alegerea unui număr de factură din combobox să se afişeze
în subform informaţia despre denumirea produselor şi datele de contact a partenerilor care le-au
achiziţiona.

Rezolvare

Pas1. Se selectează din ribbon fila Create, zona Forms, opţiunea Forms Design acţiune ce
generează apariţia formularului Form1.

Figura 9.20.Formular Form1

Pas2. Se selectează din zona FormDesignTools, din fila Design, zona Themes, din Themes
opţiunea Slice, rezultatul este că form va prelua formatările definite în cadrul acestei Theme.

Pas3. Se selectează din zona FormDesignTools, din fila Design, zona Controls, controlul
Combo Box, se glisează mouse-ul pe suprafaţa formularului în zona Detail, reultatul este a
apariţia pe ecran a ferestrei ComboBox Wizard. În cadrul ferestrei se alege prima opţiune
(preluare date dintr-un table) şi se efectuează click pe butonul Next

Figura 9.21. Ferestrei ComboBox Wizard-pas1

10
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Pas4. Se selectează tabelul Continut_Fact. Click pe butonul Next

Figura 9.22. Ferestrei ComboBox Wizard-pas2

Pas5. Se selectează câmpurile care vor umple combobox-ul, mai exact Fact şi CodProd. Click
pe butonul Next.

Figura 9.23. Ferestrei ComboBox Wizard-pas3

Pas6.Se selectează câmpul după care se face ordonarea datelor din combobox. Click pe butonul
Next.

Figura 9.24. Ferestrei ComboBox Wizard-pas4

Pas7. Se afişează conţinutul coloaneleor care vor popula combobox-ul. Click pe butonul Next.

11
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 9.25. Ferestrei ComboBox Wizard-pas5

Pas8. Se alege un câmp pe baza căruia se identifică în mod unic datele în tabela, în cazul de faţă
se alege Fact. Click pe butonul Next.

Figura 9.26. Ferestrei ComboBox Wizard-pas6

Pas9. Se stabileşte textul care va apărea pe eticheta (controlul lable de pe formular- Numar
Factura), din dreptul combobox-ului. Click pe Finish.

Figura 9.27. Ferestrei ComboBox Wizard-pas6

Pas10. Rezultatul pasului 9 este apariţia pe ecran a combobox-ului generat. În fila Other din
TaskPane-ul Property Sheet, se schimbă valoarea câmpului Name în cmbFact.

12
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 9.28. Combo Box

Pas11. Se selectează din zona FormDesignTools, din fila Design, zona Controls, controlul
SubForm/SubReport, se glisează mouse-ul pe suprafaţa formularului în zona Detail, reultatul
este a apariţia pe ecran a ferestrei SubForm Wizard. În cadrul ferestrei se alege prima opţiune
(preluare date din tabele) şi se efectuează click pe butonul Next

Figura 9.29. Ferestrei SubForm Wizard-pas1

Pas12. Se selectează din lista derulantă din zona Tables/Queries, pe rând tabele din care se vor
alege câmpurile. Tabela Continut_Facturi se aleg câmpurile Fact, CodProd,Cant; Produse se
alege Cod, Denumire, din Parteneri se aleg Cod, Denumire, Adresa,Localitate, Telefon. Click pe
butonul Next.

13
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 9.30. Ferestrei SubForm Wizard-pas2

Pas13.Se stabilşte numele subform-ului: Datesubform, Click pe butonul Finish.

Figura 9.31. Ferestrei SubForm Wizard-pas3

Pas14. Rezultatul pasului 13 este apariţia în cadrul formularului a controlului subForm creat. În
fila Data din TaskPane-ul Property Sheet, se schimbă valoarea câmpului Link Master Fields
introducând de la tastaură numele combobox-ului, cmbFact, Link Child Fields introducând de
la tastaură numele câmpului Fact.

Figura 9.32. Form Design

Pas15. Se selectează din Ribbon fila Home zona Views din meniul derulant se selectează
comanda Forms View

14
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 9.33. Alegere opțiune Form Views

Pas16. Testarea efectului combobox-ului se face alegând număr de factură din el acţiune care va
avea ca efect afişare în subform a datelor corespunzătoare numărului de factură selectat.

Figura 9.34. Form View frxDateViz

Problema 3. Să se genereze un formular de tip splitform pentru tabela Parteneri.

Obs. splitform permite vizualizarea datelor în două moduri diferite în cadrul aceluiaşi form, mai
exact: Form view şi Datasheet view

Rezolvare

Pas1. Se selectează din Navigation Pane tabelul Parteneri, se selectează din fila Create, zona
Forms, opţiunea More Forms din lista derulată care apare pe ecran se selectează opţiunea Split
Forms.

15
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 9.35. More Forms\Split Forms

Pas2.Vizualizare rezultat pas1, mai exact s-a generat un formular pentru tabela Parteneri, care
afişează datele din tabelă în 2 moduri în partea superioară ca Form view iar în partea inferioară
ca Datasheet view . Cu ajutorul formularului se pot face adăugari, modificări, ştergeri, navigări
asupra tabelei Personal.

Figura 9.36.Formular Parteneri de tip Split Forms

Problema 4. Să se genereze un formular de tip multiple items pentru tabela Parteneri.

Obs. Multiple items cunoscut şi sub denumirea de formă continuă, permite să se afişeze mai
multe înregistrări la un moment dat. Datele sunt aranjate în formă de rânduri și coloane (similare
cu o foaie de date).

Rezolvare

16
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Pas1. Se selectează din Navigation Pane tabelul Parteneri, se selectează din fila Create, zona
Forms, opţiunea More Forms din lista derulată care apare pe ecran se selectează opţiunea
Multiple Items.

Figura 9.37. More Forms\Multiple Items

Pas2.Vizualizare rezultat pas1, mai exact s-a generat un formular pentru tabela Parteneri, care
afişează datele din tabelă în formă de rânduri și coloane (similare cu o foaie de date).

Figura 9.39. Formă de tip Multiple Items Parteneri 2

17
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Problema 5. Să se creeze un formular de tip Navigation Form care să permit să accesăm


formularele: frxStoc, frxProduse, frxDataViz

Rezolvare

Pas1. Se selectează din Navigation Pane tabelul Parteneri, se selectează din fila Create, zona
Forms, opţiunea Navigation din lista derulată care apare pe ecran se selectează opţiunea
Vertical Tabs, Left.

Figura 9.39. Navigation\Vertical Tabs, Left

Pas2.Vizualizare rezultat pas1, formular Design ataşat opţiunii Vertical Tabs, Left .

18
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 9.40. Form Design- Navigation\Vertical Tabs, Left

Pas3. Din Navigation Pane se selectează, prin click stânga de mouse formularul frxStoc. Se
glisează mouse-ul cu click stânga active, pe suprafaţa formularului deasupra textului AddNew.

Figura 9.41.Formular frxStoc

Pas4. Se repetă pas 3 pentru formularul frxProduse.

19
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 9.42.Formular frxProduse

Pas5. Se repetă pas 3 pentru formularul frxDataViz.

Figura 9.43.Formular frxDateViz

Pas6 . Se selectează din Ribbon fila Home zona Views din meniul derulant se selectează
comanda Forms View

Figura 9.44. Alegere opțiune Form Views

Pas7. Testarea problemei se face selectând pe rând cu click stânga de mouse numele
formularului pe care dorim să îl vizualizăm.

20
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 9.45. Formular de tip Navigation

Problema 6. Să se creeze un formular de tip Switchboard denumit Switchboard cu 4 butoane


de comandă: frxCalcule-deschide forma frxCalcule, Stoc- deschide forma frxStoc, DateViz-
deschide forma frxDateViz şi Ieșire Aplicaţie- închiderea baza de date Magazin.

Rezolvare

Pas1. Se selectează din meniul File\opţiunea Option\ Quick Access Toolbar\Command Not in
Ribbon Switchboard Manager.

Figura 9.46.Fereastra Customize Quick Access Toolbar

21
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Pas2. Click pe butonul Add efectul fiind transferul opţiunii Switchboard Manager, din zona
Comand Not in Ribbon în zona Customize Quick Access Toolbar

Figura 9.47. Fereastra Customize Quick Access Toolbar

Pas3. Se selectează butonul cu click stânga de mouse Switchboard Manager din zona Quick
Access Toolbar

Figura 9.48. Butonul Switchboard Manager

Pas4. Rezultatul pasului 3 este apariţia ferestrei de dialog prin care se întreabă dacă se doreşte
crearea unui Switchboard Manager click pe butonul YES

Figura 9.49. Fereastră de dialog Switchboard Manager

22
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Pas5. Rezultatul pasului 4 este apariţia pe ecran a ferestrei Switchboard Manager din care se
selectează butonul Edit. acţiune ce va genera apariţia ferestrei Edit Switchboard Page din care
se execută click pe butonul New acţine ce va genera apariţia ferestrei Edit Switchboard Item. În
fereastra Edit Switchboard Item se completează câmpul Text cu Calcule, în Command se
selectează Open Form in Add Mode iar din lista derulanta Forms se selectează opţiunea
frxCalcule.

Figura 9.50. Setare formă Calcule să apară în Main Switchboard

Pas6. Se reia pasul 5 pentru toate formele care se doresc a fi introduse în Switchboard, în
exemplu nostru mai adăugom frxStoc şi frxDateViz.

Pas7. În Main Switchboard mai adăugăm o comandă de părăsire a lui Access astfel:

Rezultatul pasului 4 este apariţia pe ecran a ferestrei Switchboard Manager din care se
selectează butonul Edit acţiune ce va genera apariţia ferestrei Edit Switchboard Page din care
se execută click pe butonul New acţine ce va genera apariţia ferestrei Edit Switchboard Item. În
fereastra Edit Switchboard Item, în Command se selectează Exit Application iar câmpul Text
se completează cu textul Iesire Aplicaţie.

23
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 9.51. Setare comandă părăsire access în Main Switchboard

Pas8. Se părăsesc ferestrele Switchboard Manager, Edit Switchboard Page pe butonul Close

Pas9. Din Navigation Pane se selectează formularul Switchboard cu dublu click stânga de
mouse pe el.

Figura 9.52. Formularul Switchboard

Obs. Formularul Switchboard se poate selecta ca fiind formularul cu care se lansează baza de
date Magazin astfel:

24
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Pas1 Din meniul File\Option se lansează ferestra Option în care se selectează Current Database
acţiune ce generează apariţia în partea dreaptă a ferestrei Options for the Current Database, în
care se selectează Display Form: Switchboard. Click pe butonul ok

Figura 9.53. Fereastra Options for the Current Database

Rezultatul pas1 determină apariţia pe ecran a ferestrei de dialog:

Figura 9.54.Fereastra de dialog

Prin care se sugerează să se închidă cu close baza de date Magazin şi se redeschidă. La


redeschiderea bazei de date Magazin va apărea direct Switchboard

Figura 9.55. Form Switchboard la deschiderea bazei de date Magazin

Dezactivarea ca fereastră implicită a lui Switchboard pentru baza de date magazin se fac
următoarele acţiuni.

Pas1. File,Option, Options for the Current Database, în care se selectează Display none

25
Universitatea “Babeș-Bolyai” din Cluj-Napoca
Facultatea de Științe Economice și Gestiunea Afacerilor Lucrări de laborator
Departamentul de Informatica Economică Baze de date și programe

Figura 9.56. Fereastra Options for the Current Database

Pas2. Se închide baza de date Magazin şi se redeschide.

Probleme Propuse
Problema 1.Să se creeze un formular pentru Abonamente şi un subformular pentru
Abonamente pe linii

Problema 2. Să se creeze un formular de tip navigare prin interogările bazei de date Transport
in comun.

Problema 3. Să se creeze un formular de meniu care să conţină 4 butoane de comandă ce


deschid patru obiecte la alegere. Obligatoriu un buton va fi pentru închiderea formei.

Problema 4. Să se creeze un formular cu sub-formular pentru Staţii şi Staţii pe linii folosind


Form Wizard.

Problema 5.Să se genereze un formular de tip splitform pentru tabela Abonamente.

26
Lucrarea de laborator 11. Construirea rapoartelor

Problema 1. Să se creeze un raport cu toti partenerii grupati pe localitati şi ordonati


alfabetic in cadrul grupului;

Rezolvare: Se lucrează direct pe tabela Parteneri;


1. Se selectează fila Create;
2. Se selectează în zona Reports, butonul Report Wizzard
3. Se selectează campurile;

4. Se grupează dupa câmpul Localităţi;

5. Se ordonează alfabetic după Denumire;


6. Se setează restul optiunilor: Layout Outline, Landscape
7. Se alege denumirea Raport_Parteneri;
8. Se efectuează clic pe Finish.

Problema 2. Să se creeze un raport cu toate facturile grupate in functie de tip (de


vânzare respectiv de cumparare) si ordonate descrescator dupa dată in cadrul fiecarui
grup (bazat pe interogarea Facturi cu denumire partener din Lucrarea5, Problema 6).
Raportul se va numi Facturi grupate după tip.
Rezolvare: Se respectă paşii prezentati în figurile următoare.
Problema 3. Să se creeze un raport cu toate facturile grupate in functie de partener
si apoi in functie de tip (de vanzare respectiv de cumparare) si ordonate crescator dupa
data in cadrul fiecarui grup (bazată pe interogarea Parteneri cu si fara facturi & info
facturi din Lucrarea5, Problema7). Se salvează cu denumirea Raport grupat in functie
de parteneri.
Rezolvare: Se respectă paşii prezentati în figurile următoare.
Problema 4.Să se afişeze un raport simplu cu toate cumpărările de marfă care să
conţină doar informaţii legate de numărul facturii, data facturii, cantitatea cumpărată şi
preţul de achiziţie. Să se salveze raportul sub denumirea Raport_Intrari (dacă este
cazul se poate crea o nouă interogare). Sa se adauge un grup in Design View si un
sub-total in footer-ul grupului nou creat.
Rezolvare: Metoda cea mai rapidă şi simplă de construire a unui raport este folosirea
wizardului.

Problema 5. Sa se creeze un raport cu ponderea fiecarui produs in totalul vanzarilor


firmei (bazata pe interogarea Vanzari detaliate din Laborator5, Problema12)
Solutie: Se introduce in raport un total general pentru valoare si un textbox in Design
care calculeaza valoarea/total.
Problema 6.Sa se creeze un raport cu ponderea veniturilor aduse de fiecare client
Solutie: idem punctul precedent

Problema 7.Sa se creeze un raport in care sa se afiseze ponderea veniturilor pe luni,


si variatia de la o luna la alta (se bazeaza pe interogarea Vanzari detaliate din
Lucrarea5, Problema12)
Solutie: se creeaza raportul astfel incat sa afiseze veniturile si cheltuielile pentru
fiecare produs cu grupare pe fiecare luna si Grand Total (cu wizard-ul). In Design
View, in footer-ul grupului se bifeaza Show group totals as % of Grand Total.

Problema 8.Să se afişeze un raport cu toate vânzările de marfă care să conţină doar
informaţii legate de numărul facturii, data facturii, cantitatea vândută, numele
partenerului, denumirea produsului şi preţul de vânzare. Vânzările către acelaşi client
să fie grupate. Înregistrările vor fi ordonate crescător după numărul facturii. Se va afişa
un sub-total cu suma pentru cantitate şi media aritmetică pentru preţul de vânzare
pentru fiecare număr de factură ( se poate face in prealabil o interogare sau se poate
crea un paramteru pe campul Tip si la rulare sa se ceara V).
Să se salveze raportul sub denumirea Raport_Iesiri.
Rezolvare: Pentru afişarea câmpurilor necesare se vor selecta la primul pas al wizard-
ului câmpuri din două tabele.

Problema 9.Aceeaşi problemă ca şi la punctul anterior dar în plus ieşirile să se


ordoneze invers alfabetic după denumirea produsului şi să nu se creeze
sub-totaluri. Să se salveze noul raport sub denumirea
Raport_Iesiri_Ordonat.

Problema 10. Să se modifice raportul Raport_Iesiri astfel încât denumirile câmpu-


rilor să fie în limba engleză. Să se modifice marginile raportului la 1
cm, iar fundalul să fie galben deschis.
Rezolvare: Realizarea oricărei modificări într-un raport existent se poate face doar în
modul de vizualizare Design View.
Pentru modificarea denumirii coloanelor se parcurg următorii paşi:
1. Se deschide raportul în modul de vizualizare Design View (click dreapta pe
numele raportului, iar din lista de opţiuni se alege Design View).
2. Se remarcă secţiunile raportului: Report Header, Page Header, Page Footer şi
Report Footer. Report Header şi Report Footer reprezintă antetul şi subsolul
raportului şi vor fi afişate doar pe prima şi ultima pagină a raportului. Page
Header şi Page Footer reprezintă antetul şi subsolul paginii şi vor fi afişate pe
fiecare pagină. Secţiunea Detail este şi cea mai importantă deoarece în cadrul ei
se vor afişa înregistrările propriu-zise.
3. Pentru a realiza modificarea numelui coloanelor se modifică etichetele exis-
tente în secţiunea Page Header. Se pot realiza repoziţionări, redimensionări şi
redenumiri ale acestor etichete. Pentru această problemă se redenumesc
etichetele cu denumirile în engleză ale coloanelor.
4. Se salvează modificările şi se închide raportul.
Problema 11. În raportul Raport_Iesiri să se adauge o nouă coloană care să
calculeze valoarea totală a fiecărei ieşiri ca produs între câmpul
cantitate şi câmpul PU.
Rezolvare: Pentru adăugarea unei coloane calculate în cadrul unui raport existent se
parcurg următorii paşi:
1. Se deschide raportul în modul de vizualizare Design View.
2. Se remarcă în cadrul secţiunii Detail a raportului existenţa unor casete text care
realizează legătura cu câmpurile tabelei pe care se bazează raportul.
3. Se adaugă o nouă casetă text în secţiunea Detail prin selectarea filei Report
Design Tools - Design şi efectuarea unui click pe butonul Text Box. Se
desenează pe suprafaţa raportului text-box-ul în poziţia dorită şi cu
dimensiunile necesare afişării datelor.
4. Se şterge eticheta introdusă automat cu caseta text.
5. Se selectează caseta text şi se efectuează click pe butonul Property Sheet din
fila Report Design Tools - Design. Se efectuează clic pe caseta text Control
Source. Se apasă butonul ... situat în dreapta casetei text pentru a deschide
fereastra Expression Builder.
6. Se selectează câmpul cantitate, simbolul * şi după aceea câmpul pret_vanzare.
Se acţionează butonul OK şi după aceea se închide fereastra Properties Sheet.
Caseta text va conţine formula [cantitate]*[PU].
7. Se introduce în secţiunea Page Header o etichetă care va afişa textul „valoare”.
Această etichetă va reprezenta capul de tabel al coloanei calculate.
8. Se salvează modificările şi se închide raportul.

PROBLEME PROPUSE

Problema 1.Să se alcătuiască un raport cu numarul de abonamente valabile la data


curenta. Să se modifice raportul astfel ca denumirile câmpurilor să apară
în limba engleză. Să se modifice poziţia datei calendaristice de pe raport
astfel ca ea să apară în colţul din dreapta sus.
Problema 2.Să se alcătuiască un raport in care sa se prezinte, in ordine crescatoare,
liniile cu cea mai mare capacitate de transport.
Problema 3.Să se intocmeasca un raport, in ordine descrescatoare, cu veniturile
generate de fiecare linie (pentru problema aceasta nu exista interogare!).
Sa se adauge un camp nou prin care se afișează valoarea maximă, câmp
care să apară pe ultima pagină a raportului.
Problema 4. Să se modifice marginile raportului anterior la 1 cm, să se modifice
fondul raportului astfel ca el să fie verde-deschis, să se tipărească prima
pagină din raport într-un fişier .prn .
Problema 5. Să se creeze un raport la alegere care să conțină și două sub-rapoarte.

S-ar putea să vă placă și