baze de date.pdf

Embed Size (px)

Citation preview

  • 5/24/2018 baze de date.pdf

    1/63

    Baze de date

    Universitatea OVIDIUS ConstanaDepartamentul ID-IFRFacultatea Stiine EconomiceSpecializarea Finane Bnci

    Forma de nvmnt IDAnul de studiu 1Semestrul 2Valabil ncepnd cu anul universitar 2009-2010

    Caiet de Studiu Individualpentru

    Baze de date

    Coordonator disciplin: Lect. drd. Jeflea Victor

  • 5/24/2018 baze de date.pdf

    2/63

    Baze de date

    BAZE DE DATE

    CUPRINS

    Unitatede

    nvare

    1

    2

    3

    4

    5

    Titlul

    INTRODUCERE

    TABELE ACCESS1.1. Familiarizarea cu mediul Access;1.2. ntelegerea primelor noiuni teoretice: baz de date, tabele,

    nregistrri, cmpuri, structuri de tabele;

    1.3. Definirea primelor structuri de tabele.CHEIE PRIMAR, CHEIE EXTERN, RELAII

    INTERTABELARE2.1.Intelegerea notiunilor de cheie externa, relatii intre tabele, tabele

    master, tabele detail;2.2.Definirea structurilor tabelelor din baza de date IMOBILIARE;2.3.Crearea relatiilor intre tabele.

    FORMULARE ACCESS

    3.1.Proiectarea de formulare;3.2.Proiectarea de formulare cu subformular;

    INTEROGRI4.1. Proiectarea unor interogri de selecie;4.2.Proiectarea unor interogri de tip Make Table;4.3. Proiectarea unor interogri de tip Update Query;4.4.Proiectarea unor interogri de tip Delete;4.5. Proiectarea unor interogri de tip Append ;4.6.Proiectarea unor interogri de tip CrossTab

    INTEROGRI SQL5.1.Proiectarea unor interogri de selecie n SQL5.2.Proiectarea unor interogri de tip Make Table n SQL5.3.Proiectarea unor interogri de tip Update Query n5.4.Proiectarea unor interogri de tip Delete n SQL5.5.Proiectarea unor interogri de tip Append n SQL

    Pagina

    1

    4

    10

    17

    23

    36

  • 5/24/2018 baze de date.pdf

    3/63

    Baze de date

    6

    7

    MACROURI6.1.Proiectarea unor macro-uri pentru operaiuni asupra obiectelor

    bazei de date (tabele i formulare);6.2.Proiectarea unor macro-uri care se lanseaz la apariia unor

    evenimente;

    6.3.Ataarea unor macro-uri la butoane n cadrul formularelor.VISUAL BASIC PENTRU APLICAII (VBA)7.1.Utilizarea obiectelor DAO pentru crearea tabelelor;7.2.Utilizarea obiectelor DAO pentru cutarea unor informaii n

    tabele;7.3.Utilizarea obiectelor DAO pentru actualizarea tabelelor.

    BIBLIOGRAFIE

    45

    53

    63

  • 5/24/2018 baze de date.pdf

    4/63

    Baze de date

    Unitatea de nvare Nr. 1

    Tabele ACCESS

    CuprinsObiectivele Unitii de nvare Nr. 1

    1.4. Familiarizarea cu mediul Access;1.5. ntelegerea primelor noiuni teoretice: baz de date, tabele, nregistrri,

    cmpuri, structuri de tabele;1.6. Definirea primelor structuri de tabele.

    Test de autoevaluareRspunsuri i comentarii la ntrebrile din testul de autoevaluare

  • 5/24/2018 baze de date.pdf

    5/63

    Baze de date

    Crearea tabelelor ACCESS

    Cel mai raspindit procedeu de creere a unui tablou intr-o baza de date printre cele trei

    mentionate mai sus, precum: in design view using wizard prin introducerea directa a datelor, similar unei foi de calcul Excel,

    este cel in design view, pe care vom incerca sa-l explicam in detaliu in cele ce urmeaza.

    O tabela ACCESS in design view are doua parti:

    (i) partea superioara care contine numele cimpului (lungime mai mare de 64 de caractere,incluzind si spatile dintre acestea) cit si tipul de date utilizat (text, number, date/time,memo, autonumber, yes/no, currency, OLE object, hyperlink, lookup wizard)

    (ii) partea inferioara care contine proprietatile cimpurilorDeci de fiecare data cind creem un tabel in design view trebuie sa specificam proprietatile tabeluluicit al cimpurilor sale. Proprietatile tabelelelor din ACCESS se aplica tabelului in mod global,introducerea acestora fiind optionala. Pentru specificarea acestor proprietati vom executa un clic pebutonul Proprietati de pe bara cu instrumente in modul de afisare Table Design. Drept efect peecran va apare o fereastra cu cele 10 proprietati ale tabelului creat anterior, Date personale,precum cea din figura 1.1.

    Figura 1.1. Fereastra Table Properties pentru tabelul Date personale

  • 5/24/2018 baze de date.pdf

    6/63

    Baze de date

    Vom descrie pe scurt semnificatia fiecareia din cele zece proprietati:

    Description: descriere sumara sub forma de text a scopului tabelului (optional) Validation Rule: o expresie (formula) ce stabileste regulile de integritate a domeniului

    pentru mai multe cimpuri ale unui tabel (optional). Regula de validare introdusa se aplicatuturor cimpurilor din tabel.

    Validation text: specifica textul din caseta de mesaje care va fii afisata in cazul incalcariiuneia din regulile de validare a tabelului (optional)

    Filter: specifica o conditie care trebuie aplicata tabelului la deschiderea acestuia, limitindnumarul inregistrarilor pe baza unor criterii de selectie indicate de utilizator (optional)

    Order By: specifica ordinea de sortare care trebuie aplicata unui tabel, ori de cite ori estedeschis, inregistrarile fiind afistae in ordinea cheii primare, in cazul in care aceasta exista(optional)

    Subdatasheet Name: este o noua facilitate introdusa de ACCESS-2000, care determinaoportunitatea si modul de afisare a datelor din inregistrarile inrudite in foile secundare.Valoare prestabilita (by default) este [Auto], care aduaga in mod automat foi de date

    secundare pentru inregistrarile legate din tabele inrudite, pe cind valoarea [None]dezactiveaza foile de date secundare (optional). Link Child Fields: specifica denumirea cimpului legat din tabelul inrudit (subordonat) ale

    carei inregistrari apar in foaia de date secundare, fiind conditionat de aplicarea optiuniiSubdatasheet Name (optional).

    Link Master Fields: specifica denumirea cimpului de legatura din tabelul foii superioaresau al foii de date secundare, fiind conditionat de aplicarea optiunii Subdatasheet Name(optional).

    Subdatasheet Height: specifica inaltimea maxima a foii de date secundare, fiindconditionat de aplicarea optiunii Subdatasheet Name. Valoarea prestabilita este 0 si permiteafisarea tuturor inregistrarilor inrudite din foaia de date secundare (optional).

    Subdatasheet Expanded: controleaza aspectul initial al foii de date secundare, fiindconditionata de aplicarea optiunii Subdatasheet Name. Selectia valorii [Yes] are drepteffect deschiderea foii de date cu toate foile de date secundare deschise (optional).ACCESS 2000 are o ferestra Indexes pentru specificarea cheii principale si a tuturorindexurilor tabelului. Pentru selectarea cheii primare executam un clic pe Primary Key depe bara cu instrumente. Este posibila uneori extinderea cheii principale pe mai multecimpuri, situatie in care spunem ca tabelul are o cheie compusa.

    Proprietatile care trebuiesc precizate in reteaua Table Design pentru fiecare cimp sint:

    Field Name: Specifica denumirea cimpului din prima coloana a tabelului. Denumireacimpurilor nu poate depasi 64 de caractere, impreuna cu spatiile si semnele de punctuatieinglobate, cu exceptia punctelor (.), a semnelor de exclamatie (!) si a parantezelor drepte([]). Fiecare cimp va avea un nume unic in tabela, iar asignarea lui este obligatorie pentruidentificare.

    Data Type: specifica unul din urmatoarele tipuri de valoare ce se ataseaza in cea de-a douacoloana fiecarui cimp definit in prima coloana a tabelei:

  • 5/24/2018 baze de date.pdf

    7/63

    Baze de date

    o Text : este valoarea prestabilita fiecarui cimp din tabela, reprezentind oricecombinatie de litere si numere de lungime maxima 255 caractere per fiecareinregistrare

    o Memo: este de tip text care memoreaza pina la 64.000 caractereo Number: spcifica orice numar ce poate fii memorato

    Date/Time: specifica data (ziua/luna/an), timpul sau o combinatie a celor douao Currency: specifica valoarea monedei care poate fii setata, intr-un format care

    include semnul dolarului ($) ca parte de inceput, numarul corect de zecimale,precum si pozitia virgulei in cazul formatului de reprezentare englezesc

    o AutoNumber: specifica un numar intreg unic asignat automat fiecarei inregistrari inmomentul creerii acesteia

    o Yes/No: specifica o valoare logica, binara de tipul True/False, Yes/No, ori On/Offo OLE Object (Object Linking and Embedding): specifica un sunet, desen, ori alt

    obiect precum un document Word, foaie de calcul Excel, etc., care este creat in altprogram (embed object)

    o Hyperlink: specifica o legatura (link) a bazei de date cu un anume site al Internetului,Intranetului sau o alta locatie din interiorul aceleiasi baze de date. Datele sintreprezentate printr-un sir de caractere compus din unul pina la patru subsiruri decaractere separate intre ele prin semnul pound (#):

    Test de autoevaluareA 1. Gestiune personalA 1.1.1 Crearea bazei de date Gestiune PersonalBaza de date, cu numele Gestiune personal, va fi salvat pe calea C:\STUDENTI\AN

    2\GRUPA 2xx\Nume_student.

    A 1.1.2Crearea tabelului PERSONALPentru crearea unui tabel se apas butonulNew, apoi se alege optiuneaDesign View,OK. n urma acestor aciuni va apare fereastra Table. Se vor introduce numelecmpurilor, tipul de date asociat cmpurilor respective, proprietile cmpurilorrespective conform tabelului de mai jos:

    FieldName

    Data Type FieldSize /Format

    DecimalPlaces

    Vali-

    dationRule

    Lookup Obs

  • 5/24/2018 baze de date.pdf

    8/63

    Baze de date

    Marca Autonumber Cheieprimara

    Nume siprenume

    Text 40

    Adresa Text 30

    Starecivila

    Text 15 Lista de valori:

    Casatorit;Necasatorit;Divortat;Vaduv

    Vechime Number Integer >=0

    Codfunctie

    Number Integer >0

    Cod sectie Number Integer >0

    Salariuincadrare

    Currency Currency 0 >0

    Se salveaz tabelul cu numele Personal.A 1.1.3Crearea tabelului FunciiTabelul Funcii va avea structura din tabelul de mai jos:

    FieldName

    Data Type FieldSize /Format

    DecimalPlaces

    Vali-

    dationRule

    Lookup Obs

    Codfunctie

    Number Integer >0 Cheieprimara

    Denumirefunctie

    Text 20

  • 5/24/2018 baze de date.pdf

    9/63

    Baze de date

    Se salveaz tabelul cu numele Functii.

    A 1.1.4Crearea tabelului SeciiTabelul Secii va avea structura din tabelul de mai jos:

    FieldName

    Data Type FieldSize /Format

    DecimalPlaces

    Vali-

    dationRule

    Lookup Obs

    Cod sectie Number Integer >0 Cheieprimara

    Denumiresectie

    Text 20

    Se salveaz tabelul cu numele Sectii.

    A 1.1.5 Crearea tabelului PrezenaTabelul Prezen va avea structura din tabelul de mai jos:

    Field Name Data Type Field Size/ Format

    DecimalPlaces

    Vali-

    dationRule

    Lookup Obs

    Marca Number LongInteger

    >0

    Ore efectuate Number Integer >0

    Tarif /Ora Currency Currency >0

    Se salveaz tabelul cu numele Prezenta

  • 5/24/2018 baze de date.pdf

    10/63

    Baze de date

    Unitatea de nvare Nr. 2

    Cheie primar, cheie extern, relaii intertabelare

    CuprinsObiectivele Unitii de nvare Nr. 2

    2.1.Intelegerea notiunilor de cheie externa, relatii intre tabele, tabele master,tabele detail;

    2.2.Definirea structurilor tabelelor din baza de date IMOBILIARE;2.3.Crearea relatiilor intre tabele.

    Test de autoevaluareRspunsuri i comentarii la ntrebrile din testul de autoevaluare

  • 5/24/2018 baze de date.pdf

    11/63

    Baze de date

    Pentru a evita duplicarea informatiei intr-o baza de date prin repetarea unor cimpuriin mai mult de o tabela, ACCESS gaseste o modalitate simpla prin stabilirea unorrelatii (maps) care leaga toate aceste cimpuri din tabele diferite impreuna.

    Pentru setarea unei baze de date relationale vom parcurge urmatoarele etape:

    Pasul 1: Clic butonul Relationships din bara de meniu Tools

    Pasul 2: Din fereastra Show Table clic pe butonul Show Table, double clic pe numele tabelelor pecare dorim sa le includem in relatii, clic pe butonul Add iar dupa ce terminam de adaugat toateaceste tabele care ne intereseaza clic Close, dupa cum putem observa din figura2.1.

    Pasul 3: Pentru a lega cimpurile celor doua tabele intre ele vom trage oricare dintre cimpurileprimei tabele pina il suprapunem pe unul din cimpurile celei de-a doua tabele si vom relaxa mouse-ul. Va apare in acest moment pe ecran o ferestra de dialog Edit Relationships. In acesta fereastra

    vom selecta diferite cimpuri daca este necesar si vom selecta o optiune din Enforce ReferentialIntegrity daca este necesar. Aceste optiuni permit ACCESS-ului sa realizeze actualizarea automataa tabelelor de referinta in cazul unor modificari de inregistrari in una din aceste tabele. Activeazacasuta (check box) Enforce Referential Integrity pentru a ne asigura ca relatiile sint valide sidatele nu sint accidental sterse cind datele sint adaugate, editate, sau sterse. Clic Create pentru acrea legatura (link) dintre cele doua tabele. Din acest moment o linie de interconexiune intre celedoua tabele va apare, dupa cum observam in figurile 2.2-2.3.

    Figura 2.1.: Show Table-Relatii intre tabelele Date personale si Angajat ale aceleiasi baze de datedata1

  • 5/24/2018 baze de date.pdf

    12/63

    Baze de date

    Foaia de date (datasheet) a tabelei relationale va furniza indicatori de extindere (expand) saucontractie (collapse) pentru a permite visualizarea foilor secundare (subdatasheets) ce contininformatii comune (matching information) din alte tabele. In exemplul nostru baza de date dintabelul Angajat a fost legata cu baza de date din tabelul Date personale, cele doua putind fii

    visualizate simultan folosind facilitatile furnizate de extindere (expand). Pentru a extinde saucontracta toate foile secundare impreuna vom utiliza Format|Subdatasheet|Expand All oriCollapse All din bara de meniu.

    Figura. 2.2: Edit Relationships intre tabelul Angajat si tabelul date personale

    Figura 2. 3: Legatura (link) dintre tabelul Angajat si tabelul Date personale ale aceleiasi baza dedate data1

  • 5/24/2018 baze de date.pdf

    13/63

    Baze de date

    Test de autoevaluare

    A 2.1.1 Crearea bazei de date Imobiliare

    Baza de date, cu numele Imobiliare , va fi salvat pe calea C:\STUDENTI\AN2\GRUPA 2xx\Nume_student.

    A 2.1.2. Crearea tabelului Proprietari

    Tabelul Proprietari va avea structura din tabelul de mai jos:

    FieldName

    Data Type FieldSize /

    Format

    DecimalPlaces

    Vali-

    dationRule

    Lookup Obs

    Numarproprietar

    Number Integer >0 Cheieprimara

    Numeproprietar

    Text 40

    Adresaproprietar

    Text 30

    Telefonproprietar

    Text 10

    A 2.1.3 Crearea tabelului Ageni

    Tabelul Ageni va avea structura din tabelul de mai jos:

    FieldName

    Data Type FieldSize /Format

    DecimalPlaces

    Vali-

    dationRule

    Lookup Obs

    Numaragent

    Number Integer >0 Cheieprimara

  • 5/24/2018 baze de date.pdf

    14/63

    Baze de date

    Numeagent

    Text 40

    Adresa

    agent

    Text 30

    Telefonagent

    Text 10

    A 2.1.4 Crearea tabelului Imobile

    Tabelul Imobile va avea structura din tabelul de mai jos:

    FieldName

    Data Type FieldSize /Format

    DecimalPlaces

    Vali-

    dation Rule

    Lookup Obs

    Numarimobil

    Number Integer >0 Cheieprimara

    Numarproprietar

    Number Integer >0 TabelPROPRIETARI

    Cheieexterna

    Numaragent

    Number Integer >0 Tabel AGENTI Cheieexterna

    Localitate Text 20

    Zona Text 15 Lista de valori:zona0;zona1;zona2

    Tipimobil

    Text 10 Lista de valori:garsoniera;apartament;casa

    Camere Number Byte >0

    Adresaimobil

    Text 30

  • 5/24/2018 baze de date.pdf

    15/63

    Baze de date

    Pretsolicitat

    Currency Currency 0 >0

    Pret

    vanzare

    Currency Currency 0 >=0

    Datavanzare

    Date/Time ShortDate

    >#01/01/02#

    Pentru definirea cheilor externe(Numr proprietar i Numr agent):

    se apas etichetaLookup;pe liniaDisplay Controlse alege opiuneaList Box;pe liniaRow Source Typese alege opiunea Table/Query(este opiunea implicit);pe liniaRow Sourcese selecteaz tabelul master (care trebuie pus nLookup) .

    A.2.1.5. Crearea relaiilor dintre tabele

    Crearea relaiilor ntre tabele se face n dou etape:

    Etapa 1Definirea cheilor primare din tabelele master si a cheilor externe din tabeleledetail.Etapa 2Crearea propriu zis a relaiilor dintre tabele.

    Etapa 1 a fost realizata cnd s-au definit structurile tabelelor.

    Pentru realizarea etapei 2 se va utiliza instrumentulRelationship. Legtura se face ntre tabelulmaster i tabelul detail pe cmpul care este cheie primar n master i cheie extern n tabeluldetail.

    Legturile dintre tabelele bazei de date sunt reprezentate grafic mai jos:

  • 5/24/2018 baze de date.pdf

    16/63

    Baze de date

    Crearea relaiilor utiliznd Relationship se va face parcurgnd etapele:

    Se apas butonulRelationship; Se selecteaz toate cele trei tabele i se apas pe butonul Add. Cele trei tabele apar pe

    fundalul ferestreiRelationships. Apoi se apasa pe butonul Close. Pentru a face prima legatur, dintre tabelul Proprietarii tabelul Imobile, se ia campul

    Nrproprietardin tabelulProprietarisi cu tehnica drag and drop se trece peste campulNr proprietar din tabelulImobile.

    Se bifeaz butoanele de validareEnforce Referential Integrity, Cascade Update RelatedFields, Cascade Delete Related Records, apoi se apas pe butonul Create.

    Se procedeaz la fel i pentru legtura dintre tabelele Ageni i Imobile. Se nchide fereastra Relationships i se salveaz nainte de nchidere.

  • 5/24/2018 baze de date.pdf

    17/63

    Baze de date

    Unitatea de nvare Nr. 3

    Formulare ACCESSCuprinsObiectivele Unitii de nvare Nr. 3

    3.2.Proiectarea de formulare;3.2.Proiectarea de formulare cu subformular;

    Test de autoevaluareRspunsuri i comentarii la ntrebrile din testul de autoevaluare

  • 5/24/2018 baze de date.pdf

    18/63

    Baze de date

    Editarea Formelor

    In cazul modificarii unei forme in Design View urmatoarele elemente s-ar puteadovedi benefice atit pentru conceptor cit si pentru utilizator:

    Grid lines Prestabileste o serie de linii si puncte in Design View Form pentru a facilitaalinierea cimpurilor din tabela. Pentru a bascula (toggle) aceasta caracteristica selectamView|Grid din bara de meniu.

    Snap to Grid- Selectam Format|Snap to Grid pentru alinierea formei obiectelor cu gridulpentru alinierea cu usurinta a obiectelor formei sau dezactivam (uncheck) aceastacaracteristica pentru a permite obiectelor sa fie mobile printre liniile de grid si puncte.

    Resizing Objects Permite redimensionarea obiectelor formei respective cu ajutorul mouse-ului.

    Change form object type Permite schimbarea tipului de obiect al formei fara a fii necesaracreerea unei noi forme, prin executarea unui dreapta clic cu mouse-ul asupra obiectului

    respectiv urmata de selectia Change To si apoi reselectarea noului tip de obiect valabildin lista afisata in fereastra. Label/object alignment Fiecare obiect al formei precum si eticheta sa sint limitate si se

    deplaseaza impreuna ori de cite ori unul din ele este deplasat cu mouse-ul. Prin urmarepentru a schimba pozitia obiectului si a etichetei sale in raport unul cu celalalt mai intiipozitionam mouse-ul deasupra obiectului in coltul sting, executam un clic asupra sa si-ltragem in pozitia dorita.

    Tab order Altereaza ordinea obiectelor formei prin selectarea View|Tab Order...din barade meniu.

    Form Appearance Schimba culoarea de fond a formei prin executarea unui clic pebutonul Fill/Back Color de pe bara de instrumente de formatare. Putem schimba culoarea

    fiecarui obiect individual al formei prin suprailuminarea obiectului si selectarea unei culoridin paleta de culori Font/Fore Color a barei de instrumente de formatare. Fontul simarimea sa, efectul, alinierea, bordarea obiectelor precum si efectele speciale pot fiimodificate folosind bara de instrumente de formatare.

  • 5/24/2018 baze de date.pdf

    19/63

    Baze de date

    Test de autoevaluare

    A.3.1 Desfurarea lucrriiA3.1.1 Formulare simple

    1. S se elaboreze un formular pentru introducerea datelor n tabelulPROPRIETARI. Cu ajutorul acestui formular s se introduc urmtoarele date:Nr

    proprietarNumeproprietar

    Adresa proprietar Telefonproprietar

    10 Ivanciu Adriana Constanta, Str. Tractorului nr. 1 0241690915

    11 Daescu Daniel Bucuresti, Str. Castanilor nr. 26,Bl. A5, Ap 4

    0217543175

    12 Ciulei Anghel Iasi, Str. Razboieni nr. 58, Bl.DV12, Ap. 25

    0232334015

    13 Ismail Aihan Galati, Str. Universitatii nr. 75 0236445098

    14 Motoc Elisabeta Iasi, Str. Eminescu nr. 55, Bl.E4, Ap. 3

    0232340123

    15 Omer Abidin Constanta, Str. Eliberarii nr. 10 0241653308

    16 Paunescu Ionel Constanta, Str. Iasomiei nr. 33,

    Bl. ID9, Ap. 9

    0241631542

    17 Peicu Aurelia Bucuresti, Str. Arcului nr. 23, Bl.7A, Ap. 43

    0217683558

    18 UriasuConstantin

    Bucuresti, Str. Razoare nr. 60,Bl. S2, Ap. 31

    0216889054

    19 GeorgescuMihai

    Constanta, Str. Nicolae Iorga nr.34

    0241554489

    20 UngureanuMarius Constanta, Str. Unirii nr. 187 0241678542

    21 Ionescu Maria Constanta, Str. Mircea cel Batrannr. 23

    0241653341

  • 5/24/2018 baze de date.pdf

    20/63

    Baze de date

    2. S se elaboreze un formular pentru introducerea datelor n tabelul AGENTI. Cu ajutorulacestui formular s se introduca urmtoarele date:

    Numaragent

    Nume agent Adresa agent Telefon agent

    1501 PrisacaruConstantin

    Constanta, Bd. Lapusneanu nr. 32,Bl. LS2, Ap. 14

    0241580648

    1502 ManeaNicolae

    Constanta, Bd. Mamaia nr. 185 0241648523

    1503 GodeanuMaria

    Constanta, Str. Poporului nr. 79 0722586941

    A 3.1.2 Formular cu subformular1. Sa se elaboreze un formular cu subformular pentru tabelele AGENTI si IMOBILE. Cu

    ajutorul acestora sa se introduca urmatoarele imobile :

    umar

    imobil

    Nr.proprietar

    Numaragent

    Localitate

    Zona

    Tipimobil

    Camere

    Adresa

    imobil

    Pretsolicitat

    Pretvanzare

    Datavanzare

    5500

    10 1502

    Constanta

    Zona 1

    Apart.

    3 Str. Marastinr. 56

    $25.000 $25.000 16.02.2003

    5501

    10 1502

    Constanta

    Zona 0

    Gars. 1 Str. I.G.Duca nr. 35

    $18.000 $16.500 25.09.2003

    5502

    12 1503

    Constanta

    Zona 0

    Casa 5 Str. Mirceacel Batrannr. 77

    $45.000 $0

    5503

    15 1501

    Bucuresti

    Zona 0

    Apart.

    3 Bd.Magheru nr.

    44

    $55.000 $53.000 30.10.2003

    5504

    19 1501

    Constanta

    Zona 1

    Apart.

    4 Bd.Ferdinandnr. 10

    $25.000 $25.000 20.12.2002

  • 5/24/2018 baze de date.pdf

    21/63

    Baze de date

    5505

    11 1501

    Bucuresti

    Zona 2

    Apart.

    2 str. DrumulTaberei nr.129

    $23.000 $0

    5506 17 1502 Bucuresti Zona 1 Gars. 1 Str. TepesVoda nr. 12 $14.000 $12.900 20.11.2002

    5507

    18 1502

    Bucuresti

    Zona 0

    Gars. 1 Str. GeorgeCosbuc nr.23

    $18.000 $17.850 25.01.2003

    5508

    12 1503

    Iasi Zona 2

    Casa 5 Str. Uniriinr. 20

    $21.000 $21.000 19.04.2003

    umar

    imobil

    Nr.proprietar

    Numaragent

    Localitate

    Zona

    Tipimobil

    Camere

    Adresa

    imobil

    Pretsolicitat

    Pretvanzare

    Datavanzare

    5509

    14 1503

    Iasi Zona 1

    Garsoniera

    1 Str. VlaicuVoda nr. 9

    $13.000

    $12.500

    29.08.2003

    5510

    16 1501

    Constanta

    Zona 2

    Apartament

    3 Str. Viilornr. 43

    $18.000

    14.500 19.05.2003

    5511

    16 1501

    Constanta

    Zona 1

    Apartament

    2 Bd.Lapusneanu nr. 56

    $16.000

    $0

    5512

    13 1503

    Galati Zona 1

    Apartament

    3 Str.Universitatii nr. 75

    $21.000

    $0

    5513

    13 1503

    Constanta

    Zona 2

    Casa 3 Str. Albanr. 47

    $26.000

    $0

    5514

    20 1502

    Constanta

    Zona 1

    Apartament

    3 Constanta,Str. Uniriinr. 187

    $30.000

    $0

  • 5/24/2018 baze de date.pdf

    22/63

    Baze de date

    5515

    21 1502

    Constanta

    Zona 1

    Casa 3 Constanta,Str.Mircea celBatran nr.

    23

    $34.000

    $0

    2. Sa se inchida formularul. Apoi sa se introduca urmatorii proprietari :

    Numar

    ro

    rieta

    Nume

    proprieta

    r

    Adresa

    proprieta

    r

    Telefon

    proprieta

    r

    22 VasilescuGeorge

    Eforie Nord, Str. Constanta nr. 12 0745687123

    23 Adam Anamaria Mangalia, Str. Saturn nr. 32, Bl. CS9,Ap. 43

    0788953641

    3. Apoi sa se introduca agentul cu numarul 1504, Albu Andrei domiciliat in Mangalia, Bd.Libertatii nr. 43 si numrul de telefon 342657

    4. S se introduc cele dou imobile din tabelul de mai jos.

    Numar

    imobil

    Numar

    proprie-

    Nu-mar

    agent

    Localitat

    e Zona

    Tipimobil

    Camere

    Adresa

    imobil

    Pret

    solicitat

    Pret

    vanzare

    Data

    vanzare

    5516 22 1504 EforieNord

    Zona1

    Casa 6 Str.Constantanr. 12

    $55.000 $0

    5517 23 1504 Mangalia Zona0

    Apartament 2 Str.Saturn nr.32, Bl.CS9

    $18.500 $0

    OBS) Att agentul , ct i imobilul se vor introduce cu ajutorul formularului cu subformular.

  • 5/24/2018 baze de date.pdf

    23/63

    Baze de date

    Unitatea de nvare Nr. 4

    InterogriCuprinsObiectivele Unitii de nvare Nr. 4

    4.1. Proiectarea unor interogri de selecie;4.2. Proiectarea unor interogri de tip Make Table;4.3. Proiectarea unor interogri de tip Update Query;4.4. Proiectarea unor interogri de tip Delete;4.5. Proiectarea unor interogri de tip Append ;4.6. Proiectarea unor interogri de tip CrossTab

    Test de autoevaluareRspunsuri i comentarii la ntrebrile din testul de autoevaluare

  • 5/24/2018 baze de date.pdf

    24/63

    Baze de date

    Query By Examples (QBE) si Structured Query Language (SQL) sunt limbajeindustriale standard pentru manipularea si extragerea datelor din bazele de daterelationale. Ambele limbaje sint la fel de bine cunoscute in lumea informaticii si cumici exceptii sunt complet interschimbabile, astfel incit se poate trece usor dintr-un

    limbaj in celalat printr-un singur click al mouseului. Avantajul limbajului QBEeste acela de a fi unlimbaj grafic, mai atractiv si mult mai usor de utilizat. El lucreaza la nivelul tabelelor de interogare(dynaseturi) in Design View. Avantajul limbajului structurat SQLeste acela de a fi cistigat foartemult in popularitate in ultimul timp, fiind adoptat ca un limbaj universal in lumea bazelor de daterelationale. Daca intelegem bine conceptele pe care se bazeaza filozofia celor doua limbaje, precumPROJECTION, SELECTION, SORT, JOIN, siCALCULATED FIELD,vom fi capabili samanipulam cu aceeeasi usurinta ambele limbaje. De fapt, in ACCESS vom putea comuta dintr-unlimbaj in altul in cadrul unei tabele de interogare printr-un simplu click al mouseului. Formatulgrafic al dynasetului utilizat in Design View poate fi in mod egal supranumit QBE View.Bineinteles ca Microsoft utilizeaza in continuare denumirea consacrata de QBE din ratiuni lesne de

    inteles, atita timp cit acest limbaj a fost inventat de IBM si conceput ca o simpla metoda bazata petext pentru introducerea formulelor de interogare. Cea de-a doua generatie de QBEdevinecunoscuta sub numele de Graphical QBEdeoarece utilizeaza o interfata tabelara grafica, similaracelei utilizate azi de Microsoft. Pentru a intelege mai bine filozofia unui astfel de limbaj vom incercasa aplicam toate conceptele de baza ale acestuia pe structura a o serie de tabele printre careClientiTab, ProduseTab siMagazineTab createin baza de date C:\ tutorial1.mdb, prezentate infigurile 4.1- 4.3.

    Figura 4.1: Strucutra tabelului ClientiTab

    Figura 4.2: Structura tabelului ProduseTab

  • 5/24/2018 baze de date.pdf

    25/63

    Baze de date

    Figura 4.3: Tabelul MagazineTab

    De fapt un QBE nu este altceva decit o interogatie pe baza criteriilor de sortare si operatorilorrelationali introdusi direct pe interfata grafica reprezentata in figura 4.4.

    Figura 4.4: Interfata grafica a unei interogatii

    Spre exemplu, daca din tabelul MagazineTabdorim sa cream o interogare MagazineQuery care sacontina doar primele trei cimpuri (MagazinID, Statut, TotalVinzari) vom utiliza interfata grafica dinfigura 4.5:

  • 5/24/2018 baze de date.pdf

    26/63

    Baze de date

    Figura 4.5: Interfata grafica pentru interogarea MagazineQuery

    Rezultatul executiei prin apasarea butonului RUN din bara de meniu Query este cel prezentat infigura 4.6.

    Figura 4.6:Rezultatul executiei actiunii de selectie de pe interfata grafica MagazineQuery

  • 5/24/2018 baze de date.pdf

    27/63

    Baze de date

    Daca executam un click pe optiunea SQL View din meniul File (vizibil in partea stinga sus ainterogatiei MagazineQuery vom obtine echivalentul SQL al interfetei grafice QBE,prezentat infigura 4.7:

    Figura 4.7: Echivalentul SQL al unei interfete grafice QBE

    Aceasta trecere de la o interfata grafica QBEla echivalentul sau SQL este bidirectionala. Deciputem trece cu aceeasi usurinta de la fereastra editor SQL la echivalentul sau QBE printr-unsimplu click pe Design View din meniul File (vizibil in partea stinga sus a interfetei grafice), dupacum putea vedea in figura 4.8.

  • 5/24/2018 baze de date.pdf

    28/63

    Baze de date

    Figura 4.8: QBE-echivalentul ferestrei editor SQL

    Test de autoevaluare

    A.4.1.1. Interogri de selecie simple

    1. S se creeze o interogare care s afieze lista localitilor n care au fostscoase imobile la vnzare.

    2. S se modifice interogarea de mai sus astfel nct s afieze doar localitile n care existimobile nevndute.

    Linia FIELD Linia TABLE Linia SHOW LiniaCRITERIA

    Localitate IMOBILE

    Pret vanzare IMOBILE =0

    Linia FIELD Linia TABLE Linia SHOW

    Localitate IMOBILE

  • 5/24/2018 baze de date.pdf

    29/63

    Baze de date

    sau :

    LiniaFIELD Linia TABLE Linia SHOW LiniaCRITERIA

    Localitate IMOBILE

    Datavanzare

    IMOBILE Is Null

    3. S se proiecteze o interogare care s afieze imobilele vndute ncepnd din 01.08.2003pn la data de astzi.LiniaFIELD

    Linia TABLE Linia SHOW Linia CRITERIA

    Numarimobil

    IMOBILE

    Localitate IMOBILE

    Zona IMOBILE

    Tip imobil IMOBILE

    Camere IMOBILE

    Datavanzare

    IMOBILE >=#01/08/2003#

    4. S se proiecteze o interogare care s afieze imobilele nevndute (Numar imobil,Localitate, Zona, Adresa, Tip imobil, Camere, Pret solicitat). Este nevoie de un cmp

    care s nu fie afiat dar n care s se scrie criteriul de selecie.5. S se proiecteze o interogare care s afieze toi proprietarii din baza de date (Nume

    proprietar, Adresa proprietar, Telefon proprietar).

    6. Sa se proiecteze o interogare care s afieze oferta pentru imobilele din Constana dinzona 0 (Tip imobil, Camere, Adresa imobil, Pret solicitat).

    7. S se proiecteze o interogare care s afieze toate vnzarile din 2003.

  • 5/24/2018 baze de date.pdf

    30/63

    Baze de date

    8. S se proiecteze o interogare care s afieze toate vnzrile dintre 01.05.2003 i30.09.2003 .

    9. S se proiecteze o interogare care s afieze toate vnzrile din Constana.10.S se proiecteze o interogare care s afieze toate vnzrile realizate de agentul imobiliar

    Manea.11.S se proiecteze o interogare care s afieze toate proprietile din Bucureti , zona 0.12.S se proiecteze o interogare care s afieze toate vnzrile din Constana, realizate de

    agentul imobiliar Priscaru Constantin n 2002.

    A.4.2.1 Interogri de selecie cu sintetizarea datelor

    1. S se proiecteze o interogare care s afieze cte imobile a vndut fiecare agent.FIELD TABLE TOTAL SHOW CRITERIA

    Numar agent IMOBILE Group by

    Nume agent AGENTI Group by

    Vanzariefectuate:Numar imobil

    IMOBILE Count

    Pret vanzare IMOBILE Where 0

    2. S se proiecteze o interogare care s afieze cte imobile are fiecare proprietar.FIELD TABLE TOTAL SHOW CRITERIA

    Numarproprietar

    IMOBILE Group by

    Numeproprietar

    PROPRIETARI

    Group by

    Numarimobile:Numarimobil

    IMOBILE Count

    Data vanzare IMOBILE Where Is Null

  • 5/24/2018 baze de date.pdf

    31/63

    Baze de date

    3. S se proiecteze o interogare care s afieze toi agenii care au efectuat mai mult de otranzactie.

    FIELD TABLE TOTAL SHOW CRITERIA

    Numar agent IMOBILE Group by

    Nume agent AGENTI Group by

    Vanzariefectuate:Numar imobil

    IMOBILE Count >1

    Pret vanzare IMOBILE Where 0

    4. S se proiecteze o interogare care s afieze toi agenii care au efectuat cel puin treitranzacii n anul care a trecut.

    FIELD TABLE TOTAL CRITERIA

    Numar agent IMOBILE Group by

    Nume agent AGENTI Group by

    Vanzariefectuate:Numar imobil

    IMOBILE Count >=3

    Year([Data vanzare]) IMOBILE Where =Year(Date())-1

    5. S se proiecteze o interogare care s afieze toi agenii care nu au vndut nimic n ultimalun (Data vanzare< Date()-30 Or Is Null).

    FIELD TABLE TOTAL SHOW CRITERIA

    Numar agent IMOBILE Group by

    Nume agent AGENTI Group by

    Data vanzare IMOBILE Max

  • 5/24/2018 baze de date.pdf

    32/63

    Baze de date

    6. S se proiecteze o interogare care s calculeze preul mediu solicitat pe apartament, nfuncie de localitatea i zona n care este situat imobilul.

    FIELD TABLE TOTAL SHOW CRITERIA

    Localitate IMOBILE Group by

    Zona IMOBILE Group by

    Pret mediu;Pretsolicitat

    IMOBILE Avg

    Tip imobil IMOBILE Where Apartament

    7. Sa se proiecteze o interogare care sa calculeze pretul de vanzare mediu pentru fiecare tipde imobil, in functie de localitatea in care este situat imobilul.

    8. Sa se proiecteze o interogare care sa afiseze lista descrescatoare cu sarcinile fiecaruiagent (cate imobile mai are de vandut).

    FIELD TABLE TOTAL SORT CRITERIA

    Numar agent IMOBILE Group by

    Nume agent AGENTI Group by

    Sarcini:Numarimobil

    IMOBILE Count Descending

    Data vanzare IMOBILE Where Is Null

    9. S se proiecteze o interogare care s afieze suma vnzrilor n luna curent pe fiecareagent (n ordine crescatoare).

    FIELD TABLE TOTAL SORT CRITERIA

    Numar agent IMOBILE Groupby

    Nume agent AGENTI Groupby

  • 5/24/2018 baze de date.pdf

    33/63

    Baze de date

    Suma vanzari:Pretvanzare

    IMOBILE Sum Ascending

    Month([Data vanzare]) Where Month(Da

    te())

    A.4.3.1. Make Table Query

    1. S se proiecteze o interogare care s creeze un nou tabel Agenti_A, carecuprinde cmpurile numar agent, nume agent, telefon agent, pentru toi agenii alecror nume ncep cu litera A .

    2. S se proiecteze o interogare care s creeze un nou tabel COMISION,care cuprinde cmpurile nume agent, numar imobil, localitate, zona, tip imobil,

    camere, comision (7% din pretul de vanzare) pentru toate imobilele vndute n anul

    curent.

    FIELD TABLE SHOW CRITERIA

    Nume agent AGENTI

    Numar imobil IMOBILE

    Localitate IMOBILE

    Zona IMOBILE

    Tip imobil IMOBILE

    Camere IMOBILE

    Comision:7/100*[Pretvanzare]

    IMOBILE

    Year([Data vanzare]) Year(Date())

    3. S se creeze o relaie de tip one to many ntre tabelele IMOBILE i COMISION pecmpul Numr imobil (acest cmp trebuie definit mai inti ca i cheie extern).

    A 4.4.1. Update Query

    a) S se creeze o interogare care s mreasca preul solicitat cu 10%pentru imobilele nevndute.

  • 5/24/2018 baze de date.pdf

    34/63

    Baze de date

    FIELD TABLE Update to CRITERIA

    Pretsolicitat

    IMOBILE [Imobile].[Pretsolicitat]*110/100

    Datavanzare

    IMOBILE Is Null

    b) S se proiecteze o interogare care s scad preul solicitat cu 5% pentru imobilele cumai mult de 4 camere .

    c) S se proiecteze o interogare care s adauge cmpului comision din tabelaCOMISION nca 10$ .

    A 4.5.1. Delete Query

    a) S se creeze o interogare care s tearg din baza de date imobilelevndute nainte de 01.01.2003.

    b) S se creeze o interogare care s tearg din tabelul Comision toatenregistrrile corespunztoare agenilor care ncep cu litera M.

    c) S se proiecteze o interogare care s tearg din tabelul COMISION toate imobilelepentru care s-a luat un comision mai mic de 910$ (13.000$*7%=910$).

    FIELD TABLE Delete CRITERIA

    Imobile.* IMOBILE From

    Datavanzare

    IMOBILE Where

  • 5/24/2018 baze de date.pdf

    35/63

    Baze de date

    A.5.1.1. Append Query

    a) S se creeze o interogare care s adauge n tabelul AGENTI_A toiagenii ale caror nume ncep cu litera G.

    FIELD TABLE Append To CRITERIA

    Numaragent

    AGENTI Numar agent

    Numeagent

    AGENTI Nume agent Like G*

    Telefonagent

    AGENTI Telefon agent

  • 5/24/2018 baze de date.pdf

    36/63

    Baze de date

    Unitatea de nvare Nr. 5

    Interogari SQLCuprinsObiectivele Unitii de nvare Nr. 5

    5.6. Proiectarea unor interogri de selecie n SQL5.7. Proiectarea unor interogri de tip Make Table n SQL5.8. Proiectarea unor interogri de tip Update Query n5.9. Proiectarea unor interogri de tip Delete n SQL5.10.Proiectarea unor interogri de tip Append n SQL

    Test de autoevaluareRspunsuri i comentarii la ntrebrile din testul de autoevaluare

  • 5/24/2018 baze de date.pdf

    37/63

    Baze de date

    Limbajul SQL este un limbaj de interogare orientat pe rezultate folosit la accesareadatelor pentru interogare, insertie, actualizare si modificari structurale. Desi limbajulSQL este cel mai puternic sub aspectul posibilitatii de asigurare a interogarilor, arefunctii cu mult mai puternice decit simpla regasire a datelor. Printre functiile sale

    amintim::Executia de interogariCrearea bazelor de dateCrearea si modificarea structurii tabelelorInsertia de inregistrari noiModificarea inregistrarilor existenteCrearea de relatii multitabel

    Limbajul de programare structurat SQL a fost creat pentru a indica bazei de date CE ANUMEdoreste utilizatorul sa efectueze, si nu CUM sa se efectueze actiunea respectiva, comparativ culimbajul VISUAL BASIC pentru APLICATII (VBA)care indica calculatorului exact operatiile pecare acesta trebuie sa le execute secvential. O interogare transmite pur si simplu o cerere de extrageredintr-o baza de date a unor inregistrari care satisfac anumite criterii. Serverul bazei de date careintelege limbajul de interogare structurat SQL determina cele mai eficiente mijloace de satisfacere acererii de date. Un astfel de limbaje structurat este construit in esenta pentru a permite generareaunui proces de interogare robust. O instructiune SQL este alcatuita, in esenta, din patru formulare:

    SELECTpentru generarea unei interogariUPDATEpentru modificarea datelor stocate intr-una sau mai multe inregistrariINSERT pentru inserarea unei noi inregistrari in tabelul specificatCREATEpentru construirea unui nou tabel, o noua vedere sau unei noi structuri din baza de

    date.

    Limbajul de programare structurat SQL consista dintr-un numar de cuvinte cheie si concepte debaza. Vom aplica toate aceste cuvinte cheie si concepte de baza pe structura mai multor tabele,special create in acest scop, printre care ClientiTab, ProduseTab, MagazineTab,. Pentru a accesaeditorul de text vom incerca sa cream in Design Viewo noua interogare, inchizind de aceasta datacaseta de dialog cu optiunea Show Table, fara a adauga vreuna din aceste tabele. Selectam dinmeniul Viewoptiunea SQL View (figura 5.1) pentru a comuta de pe interfata grafica (QBE) peeditorul de text al liniilor de cod SQL (figura 5.2). Pentru vizualizarea rezultatelor in orice moment

    in ferestra editor SQL vom inscrie numele interogarii, iar apoi vom selecta ViewDatasheet (figura5.3). Pentru a comuta din nou in QBE mode (interfata grafica), in scopul vizualizarii aceleasi

    interogari, vom selecta ViewDesign View. (figura 5.4).

  • 5/24/2018 baze de date.pdf

    38/63

    Baze de date

    Figura 5.1: Crearea in Design View a unei noi interogari

    Figura 5.2: Fereastra editor SQLcu prima linie de cod SQL de tip SELECT.

    Figura 5.3: Vizualizarea rezultatelor in Datasheet View

    FiFigura 5.4: Comutarea din SQL mode in QBE mode

  • 5/24/2018 baze de date.pdf

    39/63

    Baze de date

    Dupa cum putem observa construirea unei interogari SQL nu prezinta dificultati, ca de altfel nicicomutarea dintr-un mod in celalat. Vom vedea in cele ce urmeaza ca nici sintaxa liniilor de codSQL nu este complicata, cu exceptia cazurilor de scriere a unor linii de cod SQL prea lungi ce ar

    putea conduce la aparitia erorilor. Din acest motiv in Access este de preferat utilizarea limbajuluigrafic QBE decit a celui structurat SQL. In general pentru scrierea liniilor de cod SQL pentruoperarea unor interogari de baza utilizam urmatoarele cuvinte cheie:

    SELECTFROMce returneaza un set de inregistrari din unul sau mai multe tabeleSELECTINTO ce transfera inregistrarile unor cimpuri dintr-unul sau mai multe tabele intr-

    un nou tabel (make table-query)DISTINCT ce returneaza numai inregistrarile distincte din cimpurile uni tabel sau a mai multor

    tabele (elimina inregistrarile duplicate)WHERE ce defineste conditiile folosite pentru evaluarea inregistrarilor returnateWHERELIKE ce defineste sablonul folosit pentru evaluarea inregistrarilor returnate

    WHEREIN ce defineste un grup de valori folosit pentru evaluarea inregistrarilor returnateORDER BY ce defineste ordinea de sortare care va fi respectata de inregistrarile din setul de

    inregistrari returnat dupa anumite criteriiGROUP BY ce grupeaza inregistrarile din setul de inregistrari returnat dupa anumite criteriiSum, Avg, Count, Max, Min, Var, StDev, First, Last pentru efectuarea unor operatii

    aritmetice, calculul unor statistici (medie aritmetica, varianta sau deviatie standard), selectiavalorii maxime sau minime a unei inregistrari, sau selectia primei sau ultimei inregistraridintr-un tabel

    Having ce specifica care inregistrari grupate sint afisate printr-o instructiune SELECTcombinata cu o clauza de tip GROUP BY.

    ASpentru desemnarea unui alias

    INNER JOIN, LEFT JOIN, RIGHT JOIN pentru combinarea inregistrarilor a doua sau maimulte tabele

    INSERT ce insereaza o noua inregistrare si valorile specificate intr-un tabelUNION ce returneaza un set de inregistrari care contine seturile combinate a doua sau mai

    multe inregistrariUPDATE ce actualizeaza una sau mai multe inregistrari la valorile specificateCREATE TABLE ce defineste un tabel nou in baza de date curenta.ALTER TABLE ce defineste noi cimpuri in cadrul tabelului din baza curentaDROP TABLE ce sterge un tabel al bazei de dateCREATE INDEX ce creaza un index pentru un tabel al bazei de date curente pentru care se

    specifica un anumita inregistrae sau un anumit cimp.

    DROP INDEX ce sterge indexul aferent unui anumit

  • 5/24/2018 baze de date.pdf

    40/63

    Baze de date

    Test de autoevaluare

    A.5.1 Desfurarea lucrrii

    1. Sa se creeze un tabel cu numele Furniz2 n care COD_F este cheieprimar :

    COD_F DEN_F LOCALIT ADRESA

    Number Text(20) Text(15) Text(30)

    CREATE TABLE Furniz2(

    COD_F Number NOT NULL PRIMARY KEY,

    DEN_F Char(20),

    Localit Char(15),

    Adresa Char(30) );

    2. In tabelul Furniz2 sa se scrie inregistrarea (533,Ionescu Ion,Satu Mare,Str.Republicii nr. 9).

    INSERT INTO Furniz2 ( COD_F, DEN_F, Localit, Adresa )

    VALUES (533, "Ionescu Ion", "Satu Mare", "Str. Republicii nr. 9");

    3. In tabelul Furniz2 sa se adauge campul COD_F Text(10).

    ALTER TABLE Furniz2 ADD COLUMN COD_FIS Char(10);

  • 5/24/2018 baze de date.pdf

    41/63

    Baze de date

    4. Sa se adauge in tabelul Furniz2 date din tabelul FURNIZOR pentru Cod furnizor cuprinsintre 1 si 4 (Append Query).

    INSERT INTO Furniz2 ( COD_F, DEN_F, ADRESA, COD_FISC )

    SELECT Cod_furnizor, Den_furnizor, Adresa, Cod_fiscal

    FROM FURNIZOR

    WHERE Cod_furnizor BETWEEN 1 AND 4;

    5. Sa se stearga din tabelul Furniz2 inregistrarea corespunzatoare COD_F=3 (DeleteQuery) .

    DELETE *

    FROM Furniz2

    WHERE COD_F=3;

    6. S se tearg din tabelul Furniz2 nregistrarea corespunztoare DEN_F care ncep culitera O (Delete Query) .

    DELETE *

    FROM Furniz2

    WHERE DEN_F LIKE "O*";

    7. Sa se stearga tabelul Furniz2 din baza de date.DROP TABLE Furniz2;

    8. Sa se vizualizeze campurile COD_MAT,DEN_MAT,UM,COTA_TVA pentru toatematerialele din nomenclatorul de materiale (Interogare simpla de selectie) .

  • 5/24/2018 baze de date.pdf

    42/63

    Baze de date

    SELECT COD_MAT, DEN_MAT, UM, COTA_TVA

    FROM MATERIALE;

    9. Sa se vizualizeze campurile NR_FACTURA,DATA,VALOARE pentru facturile emisede furnizorul cu codul=1 (Interogare simpla de selectie) .

    SELECT NR_FACTURA, DATA, VALOARE

    FROM FACTURI

    WHERE COD_FURNIZOR=1;

    10.Sa se vizualizeze codurile materialelor si cantitatile consumate pentru materialele de pebonul de consum cu numarul 2 (Interogare simpla de selectie) .

    SELECT [MATERIALE CONSUMATE].COD_MAT, [MATERIALECONSUMATE].CANTITATE

    FROM [MATERIALE CONSUMATE]

    WHERE [MATERIALE CONSUMATE].NR_BON_CONSUM=2;

    11.Sa se vizualizeze totalul valorilor facturilor emise de fiecare furnizor (Interogare desinteza) .

    SELECT COD_FURNIZOR, Sum(VALOARE) AS Total_valoare_facturi

    FROM FACTURI

    GROUP BY COD_FURNIZOR;

    12.Sa se vizualizeze minimul cantitatii aprovizionate pe fiecare cod_mat (Interogare desinteza) .

  • 5/24/2018 baze de date.pdf

    43/63

    Baze de date

    SELECT COD_MAT, MIN(CANTITATE) AS Minim_cant_aprovizionata

    FROM [MATERIAL APROVIZIONAT]

    GROUP BY COD_MAT;

    13.Sa se vizualizeze media pretului de achizitie pentru materialul cu codul material=3(Interogare de sinteza) .

    SELECT COD_MAT, AVG(PRET_ACHIZITIE) AS Medie_pret

    FROM [MATERIAL APROVIZIONAT]

    GROUP BY COD_MAT HAVING COD_MAT=3;

    14.Cu ajutorul inregistrarilor din tabelul MATERIALE, sa se creeze un tabel cu numeleMAT2 care contine campurile COD_MAT, DEN_MAT, UM , pentru materialele al carornume incepe cu litera C (Make Table Query) .

    SELECT COD_MAT, DEN_MAT, UM INTO Mat2

    FROM MATERIALE

    WHERE DEN_MAT LIKE "C*";

    15.Cu ajutorul inregistrarilor din tabelul FACTURI, sa se creeze un tabel cu numele Fact2care contine campurile NR_FACTURA, DATA, VALOARE pentru furnizorii al carorcod este cuprins intre 2 si 5 (Make Table Query) .

    SELECT NR_FACTURA, DATA, VALOARE INTO Fact2

    FROM FACTURI

    WHERE COD_FURNIZOR BETWEEN 2 AND 5;

  • 5/24/2018 baze de date.pdf

    44/63

    Baze de date

    16.Sa se actualizeze valorile facturilor din tabelul Fact2 in sensul cresterii lor cu 1000unitati (Update Query) .

    UPDATE Fact2 SET VALOARE = VALOARE+1000;

    17.Sa se actualizeze campurile CANTITATE (creste cu 10%) si PRET_ACHIZITIE (scadecu 2%) din tabelul MATERIAL APROVIZIONAT pentru COD_MAT=1 (UpdateQuery) .

    UPDATE [MATERIAL APROVIZIONAT] SET CANTITATE =CANTITATE*110/100, PRET_ACHIZITIE = PRET_ACHIZITIE*98/100

    WHERE COD_MAT=1;

    18.Sa se adauge in tabelul Mat2 inregistrari din tabelul MATERIALE pentru DEN_MAT ceincepe cu litera T (Append Query) .

    INSERT INTO Mat2 ( COD_MAT, DEN_MAT, UM )

    SELECT COD_MAT, DEN_MAT, UM

    FROM MATERIALE

    WHERE DEN_MAT LIKE "T*";

    19.Sa se stearga tabelul Mat2 din baza de date.DROP TABLE Mat2

    20.Sa se stearga tabelul Fact2 din baza de date.DROP TABLE Fact2

  • 5/24/2018 baze de date.pdf

    45/63

    Baze de date

    Unitatea de nvare Nr. 6

    MacrouriCuprinsObiectivele Unitii de nvare Nr. 6

    6.4. Proiectarea unor macro-uri pentru operaiuni asupra obiectelor bazei dedate (tabele i formulare);

    6.5. Proiectarea unor macro-uri care se lanseaz la apariia unor evenimente;6.6. Ataarea unor macro-uri la butoane n cadrul formularelor.

    Test de autoevaluareRspunsuri i comentarii la ntrebrile din testul de autoevaluare

    Pagina

  • 5/24/2018 baze de date.pdf

    46/63

    Baze de date

    Termenul macro este o abreviere pentru macro-instructiune sau macro-program, construit pe baza unei macro-instructiuni sau a mai multora. Oinstructiune sau comanda nu este altceva decit un ordin dat unui calculator pentru aexecuta o actiune. Pentru cei care cunosc cite ceva despre limbajul masina al unui

    calculator (Assembler) pot sa realizeze mai bine modul cum lucreaza aceste instructiuni, stiindfaptul ca un program de nivel jos (limbaj masina) este o succesiune de instructiuni executatesecvential, adeseori cu intrari in subrutine pentru executarea actiunilor repetitive, cu salturi saureveniri la programul principal. In cazul unui limbaj de nivel inalt, precum Visual Basic, C,Pascal, Fortran, o instructiune declanseaza in general executia mai multor instructiuni elementare.Prin urmare, o macro-instructiunenu poate fii altceva decit un imperiu al instructiunilorelementare, construit pe baza uneia sau a mai multor instructiuni compuse. Pentru a fi mult maiprecis, o macro-instructiune declanseaza executia unui mare numar de sarcini elementare, realizindautomatizarea de sarcini repetitive ale unei operatii particulare, precum in Microsoft Accessdeschiderea sau inchiderea unei tabele, interogatii, formular, raport, editarea sau tiparirea acestora,

    click-ul unui mouse, afisarea unui mesaj, avertizarea printr-un semnal sonor (Beep), etc. Folosireaexpresiilor de macro-programsau macroprogramarein Microsoft Access este improprie, deoarecemacro-urile nu sint utilizate pentru a face programare in adevaratul sens al cuvintului, precumlimbajul evoluat Visual Basic pentru Aplicatii (VBA), devenit cel mai popular limbaj de programarea aplicatiilor din Microsoft Access, din ultimii ani! Spunem acest lucru bazindu-ne pe urmatoareleargumente:

    un macro (macroprogram) nu opereaza cu variabile ce pot fii modificate pe parcursulexecutiei macroprogramului, precum opereaza un adevarat limbaj de programare. Deexemplu, daca un macro deschide un fisier, care apoi isi schimba numele, drept consecintava trebui sa corectam complet macro-ul respectiv.

    Saltul conditional intr-o subrutina este fie absent sau foarte sumar. Actiunile unui macrose executa secvential si destul de rar intilnim executii conditionale.

    Nu exista bucle neconditionale sau conditionale de tipul For.Next, If..ThenElse If,DoWhile, Do Until, Select Case, etc., ce sint nelipsite dintr-un limbaj de programarepentru asigurarea unei mari flexibilitati in interpretarea si luarea deciziilor.

    Tratarea erorilor nu exista. Daca un macro provoaca o eroare de executie, in consecintaafiseaza un mesaj de eroare si apoi se opreste din executie.

    In ultimul timp, dupa aparitia si cresterea exploziva a evantaiului de aplicatii ale limbajului VisualBasic pentru Aplicatii (VBA) in cadrul Microsoft Access, macro-urile pierd din ce in ce mai mult

    teren, fiind preferate in special de utilizatori care nu au notiuni de programare sau nu sint confortabilicu utilizarea unui limbaj de programare. Punctul forte al macro-urilor ramine in continuareautomatizarea sarcinilor repetitive, ce le intilnim cu o intensitate din ce in ce mai mare in aplicatiileAccess, Excel, Word, Outlook, sau in cazul oricarui alt logiciel. O astfel de automatizare prezintadoua avantaje esentiale:

    Economie de timp Eliminarea riscului de erori

  • 5/24/2018 baze de date.pdf

    47/63

    Baze de date

    Se subintelege de fapt faptul ca un macro nu poate automatiza decit operatiile manuale bine puse lapunct. Macro-urile sint foarte bine legate de specificul unui anume logiciel. De exemplu, macro-urile din Access sint complet diferite de cele din Excel, Word sau Outlook. Intilnim macro-uri intr-un mare numar de logiciele de pe piata produselor informatice, ca de altfel si in cadrul anumitor

    sisteme de exploatare, precum sistemele Windows 9x, 2000, sau XP. Conceptia acestor macro-uri,usurinta cu care pot fi aplicate in rezolvarea unei aplicatii, precum si serviciile pe care le pot aduceutilizatorului, variaza de la un logiciel la altul.

    In aceasta era informational exploziva Bazele de date au o evolutie dinamica, crescind intr-omaniera regulata capacitatea lor de stocare a datelor. Impactul noilor date cu Baza de date faceobiectul unor operatii recursive precum:

    Import Reformatare (modificari, eliminari) Analiza (interogari multiple) Inregistrare (in afara Bazei de date, intr-un format particular) Introducerea si afisarea datelor intr-un anume format (tabele, interogari, formulare, rapoarte) Expediere prin posta electronica Export (catre o alta Baza de date sau alt calculator), etc.

    Macro-urile pot regrupa toate actiunile repetitive asociate acestor operatii, si de fapt aceastareprezinta obiectivul lor principal. O aplicatie secundara a macro-urilor consista in asocierea butoanelode comanda, verificare (check) sau de control. Toti utilizatorii Bazelor de date carora le place mediul dereprezentare grafica a informatiilor isi acopera formularele, rapoartele precum si meniurile acestora cu fesi fel de butonase! Inca o data dorim sa precizam faptul ca profesionistii care se ocupa de dezvoltareaaplicatiilor Access se folosesc din ce in ce mai putin de macro-uri. Ei prefera sa utilizeze din ce in ce maimult Visual Basic pentru Aplicatii (VBA), o extensie a limbajului de programare Visual Basic carepermite manipularea obiectelor Access ( tabele, interogatii, formulare, rapoarte, macro-uri, module), farase limita la macro-uri. Utilizatorii care nu sint profesionisti prefera mai degraba utilizarea macro-urilordecit VBA-ul, deoarece procesul de invatare si de deprindere a lucrului cu acestea este mult mai rapid smai usor. In cele ce urmeaza, in cadrul acestui capitol, ne vom limita doar la utilizarea celor maireprezentative actiuni utilizabile pentru crearea unui macro in scopul dezvoltarii unei aplicatii Access,tinind cont de faptul ca lista Access contine aproape 50 de astfel de actiuni. Scopul nostru este doar de aincinta interesul cititorului in fascinanta lume a macroprogramarii, precum si de a arata ce putem face cu

    macro-urile, iar cind este cazul sa subliniem ce nu putem face cu acestea!

  • 5/24/2018 baze de date.pdf

    48/63

    Baze de date

    Test de autoevaluare

    A.6.1. S se scrie un macro care s deschid tabelul Facturi.

    1. S se scrie un macro care s deschid formularul Materiale.

  • 5/24/2018 baze de date.pdf

    49/63

    Baze de date

    2. S se scrie un macro care s deschid o interogare.

    3. S se un macro care s se execute la deschiderea bazei de date (Autoexec). Se va schimbanumele unuia din cele de la punctele 1, 2 sau 3 n Autoexec.

    4. S se introduc valorile pentru cmpul stoc_inceput cu formularul Materiale. Pentru cmpulstoc_nceput din formularul Materiale la sectiunea Events, After Update se va preciza macro-

    ul care contine urmtoarele:

  • 5/24/2018 baze de date.pdf

    50/63

    Baze de date

    5. S se scrie un macro care se lanseaz la evenimentul OnMouseMove. Se va utiliza Msgboxcu texte de explicaie despre cmpul respectiv. De exemplu, dac se plaseaz mouse-uldeasupra cmpului den_mat s apar o explicaie de genul : Se introduce denumireamaterialului. Pentru aceasta, se va ataa evenimentului OnMouseMove un macro careconine o aciune Msgbox cu textul Se introduce denumirea materialului.

    6. S se proiecteze un macro care s gseasc o nregistrare n tabelul Materiale. Se va cutadup cuvntul cheie. Se vor utiliza aciunile OpenTable i FindRecord.

  • 5/24/2018 baze de date.pdf

    51/63

    Baze de date

    7. S se proiecteze un macro care s afieze data curent.

    8. S se proiecteze un macro care s afieze ora exact. Se va utiliza funcia Time.

    9. S se creeze butoane de navigare n locul celor implicite. Un buton se va denumi Precedenti unul Urmtor. Fiecrui buton i se va ataa un macro cu aciunea GotoRecord i opiuneaRecord=Previous, respectiv GotoRecord i opiunea Record=Next.

  • 5/24/2018 baze de date.pdf

    52/63

    Baze de date

  • 5/24/2018 baze de date.pdf

    53/63

    Baze de date

    Unitatea de nvare Nr. 7

    VISUAL BASIC pentru Aplicaii (VBA)

    CuprinsObiectivele Unitii de nvare Nr. 7

    7.4. Utilizarea obiectelor DAO pentru crearea tabelelor;7.5. Utilizarea obiectelor DAO pentru cutarea unor informaii n tabele;7.6. Utilizarea obiectelor DAO pentru actualizarea tabelelor.

    Test de autoevaluareRspunsuri i comentarii la ntrebrile din testul de autoevaluare

  • 5/24/2018 baze de date.pdf

    54/63

    Baze de date

    VISUAL BASIC este un limbaj de programare de inalt nivel facindu-si pentru

    prima data aparitia in prima sa versiune DOS numita BASIC (Beginers AllpurposeSymbolic Instruction Code). El este cel mai prietenos si cel mai usor de invatat

    limbaj de programare. Diferite companii produc software sub diferite versiuniBASIC, printer care enumeram:

    Microsoft QBASIC furnizat o data cu sistemul de operare Windows 95, 98. QuickBASIC GWBASIC IBM BASICA

    VISUAL BASIC este un limbaj de programare VISUAL operind intr-un mediu grafic bazat pereprezentari sub forma de obiecte pe cind ascendentul sau BASIC este un limbaj de programarece opereaza intr-un mediu de programare text, programul executindu-se secvential.

    Un program VISUAL BASIC este o colectie de subprograme , fiecare cu codul sau de programce poate fii executat independent si simultan, si care pot fii legate intre ele intr-un mod sau altul.

    In momentul lansarii in executie VISUAL BASIC 6 va afisa un ecran celui din figura 8.1.

    Putem alege una dintre urmatoarele optiuni:

    Creerea unui nou proiect

    Deschiderea unui proiect existent Selectia unei liste a recentelor programe deja deschise

    Un proiect reprezinta o colectie de fisiere care compun un anumit tip de aplicatie. Obiectivulprioritar este de a creea programe standard executabile, cu extensia .EXE.

    Prin urmare vom executa clic pe icoana Standard EXE pentru a intra in mediul de programareVISUAL BASIC.

    Ecranul care apare din figura 8.2 indica mediul VISUAL BASIC ce contine urmatoarele

    elemente: Fereastra Blank Formunde putem realiza design-ul interfetei aplicatiei ce urmeaza s-

    o creem Fereastra Project ce afiseaza fisierele ce sint create in aplicatie Fereastra Properties ce afiseaza proprietatile diferitelor controale si obiecte ce sint

    create in aplicatie

  • 5/24/2018 baze de date.pdf

    55/63

    Baze de date

    Un Tolbox ce contine toate controalele esentiale pentru dezvoltarea unei aplicatiiVISUAL BASIC (VB). Controalelle sint instrumente cum ar fii :

    casete (boxes) butoane (buttons) etichete alte obiecte desenate intr-o forma pentru a obtine input sau display output. visual aparente (appeals).

    Fereastra cu optiuni

    Icoana STANDARD EXE

    Figura 7.1: Fereastra de lansare Microsoft VISUAL BASIC 6

  • 5/24/2018 baze de date.pdf

    56/63

    Baze de date

    Figura 7.2: Mediul VISUAL BASIC

    Test de autoevaluare

    A.7.1. S se creeze un tabel Facturi1cu cmpurile serie_factura-text, nr_factura-long integer, data-date, valoare-single, utiliznd metode ale obiectuluiDatabase

    Sub creare_tabel()

    Dim tdf As TableDef

    Dim baza As Database

    Set baza = CurrentDb()

    Set tdf = baza.CreateTableDef("facturi1")

  • 5/24/2018 baze de date.pdf

    57/63

    Baze de date

    Set camp = tdf.CreateField("serie_factura", dbText,10)

    tdf.Fields.Append campSet camp = tdf.CreateField("nr_factura", dbLong)

    tdf.Fields.Append camp

    Set camp = tdf.CreateField("data", dbDate)

    tdf.Fields.Append camp

    Set camp = tdf.CreateField("valoare", dbSingle)

    tdf.Fields.Append camp

    baza.TableDefs.Append tdf

    baza.TableDefs.Refresh

    End sub

    1. S se adauge la tabelul creat cmpul cod_furnizor-long integerSub adaugare_camp()

    Dim tdf As TableDef

    Dim baza As Database

    Set baza = CurrentDb()

    Set tdf = baza.TableDefs("facturi1")

    Set camp = tdf.CreateField("cod_furnizor,dblong)

    tdf.Fields.Append camp

    End sub

  • 5/24/2018 baze de date.pdf

    58/63

    Baze de date

    2. S se adauge date n tabel (o nregistrare). Se va utiliza obiectulRecordSeti metodaAddNew

    Sub adauga_date()

    Dim tabledata As Recordset

    Dim baza As Database

    Set baza = CurrentDb()

    Set tabledata = baza.OpenRecordset("facturi1", dbOpenTable)

    tabledata.AddNew

    tabledata!serie_factura = "CT ACD"

    tabledata!nr_factura = 14536271

    tabledata!Data = #1/1/2002#

    tabledata!valoare = 2345466.5

    tabledata!cod_furnizor = 334425

    tabledata.Update

    End Sub

    3. S se afieze proprietile cmpului data din tabelul FacturiSub afis_proprietati()

    Dim baza As Database, camp As Field, tdf As TableDefSet baza = CurrentDb()

    Set tdf = baza.TableDefs("facturi")

    Set camp = tdf.Fields("data")

  • 5/24/2018 baze de date.pdf

    59/63

    Baze de date

    Debug.Print camp.Type

    Debug.Print camp.SizeDebug.Print camp.DefaultValue

    Debug.Print camp.ValidationRule

    Debug.Print camp.ValidationText

    End Sub

    Ordinea tipurilor de date este: dbBoolean, dbByte, dbInteger, dbLong, dbCurrency, dbSingle,dbDouble, dbDate, dbText

    4. S se seteze proprietile Validation Rulei Validation Textpentru tabelul MaterialAprovizionat

    Sub setare_proprietati()

    Dim baza As Database, camp As Field, tdf As TableDef

    Set baza = CurrentDb()

    Set tdf = baza.TableDefs("Material Aprovizionat")

    Set camp = tdf.Fields("cod_mat")

    camp.ValidationRule = "Is not null"

    camp.ValidationText = "valoare nula"

    End Sub

    5. S se creeze o interogare care selecteaz cmpurile Nr_bon_consum i Cantitate dintabelul Materiale consumate utiliznd metoda CreateQueryDefi o fraz SQL.

  • 5/24/2018 baze de date.pdf

    60/63

    Baze de date

    Sub interogare()

    Dim q As QueryDefDim baza As Database

    Set baza = CurrentDb()

    Set q = baza.CreateQueryDef("int1", "SELECT [MATERIALECONSUMATE].NR_BON_CONSUM, [MATERIALECONSUMATE].CANTITATE FROM [MATERIALE CONSUMATE]")

    End Sub

    6. S se afieze nregistrarea din tabelul Materiale care conine cuvntul cuie .Sub find_first()

    Dim baza As Database

    Dim rst As Recordset

    Dim sir_where_find As StringSet baza = CurrentDb()

    Set rst = baza.OpenRecordset("materiale", dbOpenDynaset)

    sir_where_find = "[den_mat]=""cuie"""

    rst.FindFirst sir_where_find

    Debug.Print rst!cod_mat

    Debug.Print rst!den_mat

    Debug.Print rst!um

    Debug.Print rst!cota_tva

    Debug.Print rst!stoc_inceput

  • 5/24/2018 baze de date.pdf

    61/63

    Baze de date

    Debug.Print rst!pret_mediu

    End Sub

    7. S se afieze facturile care au fost emise dup data de 07/07/2000Sub filtru()

    Dim t As Recordset, tf As Recordset

    Set t = CurrentDb.OpenRecordset("Facturi", dbOpenDynaset)

    t.Filter = "data > #07/07/00#"

    Set tf = t.OpenRecordset

    Do While Not tf.EOF

    Debug.Print tf!Data; tf!nr_factura

    tf.MoveNext

    Loop

    End Sub

    8. S se editeze nregistrarea corespunztoare den_mat=cuie. Se presupune cnregistrarea exist. Se vor modifica cota_tva la 19, stoc_inceput la 9500.

    Sub editeaza_inreg()

    Dim baza As DatabaseDim rst As Recordset

    Dim sir_where_find As String

  • 5/24/2018 baze de date.pdf

    62/63

    Baze de date

    Set baza = CurrentDb()

    Set rst = baza.OpenRecordset("materiale", dbOpenDynaset)sir_where_find = "[den_mat]=""cuie"""

    rst.FindFirst sir_where_find

    rst.Edit

    rst!cota_tva = 19

    rst!stoc_inceput = 9500

    rst.Update

    End Sub

  • 5/24/2018 baze de date.pdf

    63/63

    Baze de date

    BIBLIOGRAFIE

    [1] Jennings Roger, Totul despre Microsoft Access 2000, Editura Teora, Bucuresti, 2001,traducere in limba romana de Nicolae Ionescu-Crutan.

    [2] Adamski J. Joseph., Hommel Charles., Finnegan Khatleen, Microsoft ACCESS 2000-Comprehensive Enhanced, Course technology, Thomson Learning, 2000.

    [3] Despi Ioan., Petrov Gheorghe., Reisz Robert., Stephan Aurel., Teoria generala a bazelor dedate, Editura Mirton Timisoara, 1999.

    [4] Schneider I. David., Essentials of Visual Basic 6.0 Programming, Prentice Hall, NewJersey , 1999.

    [5] Database tutorials for web developers, site web :http://www.katsueydesignworks.com/tutorials-database.htm

    [6] Visual Basic 5.0 Tutorial DataBase, site web:http://www.stfx.ca/people/dcampbel/VisualBasic/Vb_5_Tutorial/intro.htm

    [7] Microsoft Access Tutorials, site web: http://databases.about.com/cs/tutorials/

    [8] Tudoroiu Nicolae, INFORMATICA DE GESTIUNE-BAZE DE DATE, TUTORIAL,OVIDIUS UNIVERSITY PRESS, CONSTANTA, 2002

    [9] Nicolae Tudoroiu.,Victor Jeflea.,Informatic de gestiune-Tutorial1, Editura EUROPOLIS,Constanta, 2003Database Co

    [10] Tudoroiu Nicolae, INFORMATICA DE GESTIUNE-PROGRAMAREA BAZELOR DEDATE in VISUAL BASIC PENTRU APLICATII (VBA), TUTORIAL 2, EdituraEUROPOLIS, Constanta, 2003Database Consulting

    [11] Rahmel Dan, Programarea bazelor de date cu Visual Basic 6 in 24 de ore, Teora , 1999.

    [12] CD-ROM Microsoft Access 2000 documentatie

    [13] Claudiu Chiru., Eliodor Constantinescu., Victor Jeflea., Informatic de gestiune , EdituraSigma, 2003

    [14] Nicolae Tudoroiu, Claudiu Chiru, Manuela Grigore, Victor Jeflea, Raluca Pcuraru,Informatic de gestiune, Editura Europolis, Constana, 2004, ISBN : 973-676-044-8