proiect access

46
CUPRINS Introducere..........................................................3 Analiza şi proiectarea aplicaţiei....................................4 I.1. Principalele etape în realizarea unei aplicaţii.................4 I.2. Elemente de analiză.............................................5 I.3. Alegerea SGBD-ului adecvat......................................6 I.4. Proiectarea tabelelor şi stabilirea relaţiilor între tabele.....6 I.5.Introducerea datelor............................................10 I.6. Adăugarea datelor..............................................12 I.7. Modificarea datelor............................................14 I.8. Ştergerea datelor..............................................19 I.9. Situaţii finale - Proiectarea listelor.........................21 I.10. Alcătuirea meniurilor.........................................32 I.11. Utilizarea aplicaţiei.........................................35 2

Upload: fla8991

Post on 24-Jun-2015

1.095 views

Category:

Documents


17 download

TRANSCRIPT

Page 1: Proiect Access

CUPRINS

Introducere............................................................................................3Analiza şi proiectarea aplicaţiei...............................................................4I.1. Principalele etape în realizarea unei aplicaţii..........................................................................................4I.2. Elemente de analiză.................................................................................................................................5I.3. Alegerea SGBD-ului adecvat..................................................................................................................6I.4. Proiectarea tabelelor şi stabilirea relaţiilor între tabele...........................................................................6I.5.Introducerea datelor................................................................................................................................10I.6. Adăugarea datelor..................................................................................................................................12I.7. Modificarea datelor................................................................................................................................14I.8. Ştergerea datelor....................................................................................................................................19I.9. Situaţii finale - Proiectarea listelor........................................................................................................21I.10. Alcătuirea meniurilor...........................................................................................................................32I.11. Utilizarea aplicaţiei..............................................................................................................................35

2

Page 2: Proiect Access

Introducere

Necesitatea colectării, organizării sub formă de tabele şi stocării datelor a crescut

dramatic în ultima sută de ani. Actuala „eră a informaţiei” este cu adevărat o eră a datelor.

Bombardaţi mai mult ca oricând cu date, scopul nostru este să procesăm şi să organizăm

aceste date într-un mod cât mai inteligent, folosind metode care permit accesul rapid şi

simplu la informaţiile prelucrate. Programele de baze de date precum Microsoft Access sunt

destinate acestui scop.

Pornind de la această idee am realizat această aplicaţie, care are ca scop evidenţa

aprovizionării cu materiale, de la diverşi furnizori, a unei unităţi economice. Înregistrarea pe

gestiuni a materialelor aprovizionate pe bază de facturi, se face conform notelor de recepţie

şi constatare de diferenţe. Documentele de plată prin care se achită furnizorii pot conţine

contravaloarea uneia sau mai multor facturi emise de acelaşi furnizor. O factură poate fi

achitată cu mai multe documente de plată.

Se cere:

1. definirea unei interfeţe utilizator ce permite încărcarea cu date şi actualizarea

bazei de date;

2. să se determine valoarea materialelor aprovizionate, grupate după mai multe

criterii: data la care s-a confirmat aprovizionarea prin Nota de Recepţie şi Constatare de

Diferenţe, furnizor, gestiune, furnizor şi data livrării;

3. proiectarea unor rapoarte care să furnizeze informaţiile pe care dorim să le

vizualizăm, organizate într-o manieră utilă;

4. aplicaţia va conţine şi un sistem minimal de help.

3

Page 3: Proiect Access

Analiza şi proiectarea aplicaţiei

Etapele parcurse în fazele de analiză şi proiectare conduc la realizarea unui produs

soft care ţine o evidenţă a aprovizionării cu materiale (de la diverşi furnizori), din cadrul unei

unităţi economice.

I.1. Principalele etape în realizarea unei aplicaţii

A) Analiza problemei şi proiectarea aplicaţiei - constă în:

formularea problemei prin: studierea activităţii vizate de aplicaţie, precizarea

funcţiilor compartimetului în care se încadrează problema, identificarea

informaţională a compartimentului şi a modului de conectare din punct de vedere

informaţional cu celelalte compartimente, etc;

analiza şi inventarierea documentelor care participă la fluxul informaţional;

precizarea situaţiilor de ieşire (listelor);

stabilirea datelor de intrare necesare;

construirea unui model matematic sau a unei scheme privind structura funcţională

a sistemului informatic (prefigurarea obiectelor din baza de date);

proiectarea datelor şi a tabelelor;

stabilirea datelor de intrare/ieşire;

stabilirea relaţiilor între tabele;

stabilirea metodelor de prelucrare necesare;

stabilirea drepturilor de acces şi a proiectarea sistemului de parole pentru

securitatea informaţiei;

stabilirea algoritmului de rezolvare pentru fiecare sarcină în parte, eventual cu

reprezentare grafică printr-o organigramă.

B). Realizarea aplicaţiei - constă în:

construirea obiectelor şi a modulelor de program corespunzătoare;

testarea morfologică şi sintactică a fiecărui modul de program în parte;

întocmirea unui meniu prin intermediul căruia se pot lansa în execuţie sarcinile

specifice ale aplicaţiei;

4

Page 4: Proiect Access

verificarea schimbului de informaţie între obiecte:

validarea funcţionării aplicaţiei prin urmărirea rezultatelor obţinute şi compararea lor

cu rezultatele obţinute pe altă cale;

întocmirea documentaţiei de utilizare.

C). Exploatarea aplicaţiei - constă în:

utilizarea aplicaţiei folosind date reale;

actualizarea permanentă a bazei de date;

eventuale modificări şi/sau îmbunătăţiri aduse aplicaţiei.

I.2. Elemente de analiză

Pentru desfăşurarea activităţii curente, o unitate economică se aprovizionează cu

materiale de la furnizori. Materialele aprovizionate pe bază de facturi sunt înregistrate pe

gestiuni conform notelor de recepţie şi constatare de diferenţe.

Documentele de plată prin care se achită furnizorii pot conţine contravaloarea uneia

sau mai multor facturi emise de acelaşi furnizor. Aceeaşi factură poate fi achitată cu mai

multe documente de plată.

Se cere:

să se definească interfaţa utilizator ce permite încărcarea cu date şi actualizarea bazei

de date;

să se determine valoarea materialelor aprovizionate, grupate după următoarele

criterii:

o data la care s-a confirmat aprovizionarea prin Nota de Recepţie şi Constatare

de Diferenţe

o furnizor

o gestiune

o furnizor şi data livrării;

să se afişeze un raport care să ofere informaţii privind valoarea materialelor

recepţionate la nivelul fiecărui document de recepţie (NRCD), conţinând datele de

identificare a materialelor, cantitatea şi preţul de aprovizionare; în finalul acestuia se

va proiecta suma totală a valorilor recepţionate de societatea comercială, pentru

perioada presupusă;

să se afişeze lista materialelor aprovizionate, cantitativ şi valoric;

să se afişeze lista intrărilor de materialelor exprimate în $;

5

Page 5: Proiect Access

să se afişeze pentru toţi furnizorii valoarea datorată pentru materialele livrate;

să se afişeze situaţia totalurilor valorice pe fiecare magazie;

să se calculeze suma totală cuvenită, suma totală achitată şi restul de plată pentru un

furnizor.

I.3. Alegerea SGBD-ului adecvat

SGBD-ul ales pentru realizarea aplicaţiei trebuie să îndeplinească următoarele

condiţii:

să permită actualizări complexe şi repetate ale datelor;

să permită interogarea avansată a bazei de date;

să permită realizarea unei interfeţe prietenoase;

să permită dezvoltări ulterioare;

să permită manipularea datelor în condiţii de securitate ridicată;

să poată fi folosit cu uşurinţă atât de utilizator cât şi de programator;

să fie un SGBD de uz general, pentru care majoritatea societăţilor dispun de licenţă.

Având în vedere cele de mai sus am optat pentru Microsoft Access.

I.4. Proiectarea tabelelor şi stabilirea relaţiilor între tabele

Se defineşte o bază de date care conţine tabelele:

1) tblfurnizor (Fig. 1.1.a. şi Fig. 1.1.b.) conţine datele despre furnizori, necesare pentru a

obţine informaţii de identificare a acestora. Câmpurile tabelului sunt: codfurnizor,

denfurnizor, localitate, adresa, codfiscal.

Fig. 1.1.a. Modul Datasheet View

6

Page 6: Proiect Access

Fig. 1.1.b Modul Design View

Câmpul codfurnizor (Number, Integer) este cheia primară a tabelului; pe baza

informaţiei din acest câmp se identifică univoc articolele tabelului. Pentru câmpul localitate,

de tip text (dimensiune 20), se foloseşte utliltarul Lookup Wizard. Lista de valori se

introduce la crearea câmpului şi se poate modifica în modul proiectare. Tipul câmpului este

determinat de tipul datelor stabilit înainte de lansarea utilitarului Lookup Wizard. Pentru a

introduce o nouă valoare (localitate) proprietatea LimitToList trebuie să aibă valoarea No

(valorea nouă se introduce în câmp, dar nu se adaugă automat listei şi nu va fi disponibilă

pentru articolele următoare). Câmpurile denfurnizor şi adresă sunt de tip Text, ambele de

dimensiune 30, iar câmpul codfiscal este de tip Text, dimensiune 15.

2) tblnrcd (Fig. 1.2.a şi 3.2.b) – necesar pentru a obţine informaţii de identificare a

documentelor privind recepţionarea materialelor de la furnizori. (nrnrcd, datanrcd,

codfurnizor, codgestiune, codfactură, datafactură ). Cheia primară a tabelului este

nrnrcd (număr nota de recepţie şi constatare de diferenţe), de tip Number (Long Integer).

Câmpurile datanrcd şi datafactură sunt de tip Date/Time (Medium date). Câmpurile

codfurnizor, codgestiune şi codfactură sunt de tip Number (Integer, Long Integer).

Tabelul a fost indexat (cu opţiunea No Duplicates) pe câmpul nrnrcd.

Fig. 1.2.b Modul Design View

7

Page 7: Proiect Access

Fig. 1.2.b Modul Design View

3) tblmataprovizionat (Fig. 1.3.) - pentru a avea informaţii privind cantităţile primite şi

recepţionate precum şi preţurile corespunzătoare; (nrnrcd, codmaterial, cantaprov,

pretaprov). Cheia primară este compusă din câmpurile nrnrcd şi cod material, ambele de

tip Number şi dimensiune Long Integer. Tabela a fost indexată pe câmpurile nrnrcd şi

codmaterial, ambele cu opţiunea Duplicates OK. Tot de tip Number sunt şi câmpurile

cantaprov (Long Integer) respectiv pretaprov (Single).

Fig. 1.3. Modul Design View

Tabelele tblnrcd şi tblmataprovizionat au ca sursă de date documentul „Nota de

Recepţie şi de Constatare de Diferenţe”. Tabela tblnrcd cuprinde partea comună a

documentului cu cheia primară nrnrcd, iar tabela tblmataprovizionat cuprinde datele din

partea în care sunt consemnate materialele care au intrat (acestea pot fi mai multe),

identificarea acestora realizându-se prin câmpul cheie primară compus din nrnrcd şi cod

material.

4) tblmaterial (Fig. 1.4.)- pentru a obţine numele şi unitatea de măsură a materialelor;

conţine câmpurile codmaterial (cheia primară, de tip Number), denmaterial (Text, având

Field Size=30) şi um (Text, având Field Size=5). Tabelul a fost indexat pe câmpul

codmaterial, cu opţiunea No Duplicates.

8

Page 8: Proiect Access

Fig. 1.4. Tabelul tblmaterial

5) tblplati (Fig. 1.5.) - din care rezultă plăţile

efectuate către furnizori conţine câmpurile

coddocument, sumădocument, datadocument,

codfurnizor. Cheia primară este coddocument de

tip Number, cu Field Size de tip Integer. Tot de

acelaşi tip sunt şi câmpurile sumădocument (Field

Size=Long Integer) şi codfurnizor (Field

Size=Integer). Câmpul datadocument este de tip

Date/Time (Medium Date).

Fig. 1.5. Tabelul tblplati

Fereastra Relationships prezentată în figura de mai jos ilustrează structura datelor ce

corespunde modului de funcţionare descris mai sus. Relaţiile dintre tabele sunt controlate

logic prin impunerea integrităţii referenţiale.

Fig. 1.6. Relaţiile dintre tabelele bazei de date

Relaţiile între tabele sunt stabilite în urma analizei efectuate astfel:

9

Page 9: Proiect Access

unu-la-mai-mulţi, între tblfurnizor şi tblplati, astfel unui articol din tblfurnizor

îi pot corespund mai multe articole din tblplati. Câmpul de legătură este

codfurnizor, cheie primară în tabelul tblfurnizor şi cheie străină în tabelul

tblplati.

unu-la-mai-mulţi, între tblfurnizor şi tblnrcd, astfel unui articol din tblfurnizor

îi pot corespunde mai multe articole din tblnrcd. Câmpul de legătură este

codfurnizor, cheie primară în tabelul tblfurnizor şi cheie străină în tabelul

tblnrcd.

mai-mulţi-la-mai-mulţi, între tblmaterial şi tblnrcd, astfel mai multor articole

din tblmaterial le corespund mai multe articole din tblnrcd şi invers. Prin

tabelul intermediar (de joncţiune) tblmataprovizionat relatia mai-mulţi-la-mai-

mulţi se descompune în două relaţii unu-la-unu.

I.5.Introducerea datelor

Formularele prin care se încarcă şi actualizează datele din aceste tabele sunt:

fFurnizori pentru încărcarea cu date sau actualizarea datelor din tabela tblfurnizor ;

Fig. 1.7 Formularul fFurnizori

fPlăţi pentru încărcarea cu date sau actualizarea datelor din tabela tblplăţi;

10

Page 10: Proiect Access

Fig. 1.8. Formularul fPlati

- fMaterial care permite încărcarea cu date sau actualizarea datelor din tabela

tblmaterial;

Fig. 1.9. Formularul fMaterial

- fNRCD care permite încărcarea cu date sau actualizarea datelor din tabela

tblnrcd;

Fig. 1.10. Formularul fNRCD

11

Page 11: Proiect Access

- fMatAprovizionat care permite încărcarea cu date sau actualizarea datelor

din tabela tblmataprovizionat.

Fig. 1.11. Formularul fMatAprovizionat

În fiecare din aceste formulare sunt inserate:

- casete de text corespunzătoare câmpurilor tabelei sursă de date;

- un buton de comandă al cărui eveniment Click permite revenirea la meniul

principal

- un buton de închidere a formularului.

I.6. Adăugarea datelor

Pentru tratarea evenimentelor legate de butoanele de comandă din cadrul

formularului pentru adăugarea datelor se pot folosi module de clasă legate de formulare.

Modulul formularului pentru adăugare este:

Option Compare Database

Private Sub Comanda1_Click()

On Error GoTo Err_Comanda1_Click

Dim stDocName As String

Dim stLinkCriteria As String

stDocName = "fFurnizor"

12

Page 12: Proiect Access

DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Comanda1_Click:

Exit Sub

Err_Comanda1_Click:

MsgBox Err.Description

Resume Exit_Comanda1_Click

End Sub

Private Sub Comanda10_Click()

DoCmd.Close

DoCmd.OpenForm "fPlati", , , , acFormAdd

End Sub

Private Sub Comanda4_Click()

DoCmd.Close

DoCmd.OpenForm "fMaterial", , , , acFormAdd

End Sub

Private Sub Comanda5_Click()

DoCmd.Close

DoCmd.OpenForm "fMatAprovizionat", , , , acFormAdd

End Sub

Private Sub Comanda7_Click()

DoCmd.Close

DoCmd.OpenForm ("fACTUALIZARE")

End Sub

Private Sub Comanda8_Click()

DoCmd.Close

DoCmd.OpenForm "fNRCD", , , , acFormAdd

End Sub

13

Page 13: Proiect Access

Private Sub Comanda9_Click()

DoCmd.Close

DoCmd.OpenForm "fFurnizor", , , , acFormAdd

End Sub

Private Sub Comanda11_Click()

On Error GoTo Err_Comanda11_Click

Dim stDocName As String

Dim stLinkCriteria As String

stDocName = "fMeniuPrincipal"

DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Comanda11_Click:

Exit Sub

Err_Comanda11_Click:

MsgBox Err.Description

Resume Exit_Comanda11_Click

End Sub

I.7. Modificarea datelor

În cazul modificării datelor se definesc formulare noi, ce conţin date din mai multe

tabele, grupate în funcţie de contextul concret în care are loc modificarea. Astfel pentru

modificarea datelor privind achitarea furnizorilor se defineşte formular fPF, iar pentru

modificarea datelor referitoare la aprovizionarea cu materiale se defineşte formularul

fAprovizionare.

Dacă dorim să modificăm informaţiile legate de plăţi se va deschide caseta de dialog

din Fig. 1. 12., în care se cere codul documentului.

Fig. 1. 12 Caseta de dialog

După completarea acestui cod se va deschide formularul fPF (Fig.3.13).

14

Page 14: Proiect Access

În Form Header pentru formularul fPF sunt inserate casete de text pentru câmpurile

tabelei tblfurnizor, astfel că în timpul modificării datelor despre plăţile efectuate

furnizorilor, utilizatorul să aibă pe ecran şi datele de identificare ale furnizorilor.

Fig.3.13. Formularul fPF

Sursa pentru acest formular este tabelul tblpf, creat prin interogarea de tip make table

qPF (Fig.3.14.) a cărei fereastră Design are următorul aspect:

Fig.3.14.Interogarea de tip make table qPF (DesignView)

Codul SQL este al acestei interogări este:

SELECT tblfurnizor.codfurnizor, tblfurnizor.denfurnizor, tblfurnizor.localitate,

tblfurnizor.adresa, tblfurnizor.codfiscal, tblplati.coddocument, tblplati.sumadocument,

tblplati.datadocument INTO tblpf

FROM tblfurnizor INNER JOIN tblplati ON tblfurnizor.codfurnizor =

tblplati.codfurnizor;

15

Page 15: Proiect Access

Dacă dorim să modificăm informaţiile legate de aprovizionare se va deschide caseta

de dialog în care se cere numărul notei de recepţie şi constatare de diferenţe.

Formularul fAprovizionare are ca sursă de date tabela tnrcd şi conţine

subformularul fMateriale ce are ca sursă de date interogarea qMateriale.

Fig. 1.15. Formularul fAprovizonare

Codul SQL este al interogării qMateriale este:

SELECT tblmataprovizionat.nrnrcd, tblmataprovizionat.codmaterial,

tblmaterial.denmaterial, tblmaterial.um, tblmataprovizionat.cantaprov,

tblmataprovizionat.pretaprov, [cantaprov]*[pretaprov] AS Valoare

FROM tblmaterial INNER JOIN tblmataprovizionat ON tblmaterial.codmaterial =

tblmataprovizionat.codmaterial;

Dacă dorim să modificăm informaţiile legate de furnizor se va deschide o casetă de

dialog în care se cere codul furnizorului.

După completarea acestui cod se va deschide formularul fFurnizori (Fig.3.16.).

16

Page 16: Proiect Access

Fig. 1.16. Formularul fFurnizori

Modulul formularului pentru modificarea datelor:

Option Compare Database

Private Sub Comanda1_Click()

On Error GoTo Err_Comanda1_Click

Dim stDocName As String

Dim stLinkCriteria As String

stDocName = "fFurnizor"

DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Comanda1_Click:

Exit Sub

Err_Comanda1_Click:

MsgBox Err.Description

Resume Exit_Comanda1_Click

End Sub

Private Sub Comanda10_Click()

DoCmd.Close

DoCmd.OpenForm "fPlati", , , , acFormAdd

End Sub

Private Sub Comanda4_Click()

17

Page 17: Proiect Access

DoCmd.Close

DoCmd.OpenForm "fMaterial", , , , acFormAdd

End Sub

Private Sub Comanda5_Click()

DoCmd.Close

DoCmd.OpenForm "fMatAprovizionat", , , , acFormAdd

End Sub

Private Sub Comanda7_Click()

DoCmd.Close

DoCmd.OpenForm ("fACTUALIZARE")

End Sub

Private Sub Comanda8_Click()

DoCmd.Close

DoCmd.OpenForm "fNRCD", , , , acFormAdd

End Sub

Private Sub Comanda9_Click()

DoCmd.Close

DoCmd.OpenForm "fFurnizor", , , , acFormAdd

End Sub

Private Sub Comanda11_Click()

On Error GoTo Err_Comanda11_Click

Dim stDocName As String

Dim stLinkCriteria As String

stDocName = "fMeniuPrincipal"

DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Comanda11_Click:

Exit Sub

Err_Comanda11_Click:

MsgBox Err.Description

Resume Exit_Comanda11_Click

End Sub

18

Page 18: Proiect Access

I.8. Ştergerea datelor

Interogările pentru ştergerea datelor sunt interogări acţiune (DeleteQuery). Preluarea

valorii câmpului cheie cu care se accesează tabelele se precizează la momentul execuţiei.

Pentru ştergerea unei înregistrări din tabela tblfurnizor se defineşte interogarea

qStergFurnizori (Fig. 1.17.).

Codul SQL al acestei interogări este:

DELETE [tblfurnizor].[codfurnizor], [tblfurnizor].[denfurnizor], [tblfurnizor].

[localitate], [tblfurnizor].[adresa], [tblfurnizor].[codfiscal]

FROM tblfurnizor

WHERE ((([tblfurnizor].[codfurnizor])=[Codul furnizorului]));

Fig. 1.17. Interogarea qStergFurnizori

Pentru ştergerea unei înregistrări din tabela tblmataprovizionat se defineşte

interogarea qStergMatAprov (Fig. 1.18).

Fig. 1.18. Interogarea qStergMatAprov

19

Page 19: Proiect Access

Codul SQL al acestei interogări este:

DELETE tblmataprovizionat.nrnrcd, tblmataprovizionat.codmaterial,

tblmataprovizionat.cantaprov, tblmataprovizionat.pretaprov

FROM tblmataprovizionat

WHERE (((tblmataprovizionat.nrnrcd)=[NRCD]));

Pentru ştergerea unei înregistrări din tabela tblmaterial se defineşte interogarea

qStergMateriale (Fig. 1.19.).

Fig. 1.19. Interogarea qStergMateriale

Codul SQL al acestei interogări este:

DELETE tblmaterial.codmaterial, tblmaterial.denmaterial, tblmaterial.um

FROM tblmaterial

WHERE (((tblmaterial.codmaterial)=[Cod material]));

Pentru ştergerea unei înregistrări din tabela tblnrcd se defineşte interogarea

qStergNRCD (Fig. 1.20.).

Fig. 1.20. Interogarea qStergNRCD

20

Page 20: Proiect Access

Codul SQL al acestei interogări este:

DELETE tblnrcd.nrnrcd, tblnrcd.datanrcd, tblnrcd.codfurnizor, tblnrcd.codgestiune,

tblnrcd.codfactura, tblnrcd.datafactura

FROM tblnrcd

WHERE (((tblnrcd.nrnrcd)=[NRCD]));

Pentru ştergerea unei înregistrări din tabela tblplati se defineşte interogarea

qStergPlati (Fig. 1.21.).

Fig. 1.21. Interogarea qStergPlati

Codul SQL al acestei interogări este:

DELETE tblplati.coddocument, tblplati.sumadocument, tblplati.datadocument,

tblplati.codfurnizor

FROM tblplati

WHERE (((tblplati.coddocument)=[Cod document]));

I.9. Situaţii finale - Proiectarea listelor

Determinarea valorii materialelor aprovizionate se realizează cu ajutorul unor

interogări în care gruparea se face conform următoarelor criterii:

data la care s-a confirmat aprovizionarea prin Nota de

Recepţie şi Constatare de Diferenţe

furnizor

gestiune

furnizor şi data livrării.

Valoarea materialelor aprovizionate, grupate după data la care a fost confirmată

aprovizionarea prin Nota de Recepţie şi Consultare de Diferenţe se determină cu interogarea

qValoareData (Fig. 1.22.).

21

Page 21: Proiect Access

Fig. 1.22. Interogarea qValoareData

Codul SQL al acestei interogări este:

SELECT tblnrcd.datanrcd, Sum([cantaprov]*[pretaprov]) AS ValData

FROM tblnrcd INNER JOIN (tblmaterial INNER JOIN tblmataprovizionat ON

tblmaterial.codmaterial=tblmataprovizionat.codmaterial) ON tblnrcd.nrnrcd=

tblmataprovizionat.nrnrcd

GROUP BY tblnrcd.datanrcd;

Pentru a calcula valoarea materialelor aprovizionate, grupate după furnizorul care a

livrat materialul se defineşte interogarea qValoareFurnizor (Fig. 1.23.) al cărui cod SQL

este:

SELECT [tblfurnizor].[denfurnizor], Sum([cantaprov]*[pretaprov]*1.19) AS

ValFurnizor

FROM (tblfurnizor INNER JOIN tblnrcd ON [tblfurnizor].[codfurnizor]=[tblnrcd].

[codfurnizor]) INNER JOIN tblmataprovizionat ON [tblnrcd].[nrnrcd]=[tblmataprovizionat].

[nrnrcd]

GROUP BY [tblfurnizor].[denfurnizor]

ORDER BY [tblfurnizor].[denfurnizor];

22

Page 22: Proiect Access

Fig. 1.23. Interogarea qValoareFurnizor

Pentru a calcula valoarea materialelor aprovizionate, grupate pe gestiuni se defineşte

interogarea qValoareGestiuni (Fig. 1.24). Codul SQL al acestei interogări este:

SELECT [tblnrcd].[codgestiune], Sum([cantaprov]*[pretaprov]) AS ValGestiune

FROM tblnrcd INNER JOIN tblmataprovizionat ON [tblnrcd].

[nrnrcd]=[tblmataprovizionat].[nrnrcd]

GROUP BY [tblnrcd].[codgestiune];

Fig. 1.24. Interogarea qValoareGestiuni

Valoarea materialelor aprovizionate, grupate după furnizor şi după data la care a fost

confirmată aprovizionarea prin Nota de Recepţie şi Consultare de Diferenţe se calculează cu

ajutorul unei interogări acţiune, de tip Crosstab (tabel încrucişat) , qValFD (Fig. 1.25), al

cărei cod SQL este:

TRANSFORM Sum([cantaprov]*[pretaprov]) AS ValFurnizorData

SELECT [tblnrcd].[codfurnizor]

23

Page 23: Proiect Access

FROM tblnrcd INNER JOIN tblmataprovizionat ON [tblnrcd].

[nrnrcd]=[tblmataprovizionat].[nrnrcd]

GROUP BY [tblnrcd].[codfurnizor]

PIVOT [tblnrcd].[datanrcd];

Fig. 1.25. Interogarea de tip Crosstab qValFD

Corespunzător criteriilor din enunţ, în fereastra de interfaţă definită de formularul

fValoare (Fig.3.26) se inserează:

4 butoane de opţiune care permit selectarea criteriului de grupare (DATA,

FURNIZOR, GESTIUNE, FURNIZOR/DATA) cărora li s-au asociat următoarele

macrocomenzi:

macqValoareData, macqValoareFurnizor, macqValoareGestiuni, macqValFD

Fig. 1.26 Formularul fValoare

24

Page 24: Proiect Access

un buton de comandă al cărui eveniment Click permite revenirea la meniul situaţiilor

finale (acestuia i s-a asociat macrocomanda macMaxValoare, Fig. 1.27);

Fig. 1.27 Macrocomanda macMaxValoare

O formă de interogare mai apropiată de „stilul raport” o constituie interogarea

încrucişată. În cazul datelor de evidenţă a aprovizionărilor, am proiectat o astfel de

interogare qrycross (Fig.3.28.), solicitându-se valoarea materialelor recepţionate pentru

fiecare factură, astfel: fiecare cod de factură să constituie un titlu de coloană, având pe

rânduri denumirea materialului şi data facturii, iar la intersecţii – valoarea recepţionată din

materialul respectiv la nivelul fiecărei facturi.

Fig. 1.28. a.Interogarea qrycross

25

Page 25: Proiect Access

Fig. 1.28.b. Interogarea qrycross

Pentru a calcula suma totală cuvenită, suma totală achitată şi restul de plată pentru un

furnizor am creat interogările qrycalcul1 (Fig.3.29) şi qrycalcul2 (Fig.3.30.), iar apoi pe

baza acestora formularul frmDiferente (Fig. 1.31.).

Fig. 1.29. Interogarea qrycalcul1

Fig. 1.30. Interogarea qrycalcul2

26

Page 26: Proiect Access

În cadrul frmDiferente am introdus apoi două controale TextBox pentru care am

precizat în fereastra Proprietăţi ca Sursa control următoarele expresii:

=IIf([Valoare]>[plati],"mai trebuie platit ","furnizor achitat")

=[Valoare]-[plati].

Fig. 1.31. Formularul frmDiferente (Design View)

Pentru obţinerea listei materialelor aprovizionate se defineşte raportul

rptValoareMateriale (Fig. 1.33.) a cărui sursă de date este interogarea qryMateriale (Fig.

1.32).

Codul sursă al interogării qryMateriale:

SELECT tblmaterial.denmaterial, tblmaterial.um, tblmataprovizionat.cantaprov,

tblmataprovizionat.pretaprov, [cantaprov]*[pretaprov] AS ValMat, [ValMat]*0.19 AS tva,

[ValMat]+[tva] AS TotVal

FROM tblmaterial INNER JOIN tblmataprovizionat ON tblmaterial.codmaterial =

tblmataprovizionat.codmaterial

GROUP BY tblmaterial.denmaterial, tblmaterial.um, tblmataprovizionat.cantaprov,

tblmataprovizionat.pretaprov, [cantaprov]*[pretaprov]

ORDER BY tblmaterial.denmaterial;

27

Page 27: Proiect Access

Fig. 1.32. Interogarea qryMateriale

Pentru fiecare material, lista materialelor aprovizionate cuprinde: denumirea

materialului, unitatea de măsură, cantitatea aprovizionată, preţul corespunzător, valoarea

pentru materialul aprovizionat, taxa pe valoarea adăugată precum şi valoarea totală.

Fig. 1.33. Raportul rptValoareMateriale

Pentru a obţine lista cu preţurile maxim, minim şi mediu pentru intrările de materiale

pe coduri am creat interogarea qtotal2 (Fig. 1.34.), ce va extrage datele din

tblmataprovizionat, iar apoi pe baza acesteia a rezultat rptstatistica (Fig. 1.35.).

28

Page 28: Proiect Access

Fig. 1.34. Interogarea qtotal2

Fig. 1.35. Raportul rptstatistica

Lista totalurilor valorice, inclusivTVA, pentru materialele intrate pe fiecare magazie

este furnizată de rptgestiune (Fig. 1.36), a cărui sursă va fi interogarea de tip total qrytotal1

(Fig. 1.37).

Fig. 1.36 Raportul rptgestiune

Fig. 1.37. Interogarea qrytotal1

Codul sursă al

interogării qrytotal1:

SELECT

tblnrcd.codgestiune,

Sum(([cantaprov]*[pretaprov])+([cantaprov]*[pretaprov]*19/100)) AS Valoare

29

Page 29: Proiect Access

FROM tblnrcd INNER JOIN tblmataprovizionat ON tblnrcd.nrnrcd =

tblmataprovizionat.nrnrcd

GROUP BY tblnrcd.codgestiune;

Sursa acestei interogări o reprezintă tabelele tblnrcd şi tblmataprovizionat.

În vederea obţinerii unei liste a intrărilor de materiale exprimate în dolari am creat

interogarea qryValuta (Fig. 1.38.), bazată pe tblmataporvizionat, iar apoi rptValuta (Fig.

1.39.).Codul sursă al interogării qryValuta:

SELECT tblmataprovizionat.codmaterial, tblmataprovizionat.cantaprov,

tblmataprovizionat.pretaprov, [cantaprov]*[pretaprov]/[Tastati cursul] AS Valoare

FROM tblmataprovizionat;

Fig. 1.38 Caseta de dialog pentru qryValuta Fig. 1.39 Raportul rptValuta

Pentru lista ce conţine valoarea datorată furnizorilor pentru materialele aprovizionate

se defineşte raportul rptValoareFurnizori (Fig. 4.41.) care are ca sursă de date

qValoareFurnizor (Fig. 4.40.).

Fig. 1.40 Interogarea qValoareFurnizor

30

Page 30: Proiect Access

Fig. 1.41 Raportul rptValuta

Raportul rptAprovizionareMaterial (Fig. 1.42.) are la bază interogarea

qrysursarpt (Fig. 1.43.). Acesta oferă informaţii privind valoarea materialelor recepţionate

la nivelul fiecărui document de recepţie (N.R.C.D.), conţinând datele de identificarea

materialelor, cantitatea şi preţul de aprovizionare. În finalul raportului se face suma totală a

valorilor recepţionate de societatea comercială

Fig. 1.42 Raportul rptAprovizionareMaterial

I.10. Alcătuirea meniurilor

Interfaţa aplicaţiei se realizează prin intermediul unor formulare- meniuri din care

utilizatorul selectează obiecte ale căror evenimente declanşează execuţia secvenţelor de cod.

Formularele meniu au fost creeate în modul Design. Majoritatea butoanelor de comandă au

fost creeate cu utilitarul de tip interactiv de tip Wizard. Acţiunile asociate butoanelor de

comandă au fost precizate:

- folosind utilitarul Control Wizard, ce se lansează automat dacă

instrumentul corespunzător de pe Toolbox este activ în momentul

desemnării controlului. Rezultatul este o procedură VBA, scrisă automat

de mediul Access.

31

Page 31: Proiect Access

- scriind explicit o procedură adecvată, corespunzător unuia dintre

evenimentele legate de controlul creat în prealabil. Toate procedurile

asociate evenimentelor specifice unui formular şi controalelor aflate pe

acesta sunt reunite într-o secvenţă de cod asociată formularului

(CodeBehindForms).

Pentru ca formularul să aibă un aspect profesional, se utilizează proprietăţile de

formatare astfel: RecordSelector=No, NavigationButtons=No, DividingLines=No,

ScrollBars=Neither, MinMaxButtons=None, iar proprietăţii Caption i se atribuie o valoare

corespunzătoare.

Meniul principal (Fig.3.43.) conţine:

un buton de comandă (PRELUARE DATE) pentru apelarea meniului de încărcare

cu date a tabelelor din baza de date;

un buton de comandă (ACTUALIZARE DATE) pentru apelarea meniului ce

permite actualizarea datelor din tabelele bazei de date;

un buton de comandă (SITUAŢII FINALE) pentru deschiderea unei ferestre de

interfaţă prin intermediul căreia utilizatorul poate obţine situaţiile finale cerute;

Fig.3. 43. Meniul principal

Preluarea datelor

Meniul pentru preluarea datelor (Fig. 1.44.) conţine 5 butone de comandă

(FURNIZORI, PLĂŢI, Nota de Receptie si de Constatare de Diferente, MATERIALE,

MATERIALE APROVIZIONATE) care asigură accesul la formularele ce permit

încărcarea cu date a tabelelor corespunzătoare şi un buton de comandă (căreia i s-a asociat

macrocomanda macPreluareDate ce permite revenirea la meniul principal, maximizarea

acestuia şi închiderea formularului fPreluareDate).

Actualizarea datelor

32

Page 32: Proiect Access

Meniul pentru actualizarea de date (Fig. 1.45.) conţine 3 butoane de comandă

(ADĂUGARE, MODIFICARE, ŞTERGERE) care determină deschiderea formularelor ce

constituie interfaţa pentru operaţiile de adăugare, modificare, şi respectiv ştergere, precum şi

un buton de comandă ce permite revenirea la meniul principal (căreia i s-a asociat

macrocomanda macActualizare ce permite revenirea la meniul principal maximizarea

acestuia şi închiderea formularului fACTUALIZARE).

Fig.3. 44 Formularul fPreluareDate Fig.3. 45 Formularul fACTUALIZARE

Meniul ADĂUGARE (Fig. 1.46.) conţine cinci butoane de comandă FURNIZORI,

PLĂŢI; Nota de Recepţie şi Constatare de Diferenţe, MATERIALE, MATERIALE

APROVIZIONATE) care asigură accesul la formularele pentru adăugarea de noi

înregistrări tabelelor corespunzătoare şi 2 butoane de comandă ce permit revenirea la meniul

de actualizare (MENIU ACTUALIZARE) sau la meniul principal (căreia i s-a asociat

macrocomanda macMaxAdaug ce permite revenirea la meniul principal, maximizarea

acestuia şi închiderea formularului fADAUGARE).

Meniul MODIFICARE (Fig. 1.47.) conţine 3 butoane de comandă care asigură

accesul la formularele pentru modificarea datelor din tabelele bazei de date (FURNIZORI,

PLĂŢI, APROVIZIONARE) şi 2 butoane de comandă care permit revenirea la meniul de

actualizare sau la meniul principal (căreia i s-a asociat macrocomanda macfMODIFICARE

ce permite revenirea la meniul principal, maximizarea acestuia şi închiderea formularului

fMODIFICARE).

33

Page 33: Proiect Access

Fig.3. 46 Formularul fADAUGARE Fig.3. 47 Formularul fMODIFICARE

Meniul STERGERE (Fig. 1.48.) conţine 5 butoane de comandă (FURNIZORI,

PLĂŢI, NRCD, MATERIALE, MATERIALE APROVIZIONATE) care asigură accesul

la formularele pentru ştergerea înregistrărilor din tabelele corespunzătoare şi 2 butoane de

comandă ce permit revenirea la meniul de actualizare sau la meniul principal (căreia i s-a

asociat macrocomanda macMaxSterg, ce permite revenirea la meniul principal,

maximizarea acestuia şi închiderea formularului fSTERGERE). La executarea unui clic pe

unul din cele 5 butoane va apare o casetă de dialog în care suntem avertizaţi că vom şterge

anumite înregistrări.

Meniul SITUAŢII FINALE (Fig. 1.49) permite utilizatorului să obţină informaţii

din consultarea bazei de date.

Fig.3. 48 Formularul fSTERGERE Fig.3. 49 Formularul fSITUATII FINALE

Fereastra de interfaţă a formularului fSITUATIIFINALE conţine:

un buton de comandă Valori receptionate la nivel de factura ce va deschide

interogarea qrycross;

34

Page 34: Proiect Access

un buton de comandă Valoare aprovizionare al cărui eveniment Click va deschide

formularul fValoare ce permite determinarea valorii materialelor aprovizionate;

un buton de comandă Datorii furnizori ce va deschide frmDiferenţe;

un buton de comandă Liste finale al cărui eveniment Click va deschide formularul

fListe;

un buton de comandă ce permite revenirea la meniul principal (căreia i s-a asociat

macrocomanda macSituatiiFinale).

I.11. Utilizarea aplicaţiei

Din punct de vedere al utilizatorului aplicaţia este simplă, ea poate fi folosită de

operatori ce au cunoştinţe minime în domeniul informatic. În formă finală, aplicaţia va putea

fi lansată prin click pe o icoană aflată pe Desktop-ul calculatorului. Utilizatorul va avea

acces numai meniul aplicaţiei. Dintre opţiunile meniului sistem, rămân active numai cele

necesare pentru utilizarea programului: vizualizare şi tipărire.

Astfel, se deschide formularul frmIntrare (Fig.3.50), pe care s-au plasat două

butoane, unul pentru deschiderea formularului fMeniuPrincipal şi unul pentru ieşirea din

aplicaţie.

Fig.3. 50. Formularul frmIntrare

Apoi, în funcţie de opţiunea utilizatorului se pot face introduceri, adăugări,

modificări, ştergeri de date sau se pot vizualiza diverse situaţii finale.

35

Page 35: Proiect Access

36