You are on page 1of 29

Sisteme de gestiune a bazelor de date - Access

Informatia – mesaj purtator de cunostinte cu diferite forme de reprezentare (text, nr,


img, sunet)
- relevanta si accesata in timp real = putere.
Pentru a putea fi prelucrata de calculator informatia trebuie transformata in date =
siruri de cifre binare care pot fi modelate fizic prin impulsuri de curent.
Orice organizatie foloseste un sistem de gestiune pentru realizarea obiectivelor
strategice.
Sistem de gestiune – sistem managerial
- sistem operational
- sistem informational (+sist informatic)
Aplicatia de gestiune – creeaza un sist. informatic pentru organizatie
Sistemul informational se refera la canalele si metodele de trasmitere a informatiilor si
cuprinde sistemul informatic care se refera la automatizarea procedeelor si mijloacelor
de prelucrare a informatiilor.
Sistemul informatic - componente:
Fizica (hardware)
Logica (software – S.O. si aplicatii)
De date (baza de date)
Umana (personalul care concepe, administreaza, utilizeaza BD)
Organizatorica
In cadrul sistemului informatic procesul informational este format din:
Introducerea datelor (pe loturi=batch, direct=online);
Prelucrarea datelor (clasificari, ordonari, calcule, filtre, etc);
Extragerea informatiilor (rapoarte decizii);
Stocarea/arhivarea datelor (din memoria interna pe suportul de memorare).
Sursele care furnizeaza informatia sunt:
1. Fisierul (colectie de date ce descrie o categorie de informatie);
2. Baza de date (descrie activitatea unei organizatii si furnizeaza membrilor
accesul la informatii prezentate in diferite formate);
Depozitul de date (1 sau mai multe BD ce furnizeaza informatii diferitelor categorii de
utilizatori, referitoare la anumite subie
 Sist. BD = ansamblul de colectii organizate de date, impreuna cu descrierea datelor si
a relatiilor dintre ele, care reprezinta complet, corect si coerent universul real al
organizatiei economice prin caracteristicile relevante ale elementelor sale, percepute
de sistem prin semantica lor si prin legaturile dintre acestea. (Gheresim)
 Colectia de date = multitudinea de valori pe care o iau caracteristicile reprezentative
ale unui element din universul real al organizatiei economice, daca la fiecare moment
de timp se aplica asupra lor un predicat, impreuna cu domeniile de definitie ale acestor
caracteristici. (Gheresim)
Componenta sist BD
1. Colectii de date interrelationate;
2. Baza de date;
3. SGBD=DBMS= sistemul de gestiune al BD;
 Access, Oracle, MySql, DB2, Informix, Paradox.
4. Programe de aplicatie;
 Bancara – tranzactii, servicii, promotii;
 Universitara – profesori, studenti, note, orarii, diplome;
 Comert – produse, clienti, furnizori, comenzi, facturi;
5. Utilizatorii
 programatori, administratori bd, operatori
Scopul sist BD
 BD au fost concepute pentru a elimina inconvenientele stocatii datelor in fisiere:
1. Redundanta si inconsistenta datelor – date stocate in mai multe fisiere in
acelasi timp sau in fisiere de formate multiple;
2. Partajarea informatiilor – accesul concomitent la informatie a mai multor
utilizatori;
3. Integritatea datelor
 Restrictii de integritate – parte a codului de program (fisierele
intampina dificultati in a adauga noi restrictii si a le inlocui pe cele
existente)
 Proceduri pentru validarea datelor
4. Securitatea - Autorizare – roluri
- Autentificare – cont (username si parola)
5. Controlul centralizat al datelor – administrator BD;
6. Dezvoltarea standardelor la nivelulul
 organizarii logice a datelor
 limbajelor de programare
Permit trasferul datelor dintr-o BD in alta (XML);
5. Transparenta – utilizatorul poate sa obtina informatii din BD fara sa cunoasca toata
organizarea ei complexa;
6. Independenta datelor
 Fizica – fata de programele de aplicatie
 Logica - independenta fiecarei scheme particulare a unui utilizator fata de
schema generala
Atomicitatea update-urilor - procesul de transfer de fonduri dintr-un cont in altul
trebuie sa fie complet sau sters

Nivele de abstractizare
1. Fizic (al inginerului de sistem):
 Descrie modul de stocare si structurare a datelor pe suportul de memorare:
cilindru, pista, sector, bloc, octet, bit (ex: client).
2. Logic (al programatorului de aplicatie):
 Descrie datele stocate si relatiile dintre ele
 Type client=record
nume: string;
strada: string;
oras: integer;
End;
1. Virtual (al administratorului bazei de date):
 Programele de aplicatie ascund detalii referitoare la tipul datelor, in scopul
securizarii (ex: salariu).
Modele de date- SGBD
 Modelul = o colectie de instrumente pentru descrierea datelor, a relatiilor dintre date, a
semanticii datelor si a restrictiilor.
 Clasificarea modelelor
1. Ierarhice
2. De retea
3. Relationale
4. Orientate obiect
5. Altele (relationale orientate obiect, deductive, distribuite, multibaze, active,
multimedia, online)
 Comenzile SGBD se grupeaza in 3 categorii de limbaje:
1. DDL=Data Definition Language
 Specifica notatii pentru definirea schemei BD
 Compilatorul DDL genereaza un set de tabele stocate in Dictionatul de
date care contine metadate(def si caracteristici)
2. DML=Data Manipulation Language – SQL - permite
 Parcurgerea structurilor si a legaturilor existente;
 Accesul la inregistrari prin adresa sau prin continutul acestora si
actualizarea lor;
 Definirea tranzactiilor si a conditiilor de eroare.
3. DSDL=Data Storage Description Language – permite
 Alocarea spatiilor de memorie;
 Crearea indecsilor asociati cheilor;
 Definirea si izolarea datelor confidentiale.
Access
La baza SGBD Access se afla (Gherasim)
 Modelul relational al datelor
 Modelul orientat pe obiecte (cu evenimente si proprietati)
 Permite definirea, consultarea si actualizarea BD, dar si partajarea datelor intre mai
multi utilizatori (mai mult de 20 de utilizatori pot lucra simultan pe o BD)
 Permite interogarea cu 3 limbaje: QBE(Query by Exemples), SQL (Structured Query
Language) si VBA (Visual Basic for Applications)
 Este compatibil cu tehnologia ActiveX (app client/server).
 O BD MsAccess este o colectie de obiecte:
1. Tabele
2. Formulare
3. Interogari
4. Rapoarte
5. Pagini web
6. Macroinstructiuni
7. Module

Tabele=relatii-entitati
Crearea unei BD incepe cu definirea tabelelor, care sunt utilizate pentru stocarea
datelor.
Pentru eliminarea redundantei si fluidizarea fluxului datelor in BD intr-o tabela se
inscriu date referitoare la o singura entitate (ex: client), prin tehnica normalizarii
datelor.
Coloana = atribut = camp – caracteristici ale entitatii. Fiecarui ii coespund mai multe
proprietati, precum Size (text, no, autono), Format (currency, data), InputMask
(password, date), Validation rule (code), required (not NULL), Indexed (cheia).
Randul = tuplu = inregistrare – valorile caracteristicilor entitatii
Fiecare tabela trebuie sa contina macar un index ce reprezinta cheia primara sau
secundara. Cheia primara poate fi un atribut care identifica in mod unic tuplul,
precum numele sau CNP-ul unui client, dar se prefera sistemul de incrementare
automata.
Indexul cheie primara – prevede cate un pointer unic spre fiecare inregistrare si
reprezinta ordinea de afisare prestabilita.

Normalizarea
Proiectarea unei baze de date prevede construirea unei structuri iniţiale (a câmpurilor
componente şi a caracteristicilor acestora), urmată de ameliorarea acestei structuri
până la obţinerea unei variante optime, normalizate.
Normalizarea unei baze de date reprezintă procesul de transformare succesivă a unei
baze de date relaţionale în vederea aducerii sale la o formă standard optimizată.
Procesul de aducere la o formă normală presupune parcurgerea următoarelor
etape:
aducerea bazei de date la prima formă normală (FN I) – impune eliminarea câmpurilor
compuse şi a celor repetitive;
aducerea bazei de date la a doua formă normală (FN II) – se caracterizează prin lipsa
dependenţelor funcţionale parţiale, deci câmpurile tabelei depind doar de cheia
primară a acesteia;
aducerea bazei de date la a treia formă normală (FN III) – această formă nu conţine
dependenţe funcţionale tranzitive;
pentru formele IV şi V se vor elimina dependenţele multivaloare suplimentare şi
dependenţele joncţiune
Relatii dintre tabele
 Relaţiile dintre tabele se pot clasifica în 4 tipuri:
1. unu la unu – fiecare înregistrare din tabela părinte corespunde unei înregistrări din
tabela copil;
2. unu la mai mulţi – unei înregistrări din tabela părinte îi corespund mai multe
înregistrări din tabela copil;
3. mai mulţi la unu – unei înregistrări din tabela copil îi corespund mai multe înregistrări
din tabela părinte;
4. mai mulţi la mai mulţi – unei înregistrări din tabela părinte îi corespund mai multe
înregistrări din tabela copil şi invers.
 Indexul cheie primara – prevede cate un pointer unic spre fiecare inregistrare si
reprezinta ordinea de afisare prestabilita.

Integritatea referentiala
 Asigura validitatea inregistrarilor
A. In fereastra Edit Relationship se aleg campurile de legatura (cheia primara din tabelul
parinte si cheia externa din tabelul copil),
B. se bifeaza Enforce Referential Integrity si
C. Cascade Update Related Fields (pentru reactualizarea in cascada a campurilor
legate),
D. Cascade Delete Related Records (pentru stergerea in cascada a inregistrarilor
legate).

Avantajele relationarii
 EX: O companie a greşit numele unui produs în toate comenzile completate pentru
clienţi. În modul birocratic, trebuie parcurse toate înregistrările şi corectate manual.
Însă, folosind relaţiile, în loc să stocăm în tabela care conţine toate informaţiile despre
comenzile clienţilor “Comandă_cl” textul explicit al numelui produsului, stocăm doar
un cod al acestuia, iar în baza codului, regăsim numele acestuia, în tabela “relaţionată”
“Produse” (prin intermediul codului). Folosind această abordare, schimbăm doar
numele produsului în acea tabela “Produse”, iar interogarea noastră va afişa numele
corect la toate înregistrările, cu o singură modificare

Realizarea unei interogari


Sintaxa a unei instrucţiuni SQL este foarte complexa, dar are principii foarte clare de
construire:
1. se stabileşte tipul de interogare: select, update, append, crosstab, maketable
query, delete;
2. se stabilesc elementele interogării: tabele, alte interogări din care se va
construi noua interogare şi tipurile de relaţii dintre ele;
3. se stabilesc parametrii (semnul: [între parantezele drepte se trece un text
explicativ, eventual numele parametrului]) şi condiţiile interogării (cuvinte cheie:
WHERE şi HAVING);
4. se rulează interogarea apăsând butonul Run () .

Tipuri de interogări şi exemple:

SELECT- interogare de selecţie

SELECT [Antet].[nrfact], [Articole].[idprod], [Articole].[cant] FROM Antet


INNER JOIN Articole ON [Antet].[nrfact]=[Articole].[nrfact] WHERE
((([Articole].[cant]) Between 20 And 60));

- [selectează nrfact, idprod, cant din tabele ANTET şi ARTICOLE între care exită o
legătură de tip “unu la unu” ( cel mai restrictive tip de legătură) cu condiţia 20 <=
cant <= 60 ]
UPDATE - interogare de actualizare a informaţiei

UPDATE Client INNER JOIN newtable ON Client.nume=newtable.nume SET


newtable.cn = Client.contb;
- [selectează câmpul contb din tabela CLIENT şi îl introduce în câmpul cn din
tabela NEWTABLE ]

APPEND - interogare de inserare a unei noi înregistrări

INSERT INTO Produs (idprod, denumire, furnizor, pret) VALUES ([idprod],


[den], [furn], [pret]);
- [inserează in tabela PRODUS parametrii preluaţi din casete inbox ]
DELETE - interogare de ştergere

DELETE * FROM Produs WHERE idprod=8;


- [şterge din tabela PRODUS toate informaţiile referitoare la produsul cu id 8 ]

CROSSTAB - interogare pentru realizarea unui pivot-table

TRANSFORM Max([Produs].[pret]) AS MaxOfpret SELECT


[Produs].[denumire] FROM Produs GROUP BY [Produs].[denumire] PIVOT
[Produs].[furnizor];
MAKETABLE - interogare de construire a unui nou tabel, din mai multe tabele
sau interogări.

Query By Examples si Structured Query Language

Formulare
 Formularele sunt concepute pentru operatiile de adaugare a datelor in BD, pentru
actualizarea sau stergerea acestora si pentru vizualizarea informatiilor din BD daca
unui anumit control (buton, caseta combo, etc) i se asociaza o interogare de selectie la
un anumit eveniment
 Contin doua categorii de informatii:
1. De structura (marimea formularului, asezarea atributelor si controalelor);
2. Datele – introduse si accesate de utilizator din BD.
Obiectele unui formular pot fi asociate unor campuri din tabele (pentru
vizualizare date) sau obiecte care pot declansa anumite actiuni (introducere date,
actualizare, stergere) la aparitia unui anumit eveniment.

Macro si Module
Macrocomenzi = Pot fi atasate unui formular, raport sau control pentru automatizarea
unor operatii de rutina.
Module = Se creeaza in limbajul Visual Basic for Application si sunt destinate
extinderii functiunilor specifice unei BD.

Integritatea si securitatea BD
Datele stocate trebuie sa respecte fidel realitatea din intreprindere, iar programele de
gestiune a BD sa asigure o stare coerenta a BD, conform cu:
Regulile de integritate semantica (structurale: cantitatea in stoc nu poate fi negativa)
Sincronizarea accesului concurent la date
Siguranta in functionare (in urma unor defectiuni fizice BD trebuie sa se mentina
coerenta)
Securitatea de utilizare (rolurile utilizatorilor si drepturile de acces).
Restrictiile BD
Statice – respectate permanent de date
Ale cheii primare (Ex: valori unice si nenule)
Integritate referentiala (o realizare a cheii externe se va regasi in multimea
realizarilor cheii primare, sau va fi NULL)
Restrictii asupra valorilor/formatului unui sau mai multor campuri (Ex: Data
cerere<=Data inchiriere)
Asupra valorilor obtinute prin operartii de sintetizare - functii matematice,
statistice, financiare, text, etc. (Ex. Avg(varsta)<45ani)
Dinamice – constrangeri ce privesc trecerea de la o stare la alta a unei inregistrari (in
urma modificarii)
Ex: varsta unei persoane nu poate scadea, salariul unui angajat nu poate fi diminuat.

Tranzactia
Set de operatii de actualizare, care fie se executa toate, fie nici una; nu pot fi executate
partial.
Poate fi salvata (commited) sau derulata inapoi (rollback) BD ramane consistenta.
Tranzactii concurente – jurnal gestionat de SGBD care contine informatii despre
inceputul, sfarsitul sau anularea unei tranzactii + back-up (copii de siguranta)
Sincronizarea accesului concurrent la BD
Sisteme cu control “optimist” – toate modificarile de date sunt transferate in variabile
locale si la sfarsit se verifica daca se pot salva;
Sisteme cu control “pesimist”- isi asigura toate precautiile de la inceput, a.i. executiile
neserializabile sunt imposibile; accesul celorlalte tranzactii va fi temporar blocat prin
excludere mutuala cu functiile LOCK(x) si UNLOCK(x)

Blocarea inregistrarilor in Acces


Optimista – blocarea paginilor ce contin inregistrarea curenta in timpul salvarii
acesteia de catre utilizator; astfel inregistrarea va fi read only; exista pericolul de
suprascriere a modificarilor unui utilizator peste cele ale altui utilizator
Pesimista - blocarea paginilor ce contin inregistrarea curenta in timpul editarii acesteia
de catre utilizator; se blocheaza mai multe inregistrari decat este necesar si limiteaza
accesul concurential

Pasii: TOOLS – OPTIONS – ADVANCED


 No Locks – optimista
 All Records – exclusiva (ingheata toate inregistrarile tabelei ce formeaza setul
de inregistrari care contine inregistrarea in curs de modificat)
 Edited Record - pesimista
Securitatea utilizarii
Controlul accesului: identificarea utilizatorilor si a drepturilor de acces acordate
acestora;
Controlul fluxurilor de date pentru a nu ajunge in posesia persoanelor rau intentionate
Controlul de inferenta pentru a evita ca un utilizator sa deduca informatii confidentiale
prin inferenta (folosind datele la care are acces).
Criptogarfie: Semnatura cu cheie privata a U1 Document in clar Verificare de
catre U2 cu cheie publica a lui U1

Sisteme BD
1. Sisteme Client/Servet
2. Baze de date distribuite
3. Baze de date On-line
4. Baze de date active
5. Multibaze (OLAP si DataMining)
6. Baze de date multimedia

Sistemul Client –Server


 Arhitectura CLIENT-SERVER se fondeaza pe un dialog intre doua categorii de
entitati:
 Entitatea CLIENT care interogheaza baza de date
 Entitatea SERVER care gestioneaza baza de date
 Un sistem C/S functioneaza intr-o retea de calculatoare neomogene. Server-ul trebuie
sa se gaseasca intotdeuna la o singura adresa, sau la un set de adrese stabilite. Clientii
pot lansa cererile de oriunde, neavand nevoie de o adresa fixa.
Clientul
Este entitatea care asigura interfata cu utilizatorul
Lanseaza cereri de executare a unor operatii catre o entitate SERVER
Aranjarea intr-o anumita forma a datelor primite de la server, in urma executatii
observatiei.
Serverul
Este entitatea care receptioneaza, interpreteaza si executa cererile (operatiile) lansate
de clienti
Furnizeaza raspunsul corect catre clienti.
Asigura stocarea bazei de date si securitatea acesteia
Reteaua
Asigura comunicarea clientilor cu serverul, prin intermediul unor suporturi software
(drivere) pentru codarea cererilor lansate de clienti catre server, decodarea acestora pe
server si apoi codarea rezultatelor furnizate de server si decodarea acestora la clienti
Variante C/S, dupa G. &O. Gardin
Client server de prezentare
Client server de date
Client server de procedura

Avantajele arhitecturii C/s


Securitatea BD stocate pe server (drepturi de acces)
Utilizarea procedurilor stocate (declansatori – se activeaza automat in functie de
gestiune definite la nivel de server)
Diminuarea traficului in retea (nu se transmite codul ci doar parametrii unei proceduri
stocate)
Reducerea dimensiunii aplicatiilor
Administrarea centralizata a unei BD (cost mic)
Baze de date active
Reactioneaza la evenimente pentru a controla integritatea referentiala, pentru a
gestiona redundantele, pentru a autoriza sau a interzice accesul la datele sale si pentru
a administra comportamentul reactiv al aplicatiilor cu baze de date

BD multidimensionale
Un ansamblu de date constituite prin extractie sau transformare de date din BDO sau
B de fisiere, interne sau externe, variind in timp, organizate multidimensional, si
explorate folosind interogari conventionale sau tehnici specifice de analiza simpla
(Olap) sau analiza avansata (DataMining)
BD operationale sunt organizate pe domenii de activitate (marketing, gestiunea
resurselor umane, financiar-contabil, gestiune vanzari, etc.)
Scop: stocarea datelor despre tranzactiile unui anumit domeniu de gestiune

Studiu de caz Aprovizionarea şi desfacerea produselor finite

O societate comercială se aprovizionează cu produse de la furnizori pe care apoi le desface


către clienţi pe baza comenzilor acestora. Societatea dispune de un nomenclator al
produselor în care sunt consemnate: codul şi denumirea fiecărui produs, unitatea de măsură,
categoria de calitate aferentă şi stocul iniţial. Clienţii firmei sunt persoane juridice cărora li
se solicită: codul fiscal, numele, adresa, numărul de telefon. Comenzile primite sunt
numerotate secvenţial, pe fiecare consemnându-se data recepţionării comenzii şi termenul de
livrare (exprimat în zile) iar, în momentul onorării comenzii, se completează data la care s-a
efectuat livrarea. Pe o comandă pot fi solicitate unul sau mai multe produse în diferite
cantităţi. Preţurile practicate de firmă sunt negociabile cu clienţii şi variabile în timp. Un
client poate realiza mai multe comenzi dar o comandă provine de la un singur client.
Aprovizionările se realizează pe baza facturilor primite de la furnizori. Pentru fiecare
furnizor se cunosc: codul fiscal, numele, adresa şi numărul de telefon. Pe formularul de
factură sunt consemnate numărul, data facturii, cota TVA şi un eventual procent de discount
obţinut de la furnizor. Pe o factură pot fi achiziţionate mai multe produse fiecare într-o
anumită cantitate şi la un anumit preţ de achiziţie. O factură provine de la un singur furnizor.

Cerinţe:
1. Să se determine modelele conceptual şi logic ale bazei de date.
2. Să se realizeze modelul fizic al bazei de date (tabelele şi relaţiile dintre acestea în Access).

La stabilirea tipurilor de date se va avea în vedere că:


a) numele clienţilor pot avea lungime maximă 40 de caractere iar ale produselelor 25 de
caractere
b) termenele de livrare(în zile) sunt numere intregi
c) numerele comenzilor trebuie să fie acordate automat de calculator (a se vedea tipul
Autonumber)
3. Să se implementeze pentru câmpurile din tabele următoarele reguli de validare:
a) Cantităţile comandate trebuie să fie pozitive
b) Preţurile produselor nu pot fi negative şi nu pot depăşi 100.000.000 lei.
c) Termenele de livrare trebuie să fie cuprinse obligatoriu între 10 şi 30 de zile
d) Nu se vor putea înregistra comenzi cu date de livrare anterioare datei de 1 ianurie 2002.
4. Pentru câmpurile nume client , data comandă şi pentru toate câmpurile ce sunt chei
externe se va modifica proprietatea Required astfel încât acestea să devină obligatoriu de
completat.
5. Se vor modifica proprietăţile Default Value pentru câmpurile data comanda şi unitate de
măsură astfel încât datele comenzilor să fie completate automat cu data sistemului de
operare iar în cazul adăugării de noi produse unitatea de măsură implicită să fie “Kg”
6. Să se adauge în baza de date cel putin 10 produse, 10 clienţi 10 furnizori şi 10 comenzi.
Interogarea bazei de date (Queries)

I. Interogari de selectie

Să se realizeze următoarele interogări:


1. Să se afişeze lista clienţilor din provincie care nu au telefon ordonându-se lista
alfabetic.
2. Să se afişeze lista produselor care au ca unitate de măsură litrul sau Kg şi care au stoc
initial sub 1000.
3. Să se afişeze lista comenzilor din ultimul an care nu au fost încă livrate şi, într-un
câmp calculat numit Data Limita, să se determine care este data până la care trebuie
livrate produsele adunând la data comenzii termenul în zile. Se va ordona descrescător
după data limită. Într-un alt câmp calculat numit Vechime se va calcula numărul de
zile care au trecut de la primirea comenzii până în prezent.
4. Să se afişeze lista alfabetică a produselor care au ca unitate de măsură Kg şi, într-un
câmp calculat numit, “De aprovizionat” să se afişeze 20% din stocul iniţial pentru
produsele cu stoc sub 1000 iar pentru produsele cu stoc peste 1000 să se afişeze 10%
din stocul initial. (Obs.: Se va utiliza funcţia IIF)
5. Să se afişeze lista clienţilor care au comandat produsele “zahăr” şi “făină”
II. Interogari parametrizate

6. Să se realizeze o interogare pentru a afişa lista comenzilor primite de la un anumit


client al cărui nume va fi specificat ca parametru în momentul lansării interogării.
7. Să se realizeze o interogare pentru a afişa lista cu numerele, datele şi termenele
comenzilor primite între două date calendaristice specificate în momentul lansării
interogării.
8. Să se realizeze o interogare pentru a afişa toate produsele care au stoc mai mic de o
anumită valoare specificată ca parametru.
III. Interogari de sintetizare a datelor

9. Să se afişeze lista cu cantităţile maxime comandate din fiecare produs.


10. Să se calculeze câte comenzi au fost primite de la fiecare client după 01/01/2003.
11. Să se calculeze valoarea totală a fiecărei comenzi şi într-un alt câmp numit TVA să se
calculeze 19% din valoarea totală a fiecărei comenzi.
III. Interogari de analiză încrucişată (CrossTab Query)

12. Să se afişeze cantitatea totală comandată din fiecare produs de către fiecare client.
Numele produselor vor fi ordonate pe coloane iar ale clienţilor pe linii.
13. Să se afişeze câte comenzi s-au primit pentru fiecare produs în fiecare lună a anului
2002. Lunile anului se vor ordona pe coloane iar produsele pe linii.
IV. Interogări tip acţiune

14. Să se realizeze o interogare de tip Make Table Query pentru a realiza o tabelă intitulată
Clienti2 care să conţină codurile fiscale, denumirile şi adresele clienţilor care nu sunt
din Bucureşti.
15. Să se realizeze o interogare de tip Make Table Query pentru a realiza o tabelă
intitulată Cantităţi care să conţină denumirile şi cantităţile totale comandate din fiecare
produs.
16. Să se realizeze o interogare de tip Update Query pentru a majora cu 5 zile termenele
pentru toate comenzile din luna noiembrie 2002.
17. Să se realizeze o interogare de tip Update Query pentru a diminua cu 10% stocurile
initiale pentru toate produsele.
18. Să se realizeze o interogare de tip Delete Query pentru a şterge din baza de date toate
comenzile din ultimele 100 de zile.
19. Să se realizeze o interogare de tip Append Query pentru a adăuga în tabela Clienti2 şi
clienţii din Bucureşti.

1. SELECT CLIENTI.NumeC, CLIENTI.CodFiscal, CLIENTI.AdresaC, CLIENTI.TelC FROM


CLIENTI WHERE (((CLIENTI.AdresaC)<>"Bucharest") AND ((CLIENTI.TelC) Is Null))

ORDER BY CLIENTI.NumeC;

2. SELECT PRODUSE.NumeProd, PRODUSE.UnitMasura, PRODUSE.StocInitial,


PRODUSE.CategCalitate

FROM PRODUSE WHERE (((PRODUSE.UnitMasura)="Kg" Or (PRODUSE.UnitMasura)="L")


AND ((PRODUSE.StocInitial)<1000));

3. SELECT COMENZI.NrComanda, COMENZI.DataComanda, COMENZI.Termen,


COMENZI.DataLivrare, [DataComanda]+[Termen] AS DataLimita, Date()-[DataComanda] AS
Vechime FROM COMENZI

WHERE (((COMENZI.DataComanda)>#12/30/2007#) AND ((COMENZI.DataLivrare) Is Null))

ORDER BY [DataComanda]+[Termen];

4. SELECT PRODUSE.NumeProd, PRODUSE.UnitMasura, PRODUSE.StocInitial,


PRODUSE.CategCalitate, PRODUSE.CodProd,
IIf([StocInitial]<1000,20*[StocInitial]/100,10*[StocInitial]/100) AS DeAprovizionat

FROM PRODUSE WHERE (((PRODUSE.UnitMasura)="Kg"));

5. SELECT CLIENTI.NumeC, PRODUSE.NumeProd

FROM (CLIENTI INNER JOIN COMENZI ON CLIENTI.CodFiscal = COMENZI.CodFiscal)


INNER JOIN (PRODUSE INNER JOIN CONTINUT_COMANDA ON PRODUSE.CodProd =
CONTINUT_COMANDA.CodProdus) ON COMENZI.NrComanda =
CONTINUT_COMANDA.NrComanda

WHERE (((PRODUSE.NumeProd)="Tofu" Or (PRODUSE.NumeProd)="Queso Cabrales"));


6. SELECT CLIENTI.NumeC, COMENZI.DataComanda, COMENZI.Termen,
PRODUSE.NumeProd, CONTINUT_COMANDA.Cantitate, CONTINUT_COMANDA.PretUnitar

FROM PRODUSE INNER JOIN ((CLIENTI INNER JOIN COMENZI ON CLIENTI.CodFiscal =


COMENZI.CodFiscal) INNER JOIN CONTINUT_COMANDA ON COMENZI.NrComanda =
CONTINUT_COMANDA.NrComanda) ON PRODUSE.CodProd =
CONTINUT_COMANDA.CodProdus

WHERE (((CLIENTI.NumeC) Like [Introduceti numele clientului]));

7. SELECT COMENZI.NrComanda, COMENZI.DataComanda, COMENZI.Termen,


COMENZI.DataLivrare

FROM COMENZI WHERE (((COMENZI.DataComanda) Between [inceput] And [sfarsit]));

8. SELECT CLIENTI.NumeC, Count(COMENZI.NrComanda) AS CountOfNrComanda,


COMENZI.DataComanda

FROM CLIENTI INNER JOIN COMENZI ON CLIENTI.CodFiscal = COMENZI.CodFiscal

GROUP BY CLIENTI.NumeC, COMENZI.DataComanda

HAVING (((COMENZI.DataComanda)>#1/1/2003#))

ORDER BY CLIENTI.NumeC;

9. SELECT PRODUSE.NumeProd, Max(CONTINUT_COMANDA.Cantitate) AS MaxOfCantitate

FROM PRODUSE INNER JOIN CONTINUT_COMANDA ON PRODUSE.CodProd =


CONTINUT_COMANDA.CodProdus

GROUP BY PRODUSE.NumeProd;

10. SELECT CLIENTI.NumeC, Count(COMENZI.NrComanda) AS CountOfNrComanda

FROM CLIENTI INNER JOIN COMENZI ON CLIENTI.CodFiscal = COMENZI.CodFiscal

WHERE (((COMENZI.DataComanda)>#1/1/2003#))

GROUP BY CLIENTI.NumeC

ORDER BY CLIENTI.NumeC;
11. SELECT CLIENTI.NumeC, Sum([Cantitate]*[PretUnitar]) AS VALTOT,
Sum([Cantitate]*[PretUnitar]*19/100) AS TVA

FROM (CLIENTI INNER JOIN COMENZI ON CLIENTI.CodFiscal = COMENZI.CodFiscal)


INNER JOIN CONTINUT_COMANDA ON COMENZI.NrComanda =
CONTINUT_COMANDA.NrComanda

GROUP BY CLIENTI.NumeC ORDER BY CLIENTI.NumeC;

12. TRANSFORM Sum(CONTINUT_COMANDA.Cantitate) AS SumOfCantitate

SELECT CLIENTI.NumeC

FROM (CLIENTI INNER JOIN COMENZI ON CLIENTI.CodFiscal = COMENZI.CodFiscal)


INNER JOIN (PRODUSE INNER JOIN CONTINUT_COMANDA ON PRODUSE.CodProd =
CONTINUT_COMANDA.CodProdus) ON COMENZI.NrComanda =
CONTINUT_COMANDA.NrComanda

GROUP BY CLIENTI.NumeC

PIVOT PRODUSE.NumeProd;

13. TRANSFORM Count(CONTINUT_COMANDA.NrComanda) AS CountOfNrComanda

SELECT PRODUSE.NumeProd

FROM COMENZI INNER JOIN (PRODUSE INNER JOIN CONTINUT_COMANDA ON


PRODUSE.CodProd = CONTINUT_COMANDA.CodProdus) ON COMENZI.NrComanda =
CONTINUT_COMANDA.NrComanda

WHERE (((COMENZI.DataComanda)>#1/1/2008#))

GROUP BY PRODUSE.NumeProd

PIVOT Month([DataComanda]);

SAU

TRANSFORM Count(CONTINUT_COMANDA.NrComanda) AS CountOfNrComanda

SELECT PRODUSE.NumeProd

FROM COMENZI INNER JOIN (PRODUSE INNER JOIN CONTINUT_COMANDA ON


PRODUSE.CodProd = CONTINUT_COMANDA.CodProdus) ON COMENZI.NrComanda =
CONTINUT_COMANDA.NrComanda

WHERE (([Comenzi].[DataComanda]>#1/1/2008#))

GROUP BY PRODUSE.NumeProd

PIVOT Mid([Comenzi.DataComanda],4,2);
14. SELECT CLIENTI.CodFiscal, CLIENTI.NumeC, CLIENTI.AdresaC INTO CLIENTI2

FROM CLIENTI WHERE (((CLIENTI.AdresaC)<>"Bucharest"));

15. SELECT PRODUSE.NumeProd, Sum(CONTINUT_COMANDA.Cantitate) AS SumOfCantitate


INTO Cantitati

FROM PRODUSE INNER JOIN CONTINUT_COMANDA ON PRODUSE.CodProd =


CONTINUT_COMANDA.CodProdus

GROUP BY PRODUSE.NumeProd;

16. UPDATE COMENZI SET COMENZI.Termen = COMENZI.Termen+5

WHERE (((Month([DataComanda]))=11) AND ((Year([DataComanda]))=2002));

SAU

UPDATE COMENZI SET COMENZI.Termen = COMENZI.Termen+5

WHERE (((CInt(Mid([COMENZI].[DataComanda],4,2)))=1));

17. UPDATE PRODUSE SET PRODUSE.StocInitial=PRODUSE.StocInitial*0.9;

18. DELETE * FROM COMENZI WHERE WHERE (((COMENZI.[DataComanda])>Date()-100));

SAU

DELETE * FROM COMENZI WHERE DataComanda between Date() and Date()-1;

19. INSERT INTO CLIENTI2 ( CodFiscal, NumeC, AdresaC )

SELECT CLIENTI.CodFiscal, CLIENTI.NumeC, CLIENTI.AdresaC FROM CLIENTI

WHERE (((CLIENTI.AdresaC)="Bucharest"));

20. SELECT Count(FACTURA.DataFactura) AS NrFacturi FROM FACTURA

WHERE (((Year([DataFactura]))=2008));

21. SELECT PRODUSE.NumeProd, PRODUSE.StocInitial, CONTINUT_COMANDA.Cantitate,


[StocInitial]-[Cantitate] AS StocFinal
FROM PRODUSE INNER JOIN CONTINUT_COMANDA ON PRODUSE.CodProd =
CONTINUT_COMANDA.CodProdus;

22. SELECT CONTINUT_COMANDA.NrComanda, Min(CONTINUT_COMANDA.PretUnitar) AS


[Min], Min([PretUnitar]/10000) AS Ron,
(IIf([PretUnitar]/10000<1,'de_recalculat',Int([PretUnitar]/10000))) AS Observatii

FROM PRODUSE INNER JOIN (COMENZI INNER JOIN CONTINUT_COMANDA ON


COMENZI.NrComanda = CONTINUT_COMANDA.NrComanda) ON PRODUSE.CodProd =
CONTINUT_COMANDA.CodProdus

GROUP BY CONTINUT_COMANDA.NrComanda,
(IIf([PretUnitar]/10000<1,'de_recalculat',Int([PretUnitar]/10000)));

Formulare Access

1. Să se realizeze un formular pentru actualizarea informaţiilor privind clienţii:

2. Să se realizeze un formular pentru a vizualiza produselele care au ca unitate de măsură


KG. Se va calcula stocul total in Kg.
3. Să se realizeze un formular cu subformular pentru a vizualiza comenzile şi conţinutul
acestora. Se va calcula valoarea totală a fiecărei comenzi. Codurile clienţilor şi ale
produselor vor fi selectate prin intermediul unor controale de tip ComboBox.
1. Să se realizeze un formular prin intermediul căruia să poată fi accesate formularele
proiectate anterior. Se va specifica faptul că acest formular să fie automat afişat la
deschiderea bazei de date.

2. Să se realizeze un formular pentru actualizarea informaţiilor privind furnizorii.


3. Să se realizeze un formular cu subformular pentru adăugarea facturilor de la furnizori.
Se vor crea liste tip ComboBox pentru a selecta furnizorii de la care se primesc
facturile şi pentru a selecta produsele aprovizionate. Se va calcula Total valoare,
Total TVA şi Total de plată.
Rapoarte Access

1. Să se realizeze un raport pentru a afişa lista cu informaţiile privitoare la clienţi. Clienţii vor fi
ordonaţi alfabetic. Se va adăuga raportului o coloană intitulată Numar curent în care se vor numerota
liniile raportului.

2. Să se realizeze un raport pentru a lista la imprimantă o anumită comandă a cărui număr va fi


solicitat ca parametru în momentul deschiderii raportului (raportul se va baza pe o interogare
parametrizată). Se va calcula total valoare.
3. Să se realizeze un raport care să afişeze pentrui fiecare produs numerele comenzilor şi cantităţile
comandate. Se vor calcula totaluri pe produse.

4. Să se realizeze un raport pentru a lista conţinutul facturilor de aprovizionare primite în ultimele


600 de zile.
5. Să se realizeze un raport pentru a lista informaţiile privind un anumit furnizor al cărui nume va fi
solicitat ca parametru în momentul deschiderii raportului (interogare cu parametri)

Comenzi macro

1. Se doreşte realizarea unui meniu pentru a facilita utilizatorilor accesarea rapoartelor proiectate la
cerinţele anterioare.

Raportul se va realiza prin intermediul unui MACRO şi va conţine următoarele opţiuni:

Lista Clienti, Lista Cantitati comandate, Tipareste Comanda, Iesire din Program
2. Să se realizeze o comandă macro intitulată AutoKeys pentru a defini următoarele combinaţii de la
tastatură:

CTRL+C : deschide formular Clienţi

CTRL+M : deschide formular Meniu

CTRL+P : deschide formular Produse

Cerinte suplimentare

Interogari

1. Sa se calculeze numarul de facturi primite in fiecare luna a anului 2004.

2. Pe baza stocurilor initiale si a cantitatilor livrate de pe comenzi sa se determine stocul ramas


din fiecare produs.

3. Pentru fiecare produs sa se calculeze pretul minim pe baza comenzilor, sa se transforme


acest prêt minim in lei grei si intr-o coloana numita Observatii sa se afiseze « de recalculat »
pentru produsele cu prêturile minime subunitare iar pentru celelalte sa se afiseze partea
intreaga
XML

You might also like