Sunteți pe pagina 1din 114

Universitatea OVIDIUS Constanţa

Departamentul ID-IFR
Facultatea de Știinţe Economice
Specializarea Economia Comerţului, Turismului şi Serviciilor
Forma de învăţământ ID
Anul de studiu I
Semestrul 2
Valabil începând cu anul universitar 2009-2010

Caiet de Studiu Individual


pentru
Sisteme informaţionale
și aplicaţii informaţionale
în administrarea afacerilor

Coordonator disciplină: Prof. univ. Cosma Emil


Cuprins

Sisteme informaţionale și aplicaţii informaţionale în


administrarea afacerilor

CUPRINS

Unitate Titlul Pagina


de
învăţare
INTRODUCERE 1

1 Crearea si actualizarea tabelelor de date 6


Obiectivele Unităţii de învăţare Nr. 1 7
1.1. Lansarea Access-ului 8
1.2. Crearea unei baze de date 9
1.3. Tipuri de date 10
1.4. Proprietăţile câmpurilor 11
1.5. Formatarea câmpurilor 12
1.5.1. Formatarea textelor 13
1.5.2. Formatarea numerelor 13
1.5.3. Măşti de intrare pentru date 14
1.5.4. Câmpuri obligatorii şi valori prestabilite 14
Lucrare de verificare Unitate de învăţare Nr. 1 17

2 Editarea și consultarea tabelelor 18


Obiectivele Unităţii de învăţare Nr. 2 19
2.1. Prelucrarea tabelelor de date 19
2.1.1. Navigarea în tabel 19
2.1.2. Adăugarea unei nou înregistrări 19
2.1.3. Adăugarea liniei Total 20
2.1.4. Ştergerea unei înregistrări (Delete Record) 20
2.1.5. Poziţionări (Search) 20
2.1.6. Căutare (Find) şi înlocuire (Replace) 21
2.1.7. Prelucrări pe coloane (câmpuri) 21
2.2. Sortarea şi filtrarea înregistrărilor 22
2.2.1. Sortare (Sort) 22
2.2.2. Filtrare (Filter) 23
2.2.3. Interogarea tabelelor de date 23
2.2.3.1. Crearea unei interogări 24
2.2.3.2. Rularea unei interogări 25
2.2.3.3. Crearea unui tabel nou, prin interogare 25
Lucrare de verificare Unitate de învăţare Nr. 2 27

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor I


Cuprins

3 și 4 Uniuni de tabele 29
Obiectivele Unităţii de învăţare Nr. 3 și 4 30
3.1. Tabel liber, tabel asociat 30
3.2. Chei primare, chei de legătură 30
3.3. Tabel primar, tabel relaţionat 30
3.4. Păstrarea integrităţii referenţiale 33
Lucrare de verificare Unitate de învăţare Nr. 3 și 4 34

5 Formulare (Forms) 36
Obiectivele Unităţii de învăţare Nr. 5 37
5.1. Afişarea paginată 37
5.2. Afişarea combinată 41
5.3. Afişarea tabelară 41
5.4. Șabloane 42
Lucrare de verificare Unitate de învăţare Nr. 5 42

6 și 7 Listarea şi exportarea datelor 45


Obiectivele Unităţii de învăţare Nr. 6 și 7 46
6.1. Rapoarte (Reports) 46
6.2. Exportarea datelor 51
Lucrare de verificare Unitate de învăţare Nr. 6 și 7 53

8 și 9 Crearea şi actualizarea tabelelor (SQL) 54


Obiectivele Unităţii de învăţare Nr. 8 și 9 55
8.1. Crearea şi rularea unui script SQL 56
8.2. Tipuri de date 57
8.2.1. Tipul de date șir 57
8.2.2. Tipul de date numeric 58
8.2.3. Tipul de date dată/oră 58
8.2.4. Tipul de date binar 59
8.3. Sintaxa instrucţiunilor SQL 59
8.3.1. Formatarea instrucţiunilor 60
8.3.2. Descrierea sintaxei instrucţiunilor 60
8.4. Crearea unui tabel 60
8.5. Crearea unui index (indice) 62
8.6. Inserarea rândurilor într-un tabel 62
8.7. Modificarea structurii tabelelor 63
8.8. Actualizarea conţinutului tabelelor 64
8.9. Afișarea conţinutului unui tabel 65
8.10. Copierea tabelelor 66
8.11. Ștergerea rândurilor 67
8.12. Ștergerea tabelelor 67
Lucrare de verificare Unitate de învăţare Nr. 8 și 9 68

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor II


Cuprins

10 și 11 Editarea și consultarea tabelelor (SQL) 69


Obiectivele Unităţii de învăţare Nr. 10 și 11 70
10.1. Câmpuri cu valoare calculată 70
10.2. Funcţii agregat 71
10.3. Funcţii pentru manipularea datelor (specifice Access) 72
10.3.1. Funcţia FORMAT 72
10.3.2. Funcţii matematice 73
10.3.3. Funcţii financiare 73
10.3.4. Funcţii pe șiruri de caractere 75
10.3.5. Funcţii pentru dată calendaristică și timp 76
10.3.6. Funcţii pentru conversii 76
10.3.7. Funcţii pentru testarea tipului de date 76
10.4. Concatenarea câmpurilor 77
10.5. Sortarea 77
10.6. Filtrarea 78
10.6.1. Operatorii clauzei Where 79
10.6.2. Caractere de înlocuire 79
10.7. Gruparea datelor 81
10.7.1. Grupare și sortare 82
10.7.2. Grupare și filtrare 83
10.8. Ordinea clauzelor Select 84
Lucrare de verificare Unitate de învăţare Nr. 10 și 11 84

12 Uniuni de tabele (SQL) 85


Obiectivele Unităţii de învăţare Nr. 12 86
12.1. Uniuni interioare 86
12.2. Uniuni între mai multe tabele 88
12.3. Uniuni exterioare 90
Lucrare de verificare Unitate de învăţare Nr. 12 90

13 și 14 Programarea bazelor de date (VBA) 91


Obiectivele Unităţii de învăţare Nr. 13 și 14 92
13.1. Formulare personalizate 92
13.2. Lansarea instrucţiunilor SQL 96
13.3. Seturi de înregistrări 97
13.4. Scanarea seturilor de înregistrări 98
13.5. Actualizarea seturilor de înregistrări 103
13.6. Tabele relaţionate prin program 104
Lucrare de verificare Unitate de învăţare Nr. 13 și 14 109

BIBLIOGRAFIE 110

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor III


Introducere

Sisteme informaţionale și aplicaţii informaţionale în


administrarea afacerilor
INTRODUCERE

Stimate cursant,
 

încă de la început doresc să îţi urez bun venit în domeniul sistemelor informatice.
Acest curs se adresează atât cursanţilor cu un grad mai mare de familiarizare cu
universul calculatoarelor cât şi cursanţilor începători. Există totuşi anumite
cunoştinţe specifice necesare parcurgerii acestui curs şi anume:
Cunoaşterea modalităţii de organizare şi manipulare a informaţiei în format
electronic (sistem de fişiere, directoare, copierea, mutarea şi
deschiderea fişierelor).
Operaţii de bază utilizând sistemul de operare Microsoft Windows
(pornirea unei sesiuni de lucru, deschiderea unei aplicaţii, comutarea între
mai multe aplicaţii ce rulează simultan, noţiunea de desktop şi noţiunea de
shortcut, închiderea în mod corespunzător a sistemului),
Utilizarea tastaturii PC standard şi a mouse-ului (combinaţii de taste,
utilizarea tastelor speciale, right şi left click pentru mouse)

Manualul de faţă este organizat în 14 unităţi de învăţare, fiecare dintre


aceste unităţi conţinând o parte de prezentare a subiectului tratat, o parte de exerciţii
practice şi rezolvările acestora.  

Exerciţiile practice sunt marcate cu simbolul .

Spor la învăţat şi succes!

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     1 


Introducere

Toate sistemele informatice, cât de cât evoluate, sunt orientate spre o


stocare eficientă a datelor şi implementează modalităţi de acces facil la datele
stocate. Acest acces poate fi obţinut în moduri care variază de la simpla citire şi
salvare a informaţiilor în fişiere şi până la interacţiunea cu aplicaţii complexe de
baze de date. Fără capacitatea de a lucra cu valori stocate programul nu le poate
utiliza de la o rulare la alta. Programele care administrează un inventar, de
exemplu, sau se ocupă de contabilitate trebuie să aibă implementate modalităţi de
salvare a datelor – pentru ca utilizatorul să-şi poată continua activitatea la
următoarea deschidere a aplicaţiei.

Bază de date
Cel mai important lucru de ştiut despre bazele de date este faptul că ele
sunt organizate în tabele. Programele de baze de date alcătuiesc, de fapt, un
sistem de gestiune a bazelor de date (sau SGBD). Baza de date este containerul
creat si manipulat prin intermediul SGBD. Din categoria programelor de tip
SGBD pot fi amintite: Microsoft Access, MySQL, Oracle, FoxPro, etc.

Tabel de date
Un tabel dintr-o bază de date are un nume care îl identifică (numele
respectiv este întotdeauna unic). Toate tabelele sunt alcătuite dintr-una sau mai
multe coloane, numite câmpuri (fields). Fiecare coloană a tabelului conţine un
anumit tip de informaţie. Într-un tabel cu informaţii despre clienţi, de exemplu, o
coloană conţine numărul clientului, alta include numele acestuia iar adresa,
oraşul, judeţul şi codul poştal sunt toate stocate în propriile lor coloane. La
fiecare coloană dintr-o bază de date este asociat un tip de date. Un tip de date
defineşte categoria de date pe care le poate conţine coloana. Astfel, în situaţia în
care coloana trebuie să conţină o valoare numerică (numărul articolelor dintr-o
comandă, de exemplu), tipul de date va fi unul numeric. În situaţia în care
coloana conţine date calendaristice, text, note, sume de bani etc., se va folosi tipul
de date corespunzător pentru specificarea acestor informaţii. Tipurile de date
limitează categoriile de date care pot fi stocate într-o anumită coloană (de
exemplu, pentru a preveni introducerea caracterelor alfabetice într-un câmp de
natură numerică). De asemenea, tipurile de date facilitează sortarea corectă a
datelor şi joacă un rol important în optimizarea utilizării suportului de stocare (în
majoritatea cazurilor hard discul). În consecinţă, la crearea tabelelor trebuie
acordată o atenţie specială selectării tipului de date corect.
Datele dintr-un tabel sunt stocate pe rânduri. Un rând (linie) dintr-un tabel
poartă numele de înregistrare (record). Fiecare înregistrare salvată este stocată în
propriul său rând. De exemplu, un tabel care conţine clienţi ar putea stoca pe
fiecare rând informaţiile referitoare la un anumit client. Numărul rândurilor dintr-
un tabel reprezintă numărul înregistrărilor pe care le conţine acesta.

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     2 


Introducere

Cheie primară
Fiecare rând dintr-un tabel trebuie să aibă o coloană (sau un set de
coloane) care îl identifică în mod unic - cheie primară (primary key). De
exemplu o cheie primară ar putea fi un cod numeric personal, o adresă de e-mail
sau un alt identificator unic (numele de persoane nu sunt alese, de obicei, drept
chei primare, deoarece duplicarea este cât se poate de posibilă). Cu alte cuvinte,
în cadrul unui tabel, valoarea unei chei primare nu poate fi duplicată pe parcursul
înregistrărilor pentru că este folosită pentru a face referire la un anumit rând. În
absenţa unei chei primare, actualizarea sau ştergerea anumitor rânduri dintr-un
tabel devine extrem de dificilă, deoarece nu există nici o modalitate sigură şi
garantată de a face referire numai la rândurile afectate.
Orice coloană dintr-un tabel poate fi desemnată cheie primară dacă:
Nu există două rânduri cu aceeaşi valoare a cheii primare;
Fiecare rând trebuie să aibă o valoare a cheii primare (coloanele
cheie primară nu pot include valori NULL);
De regulă, cheile primare sunt definite în cadrul unei singure coloane din
tabel. Dar acest lucru nu este obligatoriu, existând posibilitatea ca mai multe
coloane să fie utilizate, împreună, cu titlu de cheie primară. Când se utilizează
coloane multiple, regulile enumerate anterior trebuie să fie respectate astfel încât
să se obţină valori unice (coloanele individuale nu trebuie să conţină valori
unice).

Uniuni de tabele
În afara cheilor primare, cheile de legătură sau cheile externe (foreign
keys), care nu trebuie să fie unice, sunt folosite pentru a stabili relaţii între
tabelele de date. În cadrul bazelor de date se pot reuni mai multe tabele de date
(uniuni de tabele). De exemplu, unui tabel (Produse) i se poate asocia o cheie
primară, produs_id, fiecare articol din tabel fiind plasat în propriul său rând. Ca
informaţii stocate, pentru fiecare produs ar putea fi denumirea produsului, preţul
acestuia, informaţii despre producător (precum nume, adresă, informaţii de
contact). De regulă informaţiile legate de producător nu sunt stocate alături de
informaţiile despre produs, din mai multe motive:
Repetarea informaţiilor pentru fiecare produs este consumatoare de timp
şi de spaţiu de stocare.
Dacă informaţiile despre producător se modifică (de exemplu dacă acesta
îşi schimbă prefixul telefonic sau adresa), este necesară actualizarea
fiecărei apariţii a informaţiilor respective.
Când anumite date se repetă (cu alte cuvinte, informaţiile despre
producător sunt ataşate la fiecare articol), există o mare probabilitate ca
datele respective să nu fie introduse în exact acelaşi mod, de fiecare dată.
Datele inconsecvente sunt extrem de dificil de folosit în cadrul
rapoartelor.
Apariţiile multiple ale aceloraşi informaţii nu sunt niciodată benefice, şi

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     3 


Introducere

acesta este un principiu care stă la baza proiectării bazelor de date relaţionale. În
locul unor tabele lungi şi care conţin date care se repetă, se preferă tabele mai
scurte, relaţionale, conţinând informaţii pentru fiecare tip de date. Tabelele sunt
corelate între ele prin intermediul unor valori comune - chei (de aici noţiunile de
„relaţional” şi „baze de date relaţionale”).
În exemplul amintit se pot crea două tabele, unul cu informaţii despre
producător şi altul cu informaţii despre produs. Tabelul Producători conţine toate
informaţii despre producători, câte un rând din tabel pentru fiecare producător,
alături de un identificator unic (cheie) al fiecăruia (producător_id). Tabelul
Produse stochează numai informaţii despre produse şi nu conţine nici un fel de
date caracteristice producătorului, cu excepţia identificatorului acestuia
(producător_id) care permite găsirea detaliilor corespunzătoare în tabelul
Producători. Această cheie defineşte legătura dintre tabelul Producător şi tabelul
Produse, între cele două tabele stabilindu-se o relaţie unu la mai multe (one to
many). Datele organizate în această manieră, în tabele independente, pot fi
stocate eficient şi manipulate cu uşurinţă, ele sunt date relaţionale. Aplicaţia
software (de exemplu Microsoft Access) utilizată pentru a manipula datele se
numeşte, astfel, bază de date relaţională.

SQL
Limbajul SQL (Structured Query Language – limbajul structurat de
interogare) este cel mai frecvent utilizat limbaj, fiind folosit pentru manipularea şi
recuperarea informaţiilor stocate în baze de date relaţionale. Spre deosebire de alte
limbaje (de exemplu Java sau Visual Basic), SQL este alcătuit dintr-un număr
foarte redus de cuvinte. Acest fapt nu este întâmplător pentru că este un limbaj
proiectat pentru a face un singur lucru, dar eficient, constituind o modalitate
simplă şi eficace de a citi şi a scrie date într-o bază de date. Avantajele limbajului
SQL:
SQL nu este un limbaj „de firmă" folosit de anumiţi producători de
programe de baze de date. Aproape toate sistemele importante de
gestiune a bazelor de date recunosc limbajul SQL, deci cunoscând acest
unic limbaj se poate interacţiona cu aproape fiecare bază de date întâlnită.
SQL este uşor de învăţat. Toate instrucţiunile sunt alcătuite din cuvinte
descriptive, nu multe la număr, în limba engleză.
În ciuda aparentei sale simplităţi, SQL este de fapt un limbaj foarte
puternic, iar prin utilizarea inteligentă a elementelor sale se pot efectua
operaţii complexe şi sofisticate cu bazele de date.
Numeroşi producători de SGBD-uri şi-au extins suportul pentru SQL prin
adăugarea de instrucţiuni la limbajul respectiv. Rolul acestor extensii constă din a
furniza funcţionalităţi suplimentare şi modalităţi simplificate pentru efectuarea
anumitor operaţii. Deşi sunt deseori extrem de utile, aceste extensii prezintă
tendinţa de a fi specifice unui anumit SGBD şi sunt rareori acceptate de mai mulţi
producători. Limbajul SQL standard este controlat de comisia de standardizare
ANSI, drept pentru care se numeşte ANSI SQL. Toate sistemele importante de
gestiune a bazelor de date, chiar şi cele care îşi folosesc propriile extensii,
acceptă ANSI SQL. În majoritatea situaţiilor, limbajul SQL prezentat ca anexă la

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     4 


Introducere

SGBD-ul Microsoft Access, este ANSI SQL şi se aplică oricărui sistem de


gestiune a bazelor de date.

VBA
În aplicaţiile Microsoft Office (Word, Excel, PowerPoint) este posibilă
automatizarea operaţiilor de rutină folosind limbajul VBA (Visual Basic for
Applications). Acest limbaj este de asemenea utilizabil în Access, permiţând
accesul la datele stocate în tabele. Astfel, resursele Access, SQL şi VBA se pot
folosi împreună.

Pentru a uşura lectura, materialul didactic prezentat în continuare include


particularităţi şi elemente convenţionale:
 Simboluri explicative:

Simbol Semnificaţie

 Atenţie

↓ Exemplu_ Exemplu

 Indicaţii, menţiuni


Aplicaţii

 Simboluri pentru descrierea sintaxei instrucţiunilor SQL şi VBA:

[] elementul este opţional


| variantă
<tip> tip de dată
<valoare> valoarea unei constante, a unei variabile sau a unei expresii
<expresie> expresie oarecare
<condiţie> condiţie (expresie logică)

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     5 


Crearea si actualizarea tabelelor de date

Unitatea de învăţare Nr. 1


Crearea si actualizarea tabelelor de date
Cuprins Pagina
Obiectivele Unităţii de învăţare Nr. 1 7
1.1. Lansarea Access-ului 8
1.2. Crearea unei baze de date 9
1.3. Tipuri de date 10
1.4. Proprietăţile câmpurilor 11
1.5. Formatarea câmpurilor 12
1.5.1. Formatarea textelor 13
1.5.2. Formatarea numerelor 13
1.5.3. Măşti de intrare pentru date 14
1.5.4. Câmpuri obligatorii şi valori prestabilite 14
Lucrare de verificare Unitate de învăţare Nr. 1 17

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     6 


Crearea si actualizarea tabelelor de date

O bază de date relaţională este, în esenţă, o colecţie de tabele de date


între care există anumite legături. Ele pot fi create, editate, prelucrate (prin
interogări, rapoarte, formulare) utilizând medii de programare dedicate
(FoxPro, Oracle, Informix, SyBase, Microsoft Acces).

Microsoft Access este componentă a pachetului Microsoft Office (Word,


Excel, PowerPoint …). Interfaţa grafică a Access–ului include posibilităţi de a
lucra cu datele şi de a le controla, asigură o puternică modalitate de sortare,
depozitare, manipulare şi salvare a datelor, permite organizarea datelor în baze
de date simple, putându-se defini aplicaţii complexe.

Entitatea de lucru într-un mediu de gestiune a datelor o reprezintă tabelul


de date. Fiecare tabel de date este identificat printr-un nume, denumirile
coloanelor sunt câmpuri (fields) iar liniile din tabel se numesc înregistrări
(records):

Fiecare denumire a coloanei reprezintă un 
Nume tabel  câmp (Field)

Fiecare linie reprezintă o 
înregistrare 
(Record) 

Baza de date conţine, de obicei, mai multe tabele iar pentru controlul şi
valorificarea datelor din tabele se folosesc şi alte resurse:

 Interogări (obţinerea unor informaţii relevante…)


 Rapoarte (liste - la imprimantă, în forma dorită …)
 Formulare (pentru introducere, editare, calcule…)

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     7 


Crearea si actualizarea tabelelor de date

Bază de date 

Tabele 
Table

Formulare Form

Interogări  Query Rapoarte Report

Lansarea Access-ului

Programul se poate lansa din lista de programe instalate, grupul Microsoft


Office:

.......
Apare, astfel, pagina Getting Started with Microsoft Office Access:

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     8 


Crearea si actualizarea tabelelor de date

Se poate crea o nouă bază de date (Blank Database), se poate deschide


una creată recent (Open Recent Database) sau o bază de date existentă pe un
suport de stocare (clic pe Microsoft Office Button şi Open), se poate utiliza
un şablon local sau online (Template).

Crearea unei baze de date

O nouă bază de date trebuie să conţină cel puţin un tabel de date, astfel
că trebuie parcurşi următorii paşi:
 Start Access.
 Apare pagina Getting Started with Microsoft Office Acces.

 Clic pe Blank Database:


 În caseta File Name se introduce numele bazei de date, preferabil
un nume semnificativ şi nu Database1, Databse2, … nume oferite
de mediul de programare (rezultă un fişier, cu acest nume şi cu
extensia .accdb, în folder-ul implicit de lucru sau în alt folder –
clic pe icon-ul ):

 Clic pe butonul Create.


 Baza de date este creată şi un tabel de date (Table1) este deschis

în  Datasheet View :

 Pentru definirea structurii tabelului se face comutarea în Design View

(tab-ul Home):

 Pentru fiecare câmp al tabelului trebuie precizat numele (Field Name)


şi tipul de date (Data Type):

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     9 


Crearea si actualizarea tabelelor de date

 Oricărui tabel, din baza de date, i se atribuie un nume. În caseta


Save As se introduce un nume semnificativ pentru tabelul de date (nu
Table1, Table2, …), de exemplu Salariati:

Tipuri de date

Tip câmp Conţinut Lungime (maximă)


Text Caractere alfanumerice 255 caractere.
Utilizat pentru text, sau text şi numere (dar care nu sunt
utilizate pentru calcule.
Memo Caractere alfanumerice ( de lungime mai mare de 255 65.535 caractere.
caractere) în format Rich Text.
Notiţele, descrierile amănunţite, sau paragrafele cu
formatare bold sau italic sunt exemple semnificative de
utilizare a tipului de câmp Memo.
Number Valori numerice. 16 bytes.
Utilizat pentru stocarea numerelor utilizate în calcule,
exceptând valorile monetare (tipul Currency este dedicat
acestor valori).

Date/Time Date calendaristice şi de timp. 8 bytes.


Utilizat pentru stocarea valorilor prin care se reprezintă
data/timpul.
Currency Valori monetare. 8 bytes.
Utilizat pentru valori care includ şi moneda (lei pentru
România).
AutoNumber Valori unice pe care Office Access le inserează atunci când 16 bytes.
o înregistrare este adăugată tabelului.
Utilizat pentru generarea unei valori unice care pot fi
utilizate drept chei primare. Acest câmp poate fi
incrementat secvenţial sau aleator (Random) şi nu poate fi
modificat.
Yes/No Valori booleene. 1 bit (8 biţi = 1 byte).
Valori posibile: True/False sau Yes/No.
OLE Object Obiecte OLE sau alte date binare. 1 Gigabyte.
Utilizat pentru memorarea obiectelor OLE din alte aplicaţii
Microsoft Windows.

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     10 


Crearea si actualizarea tabelelor de date

Attachment Picturi, imagini, fişiere binare, fişiere Office. 2 Gigabytes.


Acest tip este preferat pentru stocarea imaginilor digitale şi
orice tip de fişier binar.
Hyperlink Hyperlink - uri. 2 Gigabytes.
Utilizat pentru memorarea hyperlink – urilor, pentru
accesarea unor pagini Web prin URL (Uniform Resource
Locator) sau a fişierelor prin numele lor în format UNC
(Universal Naming Convention). Se poate crea şi link spre
obiecte Access memorate în baza de date.
Lookup Wizard Tipuri de dată neprecizate, aduse din alte tabele. Este impusă de tipul
Utilizând Lookup Wizard se poate crea un câmp prin datei din tabelul sau
utilizarea unor liste (combo box), valori din alte tabele sau interogarea de origine.
interogări.

Pentru tipurile de date Text, Number şi AutoNumber, se poate utiliza


proprietatea Field Size pentru a stabili dimensiunea maximă a datelor stocate
în câmp. În cazul datelor de tip Text, această proprietate specifică numărul de
caractere permise (de la 0 la 255). Dimensiunile câmpurilor numerice includ
opţiunile Byte, Integer şi Long Integer pentru valorile întregi şi opţiunile Single
şi Double pentru valorile zecimale. Diferenţa dintre aceste dimensiuni constă în
cantitatea de spaţiu de memorie internă pe care îl folosesc şi în intervalul de
valori posibile pe care îl acoperă. Dacă valorile întregi vor acoperi numai
intervalul 0-255, se poate utiliza opţiunea Byte, însă pentru un interval mai
mare trebuie să fie folosită opţiunea Integer sau Long Integer.

 Tipul Number este, implicit, Long Integer.


Dimensiunea câmpurilor numerice
Dimensiune de câmp Interval Lungime
Byte Întregi de la 0 la 255 1 byte
Integer Întregi de la -32.768 la 32.767 2 bytes
Long Integer Întregi de la -2.147.483.648 la 2.147.483.647 4 bytes
Single De la -3,402823E38 la -1,401298E-45(valori negative) şi de la 4 bytes
1,401298E-45 la 3,402823E38 (valori pozitive)
Double De la -1,797693E308 la -4,940656E-324 (valori negative) şi de la 8 bytes
4,940656E-324 la 1,797693E308 (valori pozitive)

Replication ID Valori utilizate pentru stabilirea identificatorilor unici 16 bytes

Proprietăţile câmpurilor

După crearea câmpurilor dintr-un tabel, se pot specifica proprietăţile


care definesc modul de apariţie sau comportamentul câmpului în baza de date.
În modul de vizualizare Design pentru tabele, programul Access pune la dispo-
ziţie o listă cu proprietăţi de câmp pentru fiecare tip de dată (Field Properties).

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     11 


Crearea si actualizarea tabelelor de date

 Lista de proprietăţi se modifică în funcţie de tipul de dată.


Între proprietăţile unui câmp text se numără: Field Size, Format, Input
Mask, Caption, Default Value, Validation Rule, Validation Text, Required, Allow
Zero Length şi Smart Tags:

Câmp Proprietate
Field Size Numărul maxim de caractere (până la 255) care pot fi introduse în
(Dimensiune câmp) câmp.
Format Precizează modul în care vor apărea datele din câmp pe ecran.
Input Mask (Mască de
Formatul sau şablonul în care trebuie introduse datele.
intrare)
Etichetă pentru câmp atunci când este folosit într-un formular. Dacă nu
Caption (Legendă) se stabileşte o legendă, programul Access foloseşte ca etichetă numele
câmpului.
Default Value (Valoare
Specifică o valoare introdusă automat de programul Access.
prestabilită)
Validation Rule Specifică o expresie care limitează valorile ce pot fi introduse în acest
(Regulă de validare) câmp.
Validation Text (Text Specifică un mesaj de eroare care este afişat pe ecran atunci când este
de validare) introdusă o valoare interzisă prin regula de validare.
Required (Necesar) Indică dacă este obligatorie introducerea datelor.
Alow Zero Length
(Permite lungime Specifică dacă acest câmp permite şiruri text de lungime zero.
zero)
Indexed (Indexat) Index al valorilor câmpului.
Unicode Compression Economisirea spaţiului de memorie pentru stocare, dacă sunt introduse
(Compresie Unicode) numai texte propriu-zise.

Formatarea câmpurilor

Un format este o proprietate care impune modul de afişare a numerelor,


textelor, a datelor calendaristice şi de timp. Există formate predefinite ale
Access-ului, însă se pot crea formate proprii utilizând simboluri de formatare.
Simbolurile de formatare sunt simboluri pe care Access le foloseşte pentru a
controla modul în care se realizează afişarea datelor. De exemplu, simbolul de
formatare „<” impune afişarea caracterelor de text cu litere mici, iar simbolul

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     12 


Crearea si actualizarea tabelelor de date

„>” afişarea cu litere mari. Formatarea poate include şi utilizarea de expresii


literale (literals), care sunt şiruri de text afişate exact aşa cum apar în format.
Formatarea nu afectează decât modul în care sunt afişate datele, nu datele
efective.

Caseta Format

Formatarea textelor
↓ Exemple_________________________________________________________________________________
Format Dată Afişare
< Constanta constanta
> Constanta CONSTANTA
&"Kg." 75 75Kg.
@@@@-@@@@@@ 0766202134 0766-202134
&\. Dl Dl.
&*! Felicitari Felicitari!!!!!!!

_________________________________________________________________________________Exemple ↑

Formatarea numerelor
↓ Exemple_________________________________________________________________________________
Format Dată Afişare
# 15,87 16
#,00 30,1 30,10
#, 25 25,
#.### 8876 8.876
$#,00 30,1 $30,10
#,00lei 30,1 30,10lei
#% 0,75 75%

_________________________________________________________________________________Exemple ↑

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     13 


Crearea si actualizarea tabelelor de date

Formatarea datelor de tip dată calendaristică şi timp

↓ Exemple_________________________________________________________________________________
Format Afişare
General Date 25.05.1970 17:35:19
Long Date 25 mai 1970
Short Date 25.05.1970
Medium Time 05:35
Short Time 17:35

_________________________________________________________________________________Exemple ↑

Măşti de intrare pentru date

O mască de intrare (Input Mask) permite controlul valorilor care se pot


introduce într-un câmp al unui tabel de date. Măştile de intrare sunt formate din
caractere literale (spaţii, puncte, paranteze şi caractere de înlocuire). Un
caracter de înlocuire (placeholder) este un caracter de text, de exemplu
simbolul linie de subliniere (_), care arată utilizatorului unde trebuie să
introducă valorile. O mască de intrare pentru un câmp de tip număr de telefon
ar putea fi de forma: (____)______. Parantezele sunt caractere literale, iar
caracterul linie de subliniere are rolul de caracter de înlocuire pentru cifrele din
numărul de telefon. Din Access pot fi folosite mai multe măşti de intrare
predefinite, care rezolvă majoritatea situaţiilor, însă se pot crea măşti
personalizate proprii, dacă este necesar. Resursa Input Mask Wizard este
disponibilă numai pentru câmpurile de tip dată şi text. Pentru câmpuri numerice,
este necesară introducerea simbolurilor de formatare.

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     14 


Crearea si actualizarea tabelelor de date

Simboluri pentru măştile de intrare


Simbol Descriere
0 Cifre de la 0 la 9 (obligatorii)
9 Cifre de la 0 la 9 (opţionale)
A Litere sau cifre (obligatorii)
a Litere sau cifre (opţionale)
# Cifre sau spaţii
& Orice caracter sau spaţiu (obligatorii)
C Orice caracter sau spaţiu (opţionale)
L Literele A-Z (obligatorii)
? Literele A-Z (opţionale)
> Următoarele caractere sunt afişate cu litere mari
< Următoarele caractere sunt afişate cu litere mici

↓ Exemplu_________________________________________________________________________________
 Se afişează tabelul în modul de vizualizare Design;
 Clic pe caseta Input Mask:

Caseta Input Mask 

 Din Input Mask Wizard se poate alege un format de mască de intrare


predefinit:

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     15 


Crearea si actualizarea tabelelor de date

 Se poate defini o nouă mască de intrare (prin clic pe butonul Edit List):

_________________________________________________________________________________Exemplu ↑

Câmpuri obligatorii şi valori prestabilite

Unele câmpuri conţin informaţii importante (de exemplu, codul numeric


personal, CNP-ul). Câmpurile de acest gen sunt configurate ca fiind câmpuri
obligatorii (Required Fields), deci, Access refuză să accepte o înregistrare dacă
nu se introduce o valoare acceptabilă pentru câmpul respectiv. De asemenea,
se poate stabili şi o valoare prestabilită (Default Value) pentru un câmp, o
valoare utilizată în cazul în care nu se introduce o altă valoare în câmpul
respectiv. Dacă un câmp are, în mod obişnuit, aceeaşi valoare, cum ar fi un
oraş sau un judeţ, în situaţia în care majoritatea adreselor de contact sunt
locale, se poate atribui valoarea respectivă ca fiind prestabilită, pentru a mări
viteza de introducere a datelor.

Caseta Default Value 

Caseta Required 

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     16 


Crearea si actualizarea tabelelor de date

 O legendă de câmp (Caption) reprezintă textul afişat de-a lungul


unui câmp pentru a descrie mai bine scopul şi conţinutul acestuia.
Legendele pot conţine până la 2.048 de caractere, inclusiv spaţiile. Dacă
nu se specifică o legendă, programul Access foloseşte numele câmpului ca
legendă de câmp.

Se creează tabelul de date cu numele Personal:

1. Câmpul CNP (de tip Text) este obligatoriu (Required – Yes) şi are
asociată masca de intrare prestabilită Cod numeric personal.
2. Pentru câmpul Nume se va utiliza formatul de afişare cu litere mari.
3. Salariu este în valori monetare.
4. Câmpul Data nasterii este de tip Date/Time, Short Date.
5. Telefon este un câmp pentru care se va stabili masca de intrare
(0000)000000.
6. Câmpul Judet are valoarea prestabilită Constanta.
7. Adresa este de tip Memo.

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     17 


Editarea si consultarea tabelelor

Unitatea de învăţare Nr. 2


Editarea si consultarea tabelelor
Cuprins Pagina
Obiectivele Unităţii de învăţare Nr. 2 19
2.1. Prelucrarea tabelelor de date 19
2.1.1. Navigarea în tabel 19
2.1.2. Adăugarea unei noi înregistrări 19
2.1.3. Adăugarea liniei Total 20
2.1.4. Ştergerea unei înregistrări (Delete Record) 20
2.1.5. Poziţionări (Search) 20
2.1.6. Căutare (Find) şi înlocuire (Replace) 21
2.1.7. Prelucrări pe coloane (câmpuri) 21
2.2. Sortarea şi filtrarea înregistrărilor 22
2.2.1. Sortare (Sort) 22
2.2.2. Filtrare (Filter) 23
2.2.3. Interogarea tabelelor de date 23
1.2.3.1. Crearea unei interogări 24
1.2.3.2. Rularea unei interogări 25
1.2.3.3. Crearea unui tabel nou, prin interogare 25
Lucrare de verificare Unitate de învăţare Nr. 2 27

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     18 


Editarea si consultarea tabelelor

Un tabel de date, inclus într-o bază de date poate fi, oricând, modificat
atât în conţinut (vizualizarea Datasheet) cât şi în structură (vizualizarea
Design). Pentru prelucrarea datelor stocate în tabele se apelează la procedee
specifice bazelor de date:
 Poziţionări (Search, Find)
 Ordonări (Sort)
 Filtrări (Filter)
 Interogări (Query)

Prelucrarea tabelelor de date

Exemplificările ulterioare se vor efectua pe un tabel de date:


Selectorul de coloană (câmp) 

Selectorul de linie  Linia de navigare 

Navigarea în tabel
Înregistrările din tabel pot fi parcurse utilizând butoanele din linia de
navigare: prima înregistrare, ultima înregistrare, înregistrarea
precedentă, înregistrarea următoare, înregistrarea curentă.

Adăugarea unei noi înregistrări (New Record)


Pentru a adăuga o nouă linie sunt disponibile mai multe butoane:
 butonul din linia de navigare;
 butonul din tab-ul Home, secţiunea Records;

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     19 


Editarea si consultarea tabelelor

 butonul - după clic dreapta pe selectorul de linie.

Adăugarea liniei Total
O linie – Total poate fi adăugată în Datasheet, dacă se acţionează butonul
(tab-ul Home, grupul Records). Se pot executa astfel, calcule pe
coloană: suma (Sum), media aritmetică (Average), maximul (Maximum),
minimul (Minimum):

↓ Exemplu_________________________________________________________________________________
Preţul mediu pentru articolele din tabelul anterior (Notebook) se
determină prin Average:

_________________________________________________________________________________Exemplu ↑

Ştergerea unei înregistrări (Delete Record)


Butoane pentru ştergere:
 butonul din tab-ul Home, grupul Records;
 butonul   - după clic dreapta pe selectorul de linie.

Poziţionări (Search)
 Pe un număr de înregistrare: se tastează numărul înregistrării (aici
identic cu ID) în linia de navigare.
 Pe o valoare din tabel: se tastează valoarea dorită în caseta Search:

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     20 


Editarea si consultarea tabelelor

Căutare (Find) şi înlocuire (Replace)


Din secţiunea Find, tab-ul Home, se pot lansa operaţii de
căutare (pe conţinut, Fiind, sau pe număr de înregistrare, Go
To) dar şi de căutare şi înlocuire (Replace). De exemplu se
poate înlocui cuvântul, de pe coloana Denumire din tabel, TL-
60 (Fiind What) cu TL-70 (Replace With). În acest caz în caseta
Match se fixează opţiunea Any Part of Field:

Prelucrări pe coloane (câmpuri)


Prin clic dreapta pe selectorul de coloană se intră într-un
meniu contextual care oferă, printre altele:
 Ordonare pe coloană (Sort);
 Copiere (Copy);
 Dimensionare (Column Width…);
 Ascundere/afişare coloană (Hide/Unhide Columns…);
 Căutare (Fiind);
 Inserare (Insert Column);
 Ştergere (Delete Column);
 Redenumire (Rename Column).

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     21 


Editarea si consultarea tabelelor

Sortarea şi filtrarea înregistrărilor

De cele mai multe ori datele trebuie prelucrate într-o ordine diferită de
cea în care au fost introduse în tabelul de date. Procedeul de ordonare a
tabelelor de date (selecţia pe verticală), după diferite criterii se numeşte
sortare (Sort). Sortarea poate fi ascendentă sau descendentă.

Nu întotdeauna trebuie prelucrate toate datele din tabel. Acest lucru


implică filtrări (selecţia pe orizontală) care reprezintă posibilitatea de a
introduce în prelucrare doar datele care îndeplinesc o anumită condiţie.
Filtrarea se poate realiza pe valori cuprinse în unul din câmpurile tabelului de
date şi poate fi personalizată prin criterii de filtrare care permit precizarea
condiţiilor logice: Greater Than (mai mare decât), Equals (egal cu), Does
Not Equal (diferit de), Begins With (începe cu), Ends With (se
sfârşeşte cu) Between (între), etc. – depinde de tipul datei din câmp.

Pentru efectuarea sortărilor şi a filtrărilor sunt


utilizate butoanele din tab-ul Home, secţiunea Sort &
Filter (dar şi butoanele afişate în anumite meniuri
contextuale).

Sortare (Sort)
Pentru câmpurile textuale ordinea ascendentă înseamnă afişarea
înregistrărilor în ordine alfabetică, pentru câmpurile de tip dată calendaristică
de la cele mai recente la cele mai vechi, pentru câmpurile numerice de la cele
mai mici la cele mai mari. În ordine descendentă, ordinea este inversată. De
asemenea, este posibilă sortarea înregistrărilor în funcţie de mai multe
câmpuri: această operaţie este numită sortare secundară (pentru valori egale
pe primul câmp, au efect valorile din cel de-al doilea câmp ş.a.m.d.).
↓ Exemplu_________________________________________________________________________________
O sortare descendentă pe câmpul Pret:

din dreapta denumirii coloanei şi alegerea opţiunii


(clic pe butonul
Sort Largest to Smallest din meniul vertical care apare)
_________________________________________________________________________________Exemplu ↑

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     22 


Editarea si consultarea tabelelor

Filtrare (Filter)
Iniţierea unei filtrări determină apariţia, funcţie de tipul datelor din
câmpul activ – textual sau numeric, unui meniu vertical, din care pot fi
selectate mai multe opţiuni:

↓ Exemplu _________________________________________________________________________________
O filtrare pe câmpul Pret, pe opţiunea Between…:

_________________________________________________________________________________Exemplu ↑

 Pentru invalidarea unui criteriu de filtrare deja stabilit, se alege, din


meniul contextual aferent, opţiunea Clear filter. Astfel tabelul de date
are disponibile, spre prelucrare, toate înregistrările - filtrarea exemplificată

anterior poate fi anulată, prin .

Interogarea tabelelor de date

O interogare (query) este în esenţă o extragere de informaţii din tabelele


de date sau din alte interogări şi depunerea lor într-un alt tabel conform cu
anumite criterii de selecţie. Tabelul rezultat (numit uneori şi tabel virtual)
există doar pe baza datelor stocate în alte tabele. O interogare Access:
 Selectează doar informaţiilor necesare, afişând doar anumite câmpuri
dintr-un tabel.
 Asigură aplicarea unor funcţii şi expresii calculate asupra câmpurilor
(câmpuri calculate).
 Poate fi actualizată (în vizualizarea Design).

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     23 


Editarea si consultarea tabelelor

Interogările pot fi de mai multe tipuri (de selecţie, încrucişate, de acţiune,


cu parametru). În continuare se va trata cel mai simplu şi mai utilizat tip de
interogare: interogarea de selecţie.

Pentru exemplificări se va folosi tabelul anterior (Notebook), cu un câmp


adăugat (Cantitate) de tip Number:

Crearea unei interogări

Având tabelul deschis în vizualizarea Datasheet, din tab-


ul Create, secţiunea Other se acţionează butonul Query Design:

Tabelul Notebook este inclus (Add) în interogare:

Tab-ul Design este afişat pentru definirea interogării:

Pe linia Field se includ, pe rând, câmpurile tabelului de date - prin


acţionarea butonului . Pentru a crea un câmp calculat se poate scrie direct

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     24 


Editarea si consultarea tabelelor

relaţia de calcul, de exemplu, Pret*Cantitate. Acestui câmp i se atribuie,


de către Access, o denumire proprie (aici Expr1). Relaţia de calcul apare sub
forma Expr1:[Pret]*[Cantitate] deşi parantezele pătrate nu au fost
tastate (în concluzie se poate face o scriere matematică, simplă, sau aşa cum
apare în sintaxă Acces):

Denumirea câmpului nou creat se va schimba, din Expr1 în Valoare,


iar formatul lui se va fixa, în Property Sheet, la valoarea Standard sau
Currency (dacă nu apare Property Sheet se acţionează butonul
din tab-ul Design grupul Show/Hide).

 Pentru construirea unor expresii de calcul mai complexe se poate


utiliza resursa Expression Builder (clic dreapta pe câmpul calculat, Build):

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     25 


Editarea si consultarea tabelelor

Rularea unei interogări

Cu butonul , tab-ul Design interogarea este afişată în vizualizarea


Datasheet:

Crearea unui tabel nou, prin interogare

Rezultatul unei interogări poate fi salvat ca tabel de date cu ajutorul


butonului Make Table din tab-ul Design:

Prin acţionarea butonului destinaţia interogării a fost schimbată,


astfel că rezultatul interogării este stocat ca tabel de date. Acest tabel de date
va fi creat efectiv doar la rularea interogării.

 Crearea unui nou tabel de date, ca rezultat al unei interogări, este

realizată de butoanele și .

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     26 


Editarea si consultarea tabelelor

1. Să se creeze tabelul de date cu numele Produse (Denumire şi UM de


tip Text, Pret de tip Currency, Cantitate de tip Number, Single):

2. Să se ordoneze tabelul în ordinea descrescătoare a preţurilor.


3. Să se revină la sortarea după ID.
4. Să se filtreze tabelul în scopul afişării produselor având preţurile
cuprinse între valorile 10 şi 25.
5. Să se anuleze filtrarea anterioară.
6. Să se editeze o interogare care să afişeze încă două coloane:
Valoare (Pret*Cantitate) şi TVA (Pret*Cantitate*0,19)
precum şi totalurile pe Valoare şi TVA (butonul ). Formatul de
afişare (Currency) se va fixa în ferestra Property Sheet:

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     27 


Editarea si consultarea tabelelor

7. Să se salveze interogarea ca tabel de date cu numele Factura.

se acţionează succesiv butoanele și .

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     28 


Uniuni de tabele

Unitatea de învăţare Nr. 3 și 4


Uniuni de tabele
Cuprins Pagina
Obiectivele Unităţii de învăţare Nr. 3 și 4 30
3.1. Tabel liber, tabel asociat 30
3.2. Chei primare, chei de legătură 30
3.3. Tabel primar, tabel relaţionat 30
3.4. Păstrarea integrităţii referenţiale 33
Lucrare de verificare Unitate de învăţare Nr. 3 și 4 34

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     29 


Uniuni de tabele

Fiecare tabel Acces poate exista în una din următoarele două stări: ca
tabel liber, neasociat cu alte tabele de date, sau ca tabel asociat, aflat în relaţii
cu alte tabele ale bazei de date. Tabelele asociate au unele proprietăţi
specifice, cum ar fi regulile la nivel de câmp şi de înregistrare şi relaţiile
permanente.

Un câmp comun, este un câmp care există în două sau mai multe tabele,
permiţând realizarea unei corespondenţe între înregistrările dintr-un tabel şi
înregistrările din alte tabele.

Un tabel asociat poate să conţină una sau mai multe chei primare. O
cheie primară (Primary Key) este un câmp folosit pentru a identifica unic
înregistrările tabelului de date. Cu alte cuvinte, în cadrul unui tabel, valoarea
unei chei primare nu poate fi duplicată pe parcursul înregistrărilor. De exemplu
o cheie primară ar putea fi un cod numeric personal, o adresă de e-mail sau un
alt identificator unic (numele de persoane nu sunt alese, de obicei, drept chei
primare, deoarece duplicarea este cât se poate de posibilă).

În afara cheilor primare, cheile de legătură (Foreign Keys), care nu


trebuie să fie unice, sunt folosite pentru a stabili relaţii între tabelele de date.
De exemplu, unui tabel (Clenti) i se poate asocia o cheie primară Codc. Pentru
un tabel (Comenzi) se poate defini tot o cheie Codc, cu rolul de cheie de
legătură, deoarece un client poate plasa mai multe comenzi. Între cele două
tabele se stabileşte o relaţie unu la mai multe (one to many). Într-o relaţie de
acest tip, tabelul „one" este numit tabel primar (Primary Table sau
Parent Table), iar tabelul „many" este numit tabel relaţionat (Related
Table sau Child Table).

Definirea unei uniuni de tabele are ca scop afişarea unui tabel virtual şi
este necesar ca:
 să fie iniţiată o interogare (cu butonul Query Design din tab-ul
Create;
 să fie incluse în interogare tabelele reale ale bazei de date;

 să fie rulată interogarea (  ).

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     30 


Uniuni de tabele

↓ Exemplu_________________________________________________________________________________
 Se creează o bază de date cu numele Furnizor care include trei tabele
de date:
 Tabelul Clienti – Primary Table (Codc, cheie primară,
format cu majuscule, Text, Field Size: 4):

 Tabelul Produse – Primary Table (Codp, cheie primară,


format cu majuscule, Text, Field Size: 5):

 Tabelul Comenzi (Related Table):

 Se creează o interogare (tab-ul Create, butonul Query Design). Se


includ în interogare toate cele trei tabele (clic pe butonul Add, pentru
fiecare tabel şi apoi Close):

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     31 


Uniuni de tabele

 Se selectează câmpurile care vor apare în Query, interogarea


salvându-se sub numele Livrari:

 La rularea interogării ( din tab-ul Design) se obţine următorul


tabel:

_________________________________________________________________________________Exemplu ↑

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     32 


Uniuni de tabele

Păstrarea integrităţii referenţiale

Relaţiile dintre tabele trebuie să respecte standardele integrităţii


referenţiale, un set de reguli care controlează modul în care se pot şterge sau
modifica datele în tabele relaţionate. Integritatea referenţială asigură protecţie
împotriva modificării eronate a datelor, într-un tabel primar necesar unui tabel
relaţionat.

Se poate aplica integritatea referenţială dacă sunt respectate următoarele


condiţii:
 Câmpul comun este cheia primară a tabelului primar.
 Câmpurile relaţionate au acelaşi format.
 Ambele tabele aparţin aceleiaşi baze de date.

Integritatea referenţială impune anumite limitări:


 Înainte de adăugarea unei înregistrări într-un tabel relaţionat, în tabelul
primar trebuie să existe deja o înregistrare corespondentă.
 Valoarea cheii primare din tabelul primar nu poate fi modificată dacă
există înregistrări corespondente într-un tabel relaţionat.

O înregistrare din tabelul primar nu poate fi ştearsă dacă există


înregistrări corespondente într-un tabel relaţionat. Programul Access poate să
impună aceste reguli prin transmiterea în cascadă a modificărilor între tabelele
relaţionate. De exemplu, Access poate să copieze automat orice modificare a
câmpului comun în toate tabelele relaţionate. În mod similar, dacă o
înregistrare este ştearsă în tabelul primar, programul poate să şteargă, în mod
automat, înregistrările relaţionate din toate celelalte tabele.

↓ Exemplu_________________________________________________________________________________
 În tab-ul Database Tools clic pe butonul Relationships.
 Se includ toate cele trei tabele şi se stabilesc relaţiile dintre ele (se
trage, cu mouse-ul, cheia Codc din tabelul Clienti peste Codc din
Comenzi şi Codp din Produse peste Codp din Comenzi):

 Dublu clic pe legăturile realizate, pentru a activa fereastra Edit


Relationships:

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     33 


Uniuni de tabele

 Integritatea referenţială va fi impusă prin clic pe caseta de validare


Enforce Referential Integrity.
 Pentru ca modificările la câmpul primar al tabelului primar să fie
copiate automat în câmpul relaţionat al tabelului relaţionat, clic pe
caseta de validare Cascade Update Related Fields.
 pentru ca Access să şteargă înregistrările din tabelele relaţionate,
ori de câte ori sunt şterse înregistrări din tabelul primar, clic pe
caseta de validare Cascade Delete Related Fields.
_________________________________________________________________________________Exemplu ↑

1. Să se creeze baza de date cu numele Catalog care să conţină trei


tabele de date:
a. Tabelul Studenti (Matricola - cheie primară, Nume, Grupa –
format de scriere cu majuscule):

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     34 


Uniuni de tabele

b. Tabelul Materia (Cod - cheie primară, Materia, Cod – format de


scriere cu majuscule):

c. Tabelul Note (Cod – format de scriere cu majuscule):

2. Să se creeze o interogare pentru afişarea catalogului de note (se vor


selecta doar câmpurile Nume, Grupa, Nota, Materia).

3. Să se ruleze interogarea pentru afişarea notelor în ordinea alfabetică a


numelor studenţilor:

4. Să se ruleze interogarea pentru afişarea notelor studenţilor din grupa


FB01:

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     35 


Formulare (Forms)

Unitatea de învăţare Nr. 5


Formulare (Forms)
Cuprins Pagina
Obiectivele Unităţii de învăţare Nr. 5 37
5.1. Afişarea paginată 37
5.2. Afişarea combinată 41
5.3. Afişarea tabelară 41
5.4. Șabloane 42
Lucrare de verificare Unitate de învăţare Nr. 5 42

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     36 


Formulare (Forms)

Formularele Access (Forms) reprezintă, în primul rând, o modalitate de


introducere a datelor mai prietenoasă decât clasicul mod de lucru de tip grilă,
cu rânduri şi coloane, din modul de vizualizare Datasheet.

Un formular include controale, asociate sau neasociate câmpurilor (din


unul sau mai multe tabele sau interogări) ce permit definirea unei interfeţe
grafice cu utilizatorul: etichete (Label), casete de text (Text Box), butoane
(Button), liste (Combo Box sau List Box), butoane radio (Option Button),
casete de validare (Check Box), imagini (Logo), Grafice (Chart), etc. Acestor
controale li se pot asocia secvenţe de cod (instrucţiuni Visual Basic).

Crearea unui formular este iniţiată din tab-ul Create, grupul Forms:

 Form : formular ce permite o afişare paginată (o singură


înregistrare/pagină) - pentru parcurgerea înregistrărilor pot fi
utilizate butoanele din linia de navigare;
 Split Form : realizează afişarea combinată (Form şi DataSheet);
 Multiple  Items : afişarea este tabelară (mai multe
rânduri/pagină);
 More Forms : formulare de tip Wizard;
 Form Design : formular personalizat.

  Cu primul buton din grupul Forms se crează un formular pe care se


afişează, succesiv, câte o linie a tabelului (aici Notebook).

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     37 


Formulare (Forms)

Vizualizarea iniţială este Layout:

Rularea formularului, pentru parcurgerea şi actualizarea datelor din tabel,


impune comutarea în Form View:

Design View este vizualizarea consacrată editării formularelor, fiecare


element din acesta (numele unui câmp, valoarea unui câmp, titlul formularului)
fiind identificat ca un control. Access împarte formularul în secţiuni (Form
Header, Detail, Form Footer) şi introduce controale specifice. Secţiunile
(benzile) formularului pot fi dimensionate pe înălţime (cu mouse-ul).

↓ Exemplu_________________________________________________________________________________

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     38 


Formulare (Forms)

Se identifică următoarele controale:


 desen, imagine (Logo) – primul control din Form Header;
 eticheta (Label) Notebook din banda Form Header – denumirea
formularului;
 casetele de text (TextBox-uri) ID, Denumire, Pret,
Cantitate care preiau valori din tabel (în Detail) – prefixate de
etichete cu acelaşi nume.
_________________________________________________________________________________Exemplu ↑

Se pot crea controale proprii, în afara celor introduse de sistem. Pentru


aceasta se execută clic pe icon-ul controlului din grupul Controls şi se trasează
zona dreptunghiulară din formular unde se doreşte să apară. Fiecare control,
indiferent că a fost introdus de Access sau de utilizator, are caracteristici
(proprietăţi) specifice ce se pot modifica din fereastra Property Sheet (butonul
corespunzător este situat în secţiunea Tools).
Casetă de text  Buton

Imagine  Etichetă  Linie 

Pentru editarea formularelor este necesară efectuarea unor operaţii


specifice cum ar fi:
 mutarea şi dimensionarea controalelor;
 modificarea proprietăţilor controalelor (din Property Sheet);
 modificarea aspectului controalelor prin chenare, umbriri şi efecte de
text (Bold, Italic);
 introducerea de controale noi.

Controalele incluse pe formulare sunt de trei tipuri: controale asociate,


controale neasociate şi controale calculate.
 Controalele asociate (Bound Controls) sunt câmpurile de date
dintr-un tabel sau dintr-o interogare. Un formular trebuie să conţină
un control asociat pentru fiecare câmp dorit să apară în formular. Nu
se poate introduce un calcul într-un control asociat.
 Controalele neasociate (Unbound Controls) sunt controalele care
conţin o etichetă şi o casetă de text. În mod obişnuit, se utilizează
controale neasociate pentru a identifica alte controale sau zone din
formular. Se pot introduce calcule într-un control neasociat.

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     39 


Formulare (Forms)

 Controalele calculate (Calculated Controls) sunt toate valorile


calculate din formular, adică totaluri, subtotaluri, medii, procente, etc.

↓ Exemplu_________________________________________________________________________________
 se introduce pe formular un Text Box (control neasociat) – banda
Detail a fost dimensionată pe verticală cu mouse-ul:

 se modifică proprietatea Caption a etichetei care prefixează caseta


de text: din Text10: în TVA:
 în Text Box (Unbound) se scrie relaţia de calcul a TVA-ului:
=Pret*0,19 (! în sintaxă Access va apare: =[Pret]*0,19 –
denumirile de câmpuri sunt puse între paranteze pătrate)
 la rularea formularului (Form View) se va afişa şi valoarea TVA:

_________________________________________________________________________________Exemplu ↑

În afară de formularul (standard) prezentat anterior se pot concepe şi


altele, funcţie de modalitatea de vizualizare a înregistrărilor din tabel: afişare

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     40 


Formulare (Forms)

combinată, tabelară sau conform unor şabloane ( Wizard).

↓ Exemple_________________________________________________________________________________

 Afişarea combinată

 Afişarea tabelară

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     41 


Formulare (Forms)

Şabloane

 clic pe săgeata din partea dreaptă a butonului;


 în Form Wizard se selectează câmpurile;
 clic pe butonul Next;
 se selectează Justified dintre cele patru opţiuni propuse: Columnar,
Tabular, Datasheet, Justified;
 What style would you like : Office (fereastra Form Wizard);
 clic pe butonul Finish;
_________________________________________________________________________________Exemple ↑

1. Să se creeze un tabel de date (Denumire şi UM sunt de tip Text, Pret şi


Cantitate sunt de tip Number, proprietatea Format a câmpului Pret
se fixează la opţiunea Euro):

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     42 


Formulare (Forms)

2. Să se creeze un formular pentru actualizarea paginată a valorilor din


tabel. Pe acest formular se vor introduce două casete de text
(proprietatea Format: Euro) în care se vor calcula valoarea
(=Pret*Cantitate) şi TVA-ul (=Pret*Cantitate*0,19):

3. Să se selecteze un formular de tip şablon care să permită actualizarea


datelor din tabel în următoarea vizualizare:


 clic pe săgeata din partea dreaptă a butonului ;
 în Form Wizard se selectează câmpurile;

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     43 


Formulare (Forms)

 clic pe butonul Next;


 se selectează Justified dintre cele patru opţiuni propuse: Columnar,
Tabular, Datasheet, Justified;
 What style would you like : Office (fereastra Form Wizard);
 clic pe butonul Finish;
se introduc Text Box-urile necesare calculului valorii şi a TVA-ului (la fel ca la
punctul anterior).

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     44 


Listarea si exportarea datelor

Unitatea de învăţare Nr. 6 și 7


Listarea si exportarea datelor
Cuprins Pagina
Obiectivele Unităţii de învăţare Nr. 6 și 7 46
6.1. Rapoarte (Reports) 46
6.2. Exportarea datelor 51
Lucrare de verificare Unitate de învăţare Nr. 6 și 7 53

________________________________________________________________________________
Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor 45 
Listarea si exportarea datelor

Rapoarte (Reports)

Raportul reprezintă un set de informaţii constituite pe baza datelor


stocate în tabele, el este listat la imprimantă sau este afişat pe display-ul
calculatorului. Editarea unui raport este legată de controalele (Controls)
introduse de Access sau de către utilizator. Aceste controale au proprietăţi
stabilite dintr-o fereastră dedicată (Property Sheet).

Cea mai simplă modalitate de a lista un tabel de date este cea clasică:
clic pe butonul Office şi Print:

Butonul Office 

↓ Exemplu_________________________________________________________________________________
Un tabel (aici Notebook) va apare listat sub forma următoare (a se
observa că apare numele tabelului şi data listării):

_________________________________________________________________________________Exemplu ↑

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     46 


Listarea si exportarea datelor

Pentru a iniţia crearea unui raport se face


apel la instrumentele (butoanele) din secţiunea
Reports a tab-ului Create. Butonul oferă un
raport standard, pornind de la datele stocate în
tabele sau interogări. Pentru un raport mai
complex care să includă calcule, imagini grafice,
un antet sau un subsol de pagină personalizat, trebuie utilizate resursele
dedicate ale programului Access. Se poate crea un raport pe baza unor

şabloane -   sau un raport personalizat - .

Dacă sursa de date o constituie un tabel de date (aici, tabelul Notebook)


se utilizează, de obicei, primul buton din grupul de butoane Reports.
Datele stocate în tabel vor fi, astfel, afişate în vizualizarea Layout
(butonul View din tab-ul Home este consacrat selectării formei de vizualizare):

Editarea conţinutului raportului implică comutarea în vizualizarea Design


(Design View) în care fiecare element dintr-un raport, cum ar fi numele unui
câmp, valoarea unui câmp şi titlul raportului, este identificat ca fiind un control.
Access împarte raportul în secţiuni. Aceste secţiuni sunt componente
individuale care controlează ce elemente apar şi modul în care sunt formatate:

Secţiune  Descriere 
Report Header (Antet  Textul  care  apare  în  partea  de  sus  a  primei  pagini  a  unui  raport, 
de raport)  cum ar fi un titlu, o siglă de firmă sau o introducere. 
Page Header   Textul care apare  în partea de sus a  fiecărei pagini a unui raport, 
(Antet de pagină)  cum ar fi numerele de pagină sau data raportului. 
Group Header   Textul care apare înainte de fiecare grup de înregistrări, cum ar fi 
(Antet de grup)  un nume de furnizor. 
Detail  Conţine  partea  principală  a  raportului,  câmpurile  care  afişează 

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     47 


Listarea si exportarea datelor

(Secţiune de detalii) valori. 
Group Footer  Textul  care  apare  la  sfârşitul  unui  grup  de  înregistrări,  cum  ar  fi 
(Subsol de grup)  totalurile. 
Page Footer  Textul care apare în partea de jos a fiecărei pagini a unui raport, 
(Subsol de pagină)  cum ar fi numerele de pagină sau explicaţiile simbolurilor.  
Report Footer  Textul  care  apare  la  sfârşitul  raportului,  cum  ar  fi  totalurile 
(Subsol de raport)  raportului sau alte informaţii rezumative. 

↓ Exemplu_________________________________________________________________________________
Secţiunile raportului Notebook:

Au fost introduse în raport (de către editorul Access) două tipuri de controale:
1. Controale legate de datele din tabel:
 eticheta (Label) Notebook din banda Report Header – denumirea
raportului;
 etichetele ID, Denumire, Pret, Cantitate (din Page Header) cu
ajutorul cărora se constituie capul de tabel;
 casetele de text (Text Box-uri) ID, Denumire, Pret, Cantitate care
preiau valori din tabel (în Detail).
2. Controale suplimentare, nelegate direct de datele stocate în tabel:
 desen, imagine (Logo) – primul control din Report Header;
 casete de text pentru afişarea datei şi orei curente (conţinut: =Date(),
=Time()) - în Report Header;
 un Text Box, pentru afişarea numărului de pagină (conţinut: ="Page " &
[Page] & " of " & [Pages]) – în Page Footer);
 un Text Box pentru afişarea numărului de linii din tabel, în Report
Footer.
_________________________________________________________________________________Exemplu ↑

Se poate face o legătură între controalele incluse în benzile raportului şi


efectul lor, la vizualizarea raportului (Report View).

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     48 


Listarea si exportarea datelor

↓ Exemplu_________________________________________________________________________________

_________________________________________________________________________________Exemplu ↑

 Benzile raportului pot fi ajustate pe verticală (cu mouse-ul) iar


controalele introduse în benzile raportului sunt editabile, au proprietăţi
care pot fi modificate de programator din fereastra Property Sheet
(afişarea acesteia este determinată de acţionarea butonului
corespunzător din secţiunea Tools a tab-ului Design):

Pentru a crea un control propriu – control utilizator (în Design View), se


execută clic pe icon-ul controlului din secţiunea Controls (tab-ul Design) şi se
trasează zona dreptunghiulară unde se doreşte să apară acesta (în raport).

Casetă de text 

Imagine 

Etichetă  Linie 

La fel ca şi controalele plasate de către Access, controalele utilizator pot fi


mutate şi dimensionate, au proprietăţi care pot fi schimbate (în Property
Sheet) – printre acestea o proprietate esenţială este Name, pentru
identificarea lor. Este important de reţinut că, în rapoarte, se pot desfăşura
calcule complexe (relaţiile de calcul sunt scrise în Text Box-uri).

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     49 


Listarea si exportarea datelor

 Casetele de text sunt, întotdeauna, prefixate de o etichetă care se


poate edita sau se poate înlătura (şterge).

↓ Exemplu_________________________________________________________________________________
Pe raportul anterior se pot modifica caracteristicile controalelor existente
sau se pot crea controale proprii:
 pentru eticheta asociată denumirii raportului se schimbă:
 textul afişat - proprietatea Caption: Calculatoare Laptop
 proprietatea Fore Color: Red (roşu)
 în Page Header se mai introduc două etichete: Valoare şi TVA
(textul aliniat la dreapta – proprietatea Text Align: Right)
 în banda Detail se creează două Text Box-uri, pentru calculul valorii
produsului şi a TVA-ului (proprietatea Format a acestora se fixează la
valoarea Currency, ca de altfel şi pentru caseta de text Pret, deja
existentă):
=Pret*Cantitate
=Pret*Cantitate*0,19
!
în sintaxă Access va apare : =[Pret]*[Cantitate] respectiv
=[Pret]*[Cantitate]*0,19 – denumirile de câmpuri sunt puse
între paranteze pătrate
 se şterge, din Report Footer, Text Box-ul în care se afişează
numărul de linii ale tabelului (=Count(*))
 în Report Footer se fac totalurile pe Valoare şi TVA, cu ajutorul a
două casete de text (Format : Currency):
=Sum(Pret*Cantitate)
=Sum(Pret*Cantitate*0,19)
!
în sintaxă Access va apare : =Sum([Pret]*[Cantitate])
respectiv =Sum([Pret]*[Cantitate]*0,19)
 se trasează o linie la începutul ultimei benzi (Report Footer)

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     50 


Listarea si exportarea datelor

Vechile şi noile controale apar vor apare în raport :

Raportul se va prezenta în următoarea formă imprimabilă (Report View):

_________________________________________________________________________________Exemplu ↑

Exportarea datelor

Tabele de date create în Access pot fi utilizate în alte programe Microsoft


Office (Excel, Word). Valorile stocate în aceste tabele pot fi prelucrate, pot fi
introduse în relaţii de calcul (chiar şi în Word.). De asemenea se pot importa
tabele create în foile de calcul tabelar. Tab-ul dedicat al Access-ului, pentru
efectuarea acestor operaţiuni, este External Data:
Importare din Excel  Exportare în Word

Exportare în Excel 

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     51 


Listarea si exportarea datelor

↓ Exemple_________________________________________________________________________________
 Exportarea tabelului Notebook în Word.

Access 

După precizarea folder-ului unde se stoca fişierul Word rezultat,


acesta poate fi editat (în Word) astfel:
 se adaugă o linie la sfârşitul tabelului.
 se plasează cursorul în această linie pe coloana preţurilor – în celula
C8, identificarea celulelor făcându-se la fel ca în Excel.
 clic pe butonul , din tab-ul Layout:

Word 

 se introduce o relaţie de calcul (din fereastra, Formula) pentru a


determina un preţ mediu (aici AVERAGE(C2:C7)):

Word 

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     52 


Listarea si exportarea datelor

 Preluarea tabelului Notebook în Excel.


Tabelul poate fi exportat din Access spre Excel într-o modalitate
asemănătoare exportării în Word.
Într-un Sheet al unui document Excel se poate importa tabelul Notebook
prin acţionarea butonului From Acces din tab-ul Get External Data - este
necesară, în acest caz, precizarea folder-ului ce conţine baza de date:

Excel 

_________________________________________________________________________________Exemple ↑

1. Să se creeze tabelul de date Mfix (Valinv: valoare de inventar,


Valamor: valoare de amortizare):

2. Să se creeze pe baza tabelului Mfix următorul raport:

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     53 


Listarea si exportarea datelor


 textul etichetei Mfix se schimbă în Situaţia mijloacelor fixe
 eticheta Diferenta (din Page Header) este aliniată la dreapta (Text Align:
Right)
 caseta de text (din Detail) pentru calculul diferenţei are conţinutul
=Valamor-Valinv (Format: Currency)
 calculul totalurilor este realizat în banda Report Footer, pe trei Text
Box-uri:
=Sum(Valinv)
=Sum(Valamor)
=Sum(Valamor-Valinv)
3. Să se exporte tabelul în Word (aici se vor calcula şi sumele valorilor de
inventar şi de amortizare):


 se salvează fişierul Word
 în Word se adaugă o linie la sfârşitul tabelului
 se introduc relaţiile de calcul (=Sum(B2:B6) şi =Sum(C2:C6)) după
acţionarea butonului , din tab-ul Layout

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     54 


Crearea şi actualizarea tabelelor (SQL)

Unitatea de învăţare Nr. 8 și 9


Crearea şi actualizarea tabelelor (SQL)
Cuprins Pagina
Obiectivele Unităţii de învăţare Nr. 8 și 9 55
8.1. Crearea şi rularea unui script SQL 56
8.2. Tipuri de date 57
8.2.1. Tipul de date șir 57
8.2.2. Tipul de date numeric 58
8.2.3. Tipul de date dată/oră 58
8.2.4. Tipul de date binar 59
8.3. Sintaxa instrucţiunilor SQL 59
8.3.1. Formatarea instrucţiunilor 60
8.3.2. Descrierea sintaxei instrucţiunilor 60
8.4. Crearea unui tabel 60
8.5. Crearea unui index (indice) 62
8.6. Inserarea rândurilor într-un tabel 62
8.7. Modificarea structurii tabelelor 63
8.8. Actualizarea conţinutului tabelelor 64
8.9. Afișarea conţinutului unui tabel 65
8.10. Copierea tabelelor 66
8.11. Ștergerea rândurilor 67
8.12. Ștergerea tabelelor 67
Lucrare de verificare Unitate de învăţare Nr. 8 și 9 68

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    55 


Crearea şi actualizarea tabelelor (SQL)

Crearea şi rularea unui script SQL

În mediul de editare Microsoft Acces, pentru introducerea textului unei


instrucţiuni SQL, care este un obiect Query, este necesar a fi parcurşi
următorii paşi:
 În Tab-ul Create clic (cu mouse-ul) pe
butonul Query Design:

 Se închide fereastra Show Table care apare, iar din tab-ul Design se
selecţionează butonul SQL View. Textul instrucţiunii se editează în
vizualizarea SQL pe locul cuvântului Select (instrucţiunea cea mai
des utilizată în SQL):

 Rularea se face cu ajutorul butonului


 Este recomandabil a se utiliza butonul drept al mouse-ului
pentru afişarea unor meniuri contextuale, relativ la obiectele
vizate (Table sau Query). În partea stângă a ecranului
(Navigation Pane) se poate vedea lista cu numele obiectelor, ele
putând fi afişate (View). Tabelele pot fi prezentate în
vizualizările Design View sau Datasheet View. Pentru scripturile

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    56 


Crearea şi actualizarea tabelelor (SQL)

SQL vizualizarea curentă este SQL View.


 Vizualizările pot fi închise (clic dreapta pe vizualizare şi Close)
iar obiectele din Navigation Pane pot fi eliminate din baza de
date (clic dreapta pe obiect şi Delete).

Tipuri de date

Tipurile de date reprezintă, în esenţă, reguli care definesc datele ce pot fi


stocate într-o coloană şi modul efectiv de stocare a acestora.

Specificarea tipului de date se face din mai multe motive:


 Permite limitarea tipului datelor care pot fi stocate într-o coloană. De
exemplu, o coloană de un tip de date numeric va accepta numai valori
numerice.
 Tipurile de date permit o stocare internă mai eficientă. Valorile numerice
şi cele de tip dată/oră pot fi stocate într-un format mai condensat decât
şirurile de text.
 Tipurile de date permit ordini de stocare diferite (sortări). Şirurile pot fi
sortate alfabetic în ordinea dicţionarului, caracter cu caracter, pornind de
la stânga.

 Tipul de date şir

Cele mai comune tipuri de date folosite sunt cele din categoria şir.
Acestea stochează şiruri, ca de exemplu nume, adrese, numere de telefon şi
coduri poştale. În esenţă, există două categorii de tipuri de date care se pot
utiliza: şiruri de lungime fixă şi şiruri de lungime variabilă.

Şirurile de lungime fixă sunt tipuri de date care se definesc astfel încât să
accepte un număr fixat de caractere, număr care este specificat la crearea
tabelului. Şirurile de lungime variabilă stochează text (e de luat în considerare
lungimea maximă, de obicei 255). Sortarea şi manipularea coloanelor de
lungime fixă, se realizează mai rapid decât în cazul coloanelor de lungime
variabilă.


 Indiferent de forma tipului de date şir folosit, valorile de tip şir
trebuie să fie întotdeauna delimitate între apostroafe.
 S-ar putea crede că numerele de telefon şi codurile poştale

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    57 


Crearea şi actualizarea tabelelor (SQL)

trebuie stocate numai în câmpuri numerice (la urma urmelor,


stochează date de natură numerică), dar acest procedeu nu este
recomandat. De exemplu, dacă se stochează prefixul telefonic
0722 într-un câmp numeric, se va salva numărul 722. Astfel, se
pierde o cifră. Regula de bază care trebuie respectată este
următoarea: dacă numărul este folosit în calcule (sume, medii
etc.) atunci va fi plasat pe o coloană de tip numeric. Dacă este
folosit ca şir literal (care se întâmplă să conţină numai cifre)
trebuie inserat într-o coloană cu un tip de date şir.

 Tipul de date numeric

Tipurile de date numerice stochează numere. Sunt acceptate mai multe


tipuri de date numerice, fiecare cu un alt domeniu de numere care pot fi
stocate. Evident, cu cât domeniul acceptat este mai mare, cu atât spaţiul de
stocare necesar creşte.


 Spre deosebire de şiruri, valorile numerice nu trebuie niciodată
introduse între apostroafe.
 Majoritatea programelor de tip SGBD acceptă un tip de date
numeric special, pentru stocarea valorilor monetare. Denumite
de obicei MONEY sau CURRENCY, aceste tipuri de date constituie,
în esenţă, tipuri DECIMAL, cu intervale bine determinate, care le
recomandă pentru stocarea valorilor de tip monetar.

 Tipul de date dată/oră

Aceste tipuri de date sunt, fiecare, cu propriile sale intervale şi nivele de


precizie.


 Valorile de tip dată trebuie să fie întotdeauna delimitate între
două caractere # (exemplu: #13/01/1990#)

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    58 


Crearea şi actualizarea tabelelor (SQL)

 Nu există o modalitate standard de definire a unei date,


majoritatea implementărilor SQL recunosc formate precum
30/12/2004 sau 30 Dec 2004.

 Tipul de date binar

Tipurile de date binare sunt printre cele mai puţin compatibile, între
diverse implementări SQL (şi, din fericire, printre cele mai puţin folosite)
categorii de date. Spre deosebire de toate tipurile de date explicate anterior,
care au utilizări foarte bine determinate, tipurile de date binare pot conţine
orice fel de date, chiar şi informaţii binare, precum imagini grafice, multimedia
şi documente create cu programe de prelucrare a textelor.

Din păcate, tipurile de date pot varia în mod semnificativ de la un SGBD


la altul. Faţă de varianta standard (ANSI SQL), Access SQL are anumite
particularităţi care se pot deduce din tabelul următor:
ANSI SQL  Microsoft Access SQL  În alte limbaje 
- BIT BOOLEAN,LOGICAL,YES/NO
- TINYINT BYTE
- COUNTER AUTOINCREMENT
- MONEY CURRENCY
DATE,TIME, DATETIME DATE, TIME
TIMESTAMP
DECIMAL DECIMAL NUMERIC,DEC
REAL REAL SINGLE,FLOAT
DOUBLE FLOAT DOUBLE,FLOAT
PRECISION,
FLOAT
SMALLINT SMALLINT SHORT
INTEGER INTEGER LONG, INT
- TEXT MEMO,NOTE,NTEXT
CHARACTER CHAR CHARACTER,STRING,TEXT
ALPHANUMERIC
- IMAGE OLEOBJECT
BIT, BIT VARYING BINARY VARBINARY

Sintaxa instrucţiunilor SQL

Instrucţiunile SQL sunt alcătuite din termeni simpli, în limba engleză.


Aceşti termeni se numesc cuvinte cheie, fiecare instrucţiune SQL fiind alcătuită
din unul sau mai multe cuvinte cheie. Un cuvânt cheie este un cuvânt rezervat,
care face parte din limbajul SQL şi este folosit exclusiv pentru descrierea
instrucţiunilor (nu se denumeşte niciodată un tabel sau o coloană folosind un
cuvânt cheie, de exemplu).

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    59 


Crearea şi actualizarea tabelelor (SQL)

 Formatarea instrucţiunilor

Fiecare instrucţiune începe cu un nume, urmat de alte cuvinte numite


clauze şi cuvinte utilizator. Numele instrucţiunilor şi clauzele sunt cuvinte cheie
(rezervate).

Utilizarea spaţiilor. Toate spaţiile, incluse într-o instrucţiune SQL, vor fi


ignorate la prelucrarea instrucţiunii respective. Instrucţiunile SQL pot fi
specificate într-o singură linie sau pot fi divizate pe mai multe linii. Divizarea
instrucţiunilor pe mai multe linii le face mai simplu de citit şi depanat.
Terminarea instrucţiunilor. Instrucţiunile SQL pot fi finalizate prin punct şi
virgulă (;). Majoritatea programelor SGBD nu impun folosirea obligatorie a
acestui caracter.
Litere majuscule/minuscule. Este important de reţinut că instrucţiunile SQL
nu fac diferenţa între majuscule (litere mari) si minuscule (literelor mici). Prin
convenţie, pentru o mai bună explicitare a instrucţiunilor editate, majusculele
sunt utilizate pentru toate cuvintele cheie SQL iar minusculele pentru numele
coloanelor şi a tabelelor.

 Descrierea sintaxei instrucţiunilor

În descrierea generală a unei instrucţiuni SQL se utilizează următoarele


simboluri:
 Simbolul │ este folosit pentru a indica mai multe opţiuni posibile (de
exemplu NULL│NOT NULL indică o alternativă).
 Cuvintele sau clauzele incluse între [] (paranteze drepte) sunt opţionale.

Crearea unui tabel

În general, există două modalităţi de creare a tabelelor dintr-o bază de


date:
Majoritatea programelor SGBD (din această categorie face parte şi
Microsoft Acces) sunt prevăzute cu un instrument de administrare,
care poate fi utilizat la crearea şi gestionarea interactivă a tabelelor
din bazele de date.
Tabelele mai pot fi, de asemenea, manipulate în mod direct cu
ajutorul instrucţiunilor SQL.

Pentru a crea tabelele prin metode programatice, se utilizează


instrucţiunea SQL CREATE TABLE. Atunci când se folosesc instrumente
interactive, aceste sunt traduse, în realitate, în instrucţiuni SQL. Interfaţa
grafică a programelor SGBD generează şi execută în mod uniform, liniile de
program SQL.

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    60 


Crearea şi actualizarea tabelelor (SQL)

Sintaxa:
CREATE TABLE nume
(
coloana tip [(lungime)] [NULL│NOT NULL] [PRIMARY KEY],
coloana tip [(lungime)] [NULL│NOT NULL],[PRIMARY KEY],

)

nume Numele tabelului care va fi creat.


coloana Numele câmpului. Trebuie creat cel puţin un câmp.
tip Tipul datei din coloană.
lungime Lungimea câmpului (în caractere).
NULL│NOT NULL Dacă este specificat NOT NULL, pentru un câmp, va fi
obligatorie introduce unei valori.
PRIMARY KEY Cheie primară.

Numele noului tabel este plasat după cuvintele cheie CREATE


TABLE. Numele şi definiţiile coloanelor din tabel sunt separate prin virgule şi
grupate între paranteze. Valorile de tip NULL reprezintă non-valori sau lipsa
unei valori. O coloană care acceptă valori NULL permite şi inserarea de rânduri
care nu conţin nici o valoare în coloana respectivă. Fiecare coloană a unui tabel
este de tip NULL sau NOT NULL, iar această stare este specificată în definiţia
tabelului, la creare.

Cheile primare sunt coloane ale căror valori identifică în mod unic fiecare
rând dintr-un tabel. Numai coloanele care nu acceptă valori NULL pot fi
utilizate drept chei primare. Coloanele care permit utilizarea non-valorilor nu
pot fi utilizate ca identificatori unici.

↓  Exemplu__________________________________________________________________________
Crearea unui tabel cu numele Personal:
CREATE TABLE Personal
(
Nume TEXT,
Marca CHAR(4) NOT NULL PRIMARY KEY,
Functia TEXT,
Salariu MONEY,
Datanast DATETIME,
Sex BIT
)

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    61 


Crearea şi actualizarea tabelelor (SQL)

În Access structura tabelului (Design View) tabelul va fi afişată astfel:

_________________________________________________________________________________Exemplu ↑

Crearea unui index (indice)

Indexurile sunt folosite pentru sortarea logică a datelor, în vederea


înlesnirii operaţiilor de căutare şi sortare. Se poate defini un indice pe una sau
mai multe coloane, astfel încât programul SGBD să păstreze o listă sortată a
conţinutului, pentru uz propriu. Indexurile se creează cu ajutorul instrucţiunii
CREATE INDEX.

Sintaxa:
CREATE INDEX index
ON nume (coloana)
index Identificatorul indexului care va fi creat.
nume Numele tabelului
coloana Coloana indexată.

↓ Exemplu_________________________________________________________________________________
Crearea, în tabelul Personal, unui index având identificatorul n:
CREATE INDEX n
ON Personal(Nume)
_________________________________________________________________________________Exemplu ↑

Inserarea rândurilor într-un tabel

Cea mai simplă modalitate de a insera date într-un tabel constă din
utilizarea sintaxei elementare a instrucţiunii INSERT, care impune specificarea
numelui tabelului şi a valorilor care urmează a fi inserate în noul rând. Datele
care urmează a fi stocate în fiecare coloană a tabelului sunt specificate în
clauza VALUES, iar pentru fiecare coloană trebuie specificată o valoare. Dacă
într-o coloană nu se specifică nici o valoare se va considera valoarea NULL
(presupunând că tabelul permite inexistenţa unei valori în coloana respectivă).
Coloanele trebuie populate în ordinea în care apar în definiţia tabelului.

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    62 


Crearea şi actualizarea tabelelor (SQL)

Sintaxa:
INSERT INTO nume
(coloana,…)
VALUES
(valoare, …)
nume Numele tabelului în care se face inserarea.
coloana Numele coloanei.
valoare Valoarea introdusă în coloană.

↓  Exemplu__________________________________________________________________________
Inserarea unui rând în tabelul Personal:
INSERT INTO Personal
(Nume, Marca, Functia, Salariu, Datanast, Sex)
VALUES
('Vasiliu Alina', '202', 'Secretara', 1200,
#13/01/1980#, NO)

În Access conţinutul tabelului (Datasheet View) va fi afişat astfel:

Tabelul se poate completa cu alte nume:

________________________________________________________________________________Exemplu ↑

Modificarea structurii tabelelor

Pentru a actualiza structura tabelelor, se foloseşte instrucţiunea ALTER


TABLE. În mod ideal, tabelele nu trebuie niciodată modificate după popularea
acestora cu date, dar atunci când se fac totuşi modificări, trebuie specificate
următoarele informaţii:

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    63 


Crearea şi actualizarea tabelelor (SQL)

Numele tabelului care va fi modificat, după cuvintele cheie ALTER


TABLE.
Lista modificărilor care urmează a fi efectuate.

Sintaxa:
ALTER TABLE nume
(coloana,…)
ADD│ALTER COLUMN coloana tip│DROP COLUMN coloana
nume Numele tabelului actualizat.
coloana Numele coloanei.
tip Tipul datei din coloană.
ADD COLUMN Adaugă coloană.
ALTER COLUMN Modifica tipul datei din coloană.
DROP COLUMN Şterge coloana.

↓ Exemple_________________________________________________________________________________
- Adăugarea câmpului Telefon:
ALTER TABLE Personal
ADD COLUMN Telefon Text

- Modificarea tipului câmpului Telefon:


ALTER TABLE Personal
ALTER COLUMN Telefon CHAR(12)
- Ştergerea câmpului Telefon:
ALTER TABLE Personal
DROP COLUMN Telefon
_________________________________________________________________________________Exemple ↑

Actualizarea conţinutului tabelelor

Pentru a actualiza (modifica) datele dintr-un tabel se utilizează


instrucţiunea UPDATE. Această instrucţiune se poate folosi în două moduri:
pentru actualizarea anumitor rânduri ale unui tabel
pentru actualizarea tuturor rândurilor dintr-un tabel

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    64 


Crearea şi actualizarea tabelelor (SQL)

Sintaxa:
UPDATE nume
SET valoare
WHERE condiţie
nume Numele tabelului actualizat.
SET Fixarea noii valori.
valoare Noua valoare.
WHERE Selectare.
condiţie Expresia booleană după care se face selectarea.

Instrucţiunea UPDATE se încheie cu o clauză WHERE care indică


programului SGBD rândul ce urmează a fi actualizat. În absenţa unei clauze
WHERE, programul SGBD va actualiza toate rândurile din tabel.

↓  Exemplu__________________________________________________________________________
O mărire de salariu cu 10% :
UPDATE Personal
SET Salariu = Salariu*1.1
WHERE Marca='202'

_________________________________________________________________________________Exemplu ↑

Pentru a şterge o valoare dintr-o coloană, i se poate atribui valoarea


NULL (presupunând că tabelul este definit astfel încât să accepte valori
NULL).

Afişarea conţinutului unui tabel

Instrucţiunea SQL cel mai frecvent folosită este SELECT. Pentru afişarea
conţinutului unui tabel de date această instrucţiune are următoarea sintaxă:
SELECT [coloana, …]│[*]
FROM nume
[WHERE condiţie]

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    65 


Crearea şi actualizarea tabelelor (SQL)

coloana Prin enumerarea coloanelor se face o selecţie pe


verticală .
[*] Toate coloanele.
nume Numele tabelului de afişat.
WHERE Selecţie pe orizontală.
condiţie Condiţia după care se realizează selecţia pe orizontală.

↓  Exemple___________________________________________________________________________
- Afişarea întregului tabel:
SELECT * FROM Personal

Scriptul SQL de mai sus este echivalent cu:


SELECT Nume, Marca, Salariu, Datanast, Sex
FROM Personal
- Afişarea coloanelor Nume, Salariu (selecţie pe verticală):
SELECT Nume,Salariu
FROM Personal
WHERE Marca = '202'

- Selecţie pe orizontală:
SELECT * FROM Personal
WHERE Marca='202'
_________________________________________________________________________________Exemple ↑

Copierea tabelelor

Pentru a copia conţinutul unui tabel într-un alt tabel nou (creat
instantaneu), se poate folosi instrucţiunea SELECT INTO.
Sintaxa:
SELECT INTO *
INTO numenou
FROM nume
numenou Numele unui tabel nou.
nume Numele tabelului de copiat.

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    66 


Crearea şi actualizarea tabelelor (SQL)

↓  Exemplu___________________________________________________________________________
Copia tabelului Personal în tabelul PersonalCopie:
SELECT *
INTO PersonalCopie
FROM Personal
_________________________________________________________________________________Exemplu ↑

Ştergerea rândurilor

Pentru a şterge (elimina) date dintr-un tabel, se foloseşte instrucţiunea


DELETE. Această instrucţiune se poate folosi în două moduri:
pentru a şterge anumite rânduri dintr-un tabel
pentru a şterge toate rândurile dintr-un tabel

Sintaxa:
DELETE FROM nume
[WHERE condiţie]
nume Numele tabelului.
WHERE Selectare (pe orizontală).
condiţie Expresia booleană după care se face selectarea.

↓  Exemplu___________________________________________________________________________
- Ştergere după condiţie:
DELETE FROM Personal
WHERE Marca='202'
- Ştergerea tuturor înregistrărilor:
DELETE FROM Personal
_________________________________________________________________________________Exemplu ↑

Ştergerea tabelelor

Ştergerea tabelelor (de fapt eliminarea întregului tabel, nu numai a


conţinutului) este o operaţie foarte simplă - chiar prea simplă, după cum se
poate arăta. Tabelele pot fi şterse folosind instrucţiunea DROP TABLE:

DROP TABLE nume


nume Numele tabelului.

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    67 


Crearea şi actualizarea tabelelor (SQL)

↓  Exemplu___________________________________________________________________________
DROP TABLE Personal
Această instrucţiune şterge tabelul Personal. (S-a creat anterior copia
acestui tabel). Nu se solicită nici o confirmare şi nici nu există posibilitatea de
anulare. Executarea acestei instrucţiuni are ca efect eliminarea definitivă a
tabelului.
_________________________________________________________________________________Exemplu ↑

 Recomandări:
 Nu este indicat a se utiliza o instrucţiune DELETE în absenţa unei
clauze WHERE decât dacă se doreşte într-adevăr ştergerea fiecărui
rând.
 Este recomandabil ca fiecare tabel să aibă o cheie primară care să
fie folosită în clauza WHERE ori de câte ori este posibil.
 Înainte de a putea folosi o clauză WHERE în cadrul unei instrucţiuni
UPDATE sau DELETE, este indicat un test cu o instrucţiune SELECT,
pentru verificarea unei filtrări corecte.
 SQL nu are buton de anulare. Atenţie deci la UPDATE şi DELETE,
pentru a nu face greşeli regretabile.

Să se editeze şi să se ruleze instrucţiunile SQL din exemplele marcate cu simbolul

.

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    68 


Editarea și consultarea tabelelor (SQL)

Unitatea de învăţare Nr. 10 și 11


Editarea și consultarea tabelelor (SQL)
Cuprins Pagina
Obiectivele Unităţii de învăţare Nr. 10 și 11 70
10.1. Câmpuri cu valoare calculată 70
10.2. Funcţii agregat 71
10.3. Funcţii pentru manipularea datelor (specifice Access) 72
10.3.1. Funcţia FORMAT 72
10.3.2. Funcţii matematice 73
10.3.3. Funcţii financiare 73
10.3.4. Funcţii pe șiruri de caractere 75
10.3.5. Funcţii pentru dată calendaristică și timp 76
10.3.6. Funcţii pentru conversii 76
10.3.7. Funcţii pentru testarea tipului de date 76
10.4. Concatenarea câmpurilor 77
10.5. Sortarea 77
10.6. Filtrarea 78
10.6.1. Operatorii clauzei Where 79
10.6.2. Caractere de înlocuire 79
10.7. Gruparea datelor 81
10.7.1. Grupare și sortare 82
10.7.2. Grupare și filtrare 83
10.8. Ordinea clauzelor Select 84
Lucrare de verificare Unitate de învăţare Nr. 10 și 11 84

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    69 


Editarea și consultarea tabelelor (SQL)

În cadrul instrucţiunilor SQL apar expresii de calcul care returnează valori


de tipuri diferite, cum ar fi numeric, şir sau logic. Expresiile utilizate sunt
formate din:

 Operanzi care pot fi constante, câmpuri din tabel sau funcţii;


 Operatori care leagă operanzi de acelaşi tip:
a) Operatori aritmetici – leagă operanzi numerici:
Operator  Descriere 
+  Adunare 
‐  Scădere 
*  Înmulţire 
/  Împărţire 
MOD  Modulo (restul împărţirii) 
^  Ridicare la putere 
b) Operatori relaţionali (condiţionali) – produc rezultate de tip
logic (boolean):
Operator  Descriere 
=  Egalitate 
<>  Diferit de 
<  Mai mic 
<=  Mai mic sau egal 
>  Mai mare 
>=  Mai mare sau egal 
IS NULL  Este o valoare NULL
BETWEEN  Între două valori specificate (despărţite prin virgulă) 
IN (lista)  Într‐o listă de valori (între paranteze, despărţite prin virgulă) 
c) Operatori logici – leagă expresii logice:
Operator  Descriere
NOT  „Nu” 
AND  „Şi” 
OR  „Sau” 
d) Operatorul de concatenare a şirurilor: +

Câmpuri cu valoare calculată

Se pot crea, în afara câmpurilor deja existente în tabele, şi câmpuri noi,


numite câmpuri cu valoare calculată (alias-uri). Aceste câmpuri nu există
efectiv în tabele de date. Instrucţiunea Select are, în acest caz, următoarea
sintaxă:

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    70 


Editarea și consultarea tabelelor (SQL)

SELECT
expresia AS câmp calculat [,]
[expresia AS câmp calculat ,]

FROM nume
[WHERE condiţie]

expresia Relaţia de calcul.


câmp calculat Numele câmpului calculat.
nume Numele tabelului din care se extrag datele de calcul.
WHERE Selecţie pe orizontală.
condiţie Condiţia după care se realizează selecţia pe orizontală.

Funcţii agregat

Aceste funcţii, specifice SQL, oferă o sintetizare a datelor din tabel şi nu


modifică datele în sine. Informaţiile obţinute sunt de natură statistică
concretizând-se în acţiuni, cum ar fi:
 Determinarea numărului de rânduri dintr-un tabel (sau a numărului de
rânduri care satisfac o anumită condiţie sau care conţin o anumită
valoare).
 Obţinerea sumei unui set de rânduri dintr-un tabel.
 Determinarea valorii maxime, minime şi medii din coloana unui tabel (fie
pentru toate rândurile, fie numai pentru anumite rânduri).

Principalele implementări SQL recunosc un set de cinci funcţii agregat:

AVG()  Returnează media valorilor dintr‐o coloană
COUNT()  Returnează numărul rândurilor dintr‐o coloană 
MAX()  Returnează valoarea maximă dintr‐o coloană 
MIN()  Returnează valoarea minimă dintr‐o coloană 
SUM()  Returnează suma valorilor incluse într‐o coloană 

↓  Exemple___________________________________________________________________________
Se consideră următorul tabel:

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    71 


Editarea și consultarea tabelelor (SQL)

- calculul venitului mediu şi a celui maxim:


SELECT
AVG(Salariu) AS Venit_mediu,
MAX(Salariu) AS Venit_maxim
FROM Personal

- numărul de persoane cu salariul mai mare de 3000 lei:


SELECT COUNT(Salariu) AS Salarii_mari
FROM Personal
WHERE Salariu>3000

- Impozitul pe salariu:
SELECT Nume, Salariu*0.16 AS Impozit
FROM Personal

- numărul total de înregistrări din tabel:


SELECT COUNT(*) AS Nr
FROM Personal

_________________________________________________________________________________Exemple ↑

Funcţii pentru manipularea datelor (specifice Access)

Aceste funcţii, deşi au implementări asemănătoare, au tendinţa de fi


specifice SGBD-ului în care au fost implementate. Deoarece Access face parte
din familia Microsoft Office ele sunt funcţii VBA (Visual Basic for Applications).

 Funcţia FORMAT 
Se utilizează, în special, pentru a specifica modul de afişare a numerelor:
FORMAT ( <expresie>,  <strFormat>) 
<expresie> poate fi o variabilă, o constantă sau o expresie formată din
acestea.
<strFormat> formatul de afişare definit sub forma unui şir de caractere.
Fiecare caracter # indică o cifră, iar 0 precizează dacă apar în completare
zerouri, la început sau la sfârşit.

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    72 


Editarea și consultarea tabelelor (SQL)

↓ Exemplu_________________________________________________________________________________
SELECT FORMAT(10000,"###,### lei") AS Expr1

_________________________________________________________________________________Exemplu ↑

 Funcţii matematice
Funcţiile matematice şi trigonometrice au ca argumente şi ca rezultate
valori numerice.
INT()  Numărul întreg mai mic sau egal  
FIX()  Partea întreagă 
ABS()  Valoarea absolută 
SGN()  Semnul unei expresii 
RND()  Numere aleatoare subunitare 
EXP()  e la puterea x 
LOG()  Logaritmul natural (baza e) 
SQR()  Radical indice 2 
ATN()  Arctangentă 
SIN()  Sinus 
COS()  Cosinus 
TAN()  Tangentă 
↓ Exemplu_________________________________________________________________________________
SELECT FORMAT(SQR(9)) AS Expr1

_________________________________________________________________________________Exemplu ↑

 Funcţii financiare
Funcţiile financiare efectuează calcule obişnuite pentru afaceri, ca de
exemplu determinarea plăţii pentru un împrumut, valoarea viitoare sau
valoarea netă actualizată a unei investiţii şi valorile obligaţiunilor sau
cupoanelor.
Argumentele comune pentru funcţiile financiare includ:  
 Valoarea viitoare (fv) – valoarea investiţiei sau împrumutului după ce s‐au efectuat toate plăţile. 
 Numărul de perioade (nper) – numărul total de plăţi sau perioade ale unei investiţii. 
 Valoarea actualizată (pv) – valoarea unei investiţii sau a unui împrumut la începutul perioadei 
de investiţie. De exemplu, valoarea actualizată a unui împrumut este capitalul de bază care este 

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    73 


Editarea și consultarea tabelelor (SQL)

împrumutat.  
 Rata (rate) – rata dobânzii sau rata de actualizare pentru un împrumut sau o investiţie.  
 Tip (type) – intervalul la care sunt efectuate plăţile în timpul perioadei de plată, ca de exemplu 
la începutul unei luni sau la sfârşitul acesteia ( 0 sau 1, implicit 0). 
 
Cele mai importante funcţii financiare sunt incluse în tabelul următor:
FV(rate, nper, pmt, pv, type)  Calculează valoarea viitoare a unei investiţii bazate pe plăţi 
periodice şi constante şi o rată a dobânzii constantă. 
PV(rate, nper, pmt, fv, type)  Întoarce valoarea actualizată a unei investiţii. Valoarea 
actualizată este suma totală pe care o reprezintă în prezent o 
serie de plăţi viitoare. De exemplu, pentru împrumut, suma 
împrumutată este valoarea actualizată pentru creditor. 
NPER(rate, pmt, pv, fv, type)  Furnizează numărul de perioade pentru o investiţie bazată pe 
plăţi periodice constante şi o rată constantă a dobânzii. 
PMT(rate, nper, pv, fv, type)  Calculează plata pentru un împrumut bazat pe plăţi constante 
şi o rată constantă a dobânzii. 
IPMT(rate, per, nper, pv, fv, type)  Determină plata dobânzii pe o perioadă dată, pentru o 
investiţie bazată pe plăţi periodice constante şi o rată 
constantă a dobânzii.
Argumentele marcate bold sunt obligatorii, celelalte sunt opţionale. 

↓ Exemple_________________________________________________________________________________
a) Pentru 13 depuneri lunare, a 100 unităţi monetare, cu dobândă
anuală 10%, soldul atins se poate calcula astfel:
SELECT FV(10 / 100 / 12, 13, -100) AS Expr1

b) Calculul depunerii bancare pentru returnarea lunară a 150 unităţi


monetare (dobânda anuală 9,5%, 12 ani):
SELECT PV(9.5 / 100 / 12, 13 * 12, 150) AS Expr1

c) Numărul de luni necesare atingerii unui sold de 2000 unităţi monetare


(depunere lunară 100, dobânda anuală 9,5%):
SELECT NPER(9.5 / 100 / 12, -100, -2000) AS Expr1

(e necesară o rotunjire, 18,63… ≈ 19)


d) Pentru un împrumut bancar de 13000 unităţi bancare, pe 12 ani,
dobânda anuală 9,5%, plăţile lunare sunt:

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    74 


Editarea și consultarea tabelelor (SQL)

SELECT PMT(9.5 / 100 / 12, 12 * 12, 13000) as Expr1

e) Dobânda datorată în al doilea an, pentru un împrumut de 13000


unităţii monetare, pe 12 ani, (dobânda anuală 9,5%):
SELECT IPMT(9.5 / 100, 2, 12, 13000) as Expr1

_________________________________________________________________________________Exemple ↑

 Funcţii pe şiruri de caractere


Aceste funcţii realizează prelucrări simbolice asupra unor şiruri de
caractere.
ASC()  Codul unui caracter 
LEN()  Numărul de caractere din şir 
UCASE()  Litere mari
LCASE()  Litere mici 
LTRIM()  Elimina spaţiile din stânga 
RTRIM()  Elimina spaţiile din dreapta 
TRIM()  Elimina spaţiile de la capete 
MID()  Extrage un subşir 
SPACE()  Generează spaţii 
REPLACE()  Înlocuieşte un şir cu alt şir 
LEFT()  Extrage un subşir stânga 
RIGHT()  Extrage un subşir dreapta 

↓  Exemplu__________________________________________________________________________
Toate numele din tabelul Personal se vor scrie cu majuscule:
UPDATE Personal
SET Nume = UCASE(Nume)

_________________________________________________________________________________Exemplu ↑

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    75 


Editarea și consultarea tabelelor (SQL)

 Funcţii pentru dată calendaristică şi timp


Aceste funcţii sunt utilizate frecvent în aplicaţii: de la afişarea datei şi/sau
orei curente, la transformarea din ani în zile sau din ore în minute.
Now()  Data si ora curentă 
Time()  Ora curentă 
Day()  Ziua 
Month()  Luna 
Year()  Anul 

↓  Exemplu__________________________________________________________________________
Persoanele din tabelul Personal cu vârsta > 40 ani:
SELECT * FROM Personal
WHERE YEAR(NOW())-YEAR(Datanast)>40

_________________________________________________________________________________Exemplu ↑

 Funcţii pentru conversii


Se utilizează pentru a converti argumentul într-o dată de tipul specificat de
funcţia utilizată.
CHR()  CHR(65) "A" 
STR()  STR(-14.34) "‐14.34" 
VAL()  VAL(" 1615 198Constanta") 1615198 

 Funcţii pentru testarea tipului de date


Funcţiile pentru testarea tipului de date sunt denumite şi funcţii pentru
inspectarea datelor, stabilind dacă o expresie, sau o variabilă, este sau nu este
de un anume tip.
ISDATE()  ISDATE(#3/17/2007#) ‐1 
Argumentul este o expresie 
ISNUMERIC()  ISNUMERIC(12.3) ‐1 
VARTYPE()  Argumentul este o variabilă  VARTYPE("SQL") 8 

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    76 


Editarea și consultarea tabelelor (SQL)

Concatenarea câmpurilor

În cadrul instrucţiunii SQL Select se pot concatena valori din mai multe
coloane de tip textual, folosind operatorul de concatenare (+).

↓ Exemplu_________________________________________________________________________________
SELECT Nume + ' (' + Functia + ')' AS NumeFunctie
FROM Personal

_________________________________________________________________________________Exemplu ↑

Sortarea

Dacă nu sunt sortate, datele vor fi afişate, în mod caracteristic, în ordinea


în care apar în tabelele care le conţin. Aceasta ar putea fi ordinea în care datele
au fost iniţial adăugate în tabel. Clauza ORDER BY a instrucţiunii SELECT este
destinată sortării datele regăsite, conform necesităţilor:

SELECT [coloana, …]│[*]


FROM nume
ORDER BY coloana│poziţia [ASC│DESC][, …]

nume Numele tabelului care va fi creat.


coloana Numele câmpului. Trebuie creat cel puţin un câmp.
poziţia Numărul (poziţia relativă) coloanei.
ASC│DESC Ordonare crescătoarea sau descrescătoare.

↓  Exemple___________________________________________________________________________
- Ordonarea tabelului Personal după funcţii şi salarii:
SELECT Nume, Functia, Salariu FROM Personal
ORDER BY Functia DESC, salariu ASC

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    77 


Editarea și consultarea tabelelor (SQL)

- Aceeaşi ordonare, prin specificarea poziţiei coloanelor:


SELECT Nume, Functia, Salariu FROM Personal
ORDER BY 2 DESC, 3 ASC
_________________________________________________________________________________Exemple ↑

Filtrarea

De obicei, tabelele dintr-o bază de date conţin mari cantităţi de date şi, de
multe ori, nu e nevoie de a regăsi toate rândurile unui tabel. Va fi necesară
extragerea unui sub-set al datelor din tabel, conform necesităţilor. Regăsirea
doar a unor date implică specificarea unor criterii de căutare, cunoscute si sub
numele de condiţie de căutare. În cadrul unei instrucţiuni SELECT, datele sunt
filtrate prin specificarea criteriilor de căutare în clauza WHERE. Clauza WHERE
este specificată imediat după numele tabelului (clauza FROM), aşa cum se vedea
în exemplul următor:

↓  Exemplu__________________________________________________________________________
SELECT Nume, Salariu FROM Personal
WHERE Salariu > 3600

_________________________________________________________________________________Exemplu ↑

 Când se utilizează atât clauza ORDER BY cât şi clauza WHERE,


ORDER BY trebuie să fie plasată după WHERE deoarece în caz contrar va fi
generată o eroare.

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    78 


Editarea și consultarea tabelelor (SQL)

 Operatorii clauzei WHERE

SQL acceptă mai mulţi operatori relaţionali care produc rezultate de tip
logic (boolean). Expresiile logice pot fi legate prin operatori logici.

↓  Exemple___________________________________________________________________________
- Lista persoanelor care nu au funcţia 'Secretara':
SELECT Nume, Functia, salariu FROM Personal
WHERE NOT Functia ='Secretara'

- Lista persoanelor cu salariul între 3500 lei şi 4000 lei:


SELECT Nume, Functia, Salariu FROM Personal
WHERE Salariu> 3500 AND Salariu <4000

Instrucţiunea anterioară este echivalentă cu:


SELECT Nume,Functia, Salariu FROM Personal
WHERE Salariu BETWEEN 3500 and 4000
_________________________________________________________________________________Exemple ↑

 Caractere de înlocuire

Caracterele de înlocuire sunt caractere cu semnificaţie specială în cadrul


clauzei WHERE. Pentru a folosi caractere de înlocuire, în clauza de căutare,
trebuie utilizat operatorul LIKE. Căutarea prin intermediul caracterelor de
înlocuire se poate utiliza numai în cazul câmpurilor de tip text.
Cel mai utilizat caracter de înlocuire îl reprezintă simbolul asterisc (*). În
interiorul unui şir de căutare, * are semnificaţia „găseşte orice caracter,
indiferent de câte ori apare”.

↓  Exemplu__________________________________________________________________________
Pentru a găsi toate persoanele care încep cu litera P:
SELECT * FROM Personal
WHERE Nume LIKE 'P*'

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    79 


Editarea și consultarea tabelelor (SQL)

_________________________________________________________________________________Exemplu ↑

Un alt caracter de înlocuire îl reprezintă caracterul semn de întrebare (?).


Se foloseşte la fel ca simbolul asterisc, dar, în loc de a substitui mai multe
caractere, poate înlocui un singur caracter.
↓ Exemplu_________________________________________________________________________________
SELECT * FROM Personal
WHERE Marca LIKE '1?7*'

_________________________________________________________________________________Exemplu ↑
Caracterul de înlocuire paranteze pătrate [] este folosit la specificarea
unui set de caractere, dintre care unul trebuie să corespundă unui caracter din
poziţia specificată (amplasamentul caracterului de înlocuire).

↓ Exemplu_________________________________________________________________________________
Lista persoanelor ale căror nume încep cu litera P sau T:
SELECT * FROM Personal
WHERE Nume LIKE '[PT]*'

_________________________________________________________________________________Exemplu ↑

Caracterul de înlocuire anterior poate fi negat prin prefixare cu simbolul !


(semnul exclamării).

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    80 


Editarea și consultarea tabelelor (SQL)

↓ Exemplu_________________________________________________________________________________
Lista persoanelor ale căror nume nu încep cu litera P sau T:
SELECT * FROM Personal
WHERE Nume LIKE '[!PT]*'

_________________________________________________________________________________Exemplu ↑

Gruparea datelor

Folosind grupuri, datele sunt împărţite în seturi logice, cu ajutorul clauzei


GROUP BY din instrucţiunea Select. Această clauză indică programului SGBD
să sorteze datele şi să le grupeze în funcţie da valorile din coloanele selectate.
Fiecare coloană din instrucţiune trebuie să se regăsească în clauza GROUP BY:
SELECT coloana, …
FROM nume
GROUP BY coloana, …
[HAVING condiţie]
[ORDER BY coloana, …]
coloana, … Coloanele selectate.
nume Numele tabelului.
GROUP BY Grupare pe coloane.
HAVING Selecţie pe orizontală.
condiţie Condiţia după care se realizează selecţia pe orizontală.
ORDER BY Sortare pe coloanele specificate.

↓  Exemplu__________________________________________________________________________
Următoarea instrucţiune grupează şi sortează datele pe coloanele
Functia şi Nume:
SELECT Nume, Functia
FROM Personal
GROUP BY Functia, Nume

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    81 


Editarea și consultarea tabelelor (SQL)

_________________________________________________________________________________Exemplu ↑

 Grupare şi sortare

GROUP BY şi ORDER BY sunt foarte diferite chiar dacă uneori produc


aceleaşi rezultate:

ORDER BY GROUP BY
Sortează date de ieşire generate  Grupează rânduri. Este posibil ca datele de ieşire să 
nu se găsească într‐o ordine de grup. 
Se pot folosi toate coloanele (chiar şi cele  Se pot utiliza numai coloanele selectate sau 
care nu au fost selectate).  coloanele cu expresii, după cum trebuie utilizată 
fiecare expresie de coloană selectată. 
Nu este niciodată obligatorie  Obligatorie dacă se folosesc coloane (sau expresii) 
cu funcţii agregat. 

↓  Exemplu__________________________________________________________________________
Deşi GROUP BY determină o sortare după Salariu, ORDER BY impune o
sortare după Nume:
SELECT Nume, Functia, Salariu
FROM Personal
GROUP BY Salariu, Nume, Functia
ORDER BY Nume

_________________________________________________________________________________Exemplu ↑

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    82 


Editarea și consultarea tabelelor (SQL)

 Grupare şi filtrare

Dacă se utilizează GROUP BY clauza WHERE nu este utilizabilă deoarece


filtrează rânduri nu grupuri. SQL pune la dispoziţie o altă clauză, HAVING, care
acceptă toţi operatorii clauzei WHERE.

↓  Exemplu__________________________________________________________________________
Grupare pe Salariu, Nume, Functia cu filtrare pe Salariu:
SELECT Nume, Functia, Salariu
FROM Personal
GROUP BY Salariu, Nume, Functia
HAVING Salariu > 3500

_________________________________________________________________________________Exemplu ↑

Se poate utiliza, atunci când este nevoie, atât clauza HAVING cât şi clauza
WHERE (care este prioritară).

↓ Exemplu_________________________________________________________________________________
SELECT Nume, Functia, Salariu
FROM Personal
WHERE Functia <> 'Director general'
GROUP BY Salariu, Nume, Functia
HAVING Salariu > 3500

_________________________________________________________________________________Exemplu ↑

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    83 


Editarea și consultarea tabelelor (SQL)

Ordinea clauzelor Select

Clauză  Descriere  Dacă este obligatorie 


SELECT Coloanele sau expresiile care urmează a fi  Da 
returnate 
FROM Tabelul din care se regăsesc datele  Numai dacă se selectează date 
dintr‐un tabel 
WHERE Filtrare la nivel de rând  Nu 
GROUP BY Specificaţie de grup  Numai dacă se selectează valori 
cu funcţii agregat 
HAVING Filtrare la nivel de grup  Nu 
ORDER BY Ordine de sortare adatelor de ieşire  Nu 

Să se editeze şi să se ruleze instrucţiunile SQL din exemplele marcate cu

simbolul .

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor    84 


Uniuni de tabele (SQL)

Unitatea de învăţare Nr. 12


Uniuni de tabele (SQL)
Cuprins Pagina
Obiectivele Unităţii de învăţare Nr. 12 86
12.1. Uniuni interioare 86
12.2. Uniuni între mai multe tabele 88
12.3. Uniuni exterioare 90
Lucrare de verificare Unitate de învăţare Nr. 12 90

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     85 


Uniuni de tabele (SQL)

Divizarea datelor în mai multe tabele permite o stocare mai eficientă, o


manipulare mai uşoară. Utilizarea unei uniuni de tabele este un mecanism
folosit pentru asocierea tabelelor (tabele relaţionale între care se stabilesc
legături). Când se folosesc tabele relaţionale, este important ca în coloanele
relaţionale să fie introduse numai valori corecte pentru că, ţinând cont că
acestea identifică rânduri, rândurile respective pot deveni inaccesibile neputând
fi corelate cu rânduri din alte tabele ale uniunii. Programele SGBD furnizează
interfeţe grafice destinate definirii în mod interactiv a relaţiilor dintre tabele
(permit conservarea integrităţii referenţiale prin aplicarea unor reguli de
integritate a datelor).

Instrucţiunea SQL SELECT, cu o sintaxă specială, oferă un singur set de


date de ieşire, iar uniunea asociază instantaneu rândurile corecte din fiecare
tabel.

 Uniuni interioare

O uniune interioară numită şi echi-uniune este bazată pe verificarea


egalităţii valorilor cuprinse în două tabele.

↓  Exemplu__________________________________________________________________________
Pentru evidenţa produselor distribuite de un furnizor spre clienţi se
consideră următoarele tabele:

În tabelul Produse, Codp, cu atribut de cheie, este utilizat pentru


identificarea unică a produselor şi permite relaţionarea cu tabelul Clienti.
Pentru crearea unei uniuni între cele două tabele, în instrucţiunea Select

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     86 


Uniuni de tabele (SQL)

trebuie specificate tabelele şi legătura între ele:


SELECT Denumire, Pret, Client
FROM Produse, Clienti
WHERE Produse.Codp = Clienti.Codp

Spre deosebire de toate instrucţiunile SELECT anterioare, în clauza


WHERE, sunt referite două tabele, şi anume Produse şi Clienti. Acestea sunt
numele celor două tabele ale căror uniune se realizează prin această
instrucţiune. Tabelele sunt unite în mod corespunzător pe baza identităţii dintre
elementele coloanei Codp din tabelul Produse şi elementele coloanei omonime
din tabelul Clienti. Specificaţia coloanelor este de forma Produse.Codp
respectiv Cienti.Codp (numele tabelului şi numele coloanei, separate printr-
un punct). Utilizând această sintaxă (obligatorie) numele de coloane devin
complet determinate. Astfel, o singură instrucţiune SELECT returnează date din
două tabele diferite.
Clauza WHERE acţionează ca un filtru, pentru a se include numai acele
rânduri care corespund condiţiei de filtrare - în acest caz, condiţia de unire.
_________________________________________________________________________________Exemplu ↑

O uniune de tabele, deşi are ca rezultat afişarea unui tabel, nu reprezintă


o entitate fizică – nu se concretizează în tabelele reale ale bazei de date. Dacă
un identificator incorect de produs este stocat în tabelul Clienti, produsele
respective vor fi inexistente, deoarece nu sunt asociate nici unui produs. Pentru
a preveni această situaţie, baza de date poate primi instrucţiuni de a permite
numai introducerea de valori corecte (a celor prezente în tabelul Produse) în
coloana care conţine identificatorul produsului din tabelul Clienti, reguli (de
integritate referenţială) controlate, de obicei, de programele SGBD.

Pentru aceste uniuni se poate folosi o sintaxă uşor diferită, în care se


specifică în mod explicit tipul uniunii.

↓  Exemplu__________________________________________________________________________
Următoarea instrucţiune SELECT regăseşte exact aceleaşi date ca şi în
exemplul anterior:
SELECT Denumire, Pret, Client
FROM Clienti INNER JOIN Produse
ON Clienti.Codp = Produse.Codp

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     87 


Uniuni de tabele (SQL)

Instrucţiunea SELECT este asemănătoare cu instrucţiunea omonimă


anterioară, dar clauza FROM este diferită. Aici, relaţia dintre cele două tabele
face parte din clauza FROM specificată sub forma INNER JOIN, condiţia de
unire este specificată folosindu-se clauza specială ON, în locul unei clauze
WHERE. Condiţia efectivă transmisă clauzei ON este aceeaşi ca si cea care ar fi
fost transmisă clauzei WHERE.
_________________________________________________________________________________Exemplu ↑

 În conformitate cu specificaţia ANSI SQL, este de preferat utilizarea


sintaxei INNER JOIN.

În absenţa lui WHERE sau INNER JOIN fiecare rând din primul tabel va fi
unit cu fiecare rând din al doilea tabel, indiferent dacă între ele există sau nu o
relaţie logică obţinându-se o uniune încrucişată (produs cartezian). Produsul
cartezian corespunde rareori necesităţilor de consultare a tabelelor şi în
consecinţă este rareori utilizat.

↓ Exemplu_________________________________________________________________________________
Produs cartezian:
SELECT Denumire, Pret, Client
FROM Produse, Clienti

_________________________________________________________________________________Exemplu ↑

 Uniuni între mai multe tabele

De cele mai multe ori, folosirea a doar două tabele relaţionate este
insuficientă pentru o manipulare mai facilă a datelor stocate în acestea. Din

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     88 


Uniuni de tabele (SQL)

exemplele prezentate se poate constata firesc că, pentru livrarea mai multor
produse aceluiaşi client, acesta va apare de mai multe ori în tabelul Clienti.
SQL nu impune o limită în ceea ce priveşte numărul tabelelor care vor fi unite
în cadrul instrucţiunii SELECT astfel încât un al treilea tabel (Comenzi) ar putea
rezolva gestiona livrările efectuate în date calendaristice diferite.

↓  Exemplu__________________________________________________________________________

Instrucţiunea SELECT generează un tabel al livrărilor:


SELECT Client, Data, Denumire, Pret, Cantitate, Um
FROM Produse, Comenzi, Clienti
WHERE Produse.Codp = Comenzi.Codp
AND Clienti.Codc = Comenzi.Codc

Acelaşi rezultat prin INNER JOIN:


SELECT Client, Data, Denumire, Pret, Cantitate, Um
FROM Clienti INNER JOIN
(Produse INNER JOIN Comenzi ON Produse.Codp=Comenzi.Codp)
ON Clienti.Codc = Comenzi.Codc
_________________________________________________________________________________Exemplu ↑

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     89 


Uniuni de tabele (SQL)

 Uniuni exterioare

Majoritatea uniunilor stabilesc legături între rândurile dintr-un tabel şi


rândurile din alt tabel. Uneori este necesară şi vizualizarea unor rânduri care nu
sunt corelate cu altele cum ar fi produsele care nu au fost comandate de nici
un client. Tipul de uniune utilizat în acest caz se numeşte uniune exterioară (se
folosesc cuvintele-cheie OUTER JOIN şi LEFT – pentru tabelul din partea
stângă a uniunii exterioare sau RIGHT – pentru cel din dreapta).

↓ Exemplu_________________________________________________________________________________
Lista tuturor produselor, inclusiv a celor necomandate:
SELECT Denumire, Pret, Comenzi.Codc
FROM Produse LEFT OUTER JOIN Comenzi
ON Produse.Codp = Comenzi.Codp

_________________________________________________________________________________Exemplu ↑

Să se editeze şi să se ruleze instrucţiunile SQL din exemplele marcate cu

simbolul .

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     90 


Programarea bazelor de date (VBA)

Unitatea de învăţare Nr. 13 și 14


Programarea bazelor de date (VBA)
Cuprins Pagina
Obiectivele Unităţii de învăţare Nr. 13 și 14 92
13.1. Formulare personalizate 92
13.2. Lansarea instrucţiunilor SQL 96
13.3. Seturi de înregistrări 97
13.4. Scanarea seturilor de înregistrări 98
13.5. Actualizarea seturilor de înregistrări 103
13.6. Tabele relaţionate prin program 104
Lucrare de verificare Unitate de învăţare Nr. 13 și 14 109

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     91 


Programarea bazelor de date (VBA)

În Word, Excel, PowerPoint este posibilă automatizarea operaţiilor de


rutină folosind limbajul VBA (Visual Basic for Applications). Acest limbaj este de
asemenea utilizabil în Access, permiţând accesul la datele stocate în tabele sau
interogări. Astfel, resursele Access, SQL şi VBA se pot folosi împreună. Access
este proiectat pentru programarea formularelor şi rapoartelor (printre alte
lucruri) deci nu se vor regăsi formularele specifice editorului VBA.

Formulare personalizate

Din grupul Forms se alege butonul Form Design iar în formular se pot
introduce controale (din tab-ul Design, grupul Controls):

Casetă de text  Buton 

Etichetă Listă

 Buton (Button). Din fereastra Command Button Wizard se selectează un


buton sistem specific unei categorii (asociat cu un cod) sau un buton
utilizator - pe care programatorul să-l poată edita şi căruia să îi asocieze
propria secvenţă de instrucţiuni (clic pe Cancel în acest caz):

 Casetă de text (TextBox), asociată cu un câmp din tabelele de date


(Bound Control) sau neasociată (Unbound Control). Caseta de
text neasociată conţine şi o etichetă care o prefixează. Această etichetă

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     92 


Programarea bazelor de date (VBA)

poate fi editată sau eliminată (atunci când nu este necesară):

 Etichetă (Label), text afişat pe formular (controlabil prin program):

 Casete de tip listă (ListBox, ComboBox), listă de una sau mai multe
elemente. Dacă numărul total al elementelor excede numărul celor care
pot fi afişate, un scroll bar este automat adăugat la acel control. Aceste
casete pot fi populate cu date din tabele.


 Controalele incluse în formulare au proprietăţi care sunt fixate din
fereastra Property Sheet (butonul corespunzător este inclus în tab-
ul Design).
 Formularele, editate în vizualizarea Design, se
rulează în Form View:

 La testarea secvenţelor de cod se produc,


deseori, erori de sintaxă sau de natură logică,
mai ales de către începători. Pentru a le rezolva
este necesar un Reset (din meniul Run al VBA-
ului):

 În exemplificările ulterioare este necesară rularea unor secvenţe de


cod, deci la mesajul:

se răspunde Enable this content, prin acţionarea butonului Options:

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     93 


Programarea bazelor de date (VBA)

Este posibilă invalidarea apariţiei mesajului: Clic pe Office Button,


Access Options, Trust Center, Trust Center Settings…, Macro
Settings, Enable all Macros (nerecomandat; poate fi rulat un
potenţial cod periculos).

↓ Exemplu_________________________________________________________________________________
Se poate defini un formular personalizat pentru efectuarea unor calcule
financiare folosind limbajul de programare VBA.
 Pe formular se introduc trei controale de tip TextBox, trei controale de
tip Button şi o etichetă (Label):

 Proprietăţi ale controalelor, fixate în Property Sheet:

Control  Tip  Name 

TextBox a1

  TextBox a2

  TextBox a3

  Label r

  Button FV

  Button PV

  Button PMT

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     94 


Programarea bazelor de date (VBA)

 Pentru butoane la proprietatea On Click, se scriu instrucţiunile:


Private Sub FV_Click()
r.Caption = FV(Val(a1), Val(a2), Val(a3))
End Sub
Private Sub PV_Click()
r.Caption = PV(Val(a1), Val(a2), Val(a3))
End Sub
Private Sub PMT_Click()
r.Caption = PMT(Val(a1), Val(a2), Val(a3))
End Sub

 În Form View formularul va fi afişat astfel:

 Se pot introduce (de la tastatură) valori pentru calcul – cu punct în loc


de virgula zecimală, cerinţă a limbajului de programare. Calculele se
efectuează prin acţionarea butoanelor (de exemplu pentru FV):

_________________________________________________________________________________Exemplu ↑
Pentru exemplificările care se vor face în continuare se va folosi tabelul
Personal din baza de date BazaMea, creat în Access. Baza de date, este
plasată în directorul implicit al documentelor Microsoft Office (Documents sau
My Documents - "C:…\Documents\BazaMea.accdb"). Extensia accdb este
specifică mediului de editare Access 2007:

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     95 


Programarea bazelor de date (VBA)

Lansarea instrucţiunilor SQL

VBA-ul posedă o instrucţiune utilă, DoCmd. Se pot, astfel, deschide tabele


de date (DoCmd.OpenTable) sau se pot lansa instrucţiuni SQL
(DoCmd.RunSQL). Instrucţiunile acceptate sunt INSERT INTO, DELETE,
SELECT...INTO, UPDATE, CREATE TABLE, ALTER TABLE, DROP TABLE,
CREATE INDEX.

↓  Exemplu__________________________________________________________________________
Având deschisă baza de date BazaMea (care conţine
tabelul de date Personal) se introduce pe un formular un
buton utilizator. Proprietăţile Name şi Caption ale butonului,
se fixează la valoarea Start. Prin clic dreapta pe buton
(Build Event..., Choose Builder, Code Builder) se asociază
butonului următoarea secvenţă de instrucţiuni Basic (folosind
editorul VBA):

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     96 


Programarea bazelor de date (VBA)

Rularea formularului, în Form View, are ca efect mărirea salariilor


persoanelor înscrise în tabel cu 7%:

_________________________________________________________________________________Exemplu ↑

Seturi de înregistrări

Programarea bazelor de date înseamnă manipularea unui set de


înregistrări (RecordSet) extrase din tabele sau interogări. Recordset-ul este
populat cu date dintr-o sursă de date, deci se impune, în primul rând,
precizarea acestei surse de date (OpenDatabase, OpenRecordset) prin
instrucţiunile Basic dedicate. Seturilor de date li se asociază un identificator.
Sunt disponibile în prelucrare doar valorile dintr-o singură înregistrare
(înregistrarea curentă) iar aceste valori sunt identificate prin numele coloanei
de care aparţin (pus între ghilimele). La deschiderea Recordset-ului prima
înregistrare devine înregistrare curentă.

Sursa de date poate fi:


 Un tabel (table).
 Din baza de date curentă (CurrentDb).
 Din directorul documentelor Office (Documents). Este
necesară precizarea numelor bazei de date şi al tabelului:
Dim Baza As Database
Dim Tabel As Recordset
Set Baza = OpenDatabase("BazaMea")
Set Tabel = Baza.OpenRecordset("Pesonal")
 Dintr-un director oarecare. Se impune precizarea completă a
path-ului:
Set Baza = OpenDatabase("C:\Evidente\BazaMea")
Set Tabel = Baza.OpenRecordset("Personal")
 O interogare (query).
Set Baza = OpenDatabase("BazaMea")
Set Tabel = Baza.OpenRecordset("Query2")
 O instrucţiune SQL SELECT.

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     97 


Programarea bazelor de date (VBA)

↓  Exemple_________________________________________________________________________
 Setul de înregistrări este populat cu date dintr-un tabel, butonului din
formularul anterior asociindu-se următoarele instrucţiuni:
Private Sub Start_Click()
' Bazei de date curente
' i se asociază identificatorul Baza:
Set Baza = CurrentDb
' Se precizează tabelul din baza de date şi
' i se asociază identificatorul Tabel:
Set Tabel = Baza.OpenRecordset("Personal")
' Valoarea stocată pe coloana "Nume":
PrimulNume = Tabel("Nume")
MsgBox PrimulNume
End Sub

 Deschiderea unui set de înregistrări folosind o instrucţiune SELECT:


Private Sub Start_Click()
Set Baza = CurrentDb
InstrSelect = "SELECT * FROM Personal ORDER BY Nume"
Set Tabel = Baza.OpenRecordset(InstrSelect)
PrimulNume = Tabel("Nume")
MsgBox PrimulNume
End Sub

_________________________________________________________________________________Exemple ↑

Scanarea seturilor de înregistrări

Scanarea unui set de înregistrări înseamnă parcurgerea acestuia în


scopul obţinerii unor valori utilizabile în cadrul unui program. Trebuie ţinut cont
că, la un moment dat, este disponibil un singur rând – cursorul se află în
poziţia curentă. Sunt utilizabile, pentru acest scop, metodele incluse în tabelul
următor:

Instrucţiune  Mută cursorul 
Recordset.MoveFirst la prima înregistrare 
Recordset.MoveLast la ultima înregistrare 
Recordset.MoveNext la următoarea înregistrare 
Recordset.MovePrevious la înregistrarea anterioară 
Recordset.Move n cu n înregistrări (n, număr pozitiv sau negativ) 

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     98 


Programarea bazelor de date (VBA)

Pentru a nu „ieşi” accidental din setul de înregistrări sunt utilizate


metodele BOF, EOF şi RecordCount ale obiectului RecordSet:

Recordset.BOF Returnează  valoarea  True  dacă  poziţia  curentă  este  înaintea 


primei înregistrări 
Recordset.EOF Returnează  valoarea  True  dacă  poziţia  curentă  este  după 
ultima înregistrare 
Recordset.RecordCount Numărul total de înregistrări 

↓  Exemple__________________________________________________________________________
 Scanarea tabelului Personal pentru determinarea salariului mediu:

Private Sub Start_Click()


Set Tabel = CurrentDb.OpenRecordset("Personal")
s = 0
For i = 1 To Tabel.RecordCount
s = s + Tabel("Salariu")
Tabel.MoveNext
Next
SalariuMediu = s / Tabel.RecordCount
MsgBox SalariuMediu
End Sub

 Pentru a „naviga” în setul de înregistrări, utilizând un formular, s-au


introdus pe acesta controale de tip TextBox şi Button:

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor     99 


Programarea bazelor de date (VBA)

Proprietăţi ale controalelor, fixate în Property Sheet:

Control  Tip  Name 

TextBox Marca

  TextBox Nume

  TextBox Sex

  TextBox Functia

  TextBox Salariu

  TextBox Datanast

  Button Primul

  Button Inainte

  Button Inapoi

  Button Ultimul

Secvenţele de cod asociate controalelor:


Option Compare Database
'Se declară o variabilă de tip Recordset
'utilizabilă în subrutine
Dim Tabel As Recordset
Private Sub Form_Load()
'Această subrutină este rulată
'la încărcarea formularului
Set Tabel = CurrentDb.OpenRecordset("Personal")
Afiseaza
End Sub
Private Sub Inainte_Click()
Tabel.MoveNext
'Nu se permite ieşirea din setul de înregistrări
If Tabel.EOF Then
Tabel.MoveLast
End If
Afiseaza
End Sub
Private Sub Inapoi_Click()
Tabel.MovePrevious
'Nu se permite ieşirea din setul de înregistrări
If Tabel.BOF Then

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor   100 


Programarea bazelor de date (VBA)

Tabel.MoveFirst
End If
Afiseaza
End Sub
Private Sub Primul_Click()
Tabel.MoveFirst
Afiseaza
End Sub
Private Sub Ultimul_Click()
Tabel.MoveLast
Afiseaza
End Sub
Sub Afiseaza()
'TextBox-urile se populează cu valori din tabel
Nume = Tabel("Nume")
Marca = Tabel("Marca")
Functia = Tabel("Functia")
Salariu = Tabel("Salariu")
Datanast = Tabel("Datanast")
Sex = Tabel("Sex")
End Sub

Rularea
formularului:

_________________________________________________________________________________Exemple ↑

O altă modalitate de a naviga într-un set de înregistrări este şi aceea de


a căuta o anumită înregistrare folosind unul sau mai multe criterii. Pentru
accesare directă este utilizată metoda Seek, pe câmpurile indexate. Metodele
Find (FindFirst, FindLast, FindNext, FindPrevious) permit doar
un acces secvenţial. Poziţia cursorului este memorată prin proprietatea
Bookmark a obiectului Recordset.

↓  Exemplu__________________________________________________________________________
Se introduce pe formular un TextBox, cu numele Cauta. Evenimentul
LostFocus, tratat la completarea TextBox–ului, determină plasarea pe
înregistrarea corespunzătoare din tabel (nu se produce deplasarea cursorului

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor   101 


Programarea bazelor de date (VBA)

dacă nu a fost detectată valoarea introdusă). Proprietatea On Lost Focus


trebuie pusă pe poziţia Event Procedure:

Secvenţa de instrucţiuni pentru poziţionare directă:


Private Sub Cauta_LostFocus()
'Se memorează poziţia cursorului
cursor = Tabel.Bookmark
'PrimaryKey este şi Index
Tabel.Index = "PrimaryKey"
'Compararea se face pe egalitate
Tabel.Seek "=", Cauta
'Se testează rezultatul căutării
If Tabel.NoMatch Then
Tabel.Bookmark = cursor
End If
Afiseaza
End Sub

Secvenţa de instrucţiuni pentru poziţionare secvenţială:


Private Sub Cauta_LostFocus()
cursor = Tabel.Bookmark
Tabel.MoveFirst
For i = 1 To Tabel.RecordCount
' cu funcţia Trim se elimină eventualele
' spaţii de la început sau sfârşit
If Trim(Tabel("Marca")) = Trim(Cauta) Then
cursor = Tabel.Bookmark
Exit For
End If
Tabel.MoveNext
Next
Tabel.Bookmark = cursor
Afiseaza
End Sub

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor   102 


Programarea bazelor de date (VBA)

Prin ambele secvenţe de instrucţiuni se obţine acelaşi rezultat:

_________________________________________________________________________________Exemplu ↑

Actualizarea seturilor de înregistrări

Modificarea valorilor introduse în unul sau mai multe câmpuri este


simplă, tratarea fiecărui câmp fiind la nivel de variabilă. Actualizarea
efectivă este realizată prin metoda Update a obiectului Recordset.

↓ Exemplu_________________________________________________________________________________
La formularul anterior, pentru a actualiza valorile preluate în casetele de
text, acestora li se pot asocia metode LostFocus (exemplul pentru Nume este
valabil şi pentru Marca, Functia, Salariu, Datanast, Sex):
Private Sub Nume_LostFocus()
Tabel.Edit
Tabel("Nume") = Nume
Tabel.Update
End Sub
_________________________________________________________________________________Exemplu ↑

Ştergerea rândurilor necesită aplicarea metodei Delete atunci când se


are în vedere obiectul Recordset sau utilizarea comenzii
DoCmd.RunSQL() pentru lansarea instrucţiunii specializate SQL.

↓ Exemplu_________________________________________________________________________________
Unui buton, inclus în formular, i se pot asocia două variante de secvenţe
de cod, cu acelaşi rezultat:

Private Sub Sterge_Click()


Tabel.Edit
Tabel.Delete
Inainte_Click
End Sub

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor   103 


Programarea bazelor de date (VBA)

Private Sub Sterge_Click()


M = Tabel("Marca")
' Delimitarea sirurilor de caractere este facuta de:
' apostroafe in SQL
' ghilimele in VBA
strSterge = "DELETE FROM Personal WHERE Marca='" & M & "'"
DoCmd.RunSQL (strSterge)
Inainte_Click
End Sub
_________________________________________________________________________________Exemplu ↑

Adăugarea unei noi înregistrări implică folosirea metodelor AddNew şi


Update (în acest caz se rulează metoda AddNew, se adaugă datele în
câmpurile noii înregistrări, se apelează metoda Update pentru a scrie în
tabel noua înregistrare):

'
Tabel.AddNew
'Se introduc valori:
'De exemplu : Tabel("Marca") = "215"
Tabel.Update
'

Tabele relaţionate prin program

Din exemplificarea făcută în capitolul „Uniuni de tabele” (pe tabelele


Clienti, Produse, Comenzi) ar putea rezulta completarea anevoioasă a codurilor
din tabelul Comenzi (cu pericolul nerespectării integrităţii referenţiale):

 Tabelul Clienti – Primary Table (Codc, cheie primară):

 Tabelul Produse – Primary Table (Codp, cheie primară):

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor   104 


Programarea bazelor de date (VBA)

 Tabelul Comenzi (Related Table):

Pentru înregistrarea comenzilor se poate evita completarea codurilor prin


utilizarea controalelor de tip ListBox.

↓ Exemplu_________________________________________________________________________________
Se editează următorul formular:

Controalelor din formular li se asociază următorii identificatori


(proprietatea Name):
Control  Tip  Name 

ListBox Client

ListtBox Produs
 

  TextBox data

  TextBox cantitate

  Button Inregistreaza

Button Stop
 

TextBox-ului data i se asociază, ca valoarea predefinită, data curentă


(proprietatea Default Value: =Date()).

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor   105 


Programarea bazelor de date (VBA)

Introducerea ListBox-ului, Client:


 în fereastra List Box Wizard se selectează  
şi clic pe butonul Next;
 se selectează, pentru popularea listei, tabelul Clienti, clic pe Next;
 se selectează câmpurile Codc şi Client, Next;
 se optează pentru ordonarea listei după Client:

 clic pe butonul Next;


 valoarea returnată după selecţie (Available Fields) va fi cea stocată în
Codc, Next;
 :Client;
 clic pe butonul Finish.
Introducerea ListBox-ului, Produs:
 în fereastra List Box Wizard se selectează  
şi clic pe butonul Next;
 se selectează, pentru popularea listei, tabelul Produse, Next;
 se selectează câmpurile Codp, Denumire, Pret, Um, Stoc, clic pe
Next;
 se optează pentru ordonarea listei după Denumire:

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor   106 


Programarea bazelor de date (VBA)

 clic pe butonul Next;


 valoarea returnată după selecţie (Available Fields) va fi cea stocată în
Codp, Next;
 :Produs;
 clic pe butonul Finish.
În secvenţele de cod VBA :
 se rezervă spaţiu de memorie pentru memorarea codurilor (Dim C,
P As String) selectate din listele de Clienti şi Produse;
 se defineşte un obiect de tip Recordset (Dim Tabel As
Recordset);
 se verifică dacă s-au făcut selecţiile pentru clienţi şi produse;
 se verifică dacă sunt disponibilităţi de stoc;
 se înregistrează comanda;
 se finalizează rularea formularului şi închiderea bazei de date
(CloseDatabase).

Option Compare Database


Dim C, P As String
Dim Tabel As Recordset
Private Sub Client_LostFocus()
C = Client.Value
End Sub
Private Sub Produs_LostFocus()
P = Produs.Value
End Sub
Private Sub Inregistreaza_Click()
'Se verifica daca s-a selectat clientul
If C = "" Then
MsgBox "? Client"
Exit Sub
End If

'Se verifica daca s-a selectat produsul


If P = "" Then
MsgBox "? Produs"
Exit Sub
End If

'Verificare de stoc
Set Tabel = CurrentDb.OpenRecordset("Produse")
Tabel.Index = "PrimaryKey"
Tabel.Seek "=", P
If Tabel("Stoc") < Val(cantitate) Then
MsgBox "Stoc Insuficient!"
Exit Sub
Else
Tabel.Edit

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor   107 


Programarea bazelor de date (VBA)

Tabel("Stoc") = Tabel("Stoc") - Val(cantitate)


Tabel.Update
End If

'Se inregistreaza comanda


Set Tabel = CurrentDb.OpenRecordset("Comenzi")
Tabel.AddNew
Tabel("Data") = data
Tabel("Cantitate") = cantitate
Tabel("Codc") = C
Tabel("Codp") = P
Tabel.Update
End Sub
Private Sub Stop_Click()
'Inchiderea formularului
DoCmd.Close
'Inchiderea bazei de date
DoCmd.CloseDatabase
End Sub

Rularea formularului cu următoarele valori selectate şi completate:

determină adăugarea unei comenzi (în tabelul Comenzi):

şi scăderea stocului pentru produsul în cauză – de la 25 la 22 bucăţi:

_________________________________________________________________________________Exemplu ↑

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor   108 


Programarea bazelor de date (VBA)

 Aplicaţii

Să se editeze şi să se ruleze instrucţiunile VBA din exemplele marcate cu

simbolul .

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor   109 


Bibliografie

Bibliografie 
 

Emil Cosma  Aplicaţii Excel, Project, Visual FoxPro, Ed. EXPONTO, 2004 

Ben Forta  SQL în lecţii de 10 minute, Ed. TEORA, 2008 

Emil Cosma   Office 2007 – VBA, Excel, Access, Ed. EXPONTO, 2008 

Jeff Perkins, Bryan Morgan SQL fără profesor, în 14 zile, Ed. TEORA, 1998 

Ion Lungu, Gheorghe Sabău ş.a.  Sisteme informatice – Analiză, proiectare şi implementate, Ed.


ECONOMICĂ, 2003 

Emil Cosma   Visual BASIC … VBA 2007 … Studio 2005, Ed. MATRIXROM, 
2007 

Paul McFedries  VBA, Ghid pentru începători, Ed. TEORA, 2006 

Steve Johnson  Microsoft Office – Access 2003, Ed. TEORA, 2004 

Ion Lungu, Constanţa Bodea,  Baze de date – Organizare, proiectare şi implementare, Ed.


ş.a.  ALL EDUCATIONAL, 1995 

Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor   110