proiect access
TRANSCRIPT
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
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
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
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
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
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
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
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
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
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
- 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
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
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
Î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
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
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
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
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
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
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
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
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
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
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
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
Î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
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
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
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
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
- 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
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
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
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
36