+ All Categories
Home > Documents > Antrenament ACCESSibil

Antrenament ACCESSibil

Date post: 26-Sep-2015
Category:
Upload: nistor-andreea-maria
View: 65 times
Download: 0 times
Share this document with a friend
Description:
Acees 2010
58
1 MODELE DE FIŞIERE ACCESS PENTRU ANTRENARE 1 GESTIUNE PRODUSE FINITE .............................................................................................................. 2 1.1 STRUCTURA BAZEI DE DATE ................................................................................................................2 1.2 SCHEMA BAZEI DE DATE ..................................................................................................................... 2 1.3 RESTRICŢII ..........................................................................................................................................3 1.3.1 Restrictii la nivel de atribut .........................................................................................................3 1.3.2 Restrictii la nivel de inregistrare .................................................................................................3 1.4 POPULAREA CU DATE .......................................................................................................................... 3 1.5 INTEROGĂRI ........................................................................................................................................4 1.5.1 Filtrarea şi ordonarea directă a datelor dintr-o tabelă .................................................................4 1.5.2 Actualizarea directă a datelor .....................................................................................................4 1.5.3 Crearea de interogări cu instrumente de tip Wizard ...................................................................5 1.5.4 Definirea interogărilor prin Query Design..................................................................................7 1.5.5 Interogări SQL .......................................................................................................................... 10 1.6 RAPOARTE ........................................................................................................................................13 1.6.1 Asistentul de rapoarte ...............................................................................................................13 1.6.2 Raport simplu din două tabele ..................................................................................................15 1.6.3 Raport cu gruparea înregistrărilor şi subtotaluri .......................................................................16 1.7 FORMULARE......................................................................................................................................18 2 EVIDENŢĂ STUDENŢI ........................................................................................................................ 21 2.1 Crearea tabelelor şi definirea restricţiilor ........................................................................................ 21 1. Crearea tabelelor şi declararea valorilor implicite ....................................................................21 2. Reguli de validare ..................................................................................................................... 21 3. Declararea restricţiilor referenţiale ........................................................................................... 22 2.2 Editarea tabelelor şi navigarea prin înregistrări ...............................................................................22 2.3 Obţinerea de informaţii din baza de date ......................................................................................... 22 1. Setul nr. 1 de întrebări ...............................................................................................................23 2. Setul nr. 2 de întrebări ...............................................................................................................25 3. Setul nr. 3 de întrebări ...............................................................................................................25 4. Setul nr. 4 de întrebări...............................................................................................................25 5. Setul nr. 5 de întrebări ...............................................................................................................26 6. Setul nr. 6 de întrebări ...............................................................................................................27 7. Setul nr. 7 de întrebări ...............................................................................................................28 3 EVIDENŢA VÂNZĂRILOR ................................................................................................................. 29 3.1 Detalii bază date ............................................................................................................................... 29 3.2 Schema bazei de date ....................................................................................................................... 30 3.3 Interogări ..........................................................................................................................................30 4 MODELE LUCRĂRI PRACTICE ......................................................................................................... 49 Lucrarea practică nr. 1 ........................................................................................................................... 49 Lucrarea practică nr. 2 ........................................................................................................................... 50 Lucrarea practică nr. 3 ........................................................................................................................... 51 Lucrarea practică nr. 4 ........................................................................................................................... 53 Lucrarea practică nr. 5 ........................................................................................................................... 55 Note 1. Este posibil să fie anumite “scăpări”, materialul fiind lucrat în timp (muuult timp)printre picături”. 2. În anumite locuri din document există o zonă în care se face trimitere la fişierul pe care este bine de lucrat, fişier care se găseşte în secţiunea Attachments (Ataşamente). Zona arată cam aşa: Pentru antrenare a se descărca Baza de date se află în cadrul acestui document PDF ACCDB.accdb gestiune produse finite - simpla.accdb Baza de date în forma în care se pot stabili cheile primare, introdus valori implicite, reguli de validare etc.
Transcript
  • 1

    MODELE DE FIIERE ACCESS PENTRU ANTRENARE

    1 GESTIUNE PRODUSE FINITE .............................................................................................................. 2

    1.1 STRUCTURA BAZEI DE DATE ................................................................................................................ 2 1.2 SCHEMA BAZEI DE DATE ..................................................................................................................... 2 1.3 RESTRICII .......................................................................................................................................... 3

    1.3.1 Restrictii la nivel de atribut ......................................................................................................... 3 1.3.2 Restrictii la nivel de inregistrare ................................................................................................. 3

    1.4 POPULAREA CU DATE .......................................................................................................................... 3 1.5 INTEROGRI ........................................................................................................................................ 4

    1.5.1 Filtrarea i ordonarea direct a datelor dintr-o tabel ................................................................. 4 1.5.2 Actualizarea direct a datelor ..................................................................................................... 4 1.5.3 Crearea de interogri cu instrumente de tip Wizard ................................................................... 5 1.5.4 Definirea interogrilor prin Query Design .................................................................................. 7 1.5.5 Interogri SQL .......................................................................................................................... 10

    1.6 RAPOARTE ........................................................................................................................................ 13 1.6.1 Asistentul de rapoarte ............................................................................................................... 13 1.6.2 Raport simplu din dou tabele .................................................................................................. 15 1.6.3 Raport cu gruparea nregistrrilor i subtotaluri ....................................................................... 16

    1.7 FORMULARE...................................................................................................................................... 18

    2 EVIDEN STUDENI ........................................................................................................................ 21 2.1 Crearea tabelelor i definirea restriciilor ........................................................................................ 21

    1. Crearea tabelelor i declararea valorilor implicite .................................................................... 21 2. Reguli de validare ..................................................................................................................... 21

    3. Declararea restriciilor refereniale ........................................................................................... 22 2.2 Editarea tabelelor i navigarea prin nregistrri ............................................................................... 22 2.3 Obinerea de informaii din baza de date ......................................................................................... 22

    1. Setul nr. 1 de ntrebri ............................................................................................................... 23 2. Setul nr. 2 de ntrebri ............................................................................................................... 25 3. Setul nr. 3 de ntrebri ............................................................................................................... 25 4. Setul nr. 4 de ntrebri ............................................................................................................... 25 5. Setul nr. 5 de ntrebri ............................................................................................................... 26 6. Setul nr. 6 de ntrebri ............................................................................................................... 27 7. Setul nr. 7 de ntrebri ............................................................................................................... 28

    3 EVIDENA VNZRILOR ................................................................................................................. 29 3.1 Detalii baz date ............................................................................................................................... 29 3.2 Schema bazei de date ....................................................................................................................... 30 3.3 Interogri .......................................................................................................................................... 30

    4 MODELE LUCRRI PRACTICE ......................................................................................................... 49 Lucrarea practic nr. 1 ........................................................................................................................... 49 Lucrarea practic nr. 2 ........................................................................................................................... 50 Lucrarea practic nr. 3 ........................................................................................................................... 51 Lucrarea practic nr. 4 ........................................................................................................................... 53 Lucrarea practic nr. 5 ........................................................................................................................... 55

    Note 1. Este posibil s fie anumite scpri, materialul fiind lucrat n timp (muuult timp) printre picturi.

    2. n anumite locuri din document exist o zon n care se face trimitere la fiierul pe care este bine de lucrat, fiier care se gsete n seciunea Attachments (Ataamente). Zona arat cam aa:

    Pentru antrenare a se descrca Baza de date se afl n cadrul acestui document PDF

    ACCDB.accdb

    gestiune produse finite - simpla.accdb Baza de date n forma n care se pot stabili cheile primare, introdus valori implicite, reguli de validare etc.

  • 2

    1 GESTIUNE PRODUSE FINITE

    1.1 STRUCTURA BAZEI DE DATE1 Tabela Denumire atribut Tip dat

    i Lungime Tabela Denumire atribut Tip dat Lungime

    Documente de intrare

    numar nota intrare data document cod gestiune

    Text

    Date/Time

    Text

    8

    Short Date

    8

    Incasari

    numar document data document cod client suma tip de document

    Text

    Date/Time

    Text

    Number

    Text

    S

    Short Date

    8

    Single

    20

    Linii in documente

    numar nota intrare cod produs cantitate

    Text

    Text

    Number

    8

    8

    Single

    Produse cod produs denumire produs unitate de msur pret stoc

    Text

    Text

    Text

    Number

    Number

    8

    20

    3

    Single

    Single

    Avize de expeditie

    numar aviz data aviz cod gestiune cod client

    Text

    Date Time

    Text

    Text

    8

    Short Date

    8

    8

    Clienti

    cod client denumire client cod localitate sold

    Text

    Text

    Text

    Number

    8

    20

    4

    Single

    Linii in avize

    numar aviz cod produs cantitate procent tva pret

    Text

    Text

    Number

    Number

    Number

    8

    8

    Single

    Byte

    Single

    Localitati

    cod localitate denumire localitate denumire judet

    Text

    Text

    Text

    8

    20

    20

    Gestiune

    cod gestiune denumire gestiune nume gestionar

    Text

    Text

    Text

    8

    20

    20

    Cmpurile care au coninut numeric, dar nu sunt folosite n calcule pot fi configurate ca de tip Text, fiind mai uor de gestionat.

    Cheia primar se seteaz dnd clic dreapta pe cmpul stabilit ca avnd acest rol i alegnd din meniul contextual opiunea Primary Key. Aceeai opiune poate fi aleas din meniul Design.

    n cazul n care este nevoie de cheie primar compus, se selecteaz primul cmp, apoi se alunec spre cellalt, dac sunt alturate sau se ine apsat tasta Ctrl i se apas i pe cellalt cmp.

    Pentru antrenare a se descrca Baza de date se afl n cadrul acestui document PDF

    ACCDB.accdb

    gestiune produse finite - simpla.accdb Baza de date n forma n care se pot stabili cheile primare, introdus valori implicite, reguli de validare etc.

    1.2 SCHEMA BAZEI DE DATE 1. Pentru a crea legturile ntre tabele, se alege, din meniul Database Tools, opiunea Relationships. Dac este aleas prima

    dat pentru respectiva baz de date, va aprea un formular de unde se pot introduce tabelele. Dac a mai fost apelat aceast opiune pentru acea baz de date, pentru a mai aduga tabele: - fie se alege din meniul Design, butonul Show Table; - fie se d clic dreapta pe zona gri unde sunt tabelele i se alege, din meniul contextual, aceeai opiune Show Table; - fie se d clic n panoul din stnga unde sunt tabelele, pe tabela dorit i, innd apsat butonul mouse-ului, se trage

    peste fundalul gri, unde sunt tabelele.

    2. Se d clic pe cheia primar din tabela-printe, inndu-se apsat butonul stnga al mouse-ului, i se trage mouse-ul peste tabela-copil, elibernd butonul mouse-ului peste cheia strin (corespondentul cheii primare din tabela printe). Va aprea un formular precum cel de jos. n cazul n care nu apare corespondena cheie primar cheie strin, se poate schimba dnd clic pe cmpul eronat i alegerea, din combobox.

    De regul, se bifeaz primele dou casete (Enforce Referential Integrity i Cascade Update Related Fields)

    1 Cmpurile colorate cu bleumarin sunt cheile primare

  • Gestiune produse finite

    3

    1.3 RESTRICII

    1.3.1 Restrictii la nivel de atribut2 1. n tabela Clienti, denumirea clientului s fie obligatoriu cu majuscule.

    Validation Rule: StrComp(UCase([denumire client]);[denumire client];0)=0

    2. Validation Text: "DENUMIREA CLIENTULUI - CU MAJUSCULE !!!" 3. n tabela Linii in documente, cantitatea trebuie s fie pozitiv.

    Validation Rule: >0 Validation Text: CANTITATEA TREBUIE SA FIE POZITIVA!!!

    4. Tabela Produse, unitate de masura s aib prima liter scris cu majuscule. Validation Rule

    3: StrComp(Left(UCase([unitate de masura]);1);Left([unitate de masura];1);0)=0

    Validation Text: "INTRODUCETI PRIMA LITERA MAJUSCULA !!!"

    1.3.2 Restrictii la nivel de inregistrare4 n tabela Incasari, pentru chitante suma trebuie s fie mai mic de 500 de lei:

    Validation Rule: IIf(UCase([tip de document])="CHITAN";IIf([suma]

  • Gestiune produse finite

    4

    Pentru antrenare a se descrca Baza de date se afl n cadrul acestui document PDF

    ACCDB.accdb

    gestiune produse finite - populata.accdb Baza de date pentru antrenarea interogrilor, formularelor, rapoartelor etc.

    1.5 INTEROGRI

    1.5.1 Filtrarea i ordonarea direct a datelor dintr-o tabel5

    [Ex. 1] S se identifice clienii din localitatea cu codul 1002, folosindu-se filtrarea direct a datelor.

    Se d clic dreapta pe cmpul unde se dorete a se face filtrarea, iar din meniul contextual se alege una din variantele dorite.

    Dup cum se constat, pe lng opiunea avansat Text Filters (dac cmpul este configurat de tip Number, apare

    Number Filters), se poate face filtrare rapid, funcie de nregistrarea pe care ne aflm (n cazul de fa 1002)

    1.5.2 Actualizarea direct a datelor

    Se d clic dreapta pe banda din stnga nregistrrilor, pentru a se selecta tot rndul, apoi se alege, din meniu, opiunea dorit.

    5 Se folosete doar pentru a obine rezultate rapide, dar nu se prea practic ntr-o manier profesionist.

  • Gestiune produse finite

    5

    Adugare

    tergere

    1.5.3 Crearea de interogri cu instrumente de tip Wizard

    1.5.3.1 Crearea unei interogri cu Simple Query Wizard

    [Ex. 2] S se obin o list cu toi clienii i toate localitile din care acetia fac parte. Lista trebuie s conin numele clienilor i numele localitilor.

    Din meniul Create Query Wizard

    1.5.3.2 Crearea unei interogri cu Crosstab Query Wizard

    [Ex. 3] S se creeze o list cu ncasrile de la fiecare client pe tipuri de documente. Lista trebuie s conin pe prima coloan clienii i cte o coloan pentru fiecare tip de document. La intersecia fiecrui client cu fiecare tip de document trebuie s apar suma ncasrilor.

  • Gestiune produse finite

    6

    sau sau

    TRANSFORM Sum([suma]) AS SumOfsuma SELECT [cod client], Sum([suma]) AS [Total suma] FROM incasari GROUP BY [cod client] PIVOT [tip de document]

  • Gestiune produse finite

    7

    1.5.4 Definirea interogrilor prin Query Design6 Pentru a ajunge la aceste interogri, din meniul Create Query Design se ajunge la formularul Show Table. Se pot

    aduga tabelele prin mai multe metode:

    Dublu clic pe tabela/tabelele ce se doresc a fi interogate (este i metoda cea mai comod), sau

    Clic pe fiecare tabel n parte i apsarea, de fiecare dat a butonului Add, sau

    Selectarea tabelelor necesare (dac e nevoie, la selecie, se poate folosi i tasta Ctrl sau Shift, dup caz), apoi apsarea butonului Add

    Obs.

    Adugarea de mai multe ori a unei tabele nu trebuie s sperie. Dup nchiderea formularului Show Table, pur i simplu, se d clic pe tabela inutil i apoi tasta Delete.

    Dac se dorete a se mai include n interogare i alt tabel, se poate apela din nou formularul Show Table, fie din meniul Design, fie dnd clic dreapta pe fundalul unde sunt afiate simbolurile tabelelor i alegerea opiunii Show Table.

    1.5.4.1 Interogri de selecie

    [Ex. 4] S se ntocmeasc lista clienilor din localitatea cu codul 1002. lista va cuprinde numai denumirea clienilor.

    SELECT [denumire client] FROM clienti WHERE [cod localitate]="1002"

    Dac, n loc de SELECT, din meniul QUERY se alege opiunea Make-Table Query, se poate crea o nou tabel cu rezultatul respectivei interogri. Mult mai simplu este, introducerea la fraza SQL, expresia INTO si numele noii tabele:

    SELECT [denumire client] INTO [Tabela Noua] FROM clienti WHERE [cod localitate]="1002"

    Parametru

    Pentru realizarea unui parametru cu specificaie clar a tipului de dat solicitat, se alege din meniul Design, opiunea Parameters, unde, n formularul ce apare se introduce expresia ce solicit inserarea unui element.

    Aceeai expresie se introduce cu rol de criteriu.

    6 Ca i n exemplificrile de mai sus, vom prezenta la fiecare interogare utiliznd Query Design i alternativa SQL.

  • Gestiune produse finite

    8

    PARAMETERS [Introdu codul localitatii] Text ( 255 ); SELECT [denumire client], [cod localitate] FROM clienti WHERE [cod localitate]=[Introdu codul localitatii]

    [Ex. 5] Care este coninutul avizului de expediie cu numrul 1002. lista va conine cmpurile: data aviz, denumire gestiune, denumire client, denumire localitate (localitatea clientului), denumire produs, cantitate, procent TVA, pre.

    SELECT [avize de expeditie].[numar aviz], [data aviz], [denumire gestiune], [denumire client], [denumire localitate], [denumire produs], cantitate, [procent TVA], [linii in avize].pret FROM produse INNER JOIN ((gestiune INNER JOIN ( (localitati INNER JOIN clienti

    ON localitati.[cod localitate] = clienti.[cod localitate]) INNER JOIN [avize de expeditie] ON clienti.[cod client] = [avize de expeditie].[cod client]) ON gestiune.[cod gestiune] = [avize de expeditie].[cod gestiune]) INNER JOIN [linii in avize] ON [avize de expeditie].[numar aviz] = [linii in avize].[numar aviz]) ON produse.[cod produs] = [linii in avize].[cod produs] WHERE [avize de expeditie].[numar aviz]="1002"

    Obs. Cmpurile [numar aviz] i pret au nevoie de referin la tabele deoarece, n interogarea dat, se gsesc n cel puin dou tabele. La jonciuni, ns este evident c trebuie i referina pentru a ti de unde este cheia primar, respectiv cheia strin.

    1.5.4.2 Interogri de adugare

    [Ex. 6] Introducei n tabela Clieni clientul SC BENNY HILL S.R.L. cu codul 1008, din localitatea cu codul 1001, ce are soldul 777.

    Se apeleaz, ca la interogarea de selecie, meniul Create Query Design, doar c, din Show Table, nu se adaug nicio tabel, ci se apas Close. Apoi, din meniul Design se alege opiunea Append Query (sau dnd clic dreapta pe fundalul unde ar fi fost tabelele.

  • Gestiune produse finite

    9

    INSERT INTO clienti ( [cod client], [denumire client], [cod localitate], sold ) SELECT 1008, "SC BENNY HILL SRL", 1001, 777

    1.5.4.3 Interogri de modificare

    [Ex. 7] S se modifice pentru clientul cu codul 1008 soldul n 888

    UPDATE clienti SET sold = 888 WHERE [cod client]="1008"

    1.5.4.4 Interogri de tergere

    [Ex. 8] tergei clientul cu codul 1008

    DELETE * FROM clienti WHERE [cod client]="1008"

    1.5.4.5 Interogare folosind dou tabele

    SELECT [denumire client], [denumire localitate] FROM localitati INNER JOIN clienti ON localitati.[cod localitate] = clienti.[cod localitate]

  • Gestiune produse finite

    10

    1.5.5 Interogri SQL

    1.5.5.1 Primele argumente ale interogrilor SQL Formatul specific unei interogri: SELECT cmp_1, cmp_2, , cmp_n FROM tabel_1, tabel_2, ., tabel_n WHERE condiie ORDER BY cmp_i, cmp_j

    [Ex. 9] Lista clienilor din localitatea cu codul 1002. Lista va cuprinde numai denumirea clienilor.

    SELECT [denumire client] FROM clienti WHERE [cod localitate]= "1002"

    Obs: Constantele de tip text pot fi scrise ntre ghilimele () sau apostrof ()

    [Ex. 10] Care sunt clienii din localitatea cu codul 1006 care au soldul >1000. Lista va cuprinde: denumire

    client, cod client.

    SELECT [denumire client], [cod client] FROM clienti WHERE [cod localitate]="1006"

    AND sold>1000

    Obs: Pot fi folosii i operatorii logici (AND/OR/NOT)

    [Ex. 11] Care sunt documentele de intrare emise ntre 15 februarie i 15 martie 2006. Lista va cuprinde numrul i data documentului.

    SELECT [numar nota intrare], [data document] FROM [documente de intrare] WHERE [data document]>=#2006/02/15# AND [data document]

  • Gestiune produse finite

    11

    [Ex. 16] Care sunt codurile produselor ce apar n documentele de intrare sau n avizele de expediie? SELECT [cod produs] FROM [linii in documente]

    UNION SELECT [cod produs] FROM [linii in avize]

    Obs: Cu ajutorul operatorului UNION se realizeaz reuniunea a dou sau mai multe interogri. Se elimin automat liniile identice. Dac se dorete obinerea tuturor liniilor din respectivele mulimi, se folosete clauza ALL Este obligatoriu ca, numrul cmpurilor din tabelele reunite s fie egal.

    [Ex. 17] ntocmii fia produsului avnd codul 1001 (fia produsului conine stocul iniial, intrrile i ieirile pentru produsul respectiv)

    SELECT 'Stoc initial' AS TipDoc, SPACE(8) AS NrDoc, stoc AS Cantitate FROM produse WHERE [cod produs] = '1001'

    UNION SELECT 'Nota intrare', [numar nota intrare], cantitate FROM [linii in documente] WHERE [cod produs]='1001'

    UNION SELECT 'Aviz de expeditie', [numar aviz], cantitate FROM [linii in avize]

    WHERE [cod produs]='1001'

    Obs: Funcia SPACE returneaz un ir de caractere spaiu de o anumit lungime.

    [Ex. 18] ntocmii fia produsului avnd codul 1001, n care ordinea liniilor din rezultat s fie ordinea cronologic de apariie a documentelor (prima linie va fi ocupat de soldul iniial)

    SELECT #2006-01-01# AS Data, 1 AS Ord, 'Stoc initial' AS TipDoc, SPACE(8) AS NrDoc, Stoc AS Cantitate FROM produse WHERE [cod produs]='1001'

    UNION SELECT [data document], 2, 'Nota intrare', i.[numar nota intrare], cantitate FROM [linii in documente] L, [documente de intrare] i

    UNION SELECT [data aviz], 3, 'Aviz de expeditie', a.[numar aviz], cantitate FROM [linii in avize] L, [avize de expeditie] a

    WHERE L.[numar aviz] = a.[numar aviz] AND [cod produs]='1001'

    [Ex. 19] Care sunt clienii de tip SRL8? SELECT * FROM clienti WHERE [denumire client] LIKE '*SRL*'

    [Ex. 20] Care sunt gestionarii care au numele de familie format din 7 caractere i se termin n escu9?

    SELECT * FROM gestiune WHERE UCASE([nume gestionar]) LIKE '???ESCU*'

    [Ex. 21] ntocmii lista clienilor din judeul Iai, Vaslui, Suceava, Botoani. Varianta 1) Varianta 2) Se poate i prin utilizarea operatorului logic OR

    SELECT c.* FROM clienti c, localitati l WHERE c.[cod localitate]=l.[cod localitate] AND l.[denumire judet] IN ('IS','VS', 'SV', 'BT')

    Obs: Operatorul IN este folosit pentru a testa dac o expresie se regsete ntr-o list de valori.

    SELECT c.* FROM clienti c, localitati l WHERE c.[cod localitate]=l.[cod localitate] AND (l.[denumire judet] = 'IS' OR l.[denumire judet] = 'VS' OR l.[denumire judet] = 'SV'

    OR l.[denumire judet] = 'BT')

    Varianta 3) Mulimea n care caut IN nu e neaprat o list de valori; poate fi mulimea obinut dintr-o subinterogare SELECT * FROM clienti WHERE [cod localitate] IN

    (SELECT[cod localitate] FROM localitati WHERE [denumire judet] IN ('IS', 'VS', 'SV', 'BT'))

    8 Caracterul asterix (*) nlocuiete un ir de caractere 9 Semnul ntrebrii (?) nlocuiete un singur caracter.

  • Gestiune produse finite

    12

    1.5.5.3 Funcii de agregare

    COUNT, SUM, AVG, MIN, MAX [Ex. 22] Ci clieni aveau soldul mai mare ca zero?

    SELECT COUNT (*)

    FROM clienti WHERE sold>0

    [Ex. 23] Ci clieni sunt din judeul Iai? SELECT COUNT (*)

    FROM clienti WHERE [cod localitate] IN (

    SELECT [cod localitate] FROM localitati WHERE [denumire judet]='IS')

    [Ex. 24] Cte documente de intrare s-au ntocmit n gestiunea lui Popescu n anul 2006 SELECT COUNT (*) FROM gestiune g, [documente de intrare] d WHERE g.[cod gestiune]=d.[cod gestiune]

    AND UCASE([nume gestionar]) LIKE '*POPESCU*' AND YEAR([data document])=2006

    [Ex. 25] Care este valoarea ncasrilor de la clientul cu codul 1001?

    SELECT SUM(suma) AS Total FROM incasari WHERE [cod client]='1001'

    [Ex. 26] Care a fost suma total a soldurilor clienilor? SELECT SUM(sold) AS Total

    FROM clienti

    [Ex. 27] Care este suma ncasat de la clienii din municipiul Iai? Varianta 1) Varianta 1) Folosind o subinterogare i operatorul IN

    SELECT SUM(i.suma) AS Total FROM incasari i, clienti c, localitati l WHERE i.[cod client]=c.[cod client] AND c.[cod localitate]=l.[cod localitate] AND UCASE([denumire localitate]) LIKE 'IA?I'

    SELECT SUM(suma) AS Total FROM incasari WHERE [cod client] IN ( SELECT [cod client] FROM clienti c, localitati l WHERE c.[cod localitate]=l.[cod localitate] AND UCASE([denumire localitate]) LIKE 'IA?I')

    Varianta 2) Folosind o subinterogare i operatorul IN, dar o subinterogare mai mic

    Varianta 3) Folosind o subinterogare i operatorul NOT IN

    SELECT SUM(i.suma) AS Total FROM incasari i, clienti c WHERE i.[cod client]=c.[cod client]

    AND c.[cod localitate] IN ( SELECT [cod localitate] FROM localitati

    WHERE UCASE([denumire localitate]) LIKE 'IA?I')

    SELECT SUM(suma) AS Total FROM incasari WHERE [cod client] NOT IN (

    SELECT [cod client] FROM clienti c, localitati l WHERE c.[cod localitate]=l.[cod localitate] AND UCASE([denumire localitate]) NOT LIKE 'IA?I')

    Varianta 4) Folosind dou subinterogri imbricate Varianta 5) Folosind funcia IIF

    SELECT SUM(suma) AS Total FROM incasari WHERE [cod client] IN ( SELECT [cod client] FROM clienti c WHERE [cod localitate] IN ( SELECT [cod localitate] FROM localitati WHERE UCASE([denumire localitate]) LIKE 'IA?I'))

    SELECT SUM(IIF([denumire localitate] LIKE 'Ia?i', i.suma,0)) AS Total FROM incasari i, clienti c, localitati l WHERE i.[cod client]=c.[cod client] AND c.[cod localitate]=l.[cod localitate]

    [Ex. 28] Care este volumul ncasrilor din luna februarie 2006?

    SELECT SUM(i.suma) AS Total FROM incasari i WHERE MONTH([data document])=2

    AND YEAR([data document])=2006

    [Ex. 29] Care este totalul vnzrilor din luna februarie 2006? SELECT SUM(cantitate*pret*(1+[procent TVA]/100)) FROM [avize de expeditie] a, [linii in avize] l WHERE a.[numar aviz]=l.[numar aviz]

    AND MONTH([data aviz])=2 AND YEAR([data aviz])=2006

    [Ex. 30] Care este totalul valorii produciei din luna februarie 2006? SELECT SUM(cantitate*pret) AS Productie FROM [documente de intrare] d, [linii in documente] l, produse p WHERE d.[numar nota intrare]=l.[numar nota intrare]

    AND l.[cod produs]=p.[cod produs] AND MONTH([data document])=2 AND YEAR([data document])=2006

    [Ex. 31] Care este valoarea total a avizului de expediie cu numrul 1001? SELECT SUM(cantitate*pret*(1+[procent TVA]/100)) AS [Valoare Totala] FROM [linii in avize] WHERE [numar aviz]='1001'

  • Gestiune produse finite

    13

    [Ex. 32] Ce cantitate de lapte s-a vndut, pe piaa municipiului Iai, n anul 2006? SELECT SUM(la.cantitate) AS Cantitate_Totala FROM localitati l, clienti c, [avize de expeditie] a, [linii in avize] la, produse p WHERE l.[cod localitate]=c.[cod localitate]

    AND c.[cod client]=a.[cod client] AND a.[numar aviz]=la.[numar aviz] AND la.[cod produs]=p.[cod produs] AND UCASE(l.[denumire localitate]) LIKE 'IAS?I' AND UCASE(p.[denumire produs]) LIKE '*LAPTE*'

    [Ex. 33] Care este valoarea medie a ncasrilor? SELECT AVG(suma) AS [Media incasarilor] FROM incasari

    [Ex. 34] Care este produsul care avea la nceputul anului cel mai mare stoc?

    SELECT [denumire produs] FROM produse WHERE stoc IN (

    SELECT MAX(stoc) FROM produse)

    [Ex. 35] Care este cea mai mare ncasare din anul 2006? SELECT * FROM incasari WHERE suma IN(

    SELECT MAX(suma) FROM incasari WHERE YEAR([data document])=2006)

    1.5.5.4 Gruparea nregistrrilor

    [Ex. 36] Care sunt documentele de intrare cu cele mai multe linii (pot exista mai multe documente cu acelai numr maxim de linii)? Lista va cuprinde doar numerele documentelor de intrare.

    SELECT [numar nota intrare] FROM [linii in documente] GROUP BY [numar nota intrare] HAVING COUNT(*)=(

    SELECT MAX(cate) FROM ( SELECT COUNT(*) AS cate FROM [linii in documente] GROUP BY [numar nota intrare]))

    Obs: Clauza GROUP BY determin grupuri pe baza valorilor luate de unul sau mai multe cmpuri. Aceast clauz are sens doar dac se folosete n interogare cel puin o funcie de agregare.

    Clauza HAVING este asemntoare cu clauza WHERE, numai c opereaz cu funcii de agregare asupra grupului.

    Pentru antrenare a se descrca Baza de date se afl n cadrul acestui document PDF

    ACCDB.accdb

    gestiune produse finite - finala.accdb Baza de date completat pentru verificare

    1.6 RAPOARTE

    1.6.1 Asistentul de rapoarte

    [Ex. 37] S se realizeze un raport simplu care s conin toate informaiile despre gestiunile existente i persoanele responsabile cu administrarea lor.

    Alegerea tabelei Gestiune, fr a se deschide, dnd clic panoul obiecte, din stnga. Apoi, click pe opiunea Report, din meniul Create, grupul de butoane Report

    10.

    Rezultatul este afiat n modul de vizualizare Layout View, de unde se mai pot ajusta dimensiunile obiectelor. Dac se

    dorete vizualizarea produsului finit, se alege Print Preview sau Report View.

    10 n aceeai manier rapid se poate realiza i un formular, n cazul de fa pentru actualizarea gestiunii.

  • Gestiune produse finite

    14

    [Ex. 38] Periodic serviciul vnzri solicit o list actualizat a clienilor pentru a analiza sumele ncasate i debitele pe care le au produsele vndute fiecruia dintre ei.

  • Gestiune produse finite

    15

    1.6.2 Raport simplu din dou tabele

    [Ex. 39] Periodic, serviciul de vnzri solicit lista actualizat a clienilor n vederea elaborrii politicilor de marketing pe localiti.

    1. Proiectarea raportului

    Macheta raportului Lista clienilor la data de 3/21/2007

    Codul

    localitii Denumirea

    localitii Denumirea

    judeului Codul

    clientului

    Denumirea clientului

    1005 Brlad VS 1001 SC KOMBASAN SA 1002 Iai IS 1002 SC UNIREA SA 1002 Iai IS 1003 SC HOFFER SA 1006 Galai GL 1004 SC CORAL SRL 1005 Brlad VS 1005 SC AMBRAS SA 1006 Galai GL 1006 SC VADUL SA 1007 Tecuci GL 1007 SC HORBAD SRL

    Pag 1

    2. Pregtirea datelor surs

    Interogarea Rap_3_clienti_pe_localitati11

    SELECT l.[cod localitate], [denumire localitate], [denumire judet], [cod client], [denumire client] FROM localitati l, clienti c WHERE l.[cod localitate]=c.[cod localitate]

    11 Readucem aminte c, pentru a economisi timp, n loc de a scrie numele unei tabele, ntr-o interogare se poate folosi alias-ul care ajut nlocuind un cuvnt sau mai multe cu o liter sau dou... (astfel, n loc de Localiti ajunge doar un L, iar n loc de Clieni se poate folosi un sugestiv C)

  • Gestiune produse finite

    16

    3. Construirea raportului

    Click dreapta pe raport i selectarea opiunii Properties sau din meniul Design, alegerea opiunii Property Sheet.

    Inserarea cmpurilor prin tragere, din acest tabel, n zona Detail a raportului.

    Controlul de tip Label, care conine denumirea cmpului respectiv va fi dus n zona Page Header. Afiarea/ascunderea zonelor Page Header/Footer sau Report Header/Footer se poate realiza fie dnd clic pe butoanele din meniul Arrange sau din meniul contextual, dnd clic dreapta pe una din benzile pe care scrie Detail, Page Header sau Report Header ori Report Footer sau

    Page Footer.

    Atribuirea unui titlu raportului i inserarea datei curente se face alegnd opiunea Title, respectiv Date &Time din meniul Design. Va aprea un obiect de tip Label, n care se introduce textul: Lista clienilor pe localiti la data de i formatarea textului de tip Garamond, 16 pt.

    1.6.3 Raport cu gruparea nregistrrilor i subtotaluri

    [Ex. 40] Periodic, serviciul marketing solicit o situaie a produselor vndute, grupate pe clieni, care s conin denumirea clienilor, denumirea produselor, cantitile livrate, unitile de msur, procentul TVA, preurile, numrul i data avizelor de expediie. Valoarea total a vnzrilor se va determina att pentru fiecare client, ct i pentru toi clienii la sfritul raportului.

    1. Proiectarea raportului

    Lista produselor vndute clienilor pn la data 3/21/2006

    Denumirea clientului Numrul avizului

    Data avizului

    Denumirea produsului

    Cantitatea Unitatea de msur

    Procentul TVA

    Preul

    SC HOFFER SA

    1005 02.06.2006 Cornuri 30 Buc 19 25

    1006 02.06.2006 Lapte 12 L 19 12,5

    Valoarea produselor vndute clientului SC HOFFER SA 17,5

  • Gestiune produse finite

    17

    SC KOMBASAN SA Kg

    1002 02.05.2006 Biscuii 25 Buc 19 12 1002 02.05.2006 Covrigi 10 Kg 19 15

    1003 02.07.2006 Colaci 4 Buc 19 20

    Valoarea produselor vndute clientului SC KOMBASAN SA 47

    Valoarea total a produselor vndute 64,5

    2. Pregtirea datelor12

    SELECT [denumire client], AE.[numar aviz], [data aviz], [denumire produs], cantitate, [unitate de masura], [procent TVA], LA.pret, LA.[cod produs] FROM clienti C, [avize de expeditie] AE, [linii in avize] LA, produse P WHERE C.[cod client]=AE.[cod client] AND AE.[numar aviz]=LA.[numar aviz] AND LA.[cod produs]=P.[cod produs]

    3. Construirea raportului

    Aidoma exemplului anterior

    4. Gruparea nregistrrilor. Meniul Design Group & Sort. La denumire client, n partea inferioar a ferestrei se alege pentru Group Header, Group Footer se alege opiunea Yes.

    Pentru a calcula suma, se introduce un obiect de tip TextBox n zona denumire client Footer i se d apoi clic dreapta pe acest obiect, alegnd din meniul contextual opiunea Properties.

    12 Dup cum se remarc, reamintim c dup SELECT, cmpurile care sunt unice (nu se regsesc n mai multe tabele, cum este deseori cazul cheilor sau, ca n exemplul nostru, PRET, nu necesit referina la tabel. Obligatoriu, ns ea se va trece la realizarea punii, prin intermediul cheilor. Aliasul poate fi precedat sau nu de particula AS: clienti C este identic cu clienti AS C

  • Gestiune produse finite

    18

    1.7 FORMULARE

    [Ex. 41] S se realizeze un formular care s permit actualizarea ambelor tabele: localitati i clienti.

    4. Proiectarea formularului Macheta formularului

    Actualizare clieni

    Cod localitate

    Denumire localitate

    Jude

    Clieni Cod client Denumire client Sold

    5. Definirea formularului cu asistentul de formulare. Din meniul Create se alege dnd clic pe More Forms, opiunea

    Form wizard.

  • Gestiune produse finite

    19

    [Ex. 42] S se realizeze un formular, denumit Avize de expediie, pentru actualizarea informaiilor despre produsele livrate clienilor dup macheta urmtoare

    Actualizare avize de expediie Data curent Numrul avizului Data Denumirea clientului

    Denumire produs Cantitate Unitate de msur Procent TVA Pre

    Aviz nou

    Cutare

    tergere

    Valoarea total a avizului de expediie numrul Salvare

    nchidere formular

    |< < > >|

  • Gestiune produse finite

    20

  • 21

    2 EVIDEN STUDENI

    2.1 Crearea tabelelor i definirea restriciilor Pentru antrenare a se descrca Baza de date se afl n cadrul acestui document PDF

    ACCDB.accdb

    EvStud - simpla.accdb Baza de date necesar pentru antrenarea cheilor, restriciilor, regulilor de validare

    1. Crearea tabelelor i declararea valorilor implicite PK Atribut

    (Field Name) Tip

    (Data Type) Lungime

    (Field Size) Valori implicite (Default Value)

    STUDENTI

    Matricol Text 10

    NumePren Text 40

    CNP Text 15

    Specializare Text 50 "Trunchi comun"

    AnStudii Number Long Integer 1

    Fstudii Text 2 "ID"

    Grupa Number Long Integer 1

    DISCIPLINE

    CodDisc Text 6

    DenumireDisc Text 40

    NrCredite Number Long Integer 6

    NrOreCurs Number Long Integer 28

    NrOreSeminar Number Long Integer 28

    EXAMENE

    Matricol Text 10

    CodDisc Text 6 "AE1101"

    DataEx Date/Time IIF(DATE()0 Nr grupei pozitiv!

    DISCIPLINE

    CodDisc StrComp(UCASE([CodDisc]);[CodDisc];0)=0 Literele din CodDisc cu majuscule!

    NrCredite

  • Eviden studeni

    22

    3. Declararea restriciilor refereniale Legtura se realizeaz apelnd n meniul DATABASE TOOLS, opiunea RELATIONSHIPS.

    n tabela printe, se d clic pe cheia primar, se ine apsat butonul stnga i se deplaseaz peste cmpul cu acelai

    nume din tabela printe i se elibereaz apoi mouse-ul.

    2.2 Editarea tabelelor i navigarea prin nregistrri n gestionarul de obiecte, se apas dublu clic pe tabela ce se dorete a fi editat.

    2.3 Obinerea de informaii din baza de date Pentru antrenare a se descrca Baza de date se afl n cadrul acestui document PDF

    ACCDB.accdb

    EvStud - populata.accdb Baza de date cu restricii i populat, pentru antrenamentul cu interogri.

  • Eviden studeni

    23

    1. Setul nr. 1 de ntrebri

    a) Care sunt studenii din anul III, specializarea Informatic economic, ZI?

    Varianta 1 utilizarea Query Design

    Din meniul Create se alege Query Design, apoi tabela cerut

    Varianta 2 utilizarea SQL View Din meniul Create se alege Query Design, dar n formularul ce apare se apas butonul Close i nu

    Add; se alege, din meniul Design, butonul View (SQL

    View)13

    .

    Not: Modalitatea de scriere n modul SQL View nu este dependent de capitalizarea sau nu a literelor dar este mai elegant. De asemenea, tot

    scriptul ar putea fi scris pe un singur rnd dar se citete mai uor.

    Dup ce a fost finalizat operaiunea prin una din cele dou variante, se alege opiunea Run din meniul Query sau butonul de forma semnului exclamrii de pe

    bara de butoane (!).

    b) Ce studeni trebuie felicitai de Sf. Vasile (1 ianuarie)?

    Se utilizeaz, n cadrul criteriului, simbolul * nainte i dup cuvntul/cuvintele folosite ca i condiie.

    13 O alt modalitate este: n zona alocat tabelei (gri) sau pe banda de titlu (Query1: Select Query) se apas mouse-ul cu clic dreapta i se alege opiunea SQL View.

  • Eviden studeni

    24

    Varianta 1 utilizarea Query Design

    Varianta 2 utilizarea SQL View SELECT * FROM studenti

    WHERE [NumePren] Like '*Vasile' OR [NumePren] Like '*Sile' OR [NumePren] Like '*Vasilica'

    c) Ce studeni trebuie felicitai de Sf. Ion (7 ianuarie)?

    d) Componena grupei 4 de la specializarea Contabilitate i Informatic de Gestiune, ZI, anul III;

    Not: Pentru a face proba, n tabela Studeni am mai introdus un nou student.

    e) Care sunt disciplinele cu peste 6 credite?

    f) Care sunt disciplinele cu peste 28 de ore de curs i sub 42 de ore de seminar?

    g) n ce zile a susinut examene studentul cu matricolul ELZ02001?

    h) La ce discipline a susinut examene studentul cu matricolul ELZ02001?

    i) Care este codul disciplinelor la care s-au susinut examene n luna februarie 2006?

  • Eviden studeni

    25

    2. Setul nr. 2 de ntrebri a) zilele n care s-a susinut examen la

    Microeconomie;

    b) numele studenilor examinai pe 28 ianuarie 2006;

    Note: 1. Clauza DISTINCT elimin apariia repetat a unui examen, n cazul n care ar da mai multe examene n aceeai zi.

    2. Se va avea n vedere formatul datei. Este posibil ca cel romnesc s nu fie acceptat, de aceea este bine a se ncerca, spre exemplu i formatul: #1/28/2006#. A nu se uita de simbolul #.

    c) Care sunt studenii de la Trunchi comun, Zi, Anul I care au picat mcar un examen n februarie 2006?

    3. Setul nr. 3 de ntrebri a) denumirea disciplinelor la care a susinut examen

    studentul Lama W. Dalai, datele i notele obinute;

    b) numele studenilor care au picat examenul Baze de date I mcar o dat;

    c) rezultatele din 14 februarie 2006 ale grupei 1 din anul IV, specializarea Marketing, zi, la disciplina Cercetri de marketing (situaia va cuprinde matricolul, numele i nota);

    Not: Pentru a face proba, a fost introdus un student la specializarea cerut i specializarea Marketing (CodDisc: AE4002)

    4. Setul nr. 4 de ntrebri a) Cte discipline au 7 credite?

    b) Ci studeni sunt n anul III, specializarea Informatic Economic, cursuri de zi?

  • Eviden studeni

    26

    c) Cte credite a obinut studentul Barbu I. Vasile

    (atenie, nu se iau n calcul examenele picate!)?

    d) Cte credite s-au obinut la nivelul anului III al specializrii Informatic economic, Zi?

    e) Care este cea mai mare not la Microeconomie?

    f) Care este cea mai mic not obinut la nivelul anului III, specializarea Informatic Economic, Zi?

    Not: Chiar dac nu este necesar, este mai prudent a plasa un cmp ntre paranteze ptrate, atunci cnd el reprezint argumentul unei funcii, adic este plasat i ntre paranteze rotunde. Parantezele ptrate se folosesc atunci cnd denumirea unui cmp, tabel etc. au mai mult de un cuvnt.

    g) Care este media grupei 1 din anul III, specializarea Informatic Economic, Zi, la disciplina Baze de date I pentru examenul susinut pe 24 ianuarie 2006?

    h) Cte puncte (nr. de credite nmulit cu nota de la examen) a obinut Lama W. Dalai (atenie, nu se iau n calcul examenele picate!)?

    5. Setul nr. 5 de ntrebri

    a) La ce disciplin a susinut primul examen studentul Barbu I. Vasile?

    b) Care a fost disciplina/disciplinele la care s-au susinut examenele n ultima zi de sesiune din februarie 2006?

  • Eviden studeni

    27

    c) La ce discipline studentul Barbu I. Vasile a obinut note peste media sa?

    d) Care a fost ultimul examen promovat de studentul Barbu I. Vasile?

    e) Care este media notelor obinute la primul examen de Microeconomie de la anul I?

    6. Setul nr. 6 de ntrebri

    a) Ci studeni sunt n fiecare an de studii?

    b) Cte note sub 5 au fost, n total, la fiecare disciplin?

    c) Cte examene a susinut (la cte s-a prezentat) fiecare student din anul I?

    d) Ci studeni au susinut examene n fiecare zi de sesiune?

  • Eviden studeni

    28

    e) Ci studeni au fost examinai n cele patru luni de sesiuni, pentru fiecare disciplin?

    f) Numrul de examene picate, pentru fiecare an de studii.

    7. Setul nr. 7 de ntrebri

    a) Care dintre anii de studii numr mai mult de 1000 de studeni?

    Not: Pentru a putea verifica interogarea, am ales ca i condiie cifra 2 n locul lui 1000, neavnd o baz de date cu peste 1000 de nregistrri.

    b) Care sunt studenii care au susinut n sesiunile ianuarie-februarie 2006 mai mult de 3 examene?

    c) tiind c facultatea are doar patru sli pentru examinare, s se extrag zilele n care numrul examenelor este mai mare dect cel al slilor.

    Pentru antrenare a se descrca Baza de date se afl n cadrul acestui document PDF

    ACCDB.accdb

    EvStud - rezolvata.accdb Baza de date rezolvat, pentru verificare

  • 29

    3 EVIDENA VNZRILOR

    3.1 Detalii baz date Pentru antrenare a se descrca Baza de date se afl n cadrul acestui document PDF

    ACCDB.accdb

    EvidVanzari - simpla.accdb Baza de date necesar pentru antrenarea cheilor, restriciilor, regulilor de validare

    PK Denumire atribut Tipul de

    datii Lungime

    Valori

    implicite Reguli de validare

    Text

    validare

    Clieni

    Cod client Number Long integer 0 >=100 AND =0 (16)

    Distanta Number Integer 0 >=0 (17)

    Comenzi

    Cod cda Number Long integer Numar cda Number Long integer Cod client Number Long integer >=100 AND =0 (18) Data comenzii Date/Time Short Date

  • Evidena vnzrilor

    30

    3.2 Schema bazei de date

    Idem i pentru cealalt legtur

    3.3 Interogri Pentru antrenare a se descrca Baza de date se afl n cadrul acestui document PDF

    ACCDB.accdb

    EvidVanzari - populata.accdb Baza de date cu restricii i populat, pentru antrenamentul cu interogri.

    [Ex. 1.1.] Lista comenzilor (numar comanda, data comenzii, denumire client, cantitate, pre ntreg) pentru clienii din Iai care au comandat cantiti mai mari de 2000 um.

    Query Design

    SQL

    SELECT [Numar cda], [Data comenzii], [Denumire client], Cantitate, [Pret intreg] FROM Produse INNER JOIN ( clienti INNER JOIN Comenzi ON clienti.[Cod client] = Comenzi.[Cod client] ) ON Produse.[Cod produs] = Comenzi.[Cod produs] WHERE Cantitate>2000 AND Localitate="Iasi"

  • Evidena vnzrilor

    31

    Rezultat

    [Ex. 1.2.] Lista comenzilor (numar comanda, data comenzii, denumire client, cantitate, pre ntreg) pentru clienii din Iai sau pentru cei care au comandat cantiti mai mari de 2000 um.

    Query Design

    SQL

    SELECT [Numar cda], [Data comenzii], [Denumire client], Cantitate, [Pret intreg] FROM Produse INNER JOIN ( clienti INNER JOIN Comenzi ON clienti.[Cod client] = Comenzi.[Cod client] ) ON Produse.[Cod produs] = Comenzi.[Cod produs] WHERE Localitate="Iasi" OR Cantitate>2000

    Rezultat

    [Ex. 2.] Lista clienilor care au comandat produsul Sacou AC-226 (denumire client, numr comand, data comenzii, denumire produs, cantitate)

    Query Design

  • Evidena vnzrilor

    32

    SQL

    SELECT [Denumire client], [Numar cda], [Data comenzii], [Denumire produs], Cantitate FROM Produse INNER JOIN (

    clienti INNER JOIN Comenzi ON clienti.[Cod client] = Comenzi.[Cod client]) ON Produse.[Cod produs] = Comenzi.[Cod produs] WHERE [Denumire produs]="Sacou AC-226"

    Rezultat

    [Ex. 3.] Lista clienilor care au trimis comenzi n luna martie (denumire client, numar comanda, data comenzii, denumire produs)

    Query Design

    SQL

    SELECT [Denumire client], [Numar cda], [Data comenzii], [Denumire produs] FROM Produse INNER JOIN ( clienti INNER JOIN Comenzi ON clienti.[Cod client] = Comenzi.[Cod client] ) ON Produse.[Cod produs] = Comenzi.[Cod produs] WHERE Month([Data comenzii])=3

    Rezultat

    [Ex. 4.] Lista produselor comandate pe localiti (localitate, denumire produs)

    Query Design

    SQL

    SELECT Localitate, [Denumire produs] FROM Produse INNER JOIN ( clienti INNER JOIN Comenzi ON clienti.[Cod client] = Comenzi.[Cod client] ) ON Produse.[Cod produs] = Comenzi.[Cod produs]

  • Evidena vnzrilor

    33

    Rezultat

    [Ex. 5.] Lista produselor comandate de clientii din Suceava i Vaslui (denumire client, data comenzii, denumire produs, cantitate)

    Query Design

    SQL

    SELECT [Denumire client], [Data comenzii], [Denumire produs], Cantitate FROM Produse INNER JOIN ( Clienti INNER JOIN Comenzi ON Clienti.[Cod client] = Comenzi.[Cod client] ) ON Produse.[Cod produs] = Comenzi.[Cod produs] WHERE Localitate="Suceava" Or Localitate="Vaslui"

    Rezultat

    [Ex. 6.] Lista comenzilor n care cantitatea este mai mare de 2000 iar preul de nregistrare este de peste 150000 lei.

    Query Design

  • Evidena vnzrilor

    34

    SQL

    SELECT [Numar cda], Cantitate, [Denumire produs], [Pret intreg] FROM Produse LEFT JOIN Comenzi ON Produse.[Cod produs] = Comenzi.[Cod produs]

    WHERE Cantitate>=2000 AND [Pret intreg]>=150000

    Rezultat

    [Ex. C1.] Lista localitilor de unde sunt clienii22

    SQL

    SELECT DISTINCT Localitate FROM clienti

    Rezultat

    [Ex. C2.] Lista clienilor n ordine alfabetic: denumire client, cod client, localitate.

    Query Design

    SQL

    SELECT [Denumire client], [Cod client], Localitate FROM Clienti ORDER BY [Denumire client]

    Rezultat

    22 Clauza DISTICT elimin repetarea valorilor care apar mai mult de o dat.

  • Evidena vnzrilor

    35

    [Ex. C3.] Lista clienilor, n ordine alfabetic, pe localiti

    Query Design

    SQL

    SELECT Localitate, [Denumire client], [Cod client] FROM Clienti ORDER BY Localitate, [Denumire client]

    Rezultat

    [Ex. C4.] Lista clienilor, n ordinea alfabetic a localitilor i n ordinea descresctoare a atributului cod client.

    Query Design

    SQL

    SELECT Localitate, [Denumire client], [Cod client] FROM Clienti ORDER BY Localitate, [Denumire client] DESC

  • Evidena vnzrilor

    36

    Rezultat

    [Ex. C5.] Lista comenzilor ntocmite de clienii din Iai: cod comanda, numar comanda, denumire client, localitate Query Design

    SQL

    SELECT [cod cda], [Numar cda], [Denumire client], Localitate FROM Clienti INNER JOIN Comenzi ON Clienti.[Cod client] = Comenzi.[Cod client] WHERE Localitate="Iasi"

    Rezultat

    [Ex. C6.] Lista produselor comandate, n ordinea descresctoare a cantitilor: numar comanda, cod produs, denumire produs, cantitate, valoare

  • Evidena vnzrilor

    37

    Query Design

    SQL

    SELECT [cod cda], Produse.[Cod produs], [Denumire produs], Cantitate, Cantitate*[Pret intreg] AS Valoare FROM Produse INNER JOIN Comenzi ON Produse.[Cod produs] = Comenzi.[Cod produs] ORDER BY Cantitate DESC

    Rezultat

    [Ex. C7.] Totalul valoric al comenzilor emise de clienii din aceeai localitate: localitate, total comandat.

    Query Design

    SQL

    SELECT Localitate, Sum([Cantitate]*[Produse].[Pret intreg]) AS Valoare FROM Produse INNER JOIN ( clienti INNER JOIN Comenzi ON clienti.[Cod client] = Comenzi.[Cod client] ) ON Produse.[Cod produs] = Comenzi.[Cod produs] GROUP BY Localitate

  • Evidena vnzrilor

    38

    Rezultat

    [Ex. C8.] Lista produselor comandate n a cror denumire primele litere sunt Sa (cod produs, denumire produs, pre nregistrare)

    Query Design

    SQL

    SELECT Comenzi.[Cod produs], [Denumire produs], [Pret intreg] FROM Produse INNER JOIN Comenzi ON Produse.[Cod produs] = Comenzi.[Cod produs] WHERE [Denumire produs] Like "Sa*"

    Rezultat

    [Ex. C9.] Situaia produselor comandate (cod client, nr. de comenzi, valoare)

    Query Design

    SQL

    SELECT [Denumire client], Count(Comenzi.[cod cda]) AS [Nr comenzi], Sum([Cantitate]*[Pret intreg]) AS Valoare FROM Clienti INNER JOIN ( Produse INNER JOIN Comenzi ON Produse.[Cod produs] = Comenzi.[Cod produs] ) ON Clienti.[Cod client] = Comenzi.[Cod client] GROUP BY [Denumire client];

  • Evidena vnzrilor

    39

    Rezultat

    [Ex. C10.] Situaia produselor comandate (cod client, nr de comezi, valoare medie pe comand, nr produse comandate)

    Query Design

    SQL

    SELECT [Denumire client], Count([cod cda]) AS [Numarul comenzilor], Avg([Cantitate]*[Pret intreg]) AS Media FROM Produse INNER JOIN (

    Clienti INNER JOIN Comenzi ON Clienti.[Cod client] = Comenzi.[Cod client] ) ON Produse.[Cod produs] = Comenzi.[Cod produs] GROUP BY [Denumire client]

    Rezultat

  • Evidena vnzrilor

    40

    [Ex. C11.] Lista comenzilor care au comandat produsul Sacou (denumire client, localitate, denumire produs, cantitate)

    Query Design

    SQL

    SELECT [Denumire client], Localitate, [Denumire produs], Cantitate FROM Produse INNER JOIN ( Clienti INNER JOIN Comenzi ON Clienti.[Cod client] = Comenzi.[Cod client] ) ON Produse.[Cod produs] = Comenzi.[Cod produs] WHERE [Denumire produs] Like "Sacou*"

    Rezultat

    [Ex. C12.] Lista tuturor clienilor firmei, care au sau nu comenzi (Cod client, denumire client, localitate, Numar cda, Data

    comenzii)

    Query Design

    SQL

    SELECT Clienti.[Cod client], [Denumire client], Localitate, [Data comenzii] FROM Clienti LEFT JOIN Comenzi ON Clienti.[Cod client] = Comenzi.[Cod client]

  • Evidena vnzrilor

    41

    Rezultat

    [Ex. S1.] Lista clienilor fr comenzi

    Query Design

    SQL

    SELECT Clienti.[Cod client], [Denumire client], Localitate FROM Clienti LEFT JOIN Comenzi ON Clienti.[Cod client] = Comenzi.[Cod client] WHERE [cod cda] Is Null

    Rezultat

  • Evidena vnzrilor

    42

    Varianta Subquery

    Query Design cu SubQuery

    SQL cu SubQuery SELECT [Cod client], [Denumire client], Localitate FROM Clienti WHERE [Cod client] Not In ( SELECT [cod client] FROM comenzi )

    [Ex. S2.] Liste clieni pe localiti, cu parametru de cutare

    Query Design

    (23)

    23

    Acest buton poate fi apelat atunci cnd se dorete ca parametrul s accepte oar un anumit tip de dat. Utilizarea sa este important, n special pentru datele de tip numeric, monetary, date/time, deoarece utilizatorul poate fi avertizat explicit cnd greete tipul de dat, la introducere. Dac parametrul este configurat s accepte date de tip text, nu va aprea niciun mesaj de eroare, orice s-ar introduce fiind interpretat ca text.

    De regul, se ignor folosirea acestui mod de declarare a parametrului, rezumndu-se la introducerea lui direct n zona Criteria. Astfel, varianta simpl este:

    SELECT [Cod client], [Denumire client], Localitate FROM clienti WHERE Localitate=[Care este localitatea?]

  • Evidena vnzrilor

    43

    SQL

    PARAMETERS [Care este localitatea?] Text ( 255 ) ; SELECT [Cod client], [Denumire client], Localitate FROM clienti WHERE Localitate=[Care este localitatea?]

    [Ex. S3.] Lista clienilor de tip SRL

    Query Design

    SQL

    SELECT * FROM clienti WHERE [Denumire client] Like "*Srl"

    Rezultat

    [Ex. S4.] Lista clienti din localitati cu nume din 7 caractere

  • Evidena vnzrilor

    44

    Query Design

    SQL

    SELECT [Denumire client], Localitate FROM clienti WHERE Localitate Like "???????"

    Rezultat

    [Ex. S5.] Lista produselor din localiti ce nu au patru caractere

    Query Design

    SQL

    SELECT Comenzi.[Cod produs], [Denumire produs], [Pret intreg], [Denumire client], Localitate FROM Produse INNER JOIN ( clienti INNER JOIN Comenzi ON clienti.[Cod client] = Comenzi.[Cod client] ) ON Produse.[Cod produs] = Comenzi.[Cod produs] WHERE Localitate Not Like "????"

    Rezultat

  • Evidena vnzrilor

    45

    [Ex. S6.] Lista produselor din localiti care nu se termin n i.

    Query Design

    SQL

    SELECT Comenzi.[Cod produs], [Denumire produs], [Pret intreg], [Denumire client], Localitate FROM Produse INNER JOIN (

    clienti INNER JOIN Comenzi ON clienti.[Cod client] = Comenzi.[Cod client] ) ON Produse.[Cod produs] = Comenzi.[Cod produs] WHERE Localitate Not Like "*i"

    Rezultat

    [Ex. S7.] Lista comenzilor grupate pe client

    Query Design

    SQL

    SELECT Comenzi.[Cod client], [Denumire client], Count([cod cda]) AS [Nr comenzi], Sum(Cantitate*[Pret intreg]) AS Valoare FROM Produse INNER JOIN ( clienti INNER JOIN Comenzi ON clienti.[Cod client] = Comenzi.[Cod client]

    ) ON Produse.[Cod produs] = Comenzi.[Cod produs] GROUP BY Comenzi.[Cod client], [Denumire client]

    Rezultat

  • Evidena vnzrilor

    46

    [Ex. S8.] Lista comenzi grupate pe localitati

    Query Design

    SQL

    SELECT Localitate, Count([cod cda]), Sum(Cantitate*[Pret intreg]) AS Valoare FROM Produse INNER JOIN ( clienti INNER JOIN Comenzi ON clienti.[Cod client] = Comenzi.[Cod client] ) ON Produse.[Cod produs] = Comenzi.[Cod produs] GROUP BY Localitate

    Rezultat

    [Ex. S9.] Numr comenzi mai mari de 1

    Query Design

    SQL

    SELECT Comenzi.[Cod client], [Denumire client], Count([cod cda]) AS [Nr comenzi], Sum(Cantitate*[Pret intreg]) AS Valoare FROM Produse INNER JOIN ( clienti INNER JOIN Comenzi ON clienti.[Cod client] = Comenzi.[Cod client] ) ON Produse.[Cod produs] = Comenzi.[Cod produs] GROUP BY Comenzi.[Cod client], [Denumire client] HAVING Count([cod cda])>1

    Rezultat

  • Evidena vnzrilor

    47

    [Ex. S10.] Lista produse comandate

    Query Design

    SQL

    SELECT DISTINCTROW [Denumire produs], [Cod produs] FROM Produse WHERE [Cod produs] In ( SELECT [cod produs] FROM [Comenzi] )

    Rezultat

    [Ex. S11.] Lista produse necomandate

    Query Design

    SQL

    SELECT [Denumire produs], [Cod produs] FROM Produse WHERE [Cod produs] Not In ( SELECT [cod produs] FROM comenzi )

    Rezultat

  • Evidena vnzrilor

    48

    [Ex. S12.] Lista valorilor comenzilor pentru fiecare client

    Query Design

    SQL

    SELECT [Denumire client], [Numar cda], [Data comenzii], Cantitate*[Pret intreg] AS Valoare

    FROM Produse INNER JOIN ( clienti INNER JOIN Comenzi ON clienti.[Cod client] = Comenzi.[Cod client] ) ON Produse.[Cod produs] = Comenzi.[Cod produs]

    Rezultat

    Pentru antrenare a se descrca Baza de date se afl n cadrul acestui document PDF

    ACCDB.accdb

    EvidVanzari - rezolvata.accdb Baza de date rezolvat, pentru verificare

  • 49

    4 MODELE LUCRRI PRACTICE

    Lucrarea practic nr. 1 Pentru antrenare a se descrca Baza de date se afl n cadrul acestui document PDF

    ACCDB.accdb

    Vanzari.accdb Baza de date pentru antrenare

    Dispunei de baza de date VANZARI cu tabelele CLIENTI(Codcl, Nume, Adresa, Zona), AGENTI(Codag, Nume, Salbaza, Zona) i COMENZI(Nrcom, Data, Codcl, Codag, Valoare).

    Analizai atributele din fiecare tabel i stabilii cheile primare corespunztoare acestora.

    Definii legturile dintre tabele i aplicai restriciile refereniale.

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

    S se adauge comanda nr. 211 din 11 mai 2010, pentru un client nou (Florio SRL, din zona Nicolina, pentru care nu se cunoate adresa) care va avea codul 550. Comanda a fost preluat de agentul A3 i are o valoare de 58 lei.

    S se afieze pe ecran o list a comenzilor din ziua de 9 mai 2010, n ordinea zonelor.

    Calculai totalul comenzilor pe zone.

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

    S se afieze comenzile cu valoare mai mic de 50 lei din zonele Pcurari sau Bucium (Nrcom, Codcl, Valoare).

    S se realizeze un raport al comenzior grupate dup agentul care a preluat comanda (Nrcom, Data, Valoare). n antetul de grup se va afia numele agentului, iar la sfritul grupului valoarea total a comenzilor fiecrui agent.

    Definii un formular pentru vizualizarea/ actualizarea comenzilor.

    Propunere de rezolvare cheile primare

    Clic dreapta pe tabela AGENTI, apoi

    alegerea opiunii Design View

    Clic dreapta pe

    cmpul CODAG i alegerea opiunii Primary Key

    La tabela CLIENTI, de aceeai manier, se stabilete cheia primar cmpul CODCL, iar pentru tabela COMENZI, unde cheia primar este NRCOM.

    legturile dintre tabele i restriciile refereniale: a se vedea n figura de mai jos.

    regul de validare: data comenzii nu poate depi data curent.

    n tabela COMENZI, modul Design View, clic pe cmpul DATA, apoi, se completeaz, ca mai jos:

  • Modele lucrri practice

    50

    comanda nr. 211 din 11 mai 2010, pentru un client nou (Florio SRL, din zona Nicolina, pentru care nu se cunoate adresa)

    care va avea codul 550. Comanda a fost preluat de agentul A3 i are o valoare de 58 lei.

    ntruct tabela COMENZI este tabel copil, att pentru AGENTI, ct i pentru CLIENTI, nti va fi necesar s introducem noile nregistrri pentru celelalte dou comenzi (dac nu exist agentul A3 sau clientul Florio SRL)

    Pentru antrenare a se descrca Baza de date se afl n cadrul acestui document PDF

    ACCDB.accdb

    Vanzari-rez.accdb Baza de date rezolvat, pentru verificare

    Lucrarea practic nr. 2 Pentru antrenare a se descrca Baza de date se afl n cadrul acestui document PDF

    ACCDB.accdb

    Transport.accdb Baza de date pentru antrenare

    Dispuneti de baza de date TRANSPORT cu tabelele AUTOBUZE(Numar, Tip, Locuri), PLECARI(Ora,

    Destinatie, Marca, Numar) i SOFERI(Marca, Numepren, CNP, Strada, Numar, Telefon). Se cere:

    S se analizeze structurile celor trei tabele i s se stabileasc cheile primare i, unde este posibil, cheile alternative.

    S se stabileasc legturile permanente dintre tabele.

    S se defineasc urmtoarele restricii: o n tabela Autobuze literele din cmpul Numar s fie majuscule. o n tabela Plecari, valorile cmpului Ora s fie cuprinse ntre 6 i 22. o n tabela Plecari, oferului Zaharia Cezar (marca 1010) i sunt interzise cursele spre

    Bacau.

    S se scrie o fraz SELECT SQL pentru obinerea listei cu plecrile spre Bacu, realizate cu autobuze care au mai mult de 40 de locuri. Lista va oferi urmtoarele informaii: ora plecrii, numrul de nmatriculare, tipul autobuzului, numrul de locuri.

    Propunere de rezolvare cheile primare / cheile alternative: a se vedea n figura de mai jos24.

    legturile permanente dintre tabele25.

    restricii:

    o n tabela Autobuze literele din cmpul Numar s fie majuscule. StrComp(UCASE([numar]);[numar];0)=0

    o n tabela Plecari, valorile cmpului Ora s fie cuprinse ntre 6 i 22. BETWEEN 6 AND 22

    o n tabela Plecari, oferului Zaharia Cezar (marca 1010) i sunt interzise cursele spre Bacau26. IIF([marca]=1010;IIF([destinatie]="Bacau";False;True);True)

    fraz SELECT SQL pentru obinerea listei cu plecrile spre Bacu, realizate cu autobuze care au mai mult de 40 de locuri.

    24 Cheia alternativ ar fi CNP-ul, pe care-l regsii n enun, la tabela SOFERI, dar nemaifigurat n tabela propriu-zis. Pe lng atributul

    Indexed, setat Yes (No Duplicates), ar mai putea fi ales i Required cu opiunea Yes, pentru a evita valori nule.

    25 A nu se face confuzia ntre cmpul NUMAR, existent n tabelele AUTOBUZE i PLECRI, cu cmpul NUMAR din tabela SOFERI, care

    se refer la numrul strzii i nu al autobuzului ca n primele tabele. 26 Validare la nivel de nregistrare (Property Sheet) pentru c avem nevoie de dou cmpuri.

  • Modele lucrri practice

    51

    SELECT ora, Autobuze.numar, tip, locuri, destinatie FROM Autobuze INNER JOIN Plecari ON Autobuze.numar = Plecari.numar WHERE locuri>=40 AND destinatie="Bacau"

    Pentru antrenare a se descrca Baza de date se afl n cadrul acestui document PDF

    ACCDB.accdb

    Transport-rez.accdb Baza de date rezolvat, pentru verificare

    Lucrarea practic nr. 3 Pentru antrenare a se descrca Baza de date se afl n cadrul acestui document PDF

    ACCDB.accdb

    Aprov.accdb Baza de date pentru antrenare

    Dispunei de baza de date APROV care conine tabelele: FURNIZOR(Codfurn, Numefurn, Localitate, Banca), APROVIZIONARE(Nrfactura, Data, Categorie, Codfurn, Valoarefact) i PLATI(Nrfactura, Dataplata, Valoare).

    Se cere:

    S se analizeze structura tabelei Plati i s se stabileasc cheia primar.

    S se stabileasc legturile permanente dintre tabele i s se aplice restriciile refereniale.

    S se nregistreze n baza de date o nou aprovizionare: de la un furnizor nou de birotic (datele despre furnizor: 1010, FLAMINGO SRL, Iasi, BRD), factura nr. 12445, din 10 mai 2011, n valoare de 215 lei.

    S se afieze o list a furnizorilor din Iasi sau Vaslui.

    S se scrie o fraz SELECT SQL pentru a obine o list a facturilor din categoria utilitati, cu valoarea de peste 200 lei (Nrfactura, Numefurn, Data, Valoarefact).

    S se ntocmeasc un raport al aprovizionrilor (Numr factur, Data, Nume furnizor, Valoare), cu gruparea nregistrrilor dup categoria de furnizor. Pentru fiecare categorie de furnizor se va calcula totalul valoric al facturilor.

    Propunere de rezolvare cheia primar pentru tabela Pli conform figurii de mai jos.

    legturile permanente dintre tabele i restriciile refereniale.

    aprovizionare nou: de la un furnizor nou de birotic (datele despre furnizor: 1010, FLAMINGO SRL, Iasi, BRD), factura

    nr. 12445, din 10 mai 2011, n valoare de 215 lei. INSERT INTO Aprovizionare (nrFactura, data, valoareFac, codFurn, categorie ) SELECT 12445, #5/10/2010#, 215, 1010, "birotica"

    sau27

    i

    27 Varianta cu Append Query presupune urmtorii pai:

    Create Query Design.

    Se apas butonul Close (nu se adaug nicio tabel).

    Se alege din meniul Design opiunea Append Query. n acest formular se va aduga tabela dorit (de ex. APROVIZIONARE).

    n formularul structurii interogrii se scrie la Field noua nregistrare (de ex. 12445) i la Append To cmpul unde se adaug nregistrarea (de ex. NrFactura). La fel se face i cu restul nregistrrilor.

    A se avea n vedere urmtoarele aspecte: la valori tip dat se vor scrie ntre simbolul #, la text, ntre ghilimele. De asemenea, dac trebuie s facem adugri n mai multe tabele trebuie respectate ordinea populrii: nti prinii.

  • Modele lucrri practice

    52

    INSERT INTO Furnizori ( codFurn, numeFurn, localitate, banca ) SELECT 1010, "FLAMINGO SRL", "Iasi", "BRD"

    sau

    n oricare din variantele alese, aciunea se finalizeaz apsnd butonul Run (!) din meniul Design. Verificarea

    operaiunii se face deschiznd tabelele i urmrind dac s-au operat adugrile.

    Lista a furnizorilor din Iasi sau Vaslui.

    sau

    SELECT codFurn, numeFurn, localitate, banca FROM Furnizori WHERE localitate="Iasi" OR localitate="Vaslui"

    Lista facturilor din categoria utilitati, cu valoarea de peste 200 lei (Nrfactura, Numefurn, Data, Valoarefact). SELECT nrFactura, numeFurn, data, valoareFac FROM Furnizori INNER JOIN Aprovizionare ON Furnizori.codFurn = Aprovizionare.codFurn WHERE valoareFac>=200 AND categorie="utilitati"

    Raport al aprovizionrilor (Numr factur, Data, Nume furnizor, Valoare), cu gruparea nregistrrilor dup categoria de furnizor. Pentru fiecare categorie de furnizor se va calcula totalul valoric al facturilor

    28.

    La rulare va arta ca mai jos:

    Pentru antrenare a se descrca Baza de date se afl n cadrul acestui document PDF

    ACCDB.accdb

    Aprov-rez.accdb Baza de date rezolvat, pentru verificare

    28 Realizarea acestui raport se poate face din Report Wizard.

  • Modele lucrri practice

    53

    Lucrarea practic nr. 4 Dispunei de baza de date APROV care conine tabelele FURNIZOR(Codfurn, Numefurn, Localitate, Banca), APROVIZIONARE(Nrfactura, Data, Categorie, Codfurn, Valoarefact) i PLATI(Nrfactura, Dataplata, Valoare).

    Se cere:

    S se analizeze structura tabelei Plati i s se stabileasc cheia primar.

    S se stabileasc legturile permanente dintre tabele.

    S se defineasc o regul de validare care s impun ca valoarea maxim a unei facturi pentru un furnizor din categoria birotica s nu fie mai mare de 300 lei.

    Folosind o interogare SELECT SQL, s se afieze o list cu facturile care nu au fost pltite integral, ordonate descresctor dup valoarea facturii. Lista va conine: Nrfactura, Categorie, Valoare.

    S se obin un formular pentru vizualizarea /actualizarea nomenclatorului de furnizori.

    S se ntocmeasc un raport al plilor (Numr factur, Nume furnizor, Data plat, Valoare), cu gruparea nregistrrilor pe zile. Se va calcula total valoare facturi pentru fiecare zi i valoarea medie a plilor zilnice.

    Propunere de rezolvare Dispunei de baza de date APROV care conine tabelele FURNIZOR(Codfurn, Numefurn, Localitate, Banca), APROVIZIONARE(Nrfactura, Data, Categorie, Codfurn, Valoarefact) i PLATI(Nrfactura, Dataplata, Valoare). Se cere:

    analiza tabelei Plati i stabilirea cheii primar conform figurii de mai jos.

    legturile permanente dintre tabele.

    regul de validare care s impun ca valoarea maxim a unei facturi pentru un furnizor din categoria birotica s nu fie

    mai mare de 300 lei29

    .

    IIF([categorie]="birotica";IIF([valoareFac]SUM(NZ([valoare],0)) ORDER BY data DESC sau

    formular pentru vizualizarea /actualizarea nomenclatorului de furnizori.

    29 Validare la nivel de nregistrare (Property Sheet) 30 Dac enunul fcea referire doar la facturi nepltite, se putea realiza urmtoarea interogare:

    SELECT nrFactura, categorie, valoareFac FROM Aprovizionare WHERE nrFactura Not In (SELECT nrFactura FROM Plati) ORDER BY data DESC

  • Modele lucrri practice

    54

    raport al plilor (Numr factur, Nume furnizor, Data plat, Valoare), cu gruparea nregistrrilor pe zile. Se va calcula

    total valoare facturi pentru fiecare zi i valoarea medie a plilor zilnice.

  • Modele lucrri practice

    55

    Urmtorii pai in de gustul estetic, altfel putei da direct Finish.

    Lucrarea practic nr. 5 Pentru antrenare a se descrca Baza de date se afl n cadrul acestui document PDF

    ACCDB.accdb

    Vanz.accdb Baza de date pentru antrenare

    Dispunei de o baz de date VANZ cu tabelele AGENI(Codag, Nume, Adresa, Telefon), VANZARI(Nrfactura, Data, Valfact, Codag, Codzona) i ZONE(Codzona, Denumire, Procent). Se cere:

    S se analizeze atributele din fiecare tabel i s se stabileasc cheile primare corespunztoare acestora.

    S se stabileasc legturile permanente dintre cele 3 tabele i s se aplice restriciile refereniale.

    S se adauge factura cu numrul 2222, din data de 12 mai 2011, n valoare de 100 lei. Factura este ntocmit pentru zona Tatarai de ctre un agent nou, Marinescu Ioana, de pe strada Ion Creang, nr. 13, care are codul A10.

    Folosind o interogare SQL, s se afieze o list cu vnzrile din zona 1, cu valori mai mici de 300 lei (Lista va conine: Nume agent, Numr factur, Data facturii, Valoare factur).

    S se obin ntr-un raport vnzrile agentului A2, grupate pe zile. Raportul va conine: Numele agentului, Numrul facturii, Data facturii i Valoarea facturii.

    Propunere de rezolvare cheile primare sunt redate n figura de mai jos.

    legturile permanente dintre cele 3 tabele i restriciile refereniale.

    factura cu numrul 2222, din data de 12 mai 2011, n valoare de 100 lei. Factura este ntocmit pentru zona Tatarai de

    ctre un agent nou, Marinescu Ioana, de pe strada Ion Creang, nr. 13, care are codul A1031. INSERT INTO Agenti ( codAg, nume, adresa ) SELECT "A10", "Marinescu Ioana", "strada Ion Creang, nr. 13"

    i INSERT INTO Vanzari (nrFactura, data, valFact, codAg, codZona) SELECT 2222, #1/12/2010#, 100, "A10", 5

    lista cu vnzrile din zona 1, cu valori mai mici de 300 lei SELECT nume, nrFactura, data, valFact FROM Agenti INNER JOIN Vanzari ON Agenti.codAg = Vanzari.codAg WHERE valFact

  • Modele lucrri practice

    56

    Raport cu vnzrile agentului A2, grupate pe zile.

    Restul pailor pot fi doar NEXT sau FINISH direct (nu sunt att de importani, n cazul cerinei noastre). Se nchide modul de vizualizare PrintPreview (Close Print Preview). Va aprea automat fereastra Report Design.

    Se activeaz formularul Property Sheet. n acest formular se alege n fereastra Selection Type, cuvntul Report (apsarea pe sgeica de la ComboBox-ul

    respectiv i apoi a literei R va duce direct la Report). Din Tab-ul Data, la Recodr Source, se apas butonul de extindere a ferestrei de editare.

    . Va aprea Query Design, aferent acestui raport. Se d dublu clic pe cmpul CodAg din tabela Agenti pentru a o introduce n structura interogrii, dar se debifeaz

    caseta Show

    Apoi, se scrie la Criteria A2 (ghilimelele vor aprea automat). Se poate face proba ca s ne convingem c sunt doar

    seleciile agentului A2, apoi se nchide interogarea. Rularea raportului va reda doar vnzrile agentului A2 grupate pe zile.

    Pentru antrenare a se descrca Baza de date se afl n cadrul acestui document PDF

    ACCDB.accdb

    Vanz-rez.accdb Baza de date rezolvat, pentru verificare

  • Modele lucrri practice

    57

    i Tipuri de date

    Format Utilizare

    Text Valori scurte, alfanumerice, cum ar fi numele sau adresa strzii.

    Memo Poriuni lungi de text. O utilizare obinuit a cmpului Memo este descrierea detaliat a unui produs.

    Number Valori numerice, cum ar fi distane. Reinei c exist un tip de date separat pentru valori monetare.

    Dimensiune cmp*

    Selectai una dintre urmtoarele variante:

    Byte - Se utilizeaz pentru numere ntregi [0 ; 255]. Cerina de stocare = 1 byte (octet).

    Integer - Se utilizeaz pentru numere ntregi [-32,768 ; 32,767]. Cerina de stocare = 2 octei.

    Long Integer* - Se utilizeaz pentru numere ntregi [-2.147.483.648 ; 2.147.483.647]. Cerina de stocare = 4 octei.

    Single - Se utilizeaz pentru valori numerice n virgul mobil, [-3,4 x 1038 ; 3,4 x 1038] i pn la apte cifre relevante. Cerina de stocare = 4 octei.

    Double - Se utilizeaz pentru valori numerice n virgul mobil, [-1,797 x 10308 ; 1,797 x 10308] i pn la 15 cifre relevante. Cerina de stocare = 8 octei.

    Replication ID - Se utilizeaz pentru stocarea identificatorilor unici globali necesari reproducerilor. Cerina de stocare = 16 octei. Reinei c reproducerea nu este utilizat n formatul de fiier .accdb.

    Decimal - Se utilizeaz pentru valori numerice [-9,999... x 1027 ; 9,999... x 1027]. Cerina de stocare = 12 octei.

    Date/Time Valorile de dat i or pentru anii cuprini n intervalul 100 i 9999.

    Currency Valori ale simbolurilor monetare.

    AutoNumber Numere ce sunt generate automat pentru fiecare nregistrare

    Yes/No Valori Da i Nu i cmpuri care conin o singur valoare din dou. (valori booleene)

    OLE Object Obiecte OLE, cum ar fi documente Word.

    Hyperlink Text sau combinaii de text i numere stocate ca text i utilizate ca adres hyperlink.

    Lookup

    Wizard

    Afieaz o list de valori care este regsit dintr-un tabel sau o interogare sau un set de valori pe care l-ai specificat cnd ai creat cmpul. Va porni expertul Cutare i poate fi creat un cmp Cutare. Tipul de date al unui cmp Cutare este Text sau Numr, n funcie de opiunile pe care le selectai n expert.

    __________________________

    * Pentru cele mai bune performane, specificai ntotdeauna cea mia mic Dimensiune de cmp suficient **Utilizai Long Integer cnd creai o cheie extern pentru a crea o asociere la cmpul cheie primar AutoNumber din alt tabel.

    ii Tipuri de date

    Format Utilizare

    Text Valori scurte, alfanumerice, cum ar fi numele sau adresa strzii.

    Memo Poriuni lungi de text. O utilizare obinuit a cmpului Memo este descrierea detaliat a unui produs.

    Number Valori numerice, cum ar fi distane. Reinei c exist un tip de date separat pentru valori monetare.

    Dimensiune cmp*

    Selectai una dintre urmtoarele variante:

    Byte - Se utilizeaz pentru numere ntregi [0 ; 255]. Cerina de stocare = 1 byte (octet).

    Integer - Se utilizeaz pentru numere ntregi [-32,768 ; 32,767]. Cerina de stocare = 2 octei.

    Long Integer* - Se utilizeaz pentru numere ntregi [-2.147.483.648 ; 2.147.483.647]. Cerina de stocare = 4 octei.

    Single - Se utilizeaz pentru valori numerice n virgul mobil, [-3,4 x 1038 ; 3,4 x 1038] i pn la apte cifre relevante. Cerina de stocare = 4 octei.

    Double - Se utilizeaz pentru valori numerice n virgul mobil, [-1,797 x 10308 ; 1,797 x 10308] i pn la 15 cifre relevante. Cerina de stocare = 8 octei.

    Replication ID - Se utilizeaz pentru stocarea identificatorilor unici globali necesari reproducerilor. Cerina de stocare = 16 octei. Reinei c reproducerea nu este utilizat n formatul de fiier .accdb.

    Decimal - Se utilizeaz pentru valori numerice [-9,999... x 1027 ; 9,999... x 1027]. Cerina de stocare = 12 octei.

    Date/Time Valorile de dat i or pentru anii cuprini n intervalul 100 i 9999.

    Currency Valori ale simbolurilor monetare.

    AutoNumber Numere ce sunt generate automat pentru fiecare nregistrare

    Yes/No Valori Da i Nu i cmpuri care conin o singur valoare din dou. (valori booleene)

    OLE Object Obiecte OLE, cum ar fi documente Word.

  • Modele lucrri practice

    58

    Hyperlink Text sau combinaii de text i numere stocate ca text i utilizate ca adres hyperlink.

    Lookup

    Wizard

    Afieaz o list de valori care este regsit dintr-un tabel sau o interogare sau un set de valori pe care l-ai specificat cnd ai creat cmpul. Va porni expertul Cutare i poate fi creat un cmp Cutare. Tipul de date al unui cmp Cutare este Text sau Numr, n funcie de opiunile pe care le selectai n expert.

    __________________________

    * Pentru cele mai bune performane, specificai ntotdeauna cea mai mic Dimensiune de cmp suficient **Utilizai Long Integer cnd creai o cheie extern pentru a crea o asociere la cmpul cheie primar AutoNumber din alt tabel.

    NRFACTURADATACATEGORIECODFURNVALOAREFAC

    1111.012/1/11utilitati1001.01000.0

    1112.02/7/11utilitati1001.02000.0

    1113.03/7/11mat prime1005.0500.0

    1114.03/7/11utilitati1002.02000.0

    1115.03/7/09birotica1004.01500.0

    1116.04/7/09birotica1003.0300.0

    1117.05/5/11mat prime1005.0600.0

    1118.05/9/11utilitati1001.0125.0

    1119.05/10/11utilitati1002.0250.0

    1120.05/11/11birotica1003.0214.0

    1422.05/10/11birotica1010.0200.0

    12445.05/10/11birotica1010.0215.0

    CODFURNNUMEFURNLOCALITATEBANCA

    1001.0SC ALFA SRLIASIBRD

    1002.0SC BETA SRLVASLUIBCR

    1003.0SC GAMMA SABOTOSANIBCR

    1004.0SC C&V SRLIASIBCR

    1005.0SC MOVU SAIASIBRD

    1010.0FLAMINGO SRLIasiBRD

    NRFACTURADATAPLATAVALOARE

    1111.02/1/11500.0

    1111.03/1/11500.0

    1114.04/1/11120.0

    1115.05/1/111500.0

    numar avizdata avizcod gestiunecod client

    10013/3/0610011001

    10022/28/0610011001

    10032/28/0610011002

    10045/2/0610021002

    10056/2/0610021003

    cod clientdenumire clientcod localitatesold

    1001SC KOMBASAN SA10053586.0

    1002SC UNIREA SA100265.5

    1003SC HOFFER SA1002658.0

    1004SC CORAL SRL100612.5

    1005SC AMBRAS SA1005246.0

    1006SC VADUL SA10068957.0

    1007SC HORBAD SRL100746.0

    1008SC BENNY HILL SRL1001777.0

    numar nota intraredata documentcod gestiune

    10012/28/061001

    10021/11/061002

    10033/2/061001

    cod gestiunedenumire gestiunenume gestionar

    1001DepozitPopescu Vasilica

    1002Magazie1Marchizu Ghi

    1003Magazie2Andreica Cosmin

    numar documentdata documentcod clientsumatip de document

    10012/28/0610011100.0ordin de plat

    10025/5/061003250.0chitan

    10031/11/061002100.0chitan

    numar avizcod produscantitateprocent TVApret

    100110014.019125.0

    1001100415.01920.0

    100210016.01915.0

    100210025.01912.0

    1002100425.0195.0

    1003100210.0191.0

    10031003150.000.0

    1004100210.01925.0

    1004100320.01910.0

    1005100312.01915.0

    1005100530.0192.5

    numar nota intrarecod produscantitate

    10011001100.0

    10011005600.0

    10021001200.0

    10021002400.0

    10031004100.0

    cod localitatedenumire localitatedenumire judet

    1001PlopeniPH

    1002IaiIS

    1003Trgu-FrumosIS

    1004VasluiVS

    1005BrladVS

    1006GalaiGL

    1007TecuciGL

    cod produsdenumire produsunitate de masurapretstoc

    1001BiscuiiKg0.8500.0

    1002CovrigiBuc0.10.0

    1003LapteL1.20.0

    1004ColaciBuc0.350.0

    1005CornuriBuc0.450.0

    PARAMETERS __cod localitate Value;SELECT DISTINCTROW *FROM clienti AS [Ex 4 Actualizare localitati si clienti]WHERE ([__cod localitate] = [cod localitate]);

    SELECT localitati.[cod localitate], localitati.[denumire localitate]FROM localitatiORDER BY localitati.[denumire localitate];

    SELECT DISTINCTROW *FROM clienti;

    SELECT DISTINCTROW *FROM clienti;

    SELECT [avize de expeditie].[numar aviz], clienti.[denumire client], [avize de expeditie].[data aviz]FROM clienti INNER JOIN [avize de expeditie] ON clienti.[cod client]=[avize de expeditie].[cod client];

    SELECT DISTINCTROW *FROM localitati;

    SELECT produse.[denumire produs], [linii in avize].cantitate, [linii in avize].[procent TVA], [linii in avize].pret, produse.[unitate de masura], [linii in avize].[numar aviz]FROM produse INNER JOIN [linii in avize] ON produse.[cod produs]=[linii in avize].[cod produs];

    SELECT DISTINCTROW *FROM gestiune;

    SELECT clienti.[denumire client], clienti.sold, incasari.[numar document], incasari.[data document], incasari.suma, incasari.[tip de document]FROM clienti INNER JOIN incasari ON clienti.[cod client]=incasari.[cod client];

    SELECT clienti.[denumire client], localitati.[denumire localitate]FROM localitati INNER JOIN clienti ON localitati.[cod localitate] = clienti.[cod localitate];

    TRANSFORM Sum(incasari.suma) AS SumOfsumaSELECT incasari.[cod client], Sum(incasari.suma) AS [Total Of suma]FROM incasariGROUP BY incasari.[cod client]PIVOT incasari.[tip de document];

    SELECT clienti.[denumire client]FROM clientiWHERE (((clienti.[cod localitate])="1002"));

    SELECT clienti.[denumire client] INTO [Clientii din localitate 1002]FROM clientiWHERE (((clienti.[cod localitate])="1002"));

    PARAMETERS cod_loc Text(255);SELECT clienti.[denumire client], clienti.[cod localitate]FROM clientiWHERE (((clienti.[cod localitate])=[cod_loc]));

    SELECT [avize de expeditie].[data aviz], gestiune.[denumire gestiune], clienti.[denumire client], localitati.[denumire localitate], produse.[denumire produs], [linii in avize].cantitate, [linii in avize].[procent TVA], [linii in avize].pretFROM localitati INNER JOIN (clienti INNER JOIN (produse INNER JOIN ((gestiune INNER JOIN [avize de expeditie] ON gestiune.[cod gestiune] = [avize de expeditie].[cod gestiune]) INNER JOIN [linii in avize] ON [avize de expeditie].[numar aviz] = [linii in avize].[numar aviz]) ON produse.[cod produs] = [linii in avize].[cod produs]) ON clienti.[cod client] = [avize de expeditie].[cod client]) ON localitati.[cod localitate] = clienti.[cod localitate]WHERE ((([avize de expeditie].[numar aviz])="1002"));

    INSERT INTO clientiSELECT 1008 AS Expr1, "SC BENNY HILL SRL" AS Expr2, 1001 AS Expr3, 777 AS Expr4;

    UPDATE clientiSET clienti.sold = 888WHERE (((clienti.[cod client])="1008"));

    DELETE clienti.[cod client]FROM clientiWHERE (((clienti.[cod client])="1008"));

    TRANSFORM Sum(suma) AS SumOfsumaSELECT [cod client], Sum(suma) AS [Total Of suma]FROM incasariGROUP BY [cod client]PIVOT [tip de document];

    SELECT localitati.[cod localitate], localitati.[denumire localitate], localitati.[denumire judet], clienti.[cod client], clienti.[denumire client]FROM localitati, clientiWHERE localitati.[cod localitate]=clienti.[cod localitate];

    SELECT clienti.[denumire client], [avize de expeditie].[numar aviz], [avize de expeditie].[data aviz], produse.[denumire produs], [linii in avize].cantitate, produse.[unitate de masura], [linii in avize].[procent TVA], [linii in avize].pret, [linii in avize].[cod produs]FROM clienti, [avize de expeditie], [linii in avize], produseWHERE clienti.[cod client]=[avize de expeditie].[cod client] And [avize de expeditie].[numar aviz]=[linii in avize].[numar aviz] And [linii in avize].[cod produs]=produse.[cod produs];

    SELECT [denumire client]FROM clientiWHERE [cod localitate]="1002";

    SELECT [denumire client], [cod client]FROM clientiWHERE [cod localitate]="1006" And sold>1000;

    SELECT [numar nota intrare], [data document]FROM [documente de intrare]WHERE [data document] >=#2006/02/15#AND [data document]


Recommended