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 |
|