Documente Academic
Documente Profesional
Documente Cultură
Cheie primar
Fig. 1-1
1.1.2TABEL PERSOANE
Cheie primar
Fig. 1-2
1.1.3TABEL LUCRARI
Cheie primar
Fig. 1-3
1.1.4TABEL PONTAJE
Cheie primar
Fig. 1-4
Tip relaie
Fig. 1-5
Fig. 1-6
1.3.2TABELUL PERSOANE
n acest tabel datele se pot introduce direct n toate cmpurile. Acest lucru nu este totui recomandat pentru cmpul Departament, care conine codul departamentului unde lucreaz angajatul. Este mai eficient ca acest cmp s se completeze inspectnd valoarea corespunztoare numelui departamentului din tabelul de Departamente. Pentru aceasta se va folosi la cmpul din tabelul de Persoane facilitatea Lookup table: Pentru tabelul Persoane se alege vizualizarea Design View; Se selecteaz cmpul Departament; Se selecteaz tabulatorul Lookup; 3
La Atributul Display Control se alege varianta Combo Box; La atributul Row Source Type se alege varianta Table/Query;
Fig. 1-7 La atributul Row Source se face clic pe butonul , pentru a invoca constructorul de interogri; n aceast fereastr se trte cu mouse-ul cmpul NumeDep n zona de interogare de jos;
Fig. 1-8 Dup nchiderea ferestrei n atributul Row Source se va genera automat interogarea n limbajul SQL: SELECT Departamente.NumeDep FROM Departamente; La atributul Bound column se va nscrie valoarea 0, pentru a afia valoarea cmpului nu codul acestuia. Acum la introducerea de date n modalitatea Data Sheet View, la acest cmp se va selecta departamentul dintr-un combo box, ca n figura 1-9, dar se va stoca de fapt codul acestuia.
Fig. 1-9
1.3.3TABELUL LUCRRI
Se va proceda ca la tabelul anterior, folosind modalitatea Lookup Table pentru cmpul Departament, introducnd date ca n figura 1-10:
Fig. 1-10
1.3.4TABELUL PONTAJE
n acest tabel este mai dificil s se introduc date direct, ntruct exist dou cmpuri (Persoana i Lucrare), care sunt de fapt valori pentru chei primare din tablele Persoane i Lucrari, dup cum se poate observa n figura 1-11.
Fig. 1-11 Pentru c unui operator uman i este mai uor s lucreze cu date text, este necesar utilizarea unui formular care s consulte simultan tabelele necesare. 5
Fig. 1-12 n acest formular sunt trei zone (subformulare), care consult datele din tabelele: Persoane, Lucrri, Pontaj. A 4-a zon (care conine numai elemente de tip label- care nu se pot modifica de utilizator) face o sintez a fiei de pontaj care se definete. Definire subformular pentu tabel Persoane
1.4.1GENERARE INTEROGRI
Se va genera prima dat o interogare care consult tabelul Persoane i Departamente, ntruct formularul de completare n tabelul de pontaje va avea nevoie de el. Pentru aceasta se va alege din fereastra de control a bazei de date opiunea Create query in Design View, ca n figura 1-13.
Fig. 1-13 Din noua fereastr se vor alege tabelele ca n figura 1-14 i se va folosi butonul Add.
Fig. 1-14 n continuare se vor trage cu mouse-ul n zona de interogare toate cmpurile din tabelul Persoane, precum i cmpul NumeDep din tabelul de Departemente, ca n figura 1-15.
Fig. 1-15
1.4.2GENERARE SUBFORMULARE
1.4.2.1 Subformular Persoane Pentru subformularul care consult tabelul de persoane se va utiliza facilitatea de Wizard, selectnd ca n figura 1-16, din fereastra bazei de date:
Fig. 1-16 7
Dup selectarea opiunii Create form by using wizard, se va alege din figura 1-17 din lista de tabele i interogri, tabelul Persoane i apoi se va aciona butonul >> pentru a selecta toate cmpurile n vederea utilizrii n formular, dup care se va aciona butonul Next.
Fig.1-17 Din noul dialog se va alege opiunea Justified, ca n figura 1-18 i se va selecta butonul Next:
Fig. 1-18 Din dialogul din figura 1-19 se va alge opiunea Standard i apoi butonul Next.
Fig. 1-19 n cutia de dialog din figura 1-20, se va nscrie numele formei ca SFPers i se va finaliza dialogul cu Finish. 8
Fig. 1-20 1.4.2.2 Subformular Lucrri Din fereastra de control a bazei de date lansai Create form by using wizard, i apoi n dialogul din figura 1-21 selectai tabelul Lucrari. Folosii butonul >> pentru a selecta toate cmpurile din tabel n vederea utilizrii n fomular i apoi utilizai butonul Next.
Fig. 1-21 Din noul dialog din figura 1-22 alegei opiunea Datasheet i folosii apoi butonul Next.
Fig. 1-22 Din dialogul din figura 1-23 alegei opiunea Standard i 9
Fig. 1-23 n dialogul din figura 1-24 precizai numele formei ca SFLucrari1 i nchidei cu Finish.
Fig. 1-24 1.4.2.3 Subformular Pontaje Pentru subformularul care consult tabelul de Pontaje procedai ca la subformularul Persoane, dar folosind tabelul Pontaj i n final atribuii-i numele SFPontaj.
Fig. 1-25
10
Se va alege n continuare din figura 1-26 interogare PersDep i se vor selecta pentru form numai cmpurile care sunt n dreapta figurii.
Fig. 1-27
Fig. 1-28
11
Fig. 1-29
Fig. 1-30 Dup afiarea formei se va comuta n modul Design View i se va redimensiona zona Detail ca n figura 1-31, pentru a putea insera toate elementele de control
12
Fig. 1-31 Se va insera subformularul SFLucrari1, folosind instrumentul adecvat din toolbox. Se va dimensiona gabaritul obiectului ca n figura 1-34. n continuare se vor preciza parametrii ca n figurile 1-32, 1-33
Fig. 1-32
13
Fig. 1-33
Fig. 1-34 Se va proceda la fel insernd i subformularul SFPontaj, cu gabaritul din figura 1-34. Pentru zona de sintez a fiei de pontaj se vor utiliza elemente de tip Label, dintre care cele explicative au proprietatea Caption setatpe valorile din figura 1-35:
14
Fig. 1-35 Pentru celelalte elemente se va completa n tabelul de proprieti valoare Name cu litera C urmat de numele scris n eticheta din dreapta. Astfel elementul din dreapta etichetei nume se va chema CNume, cel de la Prenume CPrenume .a.m.d. Cel din dreptul etichetei Fi de pontaj se va numi CData. Se vor completa cele dou linii de separaie folosind instrumental din toolbox. Se vor aduga dou butoane, ca n figura 1-36, la care proprietile Name i Caption se vor completa cu valorile Adauga i Iesire, ca n figura 1-37.
Fig. 1-36
15
Fig. 1-37
Fig. 1-38 Se va insera secvena de mai jos, unde sunt apelate dou funcii care vor actualize cmpurile din cele dou subforme: Private Sub Form_Current() ActualizeazaSFPontaj ActualizeazaSFLucrari 16
End Sub Pentru a scrie cele dou funcii se va selecta n tabulatorul de Project opiunea Modules i se va face dublu clic pentru a insera codul de mai jos n aceast fereastr. Se observ declaraiile globale necesare ulterior la deschiderea rapoartelor din formulare. Aceste variabile se vor iniializa din cmpurile formelor i vor fi valide i dup nchiderea lor. Valorile respective sunt necesare pentru realizarea unor selecii n interogrile pe care se bazeaz rapoartele.
Global Global Global Global Global MatricolaGlobal As Integer DepartamentGlobal As Integer DepGlobal As Integer DataMin As Date DataMax As Date
Public Sub ActualizeazaSFLucrari() 'Copiaza nume persoana If Not IsNull(Forms!PersPontaj.Nume) Then Forms!PersPontaj!CNume.Caption = Forms!PersPontaj.Nume End If 'Copiaza prenume persoana If Not IsNull(Forms!PersPontaj.Prenume) Then Forms!PersPontaj!CPrenume.Caption = Forms!PersPontaj.Prenume End If 'Copiaza nume lucrare If Not IsNull(Forms!PersPontaj![SFLucrari1].Form.Nume) Then Forms!PersPontaj!CLucrare.Caption = Forms!PersPontaj![SFLucrari1].Form.Nume End If End Sub Public Sub ActualizeazaSFPontaj() 'Copiaza numar ore If IsNull(Forms!PersPontaj![SFPontaj].Form.Ore) Then Forms!PersPontaj!COre.Caption = 0 Else Forms!PersPontaj!COre.Caption = Forms!PersPontaj![SFPontaj].Form.Ore End If 'Copiaza tarif If IsNull(Forms!PersPontaj![SFPontaj].Form.TarifOra) Then Forms!PersPontaj!CTarif.Caption = 0 Else Forms!PersPontaj!CTarif.Caption = Forms!PersPontaj![SFPontaj].Form.TarifOra End If Forms!PersPontaj!CData.Caption = Forms!PersPontaj![SFPontaj].Form.Data Forms!PersPontaj!CManopera.Caption = Forms!PersPontaj![SFPontaj].Form.Ore * Forms!PersPontaj![SFPontaj].Form.TarifOra End Sub Public Function RetMatricola() As Long RetMatricola = MatricolaGlobal End Function Public Function RetDMin() As Date RetDMin = DataMin End Function Public Function RetDMax() As Date RetDMax = DataMax End Function Public Function RetDep() As Long RetDep = DepGlobal End Function
17
Dup inscrierea codului de mai sus, se revine la vederea Design View pentru forma PersPontaj i se ataeaz codul de mai jos la butonul de Adauga, pe evenimentul OnClick. El este responsabil cu adugarea unei noi nregistrri n tabelul de Pontaje, folosin cmpurile din dialogul PersPontaj.
Private Sub Adauga_Click() Dim Rec As New ADODB.Recordset Rec.Open "Pontaj", CurrentProject.Connection, adOpenKeyset, adLockOptimistic Rec.AddNew Rec("Data") = Forms!PersPontaj![SFPontaj].Form.Data Rec("Persoana") = Forms!PersPontaj!Matricola Rec("Lucrare") = Forms!PersPontaj![SFLucrari1].Form.CodAct Rec("Ore") = Forms!PersPontaj![SFPontaj].Form.Ore Rec("TarifOra") = Forms!PersPontaj![SFPontaj].Form.TarifOra Rec.Update Rec.MoveLast Rec.Close End Sub
La butonul Iesire se va ataa un macro pe evenimentul OnClick folosind opiunea Macro Builder. Se va completa cu valorile din figura 1-39. Acest macro va nchide dialogul PersPontaj.
18
Fig. 1-39
1.5.1REALIZARE INTEROGRI
Fiecare raport se va baza pe o interogare dupcum urmeaz: Raport PontajPersoana pe query FisePontaj, unde interogare este cea din figura 1-40:
Fig. 1-40 Raport PontajDepartament pe query PontajDepartament, unde interogare este cea din figura 1-41
19
Fig. 1-41 Raport PontajTotal pe query PontajTotal, unde interogare este cea din figura 1-42
Fig. 1-42
1.5.2REALIZARE RAPOARTE
Raportul Pontaj Persoana va avea structura din figura 1-43, unde al doilea label MATRICOLA din zona de header al raportului, se va modifica automat la deschiderea raportului i va avea proprietate acption cu valoarea matricolei pentru persoana din raport:
20
Fig. 1-44 21
Raportul PontajTotal va avea structura din figura 1-45, cu parte de cod de mai jos:
Private Sub Report_Close() DoCmd.Close acQuery, "PontajTotal" End Sub
Fig. 1-45
22
Fig. 1-46 Tabulatoarele Persoana i Departament au nevoie de cte un subformular dup cum urmeaz: Subforma SFPersRap, din figura 1-47, este folosit n tabulatorul Persoana din forma principal. Ea se bazeaz pe tabelul de Persoane i se poate genera cu facilitatea Wizard.
Fig. 1-47 Subforma SFDepRap, din figura 1-48, este folosit n tabulatorul Departament din forma principal. Ea se bazeaz direct pe tabelul Departemente i se poate genera cu facilitatea Wizard.
Fig. 1-48 23
Forma principal, denumit RapPontaj, are aspectele din figurile 1-49,1-50,1-51 , pentru fiecare tabulator:
Fig. 1-49
Fig. 1-50
24
Fig. 1-51 Pentru butonul OK se va ataa la evnimentul OnClick urmtorul cod, care asigur valorile corecte pentru variabilele globale, precum i deschiderea raportului corect:
Private Sub OK_Click() DataMin = Me!DMin DataMax = Me!DMax Select Case Me!Selector Case 0 MatricolaGlobal = Forms!RapPontaj![SFPersRap].Form.Matricola DoCmd.Close DoCmd.OpenQuery "FisePontaj", , acReadOnly DoCmd.OpenReport "PontajPersoana", acViewPreview Case 1 DepGlobal = Forms!RapPontaj![SFDepRap].Form.CodDep DoCmd.Close DoCmd.OpenQuery "PontajDepartament", , acReadOnly DoCmd.OpenReport "PontajDepartament", acViewPreview Case 2 DoCmd.Close DoCmd.OpenQuery "PontajTotal", , acReadOnly DoCmd.OpenReport "PontajTotal", acViewPreview Case Else MsgBox "nimic" End Select End Sub
25
Fig. 1-52
Fig. 1-53 26