Sunteți pe pagina 1din 101

Cuprins

1. Crearea bazelor de date ACCESS ..................................................................... 2. Formulare ............................................................................................................... 3. Rapoarte ................................................................................................................. 4. Interogri ............................................................................................................... 5. Conexiunea la o baz de date de pe un server WEB .................................... Bibliografie .................................................................................................................

3 14 64 74 90 101

1. Crearea bazelor de date Access


1.1 Probleme rezolvate
Creai o baza de date pentru evidena situaiei colare a studenilor. Baza de date trebuie s stocheze notele acordate de profesori, studenilor, la fiecare materie n sesiunea de examene. Rezolvare Vom folosi modelul Entitate-Atribut-Relatie (EAR). Acest model este folosit pentru proiectarea sistemelor informatice. Trebuie subliniat ca nainte de realizarea efectiva a bazei de date cu ajutorul produsului Microsoft Access aceasta trebuie proiectata foarte bine la nivel conceptual. Aici intervine utilitatea modelului EAR. In conformitate cu acest model, proiectarea unei baze de date presupune parcurgerea urmtorilor pai: Se identific entitile bazei de date. In cazul nostru entitile sunt: studenii, profesorii, materiile si notele. Identificarea asocierilor ntre entiti este urmtorul pas. Prin asociere se nelege o legtura ntre cele dou entiti bazata pe un atribut al lor.. Nu exista o procedura determinista in stabilirea asocierilor dintre entiti. Stabilirea acestora este o operaie relativ intuitiva care, n cazul bazelor de date mari, este organizat pe baza unor metodologii. n cazul nostru entitile au urmtoarele asocieri care genereaz relaii de tip unu-la-muli:

STUDENI

MATERII
ID_STUD

ID_MAT

PROFESORI

N O T E

ID_PROF

Un student are mai multe note, evident, la o materie poi primi mai multe note ( dac ai absentat sau nu ai promovat examenul , sau te prezini la mrire de not), un profesor acord mai multe note .

Identificarea atributelor entitilor. Stabilirea atributelor se face n funcie de specificul utilizrii bazei de date. O atenie sporit trebuie acordat atributelor cheie primar (index) n cazul nostru am preferat, pentru simplificarea codificrii datelor, s apelm la facilitatea Access de a construi automat un record-number, ID, pentru identificarea unic a nregistrrilor dintr-un tabel. In cazul nostru vom folosi urmtoarele atribute:

Studenti
ID_STUD Nume Prenume Adresa Telefon Email

Profesori
ID_PROF Nume Prenume Catedra Titlu Telefon Email

Materii
ID_Mat Denumire Descriere

Note
Nota Data ID_stud ID_prof ID_mat

Putem trece acum la crearea efectiv a bazei de date. Mai nti trebuie creat fiierul mdb al bazei care pstreaz descrierea obiectelor bazei de date: tabele, interogri, rapoarte, formulare. Procedura este urmtoarea: 1. Select consecutiv din meniul principal opiunile : File, New, Blank Database; 2. n caseta File name se tasteaz numele fiierului mdb, care va fi de fapt chiar numele bazei de date; 3. ncheiem cu un clic pe butonul Create; 4. Avem la dispoziie acum fereastra Database care ne permite selecia obiectelor asociate bazei de date n vederea crerii, modificrii sau activrii.

Studenti

Profesori

Materii

Note

Tabelele se creeaz cel mai simplu n modul de lucru Design View. Procedura de operare este urmtoare: 1. Selectm din fereastra Database, clasa de obiecte Tables; 2. Selectm cu un dublu clic modul de lucru: Create Table in Design View; 3. Fereastra Table Designer are dou panouri orizontale: - cel de sus, pentru introducerea numelui i tipul fiecrui cmp, - cel de jos pentru setarea proprietilor cmpului. 4. Se descriu succesiv cmpurile fiecrui tabel n parte, fr cmpul ID pe care-l adaug Access la momentul nchiderii ferestrei Table Designer. Fereastra se nchide dup descrierea fiecrui tabel i se redeschide la tabelul urmtor. ncrcarea date in tabele este pasul urmtor. Operaia este cunoscut i sub numele de populare a bazei de date. Procesul de ncrcare se face cu ajutorul interfeei vizuale care se activeaz astfel: 5. Efectum dublu-click pe numele tabelului n fereastra Database; 6. Tastm valorile pentru fiecare cmp, trecnd la cmpul urmtor cu un TAB; 7. La sfrit nchidem fereastra de lucru pentru tabelul curent i repetm procedura cu tabelul urmtor. Studenti

Profesori

Materii

Note

Datele se pot introduce i folosind formulare electronice Forms, descrise mai trziu n aceast lucrare. Ultima etapa din crearea bazei de date include definirea relaiilor dintre tabele cu ajutorul opiunii Relationship din meniul Tools.

Utilitarul arata ca in figura de mai jos:

1. Se adaug cu un clic pe butonul Add fiecare tabel din fereastra Show table n fereastra Relationships; 2. La sfrit nchidem fereastra Show table cu un clic pe butonul Close.

3. Construim relaiile dintre tabele cu ajutorul mouse-ului, clic stnga pe cmpul cheie primar din tabelul printe i cu butonul mouse-ului apsat, deplasm cursorul peste cmpul cheie extern corespondent din tabelul fiu. Eliberm butonul mouse-ului i pe ecran apare o fereastra care cere confirmarea legturii.

10

4. Apsm butonul Create pe ecran apare legtura desenat ca o linie.

5. Se procedeaz la fel pentru toate celelalte legturi.

11

In acest moment, procesul de creare a bazei de date este ncheiat i se poate trece mai departe la exploatarea ei. In lipsa elementelor de mai sus, nu este posibila folosirea tuturor facilitilor relaionale ale produsului Microsoft Access.

1.2. Probleme propuse


1. Pentru baza de date de la problema 1, sa se adauge si entitatea an universitar. Se vor actualiza si legturile intre tabele. 2. Folosind baza de date de la problema 1 s se extind numrul de atribute al entitii studeni. 3. Folosind baza de date de la problema 1 s se extind numrul de atribute al entitii profesori. 4. S se proiecteze o baza de date care poate fi folosita pentru a memora crile din biblioteca personala i persoanele crora li s-au mprumutat cri. 5. S se realizeze o baza de date pentru gestiunea vnzrilor unui magazin pe produse i separat pe fiecare angajat. 6. Realizai o baza de date pentru evidena ctigurilor i a cheltuielile din bugetul familiei, pe tipuri de cheltuieli i pe persoanele ce le-au efectuat. Se va lua in considerare c ntr-o familie doar prinii realizeaz ctiguri dar cheltuieli pot face toi membrii familiei.

12

7. Realizai o baza de date pentru gestiunea procesul de rezervare a camerelor intr-o pensiune turistica. Se presupune ca pensiunea dispune de 15 de camere, are trei recepioneri, doua femei de serviciu si un director. Clienii pot rezerva camere prin telefon, prin email sau la recepia pensiunii. 8. S se creeze o baza de date pentru gestiunea exporturilor unei firme. Managerul firmei este interesat s cunoasc: - lista produselor din oferta firmei, cu stocul la zi i preul de catalog; - lista clienilor externi, grupai pe ri, inclusiv cifra de afaceri; - lista furnizorilor grupai pe judee, inclusiv banca ce-i reprezint; - lista contractelor ncheiate de la nceputul anului cu clienii externi - lista comenzilor ctre furnizorii interni cu produsele pentru export; - lisa declaraiilor vamale pentru produsele livrate n luna curent.

13

2. Formulare
2.1. Controale uzuale folosite n construirea formularelor
n acest capitol vom exemplifica modalitile n care controalele uzuale pot fi utilizate pentru crearea formularelor Microsoft Access: 1. Label i Text Box 2. Command Button 3. Option Group 4. Check Box 5. Spin Button 6. Combo Box 7. List Box

2.1.1. Label i Text Box


Formularea problemei S se proiecteze un formular care calculeaz preul de vnzare al unui produs prin aplicarea unui adaos comercial de 10% la preul acestuia de achiziie. Valoarea de achiziie se introduce n cadrul formularului. Atunci cnd se face click n cmpul destinat preului de vnzare, valoarea acestuia se calculeaz n mod automat, ca n imaginea de mai jos.

Rezolvare Prin Label nelegem o caset ce afieaz date de tip text folosite n general pentru descrieri. Spre deosebire de Label, Text Box-ul permite pe lng afiarea datelor i introducerea, editarea acestora. Paii ce trebuie urmai pentru rezolvarea problemei sunt urmtorii: 1. Se creeaz un nou formular folosind opiunea Create Form in Design View din Database Window. n mod echivalent se poate folosi opiunea Form a meniului Insert dup care se selecteaz Design View. 14

2. Pentru a modifica caracteristicile ferestrei n care va fi afiat formularul, va trebui s accesm proprietile acesteia executnd click dreapta n zona n care se intersecteaz ruler-ul vertical cu cel orizontal i alegnd din meniul contextual opiunea Properties. La acelai efect se ajunge i dac se realizeaz dublu click direct n zona respectiv.

3. Proprietile pe care va trebui s le modificm pentru ca fereastra s arate ca cea prezentat n enunul problemei sunt: a. Caption semnific textul ce se va afia n bara ferestrei. Se va introduce Calcul Pret Vanzare b. Record Selectors se va seta pe No pentru a inhiba afiarea n partea stng a ferestrei a unei zone ce permite selectarea nregistrrii curente c. Navigation Buttons se va pune pe No pentru a preveni afiarea numrului nregistrrii curente alturi de butoanele de navigare (salt la prima nregistrare, la precedenta, la urmtoarea sau la ultima) 15

d. Dividing Lines se va seta pe No pentru a nu se trasa linia orizontal ce desparte cele dou zone prezentate anterior

4. Daca fereastra ce conine controalele pe care le putem include n cadrul formularului nu este activ, atunci va trebui s acionm butonul Toolbox ( ) din bara de instrumente sau s accesm opiunea respectiv din meniul View. Controalele pe care le vom utiliza vor fi Text Box i Label, simbolizate n fereastra cu instrumente prin i . 5. Se adaug primul Text Box destinat introducerii preului de achiziie prin apsarea butonului corespunztor din bara cu instrumente ( ) urmat de executarea unui click n interiorul formularului. O alt variant pe care o avem la dispoziie o reprezint glisarea mouse-ului n interior formularului dup apsarea butonului Text Box. Dimensiunea obiectului i poziia acestuia n cadrul ferestrei pot fi schimbate cu ajutorul mouse-ului. Pentru descrierea coninutului Text Box-ului, n partea stng a acestuia este adugat n mod automat i un obiect de tip Label. Cele dou controale pot fi mutate concomitent sau se poate opta pentru deplasarea individual a acestora prin folosirea elementului aflat n dreptul colului stnga sus.

16

Textul explicativ Pre achizitie se va introduce n cadrul Label-ului aflat n stnga Text Box-ului prin selectarea obiectului, apsarea butonului stng al mouse-ului i adugarea textului dorit. .

O alt modalitate ar fi accesarea proprietii Caption i modificarea valorii din dreptul acesteia. De asemenea, n partea dreapt se va aduga un nou Label ce va conine textul lei semnificnd moneda n care este exprimat preul de achiziie. Mai nti se va apsa butonul corespunztor din fereastra cu instrumente ( ) dup care se va executa click n interiorul formularului, se va introduce textul dorit i se va poziiona corect obiectul la dreapta Text Box-ului ce conine preul de achiziie.

Pentru a accesa proprietile Text Box-ului va trebui s executm click dreapta pe controlul respectiv i s alegem din meniul contextual opiunea Properties. Obiectul va fi denumit PretA (proprietatea Name).

17

n plus, coninutul Text Box-ului va fi aliniat la dreapta (proprietatea Text Align).

Valorile valide pentru controlul nostru sunt doar cele numerice. Putem specifica acest lucru prin setarea proprietii Format la valoarea Standard. Valorile acceptate vor fi doar cele numerice i n plus acestea vor fi automat formatate cu dou zecimale i simbol despritor pentru mii.

18

6. Urmtorul pas l reprezint adugarea celor trei Label-uri destinate adaosului comercial n care vom avea textele Adaos, 10 i %. Modalitatea de adugare este asemntoare cu cea descris la pasul anterior.

Valoarea adaosului comercial va trebui s fie aliniat la dreapta. Pentru aceasta este nevoie s accesm proprietile obiectului executnd click dreapta pe controlul n cauz i s alegem din meniul contextual opiunea Properties. Proprietatea Text Align va fi setat pe Right, ca n figura urmtoare.

19

7. n continuare se vor aduga obiectele corespunztoare preului de vnzare prin repetarea operaiunilor descrise la punctul 5. Numele noului control de tip Text Box va fi PretV.

8. Pentru a vedea cum arat formularul proiectat, este nevoie s comutm n modul de vizualizare Form View. Aceast comutare se poate face apsnd butonul din bara de instrumente sau accesnd opiunea Form View din meniul View sau din cel contextual (click dreapta).

20

9. n continuare va trebui s adugm codul prin care se va calcula preul de vnzare al produsului atunci cnd utilizatorul execut click n caseta corespunztoare. Preul de vnzare se obine prin adugarea unui adaos comercial de 10% la preul de achiziie. Pentru nceput va trebui s revenim n modul Design View prin apsarea butonului din bara de instrumente sau prin selectarea opiunii respective din meniul View sau din meniul contextual. Apoi vom accesa proprietile Text Box-ului care va conine preul de vnzare executnd click dreapta pe acesta i alegnd opiunea Properties din meniul contextual. Ne deplasm n seciunea Event i ne poziionm pe evenimentul On Click care se declaneaz atunci cnd utilizatorul efectueaz un click de mouse n caseta respectiv. Alegem din lista elementul numit [Event Procedure] i apsm pe butonul din dreapta ( ).

n fereastra care apare va trebui s introducem codul urmtor: Private Sub PretV_Click() PretA.SetFocus pret_achizitie = CDbl(PretA.Text) adaos = pret_achizitie * 10 / 100 pret_vanzare = pret_achizitie + adaos PretV.SetFocus PretV.Text = pret_vanzare End Sub

21

Codul anterior preia din formular preul de vnzare introdus de ctre utilizator, l convertete din text n valoare numeric i calculeaz adaosul comercial ce trebuie aplicat dup care formeaz preul final de vnzare prin nsumarea preului de achiziie i a valorii adaosului. nchidem fereastra n care am introdus codul, comutm n modul Form View, introducem 3 000 000 n caseta corespunztoare preului de achiziie dup care efectum un click de mouse n dreptul preului de vnzare. n acest moment valoarea acestuia se va calcula n mod automat i va fi afiat n cadrul formularului, ca n figura urmtoare.

10. Pentru a putea utiliza ulterior formularul astfel creat este nevoie s efectum salvarea acestuia prin accesarea opiunii Save/Save As a meniului File sau prin apsarea butonului din bara de instrumente. Dup ce am salvat formularul acesta va aprea n fereastra bazei de date la categoria Forms.

2.1.2. Command Button


Formularea problemei S se modifice formularul proiectat la exemplu anterior astfel nct valoarea adaosului comercial perceput s se calculeze i s se afieze prin apsarea unui buton. 22

Rezolvare Prin Command Button nelegem un buton prin a crui apsare vom genera un eveniment la care putem asocia o serie de prelucrri. Paii ce trebuie urmai pentru rezolvarea problemei sunt urmtorii: 1. n fereastra bazei de date se execut click dreapta pe formularul creat anterior i se alege opiunea Save As. n fereastra care se deschide introducem un nume pentru formular, Valoare Adaos, dup care apsm butonul OK.

Noul formular va aprea n fereastra bazei de date la categoria Forms, alturi de formularul original din care a fost obinut.

23

2. Se intr n modul Design View i se deplaseaz mai jos Text Box-ul corespunztor preului de vnzare mpreuna cu Label-ul ce conine moneda n care este exprimat valoarea din caset.

3. Imediat dup linia ce conine procentul adaosului comercial vom aduga un buton (Command Button) prin selectarea opiunii respective din fereastra cu instrumente ( ) i efectuarea unui click sau glisarea mouse-ului n interiorul formularului. Va aprea o fereastr numit Command Button Wizard. Aceast fereastr ne permite s asiciem o serie de aciuni standard evenimentului generat la apsarea butonului respectiv, cum ar fi navigarea ctre o alt nregistrare, actualizarea nregistrrii curente, operaii la nivel de formular i raport, etc. Pentru a atinge funcionalitatea cerut de ctre enunul problemei vom apsa butonul Cancel i vom dechide fereastra ce conine proprietile butonului executnd click dreapta pe acesta i alegnd opiunea Properties din meniul contextual. O alt variant ar fi selectarea butonului urmat de apsarea elementului din bara de instrumente sau de alegerea opiunii Properties a meniului View. Proprietile pe care le vom modifica sunt: 24

Caption reprezint textul ce apare afiat pe buton i vom introduce cuvntul Valoare adaos. Name semnific numele controlului, CmdVal. Acest nume l vom folosi atunci cnd vom asocia cod evenimentului ce se declaneaz la apsarea butonului.

4. n dreapta butonului vom aduga un Text Box n care se va afia valoarea adaosului comercial calculat n funcie de preul de achiziie al produsului. Label-ul din faa Text Box-ului va fi ters iar n dreapta vom aduga un nou Label n care vom trece moneda n care este exprimat valoarea adaosului.

5. Proprietile Text Box-ului vor fi modificate astfel nct numele acestuia s fie ValAd (proprietatea Name), coninutul s fie de tip numeric (proprietatea Format avnd valoarea Standard) i aliniat la dreapta (proprietatea Text Align). 25

6. Revenim la butonul adugat i n fereastra ce conine proprietile acestuia ne deplasm n seciunea Event i ne poziionm pe evenimentul On Click care se declaneaz atunci cnd utilizatorul efectueaz un click de mouse. Alegem din lista elementul numit [Event Procedure] i apsm pe butonul din dreapta ( ).

n fereastra care apare vom introduce codul urmtor: Private Sub CmdVal_Click() PretA.SetFocus pret_achizitie = CDbl(PretA.Text) adaos = pret_achizitie * 10 / 100 ValAd.SetFocus ValAd.Text = adaos End Sub Codul prezentat se execut la apsarea butonului i calculeaz valoarea adaosului comercial pe care o afieaz n Text Box-ul corespunztor. nchidem fereastra n care am introdus codul anterior, moment la care vom reveni la Design View. 7. Comutm n modul Form View, introducem 4 000 000 n cmpul corespunztor preului de achiziie, dm click n caseta n care se va afia preul de vnzare iar apoi vom apsa butonul nou adugat care va calcula i afia valoarea adaosului comercial.

26

8. Pentru a putea utiliza i ulterior formularul astfel creat este nevoie s efectum salvarea acestuia prin accesarea opiunii Save/Save As din meniul File sau prin apsarea butonului din bara de instrumente.

2.1.3. Option Group


Formularea problemei S se proiecteze un formular care calculeaz valoarea TVA-ului pentru un produs pe baza preului acestuia i a cotei procentuale de TVA ce se aplic. Cotele de TVA n vigoare sunt: Cota de 0% pentru produsele ce sunt scutite de TVA Cota de 9% - reprezint cota redus de TVA Cota de 19% - este cota standard ce se aplic la marea majoritate a produselor Rezolvare Un Option Group creeaz o caset n care se pot plasa butoane de opiune (option buttons), butoane comutatoare (toggle buttons) sau casete de validare (check boxes). Dintre toate elementele coninute doar unul singur poate fi activ la un moment dat. Etapele ce trebuie urmate pentru rezolvarea problemei sunt urmtoarele: 1. Se creeaz un nou formular folosind opiunea Create Form in Design View din Database Window. n mod echivalent se poate folosi opiunea Form a meniului Insert dup care se selecteaz Design View. 2. Se modific urmtoarele proprieti ale formularului: 1. Caption semnific textul ce se va afia n bara ferestrei. Se va introduce textul Calcul Pret Vanzare 2. Record Selectors se va seta pe No pentru a inhiba afiarea n partea stng a ferestrei a zonei ce permite selectarea nregistrrii curente 3. Navigation Buttons se va pune pe No pentru a preveni afiarea numrului nregistrrii curente alturi de butoanele de navigare (salt la prima nregistrare, la precedenta, la urmtoarea sau la ultima) 27

4. Dividing Lines se va seta pe No pentru a nu se trasa linia orizontal ce desparte cele dou zone prezentate anterior 3. Daca fereastra ce conine controalele pe care le putem include n cadrul formularului nu este activ, atunci va trebui s acionm butonul Toolbox ( ) din bara de instrumente sau s accesm opiunea respectiv din meniul View. Controlul Option . Group este simbolizat n fereastra cu instrumente prin 4. n cadrul formularului se adaug Text Box-ul corespunztor preului produsului iar n dreapta acestuia se va insera un Label care va conine descrierea monedei n care este exprimat valoarea.

Proprietile Text Box-ului vor fi modificate dup cum urmeaz: Name numele obiectului va fi Pret Format se va seta pe Standard iar caseta va accepta numai valori numerice Text Align textul va fi aliniat la dreapta (Right) din fereastra cu 5. Se adaug controlul de tip Option Button selectnd butonul instrumente dup care se execut click sau se gliseaz mouse-ul n cadrul formularului. Se va deschide o nou fereastr numit Option Group Wizard care ne va ajuta, ntr-un numr de pai, s definim coninutul grupului de tip opiune. Fereastra are n partea inferioar un numr de patru butoane cu urmtoarea semnificaie: Cancel - se renun la includerea obiectului n formular Back revenirea la pasul anterior Next trecerea la pasul urmtor Finish ncheierea wizard-ului i includerea n formular a noului grup de opiuni Paii pe care va trebui s-i parcurgem sunt descrii n continuare: a) Definim cele trei opiuni care n cazul nostru reprezint cotele de TVA ce pot fi aplicate unui produs: 0%, 9%, 19% dup care vom aciona butonul Next.

28

b) La pasul urmtor vom decide dac dorim ca una dintre opiuni s fie iniial activ iar n caz afirmativ avem posibilitatea de a alege opiunea dorit. Datorit faptului c la majoritatea produselor se aplic o cot de 19%, vom opta ca aceast variant s fie cea activ iniial.

c) Dup apsarea butonului Next vom avea posibilitatea de a seta valoarea ce va fi asociat fiecrei opiuni n parte.

29

d) n continuare urmeaz s specificm tipul controlului ce va fi folosit pentru opiunile definite: Option Button, Toggle Button sau Check Box. Vom alege varianta Option Buttons iar din partea inferioar a ferestrei ne vom alege stilul dorit dintre cele care ne sunt puse la dispoziie.

e) La ultimul pas suntem invitai s specificm descrierea sub care sunt reunite opiunile noastre.

30

f) Prin apsarea butonului Finish obiectul de tip Option Group va fi inclus n cadrul formularului. Prin intermediul ferestrei de proprieti vom numi acest obiect OptGrp. Dup poziionarea corect i redimensionarea acestuia, formularul ar trebui s arate ca cel din figura urmtoare.

6. Adugm butonul cu ajutorul cruia vom calcula valoarea TVA-ului pentru produsul introdus. Acest lucru se realizeaz prin selectarea opiunii respective din fereastra cu instrumente ( ) i efectuarea unui click sau glisarea mouse-ului n interiorul formularului. Va aprea o fereastr numit Command Button Wizard n care vom apsa butonul Cancel. Deschidem fereastra ce conine proprietile butonului executnd click dreapta pe acesta i alegnd opiunea Properties din meniul contextual. O alt variant ar fi selectarea butonului urmat de apsarea elementului aflat n bara de instrumente. n mod echivalent putem opta pentru alegerea 31

opiunii Properties a meniului View. Proprietile pe care le vom modifica sunt descrise n continuare: Caption reprezint textul ce apare afiat pe buton i vom introduce Valoare TVA. Name semnific numele controlului, CmdTVA. Acest nume l vom folosi atunci cnd vom asocia cod evenimentului ce se declaneaz la apsarea butonului.

7. n dreptul butonului vom aduga un Text Box n care se va afia valoarea TVA-ului. Aceast valoare se va calcula n funcie de preul produsului i de cota selectat. Label-ul din faa Text Box-ului va fi ters iar n dreapta vom aduga un nou Label n care vom trece moneda n care este exprimat TVA-ul. Proprietile Text Box-ului vor fi modificate astfel nct numele acestuia s fie ValTVA (proprietatea Name), coninutul s fie de tip numeric (proprietatea Format avnd valoarea Standard) i aliniat la dreapta (proprietatea Text Align).

32

8. Deschidem fereastra cu proprietile butonului adugat i ne poziionm pe evenimentul On Click din seciunea Event. Evenimentul se declaneaz ori de cte ori utilizatorul apas pe buton. Alegem din list elementul numit [Event Procedure] i apsm pe butonul din dreapta ( ).

Formularul va trebui s calculeze valoarea TVA-ului i s o afieze n cadrul Text Box-ului corespunztor. Acest lucru va fi realizat de ctre codul ce urmeaz i care va trebui introdus n fereastra ce se deschide. Private Sub CmdTVA_Click() Pret.SetFocus pret_produs = CDbl(Pret.Text) valoare_tva = pret_produs * OptGrp.Value / 100 ValTVA.SetFocus

33

ValTVA.Text = valoare_tva End Sub nchidem fereastra n care am introdus codul anterior, moment la care vom reveni la Design View. 9. Comutm n modul Form View, introducem 9 000 000 n cmpul corespunztor preului, alegem cota de 9% ca fiind cea care se aplic pentru produsul nostru i apsm pe butonul Valoare TVA, moment la care valoarea TVA-ului se va calcula i afia n cmpul din dreapta butonului.

10. Pentru a putea utiliza i ulterior formularul astfel creat este nevoie s efectum salvarea acestuia prin utilizarea opiunii Save/Save As din meniul File sau prin apsarea butonului din bara de instrumente.

Observaii a. Dac la etapa 5, pasul d), am fi ales Check Boxes n loc de Option Buttons, atunci formularul ar fi artat ca n figura urmtoare.

34

b. Dac la etapa 5, pasul d), am fi ales Toggle Buttons, formularul pe care l-am fi obinut ar fi fost asemntor celui din figura urmtoare.

2.1.4. Check Box


Formularea problemei S se realizeze un formular electronic care calculeaz suma ce trebuie pltit de ctre un turist pentru o zi de cazare la hotel. Aceast suma se va obine pe baza preului 35

camerei i a numrului de mese solicitate, tiind c micul dejun cost 100 000 lei, prnzul 300 000 lei iar cina 200 000 lei.

Rezolvare Check Box-ul reprezint o caset de validare care comut ntre strile on i off. Paii ce trebuie urmai pentru rezolvarea problemei sunt urmtorii: 1. Se creeaz un nou formular folosind opiunea Create Form in Design View din Database Window. n mod echivalent se poate folosi opiunea Form a meniului Insert dup care se selecteaz Design View. 2. Se modific proprietile formularului astfel: a. Caption semnific textul ce se va afia n bara ferestrei. Se va introduce valoarea Calcul Pret Cazare b. Record Selectors se va seta pe No pentru a inhiba afiarea n partea stng a ferestrei a unei zone ce permite selectarea nregistrrii curente c. Navigation Buttons se va pune pe No pentru a preveni afiarea numrului nregistrrii curente alturi de butoanele de navigare (salt la prima nregistrare, la precedenta, la urmtoarea sau la ultima) d. Dividing Lines se va seta pe No pentru a nu se trasa linia orizontal ce desparte cele dou zone prezentate anterior 3. Daca fereastra ce conine controalele pe care le putem include n cadrul formularului nu este activ, atunci va trebui s acionm butonul Toolbox ( ) din bara de instrumente sau s accesm opiunea respectiv din meniul View. Controlul Check Box este simbolizat n fereastra cu instrumente prin . 4. Se adaug Text Box-ul corespunztor preului camerei iar n dreapta acestuia se va insera un Label care va descrie moneda n care este exprimat valoarea. Proprietile Text Box-ului vor fi modificate dup cum urmeaz: 36

Name numele obiectului va fi PretC Format se va seta pe Standard (caseta va accepta numai valori numerice) Text Align textul va fi aliniat la dreapta (Right)

5. Adugm un Label n care vom trece descrierea serviciului (Mas), dup care vom insera trei Check Box-uri, cte unul pentru fiecare variant pe care o avem la dispoziie. n Label-ul din dreptul fiecrei casete de validare vom trece numele variantei respective. n plus, vom schimba, folosind fereastra de proprieti, numele celor trei Check Box-uri dup cum urmeaz: MicD, Pranz, Cina. Pentru a avea acces la proprietile unuia dintre cele trei casete de validare va trebui s efectum click dreapta pe obiectul respectiv i s alegem din meniul contextual opiunea Properties. O alt variant pe care o avem la dispoziie ar fi reprezentat de selectarea butonului din bara de folosind butonul stng al mouse-ului dup care se apas butonul instrumente sau se acceseaz opiunea corespunztoare din meniul View.

37

6. Urmtorul element pe care l vom aduga va fi butonul cu ajutorul cruia vom calcula suma final ce trebuie pltit pentru o zi de cazare. Inserarea butonului se realizeaz prin selectarea opiunii respective din fereastra cu instrumente ( ) i efectuarea unui click sau glisarea mouse-ului n interiorul formularului. Va aprea o fereastr numit Command Button Wizard n care vom apsa butonul Cancel. Modificm proprietile butonului dup cum urmeaz: Caption reprezint textul ce apare afiat pe buton; introducem Valoare. Name semnific numele controlului, CmdVal. Acest nume l vom folosi atunci cnd vom asocia cod evenimentului ce se declaneaz la apsarea butonului.

38

7. La dreapta butonului vom aduga un nou Text Box pe care l vom folosi pentru afiarea valorii totale a unei zile de cazare. De asemenea vom aduga i un Label care conine descrierea monedei n care este exprimat valoarea. Proprietile Text Boxului vor fi modificate astfel nct numele acestuia s fie ValTot (proprietatea Name), coninutul s fie de tip numeric (proprietatea Format setat pe valoarea Standard) i aliniat la dreapta (proprietatea Text Align).

8. Pentru a aduga codul Visual Basic necesar pentru a calcula valoarea total a unei zile de cazare este necesar s deschidem fereastra cu proprietile butonului. Ne poziionm pe evenimentul On Click din seciunea Events, alegem din list elementul numit [Event Procedure] i apsm pe butonul din dreapta ( ).

39

9.

n fereastra ce se va deschide introducem codul urmtor care va avea ca efect obinerea sumei totale de plat pentru ziua de cazare prin nsumarea preului camerei i a tarifului perceput pentru mesele solicitate. Private Sub CmdVal_Click() PretC.SetFocus pret_camera = CDbl(PretC.Text) pret_micdejun = 0 If MicD.Value Then pret_micdejun = 100000 End If pret_pranz = 0 If Pranz.Value Then pret_pranz = 300000 End If pret_cina = 0 If Cina.Value Then pret_cina = 200000 End If pret_total = pret_camera + _ pret_micdejun + _ pret_pranz + _ pret_cina ValTot.SetFocus ValTot.Text = pret_total End Sub

nchidem fereastra n care am introdus codul i revenim la Design View. 10. Comutm n modul Form View, introducem 2 000 000 n cmpul corespunztor preului de cazare, alegem s servim masa de prnz i cina dup care apsm pe butonul Valoare, moment la care suma total de plat pentru o zi de cazare se va calcula i afia n cmpul din dreapta butonului.

40

11. Pentru a putea utiliza formularul i ulterior, este nevoie s realizm salvarea acestuia prin utilizarea opiunii Save/Save As din meniul File sau prin apsarea butonului din bara de instrumente.

2.1.5. Spin Button


Formularea problemei S se modifice formularul anterior astfel nct s calculeze i valoarea unui sejur pe baza numrului zilelor de cazare.

41

Rezolvare Pentru a specifica numrul de zile din care este compus sejurul vom utiliza un control numit SpinButton format din dou sgei dispuse una deasupra celeilalte cu ajutorul crora vom incrementa respectiv decrementa cu o unitate durata dorit a sejurului. Pentru rezolvarea acestei probleme vor trebui parcuri paii de la exemplul anterior dup care: 1. Se adaug un Label n care se introduce textul Numar de zile. n dreapta acestui obiect se va insera un nou control de tip Label pe care l vom numi NrZile i care va avea ca text asociat valoarea 0. Proprietatea Special Effect va fi setat pe valoarea Sunken pentru a obine efectul din figura urmtoare.

42

2. n dreapta acestui ultim control de tip Label vom aduga un obiect de tip SpinButton prin apsarea butonului More Controls din fereastra cu instrumente ( ) iar din lista care apare vom selecta opiunea numit Microsoft Forms SpinButton. Acest nou control va fi denumit SpinBtn (proprietatea Name).

43

Cu ajutorul proprietilor Min, Max, Value i Small Change putem specifica plaja de valori pe care s o acopere controlul nostru, valoarea curent de la care s plece i pasul cu care s se modifice valoarea curent la apsarea uneia dintre cele dou sgei.

3. Pasul urmtor l reprezint adugarea unui nou buton pe care l vom folosi pentru a obine valoarea total a sejurului pe baza preului unei zile de cazare i a numrului de zile. Inserarea butonului se realizeaz prin selectarea opiunii respective din fereastra cu instrumente ( ) i efectuarea unui click sau glisarea mouse-ului n 44

interiorul formularului. Va aprea o fereastr numit Command Button Wizard n care vom apsa butonul Cancel. Modificm proprietile butonului dup cum urmeaz: Caption reprezint textul ce apare afiat pe buton; vom introduce Valoare sejur. Name semnific numele controlului, CmdSejur. Acest nume l vom folosi atunci cnd vom asocia cod evenimentului ce se declaneaz la apsarea butonului.

4. Un nou Text Box ce va conine valoarea total a sejurului va fi inserat la dreapta butonului iar lng acesta se va aduga un Label pentru descrierea monedei n care este exprimat valoarea respectiv. Proprietile Text Box-ului vor fi modificate astfel nct numele acestuia s fie ValSejur (proprietatea Name), coninutul s fie de tip numeric (proprietatea Format setat pe valoarea Standard) i aliniat la dreapta (proprietatea Text Align).

45

5. Urmeaz s adugm codul Visual Basic care se va executa atunci cnd utilizatorul apas pe butonul Valoare sejur. Deschidem fereastra cu proprietile butonului, ne deplasm n seciunea Events, evenimentul On Click i selectm opiunea [Event Procedure] dup care apsm pe butonul din dreapta ( ).

n fereastra ce se deschide se vor introduce liniile urmtoare de cod care vor calcula valoarea total a pachetului turistic plecnd de la valoarea unei zile de cazare care se va nmuli cu durata sejurului. Private Sub cmdSejur_Click() 46

CmdVal_Click nr_zile = NrZile.Caption ValTot.SetFocus valoare_sejur = nr_zile * CDbl(ValTot.Text) ValSejur.SetFocus ValSejur.Text = valoare_sejur End Sub Tot aici va trebui s adugm i codul necesar a se executa atunci cnd utilizatorul va apsa pe controlul de tip SpinButton. Private Sub SpinBtn_Change() NrZile.Caption = SpinBtn.Value End Sub nchidem fereastra n care am introdus codul i revenim la Design View. 6. Comutm n modul Form View, introducem 3 000 000 n cmpul corespunztor preului de cazare, alegem s servim masa de prnz i cina, optm pentru o durat a sejurului de 7 zile dup care apsm pe butonul Valoare sejur, moment la care suma total de plat ce trebuie pltit pentru ntregul sejur se va calcula i afia n cmpul din dreapta butonului.

7. Pentru a putea utiliza formularul i ulterior, este nevoie s realizm salvarea acestuia prin utilizarea opiunii Save/Save As din meniul File sau prin apsarea butonului din bara de instrumente. 47

2.1.6. Combo Box


Formularea problemei S se realizeze un formular electronic care s afieze preul unui bilet de avion n funcie de destinaia aleas, conform tabelului: Destinaie Roma Munchen Paris Londra Pre 500 euro 700 euro 1000 euro 2000 euro

Utilizatorul va alege destinaia iar formularul va afia n mod automat preul biletului exprimat n euro.

Rezolvare Prin Combo Box nelegem un obiect combinat format dintr-o caset de text i o list. Utilizatorul poate introduce o nou valoare sau poate alege una din list. n exemplul nostru nu se vor putea afia preurile biletelor ctre destinaii care nu se regsesc n list. Pentru realizarea formularului electronic vom parcurge urmtoarea succesiune de pai: 1. Se creeaz un nou formular folosind opiunea Create Form in Design View din Database Window. n mod echivalent se poate folosi opiunea Form a meniului Insert dup care se selecteaz Design View. Accesm proprietile noului formular i vom modifica urmtoarele caracteristici: a. Caption semnific textul ce se va afia n bara ferestrei. Vom introduce Calcul Pret Bilet Avion b. Record Selectors se va seta pe No pentru a inhiba afiarea n partea stng a ferestrei a unei zone ce permite selectarea nregistrrii curente c. Navigation Buttons se va pune pe No pentru a preveni afiarea numrului nregistrrii curente alturi de butoanele de navigare (salt la prima nregistrare, la precedenta, la urmtoarea sau la ultima) d. Dividing Lines se va seta pe No pentru a nu se trasa linia orizontal ce desparte cele dou zone prezentate anterior 2. Daca fereastra ce conine controalele pe care le putem include n cadrul formularului nu este activ, atunci va trebui s acionm butonul Toolbox ( ) din bara de instrumente sau s accesm opiunea respectiv din meniul View. n acest exemplu 48

vom folosi controlul Combo Box care este simbolizat n fereastra cu instrumente prin . semnul 3. Apsm butonul respectiv dup care adugarea controlului se face prin efectuarea unui click de mouse n interiorul formularului sau prin glisarea acestuia. Se va deschide o nou fereastr numit Combo Box Wizard care ne va ajuta s proiectm controlul respectiv prin parcurgerea unei succesiuni de pai: a. Vom opta pentru varianta ca valorile controlului s fie introduse de ctre noi, dup care apsm butonul Next

b. Urmeaz s alegem numrul de valori care vor fi afiate n list. Vom opta pentru un numr de dou coloane dup care vom introduce valorile din tabelul prezentat n enunul problemei.

49

c. Dintre toate coloanele pe care le poate conine controlul, doar una singur va putea fi afiat atunci cnd se selecteaz o anumit valoare din list. Din acest motiv vom opta ca aceast coloan s fie cea care conine numele destinaiei, dup care apsm butonul Next.

d.

Introducem descrierea ce urmeaz s apar n faa obiectului de tip Combo Box dup care apsm butonul Finish. 50

Prin intermediul ferestrei de proprieti vom numi acest obiect Dest. Dup poziionarea corect i redimensionarea acestuia, formularul obinut ar trebui s fie asemntor cu cel din imaginea urmtoare.

4. Adugm Text Box-ul n care se va afia valoarea biletului pentru ruta selectat. Proprietile Text Box-ului vor fi modificate astfel nct numele controlului s fie Pret (proprietatea Name). n dreapta acestuia se va insera un Label n care vom trece moneda n care este exprimat valoarea respectiv.

51

5. Ori de cte ori se schimb destinaia selectat, formularul va trebui s afieze valoare biletului n cmpul Pre. Pentru aceasta va fi nevoie s adugm cod Visual Basic pentru evenimentul On Change asociat controlului de tip Combo Box. Deschidem fereastra cu proprietile obiectului, ne deplasm n seciunea Event iar de acolo alegem evenimentul On Change. Selectm elementul numit [Event Procedure] i apsm pe butonul din dreapta acestuia( ).

6. n fereastra ce apare va trebui s introducem codul urmtor care va prelua preul biletului din controlul de tip Combo Box i l va afia n cmpul corespunztor. Private Sub Dest_Change() If Not IsNull(Dest.Column(1)) Then Pret.SetFocus Pret.Text = Dest.Column(1) End If End Sub Datorit faptului ca nu cunoatem preurile dect pentru biletele pe rutele definite n tabelul de la formularea problemei, codul Visual Basic introdus mai nti verific dac selecia curent este una valid i n caz afirmativ va afia valoarea biletului. nchidem fereastra n care am adugat codul i revenim la Design View. 52

7. Pentru a vedea felul n care se comport formularul nostru va trebui s comutm pe Form View dup care vom alege o destinaie din list. Preul biletului va fi afiat n cmpul Pret de pe rndul urmtor.

Dac ns se ncearc introducerea unei destinaii inexistente, Microsoft Access va genera un mesaj de eroare. 8. Pentru a putea utiliza i ulterior formularul astfel creat este nevoie s efectum salvarea acestuia prin utilizarea opiunii Save/Save As din meniul File sau prin apsarea butonului din bara de instrumente.

Observaie: Dac am dori ca datele s nu fie introduse de ctre noi ci s fie luate din baza de date folosind un tabel/interogare atunci la pasul 3a va trebui s alegem prima opiune care ne este pus la dispoziie, dup care vom selecta elementul dorit (numele tabelului sau interogrii), cmpurile care s apar n list, dimensiunea fiecrei coloane i descrierea ce va nsoi controlul.

2.1.7. List Box


Formularea problemei S se modifice formularul anterior astfel nct selecia destinaiei s se fac dintro list de opiuni prin folosirea click-ului dublu.

Rezolvare Vom nlocui Combo Box-ul din exemplu anterior cu un control de tip List Box care ne va pune la dispoziie o list derulant de opiuni. 53

n continuare vor fi descrii paii ce vor fi urmai pentru rezolvarea problemei: 1. Se salveaz formularul anterior sub o nou denumire. n fereastra bazei de date se execut click dreapta pe formularul creat anterior i se alege opiunea Save As. Introducem un nou nume pentru formular dup care apsm butonul OK. Aceast copie va fi modificat pentru a se ajunge la forma propus n enunul problemei. 2. Se terge controlul de tip Combo Box prin selectarea acestuia cu mouse-ul urmat de apsarea tastei Del. 3. Se adaug controlul de tip List Box prin apsarea butonului corespunztor din ) urmat de glisarea mouse-ului sau de executarea unui fereastra cu instrumente ( click n interiorul formularului. Se va deschide o fereastra numit List Box Wizard n cadrul creia va trebui s parcurgem aceiai pai ca la exemplul anterior: alegerea modului de completare a listei, specificarea numrului dorit de coloane, indicarea coloanei returnate i a descrierii ce va nsoi lista. Dup parcurgerea acestor pai, controlul de tip List Box se va regsi n cadrul formularului. Folosind fereastra de proprieti vom da obiectului numele Dest dup care vom repoziiona i redimensiona Text Box-ul destinat afirii valorii biletului de avion selectat.

. 4. De fiecare dat cnd utilizatorul execut click dublu de mouse pe o destinaie din list, preul biletului pentru ruta respectiv va trebui s fie afiat pe rndul urmtor. Pentru aceasta vom aduga cteva linii de cod Visual Basic pe evenimentul On Dbl Click al listei. Deschidem fereastra cu proprietile obiectului, ne deplasm n seciunea Event iar de acolo alegem evenimentul On Dbl Click. Selectm elementul numit [Event Procedure] i apsm pe butonul din dreapta acestuia( ).

54

5. n fereastra ce apare vom introduce urmtoarele linii de cod care vor avea ca efect afiarea preului biletului pentru destinaia selectat din list. Private Sub Dest_DblClick(Cancel As Integer) Pret.SetFocus Pret.Text = Dest.Column(1) End Sub Dup introducerea codului vom nchide fereastra respectiv i vom comuta n modul Form View pentru a vedea cum funcioneaz formularul electronic proiectat.

6. Pentru a putea utiliza i ulterior formularul astfel creat este nevoie s efectum salvarea acestuia prin utilizarea opiunii Save/Save As din meniul File sau prin apsarea butonului din bara de instrumente.

Observaie: Dac am dori ca datele din list sa nu fie introduse de ctre noi ci s fie luate din baza de date folosind un tabel/interogare atunci la pasul 3 va trebui s alegem prima opiune care ne este pus la dispoziie de ctre List Box Wizard, dup care vom selecta elementul dorit (numele tabelului sau interogrii), cmpurile care s apar n list, dimensiunea fiecrei coloane i descrierea ce va nsoi controlul. 55

2.2 Formulare asociate tabelelor Access


Formularea problemei S se proiecteze un formular care s permit consultarea tabelei Angajati i actualizarea coninutului acesteia adugare, modificare i tergere nregistrri. Se presupune c tabela are urmtoarea structur: MARCA, NUME, PRENUME, VARSTA, VECHIME, SALARIU i c este deja populat cu nregistrri. Rezolvare Formularele sunt ferestre folosite n scopul interogrii i actualizrii datelor din tabelele bazei de date. nregistrarea a crei date sunt afiate n cadrul formularului la un moment dat se numete nregistrare curent. Valorile afiate pot fi modificate de ctre utilizator iar aceste schimbri se vor reflecta direct n cadrul tabelei pe baza creia a fost realizat formularul. Folosind butoanele de navigare putem trece la prima nregistrare a tabelului, la cea anterioar/urmtoare sau la ultima nregistrare. Ultimul buton din lista ne d posibilitatea adugrii unei noi nregsitrri. tergerea se poate face direct din formular folosind tasta Del dup ce n prealabil am selectat nregistrarea dorit. n rezolvarea problemei propuse vom pleca de la presupunerea c tabela Angajati exist deja i c aceasta este populat cu nregistrri. Fereastra care se deschide atunci cnd accesm opiunea Form a meniului Insert ne pune la dispoziie mai multe variante cu ajutorul crora putem realiza formularul cerut. Varianta 1 Selectm opiunea numit Design View i alegem tabela Angajati ca surs de date pentru viitorul formular.

Dup apsarea butonului OK, noul formular va fi deschis n Design View i alturi de acesta se va afia i o fereastr ce conine cmpurile tabelei Angajati. Selectm toate cmpurile acesteia dup care tragem cu mouse-ul aceste cmpuri n cadrul formularului. 56

Dac nu dorim ca formularul s afieze toate cmpurile tabelei atunci putem selecta doar cmpurile dorite din lista care ne este pus la dispoziie.

Comutm n modul Form View iar formularul ce va fi afiat ar trebui s fie asemntor cu cel prezentat n figura urmtoare.

Formularul va afia valorile ce se afl n cmpurile tabelei pentru nregistrarea curent. Numrul acesteia ne este indicat n partea inferioar a ferestrei, alturi de butoanele ce pot fi folosite pentru trecerea la o nou nregistrare. Butonul aflat n extrema dreapt poate fi utilizat pentru adugarea unei noi nregistrri. Valorile afiate n cadrul formularului pot fi modificate de ctre utilizator iar aceste schimbri se vor salva automat n baza de date. Zona din partea stng a formularului este folosit pentru selectarea nregistrrii curente. Apsarea tastei Del va avea ca efect tergerea respectivei nregistrri. Tot pentru 57

tergerea nregistrrii curente se mai pot folosi opiunile Delete i Delete Record ale meniului Edit. Utilizatorul poate reveni n Design View pentru a schimba proprietile formularului i ale obiectelor afiate n cadrul acestuia. Text Box-urile pot fi redimensionate i repoziionate, textul ce apare n bara ferestrei poate fi schimbat, etc. Dup efectuarea tuturor modificrilor i validarea rezultatelor folosind modul de vizualizare Form View, formularul ar trebui salvat astfel nct s fie posibil utilizarea lui ulterioar. Varianta 2 Alegem varianta numit Form Wizard, ca n figura urmtoare.

Urmeaz s parcurgem o succesiune de pai, la fiecare dintre acetia vom fi invitai s specificm o serie de informaii iar pe baza acestora Microsoft Access va genera n mod automat formularul dorit. Trecerea la pasul urmtor se realizeaz cu ajutorul butonului Next, revenirea la cel anterior se face prin folosirea butonului Back. Utiliznd butonul Finish, utilizatorul poate opta pentru finalizarea procesului de creare automat a formularului chiar dac nu au fost parcuri toii paii respectivi. Apsarea butonului Cancel atrage dup sine nchiderea ferestrei fr generarea formularului. La primul pas suntem invitai s indicm cmpurile tabelei Angajai pe care dorim s le includem n formular. Cmpurile alese vor fi mutate n partea dreapt. Folosind butoanele <, <<, >, >> putem selecta/deselecta cmpul curent sau toate cmpurile afiate.

58

Urmeaz s specificm modul de dispunere a cmpurilor selectate n cadrul formularului. Putem alege una dintre opiunile urmtoare: - Columnar fiecare cmp apare pe o linie separat avnd n partea stng numele acestuia iar formularul va afia la un moment dat doar valorile aferente nregistrrii curente - Tabular numele cmpurilor apare o singur dat n captul de sus al formularului iar valorile asociate pentru fiecare nregistrare sunt afiate pe linii - Datasheet datele sunt afiate sub forma unei foi de calcul tabelar iar utilizatorul va vizualiza mai multe nregistrri n acelai timp - Justified valorile corespunztoare nregistrrii curente sunt afiate unele dup altele pe linii succesive

59

n continuare vom opta pentru unul din stilurile de afiare care ne sunt puse la dispoziie.

60

La ultimul pas vom alege un nume pentru formularul nou creat sau l vom accepta pe cel propus n mod implicit. Apsarea butonului Finish atrage dup sine crearea, salvarea i afiarea n modul Form View a formularului respectiv.

n partea inferioar a ferestrei sunt afiate numrul nregistrrii curente i numrul total de nregistrri coninute de ctre tabela Angajati. Tot acolo se gsesc i butoanele de navigare care ne ajut s ne deplasm ctre o alt nregistrare sau s adugm noi valori. Utilizatorul poate reveni n Design View pentru a schimba proprietile formularului i ale obiectelor coninute de ctre acesta. Varianta 3 Prin alegerea uneia dintre opiunile AutoForm: Columnar, AutoForm: Tabular sau AutoForm: Datasheet, formularul va fi creat n mod direct, fr a mai fi necesar parcurgerea unor pai suplimentari. Astfel, dac optm pentru varianta AutoForm: Tabular, formularul pe care l vom obine va fi asemntor cu cel din figura urmtoare.

n partea inferioar a ferestrei avem zona de navigare care ne d informaii despre numrul nregistrrii curente i despre numrul total de nregistrri ce sunt coninute de ctre tabela Angajati. Putem folosi butoanele din aceast zona pentru a ne deplasa pe o 61

nou nregistrare. nregistrarea curent este marcat cu un semn special n zona din stnga (semnul ). Pe ultima linie se gsete o nregistrare goal care poate fi folosit pentru adugarea de noi valori. Aceast nregistrare este marcat n partea stng prin semnul . Utilizatorul poate comuta n modul Design View pentru a schimba proprietile formularului i ale obiectelor afiate n cadrul acestuia. Salvarea formularului face posibil utilizarea ulterioar a acestuia. Varianta 4 Opiunea Chart Wizard ne d posibilitatea obinerii unui formular care s conin un grafic realizat pe baza datelor coninute de ctre tabela selectat.

Graficul doar afieaz valorile cmpurilor tabelei n forma dorit de noi, modificarea acestora nefiind posibil. Pentru obinerea graficului, utilizatorul va trebui s parcurg integral sau parial paii wizard-ului.

62

Proprietile formularului i ale obiectelor coninute vor putea fi ulterior modificate prin comutarea n modul Design View.

2.3 Probleme propuse


1) S se proiecteze un formular cu ajutorul cruia s se calculeze valoarea stocului final de produse finite pe baza stocului iniial, a intrrilor i a ieirilor realizate n cursul unei anumite perioade calendaristice. 2) S se realizeze un formular care calculeaz valoarea lunar de amortizat pentru un mijloc fix. Utilizatorul va introduce valoarea mijlocului fix i durata normal de utilizare iar formularul va afia valoarea ce trebuie pltit lunar folosind metoda de amortizare liniar. 3) S se proiecteze un formular pentru realizarea unei comenzi. Utilizatorul va introduce preul unitar al produsului, cantitatea solicitat, va alege cota de TVA aferent iar formularul va calcula n mod automat valoarea comenzii. 4) S se calculeze, folosind un formular, preul de vnzare al unui autovehicul plecnd de la preul pentru versiunea de baz la care se adaug valoarea elementelor opionale achiziionate. Acestea vor aprea sub form de csue de validare iar utilizatorul va putea s le bifeze/debifeze pentru a desemna varianta pe care dorete s o cumpere. 5) S se construiasc un formular destinat activitii de nchiriere materiale video. Utilizatorul va introduce numrul de casete video solicitate de ctre client, numrul de DVD-uri i perioada pe care se realizeaz nchirierea, exprimat n numr de zile. Formularul va calcula n mod automat suma pe care clientul o are de pltit tiind ca tariful perceput pentru nchirierea unei casete video este de 50 000 lei pe zi, iar pentru DVD-uri de 100 000 lei pe zi. Dup finalizarea operaiunii utilizatorul va trebui s aib la dispoziie un buton cu ajutorul cruia s tearg datele introduse pentru clientul anterior. 6) S se proiecteze un formular destinat pentru a fi utilizat ntr-o staie de benzin. Acesta va fi utilizat pentru a calcula i afia suma pe care clientul o are de pltit innd cont de tipul de combustibil folosit i de cantitatea achiziionat. 7) S se realizeze un formular care s conin lista departamentelor unui magazin universal. Atunci cnd utilizatorul selecteaz un departament, formularul va trebui s afieze codul asociat acestuia. 8) S se construiasc un formular n care s se calculeze venitul net al unui angajat plecnd de la salariul brut din care se scad contribuiile la asigurrile sociale, sntate i omaj, toate acestea fiind exprimate procentual. 9) S se calculeze valoarea lunar ce se recupereaz prin amortizarea accelerat a unui mijloc fix. Valoarea acestuia i durata de utilizare se introduc de ctre utilizator iar formularul va afia suma ce se recupereaz lunar n primul an i cea aferent anilor care urmeaz. 10) S se proiecteze un formular care s afieze prima de asigurare CASCO ce trebuie pltit de ctre posesorul unui autovehicul. Pentru mainile indigene se aplic un procent de 4% din valoarea mainii, iar pentru cele strine procentul crete la 6%. De asemenea clientul mai poate primi i o reducere de pn la 10% n funcie de valoarea daunelor pe care le-a nregistrat n anul precedent.

63

3. Rapoarte
3.1 Probleme propuse
S se tipreasc la imprimant lista angajailor grupai pe funcii. Persoanele din interiorul grupurilor vor fi ordonate alfabetic dup nume. Se vor folosi nregistrrile din tabela Angajati. Rezolvare Rapoartele sunt obinute pe baza prelucrrii datelor din tabele i sunt destinate exclusiv pentru a fi tiprite pe ecran i/sau la imprimant. Datele pot fi ordonate i grupate dup diverse criterii nainte de a fi incluse n cadrul raportului iar la nivelul grupurilor se pot calcula statistici. n rezolvarea problemei propuse vom pleca de la presupunerea c tabela Angajati exist deja i c aceasta este populat cu nregistrri. Pentru realizarea unui raport avem la dispoziie mai multe variante care sunt incluse n cadrul ferestrei ce se deschide prin accesarea opiunii Report a meniului Insert.

Varianta 1 Opiunea Design View ne permite crearea manual a unui raport. Din fereastra ce conine lista cmpurilor tabelei vom selecta ntregul coninut dup care vom trage aceste elemente n cadrul raportului folosind mouse-ul.

64

Pentru a realiza ordonarea, gruparea sau sumarizarea datelor va trebui s folosim opiunea care se gsete n meniul View i care apare i n cadrul meniului contextual declanat de apsarea butonului drept al mouse-ului. n fereastra ce apare ca urmare a accesrii opiunii respective vom putea specifica ordinea de sortare a informaiilor afiate n raport i eventualele criterii de grupare. Astfel, dac vom dori ca gruparea datelor s se fac dup cmpul Functie iar ordonarea acestora n cadrul grupurilor s se realizeze n ordine alfabetic atunci coninutul ferestrei Sorting and Grouping ar trebui s fie asemntor cu cel din imaginea urmtoare.

Pentru a vedea felul n care arat raportul astfel creat va trebui s comutm n modul Print Preview (butonul din bara de instrumente sau din meniul contextual).

65

Pentru a modifica aspectul raportului sau proprietile obiectelor coninute, va trebui s comutm pe modul Design View. Raportul astfel obinut va trebui salvat dac se dorete utilizarea ulterioar a acestuia. Varianta 2 Dac nu dorim crearea manual a raportului atunci putem apela la opiunea numit Report Wizard care ne va pune la dispoziie o serie de pai la finalul crora raportul va fi generat n mod automat.

Trecerea la pasul urmtor se realizeaz cu ajutorul butonului Next, revenirea la cel anterior se face prin folosirea butonului Back. Utiliznd butonul Finish, utilizatorul poate 66

opta pentru finalizarea procesului de creare automat a raportului chiar dac nu au fost parcuri toii paii respectivi. Apsarea butonului Cancel atrage dup sine nchiderea ferestrei fr generarea raportului. La primul pas va trebui s indicm cmpurile tabelei Angajati care vor fi incluse n cadrul raportului. Cmpurile alese vor fi mutate n partea dreapt. Folosind butoanele <, <<, >, >> putem selecta/deselecta cmpul curent sau toate cmpurile afiate.

Urmeaz s specificm criteriile de grupare dorite. Aa cum apare formulat n cerinele problemei cerinele problemei, datele afiate n raport vor trebui grupate la nivel de funcie. Selectm cmpul respectiv, apsm butonul > iar rezultatul obinut va fi cel din figura urmtoare.

67

La pasul urmtor vom indica criteriile de sortare ce vor fi aplicate datelor afiate n raport. n cadrul unui grup, angajaii vor fi ordonai alfabetic dup nume i prenume, conform enunului problemei.

68

Butonul Summary Options ne ajut s specificm ce valori dorim s includem pe sumarul fiecrui grup i modul n care s fie afiate aceste informaii. Dup apsarea butonului Next suntem invitai s alegem modul de dispunere a cmpurilor n interiorul formularului. Tot aici putem modifica orientarea paginii dac coninutul raportului impune acest lucru.

Microsoft Access ne pune la dispoziie mai multe stiluri de formatare a elementelor raportului din care l vom alege pe cel care se potrivete cel mai bine cu coninutul acestuia.

69

Ultimul pas implic alegerea unui nume pentru raportul ce va fi creat n mod automat i care va fi folosit pentru salvarea acestuia. Putem accepta varianta propus sau putem opta pentru o alt denumire. Dup apsarea butonului Finish raportul va fi afiat pe ecran n modul Print Preview.

70

Utilizatorul poate reveni n modul Design View dac dorete s modifice aspectul raportului sau proprietile obiectelor coninute. Varianta 3 Alegerea uneia dintre variantele AutoReport atrage dup sine crearea imediat a raportului, fr a mai fi necesar parcurgerea altor pai suplimentari. Astfel, dac se alege varianta AutoReport: Columnar atunci vom obine un raport de forma celui din figura urmtoare.

Varianta AutoReport: Tabular va conduce ctre obinerea raportului urmtor.

71

Varianta 4 Opiunea Chart Wizard ne d posibilitatea obinerii unui raport care s conin un grafic realizat pe baza datelor coninute n tabela selectat. Pentru obinerea graficului, utilizatorul va trebui s parcurg integral sau parial paii wizard-ului.

Proprietile raportului i ale obiectelor coninute vor putea fi ulterior modificate prin comutarea n modul Design View.

72

Varianta 5 nregistrrile din tabela Angajati pot fi folosite pentru obinerea de etichete. Acest lucru este posibil cu ajutorul opiunii Label Wizard prin parcurgerea pailor propui.

3.2 Probleme propuse


1) S se realizeze un raport care s afieze lista angajailor grupai dup vrst i ordonai dup valoarea salariului. 2) S se modifice raportul anterior astfel nct lista angajailor s fie grupat dup vrst i dup profesie iar ordonarea nregistrrilor s se realizeze descresctor dup cuantumul salariului. 3) S se afieze lista alfabetic a angajailor care au o vechime mai mare de 10 ani. 4) S se creeze un raport care s conin situaia facturilor emise i nencasate grupate la nivel de beneficiari i ordonate calendaristic. 5) S se tipreasc lista clienilor ru platnici ordonai descendent dup suma datorat. 6) S se proiecteze un raport care s afieze sumele lunare aferente amortizrii liniare a unui mijloc fix. Datele din raport vor fi ordonate cronologic i vor fi grupate la nivel de an. 7) S se afieze lista mijloacelor fixe care nu au fost amortizate complet. Datele din raport vor fi grupate dup anul achiziiei si vor fi ordonate dup numele mijlocului fix. La nivelul fiecrui grup se vor afia valoarea medie, minim i cea maxim a sumei recuperate pn la momentul de fa. 8) S se obin situaia stocului de materii prime i materiale. Pentru fiecare element se va afia valoarea actual a stocului, limita minim acceptat i data urmtoarei comenzi de aprovizionare ce va fi lansat. Informaiile vor fi ordonate ascendent dup valoarea stocului iar gruparea datelor se va realiza n funcie de procesul de producie la care particip respectivele materiale. 9) S se tipreasc graficul evoluiei cursului de schimb leu-euro pe anul n curs. 10) S se realizeze un raport care s tipreasc etichete cu adresele angajatilor.

73

4. Interogri
4.1 Probleme propuse
1. Folosind baza de date de la capitolul 1.1, sa se realizeze o interogare care s afieze toate notele studentului al crui nume este Tasica. Rezolvare: Aceast problem se poate rezolva uor folosind o facilitate a produsului Micrososft Access numit query sau interogare. n Access, ca in orice sistem de gestiune a bazelor de date, interogrile se realizeaz cu ajutorul unui limbajului SQL. Fiind un produs pentru nespecialiti, Microsoft Access pune la dispoziia utilizatorului o interfa care ascunde detaliile tehnice legate de limbajul SQL utilizatorul putnd realiza interogri fr ca sa cunoasc acest limbaj. Pentru a realiza un query este nevoie sa se intre in zona de lucru a query-urilor efectund click pe butonul Queries aflat in panoul dreapta a ferestrei Database.

Pentru a crea un query, recomandm folosirea opiunii Create query by using wizard care este cel mai uor de folosit. Efectuand dublu click pe aceasta optiune apare fereastra de mai jos:

74

Se selecteaz tabela dorit, n cazul nostru studeni, din care se includ in query campurile nume si prenume. Aceasta operatie se realizeaza efectuand click pe butonul cu semnul > pentru fiecare camp in parte.

Dup aceea se selcteaz tabela note, din care se includ in query cmpurile nota si data.

75

Apoi alegem denumirea din tabela materii.

In acest moment se apas butonul Next.

76

Fereastra de mai sus ntreab utilizatorul dac dorete o interogare detaliat sau una de tip rezumat. Recomandm s folosim opiunile implicite si s se apesm butonul Next ca s ajungem la pasul Finish.

Apsnd Finish, pe ecran o s apar rezultatele execuiei cererii. n cazul nostru, vor fi afiate notele pentru toi studenii.

77

Pentru a restriciona cutarea la codul unui anumit student, va trebui s modificm interogarea alegnd opiunea Design View din meniul de context care se obine efectund click dreapta pe numele interogrii.

In continuare restricionm query-ul la studenii cu numele de Tasica. Acest lucru se face scriind Tasica in zona de Criteria de sub nume.

78

Putem sa vizualizm codul SQL generat in mod automat de interfaa grafica efectund click dreapta in partea de sus a ferestrei si alegnd opiunea SQL View.

Pe ecran va aprea codul SQL corespunztor.

Adic: SELECT studeni.nume, studenti.prenume, note.nota, note.data, materii.denumire FROM studenti INNER JOIN (materii INNER JOIN [note] ON materii.ID = note.id_mat) ON studenti.ID = note.id_stud WHERE (((studenti.nume)="Tasica")); Nu vom insista asupra semnificaiei termenilor de mai sus deoarece depesc cadrul acestei lucrri. Trecnd peste majoritatea elementelor, se observa ca exista o clauza WHERE care pune condiia de selectare a nregistrrilor din tabele. Schimbnd condiia de aici se modifica si nregistrrile selectate de query. Spre exemplu da n loc de Tasica scriem Ion i pe ecran va apare:

79

Se pot face chiar i modificri mai complexe, cum ar fi s cerem numele de la tastatura. Dac scriem in loc de Tasica un cuvant oarecare, fr s fie ncadrat de ghilimele i fr s conin spaii, atunci sistemul va solicita de la tastatura o valoare. Sub form de parametru Spre exemplu putem modifica interogarea astfel: SELECT [studenti].[nume], [studenti].[prenume], [note].[nota], [note].[data], [materii].[denumire] FROM studenti INNER JOIN (materii INNER JOIN [note] ON [materii].[ID]=[note].[id_mat]) ON [studenti].[ID]=[note].[id_stud] WHERE ((([studenti].[nume])=Dati_numele)); In acest caz ni se va solicita s scriem numele, de la tastatur, dup care interogarea se va executa pentru valoarea respectiv. 2. Se d o firm care vinde diferite produse. Produsele sunt livrate clienilor conform contractelor. Orice contract poate s cuprind mai multe produse, dar un contract poate fi ncheiat cu un singur client. Dup definirea datelor i normalizarea lor pn n FN3 (forma normal 3), se poate construi o baz de date cu patru tabele: Tabelul clienti, cu informaii despre clienii firmei, cu care sau negociat diferite contracte:

80

Tabelul produse, care cuprinde date referitoare la produsele comercializate de firm:

Datele referitoare la contracte trebuie mprite n dou tabele, ca cerin a normalizrii (necesar pentru a aduce datele n forma normal doi) : exist o dependen parial ntre contract_id i client_id, astfel ultimul nu poate face parte din tabelul contracte. (la fel i cu data livrrii data_liv). Aceste dou cmpuri sunt dependente doar de contract_id, nu i de cheia compus din tabelul contracte. Se creaz astfel un tabel adiional: contract_info:

81

82

Urmtorul pas este crearea legturilor dintre tabele: Cu un client se pot ncheia mai multe contracte, astfel relaia dintre tabelele clieni i contr_info este de unu - la mai muli. Un contract poate cuprinde mai multe produse, pentru fiecare combinaie contract produs se creaz o linie nou n tabelul contracte. Fiecare produs figureaz ns o singur dat n tabelul produse. Astfel relaia dintre tabelele produse i contracte este de unu - la mai muli. La fel este i cea dintre contr_info i contract. Un contract este prezent o singur dat n tabelul contr_info, i de mai multe ori n tabelul contracte, datorit faptului, c un contract poate conine mai multe produse de livrat.

Access ofer diferite posibiliti de realizare a interogrilor (queries)

Crearea pas cu pas prin Design View Crearea cu vrjitorul (Wizard) Introducerea direct a comenzilor SQL n SQL View

83

S realizm n continuare o suit de interogri, de exemplu: 1. S se afieze toi clienii firmei se lanseaz vrjitorul din lista cu tabele se selecteaz tabelul clieni din lista available fields se aleg cmpurile client_nume i client_adresa se apas pe butonul finish din lista interogrilor existente se alege interogarea creat i se deschide prin dublu clic

2. S se determine acele produse, care apar cu mai mult de 10 buci n vreun contract. S se afieze i identificatorul contractului respectiv.

se lanseaz utilitarul de construcie a interogrilor (design view) se adaug tabelele produse i contracte se specific coloanele dorite din cele dou tabele se fixeaz condiia, ca pentru fiecare produs din contract numrul de buci livrate s fie mai mare dect zece ( buc > 10 )

84

comanda SQL aferant interogrii este ( afiabil n SQL View ):

SELECT produse.produs_nume, produse.produs_pret, contracte.buc, contracte.contract_id FROM produse INNER JOIN contracte ON produse.produs_id = contracte.produs_id WHERE (((contracte.buc)>10));

dac se dorete doar numele produselor, care apar n vreun contract cu caracteristica buc > 10, fr a cere i contractul n care figureaz, se poate afia doar numele produselor, o singur dat. n cazul precedent un produs poate s apar de mai multe ori, n funcie de numrul de contracte n care apare

SELECT distinct(produse.produs_nume) FROM produse INNER JOIN contracte ON produse.produs_id = contracte.produs_id WHERE (((contracte.buc)>10)); se execut interogarea prin alegerea opiunii Run din meniul Query

3. S se determine numrul total al contractelor ncheiate de firm

se calculeaz numrul liniilor din tabelul contr_info. Aici apare fiecare contract, ns doar ntr-o singur linie se lanseaz utilitarul de construcie a interogrilor (design view) se execut clic dreapta n cadrul ferestrei aprute, i se alege SQL View

85

se introduce comanda SQL, care returneaz numrul contractelor nregistrate n tabelul contr_info se alege din meniu comanda Run, pentru a executa interogarea n fereastra SQL View, interogarea arat astfel:

4. S se afieze toate informaiile disponibile despre clienii acelor contracte, care se livreaz nainte de 10 august 2004

pentru aceast interogare avem nevoie de dou tabel: contr_info, pentru a afla data livrrii, i de clieni, pentru a prelua datele necesare despre clieni se adaug tabelele produse i contracte n Design View se selecteaz cmpurile client_nume, client_adresa, contract_id, data_liv se fixeaz condiia pentru data_liv: < 4.08.2004

86

Comanda SQL corespunztoare este:

SELECT clienti.client_nume, clienti.client_adresa, contr_info.contract_id, contr_info.data_liv FROM clienti INNER JOIN contr_info ON clienti.client_id = contr_info.client_id WHERE ((contr_info.data_liv)<#8/4/2004#); se alege din meniu comanda Run, pentru a executa interogarea

5. S se afieze valoarea total a fiecrui contract care se livreaz dup 1 iulie 2004 valoarea total a unui contract se calculeaz ca suma nmulirii dintre produse i numrul de buci n care acestea vor fi livrate: cmpurile produs_pret din tabelul produse, respectiv buc din tabelul contracte se apeleaz la un treilea tabel: contracte, pentru a face legtura necesar se adaug cele trei tabele n Design View se selecteaz cmpurile contract_id, data_liv, iar pentru valoarea total a unui contract avem nevoie de o expresie compus: sum ( produse.produs_pret * contracte.buc ) pentru a calcula suma, se grupeaz toate expresiile n funcie de contract_id, prin elementul group by se fixeaz condiia pentru data_liv: < 1.07.2004. Acest cmp nu trebuie afiat, aa c nu selectm opiune show pentru el se alege din meniu comanda Run, pentru a executa interogarea

87

Comanda SQL corespunztoare este:

SELECT contr_info.contract_id, sum(produse.produs_pret*contracte.buc) AS valoare FROM produse INNER JOIN (contr_info INNER JOIN contracte ON contr_info.contract_id = contracte.contract_id) ON produse.produs_id = contracte.produs_id WHERE (((contr_info.data_liv)>#7/1/2004#)) GROUP BY contr_info.contract_id;

88

Probleme propuse:

1. Folosind baza de date de la problema din capitolul 1.1, s se afieze toi studenii al cror prenume este "Andrei". 2. Realiznd o interogare asupra bazei de date de la aceeai problem, s se afieze toate notele date de profesorul cu numele Man. 3. Plecnd de la datele din tabela profesori, s se afieze toate informaiile existente despre profesorul cu numele "Dinic". 4. Sa se afieze toate notele mai mari dect 5 existente n tabela note. 5. S se afieze numele tuturor studenilor care au restante.. 6.S se afieze toate materiile la care exista restante. 7. S se afieze toi profesorii care au dat note sub cinci. 8. S se afieze toi studenii al cror cod este egal cu o valoare citit de la tastatura. 9. S se determine care sunt materiile la care s-au dat note de 10. 10. S se afieze studenii care au obinut note egale cu cinci.

89

5. Conexiunea la o baz de date de pe un server web


5.1. Probleme rezolvate
Se d o baz de date Access, care este memorat pe un server n directorul "C:/bazadedate/". Fiierul corespunztor are numele de "produse.mdb". Baza de date furnizeaz date pentru o aplicaie Web, care se situeaz tot pe acelai server, n directorul "C:/inetpub/wwwroot/" - locaia implicit pentru un server Web de tip IIS (Internet Information Services). Aplicaia afieaz o list cu produsele (monitoare) oferite de o firm, i orice client poate accesa site-ul prin Internet pentru a obine informaiile necesare. Aplicaia se conecteaz la baza de date produse.mdb, efectueaz operaii asupra acesteia, i returneaz rezultatul n format HTML, care poate fi afiat de ctre un browser (de exemplu Internet Explorer). Baza de date cuprinde un tabel (Tabel1) cu urmtoarea structur:

90

Primul cmp este un identificator unic pentru fiecare produs, definit ca cheie primar. Urmeaz numele produsului, caracteristicile lui, iar apoi preul n euro. Tabelul are urmtorul coninut:

Se realizeaz urmtoarele operaii asupra bazei de date: 1. S se afieze toate produsele oferite de firma respectiv:

se creaz scriptul ASP (Active Server Pages) cu numele produse.asp n folderul wwwroot (rdacina implicit a serverului IIS) se creaz obiectul conn care conine elementele necesare conexiunii la baza de date se conecteaz la baza de date se definete query-ul (interogarea sql) n variabila query, care returneaz rezultatele dorite se definete obiectul rez care va conine rezultatul returnat (un obiect de tip recordset) se execut interogarea se afieaz rezultatele sub forma unui tabel HTML 91

Fiierul produse.asp: <html> <head><title>lista cu produse</title></head> <body> <% set conn = Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/bazadedate/firma.mdb" set rez=Server.CreateObject("ADODB.recordset") query="SELECT nume_prod, caract, val_prod FROM Table1'" rez.Open query, conn %> <table border="1"> <tr> <% for each x in rez.Fields Response.Write("<th>" & x.name & "</th>") next %> </tr> <%do until rez.EOF%> <tr> <%for each x in rez.Fields%> <td><% Response.Write(x.value) %></td> <%next rez.MoveNext %> </tr> <%loop rez.close conn.close %> </table> </body> </html> Cu sintaxa for each iterm printr-o singur linie a rezultatutui din obiectul rez (de tip recordset). Trecerea la o linie nou se face prin instruiunea rez.Next . Balizele <td>, <tr>, <table> sunt tag-urile HTML care descriu o celul, un rnd , respectiv un tabel. Fiecare are perechea corespuztoare de nchidere. Simbolurile <% i %> cuprind codul ASP, cel care se execut pe server. Clientul, situat la o staie distant nu vede dect balizele HTML i rezultatul codului ASP, nu i codul original ASP. 92

n Internet Explorer, rezultatul arat n felul urmtor:

Afiarea se face deschiznd Explorer-ul, apoi tastnd n bara de adrese adresa http a paginii respective (adresa prezentat n acest exemplu este fictiv) Sursa unei pagini afiate poate fi vizualizat prin alegerea succesiv din meniul navigatorului Internet Explorer a comenzilor: View Source

93

Sursa afiat va fi urmtoarea:

De remarcat faptul c nu se vede codul ASP, adic fiierul nu este prezentat n forma n care se regsete pe server. Acest lucru poate fi important n cazul n care operm cu informaii confideniale (de exemplu parole). 2. S se adauge la baza de date nc o linie care s cuprind urmtoarele date: nume: ITSOLAR caracteristic: C710, 17``, 1280x1024@60Hz valoare: 94 (primul cmp produs_id va fi adugat automat de ctre Access)

Scriptul ASP pentru aceast operaie are numele de adauga.asp. Codul este urmtor: <html> <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/bazadedate/firma.mdb" query = "insert into Table1(nume_prod, caract, val_prod)" 94

query = query & values (ITSOLAR , query = query & C710, 17, 1280x1024@60Hz , 94) on error resume next conn.Execute query if err<>0 then Response.Write("Eroare la adaugare") else Response.Write("Datele s-au adaugat cu succes!") end if conn.close %> </body> </html> Acest script poate fi apelat direct din Explorer (introducnd n navigator adreasa complet a scriptului adauga.asp), sau poate fi creat un formular care l apelaz. Codul acestui formular este prezentat n continuare: Fiierul formular.html: <html> <body> <form method="post" action="adauga.asp"> Numele: <input type=text name=nume/><p/> Caracteristici: <input type=text name=caract/><p/> Pret: <input type=text name=pret/><p/> <input type=submit value=Adauga/> </form> </body> </html> n cazul acesta, trebuie schimbat i scriptul ASP, pentru a prelua informaiile trimise de formular. Scriptul adauga.asp cel nou va arta n felul urmtor: <html> <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/bazadedate/firma.mdb" query = "insert into Table1(nume_prod, caract, val_prod)" query = query & values ( 95

query = query & " ' " & Request.Form("nume") & " ' , " query = query & " ' " & Request.Form("caract") & " ' , " query = query & Request.Form("pret") & ")" on error resume next conn.Execute query if err<>0 then Response.Write("Eroare la adaugare") else Response.Write("Datele s-au adaugat cu succes!") end if conn.close %> </body> </html> se creaz obiectul conn care conine elementele necesare conexiunii la baza de date se conecteaz la baza de date se definete query-ul (interogarea sql) n variabila query, care efectueaz adugarea dorit n cazul acesta nu se creaz un obiect de tip recordset, pentru c nu returnm dect rezultatul final al operaiei (eroare sau succes) n interogare n loc de valorile directe se folosesc cele preluate din formular (de exemplu Request.Form("nume") )

Dac se adaug datele preluate din formular, trebuie folosit adresa formularului, nu a scriptului adauga.asp. Acesta din urm va fi apelat de formular, pentru c am fixat proprietatea action din cadrul balizei <form>. Pagina se prezint astfel:

96

3. S se tearg din tabel produsele care au numele Sony: se creaz obiectul conn care conine elementele necesare conexiunii la baza de date se conecteaz la baza de date se definete query-ul (interogarea sql) care localizeaz i terge din tabel liniile corespunztoare produselor Sony

Fiierul sterge.asp: <html> <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/bazadedate/firma.mdb" query = delete from Table1 where nume_prod = SONY on error resume next conn.Execute query 97

if err<>0 then Response.Write("Eroare la stergere") else Response.Write("Datele s-au sters cu succes!") end if conn.close %> </body> </html> i n acest caz se poate folosi un formular care s specifice valoare de ters: <html> <body> <form method="post" action="sterge.asp"> Numele de sters: <input type=text name=nume/><p/> <input type=submit value=Sterge/> </form> </body> </html> Formularul se prezint astfel:

98

Fiierul sterge.asp se prezint n felul urmtor: <html> <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/bazadedate/firma.mdb" query = delete from Table1 where nume_prod = query = query & Request.Form("nume") & " ' " on error resume next conn.Execute query if err<>0 then Response.Write("Eroare la stergere") else Response.Write("Datele s-au sters cu succes!") end if conn.close %> </body> </html>

99

4. Modificai produsul IVORY s aib numele de SONY: Fiierul modific.asp se prezint n felul urmtor:

<html> <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/bazadedate/firma.mdb" query = update Table1 set nume_prod = SONY query = query & where nume_prod = IVORY on error resume next conn.Execute query if err<>0 then Response.Write("Eroare la modificare") else Response.Write("Datele s-au modificat cu succes!") end if conn.close %> </body> </html>

5.2. Probleme propuse

S se realizeze un formular pentru exemplul precedent de modificare, care s trimit la server att datele de modificat, ct i noua lor valoare S se creeze o baz de date cu clienii unei firme. S se definieasc scripturi ASP care permit modificarea, actualizarea i extinderea bazei de date

100

Bibliografie:
1. T. Surcel, R. Mranu, Economic, Bucureti 2004 V. Avram, D. Avram Medii de programare, Ed Tribuna

2. V. Avram, T. Surcel, C. Apostol, D. Avram . Birotic profesional, Ed. Tribuna Economic, Buc. 2003 3. K. Sandor, Access 2000, Editura Albastr, Cluj 2003 4. Fl. Nstase P. Nstase, Tehnologia aplicaiilor Web , Ed. Economic, Buc. 2002 5. . Forta, SQL Ed Teora, Bucureti . 2002

101