Crearea unei baze de date
Crearea fisierului bazei de date
1. Se creeaza o baza de date goala si se salveaza sub numele PrimaBaza.mdb (īn folder-ul Clasa114
Crearea unei baze de date cu Databse Wizard
2. Se creeaza o baza de date cu Database Wizard, pornind de la sablonul "Resource Scheduling"
4.1.1. Crearea unui tabel cu Table Wizard
3. Se creeaza un tabel cu Table Wizard, īn baza de date PrimaBaza, pornind de la sablonul "Tasks" (teme, activitati, sarcini etc.).
4.1.2. Crearea unui tabel īn modul Datasheet View
4. Se creeaza un tabel īn Datasheet View (se modifica numele coloanelor si se introduc date īn tabel):
Field1 (NrInmatric |
Field2 (Marca |
Field3 (AnCumparare |
BC10ABC |
Dacia 1310 | |
B10AAA |
Mercedes | |
AAAAAAAA |
Ford Mondeo |
(Tabelul se salveaza īn baza de date PrimaBaza sub numele Auto, fara cheie principala: se face click pe No īn caseta cu mesajul "There is no primary key defined".)
4.1.3. Crearea unui tabel īn modul Design
5. Se creeaza tabelul Salariati si se salveaza īn baza de date PrimaBaza
Structura:
Field Name |
Data Type |
Marca |
Number |
Nume |
Text |
Initiala |
Text |
Prenume |
Text |
DataNasterii |
Date/Time |
Adresa |
Memo |
SporVechime |
Number |
ClasaSalarizare |
Number |
Salariu |
Currency |
FunctieConducere |
Yes/No |
TelefonFix |
Text |
TelefonMobil |
Text |
4.1.6. Proprietatile cāmpurilor
4.1.6.1. Proprietatile din tab-ul General
6. Proprietatea Field Size (tabelul Salariati
Marca |
Integer |
Nume | |
Initiala | |
Prenume | |
SporVechime |
Single |
ClasaSalarizare |
Byte |
TelefonFix | |
TelefonMobil |
7. Proprietatea Format pentru cāmpuri Text
a) pentru tabelul Salariati
Nume |
> |
Initiala |
> |
Prenume |
> |
b) pentru tabelul Auto (din PrimaBaza):
Cāmp |
Format |
Val. introdusa |
Val. afisata |
NrInmatric |
BC10ABC |
BC 10 ABC |
|
B10AAA |
B 10 AAA |
||
AAAAAAAA |
AAA AA AAA |
||
BC10ABC |
BC 10 ABC |
||
B10AAA |
B1 0A AA |
||
AAAAAAAA |
AA AA AAAA |
||
@@ @@ @@ [Red] | |||
Marca |
<** | ||
@ @@@"(Euro 2)" | |||
@ @@@\(Euro 2) |
8. Proprietatea Format pentru cāmpuri numerice
Marca: format particularizat 000 (marca sa afiseze trei cifre, de ex. valoarea 1 sa se afiseze ca 001).
SporVechime: Percent (atentie la introducerea datelor, vor fi īnmultite cu 100!).
Salariu: Euro.
9. Proprietatea Format pentru cāmpuri Date/Time
DataNasterii: se aleg, pe rānd, formatele standard:
General Date;
Long Date;
Medium Date;
Short Date.
Pentru acelasi cāmp, DataNasterii, se creeaza formatul particularizat: d(ddd)-m-yyyy
10. Proprietatea Format pentru cāmpuri Yes/No
FunctieConducere: se aleg, pe rānd, formatele standard: True/False, On/Off.
Pentru a se afisa aceste valori, se modifica proprietatea Display Control (tab-ul Lookup), din Check Box īn Text Box
11. Proprietatea Decimal Places
Marca
SporVechime: 2 sau Auto afiseaza tot 2 zecimale!
Salariu
12. Proprietatea Input Mask
TelefonFix
Nume: >L< ? ? ??????
(prima litera este transformata īn majuscula, iar restul literelor (19) īn minuscule. Se elimina formatul ">
Initiala: >L< (se elimina formatul ">
Prenume : >L< ? ? ?????? (se elimina formatul ">
13. Cu Input Mask Wizard se creeaza o masca de introducere pentru cāmpul DataNasterii
14. Se creeaza un sablon particularizat care sa poata fi folosit cu Input Mask Wizard
a) Se deschide tabelul Salariati īn modul Design
b) Se selecteaza cāmpul DataNasterii
c) Se face click pe butonul corespunzator proprietatii Input Mask (se afiseaza caseta de dialog Input Mask Wizard
d) Se face click pe butonul de comanda Edit List (se afiseaza caseta de dialog Customize Input Mask Wizard
e) Se face click pe butonul (New Record) pentru a adauga o īnregistrare goala.
f) Se completeaza casetele:
Description: cu numele sablonului (exemplu: Data particularizata sau alt text)
Input Mask: cu caracterele sablonului (exemplu: 0000
Placeholder: cu caracterul de īnlocuire (exemplu: _)
Sample Data: cu o data calendaristica
Mask Type: se selecteaza Date-Time
g) Se face click pe Close (se īnchide caseta de dialog Customize Input Mask Wizard si se reafiseaza caseta de dialog Input Mask Wizard
h) Se selecteaza numele sablonului mai sus creat din lista si se face click pe Next (se afiseaza caseta de dialog Input Mask Wizard - pentru pasul urmator).
i) Daca este necesar, se modifica sablonul. Se face click pe Next (se afiseaza caseta de dialog Input Mask Wizard - pentru ultimul pas).
j) Se face click pe Finish
15. Proprietatea Caption
DataNasterii |
Data nasterii |
SporVechime |
Spor vechime |
ClasaSalarizare |
Clasa salarizare |
FunctieConducere |
Functie conducere |
TelefonFix |
Telefon fix |
TelefonMobil |
Telefon mobil |
16. Proprietatea Default Value
Salariu: 300 (daca s-a selectat Euro pentru proprietatea Format
17. Proprietatile Validation Rule si Validation Text
Cāmp |
Validation Rule |
Validation Text |
SporVechime |
<=0,25 (nu 25%) |
Sporul de vechime este maxim 25% |
DataNasterii |
<Date() |
Data nasterii incorecta |
ClasaSalarizare |
Between 15 And 40 |
Clasa de salarizare in afara limitelor |
18. Proprietatile Required si Allow Zero Length
Se creeaza interogarea Query1 pe baza tabelului Salariati
click pe View; īn rezultatul interogarii sunt luate īn calcul numai īnregistrarile cu cāmpul TelefonMobil completat;
se modifica proprietatea Allow Zero Length a cāmpului TelefonMobil pe Yes si se introduce "" īn cāmpurile necompletate;
click pe View; īn rezultatul interogarii sunt luate īn calcul si īnregistrarile cu cāmpul TelefonMobil completat.
19. Proprietatea Indexed
Īn tabelul Salariati, cāmpul Nume este indexat automat (Yes(Duplicates OK)) pentru ca īncepe cu Num
se selecteaza cāmpul Marca, apoi se face click pe instrumentul Primary Key; proprietatea Indexed a cāmpului Marca este setata automat pe Yes(No Duplicates)
Se indexeaza cāmpul SporVechime Indexed Yes(Duplicates OK)
20. Proprietatea New Values
Īn tabelul Salariati se mai adauga cāmpul OrdineAngajare Data Type: AutoNumber
Proprietatea New Values Increment (implicit), se modifica īn Random si se introduce īnca o īnregistrare. Proprietatea New Values nu mai poate fi setata din nou pe Increment.
Obs. Īntr-un tabel poate fi adaugat un singur cāmp cu Data Type AutoNumber
4.1.6.2. Proprietatile din tab-ul Lookup
21. Se creeaza tabelul Functii (īn PrimaBaza), cu doua cāmpuri:
CodFunctie Data Type: AutoNumber
DenFunctie Data Type: Text
Field Size
CodFunctie se declara cheie principala.
Īn tabel se introduc īnregistrarile (numai DenFunctie
Director general
Director adjunct
Sef serviciu
Sef Birou
Inginer
Economist
Īn tabelul Salariati se introduce cāmpul CodFunctie cu:
Data Type: Number
Field Size: Long Integer
Proprietatile din tab-ul Lookup pentru cāmpul CodFunctie
Display Control : Combo Box
Row Source Type : Table/Query
Row Source : Functii
Bound Column : 1
Column Count : 2
Column Heads : se īncearca si cu No si cu Yes
Column Widths : 1cm;3cm (apoi se īncearca si 0cm;3cm)
List Rows : 8
List Width : 4cm (apoi 3cm)
Limit To List : No (apoi Yes)
22. Īn tabelul Salariati se adauga cāmpul Studii Data Type: Text, Field Size
Proprietatile din tab-ul Lookup pentru cāmpul Studii
Display Control : Combo Box
Row Source Type : Value List
Row Source : "F";"M"
Bound Column : 1
Column Count : 1
Column Heads : No
Limit To List : Yes
4.1.7. Crearea cāmpurilor de Lookup
4.1.7.1. Crearea unui cāmp de Lookup din cāmpul unui tabel
23. Se creeaza tabelul Compartimente (īn PrimaBaza), cu cāmpurile:
CodCompartiment Data Type: AutoNumber
DenCompartiment Data Type: Text
Field Size
CodCompartiment se declara cheie principala.
Īn tabel se introduc īnregistrarile (numai DenCompartiment
Personal
Contabilitate
Marketing
Contracte
Īn tabelul Salariati se adauga cāmpul CodCompartiment, iar din lista Data Type se selecteaza Lookup Wizard si se urmeaza pasii indicati de acesta).
4.1.7.2. Crearea unui cāmp de Lookup din valorile introduse de utilizator de la tastatura
24. Īn tabelul Salariati se introduce cāmpul Religie, iar cu Lookup Wizard se introduc valorile: ortodoxa, catolica, greco catolica etc.
4.2. Cheia principala
25. Au fost create la tabelele: Salariati Functii si Compartimente
Se va analiza cheia principala (compusa) a tabelului Conventii. Īn acest tabel, cheia principala compusa este obligatorie pentru a nu se permite ca la aceeasi societate comerciala sa se introduca de mai multe ori acelasi curs (acelasi simbol si aceeasi serie).
4.3. Reguli de validare la nivel de īnregistrari
26. Īn tabelul Salariati se adauga cāmpul DataAngajarii Data Type: Date/Time, Input Mask se seteaza cu Input Mask Wizard
Validation Rule: Year([DataAngajarii])-Year([DataNasterii])>=20
Validation Text: Angajat prea devreme!
4.4. Legarea tabelelor
27. Īn baza de date EvidentaCursantilor
Tabel principal |
Tabel secundar |
Cāmp de legatura |
Cursuri |
Serii |
SimbCurs |
Compartimente |
Experti |
CodSectieCompart |
Functii |
Cursanti |
CodFunc |
Unitati |
Cursanti |
CodUnit |
Unitati |
Conventii |
CodUnit |
Localitati |
Serii |
LocDesf |
Serii |
Cursanti |
CodCurs |
Serii |
Conventii |
CodCurs |
Experti |
Serii |
MarcaPers |
28. Īn baza de date PrimaBaza
Tabel principal |
Tabel secundar |
Cāmp de legatura |
Functii |
Salariati |
CodFunctie |
Compartimente |
Salariati |
CodCompartiment |
4.5. Indecsi pe mai multe cāmpuri (compusi)
29. Īn tabelul Salariati (īn PrimaBaza
Index Name |
Field Name |
Sort Order |
NumePrenume |
Nume |
Ascending |
Initiala |
Ascending |
|
Prenume |
Ascending |
4.6. Modificarea structurii tabelelor
4.6.1. Modificarea tipului de data al cāmpurilor
30. Se modifica tipul de data pentru cāmpuri din tabelul Structura din baza de date EvidentaCursantilor
Text ---------->
C_Text_Number ---> Number Field Size: Integer)
C_Text_Date ---> Date/Time
C_Text_Yes ---> Yes/No
Memo - asemanator cu Text
Number ------->
C_Number_Date ---> Date/Time
C_Number_Yes ---> Yes/No
AutoNumber ------>
C_AutoNumber_Date ---> Date/Time
Yes/No ----------->
C_Yes_Text ---> Text
C_Yes_Date ---> Date/Time
C_Yes_Currency ---> Currency
4.6.2. Modificarea lungimii cāmpurilor
Se modifica lungimea cāmpurilor īn tabelul Lungime din baza de date EvidentaCursantilor
Text (micsorare):
C_Text Field Size: de la 20 la 10 ("Some data may be lost")
Īnainte de reducere |
Dupa reducere |
Microsoft Access |
Microsoft |
Microsoft Excel |
Microsoft |
C_LongInteger_Integer Field Size: Integer ("Microsoft Access encountered error while converting the data")
Īnainte de modificare |
Dupa modificare |
C_Integer_Byte Field Size: Byte ("Microsoft Access encountered error while converting the data")
Īnainte de modificare |
Dupa modificare |
C_Single_Integer Field Size: Integer ("Some data may be lost" si "Microsoft Access encountered error while converting the data")
Īnainte de modificare |
Dupa modificare |
C_Double_Integer Field Size: Long Integer ("Some data may be lost" si "Microsoft Access encountered error while converting the data")
Īnainte de modificare |
Dupa modificare |
4.7.3. stergerea īnregistrarilor
32. Se introduc īnregistrari suficiente īn tabelul Salariati din PrimaBaza
a) Se sterge o īnregistrare din tabelul Salariati
b) Se īncearca stergerea unei īnregistrari din tabelul Functii (daca sunt īnregistrari asociate īn tabelul Salariati, se afiseaza mesajul "The record cannot be deleted or changed because table 'Salariati' includes related records."
c) Īn fereastra Relationships Tools Relationships) se face right-click pe linia de legatura dintre tabelele Functii si Salariati si se selecteaza Edit Relationship (se afiseaza caseta de dialog Edit Relationships
se selecteaza caseta de control "Cascade Delete Related Records.";
se sterge o īnregistrare.
5.3. Interogari de selectie
5.3.1. Crearea unei interogari cu Simple Query Wizard
33. Se creeaza interogarea Unitati Query
34. Exemple de interogari cu criterii de selectie:
Tabel |
Cāmpuri īn rezultatul interogarii |
Cāmp si criteriu |
Cāmp si criteriu |
Nume interogare |
Cursanti |
Nume, Prenume, LocNastere |
LocNastere "Bucuresti" |
Q_Buc |
|
Cursanti |
Nume, Prenume, LocNastere |
LocNastere "Bucuresti" Or "Craiova" |
Q_BucCv |
|
Cursanti |
Nume, Prenume, DataNasterii |
DataNasterii |
Q_DataN |
|
Cursanti |
Nume, Prenume, DataNasterii |
DataNasterii Between #01.01.1950# And #31.12.1960# |
Q_DateN |
|
Cursanti |
Nume, Prenume, LocNastere |
LocNastere Not "Bucuresti" |
Q_NotBuc |
|
Cursanti |
CodCurs, Nume, Prenume |
CodCurs Like "It41*" |
Q_It41 |
|
Cursanti |
CodCurs, Nume, Prenume, NotaAbs |
NotaAbs |
Q_Nota10 |
|
Cursanti |
CodCurs, Nume, Prenume, NotaAbs |
NotaAbs Is Null |
Q_FaraNota |
|
Cursanti |
CodCurs, Nume, Prenume, NotaAbs |
NotaAbs Not Is Null |
Q_Absolventi |
|
Cursanti |
Nume, Prenume, Sex, Studii |
Sex "F" |
Studii "S" |
Q_FemSup |
Cursanti |
CodCurs, CodUnit, Nume, Prenume |
CodCurs Like "It36*" |
CodUnit Like "C3*" |
Q_EL_It36 |
Cursanti |
CodCurs, CodUnit, Nume, Prenume |
CodCurs Like "It36*" Or Like "It36*" |
CodUnit Like "C1*" Like "C2*" |
Q_TeHi_It36 |
Codurile unitatilor
Societati comerciale |
Coduri pentru soc. com si sucursale |
Termoelectrica |
C100.C199 (Termoelectrica=C100) |
Hidroelectrica |
C200.C299 (Hidoelectrica=C200) |
Electrica |
C300.C399 (Electrica=C300) |
STD |
C401.C499 |
Unitati din exterior |
E100.E199 |
5.3.9. Cāmpuri calculate
5.3.9.1. Calcule asupra unui cāmp dintr-o interogare
35. Se creeaza interogarea Q_NotaMedie
36. Se creeaza interogarea Q_NrCursanti
5.3.9.2. Crearea unui cāmp care sa efectueze un calcul particularizat
37. Se creeaza interogarea Q_CimpCriterii
Īn interogare se adauga cāmpurile Nume si Prenume si cāmpurile calculate:
Expr1:Year([DataNasterii])
Expr2:DatePart("q",[DataNasterii])
Expr3:DatePart("d",[DataNasterii])
Se introduc, pe rānd, criteriile de mai jos si se afiseaza, de fiecare data, rezultatul interogarii.
Nr. criteriu |
Expr1 |
Expr2 |
Expr3 |
Between 1955 And 1965 | |||
<1960 | |||
38. Se creeaza interogarea Q_TaxaTVA
5.4. Interogari de totalizare
5.4.1. Crearea unei interogari de totalizare
39. Se creeaza interogarea Q_CursantiUnitati (numarul de cursanti pe unitati).
40. Se creeaza interogarea Q_CursantiCursuri (numarul de cursanti pe cursuri si serii).
41. Se creeaza interogarea Q_CursantiDomiciliu (numarul de cursanti īnscrisi
42. Se creeaza interogarea Q_TaxaCurs
5.5. Interogari cu parametri
5.5.1. Introducerea parametrilor
43. Se creeaza interogarea Q_CursuriTrim
5.6.3. Calcule numerice cu valori Null
44. Se creeaza interogarea Q_NullSirZero
se face click pe instrumentul View
se seteaza proprietatea Allow Zero Length a cāmpului Telefon pe Yes
īn cāteva īnregistrari se introduce sirul de lungime zero ("") īn cāmpul Telefon
se face click pe instrumentul View
Q_TextNull
Q_UnitatiCursuri
Append Query
Se creeaza tabelul CursuriAminate (identic ca structura cu Serii Edit Copy, Edit Paste, se selecteaza butonul de optiune Structure Only) care va contine cursurile neprogramate.
Q_ActCursuri
Īn structura tabelului Cursuri se introduce cāmpul TaxaZiTVA Number Double Format 0). Interogarea Q_ActCursuri va actualiza cāmpul TaxaZiTVA cu TaxaZi*1.19
Q_ActCursuriAminate
Īn structura tabelului CursuriAminate se introduce cāmpul DenCurs Text, lungime 100 caractere). Interogarea Q_ActCursuri va actualiza cāmpul DenCurs cu valorile din cāmpul DenCurs din tabelul Cursuri
Q_StergCursanti
Se face o copie a tabelului Cursanti Cursanti_Copie) iar interogarea va sterge cursantii fara nota.
Q_CursantiTrim1
Se creeaza un tabel (CursantiTrim1) cu cursantii care au participat la cursuri pe trim. 1.
Proprietati pentru Command Button
Proprietatea Default (tab-ul Other) setata pe Yes desemneaza butonul de comanda respectiv drept buton implicit (butonul se executa automat cānd se apasa tasta Enter, indiferent pe ce control se afla focus-ul.
Unui control Command Button care īnchide forma nu i se seteaza proprietatea Default pe Yes īntrucāt daca forma are controale Text Box īn care se introduc date, cānd focus-ul se afla pe un control Text Box si se apasa tasta Enter pentru a introduce date īn alt control Text Box, se va īnchide forma !.
Īntr-o forma, poate fi declarat doar un singur buton de comanda implicit.
Proprietatea Cancel (tab-ul Other) setata pe Yes declara butonul de comanda respectiv drept buton Cancel. Butonul va fi executat cānd se apasa tasta Esc
Īntr-o forma, poate fi declarat doar un singur buton de comanda Cancel
Crearea unei forme multifunctionale
Setari initiale īn forma:
Se modifica proprietatea Name (tab-ul Other) a butoanelor de comanda:
Buton |
Proprietatea Name |
Adauga |
B_Ada |
Modifica |
B_Mod |
Sterge |
B_Ste |
Salveaza |
B_Sal |
Renunta |
B_Ren |
Prima |
B_Pri |
Urmatoarea |
B_Urm |
Precedenta |
B_Ant |
Ultima |
B_Ult |
Terminare |
B_Ter |
Butoanele de comanda, cu exceptia butonului Modifica, se adauga cu Control Wizards
Butoanelor de comanda Salveaza si Renunta li se seteaza proprietatea Enabled (tab-ul Data) pe No
Cāmpurilor SimbCurs DenCurs si TaxaZi li se seteaza proprietatea Loked pe Yes
Se seteaza proprietatile formei:
Proprietate |
Valoare |
Īn tab-ul Format Scroll Bars |
Neither |
Record Selectors |
No |
Navigation Buttons |
No |
Dividing Lines |
No |
Auto Center |
Yes |
Control Box |
No |
Min Max Buttons |
None |
Close Button |
No |
Īn tab-ul Other Cycle |
Current Record |
Private Sub B_Pri_Click()
On Error GoTo Err_B_Pri_Click
DoCmd.GoToRecord , , acFirst
Exit_B_Pri_Click:
Exit Sub
Err_B_Pri_Click:
MsgBox Err.Description
Resume Exit_B_Pri_Click
End Sub
Private Sub B_Urm_Click()
On Error GoTo Err_B_Urm_Click
DoCmd.GoToRecord , , acNext
If IsNull(Me!SimbCurs) Then
MsgBox "Ultima inregistrare din tabel !", vbExclamation
DoCmd.GoToRecord , , acPrevious
End If
Exit_B_Urm_Click:
Exit Sub
Err_B_Urm_Click:
MsgBox "Tabelul nu are nici o inregistrare !", vbExclamation
Resume Exit_B_Urm_Click
End Sub
Private Sub B_Ant_Click()
On Error GoTo Err_B_Ant_Click
DoCmd.GoToRecord , , acPrevious
Exit_B_Ant_Click:
Exit Sub
Err_B_Ant_Click:
MsgBox "Prima inregistrare din tabel !", vbExclamation
Resume Exit_B_Ant_Click
End Sub
Private Sub B_Ult_Click()
On Error GoTo Err_B_Ult_Click
DoCmd.GoToRecord , , acLast
Exit_B_Ult_Click:
Exit Sub
Err_B_Ult_Click:
MsgBox Err.Description
Resume Exit_B_Ult_Click
End Sub
Private Sub B_Ada_Click()
On Error GoTo Err_B_Ada_Click
DoCmd.GoToRecord , , acNewRec
Me!SimbCurs.Locked = False
Me!DenCurs.Locked = False
Me!TaxaZi.Locked = False
Me!SimbCurs.SetFocus
Me!B_Ada.Enabled = False
Me!B_Mod.Enabled = False
Me!B_Ste.Enabled = False
Me!B_Sal.Enabled = True
Me!B_Ren.Enabled = True
Me!B_Pri.Enabled = False
Me!B_Urm.Enabled = False
Me!B_Ant.Enabled = False
Me!B_Ult.Enabled = False
Me!B_Ter.Enabled = False
Exit_B_Ada_Click:
Exit Sub
Err_B_Ada_Click:
MsgBox Err.Description
Resume Exit_B_Ada_Click
End Sub
Private Sub B_Mod_Click()
Me!SimbCurs.Locked = False
Me!DenCurs.Locked = False
Me!TaxaZi.Locked = False
Me!SimbCurs.SetFocus
Me!B_Ada.Enabled = False
Me!B_Mod.Enabled = False
Me!B_Ste.Enabled = False
Me!B_Sal.Enabled = True
Me!B_Ren.Enabled = True
Me!B_Pri.Enabled = False
Me!B_Urm.Enabled = False
Me!B_Ant.Enabled = False
Me!B_Ult.Enabled = False
Me!B_Ter.Enabled = False
End Sub
Private Sub B_Ste_Click()
Dim RspSte
On Error GoTo Err_B_Ste_Click
RspSte = MsgBox("Sterge inregistrarea curenta ? ", vbYesNo + vbQuestion)
If RspSte = vbYes Then
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
DoCmd.GoToRecord , , acPrevious
End If
Exit_B_Ste_Click:
Exit Sub
Err_B_Ste_Click:
MsgBox "Inregistrarea curenta are inregistrari corespondente in alta tabel !", vbCritical
Resume Exit_B_Ste_Click
End Sub
Private Sub B_Sal_Click()
On Error GoTo Err_B_Sal_Click
If IsNull(Me!SimbCurs) Then
MsgBox "Inregistrare incompleta, nu poate fi salvata !", vbCritical
Me!SimbCurs.SetFocus
Else
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Me!SimbCurs.Locked = True
Me!DenCurs.Locked = True
Me!TaxaZi.Locked = True
Me!B_Ada.Enabled = True
Me!B_Ada.SetFocus
Me!B_Mod.Enabled = True
Me!B_Ste.Enabled = True
Me!B_Sal.Enabled = False
Me!B_Ren.Enabled = False
Me!B_Pri.Enabled = True
Me!B_Urm.Enabled = True
Me!B_Ant.Enabled = True
Me!B_Ult.Enabled = True
Me!B_Ter.Enabled = True
End If
Exit_B_Sal_Click:
Exit Sub
Err_B_Sal_Click:
MsgBox "Simbol curs nu accepta valori duplicat/nu poate fi modificat !", vbCritical
Resume Exit_B_Sal_Click
End Sub
Private Sub B_Ren_Click()
On Error GoTo Err_B_Ren_Click
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
Exit_B_Ren_Click:
If IsNull(Me!SimbCurs) Then
DoCmd.GoToRecord , , acFirst
End If
Me!B_Ada.Enabled = True
Me!B_Ada.SetFocus
Me!B_Mod.Enabled = True
Me!B_Ste.Enabled = True
Me!B_Sal.Enabled = False
Me!B_Ren.Enabled = False
Me!B_Pri.Enabled = True
Me!B_Urm.Enabled = True
Me!B_Ant.Enabled = True
Me!B_Ult.Enabled = True
Me!B_Ter.Enabled = True
Me!SimbCurs.Locked = True
Me!DenCurs.Locked = True
Me!TaxaZi.Locked = True
Exit Sub
Err_B_Ren_Click:
MsgBox "Nu s-a efectuat nici o modificare !", vbExclamation
Resume Exit_B_Ren_Click
End Sub
Private Sub B_Ter_Click()
On Error GoTo Err_B_Ter_Click
DoCmd.Close
Exit_B_Ter_Click:
Exit Sub
Err_B_Ter_Click:
MsgBox Err.Description
Resume Exit_B_Ter_Click
End Sub
Private Sub Form_Open(Cancel As Integer)
DoCmd.SetWarnings False
End Sub
Private Sub Form_Close()
DoCmd.SetWarnings True
End Sub
Private Sub TaxaZi_Exit(Cancel As Integer)
If Me!B_Sal.Enabled = True Then
Me!B_Sal.SetFocus
End If
End Sub
Raportul Cursuri
Subraport īncorporat īn raportul principal cu Subreport Wizard
Se creeaza subraportul srpCursanti pe baza tabelului Cursanti
Se creeaza raportul principal rptFunctii pe baza tabelului Functii (subraportul srpCursanti se īncorporeaza īn raportul principal srpFunctii
Exemplu tiparit:
Subraport īncorporat īn raportul principal fara Subreport Wizard
Se creeaza interogarea Q_CursantiInscrisi (pentru subraport)
Se creeaza interogarea Q_CursantiPrezenti (pentru raportul principal)
Se creeaza subraportul srpCursantiInscrisi
Se creeaza raportul principal rptCursantiPrezenti
Controlul Text Box din sectiunea CodCurs Header are proprietatea Control Source
=[SimbCurs] & " seria " & [NrSerie]
Subraportul se insereaza fara Subreport Wizard (se va insera un subraport nelegat).
Se afiseaza foaia de proprietati a raportului si se seteaza proprietatea Source Object cu Report.srpCursantiInscrisi
Se afiseaza caseta de dialog Subreport Field Linker si se seteaza Master Fields CodCurs Child Fields CodCurs (cele doua cāmpuri sunt automat selectate!).
Se redimensioneaza subraportul: Width: 5" si Height
Pentru controlul Text Box care afiseaza numarul curent, se seteaza proprietatea Running Sum (tab-ul Data) pe Over Group
Exemplu de raport principal cu subraport:
Eticheta cu Label Wizard
Se creeaza interogarea Q_Etichete
Crearea etichetei cu Label Wizard
Daca se afiseaza mesajul:
Se deschide raportul īn fereastra Report Design apoi se alege File Page Setup
Īn caseta de dialog Page Setup se selecteaza tab-ul Margins si se micsoreaza valoarea pentru Left (de exemplu, 0.5").
Eticheta fara Label Wizard
Se creeaza o eticheta care sa īnstiinteze unitatile cu perioada de desfasurare a seriei a doua a cursului It36.
Se creeaza interogarea Q_EticheteRD
Pentru a dimensiona mai usor eticheta, se va trece la sistemul de unitati de masura Metric (īn Regional Settings, tab-ul Numbers, se selecteaza Metric din Measurement system
Se creeaza un raport gol si se elimina sectiunile Page Header si Page Footer
Dimensiunile unui format A4 sunt 21cm x 29.7cm.
Se creeaza 2 etichete pe latime
Latimea unei etichete: 8 cm
Īnaltimea unei etichete: 5 cm
Distanta īntre doua etichete: 2 cm
Īn caseta de dialog Page Setup se fac urmatoarele setari:
Tab-ul Margins:
Top: 20 mm
Bottom: 15 mm
Left: 15 mm
Right: 15 mm
Tab-ul Page
Size: A4
Tab-ul Columns
Number of Columns
Column Spacing: 2cm (este bine chiar 1.8cm!)
Width: 8cm
Height: 5cm
Se redimensioneaza sectiunea Detail a raportului: latime 8 cm si īnaltime 5 cm.
Se creeaza continutul etichetei:
Tiparire/previzualizare raport dintr-o forma
Raportul va contine cursurile care īncep īntr-o anumita luna (luna va fi selectata dintr-un control Combo Box plasat īntr-o forma).
Numele celor trei obiecte:
Forma: frmSelectareLuni
Interogarea: Q_IncepereCursuri
Raport: SituatieIncepereCursuri
Īn forma se adauga un control Combo Box (cu Control Wizards
Se modifica proprietatea Name (tab-ul Other) a controlului Combo Box īn Luna
Se creeaza interogarea Q_IncepereCursuri
Se creeaza raportul SituatieIncepereCursuri pe baza interogarii Q_IncepereCursuri
Īn forma frmSelectareCursuri se adauga trei butoane de comanda (cu Control Wizards Previzualizare Tiparire si Terminare
Crearea unui panou de comanda
Panoul principal:
Actualizare tabele Situatii de iesire Inchidere aplicatie |
Panourile secundare:
Panoul Actualizare tabele
Tabelul Cursuri Tabelul Conventii Tabelul Experti Reintoarcere in panoul principal |
Panoul Rapoarte
Taxe pe cursuri Situatia cursantilor pe functii de clasificare Situatia cursantilor inscrisi - prezenti Situatia cursurilor care incep in luna. Reintoarcere in panoul principal |
Īn caseta de dialog Create New se introduc numele panourilor secundare: Actualizare tabele si Rapoarte (īn caseta de text Switchboard Page Name
Īn caseta de dialog Edit Switchboard Item se introduc functiunile panoului principal:
Functiune |
Command |
Switchboard |
Actualizare tabele |
Go to Switchboard |
Actualizare tabele |
Situatii de iesire |
Go to Switchboard |
Rapoarte |
Inchidere aplicatie |
Exit Application |
Īn caseta de dialog Edit Switchboard Item se introduc functiunile panoului Actualizare tabele
Functiune |
Command |
Form/ Switchboard |
Tabelul Cursuri |
Open Form in Edit Mode |
frmActVizCursuri |
Tabelul Conventii |
Open Form in Edit Mode |
Conventii |
Tabelul Experti |
Open Form in Edit Mode |
Experti |
Reintoarecre in panoul principal |
Go to Switchboard |
Main Switchboard |
Īn caseta de dialog Edit Switchboard Item se introduc functiunile panoului Rapoarte
Functiune |
Command |
Report/Form/ Switchboard |
Taxe pe cursuri |
Open Report |
Cursuri |
Situatia cursantilor pe functii de clasificare |
Open Report |
Conventii |
Situatia cursantilor inscrisi - prezenti |
Open Report |
rptCursantiPrezenti |
Situatia cursurilor care incep in luna. |
Open Form in Edit Mode |
frmSelectareLuna |
Reintoarecre in panoul principal |
Go to Switchboard |
Main Switchboard |
|